Jump to content

AnnieRuru

Members
  • Posts

    2044
  • Joined

  • Last visited

  • Days Won

    51

Everything posted by AnnieRuru

  1. setarray getd( ".pet"+ 1002 ), 1113, 1031; // poring can evolve into drops or poporing setarray getd( ".pet"+ 1011 ), 1042; // chonchon can evolve into steel chonchon // add more as needed this is the part to change pet if you want to add more, like desert wolf babe can change into baphomet jr. or deviruchi setarray getd( ".pet"+ 1107 ), 1101, 1109; read your \db\pet_db.txt ... // [b]MobID[/b],Name,JName,LureID,[b]EggID[/b] 1002,PORING,Poring,619,9001, ... 1113,DROPS,Drops,620,9002, ... 1031,POPORING,Poporing,621,9003, ... 1063,LUNATIC,Lunatic,622,9004, ... 1049,PICKY,Picky,623,9005, ... 1011,CHONCHON,ChonChon,624,9006, ... 1042,STEEL_CHONCHON,Steel ChonChon,625,9007, ... 1035,HUNTER_FLY,Hunter Fly,626,9008, ... 1167,SAVAGE_BABE,Savage Babe,627,9009, ... 1107,DESERT_WOLF_B,Baby Desert Wolf,628,9010, ... 1052,ROCKER,Rocker,629,9011, ... 1014,SPORE,Spore,630,9012, ... 1077,POISON_SPORE,Poison Spore,631,9013, ... 1019,PECOPECO,PecoPeco,632,9014, ... 1056,SMOKIE,Smokie,633,9015, ... 1057,YOYO,Yoyo,634,9016, ... 1023,ORK_WARRIOR,Orc Warrior,635,9017, ... 1026,MUNAK,Munak,636,9018, ... 1110,DOKEBI,Dokebi,637,9019, ... 1170,SOHEE,Sohee,638,9020, ... 1029,ISIS,Isis,639,9021, ... 1155,PETIT,Petite,640,9022, ... 1109,DEVIRUCHI,Deviruchi,641,9023, ... 1101,BAPHOMET_,Baphomet Jr.,642,9024, ... 1188,BON_GUN,Bon Gun,659,9025, ... 1200,ZHERLTHSH,Zealotus,660,9026, ... 1275,ALICE,Alice,661,9027, ... 1815,EVENT_RICECAKE,Rice Cake,0,9028, ... 1245,GOBLINE_XMAS,Christmas Goblin,12225,9029, ... I use mob ID instead of egg ID
  2. update this script also prontera,157,178,5 script Sample 100,{ if ( !getcharid(1) ) { callsub L_soullink; end; } getpartymember getcharid(1), 1; getpartymember getcharid(1), 2; getmapxy .@map1$, .@x1, .@y1, 0; .@area = getbattleflag("area_size"); for ( .@i = 0; .@i < $@partymembercount; .@i++ ) { if ( isloggedin( $@partymemberaid[.@i], $@partymembercid[.@i] ) ) { attachrid $@partymemberaid[.@i]; getmapxy .@map2$, .@x2, .@y2, 0; if ( .@map1$ == .@map2$ && distance( .@x1, .@y1, .@x2, .@y2 ) <= .@area && hp > 0 ) callsub L_soullink; } } end; L_soullink: if ( .@spirit = getd( ".spirit_id_"+ basejob ) ); else if ( upper & 1 && baselevel < 70 ) .@spirit = 494; else return; sc_start4 sc_spirit, 300000, 5, .@spirit,0,0; skilleffect .@spirit, 5; return; OnInit: setd ".spirit_id_"+ Job_Alchemist, 445; setd ".spirit_id_"+ Job_Monk, 447; setd ".spirit_id_"+ Job_Star_Gladiator, 448; setd ".spirit_id_"+ Job_Sage, 449; setd ".spirit_id_"+ Job_Crusader, 450; setd ".spirit_id_"+ Job_SuperNovice, 451; setd ".spirit_id_"+ Job_Knight, 452; setd ".spirit_id_"+ Job_Wizard, 453; setd ".spirit_id_"+ Job_Priest, 454; setd ".spirit_id_"+ Job_Bard, 455; setd ".spirit_id_"+ Job_Dancer, 455; setd ".spirit_id_"+ Job_Rogue, 456; setd ".spirit_id_"+ Job_Assassin, 457; setd ".spirit_id_"+ Job_Blacksmith, 458; setd ".spirit_id_"+ Job_Hunter, 460; setd ".spirit_id_"+ Job_Soul_Linker, 461; end; } hehehe found so many new techniques
  3. its 8pm ! ScriptingPhailure's TV's program is on the show ! I take this opportunity, and now I have the hill.
  4. Capuche's script is working fine in my test server and works according to your concept unless there's a miscommunication somewhere between us
  5. oh, the reason that I want everything ask on forum because its better to have someone answer it for me o.oI couldn't able to support every single topic here also wahahaha, I don't want to make my script works for eathena because I have problem with eathena admin (*hides*)
  6. ahaha, you forgot to put OnNight: end; otherwise the server will spam error like [Error]: npc_event: event not found [Nightmare::OnNight]
  7. update this script yeah I knew its made by me lol, but I've learned a lot new techniques by now ( I've level up ! ) by using OnPCDieEvent/OnPCLogoutEvent, this kind of LMS script will no longer has the chance for no winner situation prontera,154,178,5 script Run Or Die 100,{ if ( !.start ) { mes "no event atm"; close; } if ( .start == 2 ) { mes "event is running"; close; } if ( .register_count >= .register_limit ) { mes "this event has reach the maximum player participations"; close; } percentheal 100,100; warp "guild_vs5", 0,0; .register_aid[ .register_count ] = getcharid(3); .register_count+++; end; OnWhisperGlobal: if ( getgmlevel() < 60 ) end; //OnClock0000: // put all your start timer here if ( .start ) end; announce "Run or Die event registration start", 0; .start = 1; sleep 10000; // registration timer here announce "Run or Die event registration close", 0; .start = 2; sleep 3000; mapannounce "guild_vs5", "survive as long as you can !", 0; if ( .register_count < .register_min ) { announce "not enough participants for Run or Die event", 0; getmapxy .@map$, .@x, .@y, 1; mapwarp "guild_vs5", .@map$, .@x, .@y; goto L_reset; } while ( .start == 2 ) { monster "guild_vs5", 0,0, "Come On Baby!!!", 1904, 5 + rand(5), "", 0; monster "guild_vs5", 0,0, "Come On Baby!!!", 1904, 5 + rand(5), "", 1; monster "guild_vs5", 0,0, "Come On Baby!!!", 1904, 5 + rand(5), "", 2; sleep 5000; } end; OnPCDieEvent: OnPCLogoutEvent: if ( .start != 2 || strcharinfo(3) != "guild_vs5" ) end; while ( .register_aid != getcharid(3) && .@i < .register_count ) .@i++; deletearray .register_aid[.@i], 1; .register_count--; warp "SavePoint", 0,0; if ( .register_count > 1 ) end; killmonsterall "guild_vs5"; announce "congratulations ~ the winner of Run Or Die event is "+ rid2name( .register_aid ), 0; getitem .reward_item_id, .reward_item_amount, .register_aid; // winner prize warpchar "SavePoint", 0,0, getcharid( 0, rid2name( .register_aid ) ); L_reset: .start = 0; deletearray .register_aid; .register_count = 0; end; OnInit: .register_min = 2; // minimum amount of players to start this event, or else it auto-abort .register_limit = 100; // maximum amount of players able to participate in this event .reward_item_id = 7539; .reward_item_amount = 1; end; } guild_vs5 mapflag nosave SavePoint guild_vs5 mapflag nowarp guild_vs5 mapflag nowarpto guild_vs5 mapflag noteleport guild_vs5 mapflag nomemo guild_vs5 mapflag nopenalty //guild_vs5 mapflag nobranch guild_vs5 mapflag noicewall
  8. prontera,155,178,5 script ldjfhksfjs 100,{ end; OnInit: .minplayer2start = 1; // minimum player to start .summon_clone = 3; // summon how many evil clone per player .map$ = "guild_vs2"; // the map play on L_Reset: waitingroom "Clone Event", .minplayer2start +1, strnpcinfo(0)+"::OnStart", .minplayer2start; end; OnStart: if ( getwaitingroomstate(0) < .minplayer2start ) end; warpwaitingpc .map$, 0,0; killmonster .map$, strnpcinfo(0)+"::Onclonedead"; for ( .@i = 0; .@i < $@warpwaitingpcnum; .@i++ ) for ( .@j = 0; .@j < .summon_clone; .@j++ ) clone .map$, 0,0, strnpcinfo(0)+"::Onclonedead", .@id = getcharid( 0, rid2name( $@warpwaitingpc[.@i] ) ); .count = .minplayer2start * .summon_clone; copyarray .register_aid, $@warpwaitingpc, $@warpwaitingpcnum; delwaitingroom; end; Onclonedead: .count--; if ( .count ) end; announce "all clones are dead !", 0; .@size = getarraysize( .register_aid ); for ( .@i = 0; .@i < .@size; .@i++ ) getitem 501, 1, .register_aid[.@i]; // reward item here getmapxy .@map$, .@x, .@y, 1; mapwarp .map$, .@map$, .@x, .@y; goto L_Reset; OnPCDieEvent: OnPCLogoutEvent: if ( strcharinfo(3) != .map$ ) end; .@size = getarraysize( .register_aid ); while ( .register_aid[.@i] != getcharid(3) && .@i < .@size ) .@i++; deletearray .register_aid[.@i], 1; warp "Save", 0,0; if ( .@size > 1 ) end; announce "all players died, what a failure", 0; killmonster .map$, strnpcinfo(0)+"::Onclonedead"; goto L_Reset; } prontera,155,178,5 script ldjfhksfjs 100,{ end; OnInit: .minplayer2start = 1; // minimum player to start .summon_clone = 3; // summon how many evil clone per player .map$ = "guild_vs2"; // the map play on L_Reset: waitingroom "Clone Event", .minplayer2start +1, strnpcinfo(0)+"::OnStart", .minplayer2start; end; OnStart: if ( getwaitingroomstate(0) < .minplayer2start ) end; warpwaitingpc .map$, 0,0; killmonster .map$, strnpcinfo(0)+"::Onclonedead"; for ( .@i = 0; .@i < $@warpwaitingpcnum; .@i++ ) for ( .@j = 0; .@j < .summon_clone; .@j++ ) clone .map$, 0,0, strnpcinfo(0)+"::Onclonedead", .@id = getcharid( 0, rid2name( $@warpwaitingpc[.@i] ) ); .count = .minplayer2start * .summon_clone; copyarray .register_aid, $@warpwaitingpc, $@warpwaitingpcnum; delwaitingroom; end; Onclonedead: .count--; if ( .count ) end; announce "all clones are dead !", 0; .@size = getarraysize( .register_aid ); for ( .@i = 0; .@i < .@size; .@i++ ) getitem 501, 1, .register_aid[.@i]; // reward item here getmapxy .@map$, .@x, .@y, 1; mapwarp .map$, .@map$, .@x, .@y; goto L_Reset; OnPCDieEvent: OnPCLogoutEvent: if ( strcharinfo(3) != .map$ ) end; .@size = getarraysize( .register_aid ); while ( .register_aid[.@i] != getcharid(3) && .@i < .@size ) .@i++; deletearray .register_aid[.@i], 1; warp "Save", 0,0; if ( .@size > 1 ) end; announce "all players died, what a failure", 0; killmonster .map$, strnpcinfo(0)+"::Onclonedead"; goto L_Reset; } both of these are the exact same script, but look at the OnStart label with {codebox}, OnStart becomes onstart ( becomes small letters ) but with {code}, it retains the OnStart try {quote} this post and you'll see both are exact same script in that topic I have to change into OnEventInit <.< what a weird bug
  9. simple script prontera,155,178,5 script ldjfhksfjs 100,{ end; OnInit: .minplayer2start = 5; // minimum player to start .summon_clone = 3; // summon how many evil clone per player L_Reset: waitingroom "Clone Event", .minplayer2start +1, strnpcinfo(0)+"::OnEventInit", .minplayer2start; end; OnEventInit: if ( getwaitingroomstate(0) < .minplayer2start ) end; warpwaitingpc "guild_vs2", 0,0; killmonster "guild_vs2", strnpcinfo(0)+"::Onclonedead"; for ( .@i = 0; .@i < $@warpwaitingpcnum; .@i++ ) for ( .@j = 0; .@j < .summon_clone; .@j++ ) clone "guild_vs2", 0,0, strnpcinfo(0)+"::Onclonedead", getcharid( 0, rid2name( $@warpwaitingpc[.@i] ) ); .count = .minplayer2start * .summon_clone; copyarray .register_aid, $@warpwaitingpc, $@warpwaitingpcnum; delwaitingroom; end; Onclonedead: .count--; if ( .count ) end; announce "all clones are dead !", 0; .@size = getarraysize( .register_aid ); for ( .@i = 0; .@i < .@size; .@i++ ) getitem 501, 1, .register_aid[.@i]; // reward item here getmapxy .@map$, .@x, .@y, 1; mapwarp "guild_vs2", .@map$, .@x, .@y; goto L_Reset; OnPCDieEvent: OnPCLogoutEvent: if ( strcharinfo(3) != "guild_vs2" ) end; .@size = getarraysize( .register_aid ); while ( .register_aid[.@i] != getcharid(3) && .@i < .@size ) .@i++; deletearray .register_aid[.@i], 1; warp "Save", 0,0; if ( .@size > 1 ) end; announce "all players died, what a failure", 0; killmonster "guild_vs2", strnpcinfo(0)+"::Onclonedead"; goto L_Reset; } guild_vs2 mapflag nosave SavePoint guild_vs2 mapflag nowarp guild_vs2 mapflag nowarpto guild_vs2 mapflag noteleport guild_vs2 mapflag nomemo guild_vs2 mapflag nopenalty guild_vs2 mapflag nobranch guild_vs2 mapflag noicewall
  10. I think better go for SQL coupon_giver0.1.txt kinda lazy to add something like giving a signed item ... and lousy dialog at the moment getitemname2 function btw
  11. really ? o.oin my test server, if you click on warp portal npc ID 45, you will walk to the portal instead of triggering it from clicking
  12. https://rathena.svn.sourceforge.net/svnroot/rathena/trunk/npc/merchants/enchan_arm.txt hmm ? or I make another one just for fun prontera,156,178,5 script ldfhsdfkljs 100,{ mes "do you want to enchant your equipped armor ?"; next; if ( select ( "yes", "no" ) == 2 ) close; if ( !getequipisequiped( EQI_ARMOR ) ) { mes "you did not equip an armor at the moment"; close; } .@id = getequipid( EQI_ARMOR ); .@ref = getequiprefinerycnt( EQI_ARMOR ); .@card1 = getequipcardid( EQI_ARMOR, 0 ); .@card2 = getequipcardid( EQI_ARMOR, 1 ); .@card3 = getequipcardid( EQI_ARMOR, 2 ); .@card4 = getequipcardid( EQI_ARMOR, 3 ); if ( .@card1 == 255 || .@card1 == 254 ) { mes "I can't enchant a signed equipment"; close; } if ( .@card4 ) { mes "this armor has already enchanted"; close; } .@rand = rand(.totalchance); while ( ( .@rand = .@rand - .rate[.@r] ) >= 0 ) .@r++; .@o = rand(0,5); // orb of str/int/dex .... delitem2 .@id, 1,1, .@ref, 0, .@card1, .@card2, .@card3, 0; getitem2 .@id, 1,1, .@ref, 0, .@card1, .@card2, .@card3, 4700 + .@o * 10 + .@r; equip .@id; close; OnInit: setarray .rate, 55,50,45,40,35,30,25,20,15,10; // rate of getting +1 is 55%, +2 is 50% .... +10 is 10% ... while ( .@i < 10 ) { .totalchance = .totalchance + .rate[.@i]; .@i++; } end; }
  13. select * from inventory where nameid = 2541; select * from cart_inventory where nameid = 2541; select * from storage where nameid = 2541; select * from guild_storage where nameid = 2541; select * from mail where nameid = 2541; select * from auction where nameid = 2541;
  14. interesting, can i see that ? I not sure what is the kind of point system you wantthere are many kinds of gvg script that I've seen unless you show what kind of gvg script, or else I hardly even know what you are talking about
  15. after I rethink again, I don't think you can make this kind of script so I did it then ... prontera,156,178,5 script ldfhsdfkljs 100,{ if ( petstat(PET_CLASS) ) { mes "please return your pet into egg state to continue"; close; } getinventorylist; for ( .@i = 0; .@i < @inventorylist_count; .@i++ ) { if ( @inventorylist_card1[.@i] == -256 ) { query_sql "select class, level, equip, name from pet where pet_id = "+( .@id = @inventorylist_card2[.@i] + ( ( @inventorylist_card2[.@i] >= 0 )? 0 : 1 << 16 ) + @inventorylist_card3[.@i] * ( 1 << 16 ) ), .@class, .@level, .@equipped, .@name$; .@menu$ = .@menu$ +"^0000FF"+ .@name$ +" ^00CC00{"+ getmonsterinfo( .@class, 0 ) +"} ^000000["+ .@level +"] ^FF0000"+( ( .@equipped )? "*equipped" : "" )+":"; .@pet_id[.@c] = .@id; .@egg_id[.@c] = @inventorylist_id[.@i]; .@pet_name$[.@c] = .@name$; .@pet_class[.@c] = .@class; .@pet_level[.@c] = .@level; .@pet_equipped[.@c] = .@equipped; .@c++; } } if ( !.@c ) { mes "your inventory doesn't have any pet egg"; close; } mes "select which pet that you want it to evolve"; next; .@s = select( .@menu$ ) -1; mes "selected : "+ .@pet_name$[.@s]; mes "level : "+ .@pet_level[.@s]; mes "equipped : "+( ( .@pet_equipped[.@s] )? "Yes" : "No" ); next; if ( .@pet_level[.@s] < .min_level ) { mes "this pet doesn't meet the level requirement"; close; } if ( .@pet_equipped[.@s] ) { mes "please unequip this pet accesory to continue"; close; } if ( !getd( ".pet"+ .@pet_class[.@s] ) ) { mes "this pet cannot evolve any further"; close; } delitem2 .@egg_id[.@s], 1, 1, 0, 0, -256, ( .@pet_id[.@s] % ( 1 << 16 ) - ( .@remainder15 = .@pet_id[.@s] % ( 1 << 15 ) ) < ( 1 << 15 ) )? .@remainder15 : ( .@remainder15 - ( 1 << 15 ) ), .@pet_id[.@s] >> 16, 0; makepet .@get_pet_id = getd( ".pet"+ .@pet_class[.@s] +"["+ rand( getarraysize( getd( ".pet"+ .@pet_class[.@s] ) ) ) +"]" ); mes "your "+ .@pet_name$[.@c] +" has reborn into "+ getmonsterinfo( .@get_pet_id, 0 ); mes "please rename your pet ~"; close; OnInit: .min_level = 80; // minimum level 80 to change pet egg setarray getd( ".pet"+ 1002 ), 1113, 1031; // poring can evolve into drops or poporing setarray getd( ".pet"+ 1011 ), 1042; // chonchon can evolve into steel chonchon // add more as needed end; } well, I supposed can mark this as solved btw you can play around with \conf\battle\pet.conf just like this is enough I guess
  16. prontera,154,175,5 script dkfjhsdfkj 100,{ query_sql "select id from item_db where equip_locations & 769 and type = 5 order by rand() limit 1", .@id; getitem .@id, 1; } use this snippet and apply it into your item_box function
  17. lol, reminds me of my private mvp room script guild_vs2,50,50,5 script asdasdasdasd 100,{ mes "What you want to summon ?"; .@s = select( .menu$ ) -1; mes "input amount to summon"; if ( input( .@amount, 1, .max_summon ) ) { mes "invalid amount"; close; } mes "Summon "+ .@amount +"x "+ .mob_name$[.@s] +" ?"; if ( select ( "Yes", "No" ) == 2 ) close; close2; monster "this", 0,0, "--ja--", .mob_id[.@s], .@amount; end; OnInit: setarray .mob_id, 1076, 1002, 1015; // configuration here .max_summon = 2000; while ( .mob_id[.@i] ) { .mob_name$[.@i] = getmonsterinfo( .mob_id[.@i], 0 ); .@i++; } .menu$ = implode( .mob_name$, ":" ); end; } the script works fine in latest rathena
  18. I believe this is Mysterious' poring summoner script which, very very easy to replicate - script poring -1,{ OnInit: .correct = 10; // spawn the correct porings .wrong = 90; // spawn the fake porings end; OnWhisperGlobal: if ( getgmlevel() < 60 ) end; else if ( compare( @whispervar0$, "on" ) || compare( @whispervar0$, "start" ) ) { if ( .count ) dispbottom "event already started"; else goto L_Start; } else if ( compare( @whispervar0$, "off" ) || compare( @whispervar0$, "end" ) ) { if ( !.count ) dispbottom "event not yet start"; else goto L_End; } else if ( !.count ) dispbottom "event is currently not running"; else dispbottom "event is currently running. "+ .count +" poring left"; end; //OnClock0000: // put the start time here L_Start: .count = .correct; announce "poring summoner event has started", 0; monster "pvp_n_1-2", 0,0, "--ja--", 1002, .correct, strnpcinfo(0)+"::OnCorrectKill"; monster "pvp_n_1-2", 0,0, "--ja--", 1002, .wrong, strnpcinfo(0)+"::OnWrongKill"; sleep 300000; // 5 minutes if ( !.count ) end; L_End: .count = 0; announce "poring summoner event has ended", 0; killmonster "pvp_n_1-2", strnpcinfo(0)+"::OnCorrectKill"; killmonster "pvp_n_1-2", strnpcinfo(0)+"::OnWrongKill"; sleep 3000; // give them a pause ... mapwarp "pvp_n_1-2", "prontera", 156, 191; end; OnCorrectKill: getitem 909,1; // item reward .count--; if ( .count ) announce strcharinfo(0) +" killed 1 correct poring. "+ .count +" poring left", 1; else goto L_End; end; OnWrongKill: dispbottom "You have killed a wrong Poring, please try again!"; // feel like this is useless end; } pvp_n_1-2 mapflag nomobloot btw ... try to make the script that is easily modify by client ...
  19. prontera,156,172,1 script portal1 45,2,2,{ switch ( rand(3) ) { default: getitem 606,10; break; case 1: getitem 608,20; break; case 2: getitem 607,20; } warp "Save", 0,0; end; } no need OnTouch, if the npc already has 2,2 ... defined the radius, it automatically trigger as it is having an OnTouch
  20. update this script http://www.eathena.ws/board/index.php?showtopic=243843 prontera,159,178,5 script ksjdfskf3 100,{ if ( petstat(PET_CLASS) ) { mes "please return your pet into egg state to continue"; close; } mes "select a choice"; next; select "pick an egg", "list all eggs in your inventory", "list all friendly pets in your inventory"; if ( @menu == 1 ) { .@s = select( .menu$ ) -1; makepet .pet_id[.@s]; mes "you just got "+ getitemname( 9001 + .@s ); close; } else if ( @menu == 2 ) { getinventorylist; for ( .@i = 0; .@i < @inventorylist_count; .@i++ ) { if ( @inventorylist_card1[.@i] == -256 ) { dispbottom " ============= "; dispbottom "Pet ID : "+( .@id = @inventorylist_card2[.@i] + ( ( @inventorylist_card2[.@i] >= 0 )? 0 : 1 << 16 ) + @inventorylist_card3[.@i] * ( 1 << 16 ) ); // formula to calculate the pet ID that has inside in your inventory dispbottom "Pet egg : "+ getitemname( @inventorylist_id[.@i] ); query_sql "select class, level, equip from pet where pet_id = "+ .@id, .@class, .@level, .@equipped; dispbottom "Pet class : "+ getmonsterinfo( .@class, 0 ); dispbottom "Pet level : "+ .@level; dispbottom "Pet equipped : "+( ( .@equipped )? "Yes" : "No" ); } } } else if ( @menu == 3 ) { .@nb = query_sql( "select pet_id, egg_id, class, level, equip from pet where char_id = "+ getcharid(0), .@pet_id, .@egg_id, .@class, .@level, .@equipped ); for ( .@i = 0; .@i < .@nb; .@i++ ) { if ( countitem2( .@egg_id, 1, 0, 0, -256, ( ( .@pet_id % ( 1 << 16 ) - ( .@remainder15 = .@pet_id % ( 1 << 15 ) ) < ( 1 << 15 ) )? .@remainder15 : ( .@remainder15 - ( 1 << 15 ) ) ), .@pet_id >> 16, 0 ) ) { // reversing the formula of pet ID from your inventory dispbottom " ============= "; dispbottom "Pet ID : "+ .@pet_id[.@i]; dispbottom "Pet egg : "+ getitemname( .@egg_id[.@i] ); dispbottom "Pet class : "+ getmonsterinfo( .@class[.@i], 0 ); dispbottom "Pet level : "+ .@level[.@i]; dispbottom "Pet equipped : "+( ( .@equipped[.@i] )? "Yes" : "No" ); } } } close; OnInit: setarray .pet_id, 1002, 1113, 1031, 1063, 1049, 1011, 1042, 1035, 1167, 1107, 1052, 1014, 1077, 1019, 1056, 1057, 1023, 1026, 1110, 1170, 1029, 1155, 1109, 1101, 1188, 1200, 1275, 1815, 1245; // copy from pet_db.txt while ( .pet_id[.@i] ) { .pet_name$[.@i] = getmonsterinfo( .pet_id[.@i], 0 ); .@i++; } .menu$ = implode( .pet_name$, ":" ); end; } one hell crazy script, don't feel like expanding anymore at the moment try figure out yourself 1st the point here is, after list out every eggs in your inventory, talk to this npc, and create a menu list with those eggs that has reached level150 ( can retrieve by query_sql ) and exchange it with another egg
  21. a new technique has been found in this topic, by abusing SQL table to save the kills so this will effectively break the limit of player data storage, rendering it unlimited /* create table last_pvp_kill ( id int(11) unsigned primary key auto_increment, killercid int(11) unsigned not null, killedcid int(11) unsigned not null, count smallint(6) unsigned, key (killercid), key (killedcid) ) engine = innodb; */ - script jfhdksfjhsk -1,{ OnClock0000: query_sql "truncate last_pvp_kill;"; end; OnPCKillEvent: if ( killedrid == getcharid(3) ) end; if ( query_sql( "select count from last_pvp_kill where killercid = "+( .@killercid = getcharid(0) )+" and killedcid = "+( .@killedcid = getcharid( 0, rid2name( killedrid ) ) ), .@count ) ) { // check if the user is in the list if ( .@count == .max_skull ) { dispbottom "you have reach the max amount of skull for that player today"; end; } query_sql "update last_pvp_kill set count = count +1 where killercid = "+ .@killercid +" and killedcid = "+ .@killedcid; } else query_sql "insert into last_pvp_kill values ( null, "+ .@killercid +", "+ .@killedcid +", 1 )"; // insert into table getitem2 7420, 1,1,0,0, 254, 0, .@killedcid % ( 1 << 16 ), .@killedcid >> 16; end; OnInit: .max_skull = 3; end; }
  22. nope, if the user use wing of fly or teleportation skill ( acolyte skill or from skill given by creamy card ) the coordinate of the user will change, the script will continue execute as player has walk
  23. lol super unoptimized script I won't use that kind of script if I were you depends on his answer, this will be either database modification or source modification EDIT for below: xD ... gives you a rep up for being honest hahaha
  24. prontera,152,182,5 script Sample 757,{ mes "What you want to summon ?"; .@s = select( .menu$ ) -1; mes "Summon "+ .mob_name$[.@s] +" ?"; if ( select ( "Yes", "No" ) == 2 ) close; close2; monster "this", -1,-1, "--ja--", .mob_id[.@s], 1, ""; end; OnInit: setarray .mob_id, 1076, 1002, 1015; // configuration here while ( .mob_id[.@i] ) { .mob_name$[.@i] = getmonsterinfo( .mob_id[.@i], 0 ); .@i++; } .menu$ = implode( .mob_name$, ":" ); end; } dunno why but suddenly in the mood to optimized other member's scripts xD
×
×
  • Create New...