Jump to content
Close

Dwarfer

Suporter
  • Content Count

    468
  • Joined

  • Last visited

  • Days Won

    35

Dwarfer last won the day on March 16

Dwarfer had the most liked content!

About Dwarfer

  • Rank
    Baronet

Profile Information

  • I am
    Scripter

Recent Profile Visitors

6697 profile views
  1. local t = { duration = 3, -- duração da novo outfit (em segundos) newLooktype = 111, -- looktype da nova outfit effect = 10, -- efeito que aparecerá cooldown = 10, -- tempo para usar a magia novamente (em segudos) storage = 54897 -- só modifique se necessário } function onCastSpell(cid, var) if getPlayerStorageValue(cid, t.storage) > os.time() then doPlayerSendCancel(cid, "Você precisa esperar para soltar esta magia novamente.") return false end doCreatureSetNoMove(cid, true) local out = getCreatureOutfit(cid) out.lookType = t.newLooktype doSetCreatureOutfit(cid, out, t.duration * 1000) setPlayerStorageValue(cid, t.storage, t.cooldown + os.time()) addEvent(function() if isPlayer(cid) then doCreatureSetNoMove(cid, false) doSendMagicEffect(getPlayerPosition(cid), t.effect) end end, t.duration * 1000) return true end
  2. Coloque as posições válidas onde são criadas as paredes nesta parte: local B = { [1] = {1056,{x=2175, y=555, z=6, stackpos = 1}}, [2] = {1056,{x=2175, y=556, z=6, stackpos = 1}}, [3] = {1056,{x=2175, y=557, z=6, stackpos = 1}}, [4] = {1056,{x=2175, y=558, z=6, stackpos = 1}} }
  3. Bem, @bpm91, existem algumas maneiras de fazer isso. Vamos fazer pela forma mais completa até para que você possa utilizar em outros scripts depois, caso necessite. É só seguir o passo a passo abaixo, você é um rapaz esperto, saudável, eu sei que você vai conseguir. EU OUVI UM AMÉM? Além do mais, parece que tá precisando do script já que comentou "up" no tópico (não comente "up", isso é considerado flood, use o botão "Subir este tópico" no canto superior direito - Leia as regras: https://tibiaking.com/forums/forum/101-regras-e-informações/) Em data/npc/lib/npc/npcsystem, abra o arquivo npchandler.lua: Abaixo da linha: CALLBACK_ONSELL = 11 Adicione: CALLBACK_ONTRADEREQUEST = 15 Encontre as linhas: elseif(id == CALLBACK_FAREWELL and module.callbackOnFarewell ~= nil) then tmpRet = module:callbackOnFarewell(unpack(arg)) E adicione, logo abaixo, o seguinte: elseif id == CALLBACK_ONTRADEREQUEST and module.callbackOnTradeRequest ~= nil then tmpRet = module:callbackOnTradeRequest(unpack(arg)) Procure pela função NpcHandler:onSell (caso a função tenha algumas diferenças em relação ao que eu coloquei abaixo, sem desespero, inspire, expire e siga): function NpcHandler:onSell(cid, itemid, subType, amount, ignoreCap, inBackpacks) local callback = self:getCallback(CALLBACK_ONSELL) if(callback == nil or callback(cid, itemid, subType, amount, ignoreCap, inBackpacks)) then if(self:processModuleCallback(CALLBACK_ONSELL, cid, itemid, subType, amount, ignoreCap, inBackpacks)) then -- end end end Adicione, logo abaixo: function NpcHandler:onTradeRequest(cid) local callback = self:getCallback(CALLBACK_ONTRADEREQUEST) if callback == nil or callback(cid) then if self:processModuleCallback(CALLBACK_ONTRADEREQUEST, cid) then return true end end return false end Tá vendo, não foi tão difícil. Calma aí, tem mais. Em data/npc/lib/npc/npcsystem, abra o arquivo modules.lua: Procure por: function ShopModule.requestTrade(cid, message, keywords, parameters, node) local module = parameters.module if(not module.npcHandler:isFocused(cid)) then return false end Logo abaixo, adicione: if not module.npcHandler:onTradeRequest(cid) then return false end Em seguida, procure por: function ShopModule.tradeItem(cid, message, keywords, parameters, node) local module = parameters.module if(not module.npcHandler:isFocused(cid)) then return false end Logo abaixo, adicione: if not module.npcHandler:onTradeRequest(cid) then return true end Pronto, eu sempre soube que você conseguiria... Agora, seu NPC. Primeiramente, a linha abaixo tem um erro, acredito que foi ao colar aqui no fórum e a formatação modificou, dá uma olhada aí. Como não sei qual valor estava, deixei comentado no script final. Linha: setPlayerStorageValue(cid, 100062, 😎 Script do NPC com a verificação se o storage do player storage2 é diferente de -1 para poder dar "trade": Se você fizer tudo certo, vai funcionar.
  4. Testei aqui e o script está 100% funcional. No entanto, a diferença pode ser nesse sistema de pontos que você quer. Você já tem o script de clicar no baú e receber o item? Poste-o para que eu possa adaptar o script desenvolvido a esse seu.
  5. Vejo que é seu primeiro post, então nos próximos tente dar a maior quantidade possível de detalhes sobre o seu pedido como: a versão do seu servidor, a distro utilizada, além de detalhes sobre o próprio script que você quer. Isso facilitará com que as pessoas te ajudem e, por consequência, você tenha o seu pedido atendido o mais rápido possível. Como nunca vi que sistema é esse do qual você está se referindo, supondo que o script que desenvolvi será compatível com seu servidor e que o "ponto" que você se refere é o "premium point da account", siga os passos abaixo (não tive como testar o script): Em data/lib crie um arquivo.lua e cole isto dentro: Caso ainda não possua a função que adiciona os pontos em algum arquivo da pasta data/lib, adicione-a, no arquivo criado anteriormente, abaixo do "}": Em data/creaturescripts/scripts crie um arquivo.lua e cole isto dentro: No creaturescripts.xml, adicione a tag: <event type="death" name="AegisDeath" event="script" value="NOMEDOARQUIVO.lua"/> No arquivo.xml do monstro, antes de: </monster> adicione: <script> <event name = "AegisDeath"/> </script> Fiz um comando adicional aqui rapidinho, caso o jogador queira verificar a quantidade de monstros mortos: Em data/talkactions/scripts crie um arquivo.lua e cole isto dentro: No talkactions.xml, adicione a tag. Por exemplo: <talkaction words="!aegis" event="script" value="NOMEDOARQUIVO.lua"/> Espero que seja isso o que você queria.
  6. local array = { [1] = {[0] = 6080, [1] = 6080}, [2] = {[0] = 6080, [1] = 6080}, --- coloque os outros aqui [30] = {[0] = 5966, [1] = 5966} } function onDeath(cid, corpse) local voc = array[getPlayerVocation(cid)] if voc then local newId = voc[getPlayerSex(cid)] doTransformItem(corpse.uid, newId, 1) doDecayItem(corpse.uid) end return true end No array: [1] = { [0] = 6080, -- [0] = id do corpo feminino [1] = 6080 -- [1] = id do corpo masculino }, Faça para os demais, fiz apenas para alguns para exemplificar.
  7. @Jhonjhon775 function Creature:onChangeOutfit(outfit) if self:isPlayer() then local head = self:getSlotItem(CONST_SLOT_HEAD) if head and head:getId() == 32671 and self:getOutfit().lookType == 1122 and outfit.lookType ~= 1122 then return false end if outfit.lookType == 111 and outfit.lookMount ~= 0 then -- TROQUE O 111 pelo lookType do seu outfit self:sendCancelMessage("You can not mount while using this outfit.") return false end -- [CONTINUAÇÃO]
  8. @Yinz Como você não postou o código por completo, tive que supor que se tratava de um autoloot que eu vi por aí certa vez. Tente sempre deixar o código completo pra facilitar o trabalho, ajudar outras pessoas, além de se obter uma solução mais rapidamente pra você também. Espero que minha suposição esteja correta. Bem, eu não tive como testar o código, pois estava sem acesso ao meu computador. Em data/lib, crie um arquivo.lua chamado AutoLootRemove.lua (ou qualquer nome de sua preferência) e cole isto dentro: No global.lua, adicione a linha (ou troque para o nome que você escolheu): dofile('data/lib/AutoLootRemove.lua') Em talkactions/scripts, crie um arquivo.lua e cole isto dentro: No talkactions.xml, adicione a tag conforme desejar. Ex.: <talkaction words="!autolootremove" script="NOMEDOSEUARQUIVO.lua"/> Em seguida, em data/creaturescripts/scripts crie um arquivo.lua e cole isto dentro: No creaturescripts.xml, adicione as linhas: <event type="modalwindow" name="RmvAutoLootModal" script="NOMEDOARQUIVO.lua"/> <event type="login" name="RmvAutoLootLogin" script="NOMEDOARQUIVO.lua"/> Qualquer problema, é só retornar.
  9. Em data/events/scripts/creature.lua, procure por: function Creature:onChangeOutfit(outfit) return true end Substitua por: function Creature:onChangeOutfit(outfit) if outfit.lookType == 111 and outfit.lookMount ~= 0 then self:sendCancelMessage("You can not mount while using this outfit.") return false end return true end Troque o 111 pelo lookType do outfit que você quer proibir que possa montar. Verifique, no events.xml, se tem a linha abaixo e ela está com enabled="1": <event class="Creature" method="onChangeOutfit" enabled="1" />
  10. @Bruno Asap Tente sempre falar o que deseja de uma vez só e de forma detalhada. Editei lá com a informação do boss. É só configurar o nome e a posição na qual ele será criado.
  11. Não funciona em tfs 1.x ou otx 3.x.
  12. Primeiramente, tente sempre deixar claro qual a versão da sua distro nos seus tópicos. Espero que a versão que chutei ser a do seu servidor seja a correta. Não estava em casa, então não tive como testar exatamente nada, qualquer problema é só falar. Em data/lib crie um arquivo.lua e cole isto dentro: Os campos que têm tempo você pode configurá-los como quiser. Os valores possíveis seguem os exemplos abaixo: Ex.: {40, "sec"}, {10, "min"}, {2, "hour"}, {1, "day"} Em data/talkactions/scripts crie um arquivo.lua e cole isto dentro: No talkactions.xml, adicione a tag: <talkaction words="!pvp" event="script" value="NOMEDOSEUARQUIVO.lua"/> Em data/creaturescripts/scripts crie um arquivo.lua e cole isto dentro: No creaturescripts.xml, adicione as linhas: <event type="target" name="PvpSysTarget" event="script" value="NOMEDOSEUARQUIVO.lua"/> <event type="combat" name="PvpSysCombat" event="script" value="NOMEDOSEUARQUIVO.lua"/> <event type="login" name="PvpSysLogin" event="script" value="NOMEDOSEUARQUIVO.lua"/> <event type="look" name="PvpSysLook" event="script" value="NOMEDOSEUARQUIVO.lua"/> <event type="kill" name="PvpSysKill" event="script" value="NOMEDOSEUARQUIVO.lua"/> Deixe o servidor como pvp no config.lua. Os comandos para ativar e desativar o pvp são, respectivamente, !pvp on e !pvp off
  13. Como você não detalhou se o intervalo de 20 horas é para todos os players ou para os players que foram teleportados, assumi que fosse para os players que foram teleportados. Não tive como testar, fiz aqui rapidão. Em data/actions/scripts crie um arquivo.lua e cole isto dentro: No actions.xml adicione a tag e edite o actionid que ficará na alavanca: <action actionid="ACTIONID_DA_ALAVANCA" script="NOMEDOARQUIVO.lua"/>
  14. Dwarfer

    Dwarfer Scripts

    THIS ADVERT HAS EXPIRED!

    • Looking for Jobs
    • To combine

    Fala, galerinha! Trabalho com scripts Lua para todas versões de TFS e OTX há um bom tempo. Vários dos meus trabalhos podem ser encontrados aqui mesmo no tk de forma que sirvam como primeiras impressões e referências. Já trabalhei para vários servidores sempre facilitando ao máximo a configuração dos scripts para os administradores, com foco total na qualidade dos códigos e preocupação com o servidor do cliente. Além disso, caso o administrador enfrente maiores dificuldades na configuração, o suporte é garantido. O método de pagamento é definido em comum acordo com o cliente. Detalhe sua ideia que farei a mágica acontecer 😆 Contato: Discord: Dwarfer#2715

    NO VALUE SPECIFIED

Open Tibia Server

Quer aprender a criar seu próprio servidor de Tibia? Então está no lugar certo, aqui você encontrará milhares de tutorias, scripts, códigos, mapas e utilitários para que você possa fazer o seu próprio servidor de Tibia partindo do zero.

Redes Sociais

Anuncie no Tibia King

Precisa de mais visibilidade em seus projetos? Quer publicidade para o seu servidor? Anuncie no Tibia King e faça sua divulgação, possuímos centenas de acessos simultâneos e milhares diários, com certeza será a sua solução! A publicação do seu anuncio é instantânea!

×
×
  • Create New...