Jump to content
gnashxalex

Warp devuelta al punto de inicio.

Recommended Posts

Buenas, intentaré explicar lo mejor que pueda.

Script

-	script	Event_Manager	FAKE_NPC,{
OnInit:
	// 1 = ITEM
	// 2 = solo $CASH
	// para items y ejemplo #CASHPOINTS,  1|2.
	//$event_options = 1|2
	$event_options = 1;
	
	// 1 = items
	setarray $event_item_reward,
		501, 10,
		502, 5;
		
	// recompensas variables.
	$event_var$ = "#EVENTPOINTS";
	$event_var_name$ = "Event Points";
	
	// Cantidad variable
	$event_var_gain = 1;
	
	$event_item_arr = getarraysize($event_item_reward);
	
	// @eventstart GM
	bindatcmd "eventstart", strnpcinfo(0)+"::OnStart",60,60;
	
	// @eventjoin
	bindatcmd "eventjoin", strnpcinfo(0)+"::OnJoinEvent";
	end;
	
OnStart:
	mes "Cual quieres iniciar:";
	next;
	switch(select("~ Bombring","~ Dice","~ LMS","~ Poring Catcher","~ NvZ","~ Poring Hunter")) {
	case 1: [email protected]$ = "Event_Bombring"; break;
	case 2: [email protected]$ = "Event_Dice"; break;
	case 3: [email protected]$ = "Event_LMS"; break;
	case 4: [email protected]$ = "Poring_Catcher"; break;
	case 5: [email protected]$ = "Event_NvZ"; break;
	case 6: [email protected]$ = "Poring_Hunter"; break;
	}
	donpcevent [email protected]$+"::OnStart";
	end;

OnJoinEvent:
	mes "[ Event Status ]";
	mes "Eventos : ";
	next;
	switch(select(
		"Bombring Event - "+ ((getvariableofnpc(.start,"Event_Bombring") == 1) ? "^0000ffParticipar":((getvariableofnpc(.start,"Event_Bombring") == 2) ? "^0000ffEvento en Progreso":"^ff0000No Disponible"))+"^000000",
		"Dice Event - "+ ((getvariableofnpc(.start,"Event_Dice") == 1) ? "^0000ffParticipar":((getvariableofnpc(.start,"Event_Dice") == 2) ? "^0000ffEvento en Progreso":"^ff0000No Disponible"))+"^000000",
		"Last Man Standing - "+ ((getvariableofnpc(.start,"Event_LMS") == 1) ? "^0000ffParticipar":((getvariableofnpc(.start,"Event_LMS") == 2) ? "^0000ffEvento en Progreso":"^ff0000No Disponible"))+"^000000",
		"Poring Catcher - "+ ((getvariableofnpc(.start,"Poring_Catcher") == 1) ? "^0000ffParticipar":((getvariableofnpc(.start,"Poring_Catcher") == 2) ? "^0000ffEvento en Progreso":"^ff0000No Disponible"))+"^000000",
		"Novice v Zombie Event - "+ ((getvariableofnpc(.start,"Event_NvZ") == 1) ? "^0000ffParticipar":((getvariableofnpc(.start,"Event_NvZ") == 2) ? "^0000ffEvento en Progreso":"^ff0000No Disponible"))+"^000000", 
		"Poring Hunter Event - "+ ((getvariableofnpc(.start,"Poring_Hunter") == 1) ? "^0000ffParticipar":((getvariableofnpc(.start,"Poring_Hunter") == 2) ? "^0000ffEvento en Progreso":"^ff0000No Disponible"))+"^000000" 
	)) {
	case 1:
		[email protected] = getvariableofnpc(.start,"Event_Bombring");
		[email protected]$ = "quiz_02"; [email protected] = 59; [email protected] = 345;
		break;
		
	case 2:
		[email protected] = getvariableofnpc(.start,"Event_Dice");
		[email protected]$ = "quiz_02"; [email protected] = 55; [email protected] = 87;
		break;
		
	case 3:
		[email protected] = getvariableofnpc(.start,"Event_LMS");
		[email protected]$ = "06guild_01"; [email protected] = 0; [email protected] = 0;
		break;
		
	case 4:
		[email protected] = getvariableofnpc(.start,"Poring_Catcher");
		[email protected]$ = "poring_w01"; [email protected] = 100; [email protected] = 100;
		break;
		
	case 5:
		[email protected] = getvariableofnpc(.start,"Event_NvZ");
		if ( BaseLevel > 1 || Class != 0 ) {
			mes "Only Lv 1 Novice can enter.";
			close;
		}
		sc_start SC_DECREASEAGI,600000,10;
		[email protected]$ = "quiz_01"; [email protected] = 42; [email protected] = 369;
		break;
		
	case 6:
		[email protected] = getvariableofnpc(.start,"Poring_Hunter");
		getinventorylist;
		[email protected]$ = "pvp_n_1-2"; [email protected] = 0; [email protected] = 0;
		@phunter_points = 0;
		break;
	}
	if ( [email protected] ) {
		mes "Evento no disponible.";
		close;
	} else if ( [email protected] == 2 ) {
		mes "Evento en Progreso.";
		close;
	}
	percentheal 100,100;
	warp [email protected]$, [email protected], [email protected];
	end;

	// OnClock<hour><minute>: donpcevent "<npc_name>::OnStart";
	OnClock0000: donpcevent "Event_Bombring::OnStart"; end; //----- 12 mn
	OnClock0100: donpcevent "Event_Dice::OnStart"; end;
	OnClock0200: donpcevent "Event_LMS::OnStart"; end;
	OnClock0300: donpcevent "Poring_Catcher::OnStart"; end;
	OnClock0400: donpcevent "Event_NvZ::OnStart"; end;
	OnClock0500: donpcevent "Poring_Hunter::OnStart"; end;
	OnClock0600: donpcevent "Event_Bombring::OnStart"; end; //----- 6 am
	OnClock0700: donpcevent "Event_Dice::OnStart"; end;
	OnClock0800: donpcevent "Event_LMS::OnStart"; end;
	OnClock0900: donpcevent "Poring_Catcher::OnStart"; end;
	OnClock1000: donpcevent "Event_NvZ::OnStart"; end;
	OnClock1100: donpcevent "Poring_Hunter::OnStart"; end;
	OnClock1200: donpcevent "Event_Bombring::OnStart"; end; //----- 12 nn
	OnClock1300: donpcevent "Event_Dice::OnStart"; end;
	OnClock1400: donpcevent "Event_LMS::OnStart"; end;
	OnClock1500: donpcevent "Poring_Catcher::OnStart"; end;
	OnClock1600: donpcevent "Event_NvZ::OnStart"; end;
	OnClock1700: donpcevent "Poring_Hunter::OnStart"; end;
	OnClock1800: donpcevent "Event_Bombring::OnStart"; end; //----- 6 pm
	OnClock1900: donpcevent "Event_Dice::OnStart"; end;
	OnClock2000: donpcevent "Event_LMS::OnStart"; end;
	OnClock2100: donpcevent "Poring_Catcher::OnStart"; end;
	OnClock2200: donpcevent "Event_NvZ::OnStart"; end;
	OnClock2300: donpcevent "Poring_Hunter::OnStart"; end; //----- 11 pm
}

// Bombring Event

-	script	Event_Bombring	-1,{
OnInit:
	// Mapflags
	setarray [email protected],
		mf_nowarp,
		mf_nowarpto,
		mf_noskill,
		mf_noteleport,
		mf_nomemo,
		mf_nosave,
		mf_noicewall,
		mf_nobranch,
		mf_noreturn,
		mf_nocommand;
		
	for ( [email protected] = 0; [email protected] < getarraysize([email protected]); [email protected]++)
		setmapflag "quiz_02", [email protected][[email protected]];
	end;

OnStart:
	if ( .start ) end;
	.round = 0;
	.start = 1;
	killmonsterall "quiz_02";
	announce "Bombring: Después de 1 minuto, el evento se cerrará.",0;
	sleep 10000;
	announce "Bombring: Así que por favor si quieres unirte. usar @eventjoin.",0;
	sleep 60000;
	announce "Bombring: La entrada al evento ya está cerrada.",bc_all,0x0ceedb;
	if ( getmapusers("quiz_02") < 1 ) {
		announce "Bombring: No hay suficientes participantes.",bc_all,0x0ceedb;
		.start = false;
		mapwarp "quiz_02", "prontera", 150, 180; // warp out.
		end;
	}
	.start = 2;
	sleep 3500;
	mapannounce "quiz_02","Estamos a punto de comenzar el evento.",bc_map,0x0ceedb;
	sleep 2500;
	mapannounce "quiz_02","Las reglas son simples.",bc_map,0x0ceedb;
	sleep 2000;
	mapannounce "quiz_02","El evento durará 30 segundos durante 5 rondas en total.",bc_map,0x0ceedb;
	sleep 2500;
	mapannounce "quiz_02","Todo lo que tienes que hacer es evitar Bombrings y mantenerte con vida.",bc_map,0x0ceedb;
	sleep 2000;
	mapannounce "quiz_02","Eso es todo. Vamos a empezar.",bc_map,0x0ceedb;
	sleep 3000;
	while ( .round < 5 ) {
		[email protected] = getmapusers("quiz_02");
		.round++;
		mapannounce "quiz_02","Round "+.round,bc_map,0x0ceedb;
		areamonster "quiz_02",48,334,71,357,"¡Corre por tu vida!",1904, 5 * [email protected] * .round;
		sleep 10000 - ( 1000*.round );
	}
	[email protected] = getmapusers("quiz_02");
	if ( [email protected] )
		announce "Bombring: Nadie sobrevivió.",bc_all,0x0ceedb;
	else if ( [email protected] ) {
		[email protected] = getmapunits(BL_PC,"quiz_02",[email protected]);
		if ( [email protected] > 1 ) announce "Muchos jugadores han ganado el Evento Bombring..",bc_all,0x0ceedb;
		for ( [email protected] = 0; [email protected] < getarraysize([email protected]); [email protected]++) {
			attachrid [email protected][[email protected]];
			if ( [email protected] == 1 ) announce strcharinfo(0)+" ha ganado el Evento Bombring.",bc_all,0x0ceedb;
			if ( $event_options&1 ) {
				for ( [email protected] = 0; [email protected] < $event_item_arr; [email protected] += 2 )
					getitem $event_item_reward[[email protected]], $event_item_reward[[email protected]+1];
			}
			if ( $event_options&2 ) {
				setd $event_var$, getd($event_var$)+$event_var_gain;
				dispbottom "You gained "+$event_var_gain+" "+$event_var_name$+". You now have "+getd($event_var$)+" "+$event_var_name$+".";
			}
		}
		detachrid;
	}
	.start = false;
	sleep 5000;
	mapwarp "quiz_02","prontera",rand(148,163),rand(167,186);
	end;
	
OnPCDieEvent:
	if ( .start && strcharinfo(3) == "quiz_02" )
		warp "prontera",rand(148,163),rand(167,186);
	end;
}

// Dice Event

-	script	Event_Dice	-1,{
OnInit:		
	// Mapflags
	setarray [email protected],
		mf_nowarp,
		mf_nowarpto,
		mf_noskill,
		mf_noteleport,
		mf_nomemo,
		mf_nosave,
		mf_noicewall,
		mf_nobranch,
		mf_noreturn;
		
	for ( [email protected] = 0; [email protected] < getarraysize([email protected]); [email protected]++)
		setmapflag "quiz_02", [email protected][[email protected]];
	end;

OnStart:
	if ( .start ) end;
	.start = 1;
	for([email protected] = 1;[email protected] <= 4;[email protected]++) {
		disablenpc "Back#"[email protected];
		disablenpc "Box "[email protected];
	}
	announce "Dice: Después de 1 minuto, el evento se cerrará.",0;
	sleep 10000;
	announce "Dice: Así que por favor si quieres unirte. usar @eventjoin.",0;
	sleep 60000;
	announce "Dice: La entrada al evento ya está cerrada.",bc_all,0x0ceedb;
	if ( !getmapusers("quiz_02") ) {
		announce "Dice: No hay suficientes participantes.",bc_all,0x0ceedb;
		.start = false;
		end;
	}
	.start = 2;
	sleep 3500;
	mapannounce "quiz_02","Estamos a punto de comenzar el evento.",bc_map,0x0ceedb;
	sleep 2500;
	mapannounce "quiz_02","Las reglas son simples.",bc_map,0x0ceedb;
	sleep 2500;
	mapannounce "quiz_02","Tendrás que ingresar una de las 4 casillas disponibles.",bc_map,0x0ceedb;
	sleep 2500;
	mapannounce "quiz_02","Luego se lanzará un dado de cuatro lados. El número que muestra será el número guardado.",bc_map,0x0ceedb;
	sleep 2500;
	mapannounce "quiz_02","¡Recuerda entrar en las casillas!",bc_map,0x0ceedb;
	sleep 2000;
	mapannounce "quiz_02","Eso es todo. Vamos a empezar.",bc_map,0x0ceedb;
	sleep 3000;
	while([email protected] && .start && [email protected] < 5) {
		for([email protected] = 1;[email protected] <= 4;[email protected]++) {
			enablenpc "Back#"[email protected];
			enablenpc "Box "[email protected];
		}
		sleep 1500;
		mapannounce "quiz_02","Pronto se lanzarán los dados. Ingrese el cuadro deseado haciendo clic en el número metálico dentro de ellos.",bc_map,0x0ceedb;
		sleep 20000;
		for([email protected] = 5;[email protected] > 0;[email protected]) {
			mapannounce "quiz_02",[email protected]+"...",bc_map,0x0ceedb;
			sleep 990;
		}
		for([email protected] = 1;[email protected] <= 4;[email protected]++) {
			disablenpc "Back#"[email protected];
			disablenpc "Box "[email protected];
		}
		areawarp "quiz_02",32,95,79,76,"prontera",rand(148,163),rand(167,186);
		areawarp "quiz_02",80,85,80,76,"prontera",rand(148,163),rand(167,186);
		areawarp "quiz_02",31,85,31,76,"prontera",rand(148,163),rand(167,186);
		[email protected] = rand(1,4);
		mapannounce "quiz_02","¡Hora! Los dados muestran el número "[email protected]+".",bc_map,0x0ceedb;
		setarray [email protected][0],33,41;
		setarray [email protected][0],45,53;
		setarray [email protected][0],57,65;
		setarray [email protected][0],69,77;
		for([email protected] = 1;[email protected] <= 4;[email protected]++) {
			if([email protected] != [email protected])
				areawarp "quiz_02",getd("[email protected]"[email protected]+"[0]"),52,getd("[email protected]"[email protected]+"[1]"),73,"prontera",rand(148,163),rand(167,186);
		}
		sleep 3000;
		[email protected] = getmapusers("quiz_02");
		if([email protected] <= 3 && .start && [email protected]) {
			mapannounce "quiz_02","¡El evento ya terminó! ¡Ganadores, disfruten de sus premios!",bc_map,0x0ceedb;
			[email protected] = getmapunits(BL_PC,"quiz_02",[email protected]);
			.start = false;
			for([email protected] = 0;[email protected] < [email protected];[email protected]++) {
				attachrid [email protected][[email protected]];
				announce strcharinfo(0)+" ha ganado el evento de dados.",bc_all,0x0ceedb;
				if ( $event_options&1 ) {
					for ( [email protected] = 0; [email protected] < $event_item_arr; [email protected] += 2 )
						getitem $event_item_reward[[email protected]], $event_item_reward[[email protected]+1];
				}
				if ( $event_options&2 ) {
					setd $event_var$, getd($event_var$)+$event_var_gain;
					dispbottom "You gained "+$event_var_gain+" "+$event_var_name$+". You now have "+getd($event_var$)+" "+$event_var_name$+".";
				}			
				warp "prontera",rand(148,163),rand(167,186);
			}
		} else if( [email protected] ) {
			[email protected] = true;
			.start = false;
			announce "No hubo ganador en el Evento de los Dados.",bc_all,0x0ceedb;
		} else {
			mapannounce "quiz_02","Todavía no hay ganadores claros, volvamos a lanzar los dados.",bc_map,0x0ceedb;
		}
		[email protected]++;
	}
	if([email protected] >= 5) {
		mapannounce "quiz_02","No hubo un ganador claro en todo el evento. El evento ya terminó.",bc_map,0x0ceedb;
		.start = false;
	}
	end;

}

quiz_02,37,80,3	script	Box 1	HIDDEN_NPC,{
	warp "quiz_02",rand(33,41),rand(52,73);
	end;

}

quiz_02,49,80,3	script	Box 2	HIDDEN_NPC,{
	warp "quiz_02",rand(45,53),rand(52,73);
	end;
}

quiz_02,61,80,3	script	Box 3	HIDDEN_NPC,{
	warp "quiz_02",rand(57,65),rand(52,73);
	end;
}

quiz_02,73,80,3	script	Box 4	HIDDEN_NPC,{
	warp "quiz_02",rand(69,77),rand(52,73);
	end;
}

quiz_02,37,64,3	script	Back#1	4_BULLETIN_BOARD2,{
	warp "quiz_02",55,76;
	end;
}

quiz_02,49,64,3	duplicate(Back#1)	Back#2	4_BULLETIN_BOARD2
quiz_02,61,64,3	duplicate(Back#1)	Back#3	4_BULLETIN_BOARD2
quiz_02,73,64,3	duplicate(Back#1)	Back#4	4_BULLETIN_BOARD2

// Last Man Standing

-	script	Event_LMS	-1,{
OnInit:	
	// Mapflags
	setarray [email protected],
		mf_nowarp,
		mf_nowarpto,
		mf_noskill,
		mf_noteleport,
		mf_nomemo,
		mf_nosave,
		mf_noicewall,
		mf_nobranch,
		mf_noreturn;
		
	for ( [email protected] = 0; [email protected] < getarraysize([email protected]); [email protected]++)
		setmapflag "06guild_01", [email protected][[email protected]];
		
	end;

OnStart:
	if ( .start ) end;
	.start = 1;
	pvpoff "06guild_01";
	announce "LMS: Después de 1 minuto, el evento se cerrará.",0;
	sleep 10000;
	announce "LMS: Así que por favor si quieres unirte. usar @eventjoin.",0;
	sleep 60000;
	announce "LMS: La entrada al evento ya está cerrada.",bc_all,0x0ceedb;
	if ( getmapusers("06guild_01") < 2 ) {
		announce "LMS: Not enough participants.",bc_all,0x0ceedb;
		.start = false;
		end;
	}
	.start = 2;
	sleep 3500;
	mapannounce "06guild_01","Estamos a punto de comenzar el evento.",bc_map,0x0ceedb;
	sleep 2500;
	mapannounce "06guild_01","Las reglas son simples.",bc_map,0x0ceedb;
	sleep 2500;
	mapannounce "06guild_01","Mata a todos en el mapa.",bc_map,0x0ceedb;
	sleep 2500;
	mapannounce "06guild_01","¡Último en pie gana!",bc_map,0x0ceedb;
	sleep 2000;
	mapannounce "06guild_01","Eso es todo. Vamos a empezar.",bc_map,0x0ceedb;
	sleep 3000;
	for ([email protected] = 10; [email protected] > 0; [email protected]) {
		mapannounce "06guild_01", "LMS: -- "[email protected]+" --",bc_map,0x0ceedb;
		sleep 1000;
	}
	mapannounce "06guild_01", "LMS: ¡Peleen! ",bc_map,0x0ceedb;
	pvpon "06guild_01";
	.timer = 0;
	initnpctimer;
	end;
	
OnTimer5000: // check every 5 secs..
	.timer++;
	[email protected] = getmapusers("06guild_01");
	if ( [email protected] > 1 && .timer == 6 ) {
		.timer = 0;
		mapannounce "06guild_01", "LMS: "+ [email protected] +" jugadores vivos..", bc_blue;
	} 
	else if ( [email protected] <= 1 )
		donpcevent strnpcinfo(3)+"::OnEndEvent";
	setnpctimer 0;
	end;
	
OnEndEvent:
	stopnpctimer;
	.start = false;
	pvpoff "06guild_01";
	mapannounce "06guild_01", "LMS: El evento ha terminado!",bc_map,0x0ceedb;
	sleep 5000;
	[email protected] = getmapunits(BL_PC,"06guild_01",[email protected]);
	if ( [email protected] == 0 ) {
		announce "LMS: No hubo ganadores.",0;
		end;
	}
	attachrid [email protected];
	announce strcharinfo(0)+" ha ganado el evento.",bc_all,0x0ceedb;
	if ( $event_options&1 ) {
		for ( [email protected] = 0; [email protected] < $event_item_arr; [email protected] += 2 )
			getitem $event_item_reward[[email protected]], $event_item_reward[[email protected]+1];
	}
	if ( $event_options&2 ) {
		setd $event_var$, getd($event_var$)+$event_var_gain;
		dispbottom "You gained "+$event_var_gain+" "+$event_var_name$+". You now have "+getd($event_var$)+" "+$event_var_name$+".";
	}				
	warp "prontera",rand(148,163),rand(167,186);
	end;
	
OnPCDieEvent:
	if ( .start && strcharinfo(3) == "06guild_01" ) {
		warp "prontera",rand(148,163),rand(167,186);
		[email protected] = getmapusers("06guild_01");
		if ( [email protected] > 1 )
			mapannounce "06guild_01", "LMS: "+ [email protected] +" jugadores vivos..", bc_blue;
		else if ( [email protected] <= 1 )
			donpcevent strnpcinfo(3)+"::OnEndEvent";
	}
	end;
	
}

// Novice V Zombie

-	script	Event_NvZ	-1,{
OnInit:	
	// Mapflags
	setarray [email protected],
		mf_nowarp,
		mf_nowarpto,
		mf_noskill,
		mf_noteleport,
		mf_nomemo,
		mf_nosave,
		mf_noicewall,
		mf_nobranch,
		mf_noreturn,
		mf_nocommand;
		
	for ( [email protected] = 0; [email protected] < getarraysize([email protected]); [email protected]++)
		setmapflag "quiz_01", [email protected][[email protected]];
	end;

OnStart:
	if ( .start ) end;
	.start = 1;
	killmonsterall "quiz_01";
	announce "NvZ: Después de 1 minuto, el evento se cerrará.",0;
	sleep 10000;
	announce "NvZ: Así que por favor si quieres unirte. usar @eventjoin.",0;
	sleep 60000;
	announce "NvZ: La entrada al evento ya está cerrada.",bc_all,0x0ceedb;
	if ( getmapusers("quiz_01") <= 1 ) {
		announce "NvZ: No hay suficientes participantes.",bc_all,0x0ceedb;
		.start = false;
		mapwarp "quiz_01", "prontera", 150, 180; // warp out.
		end;
	}
	.start = 2;
	sleep 3500;
	mapannounce "quiz_01","Estamos a punto de comenzar el evento.",bc_map,0x0ceedb;
	sleep 2500;
	mapannounce "quiz_01","Las reglas son simples.",bc_map,0x0ceedb;
	sleep 2500;
	mapannounce "quiz_01","Los zombis serán generados en el mapa.",bc_map,0x0ceedb;
	sleep 2500;
	mapannounce "quiz_01","y aparecerán cada 10 segundos.",bc_map,0x0ceedb;
	sleep 2000;
	mapannounce "quiz_01","El último en pie que sobreviva gana.",bc_map,0x0ceedb;
	sleep 2000;
	mapannounce "quiz_01","Eso es todo. Vamos a empezar.",bc_map,0x0ceedb;
	sleep 3000;
	monster "quiz_01",42,369,"Zombie",1036,4;
	initnpctimer;
	end;
	
OnTimer10000: // 20 seconds timer and also player check on how many left in map
	monster "quiz_01",42,369,"Zombie",1036,10;
	setnpctimer 0;
	end;
	
OnPCDieEvent:
	if ( .start && strcharinfo(3) == "quiz_01" ) {
		warp "prontera",rand(148,163),rand(167,186);
		if ( getmapusers("quiz_01") == 1 ) {
			stopnpctimer;
			killmonsterall "quiz_01";
			[email protected] = getmapunits(BL_PC,"quiz_01",[email protected]);
			.start = false;
			attachrid [email protected];
			announce strcharinfo(0)+" ha ganado el evento Novice vs Zombie.",bc_all,0x0ceedb;
			if ( $event_options&1 ) {
				for ( [email protected] = 0; [email protected] < $event_item_arr; [email protected] += 2 )
					getitem $event_item_reward[[email protected]], $event_item_reward[[email protected]+1];
			}
			if ( $event_options&2 ) {
				setd $event_var$, getd($event_var$)+$event_var_gain;
				dispbottom "You gained "+$event_var_gain+" "+$event_var_name$+". You now have "+getd($event_var$)+" "+$event_var_name$+".";
			}				
			warp "prontera",rand(148,163),rand(167,186);
			end;
		}
	}
	end;
}

// Poring Catcher

-	script	Poring_Catcher	-1,{
OnInit:	
	// Mapflags
	setarray [email protected],
		mf_nowarp,
		mf_nowarpto,
		mf_noskill,
		mf_noloot,
		mf_noteleport,
		mf_nomemo,
		mf_nosave,
		mf_noicewall,
		mf_nobranch,
		mf_noreturn;
		
	for ( [email protected] = 0; [email protected] < getarraysize([email protected]); [email protected]++)
		setmapflag "poring_w01", [email protected][[email protected]];
	end;

OnStart:
	if ( .start ) end;
	.start = 1;
	announce "Poring Catcher: Después de 1 minuto, el evento se cerrará.",0;
	sleep 10000;
	announce "Poring Catcher: Así que por favor si quieres unirte. usar @eventjoin.",0;
	sleep 60000;
	announce "Poring Catcher: La entrada al evento ya está cerrada.",bc_all,0x0ceedb;
	.start = 2;
	sleep 3500;
	if( !getmapusers("poring_w01") ) {
		announce "Poring Catcher: No hay suficientes participantes en el evento.",bc_all,0x0ceedb;
		sleep 2500;
		announce "Poring Catcher: El evento se detendrá.",bc_all,0x0ceedb;
		.start = false;
		end;
	}
	mapannounce "poring_w01","Estamos a punto de comenzar el evento.",bc_map,0x0ceedb;
	sleep 2500;
	mapannounce "poring_w01","Las reglas son simples.",bc_map,0x0ceedb;
	sleep 2500;
	mapannounce "poring_w01","En unos segundos voy a generar muchos porings..",bc_map,0x0ceedb;
	sleep 2500;
	mapannounce "poring_w01","..Todo lo que necesitas hacer es matar al Poring con el nombre correcto..",bc_map,0x0ceedb;
	sleep 2500;
	mapannounce "poring_w01","..Poring.",bc_map,0x0ceedb;
	sleep 2000;
	mapannounce "poring_w01","Si matas al equivocado, ¡estás fuera!",bc_map,0x0ceedb;
	sleep 2000;
	mapannounce "poring_w01","Eso es todo. Vamos a empezar.",bc_map,0x0ceedb;
	sleep 3000;
	areamonster "poring_w01",84,119,124,90,"Poring",1002,1,strnpcinfo(0)+"::OnMobKilledWin";
	areamonster "poring_w01",84,119,124,90,"Poking",1002,5*getmapusers("poring_w01"),strnpcinfo(0)+"::OnMobKilled";
	areamonster "poring_w01",84,119,124,90,"Poiring",1002,5*getmapusers("poring_w01"),strnpcinfo(0)+"::OnMobKilled";
	areamonster "poring_w01",84,119,124,90,"Poling",1002,5*getmapusers("poring_w01"),strnpcinfo(0)+"::OnMobKilled";
	areamonster "poring_w01",84,119,124,90,"Porng",1002,5*getmapusers("poring_w01"),strnpcinfo(0)+"::OnMobKilled";
	areamonster "poring_w01",84,119,124,90,"pH0ur1n6",1002,5*getmapusers("poring_w01"),strnpcinfo(0)+"::OnMobKilled";
	areamonster "poring_w01",84,119,124,90,"P0ring",1002,5*getmapusers("poring_w01"),strnpcinfo(0)+"::OnMobKilled";
	areamonster "poring_w01",84,119,124,90,"Porong",1002,5*getmapusers("poring_w01"),strnpcinfo(0)+"::OnMobKilled";
	areamonster "poring_w01",84,119,124,90,"Powing",1002,5*getmapusers("poring_w01"),strnpcinfo(0)+"::OnMobKilled";
	areamonster "poring_w01",84,119,124,90,"Poriing",1002,5*getmapusers("poring_w01"),strnpcinfo(0)+"::OnMobKilled";
	areamonster "poring_w01",84,119,124,90,"Boring",1002,5*getmapusers("poring_w01"),strnpcinfo(0)+"::OnMobKilled";
	areamonster "poring_w01",84,119,124,90,"Lolwut!?",1002,5*getmapusers("poring_w01"),"::OnMobKilled";
	areamonster "poring_w01",84,119,124,90,"Kill me to win!",1002,5*getmapusers("poring_w01"),strnpcinfo(0)+"::OnMobKilled";
	end;

OnMobKilled:
	dispbottom "¡Mataste al Poring equivocado! ¡estas fuera!";
	warp "prontera",rand(148,163),rand(167,186);
	sleep 5000;
	if ( !getmapusers("poring_w01") ) {
		.start = false;
		killmonsterall "poring_w01";
		announce "Poring Catcher: Nadie ganó el evento!.",bc_all,0x0ceedb;
	}
	end;
	
OnMobKilledWin:
	announce strcharinfo(0)+" Ganó el evento Poring Catcher!",bc_all,0xFF7F50;
	if ( $event_options&1 ) {
		for ( [email protected] = 0; [email protected] < $event_item_arr; [email protected] += 2 )
			getitem $event_item_reward[[email protected]], $event_item_reward[[email protected]+1];
	}
	if ( $event_options&2 ) {
		setd $event_var$, getd($event_var$)+$event_var_gain;
		dispbottom "You gained "+$event_var_gain+" "+$event_var_name$+". You now have "+getd($event_var$)+" "+$event_var_name$+".";
	}
	killmonsterall "poring_w01";
	sleep 5000;
	mapwarp "poring_w01","prontera",rand(148,163),rand(167,186);
	.start = false;
	end;	
}

poring_w01,105,123,3	script	Back to Prontera	4_BULLETIN_BOARD2,{
	warp "prontera",rand(148,163),rand(167,186);
	end;
}

// Poring Hunter https://rathena.org/board/topic/121969-rporing-hunter-event/#comment-370418

-	script	Poring_Hunter	FAKE_NPC,{
OnInit:
	// Event duration default: 3 mins.
	.duration = 3;

	// Note : spawn counts would be multiplied by number of participants. ( count * player count )
	// if you dont want it, remove the calculation below.
	.count[0] = 20; // poring count
	.count[1] = 10; // drops count
	.count[2] = 15; // poporing count
	
	// Mapflags
	setarray [email protected],
		mf_nowarp,
		mf_nowarpto,
		mf_noskill,
		mf_noloot,
		mf_noteleport,
		mf_nomemo,
		mf_nosave,
		mf_noicewall,
		mf_nobranch,
		mf_noreturn,
		mf_nocommand;
		
	for ( [email protected] = 0; [email protected] < getarraysize([email protected]); [email protected]++)
		setmapflag "quiz_02", [email protected][[email protected]];
	end;

OnStart:
	if ( .start ) end;
	pvpoff "pvp_n_1-2";
	killmonsterall "pvp_n_1-2";
	.start = 1;
	.cur_time = 0;
	announce "Poring Hunter: Después de 1 minuto, el evento se cerrará.",0;
	sleep 10000;
	announce "Poring Hunter: Así que por favor si quieres unirte. usar @eventjoin.",0;
	sleep 60000;
	announce "Poring Hunter: La entrada al evento ya está cerrada.",bc_all,0x0ceedb;
	[email protected] = getmapusers("pvp_n_1-2");
	if ( [email protected] < 2 ) {
		announce "Poring Hunter : No hay suficientes participantes.", bc_all,0x0ceedb;
		goto OnEnd;
		end;
	}
	announce "Poring Hunter : La entrada al evento se ha cerrado, el evento ha comenzado, buena suerte a todos los jugadores.!", bc_all;
	.start = 2;
	mapannounce "pvp_n_1-2","Estamos a punto de comenzar el evento.",bc_map,0x0ceedb;
	sleep 2500;
	mapannounce "pvp_n_1-2","Los porings otorgan 1 punto, Drops 5 puntos, Poporings -10 puntos.",bc_map,0x0ceedb;
	sleep 2500;
	mapannounce "pvp_n_1-2","Tendrás "+.duration+" minutos para conseguir tantos puntos como sea posible.",bc_map,0x0ceedb;
	sleep 2500;
	mapannounce "pvp_n_1-2","El jugador que obtenga más puntos dentro del tiempo asignado será el ganador del evento..",bc_map,0x0ceedb;
	sleep 2500;
	mapannounce "pvp_n_1-2","Eso es todo. Vamos a empezar.",bc_map,0x0ceedb;
	sleep 2000;
	// NOTE : if you wish not to multiply the spawn to participants, remove < *[email protected] > on all mob spawns.
	monster "pvp_n_1-2", 0, 0, "Poring", 1002, .count[0]*[email protected], strnpcinfo(0)+"::OnKillPoring";
	monster "pvp_n_1-2", 0, 0, "Drops", 1113, .count[1]*[email protected], strnpcinfo(0)+"::OnKillDrops";
	monster "pvp_n_1-2", 0, 0, "Poporing", 1031, .count[2]*[email protected], strnpcinfo(0)+"::OnKillPoporing";
	initnpctimer;
	end;
	
OnKillPoring: callsub OnKillMob, 1002, "Poring", "OnKillPoring", 1;
OnKillDrops: callsub OnKillMob, 1113, "Drops", "OnKillDrops", 5;
OnKillPoporing: callsub OnKillMob, 1031, "Poporing", "OnKillPoporing", -10;
OnKillMob:
	[email protected] = getarg(0);
	[email protected]$ = getarg(1);
	[email protected]$ = getarg(2);
	[email protected] = getarg(3);
	@phunter_points += [email protected];
	monster "pvp_n_1-2",0,0,[email protected]$,[email protected],1,strnpcinfo(0)+"::"[email protected]$;
	dispbottom "Tienes "+ @phunter_points +" Punto(s).";
	end;	

OnTimer60000:
	.cur_time++;
	if ( .cur_time < .duration ) {
		mapannounce "pvp_n_1-2", "Tienen "+( .duration - .cur_time )+" minuto(s).", bc_blue|bc_map;
		setnpctimer 0;
		end;
	}
	stopnpctimer;
	killmonsterall "pvp_n_1-2";
	[email protected] = getmapunits(BL_PC,"pvp_n_1-2",[email protected][0]);
	freeloop(true);
	for ( [email protected] = 0; [email protected] < [email protected]; [email protected]++ ) {
		attachrid([email protected][[email protected]]);
		if ( @phunter_points > .most_points ) {
			.most_points = @phunter_points;
			.win_aid[0] = getcharid(3);
			.win_name$[0] = strcharinfo(0);
		} else if ( @phunter_points == .most_points && @phunter_points > 0 ) {
			.win_aid[getarraysize(.win_aid)] = getcharid(3);
			.win_name$[getarraysize(.win_name$)] = strcharinfo(0);
		}
		detachrid;
	}
	freeloop(false);
	[email protected] = getarraysize(.win_aid);
	if ( [email protected] > 1 )
		announce "Poring Hunter : El evento ha terminado, tenemos "[email protected]+" ganadores que tienen "+.most_points+" puntos cada uno!", bc_all,0xFF7F50;
	else if ( [email protected] == 1 )
		announce "Poring Hunter : El evento ha terminado, y el ganador es ["+.win_name$+"] con "+.most_points+" puntos!", bc_all,0xFF7F50;
	else 
		announce "Poring Hunter : El evento ha terminado y no hay ganadores.", bc_all,0x0ceedb;
	if ( [email protected] ) { 
		for ( [email protected] = 0; [email protected] < [email protected]; [email protected]++ ) { 
			attachrid(.win_aid[[email protected]]);
			if ( $event_options&1 ) {
				for ( [email protected] = 0; [email protected] < $event_item_arr; [email protected] += 2 )
					getitem $event_item_reward[[email protected]], $event_item_reward[[email protected]+1];
			}
			if ( $event_options&2 ) {
				setd $event_var$, getd($event_var$)+$event_var_gain;
				dispbottom "You gained "+$event_var_gain+" "+$event_var_name$+". You now have "+getd($event_var$)+" "+$event_var_name$+".";
			}
			dispbottom "Aquí está su recompensa del evento Poring Hunter.";
			detachrid;
		}
	}
	OnEnd:
	mapannounce "pvp_n_1-2", "Warp en unos segundos..", bc_blue|bc_map;
	.most_points = .start = false;
	deletearray .win_aid;
	deletearray .win_name$;
	sleep 5000;
	mapwarp "pvp_n_1-2","prontera",rand(148,163),rand(167,186);
	pvpon "pvp_n_1-2";
	end;
}

En este script una vez te unes y este finaliza te envia a prontera, pero quiero hacerlo que por ejemplo estoy en (anthell01,35,262) cuando haga @eventjoin. este me llevará al evento pero una vez finalizado me llevara devuelta a donde hice el @eventjoin la cual seria (anthell01,35,262).

Link to comment
Share on other sites

Join the conversation

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

Guest
Reply to this topic...

×   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...

Important Information

By using this site, you agree to our Terms of Use and Privacy Policy.