-
Posts
283 -
Joined
-
Last visited
-
Days Won
2
Content Type
Profiles
Forums
Downloads
Jobs Available
Server Database
Third-Party Services
Top Guides
Store
Everything posted by Kurofly
-
callshop "qshop"+.@i,1; npcshopattach "qshop"+.@i; Then you have to find qshop1, qshop2 and qshop3 to delete all the items from them Else you can replace this: // Add(<shop number>,<reward ID>,<reward amount>,<Zeny cost>,<point cost>, // <required item ID>,<required item amount>{,...}); // Shop number corresponds with order above (default is 1). // Note: Do NOT use a reward item more than once! Add(1,5022,1,0,0,7086,1,969,10,999,40,1003,50,984,2); Add(1,5032,1,0,0,1059,250,2221,1,2227,1,7063,600); Add(1,5027,1,0,0,2252,1,1036,400,7001,50,4052,1); Add(1,5045,1,0,0,2252,1,1054,450,943,1200); Add(2,1224,1,0,0,7297,30,969,10,999,50,714,10); Add(2,1225,1,0,0,7292,30,969,10,999,50,714,10); Add(3,531,1,3,0,512,1,713,1); Add(3,532,1,3,0,513,1,713,1); Add(3,533,1,3,0,514,1,713,1); Add(3,534,1,3,0,515,1,713,1); // -------------------------------------------------- for(set .@i,1; .@i<=getarraysize(.Shops$); set .@i,.@i+1) npcshopdelitem "qshop"+.@i,909; end; } to this: // Add(<shop number>,<reward ID>,<reward amount>,<Zeny cost>,<point cost>, // <required item ID>,<required item amount>{,...}); // Shop number corresponds with order above (default is 1). // Note: Do NOT use a reward item more than once! // -------------------------------------------------- for(set .@i,1; .@i<=getarraysize(.Shops$); set .@i,.@i+1) { npcshopitem "qshop"+.@i,512,10; npcshopdelitem "qshop"+.@i,512; } Add(1,5022,1,0,0,7086,1,969,10,999,40,1003,50,984,2); Add(1,5032,1,0,0,1059,250,2221,1,2227,1,7063,600); Add(1,5027,1,0,0,2252,1,1036,400,7001,50,4052,1); Add(1,5045,1,0,0,2252,1,1054,450,943,1200); Add(2,1224,1,0,0,7297,30,969,10,999,50,714,10); Add(2,1225,1,0,0,7292,30,969,10,999,50,714,10); Add(3,531,1,3,0,512,1,713,1); Add(3,532,1,3,0,513,1,713,1); Add(3,533,1,3,0,514,1,713,1); Add(3,534,1,3,0,515,1,713,1); end; } Doing so will erase the 3 qshops before adding items to them.
-
Hi again (if there's still somebody ). Work in progress... Don't hesitate to give your opinions/suggestions. And I really need a sprite for the shop NPC.
-
// Add(<shop number>,<reward ID>,<reward amount>,<Zeny cost>,<point cost>, // <required item ID>,<required item amount>{,...}); // Shop number corresponds with order above (default is 1). // Note: Do NOT use a reward item more than once! Add(1,5022,1,0,0,7086,1,969,10,999,40,1003,50,984,2); Add(1,5032,1,0,0,1059,250,2221,1,2227,1,7063,600); Add(1,5027,1,0,0,2252,1,1036,400,7001,50,4052,1); Add(1,5045,1,0,0,2252,1,1054,450,943,1200); Add(2,1224,1,0,0,7297,30,969,10,999,50,714,10); Add(2,1225,1,0,0,7292,30,969,10,999,50,714,10); Add(3,531,1,3,0,512,1,713,1); Add(3,532,1,3,0,513,1,713,1); Add(3,533,1,3,0,514,1,713,1); Add(3,534,1,3,0,515,1,713,1); You just have to edit these.
-
Hello rA ! I'm making a script which makes NPCs selling items instead of players so that they don't have to choose between playing and selling. I'd need a NPC sprite for those NPCs and I don't find anything of that kind in the official sprites. If anyone knows a cool sprite which makes you think about selling stuff, that'd be really cool. Thanks in advance
-
Version 1.0
57 downloads
This basically is a script wich allows an admin to use 2 commands: -'@var <variable> {<player/npc>}' : gives you the value of the variable -'@setvar <variable> <value> {<player/npc>}': Sets the variable to value The script will check wether you want to set an integer or string variable and acts accrodingly so no need to bother for this. If you don't enter enough parameters you will be informed on how the commands works so basically you can just type '@var' and '@setvar' in game to see how it works. I made this to help me finding out where my errors were in some scripts and also to directly go at a certain point of a quest. I found that pretty useful so I guess you may think it's useful too ^^ Wanted to say "Have fun!" but this script won't give you much fun so just hope that'll helpFree -
Try this: morocc,155,99,4 script party_dungeon_warper 96,{ .@nom$ = "["+strnpcinfo(0)+"]"; mes .@nom$; mes "Hello there, I'm in charge of managing the entrance to "+.dungeon_name$+"."; next; mes .@nom$; mes "I can only give access to a party of ^0000ff"+.min_party_size+" players or more^000000."; mes "Only the ^0000ffparty leader^000000 can ask for the entrance access."; mes ""; mes "^ff0000It costs "+.amount+" "+getitemname(.item)+" to reserve an access.^000000"; next; mes .@nom$; if (.Dungeon) { //someone is in the dungeon mes "A group of "+.PlayerCount+" players has currently access to the dungeon"; mes .AlivePlayerCount+" of them are still alive"; mes "^0000ff"+.WaitingCount+"^000000 group(s) are waiting for the entrance access."; } else mes "No one is currently in the dungeon."; mes ""; mes "What do you want to do?"; getpartymember getcharid(1),1 ; getpartymember getcharid(1),2; for ( .@i = 0; .@i < $@partymembercount; .@i++ ) if ( isloggedin( $@partymemberaid[.@i], $@partymembercid[.@i] ) ) .@count_online++; .@DungeonReserved = 0; for (.@i = 0 ; .@i < getarraysize(.PartyIDs) ; .@i++) if (getcharid(1) == .PartyIDs[.@i]) .@DungeonReserved = 1; switch(select("Enter the dungeon:Reserve access:Leave")) { next ; mes .@nom$; case 1: if (!.@DungeonReserved) { //the dugeon isn't reserved yet mes "You didn't reserve access yet."; mes "Please reserve access before entering the dungeon."; close; } else if (.PartyIDs[0] != getcharid(1)) { //dungeon reserved but in the waiting room mes "You are in the waiting list sir, you cannot enter the dungeon yet."; mes "Your position in the waiting list : ^0000ff"+callsub(S_Position,getcharid(1))+"^000000."; mes "You will be informed when you can enter the dungeon."; close; } else if (@dungeon == 0) { //player already died in the dungeon mes "You already died in the dungeon and so cannot enter it again."; close; } else if (@warped == 1) { //player warped out of the dungeon mes "You warped out of the dungeon and so cannot enter it again."; close; } @warped = 1; .PlayerCount = .@count_online; .EnteredPlayers++ ; .AlivePlayerCount++; warp .warpzone$,.warpx,.warpy; end; case 2: if (.@DungeonReserved) { //has already reserved access mes "You already reserved access to the dungeon."; mes "Your position in the waiting list : ^0000ff"+callsub (S_Position,getcharid(1))+"^000000."; if (callsub (S_Position,getcharid(1))) mes "You will be informed when you can enter the dungeon."; close; } else if (.@count_online < .min_party_size) { //not enough players online or not in a party mes "You need a party of "+.min_party_size+" players online to reserve the dungeon."; close; } else if (getpartyleader(getcharid(1),1) != getcharid(3)) { //not party leader mes "Only the party leader can reserve access to the dungeon."; close; } else if (getarraysize(.PartyIDs)) { //people already waiting setarray .PartyIDs[getarraysize(.PartyIDs)] , getcharid(1); mes "You successfully reserved the entrance."; mes "Your position in the waiting list : ^0000ff"+callsub (S_Position,getcharid(1))+"^000000."; mes "You will be informed when you can enter the dungeon."; close; } if (countitem(.item) < .amount) { mes "You don't have "+.amount+" "+getitemname(.item)+"."; mes "^ff0000It costs "+.amount+" "+getitemname(.item)+" to reserve an access.^000000"; close; } delitem .item,.amount; .Dungeon = 1; setarray .PartyIDs[0] , getcharid(1); mes "^ff0000You can now enter the dungeon.^000000"; mes "If none of the party members enter the dungeon before "+.delay+" minutes, the dungeon will be automatically closed."; initnpctimer ; .TimeDelay = 0; addrid(2,0,.PartyIDs[0]) ; @dungeon = 1 ; @warped = 0; end; case 3: end; } OnTimer300000: .TimeDelay = 1; if (.AlivePlayerCount == 0) callsub S_NextParty; end; S_Position: for (.@i = 0 ; .@i < getarraysize(.PartyIDs) ; .@i++) if (.PartyIDs[.@i] == getarg(0)) .@j = .@i; return .@j; S_CheckCount: debugmes "checkcount"; if (.AlivePlayerCount == 0 /*|| (.Delay && .AlivePlayerCount == .EnteredPlayers)*/) callsub S_NextParty; return; S_NextParty: addrid(2,0,.PartyIDs[0]); announce "Everyone is dead, you lost access to the dungeon."; deletearray .PartyIDs[0],1; if (.PartyIDs[0]) { detachrid ; addrid(2,0,.PartyIDs[0]); announce "Your party can now enter the dungeon.",bc_self; announce "Please enter it before a "+.delay+" minutes delay, else you will loose access.",bc_self; initnpctimer; .TimeDelay = 0; } end; OnPCDieEvent: getmapxy(.@map$,.@x,.@y,0); if (.@map$ == .warpzone$) @dungeon = 0 ; .AlivePlayerCount -= 1 ; warp .exitzone$,.exitx,.exity ; callsub S_CheckCount; end; OnPCLogoutEvent: //if player logs out in the dungeon, he's counted as dead getmapxy(.@map$,.@x,.@y,0); if (.@map$ == .warpzone$) @dungeon = 0 ; .AlivePlayerCount -= 1 ; callsub S_CheckCount; end; OnPCLoginEvent: //if player logs in in the dungeon, he's warped out of it getmapxy(.@map$,.@x,.@y,0); if (.@map$ == .warpzone$) warp .exitzone$,.exitx,.exity; end; OnInit: //===============================set this up========================================== .dungeon_name$ = "the Fire dungeon"; .item = 671; //item required (gold coin) .amount = 1; //amount required .min_party_size = 1; //minimum amount of players needed to enter the dungeon .delay = 5; //delay after wich dungeon is closed if all the players in it are dead .warpzone$ = "mus_arena01" ; .warpx = 62 ; .warpy = 48; //entrance warp coordinates .exitzone$ = "mus_arena03" ; .exitx = 116 ; .exity = 193; //exit coordinates //=============================end of user setup====================================== mapwarp .warpzone$,.exitzone$,.exitx,.exity; .Dungeon = .PlayerCount = .AlivePlayerCount = .WaitingCount = 0; setarray .PartyIDs[0],0; } It's not the final product cause I couldn't test it to its limits so it may have bugs xd tell me if it works for you and if you want to add/change anything. don't forget to edit the user setup, the NPC location and the NPC sprite ID.
-
I really want to help you but I keep reading again and again your topic and I still don't understand >.< Here is what I understood, please tell me if I'm wrong: So basically you want a NPC that would sell items from players so that they don't have to keep shouting "BUY MY HAT PLZ" in the city all the time. The items you can sell are pre-defined and are bought with TCGs, transactions are done by mail. Items only last 24 hours and then are turned back to seller if not sold There's a log for GMs. Here is what I didn't understand ^^: Why do you want to set a password? Of what use would it be? Once the 24 hours delay passes, do you want the first player to go see the npc to get the right to sell his items or do you want to have a queue system? That's all for the questions now^^. If you don't mind giving me some more details, I'd be glad to help you. Thx
-
@request only one miniboss/mvp allowed in WoE
Kurofly replied to donkeyg's question in Script Requests
I don't know if that'll work because I can't see how the 'CheckItems' func works since it's not diplayed there. function LimitItems { switch( getarg(0) ){ // Case <zone>: return CheckItems( <Item>,<Amount>,<Item>,<Amount>,.....,<Item>,<Amount> ); Case 0: return CheckItems( 607,1,608,1,2742,1,2541,1,4241,1,610,1,607,1,608,1,4174,1,4047,1,4054,1,4169,1,4236,1,4359,1,4425,1,4372,1,4147,1,4145,1,4168,1,4386,1,4142,1,4134,1,4137,1,4123,1,4330,1,4441,1,4324,1,4408,1,4128,1,4363,1,4365,1,4430,302,1,4305,1,4407,1,4374,1,4361,1,4352,1 ); Case 1: return CheckItems( 13017,1,1230,1,4236,1,4359,1,4425,1,4372,1,4147,1,4145,1,4168,1,4386,1,4142,1,4134,1,4137,1,4123,1,4330,1,4441,1,4324,1,4408,1,4128,1,4363,1,4365,1,4430,1,4263,1,4403,1,4318,1,4419,1,4376,1,4357,1,4276,1,4146,1,4132,1,4131,1,4143,1,4135,1,4144,1,4148,1,4121,1,4342,1,4367,1,4302,1,4305,1,4407,1,437 So basically you just would have to change all the '0' in amount and replace them by '1'. If that doesn't work please find the CheckItems function for me and I'll make it work. -
Hello there, me again I tried out a few things today and everything I wanted to do worked fine so that's cool for you ^^ Now here is what I plan to do: -In a defined area and if the amount of shops doesn't exceed a certain value, a player can create his own autoshop by using the command '@shop'. -He'll select the items he wants to sell by selling them to a fake shop which then ask him how much he wants to sell each item. -Once done, the shop will be created in the current location of the player and players will be able to buy the items. -You can give your shop a name since players have to click on the waiting room just above the shop to enter it. -Of course you can manage your shop by adding, deleting items or changing their prices by clicking it or using commands like '@shopadd' or '@shopchange' However, I still have a few problems: -Players can't see how many of each item can be bought, they'll only be warned if they buy too much -I don't have a nice sprite for the shop npc -Normally you can't sell refined or slotted items. I can solve this problem but if I do, I'll have no way to inform players the current item is slotted or refined. *Using this system, I can also add a '@whosells' commands which would list the shops selling a particular item.
-
Need Help for Disguise Event Random Reward Either of the 2Items
Kurofly replied to balanar12321's question in Scripting Support
setarray @items[0] , 14232 , 7227; getitem @items[rand(getarraysize(@items))],1; You can add as many items as you want by adding their ids to @items. if you want to add items with different amounts, you can do this: setarray @items[0] , 14232 , 7227; setarray @amounts[0] , 1 , 1; @rand = rand(getarraysize(@items)) getitem @items[@rand],@amounts[@rand]; -
You just have to modify this line: dispbottom "You've gained one point! after killing [Player Name] Your total is ["+pk_points+] PK point(s)."; to this: dispbottom "You've gained one point! after killing "+rid2name(killedrid)+"] Your total is ["+pk_points+] PK point(s).";
-
In fact there are some script commands like 'npcshopitem', 'npcshopadditem' and 'npcshopdelitem' which could allow you to do so. Making an invisible shop and using the npcshopattach func would allow you to give money back to the seller using OnBuyItem label But there are still a few problems: -You can't create the NPCs so you would have to place a limited amount of NPCs in a defined area. -I don't know a convenient way to choose the items you want to sell other than inputting the ids and this can be really boring. Even so there's also a good advantage: -You can sell as many items as you want using npcshopadditem when an item is sold. -And of course you don't have to sell items yourself. This is something I've been wanting to do for a while so I'll try to make something for you. But I want to make it the most convenient possible so I'll try to make something really good and so I'll need time to. Sorry for my english too
-
I started to work on the script this evening, here is what I planned to do, please tell me if that's what you're looking for: the NPC will allow a party leader of a 3 or more online players group to go into the dungeon untill every member is dead. Costs 1 gold coin. Only one group can be allowed to be in the dungeon at the same time. If a group is already in the dungeon, you will be placed in a queue and informed when t's your turn to go into the dungeon. -Once a group is given access, if no member goes into the dungeon after a certain delay, the access will be given to the next group. -If someone dies in the dungeon, he and every of his characters cannot access it again. -If someone logs out in the dungeon, he's counted as dead and so cannot enter it again. On relog he'll be warped to somewhere else. -After a certain delay, if only 2 of 3 members entered the dungeon but died in, the dungeon closes for the current group. Is it good for you or do you want to modify/add anything? I don't think I'll have time to script this week so you may have to wait for the week-end to get it, sorry
-
I'm on ra so I don't know if that'll work with you but we can at least try. Is the exit a NPC or a warp?
-
I need a few details because I'm an idiot I think making an instance is not necessary because what you want to do seems pretty basic,but it depends on how you want to do it. When you make a reservation and get access to the dungeon, would you have access to it for a duration or till everybody dies? If you die in the dungeon can you still access it? Is the gold coin required for each party member or just for the party leader? Do you really want it to be a quest (maybe with a reward) or just an access giving. With this, I think I'll be able to make what you want.
-
I'm back! Here it is: //##################################################################### //# # //# ##### # ######## # # ##### ## # # # //# # ### ## # # # # # # ### # //# #### # # ## ###### #### # # # # # # //# # ####### ## # # # # # # ####### # //# ##### # # ## # # ##### # ## # # # //# # //##################################################################### //=========== Script for eathena Users ====================// //MVP Arena made by Rikimaru on rathena.org ==============// //=========================================================// //======== Description ====================================// //== Easy made MVP Arena with all MVP's except the new ====// //== Renewal MVP's. Do not remove the Credits =============// //== Price to spawn 1 MVP is 50.000.000 Zenny =============// //== Price for Thanatos or LHZ MVP's is 250.000.000 Zenny =// //== Do not Remove theese Credits =========================// //================= Version : =============================// //============= V. 1.0 Bug Fixes by Rikimaru ==============// //============= V. 1.1 Shorted by llchrisll //=========== Credits End =================================// // // //===================== Script of the MVP Warper ==========// prontera,164,140,3 script MVP Warper 619,{ mes "[ MVP Warper ]"; mes "I can warp you to the MVP Room,do you want to go there?"; next; switch(select("Yes!:No!")) { case 1: mes "[ MVP Warper ]"; mes "Okay I'm going to warp you."; warp "guild_vs1",50,50; close; case 2: mes "[ MVP Warper ]"; mes "Okay bye!"; close; } } //========================= First Script End =============// //================== MVP Summoner ========================// guild_vs1,50,57,5 script MVP Summoner 790,{ mes "[ MVP Summoner ]"; mes "Hello,I'm able to spawn MVP's."; mes "Which MVP do you want me to spawn?"; mes "[ MVP List ]"; mes "1 Bacsojin "+.zeny[8]+" Zeny"; mes "1 Baphomet "+.zeny[9]+" Zeny"; mes "1 Dark Lord "+.zeny[8]+" Zeny"; mes "1 Evil Snake "+.zeny[10]+" Zeny"; mes "1 Detale "+.zeny[11]+" Zeny"; mes "1 Dracula "+.zeny[12]+" Zeny"; mes "1 Drake "+.zeny[13]+" Zeny"; mes "1 Edgga "+.zeny[14]+" Zeny"; mes "1 Golden Bug "+.zeny[15]+" Zeny"; mes "1 Incant Samurai "+.zeny[16]+" Zeny"; mes "1 Lord Of Death "+.zeny[17]+" Zeny"; mes "1 Maya "+.zeny[18]+" Zeny"; mes "1 Mistress "+.zeny[19]+" Zeny"; mes "1 Moonlight "+.zeny[12]+" Zeny"; mes "1 Orc Hero "+.zeny[8]+" Zeny"; mes "1 Pharaon "+.zeny[8]+" Zeny"; mes "1 Phreeoni "+.zeny[10]+" Zeny"; mes "1 RSX "+.zeny[12]+" Zeny"; mes "1 Tao Gunka "+.zeny[15]+" Zeny"; mes "1 Stormy Knight "+.zeny[11]+" Zeny"; mes "[ Mini-Boss List ]"; mes "1 Angeling "+.zeny[7]+" Zeny."; mes "1 Archangeling "+.zeny[5]+" Zeny."; mes "1 Bloody Knight "+.zeny[5]+" Zeny."; mes "1 Chimera "+.zeny[5]+" Zeny."; mes "1 Dragon Fly "+.zeny[5]+" Zeny."; mes "1 Eclipse "+.zeny[5]+" Zeny."; mes "1 Ghostring "+.zeny[7]+" Zeny."; mes "1 Giant Whisper "+.zeny[4]+" Zeny."; mes "1 Goblin Leader "+.zeny[4]+" Zeny."; mes "1 Gryphoon "+.zeny[4]+" Zeny."; mes "1 Toad "+.zeny[4]+" Zeny."; mes "1 Vagabond Wolf "+.zeny[4]+" Zeny."; mes "1 Vocal "+.zeny[4]+" Zeny."; mes "1 Dark Ilussion "+.zeny[4]+" Zeny."; next; set .@m,select(.smenu$) - 1; if (getd(.mobname$[.@m]+"_count") >= .MaxSpawnCount) { if (getd(.mobname$[.@m]+"_delay")-gettimetick(2) > 0) { mes "[ MVP Summoner ]"; mes "You have already spawned "+.MaxSpawnCount+" "+.mobname$[.@m]+"."; mes "You have to wait "+(getd(.mobname$[.@m]+"_delay")-gettimetick(2))/60+" minutes "+(getd(.mobname$[.@m]+"_delay")-gettimetick(2))%60+" seconds to spawn this MVP again."; close; } else setd .mobname$[.@m]+"_count" , 0; } mes "[ MVP Summoner ]"; mes "Okay let me check if you have enough Zeny."; if( Zeny < .zeny[.mobze[.@m]] ) { mes "You don't have enough money"; close; } else { close2; set Zeny, Zeny - .zeny[.mobze[.@m]]; atcommand "@spawn "+.mobid[.@m] + " "+.mobam[.@m]; setd .mobname$[.@m]+"_count" , getd(.mobname$[.@m]+"_count") + 1; setd .mobname$[.@m]+"_delay" , gettimetick(2)+(.Timedelay*60); npctalk "[ MVP Summoner]: "+getmonsterinfo(.mobid[.@m],0) +" Spawned!"; end; } OnInit: .MaxSpawnCount = 2; //maximum amount of MVps you can spawn each .Timedelay minutes. .Timedelay = 3; //delay before you can spawn more MVPs (in minutes) setarray .zeny[1],10000000,5000000,30000000,200000,300000,700000,400000,500000,15000000,600000,2000000,800000,550000,700000,1000000,800000,1500000,700000,900000; // 50m,250m Zeny // Mob IDs setarray .mobid[0],1518,1039,1272,1529,1719,1389,1115,1086,1429,1373,1147,1059,1150,1087,1038,1157,1159,1623,1583,1251,1096,1388,1268,1283,1091,1093,1120,1186,1299,1259,1402,1092,1088,1302; // Mob Spawn Amount setarray .mobam[0],1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1; // Price: Entry as Index from .zeny // 1 = .zeny[1] - 2 = .zeny[2] setarray .mobze[0],8,9,8,10,11,12,13,14,15,16,17,18,19,12,8,8,10,12,15,15,11,7,5,5,5,5,5,7,4,4,4,4,4,4; set .smenu$,""; for( set .@s,0; .@s < getarraysize(.mobid); set .@s,.@s + 1) { // Skips an Monster if it does not exist in the db if(getmonsterinfo(.mobid[.@s],0) == "" || getmonsterinfo(.mobid[.@s],0) == "null") continue; // else adding it to the menu set .smenu$,.smenu$ + "- "+getmonsterinfo(.mobid[.@s],0) + ( (.mobid[.@s+1] == 0)?"":":"); setarray .mobname$[.@s],getmonsterinfo(.mobid[.@s],0); } end; } guild_vs1,31,68,5 duplicate(MVP Summoner) MVP Summoner#1 790 guild_vs1,31,31,5 duplicate(MVP Summoner) MVP Summoner#2 790 guild_vs1,68,31,5 duplicate(MVP Summoner) MVP Summoner#3 790 guild_vs1,68,68,5 duplicate(MVP Summoner) MVP Summoner#4 790 So players can spawn twice each MVP but will have to wait 30 minutes to spawn more of the same MVP. I kept the structure as it was and just added a few lines. I made it so that if a player spawn only one MVP but wait 30 minutes to spawn again the same MVP, he'll be able to spawn it twice. You can change the maximum amount of MVP you can spawn and the delay by editting these lines: .MaxSpawnCount = 2; //maximum amount of MVps you can spawn each .Timedelay minutes. .Timedelay = 3; //delay before you can spawn more MVPs (in minutes) Works fine for me, let me know if you want to change or improve anything. Hope it fits your expectations.
-
Ahhhh ok this time I get it. I don't know if I'll have time to do it now but in worst case you'll have it tomorrow in the evening. See you.
-
So you mean instead of spawning 1 MVP you would spawn 2 MVPs at a time and then you would have to wait 30minutes to spawn 2 other MVPs? If that's what you want, then it's even simplier: //##################################################################### //# # //# ##### # ######## # # ##### ## # # # //# # ### ## # # # # # # ### # //# #### # # ## ###### #### # # # # # # //# # ####### ## # # # # # # ####### # //# ##### # # ## # # ##### # ## # # # //# # //##################################################################### //=========== Script for eathena Users ====================// //MVP Arena made by Rikimaru on rathena.org ==============// //=========================================================// //======== Description ====================================// //== Easy made MVP Arena with all MVP's except the new ====// //== Renewal MVP's. Do not remove the Credits =============// //== Price to spawn 1 MVP is 50.000.000 Zenny =============// //== Price for Thanatos or LHZ MVP's is 250.000.000 Zenny =// //== Do not Remove theese Credits =========================// //================= Version : =============================// //============= V. 1.0 Bug Fixes by Rikimaru ==============// //============= V. 1.1 Shorted by llchrisll //=========== Credits End =================================// // // //===================== Script of the MVP Warper ==========// prontera,164,140,3 script MVP Warper 619,{ mes "[ MVP Warper ]"; mes "I can warp you to the MVP Room,do you want to go there?"; next; switch(select("Yes!:No!")) { case 1: mes "[ MVP Warper ]"; mes "Okay I'm going to warp you."; warp "guild_vs1",50,50; close; case 2: mes "[ MVP Warper ]"; mes "Okay bye!"; close; } } //========================= First Script End =============// //================== MVP Summoner ========================// guild_vs1,50,57,5 script MVP Summoner 790,{ mes "[ MVP Summoner ]"; if ((gettimetick(2)-LastSpawnedTime) < (30*60)) { mes "You already spawned 2 MVPs, you have to wait "+((MVPTimer-gettimetick(2))/60)+" minutes "+((MVPTimer-gettimetick(2))%60)+" seconds to spawn more" ; close; } mes "Hello,I'm able to spawn MVP's."; mes "Which MVP do you want me to spawn?"; mes "[ MVP List ]"; mes "2 Bacsojin "+.zeny[8]+" Zeny"; mes "2 Baphomet "+.zeny[9]+" Zeny"; mes "2 Dark Lord "+.zeny[8]+" Zeny"; mes "2 Evil Snake "+.zeny[10]+" Zeny"; mes "2 Detale "+.zeny[11]+" Zeny"; mes "2 Dracula "+.zeny[12]+" Zeny"; mes "2 Drake "+.zeny[13]+" Zeny"; mes "2 Edgga "+.zeny[14]+" Zeny"; mes "2 Golden Bug "+.zeny[15]+" Zeny"; mes "2 Incant Samurai "+.zeny[16]+" Zeny"; mes "2 Lord Of Death "+.zeny[17]+" Zeny"; mes "2 Maya "+.zeny[18]+" Zeny"; mes "2 Mistress "+.zeny[19]+" Zeny"; mes "2 Moonlight "+.zeny[12]+" Zeny"; mes "2 Orc Hero "+.zeny[8]+" Zeny"; mes "2 Pharaon "+.zeny[8]+" Zeny"; mes "2 Phreeoni "+.zeny[10]+" Zeny"; mes "2 RSX "+.zeny[12]+" Zeny"; mes "2 Tao Gunka "+.zeny[15]+" Zeny"; mes "2 Stormy Knight "+.zeny[11]+" Zeny"; mes "[ Mini-Boss List ]"; mes "2 Angeling "+.zeny[7]+" Zeny."; mes "2 Archangeling "+.zeny[5]+" Zeny."; mes "2 Bloody Knight "+.zeny[5]+" Zeny."; mes "2 Chimera "+.zeny[5]+" Zeny."; mes "2 Dragon Fly "+.zeny[5]+" Zeny."; mes "2 Eclipse "+.zeny[5]+" Zeny."; mes "2 Ghostring "+.zeny[7]+" Zeny."; mes "2 Giant Whisper "+.zeny[4]+" Zeny."; mes "2 Goblin Leader "+.zeny[4]+" Zeny."; mes "2 Gryphoon "+.zeny[4]+" Zeny."; mes "2 Toad "+.zeny[4]+" Zeny."; mes "2 Vagabond Wolf "+.zeny[4]+" Zeny."; mes "2 Vocal "+.zeny[4]+" Zeny."; mes "2 Dark Ilussion "+.zeny[4]+" Zeny."; next; set .@m,select(.smenu$) - 1; mes "[ MVP Summoner ]"; mes "Okay let me check if you have enough Zeny."; if( Zeny < .zeny[.mobze[.@m]] ) { mes "You don't have enough money"; close; } else { close2; set Zeny, Zeny - .zeny[.mobze[.@m]]; atcommand "@spawn "+.mobid[.@m] + " "+.mobam[.@m]; LastSpawnedTime = gettimetick(2); npctalk "[ MVP Summoner]: "+getmonsterinfo(.mobid[.@m],0) +" Spawned!"; end; } OnInit: setarray .zeny[1],10000000,5000000,30000000,200000,300000,700000,400000,500000,15000000,600000,2000000,800000,550000,700000,1000000,800000,1500000,700000,900000; // 50m,250m Zeny // Mob IDs setarray .mobid[0],1518,1039,1272,1529,1719,1389,1115,1086,1429,1373,1147,1059,1150,1087,1038,1157,1159,1623,1583,1251,1096,1388,1268,1283,1091,1093,1120,1186,1299,1259,1402,1092,1088,1302; // Mob Spawn Amount setarray .mobam[0],2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2; // Price: Entry as Index from .zeny // 1 = .zeny[1] - 2 = .zeny[2] setarray .mobze[0],8,9,8,10,11,12,13,14,15,16,17,18,19,12,8,8,10,12,15,15,11,7,5,5,5,5,5,7,4,4,4,4,4,4; set .smenu$,""; for( set .@s,0; .@s < getarraysize(.mobid); set .@s,.@s + 1) { // Skips an Monster if it does not exist in the db if(getmonsterinfo(.mobid[.@s],0) == "" || getmonsterinfo(.mobid[.@s],0) == "null") continue; // else adding it to the menu set .smenu$,.smenu$ + "- "+getmonsterinfo(.mobid[.@s],0) + ( (.mobid[.@s+1] == 0)?"":":"); } end; } guild_vs1,31,68,5 duplicate(MVP Summoner) MVP Summoner#1 790 guild_vs1,31,31,5 duplicate(MVP Summoner) MVP Summoner#2 790 guild_vs1,68,31,5 duplicate(MVP Summoner) MVP Summoner#3 790 guild_vs1,68,68,5 duplicate(MVP Summoner) MVP Summoner#4 790
-
Honestly I have no idea why this is happening to you. Maybe you have a problem with the items themselves, did you try to make each item to make sure no one is bugged? If there's no problem with the items, I think you should try to post your topic in the source support since this would be neither a scripting nor a client problem. I'm sorry but I can't do any better, your problem is really weird. Good luck in solving it!
-
Are those boots I see on the screenshot in your cashshop? Because they're not in mine. morocc,162,93,30 cashshop Manong Tindero 833,715:600,716:600,717:600,1025:200,7136:500,7135:500,7137:500,7138:500,7139:500 30 is not a good value for the facing, even though that shouldn't cause this kind of problem.
-
works fine for me. Are you on rAthena?
-
Guess that's how it should be: //<?> -o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o \\ // Blacksmith/Card Removal Npc V.2.0 \\ // by Luther \\ //<?> -o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o \\ // Blacksmith/Card Removal Npc V.2.0 \\ // by Luther \\ // Credit To : Mytzer,TyrNemisis,ShadowMaster and \\ // who ever made the Item Identifyer Deckard Cain. \\ // Whoms Scripts were used in making this npc. \\ // Also ToastOfDoom and Chachi911 for helping Debug it\\ // (V.2.0 Uses the original eAthena Refine Script that\\ //can have its rates configured in the refine_db.txt) \\ // -o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o \\ prontera,166,231,3 script Refiner 85,{ set .soundef_number, .soundef_number + 1; switch (.soundef_number) { case 1: soundeffect "hollen2.wav",0; break; case 2: soundeffect "hollen3.wav",0; break; case 3: soundeffect "hollen4.wav",0; break; case 4: soundeffect "hollen5.wav",0; break; } if (.soundef_number >= 3) { set .soundef_number, 0; } end; callfunc "refinemainx","Advanced Hollgrehenn",1; end; } //============================================================ //= Main Refiner Function //============================================================ //= To allow auto safe refining/multiple refining set the //= 0 after Melchior to '1' in the function call. //= To Change the Name of the NPC, just Edit it in the //= Beginning of the Script and the Melchior part of the //= Call function. //============================================================ function script refinemainx { set .@features,getarg(1); mes "[" + getarg(0) + "]"; mes "I can Refine, Extract Cards, Identify Items, and Repair Broken Items ^FF0000which of my services are you interested in?^000000"; menu "Refining",L_Refine,"Item Repair",L_Repair; L_Refine: mes "refining eh?"; next; mes "[" + getarg(0) + "]"; mes "I can refine all kinds of weapons, armor and equipment, so let me"; mes "know what you want me to refine."; next; setarray .@position$[1], "Head","Body","Left hand","Right hand","Robe","Shoes","Accessory 1","Accessory 2","Head 2","Head 3"; set .@menu$,""; for( set .@i,1; .@i <= 10; set .@i,.@i+1 ) { if( getequipisequiped(.@i) ) set .@menu$, .@menu$ + .@position$[.@i] + "-" + "[" + getequipname(.@i) + "]"; set .@menu$, .@menu$ + ":"; } set .@part,select(.@menu$); if(!getequipisequiped(.@part)) { mes "[" + getarg(0) + "]"; mes "You're not wearing"; mes "anything there that"; mes "I can refine."; emotion 6; close; } //Check if the item is refinable... if(!getequipisenableref(.@part)) { mes "[" + getarg(0) + "]"; mes "I don't think I can"; mes "refine this item at all..."; close; } //Check if the item is identified... (Don't know why this is in here... but kept it anyway) if(!getequipisidentify(.@part)) { mes "[" + getarg(0) + "]"; mes "You can't refine this"; mes "if you haven't appraised"; mes "it first. Make sure your"; mes "stuff is identified before"; mes "I can refine it."; close; } //Check to see if the items is already +10 if(getequiprefinerycnt(.@part) >= 10) { mes "[" + getarg(0) + "]"; mes "I can't refine this"; mes "any more. This is as"; mes "refined as it gets!"; close; } set .@refineitemid, getequipid(.@part); // save id of the item set .@refinerycnt, getequiprefinerycnt(.@part); //save refinery count switch(getequipweaponlv(.@part)){ case 0: //Refine Armor set .@price,2000; set .@material,985; set .@safe,4; break; case 1: //Refine Level 1 Weapon set .@price,50; set .@material,1010; set .@safe,7; break; case 2: //Refine Level 2 Weapon set .@price,200; set .@material,1011; set .@safe,6; break; case 3: //Refine Level 3 Weapon set .@price,5000; set .@material,984; set .@safe,5; break; case 4: //Refine Level 4 Weapon set .@price,20000; set .@material,984; set .@safe,4; break; case 5: //Refine other stuff? set .@price,2000; set .@material,985; set .@safe,4; break; } if(.@features != 1) { mes "[" + getarg(0) + "]"; mes "To refine this I need"; mes "one ^003366"+getitemname(.@material)+"^000000 and"; mes "a service fee of " + .@price + " Zeny."; mes "Do you really wish to continue?"; next; if(select("Yes:No") == 2){ mes "[" + getarg(0) + "]"; mes "Yeah..."; mes "There's no need to"; mes "rush. Take your time."; close; } if(getequippercentrefinery(.@part) < 100) { mes "[" + getarg(0) + "]"; mes "Oh no! If I continue to"; mes "refine this, there's a risk it could"; switch(.@material) { case 985: mes "be destroyed! That means that ^FF0000this equipment^000000, and ^FF0000any cards^000000 or special properties added to this armor, ^FF0000will be gone^000000."; break; default: mes "be destroyed, and you'd ^FF0000lose the weapon^000000, any ^FF0000cards in the weapon^000000,"; mes "or any added special properties."; break; } next; mes "["+getarg(0)+"]"; mes "I can't make it any clearer."; mes "Once a weapon is destroyed,"; mes "there's no getting it back."; mes "You really have a chance to"; mes "^FF0000lose this weapon^000000 forever."; mes "Do you still want to refine?"; next; if(select("Yes:No") == 2){ mes "[" + getarg(0) + "]"; mes "I completely agree..."; mes "I might be a great refiner, but sometimes even I make mistakes."; close; } } if((countitem(.@material) < 1) || (Zeny < .@price)) { mes "[" + getarg(0) + "]"; mes "You don't seem to have"; mes "enough Zeny or "+getitemname(.@material)+"..."; mes "Go get some more. I'll be"; mes "here all day if you need me."; close; } set Zeny,Zeny-.@price; delitem .@material,1; if(getequipisequiped(.@part) == 0) { // hacker has removed the item (not changed, why?) mes "[" + getarg(0) + "]"; mes "Look here... you don't have any Items on..."; close; } if(getequiprefinerycnt(.@part) != .@refinerycnt || getequipid(.@part) != .@refineitemid) { // hacker has changed the item mes "[" + getarg(0) + "]"; Emotion e_an; mes "Wait a second..."; mes "Do you think I'm stupid?!"; mes "You switched the item while I wasn't looking! Get out of here!"; close; } if(getequippercentrefinery(.@part) <= rand(100)) { failedrefitem .@part; mes "[" + getarg(0) + "]"; set .@emo,rand(1,5); if (.@emo == 1) { Emotion e_cash; } else { Emotion e_swt; } set .@lose,rand(1,3); if (.@lose == 1) { mes "OH! MY GOD!"; mes "Damn it! Not again!"; mes "I'm terribly sorry, but you know practice does make perfect."; mes "Um, right? Heh heh..."; } else if(.@lose == 2) { mes "Nooooooo!"; mes "It broke!"; mes "I-I'm sorry!"; } else { mes "Crap!"; mes "It couldn't take"; mes "much more tempering!"; mes "Sorry about this..."; } close; } mes "["+getarg(0)+"]"; successrefitem .@part; Emotion e_heh; set .@win,rand(1,3); if (.@win == 1) { mes "Perfect!"; mes "Heh heh!"; mes "Once again,"; mes "flawless work"; mes "from the master~"; } else if(.@win == 2) { mes "Success...!"; mes "Yet again, my amazing"; mes "talent truly dazzles"; mes "and shines today."; } else { mes "Heh heh!"; mes "I'm all done."; mes "No doubt, my work is"; mes "to your satisfaction."; mes "Sheer, utter perfection~"; } close; } // New Refining Functions ======================== if(getequiprefinerycnt(.@part) < .@safe) { mes "[" + getarg(0) + "]"; mes "I can refine this to the safe limit or a desired number of times... it's your choice..."; next; set .@menu2,select("To the safe limit please.","I'll decide how many times.","I've changed my mind..."); } else set .@menu2,2; switch(.@menu2){ case 1: set .@refinecnt,.@safe - getequiprefinerycnt(.@part); break; case 2: next; mes "[" + getarg(0) + "]"; mes "So how many times would you like me to refine your item?"; next; input .@refinecnt; set .@refinecheck,.@refinecnt + getequiprefinerycnt(.@part); if (.@refinecnt < 1 || .@refinecheck > 10) { mes "[" + getarg(0) + "]"; mes "I can't refine this item that many times."; close; } if(.@refinecheck > .@safe) { set .@refinecheck,.@refinecheck - .@safe; mes "[" + getarg(0) + "]"; mes "This will try to refine the equipment " + .@refinecheck + " times past the safe limit. Your equipment may be destroyed... is that ok?"; next; if(select("Yes...","No...") == 2){ mes "[" + getarg(0) + "]"; mes "You said so..Hmm so be it..."; close; } } break; case 3: next; mes "[" + getarg(0) + "]"; mes "You said so..Hmm so be it..."; close; } set .@fullprice,.@price * .@refinecnt; mes "[" + getarg(0) + "]"; mes "That will cost you " + .@refinecnt + " " + getitemname(.@material) + " and " + .@fullprice + " Zeny. Is that ok?"; next; if(select("Yes","No...") == 2){ mes "[" + getarg(0) + "]"; mes "You said so..Hmm so be it..."; close; } if(countitem(.@material) < .@refinecnt || Zeny < .@fullprice) { mes "[" + getarg(0) + "]"; mes "Is that all you got? Unfortunately I can't work for you at a lower price. Try putting yourself in my shoes."; close; } set Zeny,Zeny - .@fullprice; delitem .@material,.@refinecnt; while(.@refinecnt){ if (getequipisequiped(.@part) == 0) { mes "[" + getarg(0) + "]"; mes "Look here... you don't have any Items on..."; close; } if (getequipid(.@part) != .@refineitemid || (.@menu2 == 1 && getequippercentrefinery(.@part) < 100)) { mes "[" + getarg(0) + "]"; mes "Clan... No, but Did you imagine I could be so stupid !?!"; mes "You have changed it..."; mes "Go out before I stun you with my Hammer!!!"; close; } mes "Clang, clang!!!"; if(.@menu2 == 2 && getequippercentrefinery(.@part) <= rand(100)) { failedrefitem .@part; emotion 23; mes "[" + getarg(0) + "]"; mes "WAHHHH!!! I'm so sorry... I warned you this could happen..."; set .@refinecnt,.@refinecnt - 1; if(.@refinecnt == 0) close; mes "Here's the unused Zeny and Material back..."; getitem .@material,.@refinecnt; set .@fullprice,.@refinecnt * .@price; set Zeny,Zeny + .@fullprice; close; } successrefitem .@part; emotion 21; set .@refinecnt,.@refinecnt - 1; next; } mes "[" + getarg(0) + "]"; mes "All finished... Come again soon."; close; L_Repair: mes "Repairing it is!"; next; if (getbrokenid(1) == 0) goto L_Waste; mes "[" + getarg(0) + "]"; mes "Each repair costs 2000 zeny would you like to repair an item now?"; menu "Yes",L_RepairItem,"No",L_Bye; L_RepairItem: if(zeny < (2000)) goto L_NoZeny; mes "Select the item to repair from the menu."; set @choice, select(getitemname(getbrokenid(1)), getitemname(getbrokenid(2)), getitemname(getbrokenid(3)), getitemname(getbrokenid(4)), getitemname(getbrokenid(5)), getitemname(getbrokenid(6)), getitemname(getbrokenid(7)), getitemname(getbrokenid(8)), getitemname(getbrokenid(9)), getitemname(getbrokenid(10))); set zeny, zeny - 2000; repair(@choice); goto L_Repaired; L_Waste: mes "[" + getarg(0) + "]"; mes "Do not waste my time, you have no items in need of repair."; close; L_Repaired: mes "[" + getarg(0) + "]"; mes "Your item has been repaired, please be more careful."; close; } Didn't try it but the structure seems ok this way.
-
We're not magicians we need a script to work on
-
//##################################################################### //# # //# ##### # ######## # # ##### ## # # # //# # ### ## # # # # # # ### # //# #### # # ## ###### #### # # # # # # //# # ####### ## # # # # # # ####### # //# ##### # # ## # # ##### # ## # # # //# # //##################################################################### //=========== Script for eathena Users ====================// //MVP Arena made by Rikimaru on rathena.org ==============// //=========================================================// //======== Description ====================================// //== Easy made MVP Arena with all MVP's except the new ====// //== Renewal MVP's. Do not remove the Credits =============// //== Price to spawn 1 MVP is 50.000.000 Zenny =============// //== Price for Thanatos or LHZ MVP's is 250.000.000 Zenny =// //== Do not Remove theese Credits =========================// //================= Version : =============================// //============= V. 1.0 Bug Fixes by Rikimaru ==============// //============= V. 1.1 Shorted by llchrisll //=========== Credits End =================================// // // //===================== Script of the MVP Warper ==========// prontera,164,140,3 script MVP Warper 619,{ mes "[ MVP Warper ]"; mes "I can warp you to the MVP Room,do you want to go there?"; next; switch(select("Yes!:No!")) { case 1: mes "[ MVP Warper ]"; mes "Okay I'm going to warp you."; warp "guild_vs1",50,50; close; case 2: mes "[ MVP Warper ]"; mes "Okay bye!"; close; } } //========================= First Script End =============// //================== MVP Summoner ========================// guild_vs1,50,57,5 script MVP Summoner 790,{ mes "[ MVP Summoner ]"; if (MVPSpawnedCount >= 2 && (gettimetick(2)-LastSpawnedTime) < (30*60)) { if (!MVPTimer) MVPTimer = gettimetick(2) + 30*60; if (MVPTimer > gettimetick(2)) { mes "You already spawned "+MVPSpawnedCount+" MVPs, you have to wait "+((MVPTimer-gettimetick(2))/60)+" minutes "+((MVPTimer-gettimetick(2))%60)+" seconds to spawn more" ; close; } MVPSpawnedCount = 0; } else if ((gettimetick(2)-LastSpawnedTime) >= (30*60)) MVPSpawnedCount = 0; mes "Hello,I'm able to spawn MVP's."; mes "Which MVP do you want me to spawn?"; mes "[ MVP List ]"; mes "1 Bacsojin "+.zeny[8]+" Zeny"; mes "1 Baphomet "+.zeny[9]+" Zeny"; mes "1 Dark Lord "+.zeny[8]+" Zeny"; mes "1 Evil Snake "+.zeny[10]+" Zeny"; mes "1 Detale "+.zeny[11]+" Zeny"; mes "1 Dracula "+.zeny[12]+" Zeny"; mes "1 Drake "+.zeny[13]+" Zeny"; mes "1 Edgga "+.zeny[14]+" Zeny"; mes "1 Golden Bug "+.zeny[15]+" Zeny"; mes "1 Incant Samurai "+.zeny[16]+" Zeny"; mes "1 Lord Of Death "+.zeny[17]+" Zeny"; mes "1 Maya "+.zeny[18]+" Zeny"; mes "1 Mistress "+.zeny[19]+" Zeny"; mes "1 Moonlight "+.zeny[12]+" Zeny"; mes "1 Orc Hero "+.zeny[8]+" Zeny"; mes "1 Pharaon "+.zeny[8]+" Zeny"; mes "1 Phreeoni "+.zeny[10]+" Zeny"; mes "1 RSX "+.zeny[12]+" Zeny"; mes "1 Tao Gunka "+.zeny[15]+" Zeny"; mes "1 Stormy Knight "+.zeny[11]+" Zeny"; mes "[ Mini-Boss List ]"; mes "1 Angeling "+.zeny[7]+" Zeny."; mes "1 Archangeling "+.zeny[5]+" Zeny."; mes "1 Bloody Knight "+.zeny[5]+" Zeny."; mes "1 Chimera "+.zeny[5]+" Zeny."; mes "1 Dragon Fly "+.zeny[5]+" Zeny."; mes "1 Eclipse "+.zeny[5]+" Zeny."; mes "1 Ghostring "+.zeny[7]+" Zeny."; mes "1 Giant Whisper "+.zeny[4]+" Zeny."; mes "1 Goblin Leader "+.zeny[4]+" Zeny."; mes "1 Gryphoon "+.zeny[4]+" Zeny."; mes "1 Toad "+.zeny[4]+" Zeny."; mes "1 Vagabond Wolf "+.zeny[4]+" Zeny."; mes "1 Vocal "+.zeny[4]+" Zeny."; mes "1 Dark Ilussion "+.zeny[4]+" Zeny."; next; set .@m,select(.smenu$) - 1; mes "[ MVP Summoner ]"; mes "Okay let me check if you have enough Zeny."; if( Zeny < .zeny[.mobze[.@m]] ) { mes "You don't have enough money"; close; } else { close2; set Zeny, Zeny - .zeny[.mobze[.@m]]; atcommand "@spawn "+.mobid[.@m] + " "+.mobam[.@m]; MVPSpawnedCount++ ; LastSpawnedTime = gettimetick(2); npctalk "[ MVP Summoner]: "+getmonsterinfo(.mobid[.@m],0) +" Spawned!"; end; } OnInit: setarray .zeny[1],10000000,5000000,30000000,200000,300000,700000,400000,500000,15000000,600000,2000000,800000,550000,700000,1000000,800000,1500000,700000,900000; // 50m,250m Zeny // Mob IDs setarray .mobid[0],1518,1039,1272,1529,1719,1389,1115,1086,1429,1373,1147,1059,1150,1087,1038,1157,1159,1623,1583,1251,1096,1388,1268,1283,1091,1093,1120,1186,1299,1259,1402,1092,1088,1302; // Mob Spawn Amount setarray .mobam[0],1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1; // Price: Entry as Index from .zeny // 1 = .zeny[1] - 2 = .zeny[2] setarray .mobze[0],8,9,8,10,11,12,13,14,15,16,17,18,19,12,8,8,10,12,15,15,11,7,5,5,5,5,5,7,4,4,4,4,4,4; set .smenu$,""; for( set .@s,0; .@s < getarraysize(.mobid); set .@s,.@s + 1) { // Skips an Monster if it does not exist in the db if(getmonsterinfo(.mobid[.@s],0) == "" || getmonsterinfo(.mobid[.@s],0) == "null") continue; // else adding it to the menu set .smenu$,.smenu$ + "- "+getmonsterinfo(.mobid[.@s],0) + ( (.mobid[.@s+1] == 0)?"":":"); } end; } guild_vs1,31,68,5 duplicate(MVP Summoner) MVP Summoner#1 790 guild_vs1,31,31,5 duplicate(MVP Summoner) MVP Summoner#2 790 guild_vs1,68,31,5 duplicate(MVP Summoner) MVP Summoner#3 790 guild_vs1,68,68,5 duplicate(MVP Summoner) MVP Summoner#4 790 I'm surprised no one did it before me since it's a simple task. 2 is the maximum amount of MVPs you can spawn and 30 is the time delay in minutes. I also added a line which check if you've already waited 30minutes to spawn another MVP and if so reset your spawn counter.
-
I'll try to make something for you but I don't have much time so I'll only do the counting time part. See you in a bit ^^ Hello there, I'm back! I made a script which will count how much time each player has been on the woe maps during the woe. The time played will be stored in array '.<player name>_WoeTimes' so that you can get a reward from a previous woe if you couldn't connect in time. This time is counted in seconds. If you're a gm and you want to check this variable for a specified player, type @getwoetime <player name> exemple: '@getwoetime kuro' will display "player kuro lasted x seconds in woe last woe" I made this just so you can check if the script works fine. Here it is : - script WoeTimer -1,{ /*----------------------------------------- setting labels ---------------------------------------------------*/ OnInit: setarray .Woe_Maps$[0] , "aldeg_cas01"; // >>PUT ALL OF YOUR ACTIVE WOE MAPS HERE<< for (.@i = 0 ; .@i < getarraysize(.Woe_Maps$) ; .@i++) { setmapflag .Woe_Maps$[.@i],mf_loadevent; } bindatcmd "getwoetime",strnpcinfo(3)+"::OnCommand",80; end; OnAgitStart: .Woe = 1; setarray .players$[0] , ""; end; OnAgitEnd: .Woe = 0; end; /*----------------------------------------- end of setting labels ---------------------------------------------*/ OnPCLoadMapEvent: getmapxy .@map$,.@x,.@y,0; for (.@i = 0 ; .@i < getarraysize(.Woe_Maps$) ; .@i++) { if (.Woe && .@map$ == .Woe_Maps$[.@i]) addtimer 1000,strnpcinfo(3)+"::OnSec"; } end; OnSec: .@player_name$ = strcharinfo(0); setarray getd( "."+.@player_name$+"_WoeTimes[getarraysize(."+.@player_name$+"_WoeTimes)]") , getd( "."+.@player_name$+"_WoeTimes[getarraysize(."+.@player_name$+"_WoeTimes)]") + 1; //add 1 second to counter for (.@i = 0 ; .@i < getarraysize(.players$) ; .@i++) { if (.@player_name$ != .players$[.@i]) setarray .players$[getarraysize(.players$)+1] , .@player_name$; }//get the name of all players who go to woe deltimer strnpcinfo(3)+"::OnSec"; if (.Woe) { addtimer 1000,strnpcinfo(3)+"::OnSec"; } end; OnCommand: /* @getwoetime <player name> */ //it will display the number of seconds the player has lasted in his last woe if (.@atcmd_numparameters < 1) { dispbottom "error" ; end; } if (.@atcmd_numparameters > 2) { dispbottom "error, script continue" ; } if (.@atcmd_numparameters == 1) { dispbottom "player "+.@atcmd_parameters$[0]+" lasted "+getd("."+.@atcmd_parameters$[0]+"_WoeTimes[getarraysize(."+.@atcmd_parameters$[0]+"_WoeTimes)-1]")+" seconds in woe last woe." ; end; } } You just have to set the maps on which you want to activate this script by editting the first line. I'm sorry if it's a bit unreadable, I made it quick. I tested it and it works so I guess it's the most important. I don't have time to do further scripting today so I'll let you with this. You can use this script with another npc which would give the rewards. This npc would get the '.<player name>_WoeTimes' from the one I made and give rewards accordingly. Let me know a bit more about how you want to manage the "reward giving" thing and I'll gladly make that for you but only if you can wait a few days ^^