Jump to content

AnnieRuru

Members
  • Posts

    2044
  • Joined

  • Last visited

  • Days Won

    51

Posts posted by AnnieRuru

  1. use gettimetick(2)

    prontera,150,185,0	script	test override	1_F_MARIA,{
    	.@timelimit = 3 + gettimetick(2); // 3 seconds
    	while (.@timelimit > gettimetick(2) ) {
    		mes "You are talking to this npc";
    		next;
    		select("-Yes");
    	}
    	mes "times up";
    	close;
    }

    if you are doing this like a quiz, where player has to reply within the time limit, then have to use if ... goto on every after select

     

    btw, seems like I have lose a fan ... sad ....

  2. rathena is different
    https://github.com/rathena/rathena/blob/master/src/map/script_constants.hpp#L3516

    	/* emoticons */
    	export_constant(ET_SURPRISE);
    	export_constant(ET_QUESTION);
    	export_constant(ET_DELIGHT);
    	export_constant(ET_THROB);
    	export_constant(ET_SWEAT);
    	export_constant(ET_AHA);
    	export_constant(ET_FRET);
    	export_constant(ET_ANGER);
    	export_constant(ET_MONEY);
    	export_constant(ET_THINK);
    	export_constant(ET_SCISSOR);
    	export_constant(ET_ROCK);
    	export_constant(ET_WRAP);
    	export_constant(ET_FLAG);
    	export_constant(ET_BIGTHROB);
    	export_constant(ET_THANKS);
    	export_constant(ET_KEK);
    	export_constant(ET_SORRY);
    	export_constant(ET_SMILE);
    	export_constant(ET_PROFUSELY_SWEAT);
    	export_constant(ET_SCRATCH);
    	export_constant(ET_BEST);
    	export_constant(ET_STARE_ABOUT);
    	export_constant(ET_HUK);
    	export_constant(ET_O);
    	export_constant(ET_X);
    	export_constant(ET_HELP);
    	export_constant(ET_GO);
    	export_constant(ET_CRY);
    	export_constant(ET_KIK);
    	export_constant(ET_CHUP);
    	export_constant(ET_CHUPCHUP);
    	export_constant(ET_HNG);
    	export_constant(ET_OK);
    	export_constant(ET_CHAT_PROHIBIT);
    	export_constant(ET_INDONESIA_FLAG);
    	export_constant(ET_STARE);
    	export_constant(ET_HUNGRY);
    	export_constant(ET_COOL);
    	export_constant(ET_MERONG);
    	export_constant(ET_SHY);
    	export_constant(ET_GOODBOY);
    	export_constant(ET_SPTIME);
    	export_constant(ET_SEXY);
    	export_constant(ET_COMEON);
    	export_constant(ET_SLEEPY);
    	export_constant(ET_CONGRATULATION);
    	export_constant(ET_HPTIME);
    	export_constant(ET_PH_FLAG);
    	export_constant(ET_MY_FLAG);
    	export_constant(ET_SI_FLAG);
    	export_constant(ET_BR_FLAG);
    	export_constant(ET_SPARK);
    	export_constant(ET_CONFUSE);
    	export_constant(ET_OHNO);
    	export_constant(ET_HUM);
    	export_constant(ET_BLABLA);
    	export_constant(ET_OTL);
    	export_constant(ET_DICE1);
    	export_constant(ET_DICE2);
    	export_constant(ET_DICE3);
    	export_constant(ET_DICE4);
    	export_constant(ET_DICE5);
    	export_constant(ET_DICE6);
    	export_constant(ET_INDIA_FLAG);
    	export_constant(ET_LUV);
    	export_constant(ET_FLAG8);
    	export_constant(ET_FLAG9);
    	export_constant(ET_MOBILE);
    	export_constant(ET_MAIL);
    	export_constant(ET_ANTENNA0);
    	export_constant(ET_ANTENNA1);
    	export_constant(ET_ANTENNA2);
    	export_constant(ET_ANTENNA3);
    	export_constant(ET_HUM2);
    	export_constant(ET_ABS);
    	export_constant(ET_OOPS);
    	export_constant(ET_SPIT);
    	export_constant(ET_ENE);
    	export_constant(ET_PANIC);
    	export_constant(ET_WHISP);
    	export_constant(ET_YUT1);
    	export_constant(ET_YUT2);
    	export_constant(ET_YUT3);
    	export_constant(ET_YUT4);
    	export_constant(ET_YUT5);
    	export_constant(ET_YUT6);
    	export_constant(ET_YUT7);

    hercules start with e_ , rathena start with ET_

  3. 6 hours ago, admagnus said:

    thank you very much... i want to know how can i add a job branch restriction, like a restriction just for third clases or just for first clases... the old npc version of emistry went with a restriction like that, but is to old and bug and it requires sql...

    this script is just super old ...
    when this script was freshly made version 1.0, 3rd job wasn't even release yet (year 2009)

    there is a get-around, by using level range + job restriction, since 3rd job is always level > 99

     

    5 hours ago, admagnus said:

    By the way, i was searching for your content and just find this article http://herc.ws/board/topic/7218-sample-questlog-script/ and i want to know if by any chance is there a sample quest log script for athena, and thank you again for being very active in this forums.

    EDIT: Nevermind i just add the restriction i wanted to and find the eathena questlog-script.

    the sample quest log script was made way back during eathena period,
    so rathena should support up 0.3 I guess

    version 1.0 and above is just hercules

    about the daily quest ... although its custom, but *setquest with adjustable time limit is official
    I think rathena will get to it eventually after convert quest_db.txt into YAML format...

    • MVP 1
  4. Method 1 - just unequip the item

    prontera,155,185,5	script	khfskjdfh	1_F_MARIA,{
    	for ( .@i = 1; .@i <= 10; ++.@i )
    		if ( getequiprefinerycnt(.@i) >= 7 )
    			unequip .@i;
    	end;
    }

    Method 2 - delete the item

    prontera,158,185,5	script	khfskjdfh2	1_F_MARIA,{
    	getinventorylist;
    	for ( .@i = 0; .@i < @inventorylist_count; ++.@i ) {
    		if ( (@inventorylist_equip[.@i] & 1023) && @inventorylist_refine[.@i] >= 7 ) {
    			if ( @inventorylist_option_id1[.@i] ) { // that's why rathena random option check so sux, still has to fall back to delitem2
    				setarray .@option_id, @inventorylist_option_id1[.@i], @inventorylist_option_id2[.@i], @inventorylist_option_id3[.@i], @inventorylist_option_id4[.@i], @inventorylist_option_id5[.@i];
    				setarray .@option_value, @inventorylist_option_value1[.@i], @inventorylist_option_value2[.@i], @inventorylist_option_value3[.@i], @inventorylist_option_value4[.@i], @inventorylist_option_value5[.@i];
    				setarray .@option_parameter, @inventorylist_option_parameter1[.@i], @inventorylist_option_parameter2[.@i], @inventorylist_option_parameter3[.@i], @inventorylist_option_parameter4[.@i], @inventorylist_option_parameter5[.@i];
    				delitem3 @inventorylist_id[.@i], @inventorylist_amount[.@i], @inventorylist_identify[.@i], @inventorylist_refine[.@i], @inventorylist_attribute[.@i], @inventorylist_card1[.@i], @inventorylist_card2[.@i], @inventorylist_card3[.@i], @inventorylist_card4[.@i], .@option_id, .@option_value, .@option_parameter;
    			}
    			else
    				delitem2 @inventorylist_id[.@i], @inventorylist_amount[.@i], @inventorylist_identify[.@i], @inventorylist_refine[.@i], @inventorylist_attribute[.@i], @inventorylist_card1[.@i], @inventorylist_card2[.@i], @inventorylist_card3[.@i], @inventorylist_card4[.@i];
    		}
    	}
    	end;
    }

     


    btw if you are thinking of denying players to use high refine in a pvp map or event map, after you delete the item player still can equip inside the map
    you have to create your own mapflag in this case

  5. just took a crack on this
    http://herc.ws/board/topic/16648-iteml-function/

    it seems your script command missing to view the costumes

     

    >>> this script is tested on rathena

    function	script	F_ITEML	{
    	.@id = getarg(0);
    	.@itemid$ = callsub( S_Base62, .@id );
    
    	.@itemtype = getiteminfo( .@id, 2 );
    	if ( .@itemtype == IT_WEAPON || .@itemtype == IT_ARMOR )
    		.@show_slot = true;
    	.@equip_loc$ = callsub( S_Base62, getiteminfo( .@id, 5 ), 5 );
    	.@viewid$ = "&"+ callsub( S_Base62, getiteminfo( .@id, 11 ) );
    	return "<ITEML>"+ .@equip_loc$ + .@show_slot + .@itemid$ + .@viewid$ +"</ITEML>";
    S_Base62:
    	.@num = getarg(0);
    	while ( .@num ) {
    		.@base62_value$ = $@base62$[ .@num % 62 ] + .@base62_value$;
    		.@num /= 62;
    	}
    	.@default_zeroes = getarg(1, 2);
    	while ( getstrlen(.@base62_value$) < .@default_zeroes )
    		.@base62_value$ = insertchar( .@base62_value$, "0", 0 );
    	return .@base62_value$;
    }
    -	script	ITEML	FAKE_NPC,{
    OnInit:
    	setarray $@base62$,"0","1","2","3","4","5","6","7","8","9","a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z";
    	end;
    }
    
    prontera,155,185,3	script	itemlinktest#1	1_F_MARIA,{
    	input .@a;
    	npctalk itemlink(.@a);
    	npctalk F_ITEML(.@a);
    	debugmes itemlink(.@a);
    	debugmes F_ITEML(.@a);
    	end;
    }

    result in

    [Debug]: script debug : 2000000 110000034 : <ITEML>0000011jZ</ITEML>
    [Debug]: script debug : 2000000 110000034 : <ITEML>0004811jZ&2H</ITEML>

     

    the difference is when input an item with costume enable

    screen2019rAthena014.jpgscreen2019rAthena015.jpg

    yours to the left, mine to the right

    48 is convert as 256, which is EQP_HEAD_TOP
    2H is 167, which is the ViewID

    • Upvote 1
  6. *itemlink(<item_id>{,<refine>,<card0>,<card1>,<card2>,<card3>});

    compare with getitem2
    *getitem2(<item id>, <amount>, <identify>, <refine>, <attribute>, <card1>, <card2>, <card3>, <card4>{, <account ID>})

    what happen to the <identify> and <attribute> field ?

     

    EDIT: ->

    Testing ...
    1. if the item is not identify ... I can't even get the shift-click to work ..
    2. if the item is broken, shift-click it will display non-broken item ....

    hmm ....
    I think these guys have thought it out ...

    nvm, disregard this post

  7. 43 minutes ago, Epoque said:

    image.png.8b2d3755d0d27ebac3992033d3724deb.png

    inventoryselect;
    Opens a prompt window which display a configurable list of items which may be selected (as shown in the screenshots).

    image.png.ffb606c5ea5b421e543cbb11bda1ec3b.png

    skillselect;
    Opens a prompt window which displays a configurable list of skills which may be selected (as shown in the screenshots.) 

    Ima love this so much ❤️❤️
    gonna take this idea and release it on hercules forum

    • Love 1
    • Like 1
  8. -	script	WoE Reward	FAKE_NPC,{
    OnAgitEnd: callsub S_AgitEnd, 0, 20;
    OnAgitEnd2: callsub S_AgitEnd, 20, 30;
    S_AgitEnd:
    	.@start = getarg(0);
    	.@end = getarg(1);
    	for ( .@i = .@start; .@i < .@end; ++.@i ) {
    		.@guild_id = getcastledata( .castle$[.@i], CD_GUILD_ID );
    		if ( .@guild_id ) {
    			deletearray .@unique_id;
    			getguildmember .@guild_id, 1;
    			getguildmember .@guild_id, 2;
    			for ( .@j = 0; .@j < $@guildmembercount; ++.@j ) {
    				if ( isloggedin( $@guildmemberaid[.@j], $@guildmembercid[.@j] ) ) {
    					attachrid $@guildmemberaid[.@j];
    					if ( inarray( .@unique_id, get_unique_id() ) == -1 ) {
    						dispbottom "Reward given for conquered "+ getcastlename(.castle$[.@i]) +"("+ .castle$[.@i] +")";
    						getitem 31509, 1;
    						getitem 12103, 1;
    						getitem 16770, 1;
    						getitem 6380, 15;
    						getitem 31510, 1;
    						.@unique_id[ getarraysize(.@unique_id) ] = get_unique_id();
    					}
    				}
    			}
    		}
    	}
    	end;
    OnInit:
    	setarray .castle$[0],
    		"aldeg_cas01","aldeg_cas02","aldeg_cas03","aldeg_cas04","aldeg_cas05",
    		"gefg_cas01","gefg_cas02","gefg_cas03","gefg_cas04","gefg_cas05",
    		"payg_cas01","payg_cas02","payg_cas03","payg_cas04","payg_cas05",
    		"prtg_cas01","prtg_cas02","prtg_cas03","prtg_cas04","prtg_cas05",
    		"arug_cas01","arug_cas02","arug_cas03","arug_cas04","arug_cas05",
    		"schg_cas01","schg_cas02","schg_cas03","schg_cas04","schg_cas05";
    	end;
    }

    somehow I was expecting him to post a reply, but he edit the 1st post instead, so I bump

  9. got a PM for this

    something isn't right about this script

    set .@size, query_sql("SELECT account_id,char_id FROM `guild_member` WHERE guild_id = '"+.@gid+"' AND "+.@sql$,.@aid,.@cid);

    this part should use *getguildmember script command

    	query_sql("INSERT INTO `mail` (send_name,dest_id,title,message,nameid,amount,identify,zeny,time) VALUES ("+
    	          "'no-reply',"+.@cid[.@j]+",'** Siege Reward: "+getcastlename(.Castles$[.@i])+" **',"+
    	          "'Brave one,% % Congratulations!% Your guild has successfully occupied% territory in the War of Emperium on% "+.@str$+".% % % % % [ Your reward is attached. ]',"+
    	          .Reward[0]+","+.Reward[1]+",0,"+.Reward[2]+",UNIX_TIMESTAMP(NOW()))");

    and this part should use *mail script command

    not to mention this script doesn't support woe:te

     

    I'm sorry but this script is too outdated for me to fix,
    it was working fine during the time of the creation, but now this script considered outdated

     

    perhaps, simple script like this is the best
    https://rathena.org/board/topic/110929-woe-reward-script/?do=findComment&comment=357542
    then I could write it off easily

     

  10. guild_vs2,50,50,5	script	#asdf	HIDDEN_WARP_NPC,3,3,{
    	end;
    OnTouch:
    	getmapxy .@map$, .@x, .@y, UNITTYPE_PC;
    	dispbottom .@x +" "+ .@y;
    	if ( .@x == 47 )
    		pushpc DIR_WEST, 1;
    	else if ( .@x == 53 )
    		pushpc DIR_EAST, 1;
    	else if ( .@y == 47 )
    		pushpc DIR_SOUTH, 1;
    	else if ( .@y == 53 )
    		pushpc DIR_NORTH, 1;
    	end;
    }

    hercules code, you know how to convert

    • Upvote 1
  11. if(!getgmlevel() || .Options&512){
    // 512: Allow GMs to Join PvP
    .Options = 1|2|4|8|16|32|128|256|1024;//|2048|4096;

    you probably test this script with a GM account

    either enable the .Options|512 bits, or remove the .Options&512 checks

  12. 33 minutes ago, utofaery said:

    Hijack this for a moment.

     

    what if excluding mvp miniboss from the list???

    to block MVP list, add where ~mode & MD_MVP

    I have absolutely no idea how to retrieve the list of miniboss in rathena ...
    enlighten me please, because rathena changed monster mode already

  13. prontera,147,174,5	script	Change Dress	509,{
    	monster "this", -1,-1, "--ja--", .mobid[ rand(.total_mob) ], 1;
    	setunitdata $@mobid, UMOB_MASTERAID, getcharid(3);
    	setunitdata $@mobid, UMOB_MODE, MD_CANMOVE | MD_CANATTACK | MD_AGGRESSIVE | MD_ASSIST;
    	end;
    OnInit:
    	if (checkre(0)) {
    		.@mob_db$  = "mob_db_re";
    		.@item_db$ = "item_db_re";
    	} else {
    		.@mob_db$  = "mob_db";
    		.@item_db$ = "item_db";
    	}
    	.total_mob = query_sql( "select id from "+ .@mob_db$ +" where mode & "+( MD_CANMOVE | MD_CANATTACK ), .mobid );
    	end;
    }

     

  14. prontera,147,174,5	script	Change Dress	509,{
    	if ( !(eaclass() & EAJL_THIRD) || BaseJob == Job_SuperNovice ) {
    		mes "I'm sorry, but you do not have 3rd class.";
    		close;
    	}
    	mes "Hi "+strcharinfo(0)+" do you want to change your dress?";
    	next;
    	if ( select ( "Yes", "No" ) == 2 ) close;
    	if ( Zeny < 100000000 ) {
    		mes "You need 100,000,000 Zeny";
    		close;
    	}
    	.@s = select("Primary Dress", "Second Dress") -1;
    	if ( getlook(LOOK_BODY2) == .@s ) {
    		mes "You already wearing that dress";
    		close;
    	}
    	setlook LOOK_BODY2, .@s;
    	Zeny -= 100000000;
    	mes "Done!";
    	close;
    }

    this script was like... just few topics down below ...

    • Love 1
  15. 6 hours ago, Seravy said:

    "The Dark Lord has revived the Emperium! You must defeat him to gain ownership of this castle!"

    remove the emperium spawn from OnAgitStart: label
    in guild2/agit_main_se.txt file, its under OnEmpSpawn:

    change that emperium spawn into your custom boss spawn, with a custom event label
    and the custom event label will trigger to spawn the emperium

     

    6 hours ago, Seravy said:

    Novice castles... what are those? I tried a google search but found nothing. Is this an official feature? If it's woe for novices only, I don't think I'll bother with it.

    no idea honestly, this thing was already in eathena repo when I join eathena back then ... 12 years ago
    https://github.com/rathena/rathena/tree/master/npc/events/nguild

     

    6 hours ago, Seravy said:

    So basically, unless there are bugs in it, all I need is a way to get the monster's name.

    there are 2 similar script command for it in rathena
    *rid2name and *getunitname, both do the same thing

     

    .... I guess I don't need to provide a template, since you post "all I need is a way to get the monster's name." ...
    although I still think its better to just summon a boss monster with event label, rather than loop with *getmapunits script command

×
×
  • Create New...