Jump to content
  • 0

R> automated portal event


Question

Posted (edited)

hello master scripters!

can anyone help me make this kind of event?

when the event start, there will be 5 portals spawned, 1 will proceed to the next round, 4 will warp the player back to save points,
each correct portal they enter will give the player cash point as reward, the event will continue for 3 rounds.

Edited by tokenacc001
made my own

1 answer to this question

Recommended Posts

  • 0
Posted

Hi, AnnieRuru actually has this script. Probably you'll want to try to check this out.

 

//	....... if your server has { Overwriting user function [rand__] } please be happy .......... :D
function	script	rand__	{
	.@range = getarg(0);
	.@count = getarg(2, 0);
	.@count = ( .@count == 0 || .@count > .@range )? .@range : ( .@count > 128 )? 128 : .@count;
	while ( .@i < .@count ) {
		.@r = .@save = rand( .@i, .@range -1 ) ;
		if ( getd(".@tmp1_"+ .@i ) == 0 ) {
			.@r = ( getd(".@tmp1_"+ .@r ) )? getd( ".@tmp2_"+ .@r ) : .@r;
			setd ".@tmp2_"+ .@i, .@r;
			setd ".@tmp2_"+ .@save , .@i;
			setd ".@tmp1_"+ .@save , 1;
			set getelementofarray( getarg(1), .@i ), .@r;
			if ( .@save < .@count )
				set getelementofarray( getarg(1), .@save ), .@i;
		}
		.@i++;
	}
	return .@count;
}
	

//===== eAthena Script ============================================
//= Portal Event
//===== By: =======================================================
//= ~AnnieRuru~
//===== Current Version: ==========================================
//= 1.0c
//===== Compatible With: ==========================================
//= rAthena 17092 SQL
//===== Description: ==============================================
//= keep guessing the correct portals to win
//===== Topic =====================================================
//= http://www.eathena.ws/board/index.php?showtopic=77115
//===== Additional Comments: ======================================
//= Izlude -> Alberta -> Morocc -> Payon -> Prontera
//= pvp_y_8-2 -> pvp_y_8-4 -> pvp_y_8-5 -> pvp_y_8-3 -> pvp_y_8-1
//=================================================================


//	========= Edit the Location of Starting Portal ======= Don't change the name !!! ===============
prontera,161,184,5	script	starting_portal_event	45,2,2,{
	for ( set .@i, 0; .@i < getarraysize( getvariableofnpc( .winnerid, "portal_event" ) ); set .@i, .@i +1 ) {
		if ( getvariableofnpc( .winnerid[.@i], "portal_event" ) == getcharid(3) ) {
			dispbottom "Portal Event : You have completed this round, please try again next time.";
			end;
		}
	}
	warp "pvp_y_8-2", 128,110;
	end;
}

-	script	portal_event_timer	-1,{

//	how long the event will last
OnTimer2400000: // 40 minutes
	donpcevent "::OnPortalEvent_Reset";
	end;

//	set the time to start automatically
OnMinute00: // every hour
	donpcevent "portal_event::Onstart";
	end;

}

-	script	portal_event	-1,{
	end;

OnInit:
	set .@n, strnpcinfo(1);
	if ( .@n == 0 ) {

//	==============================================
//	==== Global settings =========================

	// set the total rounds for this event
	// if your server has too few players and wanna end this event fast, make it fewer rounds
	// if your server has too many coorperative players and they end the event too soon, make it more rounds
	// min - 3, max - 5
	set .maxround, 5;

	// set the minimum GM level to allow start/end the event manually
	// to start, say "start" or "on"
	// to end, say "end" or "off"
	set .mingmlevel, 60;

	// set the minimum GM level to get the answer/debug for this event
	// to prevent some noobie event GM login normal account to cheat the answer
	// to get the answer, say "debug" or "answer"
	set .mingm_ans, 90;

	// how many winner for this event
	set .winner_amount, 3;

	// when event ends, all the players still inside the map need to warp to starting town. Note: "SavePoint" do not work
	setarray .event_end_warp$, "prontera",155,184;

//	==== Global setting end =======================
//	===============================================

		disablenpc "starting_portal_event";
		if ( .maxround < 3 ) set .maxround, 3;
		if ( .maxround > 5 ) set .maxround, 5;
		end;
	}
	disablenpc strnpcinfo(0);
	end;

L_prize:

//	===============================================
//	==== Configure how the prize give out =========

	// 1. normal method
	//	announce strcharinfo(0) +" has finish the Portal Event !", bc_all | bc_blue;
	//	getitem 501, 10;

	// 2. Race Method
	// 1st position
	if ( .win == 1 ) { 
		announce strcharinfo(0) +" won 1st prize in Portal Event !", bc_all | bc_blue;
		getitem 501, 10;
	}
	// 2nd position
	else if ( .win == 2 ) {
		announce strcharinfo(0) +" won 2nd prize in Portal Event !", bc_all | bc_blue;
		getitem 501, 5;
	}
	// 3rd position
	else if ( .win == 3 ) {
		announce strcharinfo(0) +" won 3rd prize in Portal Event !", bc_all | bc_blue;
		getitem 501, 3;
	}
	else { // the rest, 4th and so on
		announce strcharinfo(0) +" has finish the Portal Event !", bc_all | bc_blue;
		getitem 501, 1;
	}

//	==== Configure ends ============================
//	================================================

	return;
L_announce_start:
	announce "Portal Event has started", bc_all | bc_blue;
	return;
L_announce_end:
	announce "Portal Event has ended", bc_all | bc_blue;
	return;
L_final_portal_4gm: // gm should not steal the prizes from players
	dispbottom "Portal Event : This is the final portal";
	return;
Onstart:
	set .win, 0;
	deletearray .winnerid;
	callsub L_announce_start;
	enablenpc "starting_portal_event";
	initnpctimer "portal_event_timer";
	mapwarp "pvp_y_8-2", .event_end_warp$[0], atoi(.event_end_warp$[1]), atoi(.event_end_warp$[2]);
	mapwarp "pvp_y_8-4", .event_end_warp$[0], atoi(.event_end_warp$[1]), atoi(.event_end_warp$[2]);
	mapwarp "pvp_y_8-5", .event_end_warp$[0], atoi(.event_end_warp$[1]), atoi(.event_end_warp$[2]);
	mapwarp "pvp_y_8-3", .event_end_warp$[0], atoi(.event_end_warp$[1]), atoi(.event_end_warp$[2]);
	mapwarp "pvp_y_8-1", .event_end_warp$[0], atoi(.event_end_warp$[1]), atoi(.event_end_warp$[2]);
	sleep 1; // round 1
	setarray .@c1, 111,150; setarray .@c2, 147,147; setarray .@c3, 128,225; setarray .@c4, 104,231; setarray .@c5, 85,216;
	setarray .@c6, 136,227; setarray .@c7, 64,182; setarray .@c8, 116,224; setarray .@c9, 115,209; setarray .@c10, 135,208;
	setarray .@c11, 58,175; setarray .@c12, 66,172; setarray .@c13, 84,177; setarray .@c14, 86,152; setarray .@c15, 88,141;
	setarray .@c16, 51,139; setarray .@c17, 48,130; setarray .@c18, 63,122; setarray .@c19, 62,138; setarray .@c20, 87,120;
	setarray .@c21, 94,84; setarray .@c22, 85,91; setarray .@c23, 90,106; setarray .@c24, 111,87; setarray .@c25, 96,167;
	setarray .@c26, 109,175; setarray .@c27, 188,195; setarray .@c28, 172,186; setarray .@c29, 198,181; setarray .@c30, 128,116;
	setarray .@c31, 158,175; setarray .@c32, 161,162; setarray .@c33, 137,175; setarray .@c34, 134,160; setarray .@c35, 148,39;
	setarray .@c36, 125,37; setarray .@c37, 53,81; setarray .@c38, 29,77; setarray .@c39, 50,68; setarray .@c40, 77,67;
	setarray .@c41, 96,72; setarray .@c42, 137,77; setarray .@c43, 119,84; setarray .@c44, 160,84; setarray .@c45, 168,95;
	setarray .@c46, 147,99; setarray .@c47, 214,129; setarray .@c48, 212,138; setarray .@c49, 220,115; setarray .@c50, 204,122;
	setarray .@c51, 165,144; setarray .@c52, 145,107; setarray .@c53, 114,97; setarray .@c54, 136,84; setarray .@c55, 116,129;
	setarray .@c56, 119,174; setarray .@c57, 121,155; setarray .@c58, 107,140; setarray .@c59, 104,119; setarray .@c60, 116,110;
	setarray .@c61, 134,106; setarray .@c62, 136,93; setarray .@c63, 138,134; setarray .@c64, 155,121; setarray .@c65, 121,97;
	setarray .@c66, 128,139; setarray .@c67, 155,138; setarray .@c68, 139,123; setarray .@c69, 97,123; setarray .@c70, 166,124;
	set .@totalnpc, 8;
	set .@total_location, 70;
	callfunc "rand__", .@totalnpc, $@r1;
	callfunc "rand__", .@total_location, $@r2;
	deletearray .round1answer;
	set .@i, 0;
	while ( .@i < .@totalnpc ) {
		set .@r1, $@r1[.@i] +1 ;
		set .@r2, $@r2[.@i] +1 ;
		enablenpc "1_portal_event#"+ .@r1;
		movenpc "1_portal_event#"+ .@r1, getd(".@c"+ .@r2 +"[0]"), getd(".@c"+ .@r2 +"[1]");
		if ( .@i < 0 +2 ) { // 2 portals to next round
			setarray getd(".m_1_"+ .@r1 +"_$"), "pvp_y_8-4", 0,0;
			setarray .round1answer[ getarraysize(.round1answer) ], getd(".@c"+ .@r2 +"[0]"), getd(".@c"+ .@r2 +"[1]");
		}
		else if ( .@i < 2 +6 ) // 6 portals randomly warp to round 1
			setarray getd(".m_1_"+ .@r1 +"_$"), "pvp_y_8-2", 0,0;
		set .@i, .@i +1 ;
	}
	sleep 1; // round 2
	setarray .@c1, 15,234; setarray .@c2, 23,243; setarray .@c3, 28,221; setarray .@c4, 41,254; setarray .@c5, 41,224;
	setarray .@c6, 65,233; setarray .@c7, 41,190; setarray .@c8, 63,187; setarray .@c9, 64,147; setarray .@c10, 59,133;
	setarray .@c11, 32,141; setarray .@c12, 33,102; setarray .@c13, 45,93; setarray .@c14, 63,95; setarray .@c15, 70,126;
	setarray .@c16, 64,114; setarray .@c17, 46,115; setarray .@c18, 66,82; setarray .@c19, 41,67; setarray .@c20, 34,41;
	setarray .@c21, 26,25; setarray .@c22, 60,21; setarray .@c23, 48,30; setarray .@c24, 60,33; setarray .@c25, 67,57;
	setarray .@c26, 71,35; setarray .@c27, 79,55; setarray .@c28, 90,80; setarray .@c29, 96,116; setarray .@c30, 87,131;
	setarray .@c31, 99,154; setarray .@c32, 100,222; setarray .@c33, 119,222; setarray .@c34, 119,206; setarray .@c35, 93,205;
	setarray .@c36, 119,190; setarray .@c37, 87,188; setarray .@c38, 119,180; setarray .@c39, 79,160; setarray .@c40, 123,148;
	setarray .@c41, 138,142; setarray .@c42, 169,142; setarray .@c43, 170,169; setarray .@c44, 208,174; setarray .@c45, 178,165;
	setarray .@c46, 199,151; setarray .@c47, 223,116; setarray .@c48, 247,115; setarray .@c49, 247,91; setarray .@c50, 223,68;
	setarray .@c51, 247,67; setarray .@c52, 247,43; setarray .@c53, 206,31; setarray .@c54, 190,31; setarray .@c55, 134,37;
	setarray .@c56, 116,38; setarray .@c57, 90,35; setarray .@c58, 117,73; setarray .@c59, 150,84; setarray .@c60, 141,73;
	setarray .@c61, 150,57; setarray .@c62, 116,57; setarray .@c63, 170,26; setarray .@c64, 205,75; setarray .@c65, 185,83;
	setarray .@c66, 193,108; setarray .@c67, 205,55; setarray .@c68, 211,83; setarray .@c69, 206,90; setarray .@c70, 206,98;
	setarray .@c71, 206,106; setarray .@c72, 33,82; setarray .@c73, 26,59; setarray .@c74, 63,120; setarray .@c75, 73,85;
	setarray .@c76, 127,85; setarray .@c77, 163,57; setarray .@c78, 236,27; setarray .@c79, 235,101; setarray .@c80, 196,131;
	setarray .@c81, 79,125; setarray .@c82, 88,239; setarray .@c83, 113,174; setarray .@c84, 79,27; setarray .@c85, 118,27;
	setarray .@c86, 71,204; setarray .@c87, 69,239; setarray .@c88, 70,178; setarray .@c89, 71,154; setarray .@c90, 83,98;
	setarray .@c91, 119,160; setarray .@c92, 118,126; setarray .@c93, 177,102; setarray .@c94, 230,52; setarray .@c95, 233,74;
	setarray .@c96, 85,176; setarray .@c97, 48,169; setarray .@c98, 45,145; setarray .@c99, 195,54; setarray .@c100, 197,64;
	set .@totalnpc, 12;
	set .@total_location, 100;
	callfunc "rand__", .@totalnpc, $@r1;
	callfunc "rand__", .@total_location, $@r2;
	deletearray .round2answer;
	set .@i, 0;
	while ( .@i < .@totalnpc ) {
		set .@r1, $@r1[.@i] +1 ;
		set .@r2, $@r2[.@i] +1 ;
		enablenpc "2_portal_event#"+ .@r1;
		movenpc "2_portal_event#"+ .@r1, getd(".@c"+ .@r2 +"[0]"), getd(".@c"+ .@r2 +"[1]");
		if ( .@i < 0 +2 ) { // 2 portals to next round
			setarray getd(".m_2_"+ .@r1 +"_$"), "pvp_y_8-5", 0,0;
			setarray .round2answer[ getarraysize(.round2answer) ], getd(".@c"+ .@r2 +"[0]"), getd(".@c"+ .@r2 +"[1]");
		}
		else if ( .@i < 2 +7 ) // 7 portals randomly warp to round 2
			setarray getd(".m_2_"+ .@r1 +"_$"), "pvp_y_8-4", 0,0;
		else if ( .@i < 9 +3 ) // 3 portals randomly warp to round 1
			setarray getd(".m_2_"+ .@r1 +"_$"), "pvp_y_8-2", 0,0;
		set .@i, .@i +1 ;
	}
	sleep 1; // round 3
	setarray .@c1, 23,296; setarray .@c2, 49,289; setarray .@c3, 71,288; setarray .@c4, 68,270; setarray .@c5, 50,259;
	setarray .@c6, 79,256; setarray .@c7, 103,260; setarray .@c8, 120,288; setarray .@c8, 133,288; setarray .@c10, 151,278;
	setarray .@c11, 125,272; setarray .@c12, 160,296; setarray .@c13, 185,296; setarray .@c14, 198,290; setarray .@c15, 206,288;
	setarray .@c16, 222,284; setarray .@c17, 259,288; setarray .@c18, 288,258; setarray .@c19, 272,269; setarray .@c20, 275,238;
	setarray .@c21, 281,220; setarray .@c22, 299,207; setarray .@c23, 288,186; setarray .@c24, 247,251; setarray .@c25, 223,268;
	setarray .@c26, 173,267; setarray .@c27, 179,232; setarray .@c28, 189,270; setarray .@c29, 235,230; setarray .@c30, 249,218;
	setarray .@c31, 160,225; setarray .@c32, 143,249; setarray .@c33, 121,248; setarray .@c34, 116,220; setarray .@c35, 87,230;
	setarray .@c36, 80,206; setarray .@c37, 57,217; setarray .@c38, 41,241; setarray .@c39, 30,246; setarray .@c40, 30,232;
	setarray .@c41, 30,217; setarray .@c42, 26,199; setarray .@c43, 54,199; setarray .@c44, 55,183; setarray .@c45, 23,164;
	setarray .@c46, 41,162; setarray .@c47, 55,149; setarray .@c48, 102,148; setarray .@c49, 78,139; setarray .@c50, 82,109;
	setarray .@c51, 52,120; setarray .@c52, 34,130; setarray .@c53, 46,146; setarray .@c54, 74,95; setarray .@c55, 45,108;
	setarray .@c56, 23,108; setarray .@c57, 49,89; setarray .@c58, 37,87; setarray .@c59, 46,46; setarray .@c60, 100,85;
	setarray .@c61, 96,66; setarray .@c62, 133,127; setarray .@c63, 141,103; setarray .@c64, 140,85; setarray .@c65, 116,54;
	setarray .@c66, 106,33; setarray .@c67, 92,31; setarray .@c68, 75,33; setarray .@c69, 22,22; setarray .@c70, 84,54;
	setarray .@c71, 117,39; setarray .@c72, 121,31; setarray .@c73, 145,38; setarray .@c74, 128,59; setarray .@c75, 155,60;
	setarray .@c76, 153,71; setarray .@c77, 171,76; setarray .@c78, 167,52; setarray .@c79, 160,117; setarray .@c80, 119,95;
	setarray .@c81, 159,18; setarray .@c82, 188,33; setarray .@c83, 207,34; setarray .@c84, 197,66; setarray .@c85, 231,30;
	setarray .@c86, 270,23; setarray .@c87, 254,55; setarray .@c88, 289,63; setarray .@c89, 288,84; setarray .@c90, 288,97;
	setarray .@c91, 288,110; setarray .@c92, 288,129; setarray .@c93, 267,80; setarray .@c94, 243,73; setarray .@c95, 248,97;
	setarray .@c96, 240,113; setarray .@c97, 225,113; setarray .@c98, 204,88; setarray .@c99, 186,99; setarray .@c100, 266,111;
	setarray .@c101, 268,123; setarray .@c102, 278,134; setarray .@c103, 244,152; setarray .@c104, 284,171; setarray .@c105, 268,188;
	setarray .@c106, 232,170; setarray .@c107, 233,190; setarray .@c108, 230,128; setarray .@c109, 35,68; setarray .@c110, 74,132;
	setarray .@c111, 70,153; setarray .@c112, 78,185; setarray .@c113, 79,239; setarray .@c114, 210,249; setarray .@c115, 234,212;
	setarray .@c116, 285,285; setarray .@c117, 254,198; setarray .@c118, 202,219; setarray .@c119, 214,161; setarray .@c120, 198,133;
	set .@totalnpc, 14;
	set .@total_location, 120;
	callfunc "rand__", .@totalnpc, $@r1;
	callfunc "rand__", .@total_location, $@r2;
	deletearray .round3answer;
	set .@i, 0;
	while ( .@i < .@totalnpc ) {
		set .@r1, $@r1[.@i] +1 ;
		set .@r2, $@r2[.@i] +1 ;
		enablenpc "3_portal_event#"+ .@r1;
		movenpc "3_portal_event#"+ .@r1, getd(".@c"+ .@r2 +"[0]"), getd(".@c"+ .@r2 +"[1]");
		if ( .@i < 0 +2 ) { // 2 portals to next round
			if ( .maxround == 3 )
				setarray getd(".m_3_"+ .@r1 +"_$"), "give prize", 0,0;
			else
				setarray getd(".m_3_"+ .@r1 +"_$"), "pvp_y_8-3", 0,0;
			setarray .round3answer[ getarraysize(.round3answer) ], getd(".@c"+ .@r2 +"[0]"), getd(".@c"+ .@r2 +"[1]");
		}
		else if ( .@i < 2 +7 ) // 7 portals randomly warp to round 3
			setarray getd(".m_3_"+ .@r1 +"_$"), "pvp_y_8-5", 0,0;
		else if ( .@i < 9 +3 ) // 3 portals randomly warp to round 2
			setarray getd(".m_3_"+ .@r1 +"_$"), "pvp_y_8-4", 0,0;
		else if ( .@i < 12 +2 ) // 2 portals randomly warp to round 1
			setarray getd(".m_3_"+ .@r1 +"_$"), "pvp_y_8-2", 0,0;
		set .@i, .@i +1 ;
	}
	if ( .maxround == 3 ) end;
	sleep 1; // round 4
	setarray .@c1, 227,330; setarray .@c2, 218,306; setarray .@c3, 253,308; setarray .@c4, 257,285; setarray .@c5, 276,282;
	setarray .@c6, 215,283; setarray .@c7, 276,248; setarray .@c8, 237,252; setarray .@c9, 217,229; setarray .@c10, 273,228;
	setarray .@c11, 239,201; setarray .@c12, 253,204; setarray .@c13, 237,176; setarray .@c14, 203,183; setarray .@c15, 195,180;
	setarray .@c16, 270,152; setarray .@c17, 270,135; setarray .@c18, 257,127; setarray .@c19, 243,159; setarray .@c20, 223,116;
	setarray .@c21, 211,120; setarray .@c22, 219,100; setarray .@c23, 202,108; setarray .@c24, 261,110; setarray .@c25, 268,89;
	setarray .@c26, 248,63; setarray .@c27, 263,65; setarray .@c28, 238,53; setarray .@c29, 207,41; setarray .@c30, 206,68;
	setarray .@c31, 144,65; setarray .@c32, 182,84; setarray .@c33, 139,41; setarray .@c34, 121,27; setarray .@c35, 106,47;
	setarray .@c36, 128,80; setarray .@c37, 91,78; setarray .@c38, 65,67; setarray .@c39, 78,48; setarray .@c40, 88,105;
	setarray .@c41, 56,113; setarray .@c42, 14,143; setarray .@c43, 24,133; setarray .@c44, 64,157; setarray .@c45, 96,89;
	setarray .@c46, 89,122; setarray .@c47, 125,115; setarray .@c48, 94,143; setarray .@c49, 72,182; setarray .@c50, 70,189;
	setarray .@c51, 101,190; setarray .@c52, 72,224; setarray .@c53, 72,326; setarray .@c54, 83,335; setarray .@c55, 92,305;
	setarray .@c56, 107,327; setarray .@c57, 155,328; setarray .@c58, 124,272; setarray .@c59, 168,287; setarray .@c60, 133,323;
	setarray .@c61, 156,247; setarray .@c62, 126,204; setarray .@c63, 190,233; setarray .@c64, 166,188; setarray .@c65, 135,158;
	setarray .@c66, 127,168; setarray .@c67, 131,146; setarray .@c68, 151,125; setarray .@c69, 175,139; setarray .@c70, 205,143;
	setarray .@c71, 194,136; setarray .@c72, 203,90; setarray .@c73, 195,84; setarray .@c74, 140,86; setarray .@c75, 155,107;
	setarray .@c76, 220,132; setarray .@c77, 229,157; setarray .@c78, 175,156; setarray .@c79, 155,266; setarray .@c80, 139,260;
	setarray .@c81, 134,238; setarray .@c82, 115,183; setarray .@c83, 179,251; setarray .@c84, 248,226; setarray .@c85, 219,262;
	setarray .@c86, 242,133; setarray .@c87, 265,170; setarray .@c88, 212,108; setarray .@c89, 183,298; setarray .@c90, 199,305;
	setarray .@c91, 177,177; setarray .@c92, 110,201; setarray .@c93, 248,278; setarray .@c94, 173,242; setarray .@c95, 92,215;
	setarray .@c96, 104,157; setarray .@c97, 133,124; setarray .@c98, 132,194; setarray .@c99, 90,286; setarray .@c100, 156,230;
	setarray .@c101, 156,209; setarray .@c102, 275,144; setarray .@c103, 186,113; setarray .@c104, 119,60; setarray .@c105, 141,335;
	set .@totalnpc, 14;
	set .@total_location, 105;
	callfunc "rand__", .@totalnpc, $@r1;
	callfunc "rand__", .@total_location, $@r2;
	deletearray .round4answer;
	set .@i, 0;
	while ( .@i < .@totalnpc ) {
		set .@r1, $@r1[.@i] +1 ;
		set .@r2, $@r2[.@i] +1 ;
		enablenpc "4_portal_event#"+ .@r1;
		movenpc "4_portal_event#"+ .@r1, getd(".@c"+ .@r2 +"[0]"), getd(".@c"+ .@r2 +"[1]");
		if ( .@i < 0 +2 ) { // 2 portals to next round
			if ( .maxround == 4 )
				setarray getd(".m_4_"+ .@r1 +"_$"), "give prize", 0,0;
			else
				setarray getd(".m_4_"+ .@r1 +"_$"), "pvp_y_8-1", 0,0;
			setarray .round4answer[ getarraysize(.round4answer) ], getd(".@c"+ .@r2 +"[0]"), getd(".@c"+ .@r2 +"[1]");
		}
		else if ( .@i < 2 +7 ) // 7 portals randomly warp to round 4
			setarray getd(".m_4_"+ .@r1 +"_$"), "pvp_y_8-3", 0,0;
		else if ( .@i < 9 +3 ) // 3 portals randomly warp to round 3
			setarray getd(".m_4_"+ .@r1 +"_$"), "pvp_y_8-5", 0,0;
		else if ( .@i < 12 +2 ) // 2 portals randomly warp to round 2
			setarray getd(".m_4_"+ .@r1 +"_$"), "pvp_y_8-4", 0,0;
		set .@i, .@i +1 ;
	}
	if ( .maxround == 4 ) end;
	sleep 1; // round 5
	setarray .@c1, 185,108; setarray .@c2, 155,25; setarray .@c3, 135,40; setarray .@c4, 143,63; setarray .@c5, 140,82;
	setarray .@c6, 133,107; setarray .@c7, 119,40; setarray .@c8, 91,45; setarray .@c9, 71,37; setarray .@c10, 60,42;
	setarray .@c11, 41,67; setarray .@c12, 41,44; setarray .@c13, 79,67; setarray .@c14, 134,92; setarray .@c15, 52,90;
	setarray .@c16, 98,74; setarray .@c17, 84,89; setarray .@c18, 74,90; setarray .@c19, 72,99; setarray .@c20, 29,110;
	setarray .@c21, 223,230; setarray .@c22, 115,178; setarray .@c23, 40,117; setarray .@c24, 38,134; setarray .@c25, 32,156;
	setarray .@c26, 37,170; setarray .@c27, 40,181; setarray .@c28, 23,204; setarray .@c29, 40,104; setarray .@c30, 69,123;
	setarray .@c31, 225,160; setarray .@c32, 85,126; setarray .@c33, 68,142; setarray .@c34, 58,157; setarray .@c35, 139,151;
	setarray .@c36, 183,144; setarray .@c37, 36,226; setarray .@c38, 65,228; setarray .@c39, 34,241; setarray .@c40, 42,268;
	setarray .@c41, 40,280; setarray .@c42, 50,293; setarray .@c43, 58,294; setarray .@c44, 74,270; setarray .@c45, 58,249;
	setarray .@c46, 50,227; setarray .@c47, 71,284; setarray .@c48, 80,294; setarray .@c49, 34,303; setarray .@c50, 45,346;
	setarray .@c51, 124,152; setarray .@c52, 89,333; setarray .@c53, 105,335; setarray .@c54, 156,360; setarray .@c55, 108,144;
	setarray .@c56, 121,144; setarray .@c57, 259,339; setarray .@c58, 94,167; setarray .@c59, 99,150; setarray .@c60, 94,158;
	setarray .@c61, 238,318; setarray .@c62, 227,283; setarray .@c63, 92,184; setarray .@c64, 263,279; setarray .@c65, 273,257;
	setarray .@c66, 280,236; setarray .@c67, 270,219; setarray .@c68, 239,267; setarray .@c69, 289,203; setarray .@c70, 280,195;
	setarray .@c71, 248,229; setarray .@c72, 263,228; setarray .@c73, 256,192; setarray .@c74, 272,187; setarray .@c75, 269,160;
	setarray .@c76, 281,136; setarray .@c77, 270,127; setarray .@c78, 272,107; setarray .@c79, 273,95; setarray .@c80, 272,78;
	setarray .@c81, 37,353; setarray .@c82, 271,42; setarray .@c83, 256,40; setarray .@c84, 237,39; setarray .@c85, 220,40;
	setarray .@c86, 205,28; setarray .@c87, 188,48; setarray .@c88, 165,41; setarray .@c89, 131,56; setarray .@c90, 167,83;
	setarray .@c91, 165,99; setarray .@c92, 186,94; setarray .@c93, 200,98; setarray .@c94, 216,100; setarray .@c95, 197,57;
	setarray .@c96, 195,72; setarray .@c97, 208,73; setarray .@c98, 257,102; setarray .@c99, 256,123; setarray .@c100, 241,142;
	setarray .@c101, 221,116; setarray .@c102, 236,108; setarray .@c103, 180,77; setarray .@c104, 183,130; setarray .@c105, 209,153;
	setarray .@c106, 220,181; setarray .@c107, 204,191; setarray .@c108, 180,183; setarray .@c109, 184,158; setarray .@c110, 165,167;
	setarray .@c111, 204,216; setarray .@c112, 178,222; setarray .@c113, 186,248; setarray .@c114, 219,227; setarray .@c115, 215,247;
	setarray .@c116, 210,265; setarray .@c117, 192,268; setarray .@c118, 125,251; setarray .@c119, 120,268; setarray .@c120, 102,266;
	setarray .@c121, 96,255; setarray .@c122, 85,248; setarray .@c123, 95,223; setarray .@c124, 133,222; setarray .@c125, 107,213;
	setarray .@c126, 107,191; setarray .@c127, 105,167; setarray .@c128, 132,182;
	set .@totalnpc, 14;
	set .@total_location, 128;
	callfunc "rand__", .@totalnpc, $@r1;
	callfunc "rand__", .@total_location, $@r2;
	deletearray .round5answer;
	set .@i, 0;
	while ( .@i < .@totalnpc ) {
		set .@r1, $@r1[.@i] +1 ;
		set .@r2, $@r2[.@i] +1 ;
		enablenpc "5_portal_event#"+ .@r1;
		movenpc "5_portal_event#"+ .@r1, getd(".@c"+ .@r2 +"[0]"), getd(".@c"+ .@r2 +"[1]");
		if ( .@i < 0 +2 ) { // 2 portals to victory
			setarray getd(".m_5_"+ .@r1 +"_$"), "give prize", 0,0;
			setarray .round5answer[ getarraysize(.round5answer) ], getd(".@c"+ .@r2 +"[0]"), getd(".@c"+ .@r2 +"[1]");
		}
		else if ( .@i < 2 +7 ) // 7 portals randomly warp to round 5
			setarray getd(".m_5_"+ .@r1 +"_$"), "pvp_y_8-1", 0,0;
		else if ( .@i < 9 +3 ) // 3 portals randomly warp to round 4
			setarray getd(".m_5_"+ .@r1 +"_$"), "pvp_y_8-3", 0,0;
		else if ( .@i < 12 +2 ) // 2 portals randomly warp to round 3
			setarray getd(".m_5_"+ .@r1 +"_$"), "pvp_y_8-5", 0,0;
		set .@i, .@i +1 ;
	}
	deletearray $@r1;
	deletearray $@r2;
	end;

OnPortalEvent_Reset:
	if ( atoi( strnpcinfo(1) ) == 0 ) {
		stopnpctimer "portal_event_timer";
		callsub L_announce_end;
		disablenpc "starting_portal_event";
		sleep 8000;
		mapwarp "pvp_y_8-2", .event_end_warp$[0], atoi(.event_end_warp$[1]), atoi(.event_end_warp$[2]);
		mapwarp "pvp_y_8-4", .event_end_warp$[0], atoi(.event_end_warp$[1]), atoi(.event_end_warp$[2]);
		mapwarp "pvp_y_8-5", .event_end_warp$[0], atoi(.event_end_warp$[1]), atoi(.event_end_warp$[2]);
		mapwarp "pvp_y_8-3", .event_end_warp$[0], atoi(.event_end_warp$[1]), atoi(.event_end_warp$[2]);
		mapwarp "pvp_y_8-1", .event_end_warp$[0], atoi(.event_end_warp$[1]), atoi(.event_end_warp$[2]);
		end;
	}
	deletearray getd(".m_"+ strnpcinfo(1) +"_"+ strnpcinfo(2) +"_$");
	disablenpc strnpcinfo(0);
	end;

OnWhisperGlobal:
	if ( getgmlevel() < .mingmlevel ) end;
	else if ( compare( @whispervar0$, "on" ) || compare( @whispervar0$, "start" ) )
		goto Onstart;
	else if ( compare( @whispervar0$, "off" ) || compare( @whispervar0$, "end" ) )
		donpcevent "::OnPortalEvent_Reset";
	else if ( getgmlevel() >= .mingm_ans && ( compare( @whispervar0$, "debug" ) || compare( @whispervar0$, "answer" ) ) ) {
		for ( set .@j, 1; .@j <= .maxround; set .@j, .@j +1 ) {
			dispbottom "Round "+ .@j +":";
			for ( set .@i, 0; .@i < getarraysize( getd(".round"+ .@j +"answer") ); set .@i, .@i +2 )
				dispbottom "    x = "+ getd(".round"+ .@j +"answer["+ .@i +"]") +", y = "+ getd(".round"+ .@j +"answer["+( .@i +1 )+"]");
		}
	}
	end;

OnTouch:
	for ( set .@i, 0; .@i < getarraysize(.winnerid); set .@i, .@i +1 ) {
		if ( .winnerid[.@i] == getcharid(3) ) end;
	}
	set .@n, strnpcinfo(1);
	if ( getd(".m_"+ .@n +"_"+ strnpcinfo(2) +"_$[0]") == "give prize" ) {
		if ( getgmlevel() >= .mingmlevel ) {
			callsub L_final_portal_4gm;
			end;
		}
		set .win, .win + 1;
		callsub L_prize;
		warp .event_end_warp$[0], atoi(.event_end_warp$[1]), atoi(.event_end_warp$[2]);
		set .winnerid[ getarraysize(.winnerid) ], getcharid(3);
		if ( getarraysize(.winnerid) == .winner_amount )
			donpcevent "::OnPortalEvent_Reset";
	}
	else if ( getd(".m_"+ .@n +"_"+ strnpcinfo(2) +"_$[0]") == "" )
		end;
	else
		warp getd(".m_"+ .@n +"_"+ strnpcinfo(2) +"_$[0]"), atoi( getd(".m_"+ .@n +"_"+ strnpcinfo(2) +"_$[1]") ), atoi( getd(".m_"+ .@n +"_"+ strnpcinfo(2) +"_$[2]") );
	end;
}

pvp_y_8-2,0,0,5	duplicate(portal_event)	1_portal_event#1	45,2,2
pvp_y_8-2,0,0,5	duplicate(portal_event)	1_portal_event#2	45,2,2
pvp_y_8-2,0,0,5	duplicate(portal_event)	1_portal_event#3	45,2,2
pvp_y_8-2,0,0,5	duplicate(portal_event)	1_portal_event#4	45,2,2
pvp_y_8-2,0,0,5	duplicate(portal_event)	1_portal_event#5	45,2,2
pvp_y_8-2,0,0,5	duplicate(portal_event)	1_portal_event#6	45,2,2
pvp_y_8-2,0,0,5	duplicate(portal_event)	1_portal_event#7	45,2,2
pvp_y_8-2,0,0,5	duplicate(portal_event)	1_portal_event#8	45,2,2

//	this is needed because there is a short passageway at right down corner of izlude town
pvp_y_8-2,177,56,5	warp	#portal_event_debug	2,2,pvp_y_8-2,128,110

pvp_y_8-4,0,0,5	duplicate(portal_event)	2_portal_event#1	45,2,2
pvp_y_8-4,0,0,5	duplicate(portal_event)	2_portal_event#2	45,2,2
pvp_y_8-4,0,0,5	duplicate(portal_event)	2_portal_event#3	45,2,2
pvp_y_8-4,0,0,5	duplicate(portal_event)	2_portal_event#4	45,2,2
pvp_y_8-4,0,0,5	duplicate(portal_event)	2_portal_event#5	45,2,2
pvp_y_8-4,0,0,5	duplicate(portal_event)	2_portal_event#6	45,2,2
pvp_y_8-4,0,0,5	duplicate(portal_event)	2_portal_event#7	45,2,2
pvp_y_8-4,0,0,5	duplicate(portal_event)	2_portal_event#8	45,2,2
pvp_y_8-4,0,0,5	duplicate(portal_event)	2_portal_event#9	45,2,2
pvp_y_8-4,0,0,5	duplicate(portal_event)	2_portal_event#10	45,2,2
pvp_y_8-4,0,0,5	duplicate(portal_event)	2_portal_event#11	45,2,2
pvp_y_8-4,0,0,5	duplicate(portal_event)	2_portal_event#12	45,2,2

pvp_y_8-5,0,0,5	duplicate(portal_event)	3_portal_event#1	45,2,2
pvp_y_8-5,0,0,5	duplicate(portal_event)	3_portal_event#2	45,2,2
pvp_y_8-5,0,0,5	duplicate(portal_event)	3_portal_event#3	45,2,2
pvp_y_8-5,0,0,5	duplicate(portal_event)	3_portal_event#4	45,2,2
pvp_y_8-5,0,0,5	duplicate(portal_event)	3_portal_event#5	45,2,2
pvp_y_8-5,0,0,5	duplicate(portal_event)	3_portal_event#6	45,2,2
pvp_y_8-5,0,0,5	duplicate(portal_event)	3_portal_event#7	45,2,2
pvp_y_8-5,0,0,5	duplicate(portal_event)	3_portal_event#8	45,2,2
pvp_y_8-5,0,0,5	duplicate(portal_event)	3_portal_event#9	45,2,2
pvp_y_8-5,0,0,5	duplicate(portal_event)	3_portal_event#10	45,2,2
pvp_y_8-5,0,0,5	duplicate(portal_event)	3_portal_event#11	45,2,2
pvp_y_8-5,0,0,5	duplicate(portal_event)	3_portal_event#12	45,2,2
pvp_y_8-5,0,0,5	duplicate(portal_event)	3_portal_event#13	45,2,2
pvp_y_8-5,0,0,5	duplicate(portal_event)	3_portal_event#14	45,2,2

pvp_y_8-3,0,0,5	duplicate(portal_event)	4_portal_event#1	45,2,2
pvp_y_8-3,0,0,5	duplicate(portal_event)	4_portal_event#2	45,2,2
pvp_y_8-3,0,0,5	duplicate(portal_event)	4_portal_event#3	45,2,2
pvp_y_8-3,0,0,5	duplicate(portal_event)	4_portal_event#4	45,2,2
pvp_y_8-3,0,0,5	duplicate(portal_event)	4_portal_event#5	45,2,2
pvp_y_8-3,0,0,5	duplicate(portal_event)	4_portal_event#6	45,2,2
pvp_y_8-3,0,0,5	duplicate(portal_event)	4_portal_event#7	45,2,2
pvp_y_8-3,0,0,5	duplicate(portal_event)	4_portal_event#8	45,2,2
pvp_y_8-3,0,0,5	duplicate(portal_event)	4_portal_event#9	45,2,2
pvp_y_8-3,0,0,5	duplicate(portal_event)	4_portal_event#10	45,2,2
pvp_y_8-3,0,0,5	duplicate(portal_event)	4_portal_event#11	45,2,2
pvp_y_8-3,0,0,5	duplicate(portal_event)	4_portal_event#12	45,2,2
pvp_y_8-3,0,0,5	duplicate(portal_event)	4_portal_event#13	45,2,2
pvp_y_8-3,0,0,5	duplicate(portal_event)	4_portal_event#14	45,2,2

pvp_y_8-1,0,0,5	duplicate(portal_event)	5_portal_event#1	45,2,2
pvp_y_8-1,0,0,5	duplicate(portal_event)	5_portal_event#2	45,2,2
pvp_y_8-1,0,0,5	duplicate(portal_event)	5_portal_event#3	45,2,2
pvp_y_8-1,0,0,5	duplicate(portal_event)	5_portal_event#4	45,2,2
pvp_y_8-1,0,0,5	duplicate(portal_event)	5_portal_event#5	45,2,2
pvp_y_8-1,0,0,5	duplicate(portal_event)	5_portal_event#6	45,2,2
pvp_y_8-1,0,0,5	duplicate(portal_event)	5_portal_event#7	45,2,2
pvp_y_8-1,0,0,5	duplicate(portal_event)	5_portal_event#8	45,2,2
pvp_y_8-1,0,0,5	duplicate(portal_event)	5_portal_event#9	45,2,2
pvp_y_8-1,0,0,5	duplicate(portal_event)	5_portal_event#10	45,2,2
pvp_y_8-1,0,0,5	duplicate(portal_event)	5_portal_event#11	45,2,2
pvp_y_8-1,0,0,5	duplicate(portal_event)	5_portal_event#12	45,2,2
pvp_y_8-1,0,0,5	duplicate(portal_event)	5_portal_event#13	45,2,2
pvp_y_8-1,0,0,5	duplicate(portal_event)	5_portal_event#14	45,2,2

pvp_y_8-2	mapflag	nowarp
pvp_y_8-4	mapflag	nowarp
pvp_y_8-5	mapflag	nowarp
pvp_y_8-3	mapflag	nowarp
pvp_y_8-1	mapflag	nowarp

pvp_y_8-2	mapflag	nowarpto
pvp_y_8-4	mapflag	nowarpto
pvp_y_8-5	mapflag	nowarpto
pvp_y_8-3	mapflag	nowarpto
pvp_y_8-1	mapflag	nowarpto

pvp_y_8-2	mapflag	noteleport
pvp_y_8-4	mapflag	noteleport
pvp_y_8-5	mapflag	noteleport
pvp_y_8-3	mapflag	noteleport
pvp_y_8-1	mapflag	noteleport

pvp_y_8-2	mapflag	nomemo
pvp_y_8-4	mapflag	nomemo
pvp_y_8-5	mapflag	nomemo
pvp_y_8-3	mapflag	nomemo
pvp_y_8-1	mapflag	nomemo

pvp_y_8-2	mapflag	nosave	SavePoint
pvp_y_8-4	mapflag	nosave	SavePoint
pvp_y_8-5	mapflag	nosave	SavePoint
pvp_y_8-3	mapflag	nosave	SavePoint
pvp_y_8-1	mapflag	nosave	SavePoint

 

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.

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...