gnashxalex Posted February 15, 2021 Share Posted February 15, 2021 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). Quote Link to comment Share on other sites More sharing options...