/* ___ ___ ___ ___ ___ /\ \ /\__\ /\ \ _____ /\__\ /\ \ _\:\ \ /:/ _/_ \:\ \ /::\ \ /:/ _/_ \:\ \ /\ \:\ \ /:/ /\__\ \:\ \ /:/\:\ \ /:/ /\__\ \:\ \ _\:\ \:\ \ /:/ /:/ _/_ _____\:\ \ /:/ \:\__\ /:/ /:/ _/_ _____\:\ \ /\ \:\ \:\__\ /:/_/:/ /\__\ /::::::::\__\ /:/__/ \:|__| /:/_/:/ /\__\ /::::::::\__\ \:\ \:\/:/ / \:\/:/ /:/ / \:\~~\~~\/__/ \:\ \ /:/ / \:\/:/ /:/ / \:\~~\~~\/__/ \:\ \::/ / \::/_/:/ / \:\ \ \:\ /:/ / \::/_/:/ / \:\ \ \:\/:/ / \:\/:/ / \:\ \ \:\/:/ / \:\/:/ / \:\ \ \::/ / \::/ / \:\__\ \::/ / \::/ / \:\__\ \/__/ \/__/ \/__/ \/__/ \/__/ \/__/ */ // =========================================================== // // Nome: Devil Square por Stuff // =========================================================== // // Versão: 1.5 // =========================================================== // // Autor: Wenden Carvalho // =========================================================== // // Changelog: // Alterado id view da sprite do npc de acordo com atualização do emulador. // Retirado comandos com letra maiúsculas que ocasionava em erros. // =========================================================== // // NPC testado dia 10/11/2016 por Wenden Carvalho. // =========================================================== // // Descrição: Ao iniciar o evento surgirão monstros nos quais // os jogadores terão que matar, cada monstro que o jogador matar // ele vai receber uma quantidade aleatória de Moeda Poring. São // 5 rodadas ao todo, após o final da última rodada, o NPC fará // uma lista dos 5 jogadores que mais mataram monstros, esses 5 // permanecerão no evento para ir atrás das Caixas do Tesouro, os // demais serão teletransportados para Prontera. As Moedas Poring // Obtidas no evento poderão ser trocadas por itens, todo os itens // e quantidades são configurados aqui no prórpio script, as // configurações ficam na linha: 170. // =========================================================== // /* Tabela SQL - Adicione em seu PhpmyAdmin CREATE TABLE IF NOT EXISTS `devilsquare` ( `id_usuario` int(11) NOT NULL, `nome` varchar(255) NOT NULL, `id_acc` int(11) NOT NULL, `pontos` int(11) NOT NULL, PRIMARY KEY (`id_usuario`) ) ENGINE=MyISAM; */ prontera,146,171,5 script Devil Square 491,{ mes "^008000["+strnpcinfo(1)+"]^000000"; mes "Bem-vindo aventureiro."; mes "Eu tenho um desafio para você"; mes "deseja aceitar?"; next; switch(select("Sim, eu aceito:Não, volto depois:Trocar "+getitemname($@id)+":Quero informações")){ case 1: if($aberto == 0){ mes "^008000["+strnpcinfo(1)+"]^000000"; mes "A Devil Square está fechado"; mes "no momento, volte mais tarde."; close; } percentheal 100,100; warp "ordeal_1-1",189,189; announce strcharinfo(0)+" entrou na Devil Square.",8; end; case 2: mes "^008000["+strnpcinfo(1)+"]^000000"; mes "Estarei aqui quando precisar"; mes "de um desafio."; close; case 3: mes "^008000["+strnpcinfo(1)+"]^000000"; mes "Escolha qual item deseja trocar"; mes "por ^FF0000"+getitemname($@id)+"^000000."; next; set @menu$,""; for(set @i,0; @i < getarraysize($@l); set @i,@i+1) set @menu$,@menu$+""+getitemname($@l[@i])+" - ^FF0000"+$@y[@i]+"^000000x "+getitemname($@id)+":"; set @menu$,@menu$+"Cancelar"; set @sel,select(@menu$)-1; if(@sel == getarraysize($@l)) close; mes "^008000["+strnpcinfo(1)+"]^000000"; mes "Agora me diga quantos"; mes "^FF0000"+getitemname($@l[@sel])+"^000000 você quer."; mes "- 0 para Cencelar."; next; input @qnt; if(@qnt == 0) close; set @cost,$@y[@sel]*@qnt; mes "^008000["+strnpcinfo(1)+"]^000000"; mes "^FF0000"+@qnt+"^000000x ^FF0000"+getitemname($@l[@sel])+"^000000"; mes "São ^FF0000"+@cost+"^000000x ^FF0000"+getitemname($@id)+"^000000."; mes "Deseja realizar a troca?"; next; if(select("Sim:Não") == 2) close; if(countitem($@id) < @cost){ mes "^008000["+strnpcinfo(1)+"]^000000"; mes "Você não tem ^FF0000"+getitemname($@id)+"^000000"; mes "suficientes para realizar a troca."; close; } mes "^008000["+strnpcinfo(1)+"]^000000"; mes "Está feito..."; mes "Aqui está seus"; mes "^FF0000"+getitemname($@l[@sel])+"^000000."; close2; delitem $@id,@cost; getitem $@l[@sel],@qnt; end; case 4: mes "^008000["+strnpcinfo(1)+"]^000000"; mes "A Devil Square é um evento"; mes "automático ondes surgem vários"; mes "monstros e o objetivo dos"; mes "jogadores é matar todos os monstros."; next; mes "^008000["+strnpcinfo(1)+"]^000000"; mes "O objetivo final é chegar a"; mes "última rodada onde surgem as"; mes "Caixas do Tesouro."; next; mes "^008000["+strnpcinfo(1)+"]^000000"; mes "A cada monstro que você mata"; mes "você recebe ^FF0000"+getitemname($@id)+"^000000"; mes "a quantidade é aleatória."; mes "As Caixas do Tesouro dão uma"; mes "quantidade mais alta de ^FF0000"+getitemname($@id)+"^000000."; next; mes "^008000["+strnpcinfo(1)+"]^000000"; mes "Com esses itens você pode"; mes "trocar aqui mesmo por itens,"; mes "os itens são configurados"; mes "pelo Administrador."; next; mes "^008000["+strnpcinfo(1)+"]^000000"; mes "Mas para chegar até a rodada"; mes "das Caixas do Tesouro você"; mes "precisar matar muitos monstros,"; mes "porque somente os 5 jogadores"; mes "que mais matarem monstros irão"; mes "chegar a rodada final."; next; mes "^008000["+strnpcinfo(1)+"]^000000"; mes "Os demais serão teletransportados"; mes "para prontera, os jogadores que"; mes "continuarem no evento irão"; mes "correr atrás das Caixas do Tesouro."; close; } OnInit: // Configurações set $@id,7539; // Id do item que será recebido ao matar os monstros e as caixas do tesouro. Padrão: [7539 = Moeda Poring]. setarray $@p[0],1,2; // Quantidade de itens que serão sorteados ao matar os monstros. Padrão: [Entre 1 e 2]. setarray $@b[0],20,30,40,50; // Quantidade de itens que serão sorteados ao destruir as Caixas do Tesouro. Padrão: [Entre 20,30,40 e 50]; setarray $@l[0],607,608,678,7135,7136,7139; // Id dos itens que poderão ser trocados. setarray $@y[0],10,5,8,5,5,6; // Preço dos itens que poderão ser trocados. waitingroom "Devil Square",0; end; } ordeal_1-1,182,183,5 script DS2 -1,{ OnTimer30000: if($status == 0) end; if (getmapusers("ordeal_1-1") == 0){ announce "Todos os players foram mortos na Devil Square!!",8; set $status,0; killmonsterall "ordeal_1-1"; end; } initnpctimer; end; } ordeal_1-1,182,183,5 script DS3 -1,{ OnMinute05: announce "O portal para a Devil Square está aberto, e em [5] minutos ela terá inicio!",8; initnpctimer; killmonsterall "ordeal_1-1"; set $aberto,1; disablenpc "DS4"; set $status,1; query_sql "DELETE FROM `devilsquare`"; end; OnTimer60000: announce "O portal para a Devil Square está aberto, e em [4] minutos ela terá inicio!",8; end; OnTimer120000: announce "O portal para a Devil Square está aberto, e em [3] minutos ela terá inicio!",8; end; OnTimer180000: announce "O portal para a Devil Square está aberto, e em [2] minutos ela terá inicio!",8; end; OnTimer240000: announce "O portal para a Devil Square está aberto, e em [1] minuto ela terá inicio!",8; end; OnTimer300000: announce "A Devil Square começou, boa sorte a todos!",8; initnpctimer "DS2"; set $aberto,0; set $mobs,20; areamonster "ordeal_1-1",183,182,246,244,"[DS] Orc Zumbi",1153,2,"DS3::Ondsdead"; areamonster "ordeal_1-1",183,182,246,244,"[DS] Orc Esqueleto",1152,4,"DS3::Ondsdead"; areamonster "ordeal_1-1",205,205,219,219,"[DS] Familiar",1005,2,"DS3::Ondsdead"; areamonster "ordeal_1-1",212,215,222,220,"[DS] Drainliar",1111,2,"DS3::Ondsdead"; areamonster "ordeal_1-1",229,233,183,182,"[DS] Chon Chon de Aço",1042,2,"DS3::Ondsdead"; areamonster "ordeal_1-1",230,246,246,244,"[DS] Zenorc",1177,2,"DS3::Ondsdead"; areamonster "ordeal_1-1",241,252,205,205,"[DS] Orc Arqueiro",1189,2,"DS3::Ondsdead"; areamonster "ordeal_1-1",251,235,222,220,"[DS] Sorrateiro",1037,2,"DS3::Ondsdead"; areamonster "ordeal_1-1",203,204,194,195,"[DS] Lobo",1013,2,"DS3::Ondsdead"; end; Ondsdead: if ($status == 0) end; set $mobs,$mobs-1; set @premio,rand(getarraysize($@p)); getitem $@id,$@p[@premio]; callfunc "Checador",1; if($mobs == 10){ mapannounce "ordeal_1-1","Devil Square: Faltam 10 monstros para a 2° rodada!",8; } if($mobs == 0){ announce "Devil Square: Começou a 2° rodada de monstros!",8; goto Ondsround2; } end; Ondsround2: set $mobs,20; areamonster "ordeal_1-1",183,182,246,244,"[DS] Esqueleto Soldado",1028,1,"DS3::Ondsdead2"; areamonster "ordeal_1-1",183,182,246,244,"[DS] Esqueleto Soldado",1028,2,"DS3::Ondsdead2"; areamonster "ordeal_1-1",205,205,219,219,"[DS] Orc Arqueiro",1189,1,"DS3::Ondsdead2"; areamonster "ordeal_1-1",212,215,222,220,"[DS] Orc Arqueiro",1189,2,"DS3::Ondsdead2"; areamonster "ordeal_1-1",229,233,183,182,"[DS] Arenoso",1165,2,"DS3::Ondsdead2"; areamonster "ordeal_1-1",230,246,246,244,"[DS] Arenoso",1165,2,"DS3::Ondsdead2"; areamonster "ordeal_1-1",241,252,205,205,"[DS] Esqueleto Arqueiro",1016,2,"DS3::Ondsdead2"; areamonster "ordeal_1-1",251,235,222,220,"[DS] Esqueleto Arqueiro",1016,1,"DS3::Ondsdead2"; areamonster "ordeal_1-1",203,204,194,195,"[DS] Minorus",1149,1,"DS3::Ondsdead2"; areamonster "ordeal_1-1",251,235,222,220,"[DS] Minorus",1149,2,"DS3::Ondsdead2"; areamonster "ordeal_1-1",210,208,194,195,"[DS] Réquiem",1164,2,"DS3::Ondsdead2"; areamonster "ordeal_1-1",203,204,194,195,"[DS] Réquiem",1164,2,"DS3::Ondsdead2"; end; Ondsdead2: if ($status == 0) end; set $mobs,$mobs-1; set @premio,rand(getarraysize($@p)); getitem $@id,$@p[@premio]; callfunc "Checador",1; if($mobs == 10){ mapannounce "ordeal_1-1","Devil Square: Faltam 10 monstros para 3° rodada!",8; } if($mobs == 0){ announce "Devil Square: Começou a 3° rodada de monstros!",8; goto Ondsround3; } end; Ondsround3: set $mobs,20; areamonster "ordeal_1-1",183,182,246,244,"[DS] Diabinho",1292,2,"DS3::Ondsdead3"; areamonster "ordeal_1-1",183,182,246,244,"[DS] Diabinho",1292,1,"DS3::Ondsdead3"; areamonster "ordeal_1-1",205,205,219,219,"[DS] Leib Olmai",1306,2,"DS3::Ondsdead3"; areamonster "ordeal_1-1",212,215,222,220,"[DS] Leib Olmai",1306,1,"DS3::Ondsdead3"; areamonster "ordeal_1-1",229,233,183,182,"[DS] Gullinbursti",1311,1,"DS3::Ondsdead3"; areamonster "ordeal_1-1",230,246,246,244,"[DS] Gullinbursti",1311,2,"DS3::Ondsdead3"; areamonster "ordeal_1-1",241,252,205,205,"[DS] Gullinbursti",1311,1,"DS3::Ondsdead3"; areamonster "ordeal_1-1",251,235,222,220,"[DS] Serial Killer",1507,1,"DS3::Ondsdead3"; areamonster "ordeal_1-1",203,204,194,195,"[DS] Serial Killer",1507,1,"DS3::Ondsdead3"; areamonster "ordeal_1-1",251,235,222,220,"[DS] Serial Killer",1507,2,"DS3::Ondsdead3"; areamonster "ordeal_1-1",210,208,194,195,"[DS] Esqueleto General",1290,1,"DS3::Ondsdead3"; areamonster "ordeal_1-1",203,204,194,195,"[DS] Esqueleto General",1290,2,"DS3::Ondsdead3"; areamonster "ordeal_1-1",251,235,222,220,"[DS] Gato de Nove Caudas",1307,1,"DS3::Ondsdead3"; areamonster "ordeal_1-1",230,246,246,244,"[DS] Senhor dos Orcs",1190,1,"DS3::Ondsdead3"; areamonster "ordeal_1-1",212,215,222,220,"[DS] Orc Héroi",1087,1,"DS3::Ondsdead3"; end; Ondsdead3: if ($status == 0) end; set $mobs,$mobs-1; set @premio,rand(getarraysize($@p)); getitem $@id,$@p[@premio]; callfunc "Checador",1; if($mobs == 10){ mapannounce "ordeal_1-1","Devil Square: Faltam 10 monstros para 4° rodada!",8; } if($mobs == 0){ announce "Devil Square: Começou a 4° rodada de monstros!",8; goto Ondsround4; } end; Ondsround4: set $mobs,17; areamonster "ordeal_1-1",190,189,190,189,"[DS] Seyren Windsor",1634,1,"DS3::Ondsdead4"; areamonster "ordeal_1-1",207,207,207,207,"[DS] Eremes Guile",1635,4,"DS3::Ondsdead4"; areamonster "ordeal_1-1",217,217,217,217,"[DS] Howard Alt-Eisen",1636,5,"DS3::Ondsdead4"; areamonster "ordeal_1-1",227,226,227,226,"[DS] Margaretha Sorin",1637,4,"DS3::Ondsdead4"; areamonster "ordeal_1-1",241,241,241,241,"[DS] Kathryne Keyron",1639,1,"DS3::Ondsdead4"; areamonster "ordeal_1-1",241,241,241,241,"[DS] Atroce",1785,1,"DS3::Ondsdead4"; areamonster "ordeal_1-1",241,241,241,241,"[DS] Dragão Mutante",1262,1,"DS3::Ondsdead4"; end; Ondsdead4: if ($status == 0) end; set $mobs,$mobs-1; set $@premio,rand(getarraysize($@p)); getitem $@id,$@p[$@premio]; callfunc "Checador",1; if($mobs == 5){ mapannounce "ordeal_1-1","Devil Square: Faltam 5 monstros para 5° rodada!",8; } if($mobs == 0){ announce "Devil Square: Começou a 5° rodada de monstros!",8; goto Ondsround5; } end; Ondsround5: set $mobs,10; areamonster "ordeal_1-1",233,246,233,246,"[DS] Salamandra",1831,1,"DS3::Ondsdead5"; areamonster "ordeal_1-1",246,245,246,245,"[DS] Amon-Rá",1511,1,"DS3::Ondsdead5"; areamonster "ordeal_1-1",189,188,189,188,"[DS] Doppelganger",1046,1,"DS3::Ondsdead5"; areamonster "ordeal_1-1",236,236,236,236,"[DS] Guardião Espadachim",1829,1,"DS3::Ondsdead5"; areamonster "ordeal_1-1",196,195,196,195,"[DS] Senhor das Trevas",1272,1,"DS3::Ondsdead5"; areamonster "ordeal_1-1",206,205,206,205,"[DS] Kasa",1833,1,"DS3::Ondsdead5";; areamonster "ordeal_1-1",213,213,213,213,"[DS] Faraó",1157,1,"DS3::Ondsdead5"; areamonster "ordeal_1-1",183,182,246,244,"[DS] Bafomé",1039,1,"DS3::Ondsdead5"; areamonster "ordeal_1-1",224,223,224,223,"[DS] Kasa",1833,1,"DS3::Ondsdead5"; areamonster "ordeal_1-1",243,232,243,232,"[DS] Guardião Arqueiro",1830,1,"DS3::Ondsdead5"; end; Ondsdead5: if ($status == 0) end; set $mobs,$mobs-1; set @premio,rand(getarraysize($@p)); getitem $@id,$@p[@premio]; callfunc "Checador",1; if($mobs == 5){ announce "Devil Square: Faltam 5 monstros para as Caixas do Tesouro surgirem!",8; } if($mobs == 0){ announce "Devil Square: 8 Caixas do Tesouros surgiram! Corram para destruir-las...",8; goto Ondsbox; } end; Ondsbox: enablenpc "DS4"; sleep2 7000; set $mobs,8; monster "ordeal_1-1",245,245,"Caixa do Tesouro",1334,1,"DS3::Ondsboxdead"; monster "ordeal_1-1",54,54,"Caixa do Tesouro",1334,1,"DS3::Ondsboxdead"; monster "ordeal_1-1",149,26,"Caixa do Tesouro",1334,1,"DS3::Ondsboxdead"; monster "ordeal_1-1",245,52,"Caixa do Tesouro",1334,1,"DS3::Ondsboxdead"; monster "ordeal_1-1",273,150,"Caixa do Tesouro",1334,1,"DS3::Ondsboxdead"; monster "ordeal_1-1",150,273,"Caixa do Tesouro",1334,1,"DS3::Ondsboxdead"; monster "ordeal_1-1",54,245,"Caixa do Tesouro",1334,1,"DS3::Ondsboxdead"; monster "ordeal_1-1",27,150,"Caixa do Tesouro",1334,1,"DS3::Ondsboxdead"; end; Ondsboxdead: if ($status == 0) end; set $mobs,$mobs-1; announce "Devil Square: O jogador [ "+ strcharinfo(0)+" ] abriu uma das Caixas do Tesouro.",8; set @premio,rand(getarraysize($@b)); getitem $@id,$@b[@premio]; if($mobs == 0){ announce "Devil Square: A última Caixa do Tesouro foi destruída!",8; announce "Devil Square: Obrigado a todos que participaram.",8; set $status,0; disablenpc "DS4"; mapwarp "ordeal_1-1","prontera",156,177; } query_sql "DELETE FROM `devilsquare`"; end; } function script Checador { if(getarg(0) == 1){ set @nome$,""; query_sql "SELECT `nome` FROM `devilsquare` WHERE `id_usuario`="+getcharid(0)+"",@nome$; if (@nome$ == ""){ query_sql "INSERT INTO `devilsquare` (`id_usuario`,`nome`,`id_acc`,`pontos`) VALUES ("+getcharid(0)+",'"+strcharinfo(0)+"','"+getcharid(3)+"',1)"; return; } query_sql "UPDATE `devilsquare` SET `pontos` = `pontos` +1 WHERE `id_usuario`="+getcharid(0)+""; return; } } ordeal_1-1,210,211,1 script DS4 -1,5000,5000,{ OnTouch: query_sql "SELECT nome,pontos FROM devilsquare ORDER BY pontos DESC LIMIT 5",@nome$,@pontos; for(set @i,0; @i < 5; set @i,@i+1) if(@nome$[@i] == strcharinfo(0)){ mapwarp "ordeal_1-1","ordeal_1-1",150,150; pcblockmove getcharid(3),1; sleep2 2000; announce "Devil Square: Parabéns, você matou muitos monstros, agora tem que ir atrás das Caixas do Tesouro.",bc_self; pcblockmove getcharid(3),0; end; } warp "prontera",156,177; dispbottom "A Devil Square chegou ao fim para você, obrigado por participar."; end; } // MapFlags ~ ordeal_1-1 mapflag nowarp ordeal_1-1 mapflag nowarpto ordeal_1-1 mapflag noteleport ordeal_1-1 mapflag nosave SavePoint ordeal_1-1 mapflag nomemo ordeal_1-1 mapflag nobranch ordeal_1-1 mapflag nopenalty ordeal_1-1 mapflag pvp off ordeal_1-1 mapflag gvg off