Hellogood afternoon, someonecould help me withthis script?
//===== rAthena Script =======================================
//= 300 Monster Challenege
//===== By: ==================================================
//= Arcenciel
//===== Version and Changes ==================================
//= 1.0 - Initial Release
//===== Description: =========================================
//= Script creates an instance in which a party is to fight
//= 300 monsters and 1 MvP, both of which are randomly chosen
//= from a predefined list. Script is highly configurable.
//===== Additional Comments: =================================
//= Requires custom map files and client side edits. Both of
//= which were provided in the release topic of this script.
//============================================================
prontera,155,188,4 script Challenge#1-1 459,{
//===== Configurations =======================================
//= Name of the NPC that appears in NPC dialogues.
set .@npcname$,"Gorge";
//= Users higher or equal this level will not be able to take on the challenge.
set .@maxlvl,150;
//= Number of people allowed in a party to take on the challenge.
set .@maxpartymembercount,3;
//= How much time in seconds is given to the party to complete the challenge. Default: 10 Minutes
set .@durationalive,600;
//= Sets whether other party members would get the quest as well. 0 = disabled | 1 = enabled
set .@giveothersquest,1;
//= Sets whether the script will check other party members for requirements. 0 = disabled | 1 = enabled
set .@docheck,1;
//= Checks if the other party members have the quest time limit. 0 = disabled | 1 = enabled
set .@questothers,1;
//= Checks if the other party members are higher or equal to the max level allowed. 0 = disabled | 1 = enabled
set .@lvlothers,1;
//= How many treasure chest should each party member recieve.
set .@rewardcount,1;
//= Tier One - Monster ID and Name
setarray .@chamonid[0],1015,1023,1122;
setarray .@chamonname$[0],"Zombie","Orc","Goblin";
//= Tier Two - Monster ID and Name
setarray .@chamonid2[0],1197,1273,1258;
setarray .@chamonname2$[0],"Zombie Prisoner","Orc Lady","Goblin Archer ";
//= Tier Three - Monster ID and Name
setarray .@chamonid3[0],1865,1213,1308;
setarray .@chamonname3$[0],"Ragged Zombie","High Orc","Panzer Goblin";
//= Last Tier [MVP] - Monster ID and Name
setarray .@chamonid4[0],1871,1190,1785;
setarray .@chamonname4$[0],"Fallen Bishop Hibram","Orc Lord","Atroce";
//= Treasure - Mob ID
setarray .@chamonid5[0],1337,1329,1946,1938;
//===== End of Configurations ================================
mes "[ ^0033CC"+.@npcname$+"^000000 ]";
if ((checkquest(70000,PLAYTIME) == -1) || (checkquest(70000,PLAYTIME)== 2)) {
set .@talkname,getcharid(3,strcharinfo(0));
set .@party_id,getcharid(1);
set .@ins_mas,getpartyleader(.@party_id,2);
getpartymember(.@party_id,0);
set .@partymembercount,$@partymembercount;
copyarray .@partymembername$[0],$@partymembername$[0],.@partymembercount;
getpartymember(.@party_id,1);
copyarray .@partymembercid[0],$@partymembercid[0] ,.@partymembercount;
getpartymember(.@party_id,2);
copyarray .@partymemberaid[0],$@partymemberaid[0] ,.@partymembercount;
mes "Have you heard of the legendary party who has defeated 300 monsters?";
next;
mes "[ ^0033CC"+.@npcname$+"^000000 ]";
mes "BAHAHA! You're talking to one of the members right now! Do you think you can accomplish the same thing we did?!";
next;
mes "[ ^0033CC"+.@npcname$+"^000000 ]";
mes "Listen kid..I have an arena set up where you can attempt to complete this task. How bout we make a bet!?";
next;
mes "[ ^0033CC"+.@npcname$+"^000000 ]";
mes "I'll let you take on the challenge and you'll get a chance to win a treasure chest full of stuff in the end!";
next;
mes "[ ^0033CC"+.@npcname$+"^000000 ]";
mes "So how bout it...";
mes "Do you want to take it on?!";
if (select("Yeah, Bring it!:No, Maybe next time") == 2) {
next;
mes "[ ^0033CC"+.@npcname$+"^000000 ]";
mes "Ha! I knew you couldn't do it!";
close;
}
next;
mes "[ ^0033CC"+.@npcname$+"^000000 ]";
if ( BaseLevel >= .@maxlvl ) {
mes "Is that a scar? You seem to have been through a lot already. Only users lower than Level ^ff0000"+.@maxlvl+"^000000 can take on the challenge.";
close;
}
if ( (.@party_id == 0) || (.@partymembercount < .@maxpartymembercount) ) {
mes "You can't do this alone! I would have been killed without my comrades. You have to be in a ^ff0000"+.@maxpartymembercount+" - member party^000000 in order to do the challenge.";
close;
}
if ( (.@partymembercount > .@maxpartymembercount) ) {
mes "Your party is too big. Cut down on some members. I only need ^ff0000"+.@maxpartymembercount+"^000000 people.";
close;
}
if ( getcharid(0) != .@ins_mas ) {
mes "Party members need to listen to the party leader or everything falls apart. ^ff0000Only party leaders can set up challenge^000000. Tell your leader to come talk to me.";
close;
}
for( set .@i, 0; .@i < .@partymembercount; set .@i, .@i +1 ) {
if ( isloggedin(.@partymemberaid[.@i],.@partymembercid[.@i]) == 0 ) {
attachrid(.@talkname);
mes "One of your party members is offline. Either kick them out or you won't be able to proceed.";
if ( .@instance > 0 ) instance_destroy (.@instance);
close;
}
attachrid(getcharid(3,.@partymembername$[.@i]));
if ( checkquest(70000,PLAYTIME) == 2) {
dispbottom "You can now enter the 300 Monster Challenge Room";
erasequest 70000;
}
detachrid;
}
attachrid(.@talkname);
if ((.@docheck == 1)) {
mes "Let me just check your party for requirements...";
sleep2 500;
for( set .@i, 0; .@i < .@partymembercount; set .@i, .@i +1 ) {
if ( isloggedin(.@partymemberaid[.@i],.@partymembercid[.@i]) == 0 ) {
attachrid(.@talkname);
mes "One of your party members is offline. Either kick them out or you won't be able to proceed.";
if ( .@instance > 0 ) instance_destroy (.@instance);
close;
}
attachrid(getcharid(3,.@partymembername$[.@i]));
if ((.@lvlothers == 1) && (BaseLevel >= .@maxlvl) ) {
attachrid(.@talkname);
mes .@partymembername$[.@i]+": Level is too high";
set .@docheck, 2;
detachrid;
attachrid(getcharid(3,.@partymembername$[.@i]));
}
if ( (.@questothers == 1) && ((checkquest(70000) == 0) || (checkquest(70000) == 1)) ) {
attachrid(.@talkname);
mes .@partymembername$[.@i]+": Is still wounded and not ready to fight.";
set .@docheck, 2;
detachrid;
attachrid(getcharid(3,.@partymembername$[.@i]));
}
detachrid;
}
attachrid(.@talkname);
if ((.@docheck == 2)) {
mes "You might want to fix the problems above. Come back when they're fixed and I'll let you through.";
close;
} else {
sleep2 2000;
mes "Everything seems to be in order.";
next;
}
}
mes "[ ^0033CC"+.@npcname$+"^000000 ]";
mes "Don't die kid!";
mes "You and your party will be warped immediately.";
set .@instance,instance_create("300 Monsters",.@party_id);
if ( .@instance < 0 ) {
next;
mes "[ ^0033CC"+.@npcname$+"^000000 ]";
mes "Something seemed to have went awry...";
mes "You can't attempt this challenge at this moment.";
mes "Come back later.";
close;
}
instance_attachmap ("1@gvs5",.@instance);
instance_attach(.@instance);
instance_set_timeout .@durationalive,60,.@instance;
instance_init(.@instance);
set .@chanum,rand(getarraysize(.@chamonid));
set 'chamonid,.@chamonid[.@chanum];
set 'chamonname$,.@chamonname$[.@chanum];
set 'chamonid2,.@chamonid2[.@chanum];
set 'chamonname2$,.@chamonname2$[.@chanum];
set 'chamonid3,.@chamonid3[.@chanum];
set 'chamonname3$,.@chamonname3$[.@chanum];
set 'chamonid4,.@chamonid4[.@chanum];
set 'chamonname4$,.@chamonname4$[.@chanum];
copyarray 'chamonid5[0],.@chamonid5[0],getarraysize(.@chamonid5);
set 'npcname$,.@npcname$;
set 'instid,.@instance;
set 'maxpartymembercount,.@maxpartymembercount;
set 'party_id,.@party_id;
set 'rewardcount,.@rewardcount;
donpcevent instance_npcname("#Initial Wave", instance_id())+"::OnInstanceInit";
donpcevent instance_npcname("Challenge#1-3", instance_id())+"::OnInstanceInit";
donpcevent instance_npcname("#MvP Summoner", instance_id())+"::OnInstanceInit";
donpcevent instance_npcname("#Instance Destroy", instance_id())+"::OnInstanceInit";
if ((.@giveothersquest == 1)) {
for( set .@i, 0; .@i < .@partymembercount; set .@i, .@i +1 ) {
if ( isloggedin(.@partymemberaid[.@i],.@partymembercid[.@i]) == 0 ) {
attachrid(.@talkname);
mes "One of your party members is offline. Either kick them out or you won't be able to proceed.";
if ( .@instance > 0 ) instance_destroy (.@instance);
close;
}
attachrid(getcharid(3,.@partymembername$[.@i]));
if (checkquest(70000)== -1) setquest 70000;
detachrid;
}
attachrid(.@talkname);
}
if ((checkquest(70000)== -1)) { setquest 70000; }
sleep2 1000;
warpparty "1@gvs5",49,40,.@party_id;
end;
} else if ( (checkquest(70000,PLAYTIME) == 0) || (checkquest(70000,PLAYTIME) == 1) ) {
mes "Is that wound still bleeding?! Come back later when you're fully healed and well rested.";
close;
}}
1@gvs5,51,41,4 script Challenge#1-2 459,{
getpartymember('party_id);
mes "[ ^0033CC"+ 'npcname$+"^000000 ]";;
if ( ($@partymembercount != 'maxpartymembercount) ){
mes "Are you trying to scam me?!";
mes "You can't sneak an extra person in for extra help!";
close2;
for( set 'i, 0; 'i < $@partymembercount; set 'i, 'i +1 ) {
atcommand "@request "+$@partymembername$['i]+" tried to use a loophole in an NPC.";
atcommand "@jail "+$@partymembername$['i];
logmes $@partymembername$['i]+", tried to use a loophole in an NPC.";
}
instance_destroy ('instid);
end;
}
mes "Are you ready? Do note your time is still running.";
if (select("Yeah, Let's go!:No, Hold on.") == 2) {
next;
mes "[ ^0033CC"+ 'npcname$+"^000000 ]";;
mes "Clock is ticking for you but I got all day.";
close;
}
next;
mes "[ ^0033CC"+ 'npcname$+"^000000 ]";;
mes "Don't die kid!";
close2;
donpcevent instance_npcname("Challenge#1-3", instance_id())+"::OnEnable";
end;
}
1@gvs5,51,41,4 script Challenge#1-3 459,{
end;
OnInstanceInit:
disablenpc instance_npcname("Challenge#1-3", instance_id());
end;
OnEnable:
disablenpc instance_npcname("Challenge#1-2", instance_id());
enablenpc instance_npcname("Challenge#1-3", instance_id());
initnpctimer;
end;
OnTimer1000:
instance_announce 0,'npcname$+": Couldn't you all get here any faster?!",bc_map;
end;
OnTimer9000:
instance_announce 0,'npcname$+": Here is what's going to happen..so listen up..",bc_map;
end;
OnTimer17000:
instance_announce 0,'npcname$+": Once I get outta here, the monsters are going to be released",bc_map;
end;
OnTimer25000:
instance_announce 0,'npcname$+": Your job is to kill ALL the monsters till none are standing.",bc_map;
end;
OnTimer33000:
instance_announce 0,'npcname$+": However, more monsters will come the more you kill. Stick together! Got that?",bc_map;
end;
OnTimer41000:
instance_announce 0,'npcname$+": Cause once your party is wiped. It's over. You'll have to wait to try again...",bc_map;
end;
OnTimer49000:
instance_announce 0,'npcname$+": Now ya'll better get your weapons out and spells ready....anytime now..",bc_map;
end;
OnTimer57000:
instance_announce 0,'npcname$+": And Oh...DON'T LOSE A LIMB!",bc_map;
end;
OnTimer65000:
instance_announce 0,'npcname$+": Here they come! I'll see ya'll afterwards if ya'll make it alive!",bc_map;
end;
OnTimer68000:
donpcevent instance_npcname("#Initial Wave", instance_id())+"::OnEnable";
disablenpc instance_npcname("Challenge#1-3", instance_id());
specialeffect 304;
stopnpctimer;
end;
}
1@gvs5,18,52,0 script #Initial Wave -1,{
end;
OnInstanceInit:
disablenpc instance_npcname("#Initial Wave", instance_id());
end;
OnEnable:
enablenpc instance_npcname("#Initial Wave", instance_id());
set 'monscount, 300;
instance_announce 0,'monscount+" "+'chamonname$+" left",bc_map;
monster "1@gvs5",0,0,'chamonname$,'chamonid,30,instance_npcname("#Initial Wave", instance_id())+"::OnMyMobDead";
end;
OnMyMobDead:
set 'monscount, 'monscount - 1;
if ( 'monscount == 0 ) {
donpcevent instance_npcname("#MvP Summoner", instance_id())+"::OnEnable";
end;
}
instance_announce 0,'monscount+" monster[s] left",bc_map;
if ( ('monscount == 280) && ('monscount != 0) ) {
monster "1@gvs5",0,0,'chamonname$,'chamonid,30,instance_npcname("#Initial Wave", instance_id())+"::OnMyMobDead";
}
if ( ( ('monscount == 260) ||('monscount == 240) ) && ('monscount != 0) ) {
monster "1@gvs5",0,0,'chamonname$,'chamonid,20,instance_npcname("#Initial Wave", instance_id())+"::OnMyMobDead";
monster "1@gvs5",0,0,'chamonname2$,'chamonid2,10,instance_npcname("#Initial Wave", instance_id())+"::OnMyMobDead";
}
if ( ( ('monscount == 220) ||('monscount == 200) ) && ('monscount != 0) ) {
monster "1@gvs5",0,0,'chamonname$,'chamonid,15,instance_npcname("#Initial Wave", instance_id())+"::OnMyMobDead";
monster "1@gvs5",0,0,'chamonname2$,'chamonid2,15,instance_npcname("#Initial Wave", instance_id())+"::OnMyMobDead";
}
if ( ( ('monscount == 180) ||('monscount == 160) ) && ('monscount != 0) ) {
monster "1@gvs5",0,0,'chamonname$,'chamonid,10,instance_npcname("#Initial Wave", instance_id())+"::OnMyMobDead";
monster "1@gvs5",0,0,'chamonname2$,'chamonid2,20,instance_npcname("#Initial Wave", instance_id())+"::OnMyMobDead";
}
if ( ('monscount == 140) && ('monscount != 0) ) {
monster "1@gvs5",0,0,'chamonname2$,'chamonid2,20,instance_npcname("#Initial Wave", instance_id())+"::OnMyMobDead";
monster "1@gvs5",0,0,'chamonname3$,'chamonid3,10,instance_npcname("#Initial Wave", instance_id())+"::OnMyMobDead";
}
if ( ('monscount == 120 ) && ('monscount != 0) ) {
monster "1@gvs5",0,0,'chamonname2$,'chamonid2,15,instance_npcname("#Initial Wave", instance_id())+"::OnMyMobDead";
monster "1@gvs5",0,0,'chamonname3$,'chamonid3,15,instance_npcname("#Initial Wave", instance_id())+"::OnMyMobDead";
}
end;
}
1@gvs5,18,52,0 script #MvP Summoner -1,{
end;
OnInstanceInit:
disablenpc instance_npcname("#MvP Summoner", instance_id());
end;
OnEnable:
enablenpc instance_npcname("#MvP Summoner", instance_id());
instance_announce 0,'npcname$+": The final monster will be released in 10 seconds. Get ready!",bc_map;
initnpctimer;
end;
OnTimer10000:
instance_announce 0,'npcname$+": The final monster has been released. Kill it and you're done!",bc_map;
monster "1@gvs5",0,0,'chamonname4$,'chamonid4,1,instance_npcname("#MvP Summoner", instance_id())+"::OnMyMVPDead";
stopnpctimer;
end;
OnMyMVPDead:
instance_announce 0,'npcname$+": Congratulations! The treasure chest is yours!",bc_map;
getpartymember('party_id);
set 'trecount,$@partymembercount * 'rewardcount;
for( set 'i, 0; 'i < ($@partymembercount * 'rewardcount); set 'i, 'i +1 ) {
set 'randnum,rand(getarraysize('chamonid5));
monster "1@gvs5",44 + 'i,40,"Treasure Chest",'chamonid5['randnum],1,instance_npcname("#MvP Summoner", instance_id())+"::OnChestBreak";
}
end;
OnChestBreak:
set 'trecount,'trecount - 1;
instance_announce 0,"A chest has been opened by "+strcharinfo(0),bc_map;
if (('trecount == 0)) {
enablenpc instance_npcname("#Instance Destroy", instance_id());
donpcevent instance_npcname("#Instance Destroy", instance_id())+"::OnEnable";
}
end;
}
1@gvs5,18,52,0 script #Instance Destroy -1,{
end;
OnInstanceInit:
disablenpc instance_npcname("#Instance Destroy", instance_id());
end;
OnEnable:
enablenpc instance_npcname("#Instance Destroy", instance_id());
instance_announce 0,"Instance will be destroyed in 10 seconds...",bc_map;
initnpctimer;
end;
OnTimer10000:
instance_destroy ('instid);
stopnpctimer;
end;
}
1@gvs5 mapflag nomemo
1@gvs5 mapflag noreturn
1@gvs5 mapflag nosave SavePoint
1@gvs5 mapflag noteleport
1@gvs5 mapflag nowarp
1@gvs5 mapflag nowarpto
1@gvs5 mapflag partylock
thank you very muchfrom nowanyone who can helpme ....
Question
Kakaroto
Link to comment
Share on other sites
6 answers to this question
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.