Como faço pra subistituir os baús desse script por um único báu com itens e % chance de drop para cada iten.
apenas 1 baú e nele tivese a chance de por exemplo 1% itemid 1234, 10% itemid 12343
Pensei em substituir os báus por um bau monstro e configurar o drop no mobdb, mas como faço isso?
Desde ja agradeço.
- script Devil Square#ds_01::DevilSquareEvent -1,{
OnInit:
// Qual nível de Base para Entrar na Devil Square
//
// Deixe 0 para desabilitar esta opção.
set [email protected]_baselevel, 1;
// Qual o custo de Zeny para entrar na Devil Square?
//
// Deixe '0' para desabilitar esta opção ou ponha a
// quantidade de Zeny a ser conbrado.
set [email protected]_zenycost, 0;
// Configurações das Recompensas.
// Os itens são entregue aos jogadores que quebrarem
// o Arca do Tesouro ao terminar o combate contra os
// monstros. Logo abaixo, terá uma série de informações
// e configurações, para você configurar da melhor
// maneira que achar para o seu servidor.
// Configurações de EXP por Recompensa.
//
// Quanto de Experiência de Base o Jogador vai ganhar
// ao matar uma Arca do Tesouro?
//
// Deixe '0' para desabilitar esta opção ou ponha a
// quantidade de exp a ser ganha.
set [email protected]_baseexp, 0;
// Quanto de Experiência de Classe o jogador vai ganhar
// ao matar uma Arca do Tesouro?
//
// Deixe '0' para desabilitar esta opção.
set [email protected]_jobexp, 0;
// Configurações dos Itens.
//
// Os itens são configurados em váriaveis do tipo 'Array'.
// Você deve determinar a chave do array e o id do item no valor.
//
// Exemplo:
// * set [email protected]_itemid[<chave>], <valor>
// - set [email protected]_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 [email protected]_itemid[0], 501; // Poção_Vermelha
// set [email protected]_itemid[1], 502; // Poção_Laranja
//
// Se você for um usuário avançado, pode adicionar vários valores
// em um settarray.
//
// Exemplo:
// * setarray [email protected]_itemid[0], <valor1>, <valor2>, <valor3>;
// - setarray [email protected]_itemid[0], 501, 502, 503; // 0 = 501, 1 = 502, 2 = 503
//
// Para desabilitar esta opção, habilite a linha abaixo e em seguida desabilite
// a linha que está sendo configurado o array!
// deletearray [email protected]_itemid[0], getarraysize([email protected]_itemid);
setarray [email protected]_itemid[0], 501, 0;
// De acordo com a configuração dos ids de itens, ponha a quantidade
// do item a ser ganho de acordo com a chave do item.
//
// Exempo:
// set [email protected]_itemid[0], 501;
// set [email protected]_itemqt[0], 10;
//
// A recompensada será '10'x'501'.
setarray [email protected]_itemqt[0], 10, 0;
// Configurações de Jogadores.
//
// Qual o mínimo de jogadores para começar o evento DevilSquare?
// ATENÇÃO: Nunca ponhe '0' na configuração abaixo.
set [email protected]_min_player, 1;
// Qual o máximo de jogadores que podem entrar no evento DevilSquare?
// Ponha '0' para desabilitar esta função.
set [email protected]_max_player, 0;
// Configurações dos Monstros.
//
// Em Array defina <id>, <quantidade>, <horda>;
//
// <id>: Id do monstro assassino, ponha '0' para desabilitar o monstro assassino.
// <quantidade>: Quantidade do monstro assassino.
// <horda>: Em qual horda ele será chamado.
//
// Para desabilitar, ponha '//' na frente da linha abaixo.
setarray [email protected]_mobassassin[0], 0, 1785, 1, 5;
// Deseja bloquear o uso de Habilidades ao gerar a Arca do Tesouro?
// Ponha '0' para desabilitar esta opção.
set [email protected]_noskilltreasure, 1;
// Quantos Rodadas de horda de monstros irá conter no evento?
// ATENÇÃO: Nunca remova esta opção, irá causar falhas no evento.
set [email protected]_horde, 6;
// De acordo com a quantidade de horda, em 'Array' defina o gênero da horda.
//
// 0: Horda Comum.
// 1: Horda Mini-Boss.
// 2: Horda MvP.
//
// Exemplo:
// setarray [email protected]_hogen[0], 0, 0, 0, 1, 2, 0;
setarray [email protected]_hogen[0], 0, 0, 0, 1, 2, 0;
// Os monstros são configurados em váriaveis do tipo 'Array'.
// Você deve determinar a chave do array e o id do monstro no valor.
//
// Exemplo:
// * set [email protected]_mobid[<chave>], <valor>
// - set [email protected]_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 [email protected]_mobid[0], 1189; // Orc Herói
// set [email protected]_mobid[1], 1019; // Esqueleto Arqueiro
//
// Se você for um usuário avançado, pode adicionar vários valores
// em um settarray.
//
// Exemplo:
// * setarray [email protected]_mobid[0], <valor1>, <valor2>, <valor3>;
// - setarray [email protected]_mobid[0], 1189, 1019, 1149; // 0 = 1189, 1 = 1019, 2 = 1149
//
// ATENÇÃO: Nunca remova esta opção, irá causar falhas no evento.
setarray [email protected]_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 configuração dos ids de monstros, ponha a quantidade
// de monstros a ser invocado de acordo com a chave do monstro.
//
// Exempo:
// set [email protected]_mobid[0], 1189;
// set [email protected]_mobqt[0], 10;
//
// Será invocado 10 monstros do id 1189.
setarray [email protected]_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 configuração dos ids de monstros, ponha a orda
// que ele será invocado de acordo com a chave do monstro.
//
// Exempo:
// set [email protected]_mobid[0], 1189;
// set [email protected]_mobho[0], 1;
//
// O monstro do id 1189 será invocado na horda 1.
setarray [email protected]_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 são configurados em váriaveis do tipo 'Array'.
// Você deve determinar a chave do array e o id do monstro arca no valor.
//
// Exemplo:
// * set [email protected]_treasureid[<chave>], <valor>
// - set [email protected]_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 [email protected]_treasureid[0], 1189; // Orc Herói
// set [email protected]_treasureid[1], 1019; // Esqueleto Arqueiro
//
// Se você for um usuário avançado, pode adicionar vários valores
// em um settarray.
//
// Exemplo:
// * setarray [email protected]_treasureid[0], <valor1>, <valor2>, <valor3>;
// - setarray [email protected]_treasureid[0], 1328, 1332, 1336; // 0 = 1328, 1 = 1332, 2 = 1336
//
// ATENÇÃO: Nunca remova esta opção, irá causar falhas no evento.
setarray [email protected]_treasureid[0], 1324, 1328, 1332, 1336, 1340, 1344, 1348, 1352, 1356, 1360;
// De acordo com a configuração dos ids de monstros arca, ponha a quantidade
// de monstros arca a ser invocado de acordo com a chave do monstro arca.
//
// Exempo:
// set [email protected]_treasureid[0], 1328;
// set [email protected]_treasureqt[0], 10;
//
// Será invocado 10 monstros arca do id 1328.
setarray [email protected]_treasureqt[0], 1, 1, 1, 1, 1, 1, 1, 1, 1, 1;
end;
// O Evento irá começar neste esquema de hora:
//
// 01:00 - 04:00 - 07:00 - 10:00
// 13:00 - 16:00 - 19:00 - 22:00
//
OnMinute00:
if( [email protected]_flag && (gettime(3) == 1 || gettime(3) == 4 || gettime(3) == 7 || gettime(3) == 10 || gettime(3) == 13|| gettime(3) == 16 || gettime(3) == 19 || gettime(3) == 22) )
donpcevent "DevilSquareEvent::OnStart";
end;
OnStart:
if( [email protected]_flag )
{
// Iniciando Variáveis nescessária.
set [email protected]_clock, 4;
set [email protected]_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 minutos, corram para a arena!",bc_all,"0x00FF00";
}
end;
OnTimer60000:
if( [email protected]_clock )
{
// Inicia o Evento
if( getmapusers("ordeal_1-1") )
{
set [email protected]_round, 1;
set [email protected]_flag, 2;
announce "[Devil Square]: O Portal está fechado, aqueles que não tiveram oportunidade podem tentar na próxima vez!",bc_all,"0x00FF00";
donpcevent "DevilSquareEvent::OnStartArena";
}
else {
announce "[Devil Square]: A Devil Square foi cancelada por não 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 " + [email protected]_clock + " minutos, corram para a arena!",bc_all,"0x00FF00";
setnpctimer 0;
set [email protected]_clock, [email protected]_clock - 1;
}
end;
OnStartArena:
if( [email protected]_flag == 2 && [email protected]_round <= [email protected]_horde )
{
// Invocando Monstros
for( set [email protected], 0; [email protected] < getarraysize([email protected]_mobid); set [email protected], [email protected] + 1 )
{
if( [email protected]_mobid[[email protected]] && [email protected]_mobqt[[email protected]] && [email protected]_mobho[[email protected]] == [email protected]_round && (getmonsterinfo([email protected]_mobid[[email protected]], 0)?1:0) )
monster "ordeal_1-1", 0, 0, "[Devil Square] "+getmonsterinfo([email protected]_mobid[[email protected]], 0), [email protected]_mobid[[email protected]], [email protected]_mobqt[[email protected]],"DevilSquareEvent::OnMobDead";
}
// Monstro Assassino
if( [email protected]_mobassassin[0] && [email protected]_mobassassin[1] && [email protected]_mobassassin[2] == [email protected]_round && (getmonsterinfo([email protected]_mobassassin[0], 0)?1:0) )
monster "ordeal_1-1", 0, 0, "[Devil Square] Assassino", [email protected]_mobassassin[0], [email protected]_mobassassin[1],"DevilSquareEvent::OnAssassinDead";
if( [email protected]_hogen[([email protected]_round-1)] == 1 )
mapannounce "ordeal_1-1", "[Devil Square]: Começou a " + [email protected]_round + "ª Square e os Mini-Boss atacam!", bc_all, "0x00FF00";
else if( [email protected]_hogen[([email protected]_round-1)] == 2 )
mapannounce "ordeal_1-1", "[Devil Square]: Começou a " + [email protected]_round + "ª Square e os Mvp's atacam!", bc_all, "0x00FF00";
else
mapannounce "ordeal_1-1", "[Devil Square]: Começou a " + [email protected]_round + "ª Square!", bc_all, "0x00FF00";
set [email protected]_round, [email protected]_round + 1;
}
else if( [email protected]_flag == 2 )
{
// Checando a possibilidade de usar Habilidades nas arca.
if( [email protected]_noskilltreasure )
setmapflag "ordeal_1-1", mf_noskill;
// Invocando as Arca Monstro.
for( set [email protected], 0; [email protected] < getarraysize([email protected]_treasureid); set [email protected], [email protected] + 1 )
{
if( [email protected]_treasureid[[email protected]] && [email protected]_treasureid[[email protected]] && (getmonsterinfo([email protected]_treasureid[[email protected]], 0)?1:0) )
monster "ordeal_1-1", 0, 0, "[Devil Square] Arca do Tesouro", [email protected]_treasureid[[email protected]], [email protected]_treasureqt[[email protected]],"DevilSquareEvent::OnTreasureDead";
}
mapannounce "ordeal_1-1", "[Devil Square]: Parabéns guerreiros, vocês derrotaram todos ataques dos monstros. Agora começa a Caça ao Tesouro.", bc_all, "0x00FF00";
}
end;
OnMobDead:
if( mobcount("ordeal_1-1", "all") > 0 && [email protected]_flag <= [email protected]_horde )
mapannounce "ordeal_1-1", "[Devil Square]: Faltam " + mobcount("ordeal_1-1", "all") + " monstros para a " + [email protected]_round + "ª Square.",bc_all,"0x00FF00";
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 [email protected]_1, rand(0, 2);
if( [email protected]_1 == 0 && [email protected]_baseexp )
{
set BaseExp, BaseExp + [email protected]_baseexp;
break;
}
else if( [email protected]_1 == 1 && [email protected]_jobexp )
{
set JobExp, JobExp + 1;
break;
}
else if( [email protected]_1 == 2 && getarraysize([email protected]_itemid) )
{
set [email protected], rand(0, (getarraysize([email protected]_itemid)-1));
getitem [email protected]_itemid[[email protected]], [email protected]_itemqt[[email protected]];
break;
}
else if( !getarraysize([email protected]_itemid) && [email protected]_baseexp && [email protected]_jobexp )
break;
}
if( !mobcount("ordeal_1-1", "all") )
{
announce "[Devil Square]: Parabéns 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([email protected]$, [email protected], [email protected], 0);
if( [email protected]_flag == 2 && [email protected]$ == "ordeal_1-1" )
initnpctimer;
end;
OnTimer6000:
announce "[Devil Square]: Todos falharam na Devil Square, os Monstros sairam vitoriosos na " + ([email protected]_round-1) + "ª Square.",bc_all,"0x00FF00";
donpcevent "DevilSquareWarp::OnEndArena";
stopnpctimer;
end;
}
prontera,149,189,5 script Devil Square#ds_03::DevilSquareWarp 733,{
set [email protected]_lvl, 99;
mes "^483D8B[Recepcionista]^000000";
mes "Bem-vindo a ^0000FFDevil Square^000000.";
mes "^FF0000Se você falhar você morre!^000000";
if( [email protected]_flag )
mes "No momemento nosso portal está fechado, por não estár no horário da batalha na Arena.";
else if( [email protected]_flag == 2 )
mes "No momemento nosso portal está fechado por estar ocorrendo uma batalha na Arena.";
mes "Em que posso ajudar?";
next;
switch( select((getgmlevel()>[email protected]_lvl?([email protected]_flag?"^0000FF- Desligar a Devil Square.^000000":"^0000FF- Ligar a Devil Square.^000000"):""), ([email protected]_flag==1?"^0000FF- Entrar na Devil Square.^000000":""), "- Informações.", "^FF0000- Saír.^000000") )
{
case 1:
mes "^483D8B[Recepcionista]^000000";
if( [email protected]_flag )
mes "Deseja desligar a ^0000FFDevil Square^000000?";
else
mes "Deseja ligar a ^0000FFDevil Square^000000?";
next;
if( select("- Sim", "- Não.") == 1 )
{
if( [email protected]_flag )
donpcevent "DevilSquareEvent::OnStart";
else
donpcevent "DevilSquareWarp::OnEnd";
}
break;
case 2:
if( [email protected]_flag != 1 )
{
mes "^483D8B[Recepcionista]^000000";
mes "Me desculpe, mais a arena não está aberta.";
mes "Volte mais tarde!";
close;
}
else if( [email protected]_baselevel && BaseLevel < [email protected]_baselevel )
{
mes "^483D8B[Recepcionista]^000000";
mes "Para entrar na ^0000FFDevil Square^000000, você deve ter o ^0000FFNível de Base^000000 ^FF000000" + [email protected]_baselevel + "^000000 ou superior.";
close;
}
else if( [email protected]_zenycost && Zeny < [email protected]_zenycost )
{
mes "^483D8B[Recepcionista]^000000";
mes "Para entrar na ^0000FFDevil Square^000000, você precisa ter ^FF000000" + [email protected]_zenycost + "^000000 Zenys.";
close;
}
else if( [email protected]_maxplayer && getmapusers("ordeal_1-1") >= [email protected]_maxplayer )
{
mes "^483D8B[Recepcionista]^000000";
mes "O limite de jogadores na ^0000FFDevil Square^000000 foi atingido, você não pode entrar na arena.";
close;
}
else {
mes "^483D8B[Recepcionista]^000000";
mes "Realmente deseja entrar na arena?";
next;
if( select("- Sim.", "- Não.") == 1 )
{
mes "^483D8B[Recepcionista]^000000";
mes "Tudo bem, vou te mandar para lá!";
close2;
if( [email protected]_zenycost ) set Zeny, Zeny - [email protected]_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" + [email protected]_horde + "^000000 ^0000FFroundes^000000 em que são invocado hordas de monstros para os jogadores exterminar.";
if( [email protected]_baselevel )
mes "Para entrar na ^0000FFDevil Square^000000, você deve ter o ^0000FFNível de Base^000000 ^FF0000" + [email protected]_baselevel + "^000000 ou superior.";
else
mes "Qualquer ^0000FFNível de Base^000000 é aceito na ^0000FFDevil Square^000000.";
if( [email protected]_zenycost )
mes "Na entrada ^0000FFDevil Square^000000, será cobrado ^FF0000" + [email protected]_zenycost + "^000000 Zenys.";
else
mes "Não há custo para entrar na ^0000FFDevil Square^000000.";
if( [email protected]_maxplayer )
mes "O limite de jogadores dentro da ^0000FFDevil Square^000000 é de ^FF0000" + [email protected]_maxplayer + "^000000 jogadores.";
else
mes "Não há limite de jogadores dentro da ^0000FFDevil Square^000000.";
mes "Sua ^0000FFmissão^000000 é sobreviver todos os ^0000FFroundes^000000.";
mes "Quando terminar os ^0000FFroundes^000000, aprece-rá as ^0000FFArcas do Tesouro^000000, no qual nela você pode ganhar:";
if( getarraysize([email protected]_itemid) )
mes "^FF0000- Itens.^000000";
if( [email protected]_baseexp )
mes "^FF0000- Experiência de Base.^000000";
if( [email protected]_jobexp )
mes "^FF0000- Experiência de Classe.^000000";
mes " ";
mes "Preste muita atenção quando essas Arcas forem invocadas!";
next;
mes "^483D8B[Recepcionista]^000000";
mes "A arena é aberta nos seguintes horários:";
mes " ";
mes "^0000FF01:00H^000000 - ^0000FF13:00H^000000";
mes "^0000FF04:00H^000000 - ^0000FF16:00H^000000";
mes "^0000FF07:00H^000000 - ^0000FF19:00H^000000";
mes "^0000FF10:00H^000000 - ^0000FF22: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:
// Segurança
delwaitingroom;
stopnpctimer "DevilSquareEvent";
announce "[Devil Square]: A Devil Square foi cancelada!", bc_all, "0x00FF00";
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 [email protected]_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 Saída]^000000";
mes "Deseja retornar a Prontera?";
next;
if(select("Sim!:Não!")==1) {
mes "^483D8B[Recepcionista da Saída]^000000";
mes "Muito bem, boa viajem!";
close2;
if( [email protected]_flag == 2 ) donpcevent "DevilSquarePlayer::OnPlayerCheck";
warp "prontera", 154, 175;
end;
}
mes "^483D8B[Recepcionista da Saída]^000000";
mes "Você deve saír logo... ou pode ter grandes problemas...";
close;
OnInit:
waitingroom "Devil Square Saída",0;
end;
}
Como faço pra subistituir os baús desse script por um único báu com itens e % chance de drop para cada iten.
apenas 1 baú e nele tivese a chance de por exemplo 1% itemid 1234, 10% itemid 12343
Pensei em substituir os báus por um bau monstro e configurar o drop no mobdb, mas como faço isso?
Desde ja agradeço.
- script Devil Square#ds_01::DevilSquareEvent -1,{ OnInit: // Qual nível de Base para Entrar na Devil Square // // Deixe 0 para desabilitar esta opção. set [email protected]_baselevel, 1; // Qual o custo de Zeny para entrar na Devil Square? // // Deixe '0' para desabilitar esta opção ou ponha a // quantidade de Zeny a ser conbrado. set [email protected]_zenycost, 0; // Configurações das Recompensas. // Os itens são entregue aos jogadores que quebrarem // o Arca do Tesouro ao terminar o combate contra os // monstros. Logo abaixo, terá uma série de informações // e configurações, para você configurar da melhor // maneira que achar para o seu servidor. // Configurações de EXP por Recompensa. // // Quanto de Experiência de Base o Jogador vai ganhar // ao matar uma Arca do Tesouro? // // Deixe '0' para desabilitar esta opção ou ponha a // quantidade de exp a ser ganha. set [email protected]_baseexp, 0; // Quanto de Experiência de Classe o jogador vai ganhar // ao matar uma Arca do Tesouro? // // Deixe '0' para desabilitar esta opção. set [email protected]_jobexp, 0; // Configurações dos Itens. // // Os itens são configurados em váriaveis do tipo 'Array'. // Você deve determinar a chave do array e o id do item no valor. // // Exemplo: // * set [email protected]_itemid[<chave>], <valor> // - set [email protected]_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 [email protected]_itemid[0], 501; // Poção_Vermelha // set [email protected]_itemid[1], 502; // Poção_Laranja // // Se você for um usuário avançado, pode adicionar vários valores // em um settarray. // // Exemplo: // * setarray [email protected]_itemid[0], <valor1>, <valor2>, <valor3>; // - setarray [email protected]_itemid[0], 501, 502, 503; // 0 = 501, 1 = 502, 2 = 503 // // Para desabilitar esta opção, habilite a linha abaixo e em seguida desabilite // a linha que está sendo configurado o array! // deletearray [email protected]_itemid[0], getarraysize([email protected]_itemid); setarray [email protected]_itemid[0], 501, 0; // De acordo com a configuração dos ids de itens, ponha a quantidade // do item a ser ganho de acordo com a chave do item. // // Exempo: // set [email protected]_itemid[0], 501; // set [email protected]_itemqt[0], 10; // // A recompensada será '10'x'501'. setarray [email protected]_itemqt[0], 10, 0; // Configurações de Jogadores. // // Qual o mínimo de jogadores para começar o evento DevilSquare? // ATENÇÃO: Nunca ponhe '0' na configuração abaixo. set [email protected]_min_player, 1; // Qual o máximo de jogadores que podem entrar no evento DevilSquare? // Ponha '0' para desabilitar esta função. set [email protected]_max_player, 0; // Configurações dos Monstros. // // Em Array defina <id>, <quantidade>, <horda>; // // <id>: Id do monstro assassino, ponha '0' para desabilitar o monstro assassino. // <quantidade>: Quantidade do monstro assassino. // <horda>: Em qual horda ele será chamado. // // Para desabilitar, ponha '//' na frente da linha abaixo. setarray [email protected]_mobassassin[0], 0, 1785, 1, 5; // Deseja bloquear o uso de Habilidades ao gerar a Arca do Tesouro? // Ponha '0' para desabilitar esta opção. set [email protected]_noskilltreasure, 1; // Quantos Rodadas de horda de monstros irá conter no evento? // ATENÇÃO: Nunca remova esta opção, irá causar falhas no evento. set [email protected]_horde, 6; // De acordo com a quantidade de horda, em 'Array' defina o gênero da horda. // // 0: Horda Comum. // 1: Horda Mini-Boss. // 2: Horda MvP. // // Exemplo: // setarray [email protected]_hogen[0], 0, 0, 0, 1, 2, 0; setarray [email protected]_hogen[0], 0, 0, 0, 1, 2, 0; // Os monstros são configurados em váriaveis do tipo 'Array'. // Você deve determinar a chave do array e o id do monstro no valor. // // Exemplo: // * set [email protected]_mobid[<chave>], <valor> // - set [email protected]_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 [email protected]_mobid[0], 1189; // Orc Herói // set [email protected]_mobid[1], 1019; // Esqueleto Arqueiro // // Se você for um usuário avançado, pode adicionar vários valores // em um settarray. // // Exemplo: // * setarray [email protected]_mobid[0], <valor1>, <valor2>, <valor3>; // - setarray [email protected]_mobid[0], 1189, 1019, 1149; // 0 = 1189, 1 = 1019, 2 = 1149 // // ATENÇÃO: Nunca remova esta opção, irá causar falhas no evento. setarray [email protected]_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 configuração dos ids de monstros, ponha a quantidade // de monstros a ser invocado de acordo com a chave do monstro. // // Exempo: // set [email protected]_mobid[0], 1189; // set [email protected]_mobqt[0], 10; // // Será invocado 10 monstros do id 1189. setarray [email protected]_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 configuração dos ids de monstros, ponha a orda // que ele será invocado de acordo com a chave do monstro. // // Exempo: // set [email protected]_mobid[0], 1189; // set [email protected]_mobho[0], 1; // // O monstro do id 1189 será invocado na horda 1. setarray [email protected]_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 são configurados em váriaveis do tipo 'Array'. // Você deve determinar a chave do array e o id do monstro arca no valor. // // Exemplo: // * set [email protected]_treasureid[<chave>], <valor> // - set [email protected]_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 [email protected]_treasureid[0], 1189; // Orc Herói // set [email protected]_treasureid[1], 1019; // Esqueleto Arqueiro // // Se você for um usuário avançado, pode adicionar vários valores // em um settarray. // // Exemplo: // * setarray [email protected]_treasureid[0], <valor1>, <valor2>, <valor3>; // - setarray [email protected]_treasureid[0], 1328, 1332, 1336; // 0 = 1328, 1 = 1332, 2 = 1336 // // ATENÇÃO: Nunca remova esta opção, irá causar falhas no evento. setarray [email protected]_treasureid[0], 1324, 1328, 1332, 1336, 1340, 1344, 1348, 1352, 1356, 1360; // De acordo com a configuração dos ids de monstros arca, ponha a quantidade // de monstros arca a ser invocado de acordo com a chave do monstro arca. // // Exempo: // set [email protected]_treasureid[0], 1328; // set [email protected]_treasureqt[0], 10; // // Será invocado 10 monstros arca do id 1328. setarray [email protected]_treasureqt[0], 1, 1, 1, 1, 1, 1, 1, 1, 1, 1; end; // O Evento irá começar neste esquema de hora: // // 01:00 - 04:00 - 07:00 - 10:00 // 13:00 - 16:00 - 19:00 - 22:00 // OnMinute00: if( [email protected]_flag && (gettime(3) == 1 || gettime(3) == 4 || gettime(3) == 7 || gettime(3) == 10 || gettime(3) == 13|| gettime(3) == 16 || gettime(3) == 19 || gettime(3) == 22) ) donpcevent "DevilSquareEvent::OnStart"; end; OnStart: if( [email protected]_flag ) { // Iniciando Variáveis nescessária. set [email protected]_clock, 4; set [email protected]_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 minutos, corram para a arena!",bc_all,"0x00FF00"; } end; OnTimer60000: if( [email protected]_clock ) { // Inicia o Evento if( getmapusers("ordeal_1-1") ) { set [email protected]_round, 1; set [email protected]_flag, 2; announce "[Devil Square]: O Portal está fechado, aqueles que não tiveram oportunidade podem tentar na próxima vez!",bc_all,"0x00FF00"; donpcevent "DevilSquareEvent::OnStartArena"; } else { announce "[Devil Square]: A Devil Square foi cancelada por não 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 " + [email protected]_clock + " minutos, corram para a arena!",bc_all,"0x00FF00"; setnpctimer 0; set [email protected]_clock, [email protected]_clock - 1; } end; OnStartArena: if( [email protected]_flag == 2 && [email protected]_round <= [email protected]_horde ) { // Invocando Monstros for( set [email protected], 0; [email protected] < getarraysize([email protected]_mobid); set [email protected], [email protected] + 1 ) { if( [email protected]_mobid[[email protected]] && [email protected]_mobqt[[email protected]] && [email protected]_mobho[[email protected]] == [email protected]_round && (getmonsterinfo([email protected]_mobid[[email protected]], 0)?1:0) ) monster "ordeal_1-1", 0, 0, "[Devil Square] "+getmonsterinfo([email protected]_mobid[[email protected]], 0), [email protected]_mobid[[email protected]], [email protected]_mobqt[[email protected]],"DevilSquareEvent::OnMobDead"; } // Monstro Assassino if( [email protected]_mobassassin[0] && [email protected]_mobassassin[1] && [email protected]_mobassassin[2] == [email protected]_round && (getmonsterinfo([email protected]_mobassassin[0], 0)?1:0) ) monster "ordeal_1-1", 0, 0, "[Devil Square] Assassino", [email protected]_mobassassin[0], [email protected]_mobassassin[1],"DevilSquareEvent::OnAssassinDead"; if( [email protected]_hogen[([email protected]_round-1)] == 1 ) mapannounce "ordeal_1-1", "[Devil Square]: Começou a " + [email protected]_round + "ª Square e os Mini-Boss atacam!", bc_all, "0x00FF00"; else if( [email protected]_hogen[([email protected]_round-1)] == 2 ) mapannounce "ordeal_1-1", "[Devil Square]: Começou a " + [email protected]_round + "ª Square e os Mvp's atacam!", bc_all, "0x00FF00"; else mapannounce "ordeal_1-1", "[Devil Square]: Começou a " + [email protected]_round + "ª Square!", bc_all, "0x00FF00"; set [email protected]_round, [email protected]_round + 1; } else if( [email protected]_flag == 2 ) { // Checando a possibilidade de usar Habilidades nas arca. if( [email protected]_noskilltreasure ) setmapflag "ordeal_1-1", mf_noskill; // Invocando as Arca Monstro. for( set [email protected], 0; [email protected] < getarraysize([email protected]_treasureid); set [email protected], [email protected] + 1 ) { if( [email protected]_treasureid[[email protected]] && [email protected]_treasureid[[email protected]] && (getmonsterinfo([email protected]_treasureid[[email protected]], 0)?1:0) ) monster "ordeal_1-1", 0, 0, "[Devil Square] Arca do Tesouro", [email protected]_treasureid[[email protected]], [email protected]_treasureqt[[email protected]],"DevilSquareEvent::OnTreasureDead"; } mapannounce "ordeal_1-1", "[Devil Square]: Parabéns guerreiros, vocês derrotaram todos ataques dos monstros. Agora começa a Caça ao Tesouro.", bc_all, "0x00FF00"; } end; OnMobDead: if( mobcount("ordeal_1-1", "all") > 0 && [email protected]_flag <= [email protected]_horde ) mapannounce "ordeal_1-1", "[Devil Square]: Faltam " + mobcount("ordeal_1-1", "all") + " monstros para a " + [email protected]_round + "ª Square.",bc_all,"0x00FF00"; 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 [email protected]_1, rand(0, 2); if( [email protected]_1 == 0 && [email protected]_baseexp ) { set BaseExp, BaseExp + [email protected]_baseexp; break; } else if( [email protected]_1 == 1 && [email protected]_jobexp ) { set JobExp, JobExp + 1; break; } else if( [email protected]_1 == 2 && getarraysize([email protected]_itemid) ) { set [email protected], rand(0, (getarraysize([email protected]_itemid)-1)); getitem [email protected]_itemid[[email protected]], [email protected]_itemqt[[email protected]]; break; } else if( !getarraysize([email protected]_itemid) && [email protected]_baseexp && [email protected]_jobexp ) break; } if( !mobcount("ordeal_1-1", "all") ) { announce "[Devil Square]: Parabéns 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([email protected]$, [email protected], [email protected], 0); if( [email protected]_flag == 2 && [email protected]$ == "ordeal_1-1" ) initnpctimer; end; OnTimer6000: announce "[Devil Square]: Todos falharam na Devil Square, os Monstros sairam vitoriosos na " + ([email protected]_round-1) + "ª Square.",bc_all,"0x00FF00"; donpcevent "DevilSquareWarp::OnEndArena"; stopnpctimer; end; } prontera,149,189,5 script Devil Square#ds_03::DevilSquareWarp 733,{ set [email protected]_lvl, 99; mes "^483D8B[Recepcionista]^000000"; mes "Bem-vindo a ^0000FFDevil Square^000000."; mes "^FF0000Se você falhar você morre!^000000"; if( [email protected]_flag ) mes "No momemento nosso portal está fechado, por não estár no horário da batalha na Arena."; else if( [email protected]_flag == 2 ) mes "No momemento nosso portal está fechado por estar ocorrendo uma batalha na Arena."; mes "Em que posso ajudar?"; next; switch( select((getgmlevel()>[email protected]_lvl?([email protected]_flag?"^0000FF- Desligar a Devil Square.^000000":"^0000FF- Ligar a Devil Square.^000000"):""), ([email protected]_flag==1?"^0000FF- Entrar na Devil Square.^000000":""), "- Informações.", "^FF0000- Saír.^000000") ) { case 1: mes "^483D8B[Recepcionista]^000000"; if( [email protected]_flag ) mes "Deseja desligar a ^0000FFDevil Square^000000?"; else mes "Deseja ligar a ^0000FFDevil Square^000000?"; next; if( select("- Sim", "- Não.") == 1 ) { if( [email protected]_flag ) donpcevent "DevilSquareEvent::OnStart"; else donpcevent "DevilSquareWarp::OnEnd"; } break; case 2: if( [email protected]_flag != 1 ) { mes "^483D8B[Recepcionista]^000000"; mes "Me desculpe, mais a arena não está aberta."; mes "Volte mais tarde!"; close; } else if( [email protected]_baselevel && BaseLevel < [email protected]_baselevel ) { mes "^483D8B[Recepcionista]^000000"; mes "Para entrar na ^0000FFDevil Square^000000, você deve ter o ^0000FFNível de Base^000000 ^FF000000" + [email protected]_baselevel + "^000000 ou superior."; close; } else if( [email protected]_zenycost && Zeny < [email protected]_zenycost ) { mes "^483D8B[Recepcionista]^000000"; mes "Para entrar na ^0000FFDevil Square^000000, você precisa ter ^FF000000" + [email protected]_zenycost + "^000000 Zenys."; close; } else if( [email protected]_maxplayer && getmapusers("ordeal_1-1") >= [email protected]_maxplayer ) { mes "^483D8B[Recepcionista]^000000"; mes "O limite de jogadores na ^0000FFDevil Square^000000 foi atingido, você não pode entrar na arena."; close; } else { mes "^483D8B[Recepcionista]^000000"; mes "Realmente deseja entrar na arena?"; next; if( select("- Sim.", "- Não.") == 1 ) { mes "^483D8B[Recepcionista]^000000"; mes "Tudo bem, vou te mandar para lá!"; close2; if( [email protected]_zenycost ) set Zeny, Zeny - [email protected]_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" + [email protected]_horde + "^000000 ^0000FFroundes^000000 em que são invocado hordas de monstros para os jogadores exterminar."; if( [email protected]_baselevel ) mes "Para entrar na ^0000FFDevil Square^000000, você deve ter o ^0000FFNível de Base^000000 ^FF0000" + [email protected]_baselevel + "^000000 ou superior."; else mes "Qualquer ^0000FFNível de Base^000000 é aceito na ^0000FFDevil Square^000000."; if( [email protected]_zenycost ) mes "Na entrada ^0000FFDevil Square^000000, será cobrado ^FF0000" + [email protected]_zenycost + "^000000 Zenys."; else mes "Não há custo para entrar na ^0000FFDevil Square^000000."; if( [email protected]_maxplayer ) mes "O limite de jogadores dentro da ^0000FFDevil Square^000000 é de ^FF0000" + [email protected]_maxplayer + "^000000 jogadores."; else mes "Não há limite de jogadores dentro da ^0000FFDevil Square^000000."; mes "Sua ^0000FFmissão^000000 é sobreviver todos os ^0000FFroundes^000000."; mes "Quando terminar os ^0000FFroundes^000000, aprece-rá as ^0000FFArcas do Tesouro^000000, no qual nela você pode ganhar:"; if( getarraysize([email protected]_itemid) ) mes "^FF0000- Itens.^000000"; if( [email protected]_baseexp ) mes "^FF0000- Experiência de Base.^000000"; if( [email protected]_jobexp ) mes "^FF0000- Experiência de Classe.^000000"; mes " "; mes "Preste muita atenção quando essas Arcas forem invocadas!"; next; mes "^483D8B[Recepcionista]^000000"; mes "A arena é aberta nos seguintes horários:"; mes " "; mes "^0000FF01:00H^000000 - ^0000FF13:00H^000000"; mes "^0000FF04:00H^000000 - ^0000FF16:00H^000000"; mes "^0000FF07:00H^000000 - ^0000FF19:00H^000000"; mes "^0000FF10:00H^000000 - ^0000FF22: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: // Segurança delwaitingroom; stopnpctimer "DevilSquareEvent"; announce "[Devil Square]: A Devil Square foi cancelada!", bc_all, "0x00FF00"; 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 [email protected]_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 Saída]^000000"; mes "Deseja retornar a Prontera?"; next; if(select("Sim!:Não!")==1) { mes "^483D8B[Recepcionista da Saída]^000000"; mes "Muito bem, boa viajem!"; close2; if( [email protected]_flag == 2 ) donpcevent "DevilSquarePlayer::OnPlayerCheck"; warp "prontera", 154, 175; end; } mes "^483D8B[Recepcionista da Saída]^000000"; mes "Você deve saír logo... ou pode ter grandes problemas..."; close; OnInit: waitingroom "Devil Square Saída",0; end; }Edited by brunomenezesLink to comment
Share on other sites