
Scorpiondaniel
Membro
-
Registro em
-
Última visita
Histórico de Curtidas
-
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
-
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
-
Scorpiondaniel deu reputação a Toruk em [Ajuda] Criar uma armadura que diminui em porcentagem o dano desse script: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.
-
Scorpiondaniel recebeu reputação de Toruk em [Ajuda] Criar uma armadura que diminui em porcentagem o dano desse script:Mano você é foda! Me manda seu discord por favor!
-
Scorpiondaniel deu reputação a Toruk em [Ajuda] Criar uma armadura que diminui em porcentagem o dano desse script: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
-
Scorpiondaniel deu reputação a Toruk em [Ajuda] Criar uma armadura que diminui em porcentagem o dano desse script: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
-
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.
-
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.
-
Scorpiondaniel recebeu reputação de L3K0T em Armadura que diminui o dano recebido de area!Não sabe como fico grato! Obrigado desde já!
-
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"/>
-
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.
-
Scorpiondaniel deu reputação a Vodkart em Ajuda com getslot itemlocal 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
-
Scorpiondaniel deu reputação a Vodkart em Quest diaria por IPfunction 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
-
Scorpiondaniel deu reputação a zipter98 em (Resolvido)[Pedido] Dar dano em determinaria áreaTroca:
if isCreature(uid) then por: if not isMonster(uid) then -
Scorpiondaniel deu reputação a Snowsz em (Resolvido)[Pedido] Dar dano em determinaria árealocal 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
-
Scorpiondaniel deu reputação a Snowsz em (Resolvido)[Pedido] Dar dano em determinaria áreaTenta 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}, } -
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?
-
Scorpiondaniel deu reputação a Tomaxx em Tower Defense Event [TFS 1.0 / 1.1]não funciona em TFS 1.0 ?
-
Scorpiondaniel deu reputação a luanluciano93 em Caracteres de AccountSimples, procure por essa parte = "onkeyup="checkAccount();" VALUE="" SIZE=30 MAXLENGTH=50>"
Altere para isso = "onkeyup="checkAccount();" VALUE="" SIZE=30 MAXLENGTH=10>"
Espero ter ajudado ...