Jump to content
  • 0

help Invasion doesn't start


fictionx

Question


  • Group:  Members
  • Topic Count:  30
  • Topics Per Day:  0.01
  • Content Count:  122
  • Reputation:   17
  • Joined:  12/10/12
  • Last Seen:  

Hi, i have a problem with this script.

 

The invasor by ivion, the problem is the console don't show any error.

 

when an invasion starts, it instantly ends.

-	script	invasor	-1,{

OnInit:

// [========================================================]
// [ Configuration:                                         ]
// [--------------------------------------------------------]

	set .t1,2*24;		// Minimum time to activate a new invasion event. (h)
	set .t2,14*24;		// Maximum time to activate a new invasion event. (h)
	set .t3,24*60;		// Maximum duration of the invasion event. (min)

	set .r1,100;		// Mob rate. (%)
	set .pci,7539;		// Item reward dropped by mobs and bosses. (Default = Poring Coin)
	set .pcr1,100;		// Rate of item rewards dropped by mobs. (0 = off | %)
	set .pcr2,100;		// Rate of item rewards dropped by bosses. (0 = off | %)

	set .t4,60;		// Duration of the experience event after defeating the invader armies. (0 = off | min)
	set .r2,100;		// Base exp rate increment. (0 = off | %)
	set .r3,100;		// Job exp rate increment. (0 = off | %)

	set .gm,60;		// GM level required to access the Control Panel whispering to NPC:invasor.

	// Alternative Save Point:
	// If a player had saved in the map of the current invasion event, his respawn point will be changed to this one.

	set .s$,"prontera";	// Map.
	set .sx,156;		// x.
	set .sy,161;		// y.

	// Cities:
	// getarg(0): Name.
	// getarg(1): Map.
	// getarg(2): Intensity. (0 = off | Intensity)

	callsub Onc0,"Alberta","alberta",11;
	callsub Onc0,"Al De Baran","aldebaran",14;
	callsub Onc0,"Amatsu","amatsu",18;
	callsub Onc0,"Ayothaya","ayothaya",8;
	callsub Onc0,"Brasilis","brasilis",27;
	callsub Onc0,"Comodo","comodo",22;
	callsub Onc0,"Einbech","einbech",11;
	callsub Onc0,"Einbroch","einbroch",22;
	callsub Onc0,"El Dicastes","dicastes01",14;
	callsub Onc0,"Geffen","geffen",10;
	callsub Onc0,"Gonryun","gonryun",14;
	callsub Onc0,"Hugel","hugel",9;
	callsub Onc0,"Izlude","izlude",5;
	callsub Onc0,"Jawaii","jawaii",0; // 7
	callsub Onc0,"Juno","yuno",30;
	callsub Onc0,"Lighthalzen","lighthalzen",24;
	callsub Onc0,"Louyang","louyang",27;
	callsub Onc0,"Lutie","xmas",20;
	callsub Onc0,"Manuk","manuk",8;
	callsub Onc0,"Midgarts Expedition Camp","mid_camp",13;
	callsub Onc0,"Morroc","morocc",26;
	callsub Onc0,"Moscovia","moscovia",6;
	callsub Onc0,"Niflheim","niflheim",0; // 20
	callsub Onc0,"Payon","payon",19;
	callsub Onc0,"Prontera","prontera",0; // 30
	callsub Onc0,"Rachel","rachel",18;
	callsub Onc0,"Splendide","splendide",29;
	callsub Onc0,"Umbala","umbala",4;
	callsub Onc0,"Veins","veins",20;

	// Invaders:
	// getarg(0): Name.
	// getarg(1 .. 9): Mobs.
	// getarg(10 .. 12): Bosses.

	callsub Onc1,"Aqua",1068,1071,1068,1069,1044,1144,1045,1065,1264,2503,2504,2505;
	callsub Onc1,"Demon",1146,1109,1101,1149,1632,1773,1382,1292,1208,2536,2537,2538;
	callsub Onc1,"Dragon",1715,1718,1155,1380,1206,1385,1717,1714,1716,2524,2525,2526;
	callsub Onc1,"Earth",1784,1782,1165,1517,1615,1516,1378,1386,1602,2512,2513,2514;
	callsub Onc1,"Fire",1836,1367,1383,1072,1384,1381,1318,1837,1366,2500,2501,2502;
	callsub Onc1,"Ghost",1509,1179,1186,1143,1510,1192,1506,1375,1291,2527,2528,2529;
	callsub Onc1,"Ice",1243,1789,1776,1778,1323,1317,1775,1515,1319,2506,2507,2508;
	callsub Onc1,"Insect",1054,1100,1139,1279,1099,1625,1304,1194,1305,2518,2519,2520;
	callsub Onc1,"Kaos",1140,1508,1163,1276,1504,1132,1698,1505,1507,2539,2540,2541;
	callsub Onc1,"Machina",1151,1616,1745,1682,1270,1622,1202,1678,1673,2515,2516,2517;
	callsub Onc1,"Nature",1162,1118,1880,1500,1497,1410,1780,1884,1314,2509,2510,2511;
	callsub Onc1,"Takeshi",1026,1188,1404,1584,1609,1512,1416,1405,1401,2542,2543,2544;
	callsub Onc1,"Undead",1403,1169,1041,1196,1197,1117,1297,1866,1098,2533,2534,2535;
	callsub Onc1,"Venom",1621,1256,1037,1402,1209,1216,1207,1883,1148,2521,2522,2523;
	callsub Onc1,"Wind",1627,1156,1253,1263,1633,1692,1412,1774,1259,2530,2531,2532;

// [--------------------------------------------------------]
// [ End of configuration.                                  ]
// [========================================================]

	// Restore experience rates:
	if(checkcell("prontera",0,0,cell_water)) {
		setBattleFlag "base_exp_rate",getBattleFlag("base_exp_rate") - $TIbr;
		setBattleFlag "job_exp_rate",getBattleFlag("job_exp_rate") - $TIjr;
		set $TIbr,0;
		set $TIjr,0;
		setcell "prontera",0,0,0,0,cell_water,0;
		atcommand "@reloadmobdb";
	}

	// Fix incorrect map cells:
	setcell "amatsu",314,267,314,314,0,0;
	setcell "yuno",205,219,205,218,0,0;

	while(1) {
		set .a,0; // Stage.
		set .b,0; // Class.
		set .c,0; // City.
		set .@t,gettimetick(2) / 60;
		if($TIt <= .@t) set $TIt,.@t + rand(.t1 * 60,.t2 * 60);
		do {
			if(($TIt - .@t) / (24 * 60)) sleep 24 * 60 * 60 * 1000;
			else sleep ($TIt - .@t) * 60 * 1000;
			set .@t,gettimetick(2) / 60;
		} while(.@t < $TIt);
		set .a,1;
		set $TIt,0;
		set .@t,0;
		donpcevent "invasor::OnTimer";
		if(!. set .b,rand(1,getarraysize(.i));
		set .b,.b - 1;
		if(!.c) set .c,rand(1,getarraysize(.n$));
		set .c,.c - 1;
		set .mf1,getmapflag(.c2$[.b],1);
		set .mf4,getmapflag(.c2$[.b],4);
		setmapflag .c2$[.b],1; // noteleport
		setmapflag .c2$[.b],4; // nopenalty
		callsub Clrmsg;
		announce "S.O.S.!! "+.c1$[.b]+" ESTA SUFRIENDO UNA TERRIBLE INVASION.",bc_all,0xffaa00;
		while(.a > 0) {
			if(!.d) {
				set .d,4 - .a;
				killmonster .c2$[.b],"invasor::Onm9";
				if(.a > 1) callsub Addmsg,"UNA NUEVA TROPA DE INVASORES HA LLEGADO!.","ffaa00",.c2$[.b];
				monster .c2$[.b],0,0,"--ja--",getd(".m"+((.c * 12) + .a + 8)),4 - .a,"invasor::Onm9";
			}
			set .@a,3;
			while(.@a) {
				set .@b,(.i[.b] * .r1 / 20) - mobcount(.c2$[.b],"invasor::Onm"+((.a * 3) - .@a)) + 10;
				if(.@b > 0) {
					if(.@b > .i[.b]) set .@b,.i[.b];
					monster .c2$[.b],0,0,"--ja--",getd(".m"+((.c * 12) + (.a * 3) - .@a)),.@b,"invasor::Onm"+((.a * 3) - .@a);
				}
				set .@a,.@a - 1;
			}
			set .@b,0;
			sleep 30000;
		}
		set .d,0;
		set .@a,10;
		while(.@a) {
			set .@a,.@a - 1;
			killmonster .c2$[.b],"invasor::Onm"+.@a;
		}
		if(!.mf1) removemapflag .c2$[.b],1;
		if(!.mf4) removemapflag .c2$[.b],4;
		set .mf1,0;
		set .mf4,0;
		if(.a == -1) {
			callsub Addmsg,"Experiencia Base y Job incrementada en un "+.r2+"%. ("+.t4+" min)","ffaa00";
			setBattleFlag "base_exp_rate",getbattleflag("base_exp_rate") + set($TIbr,.r2);
			setBattleFlag "job_exp_rate",getbattleflag("job_exp_rate") + set($TIjr,.r3);
			setcell "prontera",0,0,0,0,cell_water,1;
			atcommand "@reloadmobdb";
			sleep .t4 * 60 * 1000;
			setBattleFlag "base_exp_rate",getbattleflag("base_exp_rate") - .r2;
			setBattleFlag "job_exp_rate",getbattleflag("job_exp_rate") - .r3;
			set $TIbr,0;
			set $TIjr,0;
			setcell "prontera",0,0,0,0,cell_water,0;
			atcommand "@reloadmobdb";
			announce "La experiencia ha sido restablecida.",bc_all,0xffaa00;
		}
	}
	end;

Onc0:
	if(getarg(2) > 0) {
		set .c1$[.c],getarg(0);
		set .c2$[.c],getarg(1);
		set .i[.c],getarg(2);
		set .c,.c + 1;
	}
	return;

Onc1:
	set .@a,getarraysize(.n$);
	set .n$[.@a],getarg(0);
	while(.@b < 12) {
		set getd(".m"+((.@a * 12) + .@),getarg(.@b + 1);
		set .@b,.@b + 1;
	}
	return;

OnTimer:
	sleep .t3 * 60 * 1000;
	if(.a > 0) {
		set .a,0;
		awake "invasor";
		callsub Clrmsg;
		callsub Addmsg,"Las defensas de "+.c1$[.b]+" han sido eliminadas por los invasores.","ffaa00";
		callsub Addmsg,"Hoy sera recordado como el dia negro.","ffaa00";
	}
	end;

Onm0:
Onm1:
Onm2:
	callsub Onms,1;

Onm3:
Onm4:
Onm5:
	callsub Onms,2;

Onm6:
Onm7:
Onm8:
	callsub Onms,3;

Onms:
	if(playerattached() && .pcr1)
		if(!rand((5 - getarg(0)) * 2500 / .pcr1)) getitem .pci,1;
	end;

Onm9:
	if(.a > 0) {
		set .d,.d - 1;
		if(.a != 3) {
			setarray .@a$[0],"Sbirro","Hero";
			set .@b$,callsub(Grammar_a_an,.n$[.c])+" "+.@a$[.a - 1];
			if(playerattached()) {
				set .@c$,strcharinfo(0)+" has killed a"+.@b$+".";
				getitem .pci,(1 + .a) * 10 * .pcr2 / 100;
			}
			else set .@c$,"A"+.@b$+" has been killed.";
			callsub Addmsg,.@c$+" ("+(4 - .a - .d)+"/"+(4 - .a)+")","ffaa00",.c2$[.b];
			if(!.d) set .a,.a + 1;
		}
		else {
			if(playerattached()) {
				set .@a$,strcharinfo(0)+" has killed the "+.n$[.c]+" Deux.";
				getitem .pci,60 * .pcr2 / 100;
			}
			else set .@a$,"The "+.n$[.c]+" Deux has been killed.";
			callsub Addmsg,.@a$,"ffaa00",.c2$[.b];
			callsub Addmsg,"La armada invasora en "+.c1$[.b]+" ha sido vencida.","ffaa00";
			if(.t4 && .r2) set .a,-1;
			else set .a,0;
			awake "invasor";
		}
	}
	end;

OnPCLoginEvent:
	if(.a > 0) {
		sleep2 3000;
		if(.a > 0) announce "¡¡S.O.S.!! "+.c1$[.b]+" ESTA SUFRIENDO UNA TERRIBLE INVASION.",bc_self,0xffaa00;
	}
	else if(.a == -1) {
		sleep2 3000;
		if(.a == -1) announce "La experiencia Base y Job, han sido incrementada en un "+.r2+"%.",bc_self,0xffaa00;
	}
	end;

OnPCDieEvent:
	if((.a > 0) && (getsavepoint(0) == .c2$[.b])) save .s$,.sx,.sy;
	end;

OnWhisperGlobal:
	if(getgmlevel() >= .gm) {
		set .@n$,"^008888The Invasor^000000";
		mes .@n$;
		mes "This is the Control Panel of The Invasor system.";
		if(!.a) {
			mes "Currently there isn't any invasion in progress.";
			set .@t,$TIt - (gettimetick(2) / 60);
			if(!.@t) set .@t$,"a few seconds";
			else if(.@t < 60) set .@t$,.@t+" minutes";
			else {
				set .@t,.@t / 60;
				if(.@t < 24) set .@t$,.@t+" hours";
				else set .@t$,(.@t / 24)+" days";
			}
			mes "Next automatic invasion event will take place in "+.@t$+".";
			next;
			set .@b,select("^880000Exit^000000","Start a new invasion.") - 1;
			mes .@n$;
			if(.@ {
				mes "Select a city.";
				next;
				set .@a,select("^880000Random^000000",.c1$[0],.c1$[1],.c1$[2],.c1$[3],.c1$[4],.c1$[5],.c1$[6],.c1$[7],.c1$[8],.c1$[9],.c1$[10],.c1$[11],.c1$[12],.c1$[13],.c1$[14],.c1$[15],.c1$[16],.c1$[17],.c1$[18],.c1$[19],.c1$[20],.c1$[21],.c1$[22],.c1$[23],.c1$[24],.c1$[25],.c1$[26],.c1$[27],.c1$[28],.c1$[29],.c1$[30],.c1$[31],.c1$[32],.c1$[33],.c1$[34],.c1$[35],.c1$[36],.c1$[37],.c1$[38],.c1$[39]) - 1;
				mes .@n$;
				mes "Select a class for the invasion.";
				next;
				set .@b,select("^880000Random^000000",.n$[0],.n$[1],.n$[2],.n$[3],.n$[4],.n$[5],.n$[6],.n$[7],.n$[8],.n$[9],.n$[10],.n$[11],.n$[12],.n$[13],.n$[14],.n$[15],.n$[16],.n$[17],.n$[18],.n$[19],.n$[20],.n$[21],.n$[22],.n$[23],.n$[24]) - 1;
				mes .@n$;
				if(.a) {
					mes "Right now, you can't start a new invasion event.";
					mes "Come back in a while.";
					close;
				}
				set $TIt,0;
				set .b,.@a;
				set .c,.@b;
				awake "invasor";
				mes "A new invasion event has been started.";
				close;
			}
		}
		else if(.a > 0) {
			mes "Currently there is a"+callsub(Grammar_a_an,.n$[.c])+" invasion taking place in "+.c1$[.b]+".";
			next;
			set .@b,select("^880000Exit^000000","Cancel the current invasion.") - 1;
			mes .@n$;
			if(.@ {
				if(.a < 1) {
					mes "Currently there isn't any invasion in progress.";
					close;
				}
				set .a,0;
				announce "The invasion in "+.c1$[.b]+" has been canceled.",bc_all,0xffaa00;
				mes "The invasion in "+.c1$[.b]+" has been canceled.";
				awake "invasor";
				close;
			}
		}
		else {
			mes "Base and Job experience rates are increased by "+.r2+"% as a reward for the previous invasion.";
			next;
			set .@b,select("^880000Exit^000000","Restore the experience rates.") - 1;
			mes .@n$;
			if(.@ {
				if(.a != -1) {
					mes "Currently the experience rates aren't modified by The Invasor system.";
					close;
				}
				awake "invasor";
				mes "The experience rates has been restored.";
				close;
			}
		}
		mes "See you soon.";
		close;
	}
	end;

// Add a new message to the announcement list:
// getarg(0): Message.
// getarg(1): Color.
// getarg(2): Map. (optional)
Addmsg:
	set .@a,getarraysize($@inv_msg0$);
	if(.@a >= 10) {
		deletearray $@inv_msg0$[0],.@a - 9;
		set .@a,9;
	}
	set $@inv_msg0$[.@a],getarg(0);
	set $@inv_msg1$[.@a],getarg(1);
	set $@inv_msg2$[.@a],getarg(2,"");
	if(!.@a) donpcevent "inv_msg::On0";
	return;

// Clear the announcement list:
Clrmsg:
	set .@a,getarraysize($@inv_msg0$);
	cleararray $@inv_msg0$[0],"",.@a;
	cleararray $@inv_msg1$[0],"",.@a;
	cleararray $@inv_msg2$[0],"",.@a;
	awake "inv_msg";
	return;

Grammar_a_an:
	set .@w$," "+getarg(0);
	setarray .@a$[0],"a","e","i","o","u","h";
	set .@a,6;
	while(.@a && !.@ {
		set .@a,.@a - 1;
		set .@b,compare("_"+.@w$,"_ "+.@a$[.@a]);
	}
	if(.@ set .@w$,"n"+.@w$;
	return .@w$;
}

// Delayed announcements:
// Announces a message from the announcement list every 3 seconds.
-	script	inv_msg	-1,{

On0:
	while(getarraysize($@inv_msg0$)) {
		if($@inv_msg2$[0] == "") announce $@inv_msg0$[0],bc_all,"0x"+$@inv_msg1$[0];
		else mapannounce $@inv_msg2$[0],$@inv_msg0$[0],bc_all,"0x"+$@inv_msg1$[0];
		if(getarraysize($@inv_msg0$)) sleep 3000;
		deletearray $@inv_msg0$[0],1;
		deletearray $@inv_msg1$[0],1;
		deletearray $@inv_msg2$[0],1;
	}
	end;
}

Edited by fictionx
Link to comment
Share on other sites

0 answers to this question

Recommended Posts

There have been no answers to this question yet

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...