gnashxalex Posted February 15, 2021 Group: Members Topic Count: 15 Topics Per Day: 0.01 Content Count: 52 Reputation: 1 Joined: 08/19/18 Last Seen: February 23, 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: .@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). Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.