Ir para conteúdo

Scorpiondaniel

Membro
  • Registro em

  • Última visita

Histórico de Curtidas

  1. Gostei
    Scorpiondaniel deu reputação a Toruk em [Ajuda] Modificar script de mineração!   
    Entedi, só mudar o target:transform(12706), por:
    target:remove() Game.createItem(12706, 1, toPosition)  
    Script inteiro:
    local rewards = { { item = 8298, count = 1, chance = 50 }, { item = 8299, count = 1, chance = 50 }, { item = 8301, count = 1, chance = 50 }, { item = 8302, count = 1, chance = 50 }, { item = 8303, count = 1, chance = 50 }, { item = 8310, count = 1, chance = 50 }, { item = 9971, count = 1, chance = 50 }, { item = 5944, count = 1, chance = 100 } } local storage = 5000 local delay_timer = 5 function onUse(player, item, fromPosition, target, toPosition, isHotkey) local cur_time, cur_storage = os.time(), player:getStorageValue(storage) if cur_storage > cur_time then player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "You can mining again in " .. os.date("!%Hh %Mm %Ss", cur_storage - cur_time) .. ".") return true end local function addBackStone() local tRocks = getTileItemById(toPosition, 12706) if tRocks then doRemoveItem(tRocks.uid, 1) local stones = {12705} local stone = Game.createItem(stones[math.random(#stones)], 1, toPosition) if stone then stone:setActionId(40041) end end end if not target then return false end if not target:isItem() then return false end if target.actionid ~= 40041 then local pos = player:getPosition() player:sendTextMessage(MESSAGE_EVENT_ADVANCE, 'You cannot use it here.') return false end if target.actionid == 40041 then local ran = math.random(100) if ran <= 10 then toPosition:sendMagicEffect(3) target:remove() Game.createItem(12706, 1, toPosition) addEvent(addBackStone, 120000) return true end end local text = "You have found " for i = 1, #rewards do local rand = math.random(1000) if rand <= rewards[i].chance then player:addItem(rewards[i].item, rewards[i].count) if text ~= "You have found " then text = text .. ", " end text = text .. rewards[i].count .. " " .. ItemType(rewards[i].item):getName() end end if text == "You have found " then text = text .. "nothing" end player:sendTextMessage(36, text .. ".") cur_time = cur_time + delay_timer player:setStorageValue(storage, cur_time) return true end  
  2. Gostei
    Scorpiondaniel deu reputação a Toruk em [Ajuda] Modificar script de mineração!   
    Da uma testada ai. Eu acho q vai funcionar assim.
     
    local rewards = { { item = 8298, count = 1, chance = 50 }, { item = 8299, count = 1, chance = 50 }, { item = 8301, count = 1, chance = 50 }, { item = 8302, count = 1, chance = 50 }, { item = 8303, count = 1, chance = 50 }, { item = 8310, count = 1, chance = 50 }, { item = 9971, count = 1, chance = 50 }, { item = 5944, count = 1, chance = 100 } } local storage = 5000 local delay_timer = 5 function onUse(player, item, fromPosition, target, toPosition, isHotkey) local cur_time, cur_storage = os.time(), player:getStorageValue(storage) if cur_storage > cur_time then player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "You can mining again in " .. os.date("!%Hh %Mm %Ss", cur_storage - cur_time) .. ".") return true end local function addBackStone() local tRocks = getTileItemById(toPosition, 12706) if tRocks then doRemoveItem(tRocks.uid, 1) local stones = {12705} local stone = Game.createItem(stones[math.random(#stones)], 1, toPosition) stone:setActionId(40041) end end if not target then return false end if not target:isItem() then return false end if target.actionid ~= 40041 then local pos = player:getPosition() player:sendTextMessage(MESSAGE_EVENT_ADVANCE, 'You cannot use it here.') return false end if target.actionid == 40041 then local ran = math.random(100) if ran <= 10 then toPosition:sendMagicEffect(3) target:transform(12706) addEvent(addBackStone, 120000) return true end end local text = "You have found " for i = 1, #rewards do local rand = math.random(1000) if rand <= rewards[i].chance then player:addItem(rewards[i].item, rewards[i].count) if text ~= "You have found " then text = text .. ", " end text = text .. rewards[i].count .. " " .. ItemType(rewards[i].item):getName() end end if text == "You have found " then text = text .. "nothing" end player:sendTextMessage(36, text .. ".") cur_time = cur_time + delay_timer player:setStorageValue(storage, cur_time) return true end  
  3. Gostei
    Tmj man. Mas infelizmente eu não consigo ficar ajudando em pv. 
    Entro aqui de vez em nunca pra ajudar alguém por ai, até porque eu já fui um adm que fazia as perguntas e não sabia nada de lua.
     
    Mas é isso ai. Desejo sucesso com o seu server! Abraço man.
  4. Gostei
    Mano você é foda! Me manda seu discord por favor!
  5. Gostei
    Tem, basta criar um "local" para determinar a somatória de proteção dos itens e ir acrescentando conforme o item, vou dar um exemplo em seu script. Usei 3 exemplos: armor, legs e backpack.
     
    Raciocínio do script: O se o player n tiver nenhum dos itens, vai passar "armorProtection = 1" para o final do scripts e vai tomar o dano multiplicado por 1, que seria o dano por inteiro. Conforme ele vai tendo as partes do set, ele vai diminuindo o "armorProtection em 0,1", isso fará com que o dano final seja multiplicado por 1 valor menor ainda (Ex: se tiver 2 itens, vai ser multiplicado por 0.8, ou seja, 80% do valor total).
     
    Para adicionar mais partes da armadura é só ir seguindo o mesmo raciocínio e ir colocando conforme desejar. O nome de cada slot pode ser visto em creature.h do seu tfs, mas em geral, são sempre os mesmos: https://github.com/otland/forgottenserver/blob/master/src/creature.h#L24-L41
     
    local areas = { {leftUpPoint = {x = 31815, y = 32206, z = 7}, rightDownPoint = {x = 32070, y = 32425, z = 7}, minHit = 300, maxHit = 600, armorID = 15000, legsID = 15001, backpackID = 15002, }, } function onThink(interval, lastExecution, thinkInterval) for id, arr in pairs(areas) do for x = arr.leftUpPoint.x, arr.rightDownPoint.x do for y = arr.leftUpPoint.y, arr.rightDownPoint.y do for z = arr.leftUpPoint.z, arr.rightDownPoint.z do local pos = {x = x, y = y, z = z} local uid = getTopCreature(pos).uid if isPlayer(uid) then local player = Player(uid) --- START ARMOR PROTECTION --- local armorProtection = 1 -- 100% damage --- Check Armor --- local armor = player:getSlotItem(CONST_SLOT_ARMOR) if armor and armor:getId() == arr.armorID then armorProtection = armorProtection - 0.1 -- remove 10% end --- Check Legs --- local legs = player:getSlotItem(CONST_SLOT_LEGS) if legs and legs:getId() == arr.legsID then armorProtection = armorProtection - 0.1 -- remove 10% end --- Check Backpack --- local bp = player:getSlotItem(CONST_SLOT_BACKPACK) if bp and bp:getId() == arr.backpackID then armorProtection = armorProtection - 0.1 -- remove 10% end --- END PROTECTION --- local finalDamage = math.random(arr.minHit, arr.maxHit) doCreatureAddHealth(uid, -finalDamage*armorProtection) doSendMagicEffect(pos, 8) end end end end end return true end  
  6. Gostei
    Exemplo de como fazer um "check" de armadura:
    Sendo 2500 o id do item que está no slot da armor e 0.5 a porcentagem do dano que o player irá receber (nesse caso, 50%).
     
    local player = Player(uid) local random = math.random(arr.minHit, arr.maxHit) local armor = player:getSlotItem(CONST_SLOT_ARMOR) if armor and armor:getId() == 2500 then doCreatureAddHealth(uid, -random*0.5) doSendMagicEffect(pos, 8) return true end  
  7. Curtir
    Scorpiondaniel deu reputação a L3K0T em Armadura que diminui o dano recebido de area!   
    tmj! é que estou sem tempo trabalhando muito, mais vou se consigo resolver o seu problema o mais rápido possível.
  8. Curtir
    Scorpiondaniel deu reputação a L3K0T em Armadura que diminui o dano recebido de area!   
    vou fazer e te respondo até amanhã ou depois de amanhã preciso fazer testes.
  9. Haha
    Scorpiondaniel recebeu reputação de L3K0T em Armadura que diminui o dano recebido de area!   
    Não sabe como fico grato! Obrigado desde já!
  10. Gostei
    Scorpiondaniel recebeu reputação de L3K0T em Armadura que diminui o dano recebido de area!   
    Quero criar uma armadura que diminui em porcentagem o dano desse script:
    local areas = {     {leftUpPoint = {x = 31815, y = 32206, z = 7}, rightDownPoint = {x = 32070, y = 32425, z = 7}, minHit = 300, maxHit = 600}, } function onThink(interval, lastExecution, thinkInterval)     for id, arr in pairs(areas) do         for x = arr.leftUpPoint.x, arr.rightDownPoint.x do             for y = arr.leftUpPoint.y, arr.rightDownPoint.y do                 for z = arr.leftUpPoint.z, arr.rightDownPoint.z do                     local pos = {x = x, y = y, z = z}                     local uid = getTopCreature(pos).uid                     if isPlayer(uid) then                         local random = math.random(arr.minHit, arr.maxHit)                         doCreatureAddHealth(uid, -random)                         doSendMagicEffect(pos, 8)                     end                 end             end         end     end     return true end <globalevent name="think" interval="3000" script="others/areahit.lua"/>
  11. Curtir
    Scorpiondaniel deu reputação a Belmont em Armadura que diminui o dano recebido de area!   
    Este tópico foi movido para a seção de Suporte Otserv.
  12. Gostei
    Scorpiondaniel deu reputação a Vodkart em Ajuda com getslot item   
    local slots = {CONST_SLOT_HEAD, CONST_SLOT_ARMOR, CONST_SLOT_LEGS, CONST_SLOT_FEET, CONST_SLOT_LEFT, CONST_SLOT_RIGHT} for _, i in pairs(slots) do local check = getPlayerSlotItem(cid, i) if check.uid ~= 0 then doPlayerSendTextMessage(cid, 24, "Você não pode fazer está ação com algum item equipado! Retire todos os seus itens e coloque em sua backpack.") return true end end  
  13. Gostei
    Scorpiondaniel deu reputação a Vodkart em Quest diaria por IP   
    function onSay(cid, words, param) local storage, ip = 18000, getPlayerIp(cid) return doPlayerSendTextMessage(cid, MESSAGE_EVENT_DEFAULT, getIpStorageValue(ip, storage) - os.time() <= 0 and "Voce esta habilitado para receber sua recompensa." or "Espere " .. timeString(getIpStorageValue(ip, storage) - os.time()) .. " para pegar um novo item!") end  
  14. Gostei
    Scorpiondaniel deu reputação a zipter98 em (Resolvido)[Pedido] Dar dano em determinaria área   
    Troca:

    if isCreature(uid) then por: if not isMonster(uid) then
  15. Gostei
    Scorpiondaniel deu reputação a Snowsz em (Resolvido)[Pedido] Dar dano em determinaria área   
    local areas = { {leftUpPoint = {x = 1, y = 2, z = 3}, rightDownPoint = {x = 6, y = 7, z = 8}, minHit = 100, maxHit = 500, effect = 30}, } function onThink(interval, lastExecution, thinkInterval) for id, arr in pairs(areas) do for x = arr.leftUpPoint.x, arr.rightDownPoint.x do for y = arr.leftUpPoint.y, arr.rightDownPoint.y do for z = arr.leftUpPoint.z, arr.rightDownPoint.z do local pos = {x = x, y = y, z = z} local uid = getTopCreature(pos).uid doSendMagicEffect(pos, arr.effect) if isCreature(uid) then local random = math.random(arr.minHit, arr.maxHit) doCreatureAddHealth(uid, -random) doSendAnimatedText(pos,"-"..random, 180) end end end end end return true end
  16. Gostei
    Scorpiondaniel deu reputação a Snowsz em (Resolvido)[Pedido] Dar dano em determinaria área   
    Tenta isso, crie um arquivo em data/globalevents/scripts com o nome de areahit.lua e ponha isso dentro:
     
    local areas = { {leftUpPoint = {x = 1, y = 2, z = 3}, rightDownPoint = {x = 6, y = 7, z = 8}, minHit = 100, maxHit = 500, effect = 30}, } function onThink(interval, lastExecution, thinkInterval) for id, arr in pairs(areas) do for x = arr.leftUpPoint.x, arr.rightDownPoint.x do for y = arr.leftUpPoint.y, arr.rightDownPoint.y do for z = arr.leftUpPoint.z, arr.rightDownPoint.z do local pos = {x = x, y = y, z = z} local uid = getTopCreature(pos).uid doSendMagicEffect(pos, arr.effect) if isCreature(uid) then doCreatureAddHealth(uid, -(math.random(arr.minHit, arr.maxHit))) end end end end end return true end Em globalevents.xml adicione isso:
     
    <globalevent name="think" interval="30000" event="script" value="areahit.lua"/> Modifique o intervalo a seu gosto.
     
     
    Configuração do script:
    Modifique primeiro essa linha:
     
    {leftUpPoint = {x = 1, y = 2, z = 3}, rightDownPoint = {x = 6, y = 7, z = 8}, minHit = 100, maxHit = 500, effect = 30}, • leftUpPoint coloque as coordenadas do ponto superior esquerdo da área que você quer que de os danos.
    • rightDownPoint coloque as posições do canto inferior direito.
    • minHit coloque o dano mínimo.
    • maxHit coloque o dano máximo.
    • effect coloque o id do efeito que você quer.
     
     
    Após isso, é só copiar essa linha inteira e ir colocando e configurando mais áreas a seu gosto, exemplo:
     
    local areas = { {leftUpPoint = {x = 1, y = 2, z = 3}, rightDownPoint = {x = 6, y = 7, z = 8}, minHit = 100, maxHit = 500, effect = 30}, {leftUpPoint = {x = 178978, y = 213, z = 5}, rightDownPoint = {x = 612321312, y = 789890, z = 8}, minHit = 17800, maxHit = 4569000, effect = 20}, {leftUpPoint = {x = 567856, y = 123123, z = 6}, rightDownPoint = {x = 6567778, y = 7798, z = 10}, minHit = 19500, maxHit = 7890000, effect = 4}, }
  17. Gostei
    Scorpiondaniel deu reputação a ChavesBRTibia em Como colocar Bank Balance no site?   
    Preciso que quando o player depositar as moedas no Bank System dentro do jogo, apareça no website. Alguém sabe como fazer isso?
     
     
     
     
  18. Gostei
    Scorpiondaniel deu reputação a Tomaxx em Tower Defense Event [TFS 1.0 / 1.1]   
    não funciona em TFS 1.0 ?
  19. Gostei
    Scorpiondaniel deu reputação a luanluciano93 em Caracteres de Account   
    Simples, procure por essa parte = "onkeyup="checkAccount();" VALUE="" SIZE=30 MAXLENGTH=50>"

    Altere para isso =  "onkeyup="checkAccount();" VALUE="" SIZE=30 MAXLENGTH=10>"

    Espero ter ajudado ...

Informação Importante

Confirmação de Termo