// . ___________________ . // . / _____/\______ \ . // . \_____ \ | | _/ . // . / \ | | \ . // . /_______ / |______ / . // . \/ \/ . // . [ Cronus Advanced Scripts ] . // . v1.1 . // .----------------------------------------------------------. // ; http://forum.cronus-emulator.com/user/20800-soulblaker ; // .----------------------------------------------------------. // . Script: . // . Devil Square . // .----------------------------------------------------------. // . Por: SoulBlaker Comptivel: Cronus verso: 2.0 . // .----------------------------------------------------------. // . Descrio: . // . Evento Devil Square. . // .----------------------------------------------------------. // . Changelog da Verso: . // . * 2.0 [SoulBlaker] . // . - Iniciado a DevilSquare 2.0. . // . * 2.0b [SoulBlaker] . // . - Correes no for responsvel por invocar monstros. . // *----------------------------------------------------------* - script Devil Square#ds_01::DevilSquareEvent -1,{ OnInit: // Qual nvel de Base para Entrar na Devil Square // // Deixe 0 para desabilitar esta opo. set $@ds_baselevel, 1; // Qual o custo de Zeny para entrar na Devil Square? // // Deixe '0' para desabilitar esta opo ou ponha a // quantidade de Zeny a ser conbrado. set $@ds_zenycost, 0; // Configuraes das Recompensas. // Os itens so entregue aos jogadores que quebrarem // o Arca do Tesouro ao terminar o combate contra os // monstros. Logo abaixo, ter uma srie de informaes // e configuraes, para voc configurar da melhor // maneira que achar para o seu servidor. // Configuraes de EXP por Recompensa. // // Quanto de Experincia de Base o Jogador vai ganhar // ao matar uma Arca do Tesouro? // // Deixe '0' para desabilitar esta opo ou ponha a // quantidade de exp a ser ganha. set $@ds_baseexp, 0; // Quanto de Experincia de Classe o jogador vai ganhar // ao matar uma Arca do Tesouro? // // Deixe '0' para desabilitar esta opo. set $@ds_jobexp, 0; // Configuraes dos Itens. // // Os itens so configurados em vriaveis do tipo 'Array'. // Voc deve determinar a chave do array e o id do item no valor. // // Exemplo: // * set $@ds_itemid[<chave>], <valor> // - set $@ds_itemid[0], 501; // // A chave de ser adicionado entre 0~127, no total de 128 itens. // Sempre comece com o ndice 0 na chave. // // Exemplo: // set $@ds_itemid[0], 501; // Poo_Vermelha // set $@ds_itemid[1], 502; // Poo_Laranja // // Se voc for um usurio avanado, pode adicionar vrios valores // em um settarray. // // Exemplo: // * setarray $@ds_itemid[0], <valor1>, <valor2>, <valor3>; // - setarray $@ds_itemid[0], 501, 502, 503; // 0 = 501, 1 = 502, 2 = 503 // // Para desabilitar esta opo, habilite a linha abaixo e em seguida desabil ite // a linha que est sendo configurado o array! // deletearray $@ds_itemid[0], getarraysize($@ds_itemid); setarray $@ds_itemid[0], 501, 0; // De acordo com a configurao dos ids de itens, ponha a quantidade // do item a ser ganho de acordo com a chave do item. // // Exempo: // set $@ds_itemid[0], 501; // set $@ds_itemqt[0], 10; // // A recompensada ser '10'x'501'. setarray $@ds_itemqt[0], 10, 0; // Configuraes de Jogadores. // // Qual o mnimo de jogadores para comear o evento DevilSquare? // ATENO: Nunca ponhe '0' na configurao abaixo. set $@ds_min_player, 1; // Qual o mximo de jogadores que podem entrar no evento DevilSquare? // Ponha '0' para desabilitar esta funo. set $@ds_max_player, 30; // Configuraes dos Monstros. // // Em Array defina <id>, <quantidade>, <horda>; // // <id>: Id do monstro assassino, ponha '0' para desabilitar o monstro a ssassino. // <quantidade>: Quantidade do monstro assassino. // <horda>: Em qual horda ele ser chamado. // // Para desabilitar, ponha '//' na frente da linha abaixo. setarray $@ds_mobassassin[0], 0, 1785, 1, 5; // Deseja bloquear o uso de Habilidades ao gerar a Arca do Tesouro? // Ponha '0' para desabilitar esta opo. set $@ds_noskilltreasure, 1; // Quantos Rodadas de horda de monstros ir conter no evento? // ATENO: Nunca remova esta opo, ir causar falhas no evento. set $@ds_horde, 6; // De acordo com a quantidade de horda, em 'Array' defina o gnero da hord a. // // 0: Horda Comum. // 1: Horda Mini-Boss. // 2: Horda MvP. // // Exemplo: // setarray $@ds_hogen[0], 0, 0, 0, 1, 2, 0; setarray $@ds_hogen[0], 0, 0, 0, 1, 2, 0; // Os monstros so configurados em vriaveis do tipo 'Array'. // Voc deve determinar a chave do array e o id do monstro no valor. // // Exemplo: // * set $@ds_mobid[<chave>], <valor> // - set $@ds_mobid[0], 1189; // // A chave de ser adicionado entre 0~127, no total de 128 monstros. // Sempre comece com o ndice 0 na chave. // // Exemplo: // set $@ds_mobid[0], 1189; // Orc Heri // set $@ds_mobid[1], 1019; // Esqueleto Arqueiro // // Se voc for um usurio avanado, pode adicionar vrios valores // em um settarray. // // Exemplo: // * setarray $@ds_mobid[0], <valor1>, <valor2>, <valor3>; // - setarray $@ds_mobid[0], 1189, 1019, 1149; // 0 = 1189, 1 = 101 9, 2 = 1149 // // ATENO: Nunca remova esta opo, ir causar falhas no evento. setarray $@ds_mobid[0], 1189, 1016, 1149, 1028, 1165, 1164, // Round 1 1253, 1191, 1193, 1257, 1192, // Round 2 1206, 1208, 1131, 1109, 1302, 1190, 1272, 1511, // Round 3 1507, 1449, 1268, 1456, 1388, 1120, 1259, 1308, 1296, // Round 4 1399, 1373, 1312, 1190, 1272, 1389, 1157, 1038, 1418, 1087, // Round 5 1511, 1038, 1373; // Round 6 // De acordo com a configurao dos ids de monstros, ponha a quantidade // de monstros a ser invocado de acordo com a chave do monstro. // // Exempo: // set $@ds_mobid[0], 1189; // set $@ds_mobqt[0], 10; // // Ser invocado 10 monstros do id 1189. setarray $@ds_mobqt[0], 15, 15, 15, 10, 10, 10, // Round 1 15, 15, 10, 10, 10, // Round 2 15, 15, 15, 10, 1, 1, 1, 1, // Round 3 6, 6, 5, 4, 3, 3, 3, 3, 2, // Round 4 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, // Round 5 5, 3, 2; // Round 6 // De acordo com a configurao dos ids de monstros, ponha a orda // que ele ser invocado de acordo com a chave do monstro. // // Exempo: // set $@ds_mobid[0], 1189; // set $@ds_mobho[0], 1; // // O monstro do id 1189 ser invocado na horda 1. setarray $@ds_mobho[0], 1, 1, 1, 1, 1, 1, // Round 1 2, 2, 2, 2, 2, // Round 2 3, 3, 3, 3, 3, 3, 3, 3, // Round 3 4, 4, 4, 4, 4, 4, 4, 4, 4, // Round 4 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, // Round 5 6, 6, 6; // Round 6 // As Arcas so configurados em vriaveis do tipo 'Array'. // Voc deve determinar a chave do array e o id do monstro arca no valor. // // Exemplo: // * set $@ds_treasureid[<chave>], <valor> // - set $@ds_treasureid[0], 1324; // // A chave de ser adicionado entre 0~127, no total de 128 monstros arca. // Sempre comece com o ndice 0 na chave. // // Exemplo: // set $@ds_treasureid[0], 1189; // Orc Heri // set $@ds_treasureid[1], 1019; // Esqueleto Arqueiro // // Se voc for um usurio avanado, pode adicionar vrios valores // em um settarray. // // Exemplo: // * setarray $@ds_treasureid[0], <valor1>, <valor2>, <valor3>; // - setarray $@ds_treasureid[0], 1328, 1332, 1336; // 0 = 1328, 1 = 1332, 2 = 1336 // // ATENO: Nunca remova esta opo, ir causar falhas no evento. setarray $@ds_treasureid[0], 1324, 1328, 1332, 1336, 1340, 1344, 1348, 1 352, 1356, 1360; // De acordo com a configurao dos ids de monstros arca, ponha a quantidade // de monstros arca a ser invocado de acordo com a chave do monstro arca . // // Exempo: // set $@ds_treasureid[0], 1328; // set $@ds_treasureqt[0], 10; // // Ser invocado 10 monstros arca do id 1328. setarray $@ds_treasureqt[0], 1, 1, 1, 1, 1, 1, 1, 1, 1, 1; end; // O Evento ir comear neste esquema de hora: // // 09:00 - 11:00 - 13:00 - 15:00 // 17:00 - 19:00 - 21:00 - 23:00 // OnMinute00: if( !$@ds_flag && (gettime(3) == 9 || gettime(3) == 11 || gettime(3) == 13 || gettime(3) == 15 || gettime(3) == 20) ) donpcevent "DevilSquareEvent::OnStart"; end; OnStart: if( !$@ds_flag ) { // Iniciando Variveis nescessria. set $@ds_clock, 4; set $@ds_flag, 1; // Matando monstros que se encontra no mapa. killmonsterall "ordeal_1-1"; // Adicionando mapflags. setmapflag "ordeal_1-1", mf_nomemo; setmapflag "ordeal_1-1", mf_noteleport; setmapflag "ordeal_1-1", mf_nowarp; setmapflag "ordeal_1-1", mf_nowarpto; setmapflag "ordeal_1-1", mf_nomemo; setmapflag "ordeal_1-1", mf_nomobloot; setmapflag "ordeal_1-1", mf_nomvploot; // Habilitando chat no npc. donpcevent "DevilSquareWarp::OnStartArena"; // Iniciando contagem de tempo do npc. initnpctimer; announce "[Devil Square]: O Portal est aberto e ser fechado em 5 m inutos, corram para a arena!",bc_all,"0x00FF00"; } end; OnTimer60000: if( !$@ds_clock ) { // Inicia o Evento if( getmapusers("ordeal_1-1") ) { set $@ds_round, 1; set $@ds_flag, 2; announce "[Devil Square]: O Portal est fechado, aqueles q ue no tiveram oportunidade podem tentar na prxima vez!",bc_all,"0x00FF00"; donpcevent "DevilSquareEvent::OnStartArena"; } else { announce "[Devil Square]: A Devil Square foi cancelada p or no haver jogadores na arena!",bc_all,"0x00FF00"; donpcevent "DevilSquareWarp::OnEnd"; } delwaitingroom "DevilSquareWarp"; stopnpctimer; } else { announce "[Devil Square]: O Portal est aberto e ser fechado em " + $@ds_clock + " minutos, corram para a arena!",bc_all,"0x00FF00"; setnpctimer 0; set $@ds_clock, $@ds_clock - 1; } end; OnStartArena: if( $@ds_flag == 2 && $@ds_round <= $@ds_horde ) { // Invocando Monstros for( set .@i, 0; .@i < getarraysize($@ds_mobid); set .@i, .@i + 1 ) { if( $@ds_mobid[.@i] && $@ds_mobqt[.@i] && $@ds_mobho[.@i ] == $@ds_round && (getmonsterinfo($@ds_mobid[.@i], 0)?1:0) ) monster "ordeal_1-1", 0, 0, "[Devil Square] "+ge tmonsterinfo($@ds_mobid[.@i], 0), $@ds_mobid[.@i], $@ds_mobqt[.@i],"DevilSquareE vent::OnMobDead"; } // Monstro Assassino if( $@ds_mobassassin[0] && $@ds_mobassassin[1] && $@ds_mobassass in[2] == $@ds_round && (getmonsterinfo($@ds_mobassassin[0], 0)?1:0) ) monster "ordeal_1-1", 0, 0, "[Devil Square] Assassino", $@ds_mobassassin[0], $@ds_mobassassin[1],"DevilSquareEvent::OnAssassinDead"; if( $@ds_hogen[($@ds_round-1)] == 1 ) mapannounce "ordeal_1-1", "[Devil Square]: Comeou a " + $@ds_round + " Square e os Mini-Boss atacam!", bc_all, "0x00FF00"; else if( $@ds_hogen[($@ds_round-1)] == 2 ) mapannounce "ordeal_1-1", "[Devil Square]: Comeou a " + $@ds_round + " Square e os Mvp's atacam!", bc_all, "0x00FF00"; else mapannounce "ordeal_1-1", "[Devil Square]: Comeou a " + $@ds_round + " Square!", bc_all, "0x00FF00"; set $@ds_round, $@ds_round + 1; } else if( $@ds_flag == 2 ) { // Checando a possibilidade de usar Habilidades nas arca. if( $@ds_noskilltreasure ) setmapflag "ordeal_1-1", mf_noskill; // Invocando as Arca Monstro. for( set .@i, 0; .@i < getarraysize($@ds_treasureid); set .@i, . @i + 1 ) { if( $@ds_treasureid[.@i] && $@ds_treasureid[.@i] && (get monsterinfo($@ds_treasureid[.@i], 0)?1:0) ) monster "ordeal_1-1", 0, 0, "[Devil Square] Arca do Tesouro", $@ds_treasureid[.@i], $@ds_treasureqt[.@i],"DevilSquareEvent::OnTr easureDead"; } mapannounce "ordeal_1-1", "[Devil Square]: Parabns guerreiros, vo cs derrotaram todos ataques dos monstros. Agora comea a Caa ao Tesouro.", bc_all, " 0x00FF00"; } end; OnMobDead: if( mobcount("ordeal_1-1", "all") > 0 && $@ds_flag <= $@ds_horde ) mapannounce "ordeal_1-1", "[Devil Square]: Faltam " + mobcount(" ordeal_1-1", "all") + " monstros para a " + $@ds_round + " Square.",bc_all,"0x00F F00"; else if( mobcount("ordeal_1-1", "all") > 0 ) mapannounce "ordeal_1-1", "[Devil Square]: Faltam " + mobcount(" ordeal_1-1", "all") + " monstros para eliminar a Devil Square.",bc_all,"0x00FF00 "; else donpcevent "DevilSquareEvent::OnStartArena"; end; OnAssassinDead: mapannounce "ordeal_1-1", "[Devil Square]: O Jogador [ " + strcharinfo(0 ) + " ] matou o Monstro Assassino.", bc_all, "0x00FF00"; donpcevent "DevilSquareEvent::OnMobDead"; end; OnTreasureDead: mapannounce "ordeal_1-1", "[Devil Square]: O Jogador [ " + strcharinfo(0 ) + " ] abriu uma das Arcas do Tesouro.", bc_all, "0x00FF00"; while(1) { set .@rand_1, rand(0, 2); if( .@rand_1 == 0 && $@ds_baseexp ) { set BaseExp, BaseExp + $@ds_baseexp; break; } else if( .@rand_1 == 1 && $@ds_jobexp ) { set JobExp, JobExp + 1; break; } else if( .@rand_1 == 2 && getarraysize($@ds_itemid) ) { set .@rand, rand(0, (getarraysize($@ds_itemid)-1)); getitem $@ds_itemid[.@rand], $@ds_itemqt[.@]; break; } else if( !getarraysize($@ds_itemid) && !$@ds_baseexp && !$@ds_jo bexp ) break; } if( !mobcount("ordeal_1-1", "all") ) { announce "[Devil Square]: Parabns a todos guerreiros que venceram a lutaram contra os Monstros na Devil Square.", bc_all, "0x00FF00"; donpcevent "DevilSquareWarp::OnEndArena"; } end; } - script Devil Square#ds_02::DevilSquarePlayer -1,{ OnPlayerCheck: OnPCLogoutEvent: OnPCDieEvent: getmapxy(.@map$, .@x, .@y, 0); if( $@ds_flag == 2 && .@map$ == "ordeal_1-1" ) initnpctimer; end; OnTimer6000: announce "[Devil Square]: Todos falharam na Devil Square, os Monstros sa iram vitoriosos na " + ($@ds_round-1) + " Square.",bc_all,"0x00FF00"; donpcevent "DevilSquareWarp::OnEndArena"; stopnpctimer; end; } prontera,149,189,5 script Devil Square#ds_03::DevilSquareWarp 733,{ set .@adm_lvl, 99; mes "^483D8B[Recepcionista]^000000"; mes "Bem-vindo a ^0000FFDevil Square^000000."; mes "^FF0000Se voc falhar voc morre!^000000"; if( !$@ds_flag ) mes "No momemento nosso portal est fechado, por no estr no horrio da batalha na Arena."; else if( $@ds_flag == 2 ) mes "No momemento nosso portal est fechado por estar ocorrendo um a batalha na Arena."; mes "Em que posso ajudar?"; next; switch( select((getgmlevel()>=.@adm_lvl?($@ds_flag?"^0000FF- Desligar a Devil Square.^000000":"^0000FF- Ligar a Devil Square.^000000"):""), ($@ds_flag== 1?"^0000FF- Entrar na Devil Square.^000000":""), "- Informaes.", "^FF0000- Sar.^000 000") ) { case 1: mes "^483D8B[Recepcionista]^000000"; if( $@ds_flag ) mes "Deseja desligar a ^0000FFDevil Square^00000 0?"; else mes "Deseja ligar a ^0000FFDevil Square^000000?" ; next; if( select("- Sim", "- No.") == 1 ) { if( !$@ds_flag ) donpcevent "DevilSquareEvent::OnStart"; else donpcevent "DevilSquareWarp::OnEnd"; } break; case 2: if( $@ds_flag != 1 ) { mes "^483D8B[Recepcionista]^000000"; mes "Me desculpe, mais a arena no est aberta."; mes "Volte mais tarde!"; close; } else if( $@ds_baselevel && BaseLevel < $@ds_baselevel ) { mes "^483D8B[Recepcionista]^000000"; mes "Para entrar na ^0000FFDevil Square^000000, voc deve ter o ^0000FFNvel de Base^000000 ^FF000000" + $@ds_baselevel + "^000000 o u superior."; close; } else if( $@ds_zenycost && Zeny < $@ds_zenycost ) { mes "^483D8B[Recepcionista]^000000"; mes "Para entrar na ^0000FFDevil Square^000000, voc precisa ter ^FF000000" + $@ds_zenycost + "^000000 Zenys."; close; } else if( $@ds_maxplayer && getmapusers("ordeal_1-1") >= $@ds_maxplayer ) { mes "^483D8B[Recepcionista]^000000"; mes "O limite de jogadores na ^0000FFDevil Squar e^000000 foi atingido, voc no pode entrar na arena."; close; } else { mes "^483D8B[Recepcionista]^000000"; mes "Realmente deseja entrar na arena?"; next; if( select("- Sim.", "- No.") == 1 ) { mes "^483D8B[Recepcionista]^000000"; mes "Tudo bem, vou te mandar para l!"; close2; if( $@ds_zenycost ) set Zeny, Zeny - $@d s_zenycost; warp "ordeal_1-1", 0, 0; end; } } break; case 3: mes "^483D8B[Recepcionista]^000000"; mes "A ^0000FFDevil Square^000000 uma arena que seguir de ^FF0000" + $@ds_horde + "^000000 ^0000FFroundes^000000 em que so invocado hordas de monstros para os jogadores exterminar."; if( $@ds_baselevel ) mes "Para entrar na ^0000FFDevil Square^000000, voc deve ter o ^0000FFNvel de Base^000000 ^FF0000" + $@ds_baselevel + "^000000 ou superior."; else mes "Qualquer ^0000FFNvel de Base^000000 aceito n a ^0000FFDevil Square^000000."; if( $@ds_zenycost ) mes "Na entrada ^0000FFDevil Square^000000, ser c obrado ^FF0000" + $@ds_zenycost + "^000000 Zenys."; else mes "No h custo para entrar na ^0000FFDevil Square ^000000."; if( $@ds_maxplayer ) mes "O limite de jogadores dentro da ^0000FFDevi l Square^000000 de ^FF0000" + $@ds_maxplayer + "^000000 jogadores."; else mes "No h limite de jogadores dentro da ^0000FFDev il Square^000000."; mes "Sua ^0000FFmisso^000000 sobreviver todos os ^0000FFr oundes^000000."; mes "Quando terminar os ^0000FFroundes^000000, aprece-r a s ^0000FFArcas do Tesouro^000000, no qual nela voc pode ganhar:"; if( getarraysize($@ds_itemid) ) mes "^FF0000- Itens.^000000"; if( $@ds_baseexp ) mes "^FF0000- Experincia de Base.^000000"; if( $@ds_jobexp ) mes "^FF0000- Experincia de Classe.^000000"; mes " "; mes "Preste muita ateno quando essas Arcas forem invocadas !"; next; mes "^483D8B[Recepcionista]^000000"; mes "A arena aberta nos seguintes horrios:"; mes " "; mes "^0000FF09:00H^000000 - ^0000FF17:00H^000000"; mes "^0000FF11:00H^000000 - ^0000FF19:00H^000000"; mes "^0000FF13:00H^000000 - ^0000FF21:00H^000000"; mes "^0000FF15:00H^000000 - ^0000FF23:00H^000000"; close; case 4: break; } mes "^483D8B[Recepcionista]^000000"; mes "Muito bem, volte quando desejar entrar na ^0000FFArena Devil Square ^000000!"; close; OnStartArena: waitingroom "Aberta a Devil Square", 0; end; OnEnd: // Segurana delwaitingroom; stopnpctimer "DevilSquareEvent"; announce "[Devil Square]: A Devil Square foi cancelada!", bc_all, "0x00F F00"; donpcevent "DevilSquareWarp::OnEndArena"; end; OnEndArena: killmonsterall "ordeal_1-1"; // Removendo MapFlags removemapflag "ordeal_1-1", mf_nomemo; removemapflag "ordeal_1-1", mf_noteleport; removemapflag "ordeal_1-1", mf_nowarp; removemapflag "ordeal_1-1", mf_nowarpto; removemapflag "ordeal_1-1", mf_nomemo; removemapflag "ordeal_1-1", mf_nomobloot; removemapflag "ordeal_1-1", mf_nomvploot; removemapflag "ordeal_1-1", mf_noskill; set $@ds_flag, 0; initnpctimer; end; OnTimer6000: mapwarp "ordeal_1-1", "prontera", 154, 175; stopnpctimer; end; } ordeal_1-1,246,245,5 script Devil Square#ds_04 733,{ mes "^483D8B[Recepcionista da Sada]^000000"; mes "Deseja retornar a Prontera?"; next; if( Select ("Sim.","No.") == 1) { mes "^483D8B[Recepcionista da Sada]^000000"; mes "Muito bem, boa viajem!"; close2; if( $@ds_flag == 2 ) donpcevent "DevilSquarePlayer::OnPlayerChec k"; warp "prontera", 154, 175; end; } mes "^483D8B[Recepcionista da Sada]^000000"; mes "Voc deve sar logo... ou pode ter grandes problemas..."; close; OnInit: waitingroom "Devil Square Sada",0; end; }