Ir para conteúdo

Yan Oliveira

Moderador
  • Total de itens

    2221
  • Registro em

  • Última visita

  • Dias Ganhos

    60

Tudo que Yan Oliveira postou

  1. Exato, mas esqueci de mencionar uma coisa. Caso queira aleatório assim, vai ter que mover a tabela das potions para dentro da função onUse, pois, se deixar fora, a primeira vez que usar a potion vai pegar um valor aleatório (de acordo com cada item e o valor gerado aleatório para ele), porém nas próximas vezes vai ficar sempre aquele valor, pois como as pastas são carregadas em memória, então fora do onUse ele armazena aquele valor em memória e nunca é alterado. Por exemplo, vamos supor que você tem 2 potion na tabela e a de uma o random deu 35 e a outra 38, se deixar a tabela fora da função onUse vai ficar sempre curando 35 uma e a outra 38 até reiniciar o servidor ou atualizar a pasta Actions. Então o certo é mover a tabela dentro da função onUse, para que a cada uso, gere um novo valor: --------------- POTION QUE CURA BASEADO NA PORCENTAGEM DA VIDA MÁXIMA BY YAN18 --------------- ----- FUNÇÃO PARA CURAR O PLAYER ----- function doHealPlayer(cid, porcentagem_hp, effect, message_heal) local porcentagem = math.abs(porcentagem_hp / 100) -- PEGA O VALOR INTEIRO PASSADO DO PARÂMETRO DESEJADO COMO A PORCENTAGEM E DIVIDE POR 100 PARAR GERAR A PORCENTAGEM local life_recovered = math.floor(getCreatureMaxHealth(cid) * porcentagem) -- QUANTIDADE DE HP QUE VAI RECUPERAR doSendMagicEffect(getThingPos(cid), effect) doCreatureAddHealth(cid, life_recovered) -- CONDICIONAL PARA EXIBIR MENSAGEM EM CIMA DO PLAYER AO CURAR -- if message_heal then doCreatureSay(cid, "Life recovered...") end doPlayerSendCancel(cid, "Life recovered...") -- MENSAGEM BRANCE EM CIMA DO CONSOLE doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "You recovered " ..life_recovered.. " of your maximum life.") end ---------------------------------------- CÓDIGO ---------------------------------------- function onUse(cid, item, fromPosition, itemEx, toPosition) --------- TABELA COM O ID, PORCENTAGEM E EFEITO DAS POTIONS --------- local potions = { [12344] = {porcentagem = math.floor(math.random(30, 40)), effect = 14}, -- ID, PORCENTAGEM E EFEITO DA POTION [12345] = {porcentagem = math.floor(math.random(30, 40)), effect = 14}, -- ID, PORCENTAGEM E EFEITO DA POTION [12346] = {porcentagem = math.floor(math.random(30, 40)), effect = 12}, -- ID, PORCENTAGEM E EFEITO DA POTION [12347] = {porcentagem = math.floor(math.random(30, 40)), effect = 13}, -- ID, PORCENTAGEM E EFEITO DA POTION [12348] = {porcentagem = math.floor(math.random(30, 40)), effect = 13}, -- ID, PORCENTAGEM E EFEITO DA POTION } local verificar_batalha = true -- VARIÁVEL QUE VERIFICA SE ESTÁ EM BATALHA PARA USAR A POTION if not isCreature(cid) or not getCreatureMaster(cid) then return doPlayerSendCancel(cid, "You only can use this potion in you.") end if getCreatureHealth(cid) == getCreatureMaxHealth(cid) then return doPlayerSendCancel(cid, "You are already with full health.") end -- VERIFICA SE ESTÁ EM BATALHA -- if verificar_batalha then if getCreatureCondition(cid, CONDITION_INFIGHT) then doPlayerSendCancel(cid, "You can't use this potion during a battle.") doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "You can't use this potion during a battle.") return true end end doRemoveItem(item.uid, 1) doHealPlayer(cid, potions[item.itemid].porcentagem, potions[item.itemid].effect, true) return true end
  2. Yan Oliveira

    [AJUDA] Login.lua

    Pelo visto seu servidor não possui a função doUpdatePokemonsBar.
  3. Mas, o que exatamente você quer fazer com essa string do sword no string.match? Me explica sua ideia e tento te ajudar.
  4. De todos os pokémons?
  5. Você está fechando duas vezes seguidas a tag movements: </movements> <movevent event="DeEquip" itemid="2357" slot="ring" function="onDeEquipItem" /> <movevent event="Equip" itemid="2357" slot="ring" function="onEquipItem"> </movements> O certo seria: <movements> <movevent event="DeEquip" itemid="2357" slot="ring" function="onDeEquipItem" /> <movevent event="Equip" itemid="2357" slot="ring" function="onEquipItem"> </movements> Só que fiquei em dúvida se você só colocou a tag root (movements) para exemplificar, ou se está usando ela (estaria errado). Poste o seu movements.lua para eu ver.
  6. Da erro no console? Poste o script, e se tem erro uma print do erro.
  7. O erro está nessa linha: if #getCreatureSummfighting = falseons(_target) > 0 then Não tem sentido algum a expressão no if. Mude para : if #getCreatureSummons(_target) > 0 then Estou me baseando no seu outro próprio post: Então a função vai ficar: function selfAttackCreature() if #getCreatureSummons(getNpcCid()) > 0 and not isCreature(getCreatureTarget(getCreatureSummons(getNpcCid())[1])) then local list = getSpectators(getCreaturePosition(getNpcCid()), 7, 7, false) for i=0, table.getn(list) do local _target = list if(_target ~= 0) then if isPlayer(_target) and not getTileInfo(getThingPos(_target)).protection then if #getCreatureSummons(_target) > 0 then doMonsterSetTarget(getCreatureSummons(getNpcCid())[1], getCreatureSummons(_target)[1]) setPlayerStorageValue(getCreatureSummons(getNpcCid())[1], 99856201, getNpcCid()) else fighting = false end target = _target break end end end end end Só substituir no Some Functions.lua onde coloquei para você, ou apenas trocar a linha acima. A linha alterada foi o que o Nociam te respondeu no seu outro post, ai tem que testar para ver se funciona. Mas, como ele recomendou nesse post recente: Deve ter funcionado. Teste e avise se der problema.
  8. Vou colocar em spoiler porque a página buga quando tem muitos texto grandes: Pronto, já está adicionado! Só lembrando que tirei o local porque essa vai ser uma função global, ou seja, vai poder ser usada em qualquer outro arquivo da pasta Data do servidor. Testa agora e vê se resolve seu problema.
  9. Sempre que usa Shovel da esse problema?
  10. Evite usar tamanho da fonte grande dos textos dessa maneira, fica ilegível e desagradável der ler e tentar ajudar você e outros que pedem ajuda. Procure usar tamanho de fonte padrão ou menores que esse tamanho. Poste o seu login.lua da pasta Creaturescripts.
  11. Pokemon solto ou no slot? Essa é uma área que só pode ter um player por vez ou pode ter vários?
  12. Quando ele sai do portal ele vai para onde? Porque é estranho ele ser teleportado pelo portal e depois que o tempo acaba ser novamente sendo que saiu da área. Ficou um pouco ambíguo, pode explicar mais detalhadamente? Como funciona e/ou você quer que funciona? Explica tudo que qualquer coisa eu refaço o script para você.
  13. Yan Oliveira

    [AJUDA] Login.lua

    Posta a função para eu dar uma olhada.
  14. Dentro da função onLogin(cid) procure por essa parte: if(accountManager == MANAGER_NONE) then local lastLogin, str = getPlayerLastLoginSaved(cid), config.loginMessage doPlayerOpenChannel(cid, CHANNEL_TRADE) doPlayerOpenChannel(cid, 11) if(lastLogin > 0) then doPlayerSendTextMessage(cid, MESSAGE_STATUS_DEFAULT, str) str = "Your last visit was on " .. os.date("%a %b %d %X %Y", lastLogin) .. "." else str = str .. " Please choose your outfit." doPlayerSendOutfitWindow(cid) end e na função doPlayerSendTextMessage(cid, MESSAGE_STATUS_DEFAULT, str) você muda a cor da mensagem no segundo parâmetro da função (MESSAGE_STATUS_DEFAULT), para ver as cores possíveis você vai em Data/Lib/Const.lua ou Constant.lua (depende do servidor, mas é no arquivo de constantes, alguns começam com números como 000) ou procurando na source (que é a maneira mais difícil caso não saiba mexer com source). Existem algumas cores que são mais padrões como: MESSAGE_STATUS_CONSOLE_BLUE = Azul MESSAGE_STATUS_CONSOLE_ORANGE = Laranja MESSAGE_STATUS_CONSOLE_RED = Vermelho E após escolher a cor, só mudar no segundo parâmetro, por exemplo: doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, str)
  15. Posso colocar sim, sem problemas. Mas, é bem simples, vai na última linha do arquivo que vai colocar e vai no último end, da enter e cola a função em baixo (recomendo comentar em cima do nome da função para saber o que faz), não tem segredo. Sobre qual arquivo ser melhor, não importa muito onde vai colocar na pasta lib, depende da maneira como quer deixar organizado e separado os arquivos do seu servidor, pode colocar em algum arquivo onde tem funções novas do seu servidor (caso tenha). Mas, pode colocar em some functions.lua mesmo, acho que fica mais fácil para procurar depois.
  16. Sim, é bem simples, da para fazer de duas maneiras (que no fim da na mesma), pode ser trocando a constante do valor da porcentagem na tabela por: local potions = { [12344] = {porcentagem = math.floor(math.random(30, 40)), effect = 14}, -- ID, PORCENTAGEM E EFEITO DA POTION [12345] = {porcentagem = math.floor(math.random(30, 40)), effect = 14}, -- ID, PORCENTAGEM E EFEITO DA POTION [12346] = {porcentagem = math.floor(math.random(30, 40)), effect = 12}, -- ID, PORCENTAGEM E EFEITO DA POTION [12347] = {porcentagem = math.floor(math.random(30, 40)), effect = 13}, -- ID, PORCENTAGEM E EFEITO DA POTION [12348] = {porcentagem = math.floor(math.random(30, 40)), effect = 13}, -- ID, PORCENTAGEM E EFEITO DA POTION } Ou passando direto no parâmetro da função: doHealPlayer(cid, math.floor(math.random(30, 40)), potions[item.itemid].effect, true) Mas, a segunda maneira é indicada se você só está usando 1 potion (1 item (id)), e se só for 1 item e não usar tabela, tem que mudar o terceiro parâmetro da função para: doHealPlayer(cid, math.floor(math.random(30, 40)), 27, true) -- ID DO EFEITO DIRETO Mas, mesmo se usar só 1 item, recomendo deixar a tabela, porque se futuramente adicionar mais, é só adicionar na tabela que na função pega a potion pelo id no índice da tabela.
  17. Coloque a função no arquivo functions.lua ou some.functions.lua na pasta Data/Lib, onde preferir. Mas, coloque em algum arquivo de scripts de funções na pasta Lib, é melhor.
  18. Qual é a versão de TFS? Eu fiz um script baseado na versão de TFS 0.3.6/0.4 -- LUA -- Se você já tem o arquivo do script criado ignore o restante dessa linha e vá para o código, caso não tenha, vá em Data/Actions/Scripts e crie o arquivo potions.lua e adiciona o script: --------------- POTION QUE CURA BASEADO NA PORCENTAGEM DA VIDA MÁXIMA BY YAN18 --------------- ----- FUNÇÃO PARA CURAR O PLAYER ----- function doHealPlayer(cid, porcentagem_hp, effect, message_heal) local porcentagem = math.abs(porcentagem_hp / 100) -- PEGA O VALOR INTEIRO PASSADO DO PARÂMETRO DESEJADO COMO A PORCENTAGEM E DIVIDE POR 100 PARAR GERAR A PORCENTAGEM local life_recovered = math.floor(getCreatureMaxHealth(cid) * porcentagem) -- QUANTIDADE DE HP QUE VAI RECUPERAR doSendMagicEffect(getThingPos(cid), effect) doCreatureAddHealth(cid, life_recovered) -- CONDICIONAL PARA EXIBIR MENSAGEM EM CIMA DO PLAYER AO CURAR -- if message_heal then doCreatureSay(cid, "Life recovered...") end doPlayerSendCancel(cid, "Life recovered...") -- MENSAGEM BRANCE EM CIMA DO CONSOLE doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "You recovered " ..life_recovered.. " of your maximum life.") end --------- TABELA COM O ID, PORCENTAGEM E EFEITO DAS POTIONS --------- local potions = { [12344] = {porcentagem = 40, effect = 14}, -- ID, PORCENTAGEM E EFEITO DA POTION [12345] = {porcentagem = 40, effect = 14}, -- ID, PORCENTAGEM E EFEITO DA POTION [12346] = {porcentagem = 40, effect = 12}, -- ID, PORCENTAGEM E EFEITO DA POTION [12347] = {porcentagem = 40, effect = 13}, -- ID, PORCENTAGEM E EFEITO DA POTION [12348] = {porcentagem = 40, effect = 13}, -- ID, PORCENTAGEM E EFEITO DA POTION } ---------------------------------------- CÓDIGO ---------------------------------------- function onUse(cid, item, fromPosition, itemEx, toPosition) local verificar_batalha = true -- VARIÁVEL QUE VERIFICA SE ESTÁ EM BATALHA PARA USAR A POTION if not isCreature(cid) or not getCreatureMaster(cid) then return doPlayerSendCancel(cid, "You only can use this potion in you.") end if getCreatureHealth(cid) == getCreatureMaxHealth(cid) then return doPlayerSendCancel(cid, "You are already with full health.") end -- VERIFICA SE ESTÁ EM BATALHA -- if verificar_batalha then if getCreatureCondition(cid, CONDITION_INFIGHT) then doPlayerSendCancel(cid, "You can't use this potion during a battle.") doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "You can't use this potion during a battle.") return true end end doRemoveItem(item.uid, 1) doHealPlayer(cid, potions[item.itemid].porcentagem, potions[item.itemid].effect, true) return true end * Explicação sobre o script: Eu criei uma função que recupera vida do player de acordo com a vida máxima, ela contém quatro parâmetros, que é: criatura, porcentagem baseado na vida máxima, efeito da potion e se exibe mensagem que está curando (esse último argumento é mais estética e não muda e interfere em nada na cura), mas, caso não queira essas mensagens (em cima do player e em cima do console), lá no fim do script dentro da função onUse, mude o último parâmetro da função doHealPlayer de true para false, ficando: doHealPlayer(cid, potions[item.itemid].porcentagem, potions[item.itemid].effect, false) Em cima da função onUse tem a tabela com as potions, então no índice ([] colchetes) coloque o id da potion e na tabela dentro do id tem o valor da porcentagem e efeito da potion. No valor da porcentagem passe a quantidade direto (10, 20, 30 por exemplo) pois eu já estou criando a porcentagem dentro da função (valor dividido por 100 para criar a porcentagem), deixei bem simples para você. Então com a tabela você consegue inserir mais de uma potion, caso só queira usar 1, pode apagar a tabela e passar o id e efeito da potion direto na função doHealPlayer no segundo e terceiro parâmetro: doHealPlayer(cid, 14523, 25, true) Fiz um exemplo acima, também pode deixar só 1 potion na tabela, não tem problema! É até melhor para não correr risco de acabar pagando o que não deve, mas, nesse caso apague os elementos restantes da tabela deixando só um. E por fim, fiz uma verificação para verificar se o player está em batalha, e se estiver, não usa a potion. Caso queira mudar isso, só mudar o valor da variável verificar_batalha de true para false: local verificar_batalha = false -- XML -- Terminado a explicação sobre o script, agora é a parte do xml. Caso, já tenha a tag da potion criada, pode ignorar essa parte, mas lembrando que precisa colocar os mesmos ID das potions da tag xml na tabela do script.lua caso optou em manter a tabela. Mas, se não criou a tag xml, vamos lá! Abra o actions.xml e adicione a tag: <action itemid="12344-12348" event="script" value="potions.lua"/> Lembrando que se você está usando mais de 1 potion e os id delas não são em sequência, precisa tirar o hífen (-) da tag xml e colocar ponto e vírgula (;) para separar os id, pois com hífen é quando é mais de 1 id que são em sequência. Testa e me fala se deu algum problema. Qualquer dúvida só falar.
  19. Você também pode usar a função getItemName(uid) ou getItemNameById(itemid) para pegar o nome do item, no seu caso vai usar a função getItemNameById(itemid): local item_name = getItemNameById(getPlayerSlotItem(cid, CONST_SLOT_LEFT).itemid)
  20. Yan Oliveira

    [AJUDA] Login.lua

    O script está tentando chamar a função doUpdatePokemonsBar que está como global e não achou a função ou não foi implementada. Você copiou esse script login.lua de outra base ou algum lugar?
  21. Para adicionar level system, praticamente só possuindo as sources, o que é complicado com as bases 0.3.6 atualmente, pois, a maioria além de adaptada, é cheia de trap e erros.
  22. Coloca o script dentro de um spoiler ou da tag código para ficar mais fácil a leitura e legível. Qual é o problema do script? Qual erro dá?
  23. Yan Oliveira

    script mount

    Ele tem TFS 1.3, mas pelo que disse no post, essa TFS tem a versão com adaptação de Client para 8.60. Então, ele tem source provavelmente.
  24. Vai dar muito trabalho para fazer isso, recomendo trocar de base.
  25. Você está falando o ícone do portrait dele ou da pokeball?
  • Quem Está Navegando   0 membros estão online

    • Nenhum usuário registrado visualizando esta página.
×
×
  • Criar Novo...