Verdandi

Membro
  • Total de itens

    43
  • Registro em

  • Última visita

Reputação

0 Iniciante

Sobre Verdandi

  1. Muito obrigado, feito!
  2. Estou utilizando um NPC Devil Square, porém, eu gostaria que quando um player destruísse o baú do tesouro, ele fosse enviado pra prontera... Mas o evento só acaba quando todo os baús são destruidos... Isso me gera duas dúvidas em uma: Como fazer pro player ser teletransportado pra prontera quando matar o baú? (comentei a linha do npc que creio que devo fazer a alteração) E como fazer pro evento terminar em 5 minutos caso todos os báus não forem mortos? (no caso, caso não haja players suficientes para quebrarem todos os baús) Alguém sabe como me ajudar? Segue código do NPC: // _______________________________________________________ // / \ // | _ _ _ _ | // | | |__ _ __ / \ | |_| |__ ___ _ __ __ _ | // | | '_ \| '__/ _ \| __| '_ \ / _ \ '_ \ / _` | | // | | |_) | | / ___ \ |_| | | | __/ | | | (_| | | // | |_.__/|_|/_/ \_\__|_| |_|\___|_| |_|\__,_| | // | | // | brAthena Script | // |--------------------------------------------------------| // | Nome do Script: Devil Square por Stuff | // |--------------------------------------------------------| // | Criado por: Wenden | // |--------------------------------------------------------| // | Versão: 1.0 | // |--------------------------------------------------------| // | Descrição: É como outros devil square a diferença é que| // | cada monstro que você mata você recebe uma quantidade | // | aleatória de certo item, tanto a quantidade quanto o | // | item é configurado aqui no script na linha 165. Os item| // | ganhados poderão ser trocados no próprio npc por outros| // | itens configurados por você na linha 170. O Npc é em | // | SQL onde são salvos os nomes, char ids, accounts ids e | // | pontos dos jogadores quando matarem os monstros. Quando| // | a última rodada chegar ao fim, que no caso a última é a| // | 5° rodada, o npc fará um lista dos 5 jogadores que mais| // | mataram monstros, eles serão teletransportados para o | // | meio do mapa onde irão correr atrás de destruir as | // | Caixas do Tesouro. Os outros jogadores que não aparecem| // | na lista dos 5 que mais mataram monstros serão | // | teletransportados para prontera. | // |--------------------------------------------------------| // | Changelog: | // | 1.0 - Criado Script [Wenden] | // \_______________________________________________________/ /* 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,142,172,5 script Devil Square 792,{ mes "["+strnpcinfo(1)+"]"; mes "Bem-"+(Sex?"vindo aventureiro":"vinda aventureira")+"."; mes "Eu tenho um desafio para você"; mes "deseja aceitar?"; next; switch(select("Sim, eu aceito:Não, volto depois:Trocar "+getitemname([email protected])+":Quero informações")){ case 1: if($aberto == 0){ mes "["+strnpcinfo(1)+"]"; 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 "["+strnpcinfo(1)+"]"; mes "Estarei aqui quando precisar"; mes "de um desafio."; close; case 3: if(!countitem([email protected])){ mes "["+strnpcinfo(1)+"]"; mes "Você não possui nenhuma"; mes "^FF0000"+getitemname([email protected])+"^000000."; close; } mes "["+strnpcinfo(1)+"]"; mes "Escolha qual item deseja trocar"; mes "por ^FF0000"+getitemname([email protected])+"^000000."; next; set @menu$,""; for(set @i,0; @i < getarraysize([email protected]); set @i,@i+1) set @menu$,@menu$+""+getitemname([email protected][@i])+" - ^FF0000"[email protected][@i]+"^000000x "+getitemname([email protected])+":"; set @menu$,@menu$+"Cancelar"; set @sel,select(@menu$)-1; if(@sel == getarraysize([email protected])) close; mes "["+strnpcinfo(1)+"]"; mes "Agora me diga quantos"; mes "^FF0000"+getitemname([email protected][@sel])+"^000000 você quer."; mes "- 0 para Cencelar."; next; input @qnt; if(@qnt == 0) close; set @cost,[email protected][@sel]*@qnt; mes "["+strnpcinfo(1)+"]"; mes "^FF0000"[email protected]+"^000000x ^FF0000"+getitemname([email protected][@sel])+"^000000"; mes "São ^FF0000"[email protected]+"^000000x ^FF0000"+getitemname([email protected])+"^000000."; mes "Deseja realizar a troca?"; next; if(select("Sim:Não") == 2) close; if(countitem([email protected]) < @cost){ mes "["+strnpcinfo(1)+"]"; mes "Você não tem ^FF0000"+getitemname([email protected])+"^000000"; mes "suficientes para realizar a troca."; close; } mes "["+strnpcinfo(1)+"]"; mes "Está feito..."; mes "Aqui está seus"; mes "^FF0000"+getitemname([email protected][@sel])+"^000000."; close2; delitem [email protected],@cost; getitem [email protected][@sel],@qnt; end; case 4: mes "["+strnpcinfo(1)+"]"; 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 "["+strnpcinfo(1)+"]"; mes "O Objetivo final é chegar a última"; mes "rodada onde surgem as"; mes "Caixas do Tesouro."; next; mes "["+strnpcinfo(1)+"]"; mes "A cada monstro que você mata"; mes "você recebe ^FF0000"+getitemname([email protected])+"^000000"; mes "a quantidade é aleatória."; mes "As Caixas do Tesouro dão uma"; mes "quantidade mais alta de ^FF0000"+getitemname([email protected])+"^000000."; next; mes "["+strnpcinfo(1)+"]"; mes "Com esses itens você pode trocar"; mes "aqui mesmo por itens, os itens são"; mes "configurados pelo Administrador."; next; mes "["+strnpcinfo(1)+"]"; mes "Mas para chegar até a rodada das"; mes "Caixas do Tesouro você precisar"; mes "matar muitos monstros, porque"; mes "somente os 5 jogadores que"; mes "mais matarem monstros irão"; mes "chegar a rodada Final."; next; mes "["+strnpcinfo(1)+"]"; mes "Os demais serão teletransportados"; mes "para prontera, os jogadores que"; mes "continuarem no evento irão correr"; mes "atrás das Caixas do Tesouro."; close; } OnInit: // Configurações set [email protected],7539; // Id do item que será recebido ao matar os monstros e as caixas do tesouro. Padrão: [7539 = Moeda Poring]. setarray [email protected][0],1,2,5; // Quantidade de itens que serão sorteados ao matar os monstros. Padrão: [Entre 1 e 2]. setarray [email protected][0],10,20,50; // Quantidade de itens que serão sorteados ao destruir as Caixas do Tesouro. Padrão: [Entre 20,30,40 e 50]; setarray [email protected][0],671,12103,14232,678,13989,7139; // Id dos itens que poderão ser trocados. setarray [email protected][0],200,30,2,1,10,1; // 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,{ OnMinute40: 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([email protected])); getitem [email protected],[email protected][@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([email protected])); getitem [email protected],[email protected][@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([email protected])); getitem [email protected],[email protected][@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 [email protected],rand(getarraysize([email protected])); getitem [email protected],[email protected][[email protected]]; 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([email protected])); getitem [email protected],[email protected][@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: //creio que aqui que ponha o warp pra prontera, porém, como fazer para acabar em 5 minutos o evento? 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([email protected])); getitem [email protected],[email protected][@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
  3. Ninguém tem ideia? Já tentei de TUDO!
  4. Olá a todos, alguém pode me ajudar nisso? Agradeço desde já! O emulador está rodando e funcionando bem, porém, fui verificar os logs do servidor e me de parei com o seguinte erro: Verificando a linha 175 do arquivo skill.c, tenho o seguinte código: int skill_get_sp( uint16 skill_id ,uint16 skill_lv ) { Assert_ret(skill_lv > 0); skill_get2 (skill->dbs->db[skill_id].sp[skill_glv(skill_lv-1)], skill_id, skill_lv); }
  5. As hotkeys ou atalhos do meu servidor não estão sendo salvos quando modificados pelos jogadores, reparei que quando tentamos editar, o jogo reporta o local de salvamento... E nele há uma / a mais. Alguém sabe como resolver isso? C:\ragnarok\\savedata\userkeys.lua Há uma barra a mais antes de "savedata". Por favor, alguém pode me ajudar? @edit O arquivo que aparentemente controla os diretórios fica em: "lua files/datainfo/changedirectorylist.lua". O meu está o padrão da data do bRO!
  6. @EDIT - Consegui! Podem fechar o tópico, quem precisar só falar =) Gostaria de alterar o comando @warp pra que não pudesse escolher as coordenadas, apenas levar pro mapa escolhido. Não tô entendendo bem onde posso alterar o código pra simplesmente retirar essa opção, meu conhecimento é bem pequeno... Fiz pesquisas e não encontrei, tive algumas tentativas e não funcionaram. Alguem poderia me ajudar? Segue código original abaixo pra poupar trabalho... /*========================================== * @rura, @warp, @mapmove *------------------------------------------*/ ACMD(mapmove) { char map_name[MAP_NAME_LENGTH_EXT]; unsigned short map_index; short x = 0, y = 0; int16 m = -1; memset(map_name, '\0', sizeof(map_name)); if (!*message || (sscanf(message, "%15s %5hd %5hd", map_name, &x, &y) < 3 && sscanf(message, "%15[^,],%5hd,%5hd", map_name, &x, &y) < 1)) { clif->message(fd, msg_fd(fd,909)); // Please enter a map (usage: @warp/@rura/@mapmove <mapname> <x> <y>). return false; } map_index = mapindex->name2id(map_name); if (map_index) m = map->mapindex2mapid(map_index); if (!map_index || m < 0) { // m < 0 means on different server or that map is disabled! [Kevin] clif->message(fd, msg_fd(fd,1)); // Map not found. return false; } if( sd->bl.m == m && sd->bl.x == x && sd->bl.y == y ) { clif->message(fd, msg_fd(fd,253)); // You already are at your destination! return false; } if ((x || y) && map->getcell(m, &sd->bl, x, y, CELL_CHKNOPASS) && pc_get_group_level(sd) < battle_config.gm_ignore_warpable_area) { //This is to prevent the pc->setpos call from printing an error. clif->message(fd, msg_fd(fd,2)); if (!map->search_freecell(NULL, m, &x, &y, 10, 10, 1)) x = y = 0; //Invalid cell, use random spot. } if (map->list[m].flag.nowarpto && !pc_has_permission(sd, PC_PERM_WARP_ANYWHERE)) { clif->message(fd, msg_fd(fd,247)); return false; } if (sd->bl.m >= 0 && map->list[sd->bl.m].flag.nowarp && !pc_has_permission(sd, PC_PERM_WARP_ANYWHERE)) { clif->message(fd, msg_fd(fd,248)); return false; } if (pc->setpos(sd, map_index, x, y, CLR_TELEPORT) != 0) { clif->message(fd, msg_fd(fd,1)); // Map not found. return false; } clif->message(fd, msg_fd(fd,0)); // Warped. return true; }
  7. Olá a todos, quando clico em cancel na primeira opção do NPC, eu só gostaria que ele "fechasse", ele abre outra janela escrito "ainda posso ser útil a você..." Não sei como mudar isso, quero que quando clicar em "cancel" ele só feche o NPC. Obs: quando clico em cancel, ele leva pra outra tela, e se eu clico novamente ele TRAVA o personagem. Alguém poderia me explicar? prontera,144,192,4 script Mercado Negro#shop 2_M_OLDBLSMITH,{ set [email protected]$, "[ ^FF0000Mercado Negro^000000 ]"; while( 1 ) { do { mes [email protected]$; mes "Saldo: ^A5507C" + Zeny + "^000000z."; mes "Escolha a categoria de itens que você deseja comprar."; next; if ( set( @s,prompt( "- Armamentos.:- Equipamentos.:- Utensílios." ) ) == 255 ) break; next; mes [email protected]$; mes "Escolha uma das lojas."; if ( @s == 1 ) set [email protected]$,"- Adagas.:- Espadas.:- Lanças.:- Machados.:- Clavas.:- Bastões.:- Arcos.:- Luvas.:- Instrumentos.:- Chicotes.:- Livros.:- Katares.:- Ninjas & Justiceiro."; else if ( @s == 2 ) set [email protected]$,"- Armaduras.:- Escudos.:- Capas.:- Sapatos.:- Cabeça."; else set [email protected]$, "- Consumíveis.:- Utilidades.:- Pergaminhos.:- Pets.:- Homúnculos."; if ( set( @c,prompt( [email protected]$ ) ) == 255 ) end; next; callshop "Mercado_" + @s + "#" + @c, 1; end; } while( 1 ); mes [email protected]$; mes "Ainda posso ser útil a você. Escolha umas das opções."; next; prompt( "- Abrir outra Loja.:- Fechar." ); if ( @menu == 2 || @menu == 255 ) close; } }
  8. PROBLEMA RESOLVIDO, FAVOR FECHAR O TÓPICO.
  9. Obrigado cara, faz sentido! Vou verificar aqui e já já edito se funfou ou não. Desde já, muito obrigado! Abs @edit Funcionou, muito obrigado =)
  10. Olá a todos, estou tentando utilizar um NPC que abra um chat para toda vez que um novo personagem se logar, e apenas A PRIMEIRA VEZ. O script funciona as vezes, e as vezes não. De que forma? Alguns personagens ele continua mostrando a mensagem depois da primeira vez. Já em outros, ele funciona corretamente! Agradeço desde já a ajuda. Seguem abaixo o código do script e também o que o emulador reporta relacionando ao mesmo... Mensagem do emulador: [Aviso]: npc_event: lista de eventos do jogador esta cheia, nao foi possivel adicionar o evento 'SVRO#L-1::OnPCLoginEvent' ! - script LoginEvent -1,{ OnPCLoginEvent: if(!LoginEvent) { mes "[RagnaGO!]"; mes "Olá ^990000"+ strcharinfo(0) +"^000000, seja bem vindo(a)!."; mes "Servidor: ^990000Ártemis^000000"; mes "Rates: ^99000015000x/15000x/1500x^000000"; mes "Level: ^990000255/120^000000"; mes "Site: ^990000www.ragnago.com^000000"; next; mes "[RagnaGO!]"; mes "Como forma de gratidão a sua presença, você receberá alguns itens mágicos do servidor."; mes " "; mes "Você deverá apenas saber de duas coisas:"; mes " "; mes "1. Toda vez que um novo personagem for criado, ele receberá os mesmos itens."; mes "2. Todos os itens recebidos são ^990000RESTRITOS^000000 ao personagem."; next; mes "[RagnaGO]"; mes "~LISTA DE ITENS MÁGICOS~"; mes " "; mes "^9900001x Asas de Mosca Mágica^000000"; mes "^9900001x ????^000000"; mes "^9900001x ????^000000"; next; mes "Aproveite da melhor forma e lembre-se: DIVIRTA-SE!"; mes " "; mes "Staff RagnaGO!"; close2; getitem 605,1; set LoginEvent, 1; close; } end; }
  11. Luxury, voc? quer transformar arquivos .lua em arquivos .lub?
  12. Como disse, estava funcionando perfeitamente e parou do nada. Emulador atual, mmo.h alterado e emulador recompilado... N?o fa?o ideia do que seja =( @EDIT Acabei de conferir o hexed, mmo.h e recompilar. Loguei ao servidor normalmente, meu personagem estava em prontera. Fiquei alguns segundos online sem nenhum erro, por?m, digitei @go 15 e ao chegar no mapa e clicar pra andar, novamente o disconnect... Eu uso a vers?o mais atual do emulador, Ragexe 2012-04-10 e tua pasta data. O grande problema em quest?o e que estava funcionando PERFEITAMENTE a dias. A unica altera??o que eu fiz nas ultimas semanas foi no cashshop.db. Por favor, tem alguma ideia de como posso corrigir isso? Servidor est? prestes a ser lan?ado e me deparo com esse erro sem explica??es =( @EDIT? Problema resolvido. O erro come?ou ap?s alterar o cashshop.db. Restaurei para o original e refiz as altera??es. Voltou a funcionar perfeitamente. Obrigado.
  13. Ol? a todos. Tenho configurado a algumas semanas um projeto de servidor e tudo estava correndo perfeitamente. Precisei ficar sem me logar a dois dias por motivos de trabalhor e quando fui me logar hoje, me deparei com uo seguinte erro: Fico on no m?ximo 10 segundos e tomo disconnect. Em todas as contas que crio! Detalhe, ao logar pela primeira vez na conta esse erro n?o acontece. Apenas logando duas ou mais vezes. Segue o log do emulador ao executar o DC: [Aviso]: clif_parse: Received unsupported packet (packet 0x4b27, 3 bytes received), disconnecting session #9. OU [Aviso]: clif_parse: Received unsupported packet (packet 0x001f, 29 bytes received), disconnecting session #8. OU [Aviso]: clif_parse: Received unsupported packet (packet 0x4721, 3 bytes received), disconnecting session #8. E muitos outros da mesma forma, s? ocorrem altera??es nos packets/bytes. Agrade?o desde j? quem puder ajudar. Obrigado! @EDIT Que fique claro que n?o fiz altera??o nenhuma nem no servidor nem no patch, e loguei durante semanas sem esse erro.
  14. Luxury, eu utilizo a data do megasantos + brAthena atualizado e o sprite existe no meu servidor. Se ambas as partes estiverem atualizadas, ele vai existir automaticamente no seu servidor. Segue link da data: https://github.com/Megasantos/brData @Edit Uso hexed 2012-04-08 + Lua Files compat?veis!
  15. Eu mais uma vez o/. Seguinte, peguei um NPC de Pontos de Presen?a a alguns dias e resolvi dar uma editada nele hoje. Mudei umas falas, concertei alguns erros de portugu?s e etc. Ele funciona perfeitamente at? a hora de entregar o item que o cara quer de recompensa, ele trava ou fecha sem dar o item. Algu?m pode me ajudar? N?o fa?o ideia do erro :| E mais uma vez, obrigado a todos da comunidade! prontera,162,185,4 script Richard 833,{ // Cr?ditos: Premier ~* // Lista de Recompensas setarray .itemprc,20050,20050,20050,20050,20050; // ID dos pr?mios. setarray .prcv,1,1,1,1,1; // Valor de pontos a serem trocados. setarray .prcqnt,1,1,1,1,1; // Quantidade de itens dados como recompensa. // Nome do NPC set @restante,#presenca-gettimetick(2); set .prc$,"^0000FF[ Richard ]^000000"; mes .prc$; mes "Ol? ^006400"+strcharinfo(0)+"^000000, sou o respons?vel por marcar sua presen?a em nosso servidor. Em troca de cada presen?a marcada, voc? receber? ^32CD321 Ponto de Presen?a^000000."; mes "Os pontos s?o acumulativos e podem ser trocados por ?timas recompensas. Ah, e n?o se esque?a, posso marcar sua presen?a a cada 60 minutos!"; mes "O que voc? deseja?"; switch(select("Marcar presen?a no servidor.:Trocar meu(s) ponto(s) por recompensas.:Ver meus Pontos de Presen?a.:Sair.")){ case 1: if(#presenca >=gettimetick(2)){next;mes .prc$;mes ""+strcharinfo(0)+", voc? s? poder? marcar sua presen?a novamente daqui ^FF0000"[email protected]/60+" minutos^000000, tenha um bom jogo.";close;end;} next; mes .prc$; mes "Um momento, estou anotando seu nome em nosso sistema..."; set #presenca,gettimetick(2)+3600; set #prbonus,#prbonus+1; next; mes .prc$; mes "Pronto, presen?a marcada com sucesso! Voc? pode marca-l? novamente daqui ^FF0000[60 minutos]^000000. Tenha um bom jogo!"; close; end; case 2: mes "Qual dessas maravilhosas recompensas voc? deseja?"; switch(select(""+.prcqnt+" "+getitemname(.itemprc)+":"+.prcqnt[1]+" "+getitemname(.itemprc[1])+":"+.prcqnt[2]+" "+getitemname(.itemprc[2])+":"+.prcqnt[3]+" "+getitemname(.itemprc[3])+":"+.prcqnt+" "+getitemname(.itemprc[4])+"")){ case 1: next; mes .prc$; mes "Deseja receber ^32CD32"+.prcqnt+" "+getitemname(.itemprc)+"^000000 em troca de ^FF0000"+.prcv+" Ponto(s) de Presen?a^000000?"; if(select("Sim.:N?o.")==2){close;end;}{ if(#prbonus <.prcv){next;mes .prc$;mes "Voc? n?o tem Pontos de Presen?a suficientes.";close;end;} getitem .itemprc,prcqnt; set #prbonus,#prbonus-.prcv;} close; end; case 2: next; mes .prc$; mes "Deseja receber ^32CD32"+.prcqnt[1]+" "+getitemname(.itemprc[1])+"^000000 em troca de ^FF0000"+.prcv[1]+" Ponto(s) de Presen?a^000000?"; if(select("Sim.:N?o.")==2){close;end;}{ if(#prbonus <.prcv[1]){next;mes .prc$;mes "Voc? n?o tem pontos suficientes";close;end;} getitem .itemprc[1],prcqnt[1]; set #prbonus,#prbonus-.prcv[1];} close; end; case 3: next; mes .prc$; mes "Deseja receber ^32CD32"+.prcqnt[2]+" "+getitemname(.itemprc[2])+"^000000 em troca de ^FF0000"+.prcv[2]+" Ponto(s) de Presen?a^000000?"; if(select("Sim.:N?o.")==2){close;end;}{ if(#prbonus <.prcv[2]){next;mes .prc$;mes "Voc? n?o tem pontos suficientes";close;end;} getitem .itemprc[2],prcqnt[2]; set #prbonus,#prbonus-.prcv[2];} close; end; case 4: next; mes .prc$; mes "Deseja receber ^32CD32"+.prcqnt[3]+" "+getitemname(.itemprc[3])+"^000000 em troca de ^FF0000"+.prcv[3]+" Ponto(s) de Presen?a^000000?"; if(select("Sim.:N?o.")==2){close;end;}{ if(#prbonus <.prcv[3]){next;mes .prc$;mes "Voc? n?o tem pontos suficientes";close;end;} getitem .itemprc[3],prcqnt[3]; set #prbonus,#prbonus-.prcv[3];} close; end; case 5: next; mes .prc$; mes "Deseja receber ^32CD32"+.prcqnt[4]+" "+getitemname(.itemprc[4])+"^000000 em troca de ^FF0000"+.prcv[4]+" Ponto(s) de Presen?a^000000?"; if(select("Sim.:N?o.")==2){close;end;}{ if(#prbonus <.prcv[4]){next;mes .prc$;mes "Voc? n?o tem Pontos de Presen?a suficientes";close;end;} getitem .itemprc[4],prcqnt[4]; set #prbonus,#prbonus-.prcv[4];} close; end;} case 3: next; mes .prc$; mes "Voc? tem "+#prbonus+" Ponto(s) de Presen?a."; close; end; case 4: next; mes .prc$; mes "Volte sempre que precisar! Tenha uma ?tima divers?o."; close; end; OnInit: waitingroom "Marque sua Presen?a",0; end; }}