Ir para conteúdo

Vodkart

Héroi
  • Registro em

Tudo que Vodkart postou

  1. function onSay(cid, words, param) local charge_price = 1 -- quantidade por carga do item abaixo local item_id = 2159 -- id do item que será removido local slotShield = nil local slotArmor = nil local slotLegs = nil local slotHelmet = nil local slotBoots = nil local slotWeapon = nil local slots = { [1] = {slot=slotHelmet, lib=helmets}, [4] = {slot=slotArmor, lib=armors}, [5] = {slot=slotShield, lib=shields}, [6] = {slot=slotShield, lib=shields}, [7] = {slot=slotLegs, lib=legs}, [8] = {slot=slotBoots, lib=boots} } if weapons[getPlayerSlotItem(cid, CONST_SLOT_RIGHT).itemid] then slotWeapon = CONST_SLOT_RIGHT elseif weapons[getPlayerSlotItem(cid, CONST_SLOT_LEFT).itemid] then slotWeapon = CONST_SLOT_LEFT end if shields[getPlayerSlotItem(cid, CONST_SLOT_RIGHT).itemid] then slotShield = CONST_SLOT_RIGHT elseif shields[getPlayerSlotItem(cid, CONST_SLOT_LEFT).itemid] then slotShield = CONST_SLOT_LEFT end local price = 0 if param == "weapon" then if slotWeapon ~= nil then if (getItemAttribute(getPlayerSlotItem(cid, slotWeapon).uid, "Charges") == "Broken") then price = (weapons[getPlayerSlotItem(cid, slotWeapon).itemid].charge) else price = ((weapons[getPlayerSlotItem(cid, slotWeapon).itemid].charge) - (getItemAttribute(getPlayerSlotItem(cid, slotWeapon).uid, "Charges"))) end if doPlayerRemoveItem(cid, item_id, price*charge_price) then doItemSetAttribute(getPlayerSlotItem(cid, slotWeapon).uid, "Charges", weapons[getPlayerSlotItem(cid, slotWeapon).itemid].charge) setItemName(getPlayerSlotItem(cid, slotWeapon).uid, getItemNameById(getPlayerSlotItem(cid, slotWeapon).itemid)..' [Dur: '.. (getItemAttribute(getPlayerSlotItem(cid, slotWeapon).uid, "Charges")) ..'/'.. weapons[getPlayerSlotItem(cid, slotWeapon).itemid].charge ..']') doPlayerSendTextMessage(cid, 22, "Sua weapon foi reparada.") doSendMagicEffect(getPlayerPosition(cid), 29) else doPlayerSendTextMessage(cid, 23, "Desculpe mas você não tem "..(price*charge_price).."x "..getItemNameById(item_id).." para reparar sua weapon") return true end else doPlayerSendTextMessage(cid, 23, "Seu slot de weapon esta vazio.") end return true end if param == "shield" then if slotShield ~= nil then if (getItemAttribute(getPlayerSlotItem(cid, slotShield).uid, "Charges") == "Broken") then price = (shields[getPlayerSlotItem(cid, slotShield).itemid].charge) else price = ((shields[getPlayerSlotItem(cid, slotShield).itemid].charge) - (getItemAttribute(getPlayerSlotItem(cid, slotShield).uid, "Charges"))) end if doPlayerRemoveItem(cid, item_id, price*charge_price) then doItemSetAttribute(getPlayerSlotItem(cid, slotShield).uid, "Charges", shields[getPlayerSlotItem(cid, slotShield).itemid].charge) setItemName(getPlayerSlotItem(cid, slotShield).uid, getItemNameById(getPlayerSlotItem(cid, slotShield).itemid)..' [Dur: '.. (getItemAttribute(getPlayerSlotItem(cid, slotShield).uid, "Charges")) ..'/'.. shields[getPlayerSlotItem(cid, slotShield).itemid].charge ..']') setItemDefense(getPlayerSlotItem(cid, slotShield).uid, shields[getPlayerSlotItem(cid, slotShield).itemid].def) doPlayerSendTextMessage(cid, 22, "Seu shield foi reparado.") doSendMagicEffect(getPlayerPosition(cid), 29) else doPlayerSendTextMessage(cid, 23, "Desculpe mas você não tem "..(price*charge_price).."x "..getItemNameById(item_id).." para reparar seu shield.") return true end else doPlayerSendTextMessage(cid, 23, "Seu slot de shield esta vazio.") end return true end if param == "armor" then i = 4 if slots[i].lib[getPlayerSlotItem(cid, i).itemid] then slots[i].slot = i if (getItemAttribute(getPlayerSlotItem(cid, i).uid, "Charges") == "Broken") then price = (slots[i].lib[getPlayerSlotItem(cid, i).itemid].charge) else price = ((slots[i].lib[getPlayerSlotItem(cid, i).itemid].charge) - (getItemAttribute(getPlayerSlotItem(cid, i).uid, "Charges"))) end if doPlayerRemoveItem(cid, item_id, price*charge_price) then doItemSetAttribute(getPlayerSlotItem(cid, i).uid, "Charges", slots[i].lib[getPlayerSlotItem(cid, i).itemid].charge) setItemName(getPlayerSlotItem(cid, i).uid, getItemNameById(getPlayerSlotItem(cid, i).itemid)..' [Dur: '.. (getItemAttribute(getPlayerSlotItem(cid, i).uid, "Charges")) ..'/'.. slots[i].lib[getPlayerSlotItem(cid, i).itemid].charge ..']') setItemArmor(getPlayerSlotItem(cid, i).uid, slots[i].lib[getPlayerSlotItem(cid, i).itemid].arm) doPlayerSendTextMessage(cid, 22, "Seu armor foi reparado.") doSendMagicEffect(getPlayerPosition(cid), 29) else doPlayerSendTextMessage(cid, 23, "Desculpe mas você não tem "..(price*charge_price).."x "..getItemNameById(item_id).." para reparar sua armor") return true end else doPlayerSendTextMessage(cid, 23, "Seu slot de armor esta vazio.") end return true end if param == "legs" then i = 7 if slots[i].lib[getPlayerSlotItem(cid, i).itemid] then slots[i].slot = i if (getItemAttribute(getPlayerSlotItem(cid, i).uid, "Charges") == "Broken") then price = (slots[i].lib[getPlayerSlotItem(cid, i).itemid].charge) else price = ((slots[i].lib[getPlayerSlotItem(cid, i).itemid].charge) - (getItemAttribute(getPlayerSlotItem(cid, i).uid, "Charges"))) end if doPlayerRemoveItem(cid, item_id, price*charge_price) then doItemSetAttribute(getPlayerSlotItem(cid, i).uid, "Charges", slots[i].lib[getPlayerSlotItem(cid, i).itemid].charge) setItemName(getPlayerSlotItem(cid, i).uid, getItemNameById(getPlayerSlotItem(cid, i).itemid)..' [Dur: '.. (getItemAttribute(getPlayerSlotItem(cid, i).uid, "Charges")) ..'/'.. slots[i].lib[getPlayerSlotItem(cid, i).itemid].charge ..']') setItemArmor(getPlayerSlotItem(cid, i).uid, slots[i].lib[getPlayerSlotItem(cid, i).itemid].arm) doPlayerSendTextMessage(cid, 22, "Sua legs foi reparada.") doSendMagicEffect(getPlayerPosition(cid), 29) else doPlayerSendTextMessage(cid, 23, "Desculpe mas você não tem "..(price*charge_price).."x "..getItemNameById(item_id).." para reparar sua legs.") return true end else doPlayerSendTextMessage(cid, 23, "Seu slot de legs esta vazio.") end return true end if param == "boots" then i = 8 if slots[i].lib[getPlayerSlotItem(cid, i).itemid] then slots[i].slot = i if (getItemAttribute(getPlayerSlotItem(cid, i).uid, "Charges") == "Broken") then price = (slots[i].lib[getPlayerSlotItem(cid, i).itemid].charge) else price = ((slots[i].lib[getPlayerSlotItem(cid, i).itemid].charge) - (getItemAttribute(getPlayerSlotItem(cid, i).uid, "Charges"))) end if doPlayerRemoveItem(cid, item_id, price*charge_price) then doItemSetAttribute(getPlayerSlotItem(cid, i).uid, "Charges", slots[i].lib[getPlayerSlotItem(cid, i).itemid].charge) setItemName(getPlayerSlotItem(cid, i).uid, getItemNameById(getPlayerSlotItem(cid, i).itemid)..' [Dur: '.. (getItemAttribute(getPlayerSlotItem(cid, i).uid, "Charges")) ..'/'.. slots[i].lib[getPlayerSlotItem(cid, i).itemid].charge ..']') setItemArmor(getPlayerSlotItem(cid, i).uid, slots[i].lib[getPlayerSlotItem(cid, i).itemid].arm) doPlayerSendTextMessage(cid, 22, "Sua boots foi reparada.") doSendMagicEffect(getPlayerPosition(cid), 29) else doPlayerSendTextMessage(cid, 23, "Desculpe mas você não tem "..(price*charge_price).."x "..getItemNameById(item_id).." para reparar sua bota.") return true end else doPlayerSendTextMessage(cid, 23, "Seu slot de boots esta vazio.") end return true end if param == "helmet" then i = 1 if slots[i].lib[getPlayerSlotItem(cid, i).itemid] then slots[i].slot = i if (getItemAttribute(getPlayerSlotItem(cid, i).uid, "Charges") == "Broken") then price = (slots[i].lib[getPlayerSlotItem(cid, i).itemid].charge) else price = ((slots[i].lib[getPlayerSlotItem(cid, i).itemid].charge) - (getItemAttribute(getPlayerSlotItem(cid, i).uid, "Charges"))) end if doPlayerRemoveItem(cid, item_id, price*charge_price) then doItemSetAttribute(getPlayerSlotItem(cid, i).uid, "Charges", slots[i].lib[getPlayerSlotItem(cid, i).itemid].charge) setItemName(getPlayerSlotItem(cid, i).uid, getItemNameById(getPlayerSlotItem(cid, i).itemid)..' [Dur: '.. (getItemAttribute(getPlayerSlotItem(cid, i).uid, "Charges")) ..'/'.. slots[i].lib[getPlayerSlotItem(cid, i).itemid].charge ..']') setItemArmor(getPlayerSlotItem(cid, i).uid, slots[i].lib[getPlayerSlotItem(cid, i).itemid].arm) doPlayerSendTextMessage(cid, 22, "Seu helmet foi reparado.") doSendMagicEffect(getPlayerPosition(cid), 29) else doPlayerSendTextMessage(cid, 23, "Desculpe mas você não tem "..(price*charge_price).."x "..getItemNameById(item_id).." para reparar sua bota") return true end else doPlayerSendTextMessage(cid, 23, "Seu slot de helmet esta vazio.") end return true end local pricetotal = 0 for i=1, 8 do if slots[i] ~= nil then if slots[i].lib[getPlayerSlotItem(cid, i).itemid] then slots[i].slot = i if (getItemAttribute(getPlayerSlotItem(cid, i).uid, "Charges") == "Broken") then pricetotal = ((slots[i].lib[getPlayerSlotItem(cid, i).itemid].charge) + pricetotal) else pricetotal = (((slots[i].lib[getPlayerSlotItem(cid, i).itemid].charge) - (getItemAttribute(getPlayerSlotItem(cid, i).uid, "Charges"))) + pricetotal) end end end end if slotWeapon ~= nil then if (getItemAttribute(getPlayerSlotItem(cid, slotWeapon).uid, "Charges") == "Broken") then pricetotal = ((weapons[getPlayerSlotItem(cid, slotWeapon).itemid].charge) + pricetotal) else pricetotal = (((weapons[getPlayerSlotItem(cid, slotWeapon).itemid].charge) - (getItemAttribute(getPlayerSlotItem(cid, slotWeapon).uid, "Charges"))) + pricetotal) end end if doPlayerRemoveItem(cid, item_id, pricetotal*charge_price) then for i=1, 8 do if slots[i] ~= nil then if slots[i].lib[getPlayerSlotItem(cid, i).itemid] then slots[i].slot = i if isShield(getPlayerSlotItem(cid, i).uid) then setItemDefense(getPlayerSlotItem(cid, i).uid, slots[i].lib[getPlayerSlotItem(cid, i).itemid].def) elseif not isWeapon(getPlayerSlotItem(cid, i).uid) then setItemArmor(getPlayerSlotItem(cid, i).uid, slots[i].lib[getPlayerSlotItem(cid, i).itemid].arm) end doItemSetAttribute(getPlayerSlotItem(cid, i).uid, "Charges", slots[i].lib[getPlayerSlotItem(cid, i).itemid].charge) setItemName(getPlayerSlotItem(cid, i).uid, getItemNameById(getPlayerSlotItem(cid, i).itemid)..' [Dur: '.. (getItemAttribute(getPlayerSlotItem(cid, i).uid, "Charges")) ..'/'.. slots[i].lib[getPlayerSlotItem(cid, i).itemid].charge ..']') end end end if slotWeapon ~= nil then doItemSetAttribute(getPlayerSlotItem(cid, slotWeapon).uid, "Charges", weapons[getPlayerSlotItem(cid, slotWeapon).itemid].charge) setItemName(getPlayerSlotItem(cid, slotWeapon).uid, getItemNameById(getPlayerSlotItem(cid, slotWeapon).itemid)..' [Dur: '.. (getItemAttribute(getPlayerSlotItem(cid, slotWeapon).uid, "Charges")) ..'/'.. weapons[getPlayerSlotItem(cid, slotWeapon).itemid].charge ..']') end doPlayerSendTextMessage(cid, 22, "Seus itens foram reparados.") doSendMagicEffect(getPlayerPosition(cid), 30) else doPlayerSendTextMessage(cid, 23, "Desculpe, Você não possui "..(pricetotal*charge_price).."x "..getItemNameById(item_id).." para reparar todos os itens") return true end return TRUE end
  2. @Woah41 local config = { storage = 589648, -- vai voltar a parede em 5 minutos reward = {2160, 10} -- item id e quantidade } function onTimer() local players = getPlayersOnline() if #players <= 0 then return true end table.sort(players, function(a, b) return getPlayerStorageValue(a, config.storage) > getPlayerStorageValue(b, config.storage) end) doPlayerAddItem(players[1], config.reward[1], config.reward[2]) return true end TAG <globalevent name="reward timer" time="19:00" event="script" value="nome do seu script.lua"/> Caso der erro na função main, troque o "onTimer()" por "onTime()"
  3. @leozincorsair troca essa linha: if isMonster(target) and not isSummon(target) then por if isMonster(target) then
  4. Vodkart postou uma resposta no tópico em Suporte Tibia OTServer
    Este tópico foi movido para a área correta. Esta é uma mensagem automática! Pedimos que leia as regras do fórum!
  5. Vodkart postou uma resposta no tópico em Suporte Tibia OTServer
    @Pifafa tenta trocar doPlayerAddHealth(cid, math.random(1065, 1695)) por doCreatureAddHealth(cid, math.random(1065, 1695))
  6. galera ele só quer poder adicionar mais itens conforme os points, digamos que com 12 points vem aquela porrada de itens... exemplo assim: local lever = { [7200] = {amount = 12, items = {{2474,1},{12568,1},{2469,1},{11114,1},{2181,1},{7365,1},{8905,1},{12001,1}}}, [7138] = {amount = 200, items = {{7903,1},{7884,1},{7885,1},{7886,1},{8911,1},{7363,1},{7460,1},{7390,1}}}, [7146] = {amount = 300, items = {{7900,1},{7899,1},{7894,1},{7891,1},{12597,1},{12391,1},{3974,1},{2446,1}}} } function getItemsLevers(cid, items) local backpack = doPlayerAddItem(cid, 1999, 1) -- backpackID for _, i_i in ipairs(items) do local item, amount = i_i[1],i_i[2] if isItemStackable(item) or amount == 1 then doAddContainerItem(backpack, item, amount) else for i = 1, amount do doAddContainerItem(backpack, item, 1) end end end end function getItemsFromList(items) local str = '' if table.maxn(items) > 0 then for i = 1, table.maxn(items) do str = str .. items[i][2] .. ' ' .. getItemNameById(items[i][1]) if i ~= table.maxn(items) then str = str .. ', ' end end end return str end local storage,exausted = 98762, 2 function onUse(cid,item,fromPosition,itemEx,toPosition) if not lever[item.actionid] then return true end local var = lever[item.actionid] if getotfunPoints(cid) < var.amount then return doPlayerSendTextMessage(cid,MESSAGE_INFO_DESCR, "Você precisa de "..var.amount.." Ot Fun points.") elseif getPlayerStorageValue(cid, storage) >= os.time() then return doPlayerSendCancel(cid, "espere " .. getPlayerStorageValue(cid, storage) - os.time() .. " alguns segundos e tente novamente.") end getItemsLevers(cid, var.items) doPlayerSendTextMessage(cid,22,"Você Acaba De Adquirir: " .. getItemsFromList(var.items)) doPlayerRemoveotfunPoints(cid,var.amount) setPlayerStorageValue(cid, storage, os.time()+exausted) doSendMagicEffect(getCreaturePosition(cid), math.random(28,30)) doTransformItem(item.uid, item.itemid == 1740 and 1740 or 1740) -- troque aqui o id da alavanca return true end -------------------------------- agora você pode adicionar quantos items quiser, só colocar {itemid, amount} exemplo: items = {{2173,1},{2160,10}} ai para adicionar mais itens ficaria: items = {{2173,1},{2160,10},{2494,1}}
  7. local tiles, var, ret = { {x = 33402, y = 30999, z = 6}, {x = 33402, y = 31000, z = 6}, {x = 33403, y = 31000, z = 6} },5901,9229 function onUse(cid, item, fromPosition, itemEx, toPosition) local t = getTileItemById(tiles[1], ret).uid if t > 0 then return true end if not doPlayerRemoveItem(cid, var, 9) then doPlayerSendCancel(cid, 'voce precisa de 9 madeiras para construir a ponte.') doSendMagicEffect(getThingPos(cid), 2) return true end for i = 1, #tiles do doCreateItem(ret, 1, tiles[i]) doSendMagicEffect(tiles[i], CONST_ME_POFF) end return true end
  8. Vodkart postou uma resposta no tópico em Suporte Tibia OTServer
    local combat = createCombatObject() setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_HEALING) setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_MAGIC_BLUE) setCombatParam(combat, COMBAT_PARAM_AGGRESSIVE, false) setCombatParam(combat, COMBAT_PARAM_TARGETCASTERORTOPMOST, true) setCombatParam(combat, COMBAT_PARAM_DISPEL, CONDITION_PARALYZE) setHealingFormula(combat, COMBAT_FORMULA_LEVELMAGIC, 5, 5, 5, 6) function onCastSpell(cid, var) return doPlayerAddHealth(cid, math.random(1065, 1695)) and doCombat(cid, combat, var) end
  9. @poko360 bloqueia as areas de arena no código, são quantas?
  10. @Tom Riddle Tem que ir no items.xml e adicionar o type corpse com ID... Primeiro vê em qual monstro está dando esse erro.
  11. @Pifafa Obrigado por testar! REP+ !! Sistema atualizado.
  12. @Pifafa ok assim que testar me avisa.
  13. se eu fizer a alteração, você pode testar pra mim? alteração do NPC: https://pastebin.com/raw/RGQ4we1E npc/scripts/soya.lua
  14. Não testei usando elf bot, mas posso colocar a função "doPlayerSave(cid)" para salvar assim que vender. Ou também um exhaust de 5 segundos entre uma venda e outra, iria acabar com esse bug será?
  15. Alguém ai ainda joga? Cai platina 4 na MD10 e vou rushar se tiver tempo um diamante ou grão mestre(depende da faculdade) Quem jogar deixa o nick ai embaixo para feedarmos juntos
  16. Vodkart postou uma resposta no tópico em Suporte & Pedidos
    Boa tarde, já vi alguns tópicos pedindo um "jail system" e estou afim de desenvolver um sistema desses... O que eu queria saber é quais ideias vocês teriam para aprimorar o sistema? Minha ideia por enquanto é o seguinte: -Função de mandar o jogador para a cadeia por "X" horas(determinada pelo god,cm,etc...) - Comandos como jail,unjail, time jail, etc... - Sair automaticamente da cadeia assim que acabar o tempo um npc advogado quem sabe? etc...
  17. Esse negócio de não atacar o player com X storage até dá para fazer, o ruim é que por LUA vai bugar e ele vai ficar seguindo os jogadores... Já fiz vários testes por lua mesmo usando: onAttack onFollow onSpell onCombat onTarget etc... Não funciona com 100%, o melhor seria via sources mesmo.
  18. Vodkart postou uma resposta no tópico em Suporte Tibia OTServer
    não é nesse script. é nesse aqui data/actions/scripts/portaarena.lua
  19. Vodkart postou uma resposta no tópico em Suporte Tibia OTServer
    faz um movements por AID(não sei se quando a staff cria o portal já tem esse aid) que checa se tem alguem com o mesmo ip já lá dentro. No meu sistema de dota já tem essa função de bloquear MCS, só usar essa função de base.
  20. Vodkart postou uma resposta no tópico em Suporte Tibia OTServer
    Isso é só a lib, pode ter horários de curto tempo que tenta abrir 2 eventos ao mesmo tempo, etc... ou alguem usando comando para abrir... teria que olhar o sistema inteiro.
  21. Vodkart postou uma resposta no tópico em Suporte Tibia OTServer
    É as posições, sempre devem começar do MENOR pro maior, tem uma tabela no seu script que está assim: {{x=161,y=32,z=7},{x=138,y=60,z=7}} o seria seria colocar assim: {{x=138,y=32,z=7},{x=161,y=60,z=7}} ai você tem que conferir tudo e arrumar...
  22. function onUse(cid, item, frompos, item2, topos) local pos = getCreaturePosition(cid) local t = getSpectators(pos, 2, 2, false) -- area 2x2 em volta do player if t then for _, ret in ipairs(t) do if isPlayer(ret) then doSendMagicEffect(getCreaturePosition(ret), 17) -- vai sair um efeito para teste em quem tiver perto dele end end end return true end
  23. usa assim: https://pastebin.com/raw/zLdgfNNK
  24. Faz para liberar uma storage, só tem tiver essa storage entra.
  25. @Yan Liima Pois é, ai fica dificil.

Informação Importante

Confirmação de Termo