Ir para conteúdo

otteN

Membro
  • Registro em

  • Última visita

Tudo que otteN postou

  1. Boa noite. Então, antes de te explicar essas coisas, tu precisa saber o seguinte: Tibia é um jogo feito pela cipsoft. Hoje em dia existem várias "engines" que imitam as mecânicas do Tibia, e essas engines são facilmente manipuláveis. A mais conhecida hoje em dia é a OTX e o theforgottenserver (recomendo esse último, porque é a "engine oficial"). A engine em si é só o executável, tu só vai mexer nela se quiser fazer algo que não tá dentro das mecânicas do Tibia (como o sistema de televisão dos poketibias). O que tu encontra no fórum são em maioria datapacks (baiak, global, yourots, essas coisas) em cima de alguma engine (esses que eu citei em cima do theforgottenserver, os servidores de pokémon são quase todos em cima do dash, que é uma adaptação do theforgottenserver, enfim), ou seja, só alteram a pasta "data", que tu encontra em todo servidor. Nessa pasta data, tu pode criar teus scripts em lua, criar monstros, criar itens, criar vocações, mudar o mapa etc. Tu pode encontrar as engines para download em alguns tópicos aqui do fórum (não recomendo), ou diretamente do github. Links: TFS 1.2 (github) TFS 0.4 Resumindo o grosso (se tu quiser mexer com poketibia, vai tudo ficar uma lambança. Muitos programadores botaram bugs, não liberaram código fonte pra comunidade etc com interesses de lucro, já que é um tipo de servidor muito procurado, então tu pode baixar um pra brincar e tal, mas se quiser aprender a mexer com tibia não recomendo) engine: o executável do teu server, escrito em C++, tu consegue ele compilando o código fonte, a famosa source. Esse executável regula as "leis fundamentais" do servidor, e tu só pode alterar tendo o código fonte e um bom conhecimento do funcionamento das nuances da engine. Ela normalmente acompanha uma pasta data bem nua, sem grandes scripts. engines famosas: theforgottenserver (tfs) e otx versões das engines: cada engine tem várias versões, que acompanham as versões do tibia (8.6, 10.51, 11.0 etc). O TFS, por exemplo, vai da versão 0.3.6, até a 1.2 (a 1.3 está em desenvolvimento no github). Apartir da versão 1.0, por exemplo, nós temos suporte a montarias e treino offline (coisas que não tem porque fazer com script, então fizeram diretamente na source) datapack: tudo que está dentro da pasta data. Lá tu tem scripts em lua, teu mapa, configurações xml etc. data: uma pasta existente em todos servidores.
  2. Seguinte, esse é um conhecimento de lógica de programação. Se nós traduzirmos as palavras true e false, nós teremos verdadeiro e falso, respectivamente. Todas condicionais (if, elseif) trabalham com um valor desses. Se ele for true, o bloco de código do if é executado, se for false, e se tiver um else, ele executa o bloco de código do else. Nesse caso, nós temos como verificação do if a função getPlayerStorageValue(), que é do próprio tfs, e não da linguagem lua. Essa função, internamente, verifica se o player com o id que tu pôs tem a storage que tu pôs (primeiros e segundos valores, respectivamente). Retorna true se ele tiver a storage (fazendo com que o código depois do if e antes do else/end seja executado) e false se ela não tiver (executando o código do else, se houver, se não houver só pula pro end). Elas são muito presentes no nosso dia-a-dia, se tu criar uma correlação entre as situações que tu usa elas no teu dia-a-dia com as situações do código, vai ser beeem mais fácil de tu entender. Se mesmo assim tu não entender, tem o canal Curso em Vídeo, do professor Guanabara, que ensina praticamente tudo que tu quiser sobre programação dsahqwdui
  3. otteN postou uma resposta no tópico em Ouvidoria
    Com adblock o erro continua, só deixa a page em branco.
  4. nois, qualquer outra coisa que precisar de ajuda chama pv
  5. tenta: function doSenzuHeal(pid, heal, cooldown) doPlayerAddMana(pid, heal) doCreatureAddHealth(pid, heal) doSendAnimatedText(getPlayerPosition(pid), "+" .. heal, TEXTCOLOR_YELLOW) doSendMagicEffect({x = getPlayerPosition(pid).x + 1, y = getPlayerPosition(pid).y + 0, z = getPlayerPosition(pid).z}, 76) exhaustion.set(pid, cooldown.storage, cooldown.wait) end function onUse(cid, item, fromPosition, itemEx, toposition) local config = { idSenzu = 2157, --id (configurado no items.xml) do senzu cooldown = { storage = 50000, --storage, mexa apenas se souber o que está fazendo para não causar conflitos no servidor wait = 1.5 --tempo de cooldown (em segundos) }, regeneration = 180000 --valor da cura } if (exhaustion.get(cid, config.cooldown.storage) == false) then if (fromPosition.x ~= CONTAINER_POSITION) then doSenzuHeal(cid, config.regeneration, config.cooldown) elseif (item.itemid == config.idSenzu) then doSenzuHeal(cid, config.regeneration, config.cooldown) end else doPlayerSendCancel(cid, "Você está exausto.") end return true end
  6. Foi erro de digitação, tinha feito mto rápido EHAUEHAUAHU, agora vai: function doSenzuHeal(pid, heal, cooldown) doPlayerAddMana(pid, heal) doCreatureAddHealth(pid, heal) doSendAnimatedText(getPlayerPosition(pid), "+" .. heal, TEXTCOLOR_YELLOW) doSendMagicEffect({x = getPlayerPosition(pid).x + 1, y = getPlayerPosition(pid).y + 0, z = getPlayerPosition(pid).z}, 76) exhaustion.set(pid, cooldown.storage, cooldown.wait) end function onUse(cid, item, fromPosition, itemEx, toposition) local config = { idSenzu = 2157, --id (configurado no items.xml) do senzu cooldown = { storage = 50000, --storage, mexa apenas se souber o que está fazendo para não causar conflitos no servidor wait = 1.5 --tempo de cooldown (em segundos) }, regeneration = 180000 --valor da cura } if (exhaustion.get(cid, config.cooldown.storage) == false) then if (fromPosition.x ~= CONTAINER_POSITION) then doSenzuHeal(cid, regeneration, config.cooldown) elseif (item.itemid == config.idSenzu) then doSenzuHeal(cid, regeneration, config.cooldown) end else doPlayerSendCancel(cid, "Você está exausto.") end return true end
  7. Fiz aqui, testa para ver se deu certo, só apaga tudo do arquivo do teu script e cola o que eu fiz: function doSenzuHeal(pid, heal, cooldown) doPlayerAddMana(pid, heal) doCreatureAddHealth(pid, heal) doSendAnimatedText(getPlayerPosition(pid), "+" .. heal, TEXTCOLOR_YELLOW) doSendMagicEffect({x = getPlayerPosition(pid).x + 1, y = getPlayerPosition(pid).y + 0, z = getPlayerPosition(pid).z}, 76) exhaustion.set(pid, cooldown.storage, cooldown.wait) end function onUse(cid, item, fromPosition, itemEx, toposition) local config = { idSenzu = 2157, --id (configurado no items.xml) do senzu cooldown = { storage = 50000, --storage, mexa apenas se souber o que está fazendo para não causar conflitos no servidor wait = 1.5 --tempo de cooldown (em segundos) }, regeneration = 180000 --valor da cura } if (exhaustion.get(cid, config.cooldown.storage == false)) then if (fromPosition.x ~= CONTAINER_POSITION) then doSenzuHeal(cid, regeneration, config.cooldown) elseif (item.itemid == config.idSenzu) then doSenzuHeal(cid, regeneration, config.cooldown) end else doPlayerSendCancel(cid, "Você está exausto.") end return true end
  8. @luanluciano93 Pra que essa verificação? Tô prguntando na humildade mesmo, não sei se tem porquê ou não, já que tudo tem um uid (?)
  9. Pra windows eu recomendo o Wamp.
  10. Veja se você configurou corretamente o path dos includes do projeto.
  11. /r/ tutoriais sobre Blender e modelagem 3D. Tô me interessando por essa parte de design de jogos. Qnt a sword, tá melhor que aqls do Runescape HAUEHUAEAHU
  12. Qual a versão do teu TFS?
  13. function onThink(cid, interval) if getPlayerGroupId(cid) >= 4 and not isPlayerGhost(cid) then numeroDoEfeito = 13 doSendMagicEffect(getThingPosition(cid), numeroDoEfeito) return true end return true end
  14. Usa o que eu postei. (já solucionei o problema do ghost)
  15. function onThink(cid, interval) numeroDoEfeito = 12 if (getPlayerGroupId(cid) >= 4 and not isPlayerGhost(cid)) then doSendMagicEffect(getCreaturePos(cid), numeroDoEfeito) end return true end Solucionado
  16. Cara, eu até tentei fazer em lua, mas sem a função que é executada ao player andar o script fica bem prejudicado e quase inútil. Desculpa
  17. Rlx, vou tentar aqui.
  18. Até tem como, mas EU ACHO q não vai dar pra cumprir todas exigências, e vai ficar meio gambiarra :x
  19. Qual a versão do teu TFS? Me ajuda a te ajudar, se não for 1.x vai complicar man ;p
  20. otteN postou uma resposta no tópico em Suporte & Pedidos
    Nada ver, o segundo tá bonito pakas aheuaehua O primeiro que tá sem uns detalhezinhos, mas tá melhor q qlqr outra coisa que eu já fiz mappeando v:
  21. otteN postou uma resposta no tópico em Suporte & Pedidos
    Se só pode um, o segundo AHUEHAUEHA
  22. Galera, tenho uma pergunta. O que seria melhor, criar um script em lua ou programar internamente em C++? (tô fazendo um poketibia, do zerão msm) Os sistemas da source para ter uma gameplay semelhante aos otservers de Pokémon eu já fiz, tô me referindo aos scripts msm (como mudar a outfit quando subir na neve, areia etc) Em C++ teria mais desempenho, mas seria mais desorganizado (código implementado com vários outros da classe, fica meio ruinzin). Em lua teria um pouco menos de desempenho (lua é uma linguagem de script bem rápida), mas seria bem mais organizado (uma file pra cada script).
  23. Concordo completamente, sem isso nem dá vontade de ajudar, porque até a pessoa responder... zzzzz
  24. otteN postou uma resposta no tópico em Suporte & Pedidos
    Dava gostoso pra esse mapa, hein
  25. local config = { --[vocation id] = { level, nova voc, looktype, efeito, storage} -- Goku [7] = { 700, 8, 9, 114, 43902} } function onSay(cid, words, param, channel) local voc = config[getPlayerVocation(cid)] if (getCreatureStorage(uid, key) >= 1) then if voc then if getPlayerLevel(cid) >= voc[1] then doPlayerSetVocation(cid, voc[2]) doPlayerSendTextMessage(cid, MESSAGE_STATUS_WARNING, "Voce se transformou!") doCreatureSay(cid, "Transformar", 19) local outfit = {lookType = voc[3]} doCreatureChangeOutfit(cid, outfit) doSendMagicEffect(getCreaturePosition(cid), voc[4]) else doPlayerSendTextMessage(cid, MESSAGE_STATUS_WARNING, "Voce precisa estar no level " .. voc[1] .. " para transformar.") end else doPlayerSendCancel(cid, "Nao é possível se transformar.") end else doPlayerSendCancel(cid, "Nao é possível se transformar.") end return true end Para poder usar a transformação tu tem que usar o método "doSetStorage(storage, valor)", com o argumento valor maior igual à um.

Informação Importante

Confirmação de Termo