Ir para conteúdo

luangop

Membro
  • Registro em

  • Última visita

Tudo que luangop postou

  1. rsrs realmente, fiz rapidinho aqui na hora nem testei nada, e imaginei que vc estaria usando em uma quest ou algo do tipo, que fosse o caminho contínuo.. enfim se ja achou um que faça o que você precisa, que bom =)
  2. Em data/movements/movements.xml Adicione essa linha: <movevent type="StepIn" actionid="XXXX" event="script" value="storagetp.lua"/> Onde ta XXXX é o action ID que você vai por em todos os TPS que devem adicionar uma storage. data/movements/scripts crie um arquivo storagetp.lua e adicione o seguinte: function onStepIn(cid, item, position, fromPosition) local sto = XXXX local stor = getPlayerStorageValue(cid, sto) if stor < 0 then stor = 0 end if isPlayer(cid) then setPlayerStorageValue(cid, sto, stor + 1) return true end end Onde está XXXX coloque a storage que você vai usar no sistema. Agora você vai ter que encontrar onde está o script door.lua na sua pasta data/actions/scripts e depois de function onUse(cid, item, fromPosition, itemEx, toPosition) Coloque isso: if item.actionid == XXXX and getPlayerStorageValue(cid, XXXX) == 6 then doorEnter(cid, item, toPosition) else doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Voce nao pode entrar.") end item.actionid == XXXX Aqui coloque o action ID que você vai botar na porta do seu sistema. getPlayerStorageValue(cid, XXXX) No XXXX aqui você bota o mesmo valor que botou no local sto = XXXX em storagetp.lua Espero ter ajudado xD Qualquer problema avisa, pois fiz na pressa aqui.
  3. Verdade! @xdwilliam em data/creaturescripts/scripts/login.lua Depois de function onLogin(cid) Coloque isso:
  4. Editei minha primeira resposta com o script certo.. Por favor coloque como melhor resposta, assim um próximo membro que precise do sistema, poderá encontrar mais facilmente!
  5. Teste com este script então... OBS: crie novo char, para nao bugar as storage. function onAdvance(cid, skill, oldLevel, newLevel) local level = getPlayerLevel(cid) local vocatual = getPlayerVocation(cid) local newvoc = vocatual + 1 if level >= 50 and getPlayerStorageValue(cid, 88888) <= 0 then doPlayerSetVocation(cid, newvoc) setPlayerStorageValue(cid, 88888, 1) doPlayerSendTextMessage(cid, 22, "Congratz! You get "..level.." or more, and evolved to "..(getVocationInfo(newvoc).description).."!") return true end if level >= 100 and getPlayerStorageValue(cid, 88889) <= 0 then doPlayerSetVocation(cid, newvoc) setPlayerStorageValue(cid, 88889, 1) doPlayerSendTextMessage(cid, 22, "Congratz! You get "..level.." or more, and evolved to "..(getVocationInfo(newvoc).description).."!") return true end end @Str00per Verifique também se a vocation está realmente errada, e não somente a mensagem que o player recebe..
  6. Tem certeza que você deu pro char a vocation Novice (id 2) ?
  7. Entendi! no evolveclass.lua, coloque assim: local leveis = { [1] = {lvl = 50, sto = 88888}, [2] = {lvl = 100, sto = 88889} } function onAdvance(cid, skill, oldLevel, newLevel) local level = getPlayerLevel(cid) local vocatual = getPlayerVocation(cid) local newvoc = vocatual + 1 for i = 1, #leveis do if level >= leveis[i].lvl and getPlayerStorageValue(cid, leveis[i].sto) <= 0 then doPlayerSetVocation(cid, newvoc) setPlayerStorageValue(cid, leveis[i].sto, 1) doPlayerSendTextMessage(cid, 22, "Congratz! You get "..level.." or more, and evolved to "..(getVocationInfo(newvoc).description).."!") end end return true end Vou explicar, esse script quando você atinge o level 50, ele pega o ID da sua vocação, altera para seu id+1 e registra a alteração. O mesmo ocorre quando atinge level 100. Ou seja, assim não precisa criar novos scripts, este fará a função de todos... a única coisa que precisa fazer, é certificar-se que as evoluções tenham Vocation ID seguidos, por exemplo, sua classe Swordsman já está assim, ID's 2, 3 e 4.. Você não pode criar uma vocação diferente no meio das evoluções de uma.. entendeu? Por garantia, teste o sistema!
  8. Em data/creaturescripts/creaturescripts.xml add essa tag: Em data/creaturescripts/scripts crie um arquivo evolveclass.lua, e adicione o seguinte: function onAdvance(cid, skill, oldLevel, newLevel) local level = getPlayerLevel(cid) local vocatual = getPlayerVocation(cid) local newvoc = vocatual + 1 if level >= 50 and getPlayerStorageValue(cid, 88888) <= 0 then doPlayerSetVocation(cid, newvoc) setPlayerStorageValue(cid, 88888, 1) doPlayerSendTextMessage(cid, 22, "Congratz! You get "..level.." or more, and evolved to "..(getVocationInfo(newvoc).description).."!") return true end if level >= 100 and getPlayerStorageValue(cid, 88889) <= 0 then doPlayerSetVocation(cid, newvoc) setPlayerStorageValue(cid, 88889, 1) doPlayerSendTextMessage(cid, 22, "Congratz! You get "..level.." or more, and evolved to "..(getVocationInfo(newvoc).description).."!") return true end end Ainda em data/creaturescripts/scripts, abra o arquivo login.lua e Procure por qualquer linha que contenha registerCreatureEvent, e adicione isso embaixo: Obs: O sistema evolui sendo que as evoluções, estejam com ID em ordem. Tipo > vocation 1 >> vocation 2 >> vocation 3
  9. Testa ai.. function onSay(cid, words, param) if not isPremium(cid) then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Only Premium users can do that.") return true end if getPlayerStorageValue(cid, AUTO_LOOT_STORAGE) == -1 then registerCreatureEvent(cid, "AutoLootMoney") setPlayerStorageValue(cid, AUTO_LOOT_STORAGE, 1) doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Auto Loot Money activated! There's a tax of "..AUTO_LOOT_TAX.."% of the collected money.") else unregisterCreatureEvent(cid, "AutoLootMoney") setPlayerStorageValue(cid, AUTO_LOOT_STORAGE, -1) doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "Auto Loot Money deactivated!") end return true end
  10. luangop postou uma resposta no tópico em Suporte Tibia OTServer
    Olá! estou usando PDA como base no meu servidor. E como a maioria sabe existem varios e varios bugs no PDA, mas a maioria ja contornei, meu grande problema esta no trade, que se o player 1 der trade de uma bag de dentro do depot, com mais de 6 pokes, o player 2 da trade com 1 poke, ao finalizar o player 2 nao recebe nada, pois nao teria CAP (espaço) suficiente para receber mais que 6 pokemons, porém o player 1 recebe o poke do player 2. Ja fiz vários testes e nada resolveu, então pensei em bloquear para não ser possível dar trade de um item de dentro do depot, mas não sei criar essa função! Alguém poderia me ajudar? Segue meu script do trade: Desculpem o textão xD
  11. luangop postou uma resposta no tópico em Suporte Tibia OTServer
    Porque remover o tópico? Se não quer que seu script seja copiado, ao menos deixe na pergunta a função que vc queria.. para se alguém da comunidade tenha a mesma dúvida, possa solucionar! Não seja ingrato!
  12. Cara eu nao manjo de montar script, não entendi quase nada disso kkk consegue adaptar pra mim isso no meu script ali de cima, e so me dizer onde eu devo criar meu .txt para add os nomes? e como add os nomes no .txt
  13. Olá! Estou usando um TFS 0.3.6 É o seguinte, meu ot possui um sistema de loteria que sorteia pontos que são os mesmos pontos obtidos por donate. Várias pessoas criam MC para burlar esse sistema e aumentar as chances de ganhar na loteria, e queria acabar com isso. Fiz a primeira parte do script, em creaturescripts via onLogin, onde eu posso add nomes que o sistema passa a dar auto-kick, pois tem players que jogam em lan house, então um anti-MC 'normal' impossibilitaria eles de jogar! Porém meu ot se eu add um nome no script, e der reload creaturescripts, ele crasha, então tem como fazer esse script ler um arquivo .txt na pasta raiz do servidor, e verificar os nomes de la ao invés de verificar no próprio script? Assim eu não precisaria dar reload algum quando adicionar um novo nome. Espero que alguém possa me ajudar Código que eu fiz (usando como base um encontrado aqui no fórum): local config = { max = 1, } local recusar = {"Techno", "Pedro"} local function antiMC(p) if #getPlayersByIp(getPlayerIp(p.pid)) >= p.max then doRemoveCreature(p.pid) end return true end function onLogin(cid) if isInArray(recusar,getCreatureName(cid)) then addEvent(antiMC, 1000, {pid = cid, max = config.max+1}) end return true end
  14. luangop postou uma resposta no tópico em Suporte Tibia OTServer
    Tente assim: OBS: local stor = XXXX local segundos = 6 No lugar de XXXX coloque uma storage que esteja livre no seu server em Segundos e o tempo em segundos.
  15. Suporte apenas por aqui, contato pessoal prefiro não divulgar =)
  16. Infelizmente não mano, é obrigatório ter o actionID no tile onde vai ser a restrição.
  17. Troca doPlayerSendCancel(cid, "You have not completed the required mission.") por doPlayerPopupFYI(cid, "You have not completed the required mission.")
  18. Eu nunca li tutorial nenhum na verdade, aprendi na necessidade de scripts que nao encontrava em lugar algum, então é só usar a cabeça para enxergar a lógica dos scripts e fui lendo scripts prontos do meu ot mesmo, pegando função de um e outro.. e assim vai rsrs Basta ter vontade de aprender, e paciência, muita paciência.
  19. Como eu ja falei anteriormente, o erro era pq a storage que vc tava usando salvava string e nao number, string = letras number = numero Existe sim, eu aprendi assim rsrs
  20. Ok agora entendi, pode pah q vai dar agora: function onStepIn(cid, item, position, fromPosition) if not isPlayer(cid) then return true end if not (getPlayerStorageValue(cid, 91003) == "Finished") then doPlayerSendCancel(cid, "You have not completed the required mission.") doTeleportThing(cid, fromPosition) return true end doPlayerSendCancel(cid, "You accessed the prohibited area.") doSendMagicEffect(position, 13) return true end
  21. Esse Player Marcos Fialho nunca obteu a storage... -1 = nula mas tenta assim: function onStepIn(cid, item, position, fromPosition) if not isPlayer(cid) then return true end if getPlayerStorageValue(cid, 91003) < 1 then doPlayerSendCancel(cid, "You have not completed the required mission.") doTeleportThing(cid, fromPosition) return true end doPlayerSendCancel(cid, "You accessed the prohibited area.") doSendMagicEffect(position, 13) return true end Testa com um char que obteve a storage... se der o erro faça o comando /storage... como falei a cima com o nick do char que ja obteve a storage!
  22. Faça uma coisa para testar, dentro do jogo com um char ADM, digite /storage NICK DE ALGM Q TEM A STORAGE, 91003 e me fala uq aparece
  23. Posta o script que bota essa storage no player, fazendo favor.
  24. tenta: function onStepIn(cid, item, position, fromPosition) if not isPlayer(cid) then return true end if getPlayerStorageValue(cid, 91003) <= 0 then doPlayerSendCancel(cid, "You have not completed the required mission.") doTeleportThing(cid, fromPosition) return true end doPlayerSendCancel(cid, "You accessed the prohibited area.") doSendMagicEffect(position, 13) return true end
  25. Mesmo problema aqui, se conseguir por favor me avisa xD

Informação Importante

Confirmação de Termo