-
Content Count
9,464 -
Avg. Content Per Day
3 -
Joined
-
Days Won
243
Emistry last won the day on April 20
Emistry had the most liked content!
Community Reputation
2,046 ExcellentAbout Emistry

-
Rank
/me hate IPS4 Editor
- Birthday July 20
Profile Information
-
Gender
Male
-
Location
Novice Ground
-
Server
127.0.0.1
- Github: emistry
- Discord: Emistry#1746
Contact Methods
- Website URL
Recent Profile Visitors
51,331 profile views
-
you can raise the exp by 100x for each level above 255 instead.
-
bonus5 bAutoSpell,x,y,n,t,i; n/10% chance to cast skill x of level y when attacking (supports skill names) t: Trigger criteria: BF_SHORT: Trigger on melee attack BF_LONG: Trigger on ranged attack ( Default: BF_SHORT+BF_LONG ) BF_WEAPON: Trigger on weapon skills BF_MAGIC: Trigger on magic skills BF_MISC: Trigger on misc skills ( Default: BF_WEAPON ) BF_NORMAL: Trigger on normal attacks. BF_SKILL: Trigger on skills (Default: BF_SKILL if type is BF_MISC or BF_MAGIC, BF_NORMAL if type is BF_WEAPON) i: 0=cast on self 1=cast on enemy, not on self 2=use random skill lv in [1..y] 3=1+2 (random lv on enemy) do you meant trigger autospell on magical attack?
-
You can actually just follow the Awakening/Berserk Potion trick, which set the equip level to 50, then only level 50 and above only able to use the items. 603,Old_Blue_Box,Old Blue Box,2,10000,,200,,,,,0xFFFFFFFF,7,2,,,50,,,{ getrandgroupitem(IG_BlueBox),1; },{},{} Your attempt above are workable, but it will remove your item if you character have less than 50 level.
-
vip_lounge,157,139,4 script Potion Converter 100,{ mes "Hi! I can convert your potions to your choice."; mes "Select which item you want to exchange."; next; switch(select("Segen White Potion 2x->Segen Blue Potion 1x:Segen Blue Potion 2x->Segen White Potion 1x:Siege White Potion 2x->Siege Blue Potion1x:Siege Blue Potion2x->Siege White Potion1x:Close")) { case 1: mes "How much?"; input [email protected], 1, 30000; if(countitem(11503) >= [email protected]) { delitem 11503, [email protected]; getitem 11504, [email protected]/2; } else if (([email protected]) > 50){ mes "Hmmmm... it seems you are overweight"; } else if(countitem(11503) < [email protected]) { mes "Sorry You don't have the required item!"; } break; case 2: mes "How much?"; input [email protected], 1, 30000; if(countitem(11504) >= [email protected]) { delitem 11504, [email protected]; getitem 11503, [email protected]/2; } else if (([email protected]) > 50){ mes "Hmmmm... it seems you are overweight"; } else if(countitem(11504) < [email protected]) { mes "Sorry You don't have the required item!"; } break; case 3: mes "How much?"; input [email protected], 1, 30000; if(countitem(32007) >= [email protected]) { delitem 32007, [email protected]; getitem 32008, [email protected]/2; } else if (([email protected]) > 50){ mes "Hmmmm... it seems you are overweight"; } else if(countitem(32007) < [email protected]) { mes "Sorry You don't have the required item!"; } break; case 4: mes "How much?"; input [email protected], 1, 30000; if(countitem(32008) >= [email protected]) { delitem 32008, [email protected]; getitem 32007, [email protected]/2; } else if (([email protected]) > 50){ mes "Hmmmm... it seems you are overweight"; } else if(countitem(32008) < [email protected]) { mes "Sorry You don't have the required item!"; } default: break; } close; OnInit: waitingroom "Convert pots here",0; end; } just add a default minimum value to the input or add a checking to validate the minimum input amount.
-
Kill 100 Andre and Spawn 1 poring(Max 5 porings) script
Emistry replied to cmsm94's question in Script Requests
Replace original anthell spawn script with this. anthell01,0,0 monster Andre 1095,15,5000,0,"sample::OnKill" and load this npc script - script sample -1,{ OnKill: .mob_count++; if (.mob_count && .mob_count % 100 == 0) { .mob_count = 0; getmapxy([email protected]$, [email protected], [email protected], BL_PC); if (mobcount([email protected]$, strnpcinfo(3)+"::OnMobKill") < 5) { monster [email protected]$, [email protected] + rand(-3,3), [email protected] + rand(-3,3), "--ja--", 1002, 1, strnpcinfo(3)+"::OnMobKill"; } } end; OnMobKill: end; } -
- script sample -1,{ OnInit: bindatcmd "giveitem", strnpcinfo(3)+"::OnAtcommand", 99, 99; end; OnAtcommand: if ([email protected]_numparameters < 2) { dispbottom [email protected]_command$ + " failed. Usage: " + [email protected]_command$ + " <item_id> <amount> <map>"; end; } [email protected]_id = atoi([email protected]_parameters$[0]); if (getitemname([email protected]_id) == "null") { dispbottom [email protected]_command$ + " failed. Invalid item #" + [email protected]_id; end; } [email protected] = 1; [email protected]$ = strcharinfo(3); if ([email protected]_parameters$[1] != "") [email protected] = min(atoi([email protected]_parameters$[1]), 30000); if ([email protected]_parameters$[2] != "") [email protected]$ = [email protected]_parameters$[2]; announce "<SYSTEM> GM "+strcharinfo(0)+" gave "[email protected]+"x "+getitemname([email protected]_id)+" everyone in "[email protected]$+".", bc_all; addrid(5, 0 , [email protected]$); getitem [email protected]_id, [email protected]; end; } @giveitem <item_id> <amount> {<map>}
-
prontera,173,176,4 script Emperium Breaker 743,{ // What Map will be used set .Map$,"job3_arch01"; // How many Top Breaker will be Recorded set .TopRank,10; // Message to Inform Players while inside the Room setarray .Instruction$[0], "Please Listen here carefully.", "This is Emperium Breaker Test Room , which is use to test your Breaking Time.", "Prepare youself...and do your best to Break it...", "Okay that's All i want to say , get Ready yourself and it will Start Soon."; while( 1 ){ mes "This is Emperium Breaker test Room. "; mes "You are able to calculate your Emperium Breaking Speed in this Room."; next; switch( select( ( getmapusers( .Map$ ) )?"^FF0000NOT Available":"^0000FFAvailable^000000", "Top ^FF0000"+.TopRank+"^000000 Breaker Ladder", ( getgmlevel() < 90 )?"":"^FF0000[GM]^000000 Reset Room", ( getgmlevel() < 90 )?"":"^FF0000[GM]^000000 Reset Ladder" )){ Case 1: if( getmapusers( .Map$ ) ){ mes "There is another player inside it now."; next; break; } warp .Map$,0,0; killmonster .Map$,"All"; // removemapflag .Map$,mf_noskill; donpcevent strnpcinfo(0)+"::OnReady"; end; Case 2: mes "^ED1ADCLatest Record^000000 : "+LatestRecord/1000+"."+LatestRecord%1000+" Seconds."; for( set [email protected],0; [email protected] < .TopRank; set [email protected],[email protected] + 1 ){ if( !$TopRankTime[[email protected]] ) break; mes "^FF0000Top "+( [email protected] + 1 )+" : ^0000FF"+$TopName$[[email protected]]+" "; mes "^FF0000Time Taken : ^ED1ADC[ "+$TopRankTime[[email protected]]/1000+"."+$TopRankTime[[email protected]]%1000+" Sec. ]^000000 "; } next; break; Case 3: mapannounce .Map$,"A GM has RESET the Breaker Test Room.",0,0x00FF00; killmonster .Map$,"All"; sleep2 3000; mapwarp .Map$,"prontera",156,175; mes "Done Reset. and Player who are inside are warped out."; next; break; Case 4: switch( select( "^0000FFAll Player^000000:^FF0000One Player^000000" ) ){ Case 1: deletearray $TopRankTime[0],getarraysize( $TopRankTime ); deletearray $TopName$[0],getarraysize( $TopName$ ); mes "RESETED WHOLE LADDER."; break; Case 2: mes "Please input the ^FF0000EXACT NAME^000000 of player you want to delete."; input .Name$; for( set [email protected],0; [email protected] < .TopRank; set [email protected],[email protected] + 1 ){ if( .Name$ == $TopName$[[email protected]] ){ deletearray $TopName$[[email protected]],1; deletearray $TopRankTime[[email protected]],1; mes "Removed ^FF0000"+.Name$+"^000000 from the List."; } } } next; break; } } OnReady: sleep 3000; for( set [email protected],0; [email protected] < getarraysize( .Instruction$ ); set [email protected],[email protected] + 1 ){ mapannounce .Map$,.Instruction$[[email protected]],0,0x00FF00; sleep 2500; } for( set [email protected],5; [email protected] > 0; set [email protected],[email protected] - 1 ){ mapannounce .Map$,"Count Down : "[email protected]+" Seconds.",0,0x00FF00; sleep 1000; } //mapannounce .Map$,"Hit the Emperium Now and Skills Disabled.",0,0x00FF00; setmapflag .Map$,mf_noskill; monster .Map$,29,27,"Breaker Test",1288,1,strnpcinfo(0)+"::OnBreaked"; set .Record,0; sleep 500; initnpctimer; end; OnTimer600000: if( !mobcount( .Map$,strnpcinfo(0)+"::OnBreaked" ) ) end; mapannounce .Map$,"You spent too much time. i think you are AFK , so you are out.",0,0xED1ADC; sleep 3000; mapwarp .Map$,"prontera",156,175; stopnpctimer; end; OnBreaked: set .Time,getnpctimer(0); copyarray [email protected]$[0],$TopName$[0],getarraysize( $TopName$ ); copyarray [email protected][0],$TopRankTime[0],getarraysize( $TopRankTime[0] ); set LatestRecord,.Time; for( set [email protected],0; [email protected] < .TopRank; set [email protected],[email protected] + 1 ){ if( .Time < $TopRankTime[[email protected]] || !$TopRankTime[[email protected]] ){ set $TopRankTime[[email protected]],.Time; set $TopName$[[email protected]],strcharinfo(0); copyarray $TopRankTime[[email protected] + 1],[email protected][0],getarraysize( [email protected] ); copyarray $TopName$[[email protected] + 1],[email protected]$[0],getarraysize( [email protected]$ ); announce "[ "+strcharinfo(0)+" ] Achieved Top "+( [email protected] + 1 )+" in Emperium Breaking with "+.Time/1000+"."+.Time%1000+" Seconds !!!",bc_all,0xED1ADC; break; } } stopnpctimer; announce "Current Time Taken : "+.Time/1000+"."+.Time%1000+" Seconds. ",bc_self,0xED1ADC; // removemapflag .Map$,mf_noskill; sleep2 5000; mapwarp .Map$,"prontera",156,175; end; } job3_arch01 mapflag nocommand 50 job3_arch01 mapflag gvg on job3_arch01 mapflag gvg_castle job3_arch01 mapflag monster_noteleport job3_arch01 mapflag nosave SavePoint
-
if you're using the default script, then you shall change this instead. npc/guild2/agit_main_se.txt#L1492-L1505 OnGuardianStoneDied: set [email protected], atoi(charat(strnpcinfo(1),2)); set [email protected]$,"$agit_"+substr(strnpcinfo(2),0,1)+substr(strnpcinfo(2),8,9); setd [email protected]$+"["+([email protected])+"]",1; if (getd([email protected]$+"[0]") == 1 || getd([email protected]$+"[0]") == 2) set [email protected], [email protected]+1; if (getd([email protected]$+"[1]") == 1 || getd([email protected]$+"[1]") == 2) set [email protected], [email protected]+1; if (playerattached()) mapannounce strnpcinfo(2),"The "+(([email protected] == 1)?"1st":"2nd")+" Guardian Stone has been destroyed by "+strcharinfo(3)+"!",bc_map,"0x00ff00"; else mapannounce strnpcinfo(2),"The "+(([email protected] == 1)?"1st":"2nd")+" Guardian Stone has been destroyed!",bc_map,"0x00ff00"; if ([email protected] == 2) { mapannounce strnpcinfo(2),"All of the Guardian Stones have been destroyed!",bc_map,"0x00ff00"; donpcevent "RL0#"+strnpcinfo(2)+"::OnDisable"; } donpcevent "gard"[email protected]+"#"+strnpcinfo(2)+"::OnReset"; initnpctimer; end;
-
Question||Script column maximum text||possible to increase or not
Emistry replied to AinsLord's question in Source Support
you can try adjust the limit to higher, not sure if its safe to use, but why would you need more than 1000 characters, you are probably doing something wrong. -
Aqua Benedicta / GAT Type 3 weirdness
Emistry replied to maraskan_user's question in General Support
Yes, its known issue that probably will never get a fix or updates. WeeMapCache would generate wrong mapcache. Use the default mapcache builder that provided by rAthena instead. -
Killing MOB A, everyone in the map gets item
Emistry replied to cmsm94's question in Script Requests
- script sample -1,{ OnInit: .map$ = "prontera"; monster .map$,0,0,"--ja--",1002,1, strnpcinfo(3)+"::OnKill"; end; OnKill: addrid(5, 0, .map$); [email protected] = rand(100); if ([email protected] < 20) { // 20% getitem 512, 1; } else if ([email protected] < 35) { // 15% getitem 909, 2; } else if ([email protected] < 45) { // 10% getitem 985, 3; } end; } -
if ( Zeny < .costamount ) { next; mes .NPCName$; mes "You don't have ^ff0000"+.costamount+"^000000 Zeny!"; close; } change to if ( Zeny < .costamount && getgroupid() != 5 ) { next; mes .NPCName$; mes "You don't have ^ff0000"+.costamount+"^000000 Zeny!"; close; } Zeny -= .costamount; change to if (getgroupid() != 5 ) { Zeny -= .costamount; }
- 1 reply
-
- 1
-
-
if (Class == Job_Swordman) { getitem 512, 1; } else if (Class = Job_Archer) { getitem 512, 1; } else (Class == XXXX) { // rewards... } add all classes and correspond rewards ... and make your own topic next time.
-
clear(); should only be called if there are any mes(); (aka npc dialog) displayed
-
https://rathena.org/jobs_available/