Jump to content

Warp devuelta al punto de inicio.


gnashxalex

Recommended Posts


  • Group:  Members
  • Topic Count:  15
  • Topics Per Day:  0.01
  • Content Count:  52
  • Reputation:   1
  • Joined:  08/19/18
  • Last Seen:  

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: .@npc$ = "Event_Bombring"; break;
	case 2: .@npc$ = "Event_Dice"; break;
	case 3: .@npc$ = "Event_LMS"; break;
	case 4: .@npc$ = "Poring_Catcher"; break;
	case 5: .@npc$ = "Event_NvZ"; break;
	case 6: .@npc$ = "Poring_Hunter"; break;
	}
	donpcevent .@npc$+"::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:
		.@start = getvariableofnpc(.start,"Event_Bombring");
		.@map$ = "quiz_02"; .@x = 59; .@y = 345;
		break;
		
	case 2:
		.@start = getvariableofnpc(.start,"Event_Dice");
		.@map$ = "quiz_02"; .@x = 55; .@y = 87;
		break;
		
	case 3:
		.@start = getvariableofnpc(.start,"Event_LMS");
		.@map$ = "06guild_01"; .@x = 0; .@y = 0;
		break;
		
	case 4:
		.@start = getvariableofnpc(.start,"Poring_Catcher");
		.@map$ = "poring_w01"; .@x = 100; .@y = 100;
		break;
		
	case 5:
		.@start = getvariableofnpc(.start,"Event_NvZ");
		if ( BaseLevel > 1 || Class != 0 ) {
			mes "Only Lv 1 Novice can enter.";
			close;
		}
		sc_start SC_DECREASEAGI,600000,10;
		.@map$ = "quiz_01"; .@x = 42; .@y = 369;
		break;
		
	case 6:
		.@start = getvariableofnpc(.start,"Poring_Hunter");
		getinventorylist;
		.@map$ = "pvp_n_1-2"; .@x = 0; .@y = 0;
		@phunter_points = 0;
		break;
	}
	if ( !.@start ) {
		mes "Evento no disponible.";
		close;
	} else if ( .@start == 2 ) {
		mes "Evento en Progreso.";
		close;
	}
	percentheal 100,100;
	warp .@map$, .@x, .@y;
	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 .@mapflag,
		mf_nowarp,
		mf_nowarpto,
		mf_noskill,
		mf_noteleport,
		mf_nomemo,
		mf_nosave,
		mf_noicewall,
		mf_nobranch,
		mf_noreturn,
		mf_nocommand;
		
	for ( .@i = 0; .@i < getarraysize(.@mapflag); .@i++)
		setmapflag "quiz_02", .@mapflag[.@i];
	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 ) {
		.@count = 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 * .@count * .round;
		sleep 10000 - ( 1000*.round );
	}
	.@count = getmapusers("quiz_02");
	if ( !.@count )
		announce "Bombring: Nadie sobrevivió.",bc_all,0x0ceedb;
	else if ( .@count ) {
		.@size = getmapunits(BL_PC,"quiz_02",.@aid);
		if ( .@size > 1 ) announce "Muchos jugadores han ganado el Evento Bombring..",bc_all,0x0ceedb;
		for ( .@i = 0; .@i < getarraysize(.@aid); .@i++) {
			attachrid .@aid[.@i];
			if ( .@size == 1 ) announce strcharinfo(0)+" ha ganado el Evento Bombring.",bc_all,0x0ceedb;
			if ( $event_options&1 ) {
				for ( .@j = 0; .@j < $event_item_arr; .@j += 2 )
					getitem $event_item_reward[.@j], $event_item_reward[.@j+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 .@mapflag,
		mf_nowarp,
		mf_nowarpto,
		mf_noskill,
		mf_noteleport,
		mf_nomemo,
		mf_nosave,
		mf_noicewall,
		mf_nobranch,
		mf_noreturn;
		
	for ( .@i = 0; .@i < getarraysize(.@mapflag); .@i++)
		setmapflag "quiz_02", .@mapflag[.@i];
	end;

OnStart:
	if ( .start ) end;
	.start = 1;
	for(.@i = 1;.@i <= 4;.@i++) {
		disablenpc "Back#"+.@i;
		disablenpc "Box "+.@i;
	}
	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(!.@end && .start && .@rounds < 5) {
		for(.@i = 1;.@i <= 4;.@i++) {
			enablenpc "Back#"+.@i;
			enablenpc "Box "+.@i;
		}
		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(.@i = 5;.@i > 0;.@i--) {
			mapannounce "quiz_02",.@i+"...",bc_map,0x0ceedb;
			sleep 990;
		}
		for(.@i = 1;.@i <= 4;.@i++) {
			disablenpc "Back#"+.@i;
			disablenpc "Box "+.@i;
		}
		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);
		.@n = rand(1,4);
		mapannounce "quiz_02","¡Hora! Los dados muestran el número "+.@n+".",bc_map,0x0ceedb;
		setarray .@cords1[0],33,41;
		setarray .@cords2[0],45,53;
		setarray .@cords3[0],57,65;
		setarray .@cords4[0],69,77;
		for(.@i = 1;.@i <= 4;.@i++) {
			if(.@i != .@n)
				areawarp "quiz_02",getd(".@cords"+.@i+"[0]"),52,getd(".@cords"+.@i+"[1]"),73,"prontera",rand(148,163),rand(167,186);
		}
		sleep 3000;
		.@players = getmapusers("quiz_02");
		if(.@players <= 3 && .start && .@players) {
			mapannounce "quiz_02","¡El evento ya terminó! ¡Ganadores, disfruten de sus premios!",bc_map,0x0ceedb;
			.@size = getmapunits(BL_PC,"quiz_02",.@players);
			.start = false;
			for(.@i = 0;.@i < .@size;.@i++) {
				attachrid .@players[.@i];
				announce strcharinfo(0)+" ha ganado el evento de dados.",bc_all,0x0ceedb;
				if ( $event_options&1 ) {
					for ( .@j = 0; .@j < $event_item_arr; .@j += 2 )
						getitem $event_item_reward[.@j], $event_item_reward[.@j+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( !.@players ) {
			.@end = 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;
		}
		.@rounds++;
	}
	if(.@rounds >= 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 .@mapflag,
		mf_nowarp,
		mf_nowarpto,
		mf_noskill,
		mf_noteleport,
		mf_nomemo,
		mf_nosave,
		mf_noicewall,
		mf_nobranch,
		mf_noreturn;
		
	for ( .@i = 0; .@i < getarraysize(.@mapflag); .@i++)
		setmapflag "06guild_01", .@mapflag[.@i];
		
	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 (.@i = 10; .@i > 0; .@i--) {
		mapannounce "06guild_01", "LMS: -- "+.@i+" --",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++;
	.@size = getmapusers("06guild_01");
	if ( .@size > 1 && .timer == 6 ) {
		.timer = 0;
		mapannounce "06guild_01", "LMS: "+ .@size +" jugadores vivos..", bc_blue;
	} 
	else if ( .@size <= 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;
	.@size = getmapunits(BL_PC,"06guild_01",.@aid);
	if ( .@size == 0 ) {
		announce "LMS: No hubo ganadores.",0;
		end;
	}
	attachrid .@aid;
	announce strcharinfo(0)+" ha ganado el evento.",bc_all,0x0ceedb;
	if ( $event_options&1 ) {
		for ( .@j = 0; .@j < $event_item_arr; .@j += 2 )
			getitem $event_item_reward[.@j], $event_item_reward[.@j+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);
		.@size = getmapusers("06guild_01");
		if ( .@size > 1 )
			mapannounce "06guild_01", "LMS: "+ .@size +" jugadores vivos..", bc_blue;
		else if ( .@size <= 1 )
			donpcevent strnpcinfo(3)+"::OnEndEvent";
	}
	end;
	
}

// Novice V Zombie

-	script	Event_NvZ	-1,{
OnInit:	
	// Mapflags
	setarray .@mapflag,
		mf_nowarp,
		mf_nowarpto,
		mf_noskill,
		mf_noteleport,
		mf_nomemo,
		mf_nosave,
		mf_noicewall,
		mf_nobranch,
		mf_noreturn,
		mf_nocommand;
		
	for ( .@i = 0; .@i < getarraysize(.@mapflag); .@i++)
		setmapflag "quiz_01", .@mapflag[.@i];
	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";
			.@size = getmapunits(BL_PC,"quiz_01",.@aid);
			.start = false;
			attachrid .@aid;
			announce strcharinfo(0)+" ha ganado el evento Novice vs Zombie.",bc_all,0x0ceedb;
			if ( $event_options&1 ) {
				for ( .@j = 0; .@j < $event_item_arr; .@j += 2 )
					getitem $event_item_reward[.@j], $event_item_reward[.@j+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 .@mapflag,
		mf_nowarp,
		mf_nowarpto,
		mf_noskill,
		mf_noloot,
		mf_noteleport,
		mf_nomemo,
		mf_nosave,
		mf_noicewall,
		mf_nobranch,
		mf_noreturn;
		
	for ( .@i = 0; .@i < getarraysize(.@mapflag); .@i++)
		setmapflag "poring_w01", .@mapflag[.@i];
	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 ( .@j = 0; .@j < $event_item_arr; .@j += 2 )
			getitem $event_item_reward[.@j], $event_item_reward[.@j+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 .@mapflag,
		mf_nowarp,
		mf_nowarpto,
		mf_noskill,
		mf_noloot,
		mf_noteleport,
		mf_nomemo,
		mf_nosave,
		mf_noicewall,
		mf_nobranch,
		mf_noreturn,
		mf_nocommand;
		
	for ( .@i = 0; .@i < getarraysize(.@mapflag); .@i++)
		setmapflag "quiz_02", .@mapflag[.@i];
	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;
	.@player = getmapusers("pvp_n_1-2");
	if ( .@player < 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 < *.@player > on all mob spawns.
	monster "pvp_n_1-2", 0, 0, "Poring", 1002, .count[0]*.@player, strnpcinfo(0)+"::OnKillPoring";
	monster "pvp_n_1-2", 0, 0, "Drops", 1113, .count[1]*.@player, strnpcinfo(0)+"::OnKillDrops";
	monster "pvp_n_1-2", 0, 0, "Poporing", 1031, .count[2]*.@player, 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:
	.@mobid = getarg(0);
	.@name$ = getarg(1);
	.@event$ = getarg(2);
	.@val = getarg(3);
	@phunter_points += .@val;
	monster "pvp_n_1-2",0,0,.@name$,.@mobid,1,strnpcinfo(0)+"::"+.@event$;
	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";
	.@count = getmapunits(BL_PC,"pvp_n_1-2",.@aid[0]);
	freeloop(true);
	for ( .@i = 0; .@i < .@count; .@i++ ) {
		attachrid(.@aid[.@i]);
		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);
	.@size = getarraysize(.win_aid);
	if ( .@size > 1 )
		announce "Poring Hunter : El evento ha terminado, tenemos "+.@size+" ganadores que tienen "+.most_points+" puntos cada uno!", bc_all,0xFF7F50;
	else if ( .@size == 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 ( .@size ) { 
		for ( .@i = 0; .@i < .@size; .@i++ ) { 
			attachrid(.win_aid[.@i]);
			if ( $event_options&1 ) {
				for ( .@j = 0; .@j < $event_item_arr; .@j += 2 )
					getitem $event_item_reward[.@j], $event_item_reward[.@j+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...