-
Total de itens
512 -
Registro em
-
Última visita
-
Dias Ganhos
16
Tudo que brun123 postou
-
Coloca essa função em qualquer lib do seu server (qualquer arquivo que fique na pasta data/lib)
-
Baixem o pokemon dash ou fight e pegue a pasta lib que fica dentro da pasta npc e troca pela mesma pasta do server de vocês que deve funcionar...
-
[Encerrado] [Duvida] Como Adicionar Portrait Dos Shiny!
tópico respondeu ao Stigal de brun123 em Tópicos Sem Resposta
Primeiro, use um dat editor e coloque as sprites das portraits no .dat e .spr Depois, abra um item otb editor compatível com a versão do seu server (provavelmente 8.54), detalhe: para funcionar direito, você usa o .dat e .spr do tibia original, mas edita o otb do server, pois ao tentar abrir o otb editor com o .dat e .spr do pokemon dá erro. Aperte tools -> add item, vai aparecer um novo ID (provavelmente na aba "other"), ai você marca as opções not moveable e pickupable (essas opções devem estar marcadas no .dat em cada portrait), escreva o cid do item conforme o cid que aparece no .dat editor. detalhe: como você está usando o .dat original do tibia, as vezes ele marca algumas opções automaticamente e que não podem ser alteradas, ai você deve alterar o .dat original com o dat editor, e abrir com o otb editor que ele atualiza automaticamente tudo. Ai você abre o items.xml e adiciona lá no final o novo ID do item que você criou pelo OTB editor, e lá você coloca o nome (pokemon portfoil), coloca o weight = 0, etc etc etc... ai só configurar depois na script de movements, você adiciona o novo pokemon: ["Lugia"] = {fotopoke = 11590}, -
@jeffe000 mano, essa parte você tem que colocar no goback.lua do ACTIONS, e não no do creature scripts... for a, b in pairs(ginasios) do if getPlayerStorageValue(cid, b.storage) == 1 then -- GYM doPlayerSendCancel(cid, "You can't return your pokemon during gym battles.") return true end end vou pedir novamente pra você ver se você configurou certo o bpslot e o funcpokemon, e é pra configurar, e não sair chutando valores
-
bpslot é o slot em que fica a backpack no inventory. no pokemon flash, ele fica em outro lugar, no pokemon dash, ele fica no lugar de backpack do tibia. ai se você não configurar isso certinho, o sistema não vai procurar pokeballs dentro da sua mochila direito, ou seja, vai pensar que você só tem 1 pokebola, que é a que fica no pé. Por isso que quando seu pokemon morria o duelo acabava, pois as funções entendiam que você só tinha um pokemon mesmo
-
@Nitrox essa função é pra colocar só na parte de voltar o pokemon, pra evitar que o pokemon volte... você deve ter colocado essa parte no lugar de colocar o pokemon pra fora, por isso deu errado. @jeffe000 vê se você configurou o funcpokemon e o bpslot certinho no gymlib.lua
-
tem que colocar o ID do depot 1 no map editor
-
Arrumei a parte do player attack, atualize o seu de acordo com o tópico, sobre o onDeath e o problema de getItemAttribute, isso acontece porque o monstro não tinha corpse, era só arrumar no xml. Eu testei inúmeras vezes aqui, o seu erro então deve ser na configuração, verifique essa parte no arquivo gymlib.lua funcpokemon = {2220, 2222} -- ID das pokebolas (o pokemon tem que estar vivo nessas IDs) bpslot = CONST_SLOT_BACKPACK --em outros servers, pode ser que seja CONST_SLOT_AMMO o lugar onde fica a backpack no inventory Eu esqueci de explicar ela no tópico, já vou atualizar...
-
você tá testando com GM ou com player? acabei de testar denovo aqui e sem problemas...
-
@Drdrake9 Use esse código no xml do seu Graveler:
-
• nome: Sistema de Ginásio / GYM para pokemon. • autor: brun123 (mastercraft) • versão testada: TFS 0.36 pl 1 (8.54) Detalhes: Como cada servidor de pokemon é bem diferente, acredito que muitos erros vão aparecer devido a diferença de IDs das pokebolas por exemplo, mas vou ajudar no que posso. Primeiro passo: crie um arquivo com o nome gymlib.lua na pasta data/lib/, e coloque isso dentro do arquivo: Segundo passo: crie um arquivo chamado gym.lua na pasta data/creaturescripts/scripts/ e coloque isso dentro: Terceiro passo: abra o arquivo creaturescripts.xml (localizado em data/creaturescripts) e adicione essas 4 tags: <event type="cast" name="Gym1" event="script" value="gym.lua"/> <event type="attack" name="Gym2" event="script" value="gym.lua"/> <event type="direction" name="Gym3" event="script" value="gym.lua"/> <event type="death" name="Gym4" event="script" value="gym.lua"/> Quarto passo: crie um arquivo chamado brock.xml em data/npc e crie um chamado brock.lua em data/npc/scripts e coloque isso dentro: Quinto passo: se você usar o pokemon dash, vá no arquivo playerattack.lua (data/creatureevents/scripts) e adicione esses códigos embaixo da linha "function onAttack(cid, target)": if getPlayerStorageValue(target, 201) ~= -1 then for a, b in pairs(ginasios) do if getPlayerStorageValue(target, ginasios[getPlayerStorageValue(target, 201)].storage) == 1 then if getPlayerStorageValue(cid, ginasios[getPlayerStorageValue(target, 201)].storage) ~= 1 then doPlayerSendCancel(cid, "You can't attack this pokemon.") return false end end end end end Se você não usa o pokemon dash, crie um arquivo chamado playerattack.lua na pasta data/creatureevents/scripts e coloque isso dentro: function onAttack(cid, target) if getPlayerStorageValue(target, 201) ~= -1 then for a, b in pairs(ginasios) do if getPlayerStorageValue(target, ginasios[getPlayerStorageValue(target, 201)].storage) == 1 then if getPlayerStorageValue(cid, ginasios[getPlayerStorageValue(target, 201)].storage) ~= 1 then doPlayerSendCancel(cid, "You can't attack this pokemon.") return false end end end end return true end e adicione essa tag no creaturescripts.xml (data/creaturescripts): <event type="attack" name="PlayerAttack" event="script" value="playerattack.lua"/> e ainda, abra o arquivo login.lua e embaixo dessa linha: "function onLogin(cid)" adicione esse código: registerCreatureEvent(cid, "PlayerAttack") Último passo: vá em data/creaturescripts/scripts e abra o arquivo goback.lua (aqui por exemplo, pode ser que haja uma particulariedade de servidor para servidor), e procure pela linha: function onDeath(cid, deathList) e abaixo dela, adicione esse código: local owner = getCreatureMaster(cid) for x, y in pairs(ginasios) do if getPlayerStorageValue(owner, y.storage) == 1 then if getPlayerStorageValue(owner, 991) == 5 or not hasPokemon(owner) then setPlayerStorageValue(owner, 991, -1) else local number = tonumber(getPlayerStorageValue(owner, 991)) setPlayerStorageValue(owner, 991, number + 1) end end end Configuração dos NPCs: Abrindo o arquivo brock.lua na pasta data/npc/scripts, procure por esta linha: "doGymBattle("Brock", "Brock Geodude", cid, 1)" o "Brock" precisa ser o nome do NPC e o "Brock Geodude" precisa ser o nome do primeiro pokemon a ser usado. Agora nessa parte, no script do seu NPC, você também deve editar o nome do NPC no lugar de "brock". Se quiser que o player possa lutar com o NPC mesmo depois de tê-lo vencido, é só remover a mesma parte: if getPlayerStorageValue(cid, ginasios["Brock"].storage) >= 1 then return true end Ao abrir o arquivo gymlib.lua, você encontra essas duas linhas (são as primeiras): funcpokemon = {2220, 2222} -- ID das pokebolas (o pokemon tem que estar vivo nessas IDs) bpslot = CONST_SLOT_BACKPACK --em outros servers, pode ser que seja CONST_SLOT_AMMO o lugar onde fica a backpack no inventory Onde está funcpokemon, você coloca o ID de todas as pokebolas do seu server, mas esse ID tem que ser o ID da pokebola com algum pokemon vivo dentro, e esses IDs devem ser separados por vírgula. Onde está bpslot, você escreve onde fica a BACKPACK do seu server de pokemon. Se ficar no lugar normal de BPs, deixe como está, mas se sua BP fica no slot da munição (ammunition), você deve estar para CONST_SLOT_AMMO. Isso é tudo, agora vocês podem configurar os IDs e localização da BP facilmente, sem precisar conhecimentos mais avançados sobre scripting, e evitar erros no sistema. Abrindo o arquivo gymlib.lua, localizado em data/lib/ você encontra essa tabela: ginasios = { ["Brock"] = { storage = 900, msgdefeat = "You lost! You aren't strong enough yet, don't come back until you get stronger!", msgafk = "Go away if you don't have any pokemons!", msgwin = "Congratulations, you were strong enough to win this battle fairly! Take this Earth Badge as reward.", [1] = { msggo = "Lets fight then! I choose you, Geodude!", msgba = "That's enough, Geodude!", pokem = "Brock Geodude", nextp = "Brock Graveler"}, [2] = { msggo = "It's your turn, Graveler!", msgba = "Come back, Graveler!", pokem = "Brock Graveler", nextp = "Brock Golem"}, [3] = { msggo = "Crush'em, Golem!", msgba = "You did well, Golem!", pokem = "Brock Golem", nextp = "finish"} } } • storage significa a única storage que deve variar de NPC para NPC, tenha certeza de que essa storage não está sendo usada, é você não deve usar a storage 901 aqui, pois a mesma já está em uso pelo próprio sistema. • msgdefeat significa o que o NPC irá dizer quando o player perder o duelo. • msgafk significa o que o NPC irá dizer caso o player comece o duelo, mas não faça nada depois. • msgwin significa o que o NPC irá dizer quando o player vencer o duelo. • msggo / msgba significam os textos que o NPC irá dizer ao sumonar o pokemon dele, ou quando o mesmo morrer, respectivamente.• pokem / nextp significam o nome do pokemon que será utilizado, e o próximo pokemon a ser sumonado pelo NPC, respectivamente. Caso o nextp seja especificado como "finish", não haverá um próximo pokemon. • o número entre [] significa a ordem utilizada pelo líder para usar o tal pokemon, sendo 1 o primeiro pokemon, 2 o segundo e assim vai... Uma tabela detalhada sobre a configuração: Importante: caso for testar o sistema como foi postado aqui, é necessário criar antes os monstros Brock Geodude, Brock Graveler e Brock Golem, assim como adicioná-los no monsters.xml. Recomendações: é bom você impedir que o pokemon consiga retornar para a pokebola durante duelos (assim como foi feito no SvkE), para isso, basta adicionar esse código no arquivo goback.lua (data/actions) na parte inicial de retornar o pokemon: for a, b in pairs(ginasios) do if getPlayerStorageValue(cid, b.storage) == 1 then -- GYM doPlayerSendCancel(cid, "You can't return your pokemon during gym battles.") return true end end Aconselho fazer o mesmo caso seu server tenha script de revive. Deve-se também checar pelos storages usado em players, somente o 990 e o 991. No servidor testado, é utilizado apenas pokeballs e ultraballs, com IDs 2220 e 2222 (outra particularidade). Após ter instalado os arquivos, entre no jogo e use o comando /n Brock para testar o NPC. Último aviso: o prêmio ainda não foi adicionado (que seria a badge), pois esse sim é bem variado de servidor pra servidor. Já que nenhum servidor base já vem com os IDs das badges, cada um adicionou elas de modo diferente, por isso não pude fazer, mas existe uma parte sobre um prêmio no arquivo gym.lua (data/creaturescripts/scripts), procure por isso: --local item = getPlayerItemById(killer, true, 2307) --doTransformItem(item.uid, 2294) Você pode modificar para adicionar dinheiro ou outra coisa, e pode também desenvolver um sistema de badges. Eu não vou fazer badge aqui, mas se vocês tentarem, posso ajudar com problemas. Quaisquer erros, tentarei responder o mais rápido possível.
-
é o !uptime, ou você tira esse comando, ou você baixa uma outra versão de outro server (tipo TFS) e copia o uptime.lua que tem lá. Ou então se tu preferir, eu posso fazer um script que se um malandrão digitar !uptime ele vai pra um cadeia e fica preso forever lá.
-
bugs que encontrei: Se ficar usando o order sem parar o pokemon começa a blinkar que nem maluco. Como o delay do doPushCreature é de 300, pokemons muito lerdos aparentam estar teletransportando. Devido a falta do return true, quando usa o order aparece a mensagem "You cannot use this object." mas o script roda mesmo assim. Ficaria melhor se o treinador falasse "<nome do poke>, move!" ou algo assim pra parecer realmente que foi uma ordem, e não uma telepatia com o pokemon. Não é culpa sua isso, mas já era de se esperar que o PoRai não liberasse o order dele perfeitinho (sei que ele é capaz porque já vi varios teasers/joguei no server dele). Vlw mesmo assim por compartilhar, ainda mais essa função doPushCreature que pouca gente conhecia. Isso ai é a base perfeita pra fazer o order A propósito, esse Dokmos é um gênio, quem usa a própria função para fazer a mesma função? Esse doPushCreature é sinistro
-
[Arquivado]Pokemon Essence - Nick System
tópico respondeu ao Faisher de brun123 em Noticias - Arquivo
Did you make a new function in the sources? Share that function dude, -
Preciso De Um Simples Edit No Surf (Pokemon)
pergunta respondeu ao energythemagyc de brun123 em Scripts
eeeeh, posta sua script pra gente analisar então. -
Preciso De Um Simples Edit No Surf (Pokemon)
pergunta respondeu ao energythemagyc de brun123 em Scripts
Ops, erro meu, é porque no meu fishing.lua tem 2 arrays, o "waters" e o "water". Arrumei já, desculpe por qualquer coisa: Esse erro do 2550 não tem nenhuma ligação com o fishing.lua. Você colocou ele duas vezes no actions.xml, só isso. No array, eu coloquei só o id das águas "andáveis", porque o seu surf/fly deve funcionar desse jeito. Espero ter ajudado. -
Food Que Cura Toda 1Kkk De Hp E 1Kkk De Mp
tópico respondeu ao matheusfera de brun123 em Lixeira Pública
Ue cara, adiciona no final da script, embaixo de doRemoveItem: if item.itemid == <id do seu food aqui> then doCreatureAddHealth(cid, getCreatureMaxHealth(cid)-getCreatureHealth(cid)) doCreatureAddMana(cid, getCreatureMaxMana(cid)-getCreatureMana(cid)) end Vê se presta :S -
Preciso De Um Simples Edit No Surf (Pokemon)
pergunta respondeu ao energythemagyc de brun123 em Scripts
Vai em actions/scripts/tools/fishing.lua Aperta ctrl + f e procure por : depois dessa linha (embaixo) coloque: Deve resolver seu problema. -
The attacked pokemon (wild) will only change target after it loses some life, because you used the function onStatsChange. Try making it with onAttack / onCombat, and it will change once you click to attack it.
-
Vlw velho, agora sabe responder como faz para por interval em creatureevents do tipo onThink? ele executa muito rapido as ações, queria colocar um atraso. ajuda ae por favor
-
Em qualquer server, todo creature event que você crie é preciso registrar (geralmente ao player dar login). O que eu quero saber é se tem como registrar creature events em MONSTROS. preciso muito de ajuda, vlw.
-
Fazer Monstros Não 'droparem' Sangue Ao Levar Um Hit.
tópico respondeu ao Guimmd2 de brun123 em Lixeira Pública
Hmmm, seguinte irmão: Se seu server for TFS, vai no game.cpp e procure (ctrl + f) por isso: Basta você deletar a última linha, ficando assim: E ai foi, se você pretende criar um server de pokemon, aconselho a criar novas races com os elementos do pokemon, (grama, lutador, fantasma etc...) e mudar a cor do hit para cada um deles. Espero ter ajudado. -
Quando o player da use num baú de quest, coloquei essa função depois de receber a recompensa: Meu problema é: O player está num lugar x e abre o baú da quest. Depois vai para um lugar y e espera o tempo do addEvent terminar. Em vez de lançar o efeito designado na posição atual do player (y), ele manda o efeito no lugar que o player estava na hora em que abriu o baú (x). Como faço pro jogo identificar o lugar que o player está APÓS os 4000 ms terem passado? Obrigado!
-
Não mudou nada, até porque a diferença de nossas scripts é mera organizaçao. EDIT: consegui fazer. ridiculo o erro. é uma magia para monster, ai enquanto eu testava, deixei min/max = 100. foi só eu mudar o max para ficar maior que o min e voltou a funcionar, vlw pela ajuda de qualquer modo. CLOSED
-
Fiz uma magia no meu server de pokemon, rollout é o nome. Minha magia.lua: Minha tag na spells.xml: Agora o meu problema: Ele funciona certinho, o pokemon muda de outfit para um outfit dele mesmo, porém girando, mas na hora de causar o dano do combat, os monstros em volta nao recebem dano, e o mais surpreendente, eles bugam e healam vida. Algumas vezes funciona um pedaço ou outro do damage. Outras vezes nao funciona nada. To muito confuso sobre isso. Tirei o addEvent e coloquei apenas 1 doCombat e a magia funcionou perfeitamente, mas perdeu a graça tambem. Me ajudem por favor, obrigado.
-
Quem Está Navegando 0 membros estão online
- Nenhum usuário registrado visualizando esta página.