Zeke Posted March 12, 2014 Share Posted March 12, 2014 Hi, Im looking for a Monster Invasion script as follows 1. Should trigger every odd hour i.e 1,3,5,7,9,11,13 2. 100 Monsters should spawn which will drop only items set in script 3. 5 MVP should spawn again with drops specified in script. 4. Should take place in any 4 random city specified in the script 5. On Start Should Display a Message with the invaded city name 6. Should not start when WOE On. Thank You Quote Link to comment Share on other sites More sharing options...
sandbox Posted March 15, 2014 Share Posted March 15, 2014 - script TownInvasion -1,{ OnMinute00: if(gettime(3) % 2 == 1 && !agitcheck() && !agitcheck2()) { for([email protected] = 0; [email protected] < 4; [email protected]++) { //Spawn on 4 towns .Town_Invade$ = .Town$[rand(getarraysize(.Town$))]; announce .Town_Invade$+" Guard: Help us! Our town is being invaded!",bc_blue|bc_all; for([email protected] = 0; [email protected] < 5; [email protected]++) { //MvP spawner monster .Town_Invade$,0,0,"--ja--",.MvP[rand(getarraysize(.MvP))],1,strnpcinfo(1)+"::OnInvadeDeath"; } for([email protected] = 0; [email protected] < 100; [email protected]++) { //Mob spawner monster .Town_Invade$,0,0,"--ja--",-1,1,strnpcinfo(1)+"::OnMobsDeath"; } } } end; OnInvadeDeath: [email protected] = rand(getarraysize(.Prize)); getitem .Prize[[email protected]],.PAmt[[email protected]]; end; OnMobsDeath: [email protected] = rand(getarraysize(.Prize2)); getitem .Prize2[[email protected]],.PAmt2[[email protected]]; end; OnInit: //Towns to Invade setarray .Town$[0],"prontera","izlude","geffen","payon","alberta","aldebaran","yuno","lighthalzen","einbroch","einbech","comodo","umbala","amatsu","gonryun","ayothaya","louyang","hugel","rachel","veins"; //MvPs to summon setarray .MvP[0],1583,1832,1312; //Prize to give MVP setarray .Prize[0],7227,607,608,501,502,503,504,505,506,507,508,509,510,511,512; setarray .PAmt[0],1,1,1,1,1,1,1,1,1,1,1,1,1,1,1; //Prize to give Mobs setarray .Prize2[0],7227,607,608,501,502,503,504,505,506,507,508,509,510,511,512; setarray .PAmt2[0],1,1,1,1,1,1,1,1,1,1,1,1,1,1,1; end; } make sure .Prize, .PAmt, .Prize2, .PAmt2 has the same length of elements in their array. Just change their values to the Item ID of your prize Quote Link to comment Share on other sites More sharing options...
0 iSnowFlakes Posted December 18, 2020 Share Posted December 18, 2020 On 3/25/2014 at 12:18 PM, sandbox said: - script TownInvasion -1,{ OnMinute00: if(gettime(3) % 2 == 1 && !agitcheck() && !agitcheck2()) { for([email protected] = 0; [email protected] < 4; [email protected]++) { //Spawn on 4 towns do { [email protected] = rand(.num_towns); } while ([email protected]_check[[email protected]]); [email protected]_check[[email protected]] = 1; announce .Town$[[email protected]]+" Guard: Help us! Our town is being invaded!",bc_blue|bc_all; for([email protected] = 0; [email protected] < 5; [email protected]++) { //MvP spawner monster .Town$[[email protected]],0,0,"--ja--",.MvP[rand(getarraysize(.MvP))],1,strnpcinfo(1)+"::OnInvadeDeath"; } for([email protected] = 0; [email protected] < 100; [email protected]++) { //Mob spawner monster .Town$[[email protected]],0,0,"--ja--",-1,1,strnpcinfo(1)+"::OnMobsDeath"; } } } end; OnInvadeDeath: [email protected] = rand(getarraysize(.Prize)); getitem .Prize[[email protected]],.PAmt[[email protected]]; goto CheckWipe; end; OnMobsDeath: [email protected] = rand(getarraysize(.Prize2)); getitem .Prize2[[email protected]],.PAmt2[[email protected]]; goto CheckWipe; end; CheckWipe: if(mobcount(strcharinfo(3),"OnInvadeDeath") < 1 && mobcount(strcharinfo(3),"OnMobsDeath") < 1) Saved++; if(Saved >= 4) { announce "Thank you! All the cities have been saved!",bc_blue|bc_all; Saved = 0; } end; OnInit: //Towns to Invade setarray .Town$[0],"prontera","izlude","geffen","payon","alberta","aldebaran","yuno","lighthalzen","einbroch","einbech","comodo","umbala","amatsu","gonryun","ayothaya","louyang","hugel","rachel","veins"; set .num_towns, getarraysize(.Town$); //MvPs to summon setarray .MvP[0],1583,1832,1312; //Prize to give MVP setarray .Prize[0],7227,607,608,501,502,503,504,505,506,507,508,509,510,511,512; setarray .PAmt[0],1,1,1,1,1,1,1,1,1,1,1,1,1,1,1; //Prize to give Mobs setarray .Prize2[0],7227,607,608,501,502,503,504,505,506,507,508,509,510,511,512; setarray .PAmt2[0],1,1,1,1,1,1,1,1,1,1,1,1,1,1,1; end; } what if i need it to be set on OnClock eg. 19:00 server time 10:00 server time? Quote Link to comment Share on other sites More sharing options...
-1 skymia Posted September 24, 2017 Share Posted September 24, 2017 how to make this a NPC trigger? Quote Link to comment Share on other sites More sharing options...
sandbox Posted March 13, 2014 Share Posted March 13, 2014 Lucky for you i'm currently rewriting my invasion script! Though this is not exactly how I wrote it, I modified it based on your request. Kindly test! - script TownInvasion -1,{ OnMinute00: if(gettime(3) % 2 == 1 && !agitcheck() && !agitcheck2()) { for([email protected] = 0; [email protected] < 4; [email protected]++) { //Spawn on 4 towns .Town_Invade$ = .Town$[rand(getarraysize(.Town$))]; announce .Town_Invade$+" Guard: Help us! Our town is being invaded!",bc_blue|bc_all; for([email protected] = 0; [email protected] < 5; [email protected]++) { //MvP spawner monster .Town_Invade$,0,0,"--ja--",-3,1,strnpcinfo(1)+"::OnInvadeDeath"; } for([email protected] = 0; [email protected] < 100; [email protected]++) { //Mob spawner monster .Town_Invade$,0,0,"--ja--",-1,1,strnpcinfo(1)+"::OnMobsDeath"; } } } end; OnInvadeDeath: getitem .Prize[0],.Prize[1]; end; OnMobsDeath: getitem .Prize2[0],.Prize2[1]; end; OnInit: //Towns to Invade setarray .Town$[0],"prontera","izlude","geffen","payon","alberta","aldebaran","yuno","lighthalzen","einbroch","einbech","comodo","umbala","amatsu","gonryun","ayothaya","louyang","hugel","rachel","veins"; //Prize to give, followed by amount setarray .Prize[0],7227,2; setarray .Prize2[0],607,5; end; } Quote Link to comment Share on other sites More sharing options...
Zeke Posted March 13, 2014 Author Share Posted March 13, 2014 Sandbox I loved the script. Though need few small changes. I need to set the MVP's, which i want to get spawned ? Quote Link to comment Share on other sites More sharing options...
sandbox Posted March 14, 2014 Share Posted March 14, 2014 Here you go - script TownInvasion -1,{ OnMinute00: if(gettime(3) % 2 == 1 && !agitcheck() && !agitcheck2()) { for([email protected] = 0; [email protected] < 4; [email protected]++) { //Spawn on 4 towns .Town_Invade$ = .Town$[rand(getarraysize(.Town$))]; announce .Town_Invade$+" Guard: Help us! Our town is being invaded!",bc_blue|bc_all; for([email protected] = 0; [email protected] < 5; [email protected]++) { //MvP spawner monster .Town_Invade$,0,0,"--ja--",.MvP[rand(getarraysize(.MvP))],1,strnpcinfo(1)+"::OnInvadeDeath"; } for([email protected] = 0; [email protected] < 100; [email protected]++) { //Mob spawner monster .Town_Invade$,0,0,"--ja--",-1,1,strnpcinfo(1)+"::OnMobsDeath"; } } } end; OnInvadeDeath: getitem .Prize[0],.Prize[1]; end; OnMobsDeath: getitem .Prize2[0],.Prize2[1]; end; OnInit: //Towns to Invade setarray .Town$[0],"prontera","izlude","geffen","payon","alberta","aldebaran","yuno","lighthalzen","einbroch","einbech","comodo","umbala","amatsu","gonryun","ayothaya","louyang","hugel","rachel","veins"; //MvPs to summon setarray .MvP[0],1583,1832,1312; //Prize to give, followed by amount setarray .Prize[0],7227,2; setarray .Prize2[0],607,5; end; } Quote Link to comment Share on other sites More sharing options...
Zeke Posted March 15, 2014 Author Share Posted March 15, 2014 Thank You Bro. Its perfect. Anyways just for knowledge. If i want the monsters to drop items randomly from 15 different items. Is that possible? Quote Link to comment Share on other sites More sharing options...
Zeke Posted March 16, 2014 Author Share Posted March 16, 2014 Perfect. ! I guess you can give both of em best ans. As both work differently.. Quote Link to comment Share on other sites More sharing options...
Zeke Posted March 18, 2014 Author Share Posted March 18, 2014 Buddy, Need a few changes. 1. If a city is chosen it should not be repeated. 2. Can we make it announce in each of those city which are trigerred by the event, after the monsters are over. Quote Link to comment Share on other sites More sharing options...
sandbox Posted March 18, 2014 Share Posted March 18, 2014 Kindly test.. All credits goes to @ToastOfDoom for this one.. I went through all the pain when he lectured me about your two requests.. Thank you sensei toasty - script TownInvasion -1,{ OnMinute00: if(gettime(3) % 2 == 1 && !agitcheck() && !agitcheck2()) { for([email protected] = 0; [email protected] < 4; [email protected]++) { //Spawn on 4 towns do { [email protected] = rand(.num_towns); } while ([email protected]_check[[email protected]]); [email protected]_check[[email protected]] = 1; announce .Town$[[email protected]]+" Guard: Help us! Our town is being invaded!",bc_blue|bc_all; for([email protected] = 0; [email protected] < 5; [email protected]++) { //MvP spawner monster .Town$[[email protected]],0,0,"--ja--",.MvP[rand(getarraysize(.MvP))],1,strnpcinfo(1)+"::OnInvadeDeath"; } for([email protected] = 0; [email protected] < 100; [email protected]++) { //Mob spawner monster .Town$[[email protected]],0,0,"--ja--",-1,1,strnpcinfo(1)+"::OnMobsDeath"; } } } end; OnInvadeDeath: [email protected] = rand(getarraysize(.Prize)); getitem .Prize[[email protected]],.PAmt[[email protected]]; goto CheckWipe; end; OnMobsDeath: [email protected] = rand(getarraysize(.Prize2)); getitem .Prize2[[email protected]],.PAmt2[[email protected]]; goto CheckWipe; end; CheckWipe: if(mobcount(strcharinfo(3),"OnInvadeDeath") < 1 && mobcount(strcharinfo(3),"OnMobsDeath") < 1) announce "Thank you, "+strcharinfo(3)+" has been saved!",bc_blue|bc_all; end; OnInit: //Towns to Invade setarray .Town$[0],"prontera","izlude","geffen","payon","alberta","aldebaran","yuno","lighthalzen","einbroch","einbech","comodo","umbala","amatsu","gonryun","ayothaya","louyang","hugel","rachel","veins"; set .num_towns, getarraysize(.Town$); //MvPs to summon setarray .MvP[0],1583,1832,1312; //Prize to give MVP setarray .Prize[0],7227,607,608,501,502,503,504,505,506,507,508,509,510,511,512; setarray .PAmt[0],1,1,1,1,1,1,1,1,1,1,1,1,1,1,1; //Prize to give Mobs setarray .Prize2[0],7227,607,608,501,502,503,504,505,506,507,508,509,510,511,512; setarray .PAmt2[0],1,1,1,1,1,1,1,1,1,1,1,1,1,1,1; end; } 1 Quote Link to comment Share on other sites More sharing options...
Zeke Posted March 24, 2014 Author Share Posted March 24, 2014 Sir, There is one more small problem. It is giving the message "City has been saved after every monster killed". Can we make it to after all the monsters in a city are killed. Quote Link to comment Share on other sites More sharing options...
sandbox Posted March 25, 2014 Share Posted March 25, 2014 - script TownInvasion -1,{ OnMinute00: if(gettime(3) % 2 == 1 && !agitcheck() && !agitcheck2()) { for([email protected] = 0; [email protected] < 4; [email protected]++) { //Spawn on 4 towns do { [email protected] = rand(.num_towns); } while ([email protected]_check[[email protected]]); [email protected]_check[[email protected]] = 1; announce .Town$[[email protected]]+" Guard: Help us! Our town is being invaded!",bc_blue|bc_all; for([email protected] = 0; [email protected] < 5; [email protected]++) { //MvP spawner monster .Town$[[email protected]],0,0,"--ja--",.MvP[rand(getarraysize(.MvP))],1,strnpcinfo(1)+"::OnInvadeDeath"; } for([email protected] = 0; [email protected] < 100; [email protected]++) { //Mob spawner monster .Town$[[email protected]],0,0,"--ja--",-1,1,strnpcinfo(1)+"::OnMobsDeath"; } } } end; OnInvadeDeath: [email protected] = rand(getarraysize(.Prize)); getitem .Prize[[email protected]],.PAmt[[email protected]]; goto CheckWipe; end; OnMobsDeath: [email protected] = rand(getarraysize(.Prize2)); getitem .Prize2[[email protected]],.PAmt2[[email protected]]; goto CheckWipe; end; CheckWipe: if(mobcount(strcharinfo(3),"OnInvadeDeath") < 1 && mobcount(strcharinfo(3),"OnMobsDeath") < 1) Saved++; if(Saved >= 4) { announce "Thank you! All the cities have been saved!",bc_blue|bc_all; Saved = 0; } end; OnInit: //Towns to Invade setarray .Town$[0],"prontera","izlude","geffen","payon","alberta","aldebaran","yuno","lighthalzen","einbroch","einbech","comodo","umbala","amatsu","gonryun","ayothaya","louyang","hugel","rachel","veins"; set .num_towns, getarraysize(.Town$); //MvPs to summon setarray .MvP[0],1583,1832,1312; //Prize to give MVP setarray .Prize[0],7227,607,608,501,502,503,504,505,506,507,508,509,510,511,512; setarray .PAmt[0],1,1,1,1,1,1,1,1,1,1,1,1,1,1,1; //Prize to give Mobs setarray .Prize2[0],7227,607,608,501,502,503,504,505,506,507,508,509,510,511,512; setarray .PAmt2[0],1,1,1,1,1,1,1,1,1,1,1,1,1,1,1; end; } 1 Quote Link to comment Share on other sites More sharing options...
newsubzero Posted January 23, 2015 Share Posted January 23, 2015 thanx 4 share but i found error like this, what should i do ? [Debug]: Source (NPC): TownInvasion (invisible/not on a map) [Warning]: NPC event parameter deprecated! Please use 'NPCNAME::OnEVENT' instead of 'OnMobsDeath'. Quote Link to comment Share on other sites More sharing options...
Hi, Im looking for a Monster Invasion script as follows
1. Should trigger every odd hour i.e 1,3,5,7,9,11,13
2. 100 Monsters should spawn which will drop only items set in script
3. 5 MVP should spawn again with drops specified in script.
4. Should take place in any 4 random city specified in the script
5. On Start Should Display a Message with the invaded city name
6. Should not start when WOE On.
Thank You
Link to comment
Share on other sites