Ir para conteúdo

luanluciano93

Héroi
  • Registro em

  • Última visita

Tudo que luanluciano93 postou

  1. Atualizado do Ubuntu 20.04 para Ubuntu 22.04.
  2. teria que modifica-lo
  3. Quem puder colocar no github para analisarmos ... valeu
  4. não estou, abraços
  5. Se tiver tudo isso ai mesmo, é um ótimo servidor, parabéns por compartilhar ...
  6. Aquele meu reward system é baseado nisso.
  7. O fórum é tão auto explicativo e as pessoas não conseguem entender, pqp Como você imagina que alguém vai te ajudar sem o código cara? mano do céu
  8. if targetTier > 0 and rand > chance[targetTier] then
  9. Nessa versão de TFS não sei como fazer isso, sei apenas que deathList[1] é quem deu o último ataque e deathList[2] quem deu mais damage.
  10. local forge = Action() local count = 1 local porcentagem = 100 -- porcentagem de chance de forjar local chance = { -- cada id significa 10% de chance de acerto [1] = 100, [2] = 90, [3] = 80, [4] = 70, [5] = 60, [6] = 50, [7] = 40, [8] = 30, [9] = 20, [10] = 10 } function forge.onUse(player, item, fromPosition, target, toPosition, isHotkey) if not target or not target:isItem() then return false end if not target:remove(count) then player:sendTextMessage(MESSAGE_STATUS_SMALL, "Voce nao tem a quantidade de items necessaria para forjar.") player:getPosition():sendMagicEffect(CONST_ME_POFF) return false end local rand = math.random(100) local targetTier = target:getTier() and target:getTier() or 0 if rand > chance[targetTier] then player:sendTextMessage(MESSAGE_STATUS_SMALL, "Voce forja falhou.") player:getPosition():sendMagicEffect(CONST_ME_POFF) return false end if targetTier > 0 then if target:setTier(targetTier + 1) then player:sendTextMessage(MESSAGE_STATUS_DEFAULT, "Parabens, o item foi forjado.") player:getPosition():sendMagicEffect(50) else player:sendTextMessage(MESSAGE_STATUS_SMALL, "Este item nao pode ser forjado.") player:getPosition():sendMagicEffect(CONST_ME_POFF) return false end else if target:setTier(1) then player:sendTextMessage(MESSAGE_STATUS_DEFAULT, "Parabens, o item foi forjado.") player:getPosition():sendMagicEffect(50) else player:sendTextMessage(MESSAGE_STATUS_SMALL, "Este item nao pode ser forjado.") player:getPosition():sendMagicEffect(CONST_ME_POFF) return false end end return true end forge:id(24963) forge:register()
  11. É o que eu disse aqui: Você tem que ver uma forma de como fazer isso ... quais os tipos de itens aceitar ou não, eu não conheço o sistema, já te dei quase tudo pronto.
  12. local forge = Action() local count = 1 local porcentagem = 100 -- porcentagem de chance de forjar local chance = { -- cada id significa 10% de chance de acerto [1] = 100, [2] = 90, [3] = 80, [4] = 70, [5] = 60, [6] = 50, [7] = 40, [8] = 30, [9] = 20, [10] = 10 } function forge.onUse(player, item, fromPosition, target, toPosition, isHotkey) if not target or not target:isItem() then return false end local targetId = target:getId() local targetTier = target:getTier() if not targetTier then player:sendTextMessage(MESSAGE_STATUS_SMALL, "Este nao e um item Forjavel.") player:getPosition():sendMagicEffect(CONST_ME_POFF) return true end if not target:remove(count) then player:sendTextMessage(MESSAGE_STATUS_SMALL, "Voce nao tem a quantidade de items necessaria para forjar") player:getPosition():sendMagicEffect(CONST_ME_POFF) return true end local rand = math.random(100) local chanceTier = target:getTier() and target:getTier() or 0 if rand > chance[chanceTier] then player:sendTextMessage(MESSAGE_STATUS_SMALL, "Voce forja falhou") player:getPosition():sendMagicEffect(CONST_ME_POFF) return true end if target:setTier(targetTier + 1) then player:sendTextMessage(MESSAGE_STATUS_DEFAULT, "Parabens, o item foi forjado.") player:getPosition():sendMagicEffect(50) end return true end forge:id(24963) forge:register()
  13. local items = {itemid = 2160, count = 50, chance = 100} local town_id = 12 function onDeath(cid, corpse, deathList) local chest = doCreateItemEx(2595) doAddContainerItem(chest, items.itemid, items.count) for i = 1, #deathList do if isPlayer(deathList[i]) then doPlayerSendTextMessage(deathList[i], MESSAGE_INFO_DESCR, "Parabens! Voce matou o " .. getCreatureName(cid) .. "!") doPlayerSendMailByName(getPlayerName(deathList[i]), chest, town_id) end end return true end
  14. ótimo ...
  15. - Você não precisar fazer uma lista dos items usados na forja (local craft.items = {}) pq no caso ele será o item usado: function forget.onUse(player, item, fromPosition, target, itemEx, toPosition) - Você precisa usar um item que abre a opção de "targetar" outro item (aquela setinha quando clica com o botão direito), isso é de cada item e ele fica definido dentro do cliente e só pode ser alterado pelo object builder, caso seu cliente seja customizado. - Antes de remover o item 100x usado na forja, você precisa verificar se o item é válido para forjar. Aqui no primeiro script que você colocou não tem a verificação de é um item válido para forjar, e particularmente, não sei como funciona o sistema ... também não sei se as suas sources faz essa verificação ... (faça um teste, tente criar um item "meat" tier 10, por exemplo)
  16. Primeiramente você deve verificar que a função usada será uma OnUse, ou seja, ela ativará "ao usar" um item (neste caso). Procure a estrutura da função que iremos usar no tutorial abaixo do projeto TFS: https://github.com/otland/forgottenserver/wiki/Revscriptsys Basicamente seu script terá essa composição: funcao AoUsar() - verificação se você tem 100x do item usado - verificação se o target é um item válido - condição para remover o item usado 100x - fazer um random da porcentagem de acerto - se o random por favorável, verificar o nível Tier do item target e somar 1 nível fim Eu poderia fazer para você, mas nenhum de nós dois ganharíamos nada com isso, portanto, procure nos scripts OnUse (actions) exemplos dessas condições, como verificar se o jogador tem X item em certa quantidade, verificar o target do item, função para verificar se tal ITEM ID é realmente um ITEM válido (no caso, creio que seja HELMET, ou ARMOR, ou LEGS, ou BOOTS, ou SHIELD?!, ou o que mais quiser ... ), condição para remover X item em certa quantidade, random de porcentagem de acerto, funções de retornar o valor atual do Tier do item e função para trocar o nível atual ... acho que é isso.
  17. troca isso ai por local AccForIp=
  18. Na verdade, a regra aceita 4 jogadores por IP, então a mensagem iria ao 4 jogador ... local maxAccPorIp = 4 local creatureevent = CreatureEvent("anti_mc") function creatureevent.onLogin(player) local mc = 0 for _, check in ipairs(Game.getPlayers()) do if player:getIp() == check:getIp() then mc = mc + 1 if mc > AccForIp then return false end end end if mc == AccForIp then player:sendTextMessage(MESSAGE_STATUS_CONSOLE_RED, "Você atingiu o limite máximo de " .. AccForIp .. " jogadores por IP.") end return true end creatureevent:register()
  19. No caso, a função onLogin, se ela retornar falso (return false) o jogador nem entra no jogo. No exemplo que você colocou, o personagem entra no jogo e, assim, é criado um AddEvent para desconectar o jogador após alguns segundos. O problema é que toda essa preocupação que os OT Admins têm de bloquear o acesso de mais de 4 jogador com o mesmo IP é por conta de regras da OTSERVLIST (que pode te dar BAN de 30 dias da lista, caso isso aconteça) Não sei ao certo a forma que a OTSERVLIST faz essa verificação, então não posso dizer que você pode liberar a entrada de mais de 4 jogador por IP mesmo que por alguns segundos ... Espero que tenha entendido.
  20. local maxAccPorIp = 4 local creatureevent = CreatureEvent("anti_mc") function creatureevent.onLogin(player) local mc = 0 for _, check in ipairs(Game.getPlayers()) do if player:getIp() == check:getIp() then mc = mc + 1 if mc > maxAccPorIp then return false end end end return true end creatureevent:register()
  21. Deve estar em revscript ... data/scripts/ ....

Informação Importante

Confirmação de Termo