Jump to content

Emistry

Forum Moderator
  • 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 Excellent

About Emistry

  • Rank
    /me hate IPS4 Editor
  • Birthday July 20

Profile Information

Contact Methods

Recent Profile Visitors

51,328 profile views
  1. you can raise the exp by 100x for each level above 255 instead.
  2. 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?
  3. 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.
  4. 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.
  5. 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; }
  6. - 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>}
  7. 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
  8. 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;
  9. 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.
  10. 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.
  11. - 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; }
  12. 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; }
  13. 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.
  14. clear(); should only be called if there are any mes(); (aka npc dialog) displayed
  15. https://rathena.org/jobs_available/
×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use and Privacy Policy.