Ir para conteúdo

Vodkart

Héroi
  • Registro em

Tudo que Vodkart postou

  1. Vodkart postou uma resposta no tópico em Suporte Tibia OTServer
    <?xml version="1.0" encoding="ISO-8859-1"?> <mod name="Loot System" version="1.0" author="Vodkart And Mkalo" contact="none.com" enabled="yes"> <config name="Loot_func"><![CDATA[ info = { AutomaticDeposit = true, BlockMonsters = {}, BlockItemsList = {2123,2515}, Max_Slots = {free = 2, premium = 5} } function setPlayerStorageTable(cid, storage, tab) local tabstr = "&" for i,x in pairs(tab) do tabstr = tabstr .. i .. "," .. x .. ";" end setPlayerStorageValue(cid, storage, tabstr:sub(1, #tabstr-1)) end function getPlayerStorageTable(cid, storage) local tabstr = getPlayerStorageValue(cid, storage) local tab = {} if type(tabstr) ~= "string" then return {} end if tabstr:sub(1,1) ~= "&" then return {} end local tabstr = tabstr:sub(2, #tabstr) local a = string.explode(tabstr, ";") for i,x in pairs(a) do local b = string.explode(x, ",") tab[tonumber(b[1]) or b[1]] = tonumber(b[2]) or b[2] end return tab end function isInTable(cid, item) for _,i in pairs(getPlayerStorageTable(cid, 27000))do if tonumber(i) == tonumber(item) then return true end end return false end function addItemTable(cid, item) local x = {} for i = 1,#getPlayerStorageTable(cid, 27000) do table.insert(x,getPlayerStorageTable(cid, 27000)[i]) end if x ~= 0 then table.insert(x,tonumber(item)) setPlayerStorageTable(cid, 27000, x) else setPlayerStorageTable(cid, 27000, {item}) end end function removeItemTable(cid, item) local x = {} for i = 1,#getPlayerStorageTable(cid, 27000) do table.insert(x,getPlayerStorageTable(cid, 27000)[i]) end for i,v in ipairs(x) do if tonumber(v) == tonumber(item) then table.remove(x,i) end end return setPlayerStorageTable(cid, 27000, x) end function ShowItemsTabble(cid) local str,n = "-- My Loot List --\n\n",0 for i = 1,#getPlayerStorageTable(cid, 27000) do n = n + 1 str = str..""..n.." - "..getItemNameById(getPlayerStorageTable(cid, 27000)[i]).."\n" end return doShowTextDialog(cid, 2529, str) end function getContainerItems(containeruid) local items = {} local containers = {} if type(getContainerSize(containeruid)) ~= "number" then return false end for slot = 0, getContainerSize(containeruid)-1 do local item = getContainerItem(containeruid, slot) if item.itemid == 0 then break end if isContainer(item.uid) then table.insert(containers, item.uid) end table.insert(items, item) end if #containers > 0 then for i,x in ipairs(getContainerItems(containers[1])) do table.insert(items, x) end table.remove(containers, 1) end return items end function getItemsInContainerById(container, itemid) -- Function By Kydrai local items = {} if isContainer(container) and getContainerSize(container) > 0 then for slot=0, (getContainerSize(container)-1) do local item = getContainerItem(container, slot) if isContainer(item.uid) then local itemsbag = getItemsInContainerById(item.uid, itemid) for i=0, #itemsbag do table.insert(items, itemsbag[i]) end else if itemid == item.itemid then table.insert(items, item.uid) end end end end return items end function doPlayerAddItemStacking(cid, itemid, amount) -- revisado local item, _G = getItemsInContainerById(getPlayerSlotItem(cid, 3).uid, itemid), 0 if #item > 0 then for _ ,x in pairs(item) do local ret = getThing(x) if ret.type < 100 then doTransformItem(ret.uid, itemid, ret.type+amount) if ret.type+amount > 100 then doPlayerAddItem(cid, itemid, ret.type+amount-100) end break else _G = _G+1 end end if _G == #item then doPlayerAddItem(cid, itemid, amount) end else return doPlayerAddItem(cid, itemid, amount) end end function AutomaticDeposit(cid,item,n) local deposit = item == tonumber(2160) and (n*10000) or tonumber(item) == 2152 and (n*100) or (n*1) return doPlayerDepositMoney(cid, deposit) end function corpseRetireItems(cid, pos) local check = false for i = 0, 255 do pos.stackpos = i tile = getTileThingByPos(pos) if tile.uid > 0 and isCorpse(tile.uid) then check = true break end end if check == true then local items = getContainerItems(tile.uid) for i,x in pairs(items) do if isInArray(getPlayerStorageTable(cid, 27000), tonumber(x.itemid)) then if isItemStackable(x.itemid) then doPlayerAddItemStacking(cid, x.itemid, x.type) if info.AutomaticDeposit == true and isInArray({"2148","2152","2160"},tonumber(x.itemid)) then AutomaticDeposit(cid,x.itemid,x.type) end else doPlayerAddItem(cid, x.itemid) end doRemoveItem(x.uid) end end end end ]]></config> <event type="login" name="LootLogin" event="script"><![CDATA[ function onLogin(cid) registerCreatureEvent(cid, "LootEventKIll") if isPremium(cid) and getPlayerStorageValue(cid, 27001) <= 0 then setPlayerStorageValue(cid, 27001, 1) elseif getPlayerStorageValue(cid, 27001) > 0 and not isPremium(cid) then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "[Auto Loot] You premium is Over, Start a new list!") setPlayerStorageValue(cid, 27001, -1) setPlayerStorageValue(cid, 27000, -1) end return true end]]></event> <event type="kill" name="LootEventKIll" event="script"><![CDATA[ domodlib('Loot_func') function onKill(cid, target, lastHit) if isPlayer(cid) and isMonster(target) and not isInArray(info.BlockMonsters, getCreatureName(target):lower()) then addEvent(corpseRetireItems, 0, cid ,getThingPos(target)) end return true end]]></event> <talkaction words="!autoloot;/autoloot" event="buffer"><![CDATA[ domodlib('Loot_func') local t = string.explode(string.lower(param), ",") if not t[1] then ShowItemsTabble(cid) return true elseif tonumber(t[1]) or tonumber(t[2]) then doPlayerSendCancel(cid, "enter!autoloot add,name or !autoloot remove,name") return true elseif isInArray({"add","remove"}, tostring(t[1])) then local func,check = tostring(t[1]) == "add" and addItemTable or removeItemTable, tostring(t[1]) == "add" and true or false local item,slots = getItemIdByName(tostring(t[2]), false), isPremium(cid) and info.Max_Slots.premium or info.Max_Slots.free if not item then doPlayerSendCancel(cid, "This item does not exist.") return true elseif check == true and isInArray(info.BlockItemsList, item) then doPlayerSendCancel(cid, "You can not add this item in the list!") return true elseif check == true and #getPlayerStorageTable(cid, 27000) >= slots then doPlayerSendCancel(cid, "max "..slots.." from auto loot") return true elseif isInTable(cid, item) == check then doPlayerSendCancel(cid, "This Item "..(check == true and "already" or "is not").." in your list.") return true end func(cid, item) doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE,check == true and "you added the item "..t[2].." in the list" or "you removed the item "..t[2].." from the list") return true end return true]]></talkaction> </mod>
  2. sim mas teria que mexer na source para isso! Eu deixei bem claro que não faria isso... até pq n tenho as source do meu serve e talz... mas quem quiser adaptar fique a vontade kk
  3. só falar hi no npc e ele vai summonar monstro e virar um monstro(determinado) ex: demon?
  4. Vodkart postou uma resposta no tópico em Suporte Tibia OTServer
    vou refazer, testar pra ver se tem bug e quando tiver pronto eu posto... não estou querendo refazer esse sistema de auto loot pq não é meu e tem mta linha desnecessária
  5. Vodkart postou uma resposta no tópico em Suporte Tibia OTServer
    sim, fiz assim: max_slots = {free = 2, premium = 5}
  6. Vodkart postou uma resposta no tópico em Suporte Tibia OTServer
    sim no meu sistema vai ter max slot 5, ativar ou desativar e mandar gold pro banco automaticamente
  7. Vodkart postou uma resposta no tópico em Suporte Tibia OTServer
    sim mas onde fica salvo a quantidade de gold nesse sistema? já que não fica salvo no banco e nem em storage nehhuma!
  8. Vodkart postou uma resposta no tópico em Suporte Tibia OTServer
    vou refazer o meu sistema e auto loot pra onKIll e colocar máximo 5 slots
  9. vou colocar para dar exaust de 30 mnutos(configuravel), entre um paper e outro, além disso dá para usar doPlayerSave(cid), então ai não tem problema de clone. além disso não tem como clonar pq qndo vc clona o item a descrição não vai vir como esse de quantidade de pontos, vem nula...
  10. Vodkart postou uma resposta no tópico em Suporte Tibia OTServer
    wtf? oq tu fez? kk apaga td e coloca só isso function onSay(cid, words, param) return doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE,"you have "..getPlayerStorageValue(cid, 04421021).." gold.") end
  11. Vodkart postou uma resposta no tópico em Suporte Tibia OTServer
    isso é uma talk pra ver se retorna o gold, mudei a storage
  12. Vodkart postou uma resposta no tópico em Suporte Tibia OTServer
    testa assim function onSay(cid, words, param) return doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE,"Você tem "..getPlayerStorageValue(cid, 04421021).." gold.") end
  13. Fiz o código a pedidos do membro @Micheel15, onde o sistema funciona da seguinte maneira: você usa o comando !sellpoints quantidade quando usar esse comando, os seus pontos do site são passados para um paper, com esse paper você pode trocar ou vender no servidor. BENEFICIOS : Vender ou transferir pontos. IMAGEM A BAIXO : Ai quando você der use, os pontos são passados para sua conta. lib adicione function getPremiumPoints(cid) local query = db.getResult("SELECT `premium_points` FROM `accounts` WHERE `id` = "..getPlayerAccountId(cid)) return query:getDataInt("premium_points") <= 0 and 0 or query:getDataInt("premium_points") end function setPremiumPoints(cid, amount) return db.executeQuery("UPDATE `accounts` SET `premium_points` = "..amount.." WHERE `id` = "..getPlayerAccountId(cid)) end talk sell_points.lua function onSay(cid, words, param) local var,points = "[Sell Point System] Este documento vale %s points para você usar no site.",getPremiumPoints(cid) local min,max = 5, 100 if param == "" or not tonumber(param) then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Desculpe, use somente numeros.") return true elseif tonumber(param) < min or tonumber(param) > max then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Desculpe, Minimo "..min.." e Maximo "..max.." points.") return true elseif points < tonumber(param) then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Desculpe, mas você só possui "..points.." Premium Points.") return true end local item = doPlayerAddItem(cid, 7702,1) doItemSetAttribute(item, "description", var:format(tonumber(param))) setPremiumPoints(cid, points-tonumber(param)) doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE,"[Sell Point System] Você recebeu um paper com "..param.." Premium Points.") return true end tag <talkaction words="!sellpoints;/sellpoints" event="script" value="sell_points.lua"/> actions paper_points.lua function onUse(cid, item, frompos, item2, topos) local var = getItemAttribute(item.uid, "description") if var == nil then return true end local x = var:match("%b[]") if x == "[Sell Point System]" then local ret = var:match("%d+") doPlayerSendTextMessage(cid, 22,"você recebeu "..ret.." Premium Points.") setPremiumPoints(cid, getPremiumPoints(cid)+ret) doRemoveItem(item.uid) end return true end tag <action itemid="7702" script="paper_points.lua"/>
  14. Vodkart postou uma resposta no tópico em Suporte Tibia OTServer
    oq
  15. Vodkart postou uma resposta no tópico em Suporte Tibia OTServer
    faz um script pra checar se o gold fica salvo nessa storage: 0442102 faz uma talk pra ver se retorna o gold nela function onSay(cid, words, param) return doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE,"Você tem "..getPlayerStorageValue(cid, 0442102).." gold.") end se retornar me avisa
  16. Vodkart postou uma resposta no tópico em Suporte Tibia OTServer
    e o outro tópico que você fez, eu respondi e você abandonou porque? nem falou mais nada, nem pra falar se funcionou ou algo do tipo.
  17. Vodkart postou uma resposta no tópico em Suporte Tibia OTServer
    local function autoGold(cid, pos) local check = false local total = 0 local position = {} for i = 1, 255 do pos.stackpos = i if getThingFromPos(pos).uid and getThingFromPos(pos).uid > 0 and isContainer(getThingFromPos(pos).uid) then position = pos check = true break end end if check then local corpse = getContainerItemsInfo(getThingFromPos(position).uid) if corpse then for index, info in pairs(corpse) do if info.uid and info.itemid then if index < countTable(corpse) then if isContainer(info.uid) then local bag = getContainerItemsInfo(info.uid) for i = 1, countTable(bag) - 1 do if isInArray({2148, 2152, 2160}, bag.itemid) then local multiplie = 1 if bag.itemid == 2148 then multiplie = 1 elseif bag.itemid == 2152 then multiplie = 100 elseif bag.itemid == 2160 then multiplie = 10000 end doRemoveItem(bag.uid, bag.quant) doPlayerSetBalance(cid, getPlayerBalance(cid) + (tonumber(bag.quant) and tonumber(bag.quant) * multiplie or 0)) total = total + (tonumber(bag.quant) and tonumber(bag.quant) * multiplie or 0) doPlayerSetStorageValue(cid, 0442102, getPlayerStorageZero(cid, 0442102) + (tonumber(bag.quant) and tonumber(bag.quant) * multiplie or 0)) end end end end if isInArray({2148, 2152, 2160}, info.itemid) then local multiplie = 1 if info.itemid == 2148 then multiplie = 1 elseif info.itemid == 2152 then multiplie = 100 elseif info.itemid == 2160 then multiplie = 10000 end doRemoveItem(info.uid, info.quant) doPlayerSetBalance(cid, getPlayerBalance(cid) + (tonumber(info.quant) and tonumber(info.quant) * tonumber(multiplie) or 0)) doPlayerSetStorageValue(cid, 0442102, getPlayerStorageZero(cid, 0442102) + (tonumber(info.quant) and tonumber(info.quant) * tonumber(multiplie) or 0)) total = total + (tonumber(info.quant) and tonumber(info.quant) * multiplie or 0) end end end end end if tabela[getCreatureName(cid)] and tabela[getCreatureName(cid)].gold then tabela[getCreatureName(cid)].gold = total end end ta ai, era pra fzer isso, se não faz usa outro sistema
  18. Vodkart postou uma resposta no tópico em Suporte Tibia OTServer
    ele vai pro banco do jogador, ai remove lá com o npc banker.
  19. qualquer uma. eu coloquei na 050-function mas tanto faz.
  20. na lib adc function getPremiumPoints(cid) local query = db.getResult("SELECT `premium_points` FROM `accounts` WHERE `id` = "..getPlayerAccountId(cid)) return query:getDataInt("premium_points") <= 0 and 0 or query:getDataInt("premium_points") end function setPremiumPoints(cid, amount) return db.executeQuery("UPDATE `accounts` SET `premium_points` = "..amount.." WHERE `id` = "..getPlayerAccountId(cid)) end talk sell_points.lua function onSay(cid, words, param) local var,points = "[Sell Point System] Este documento vale %s points para você usar no site.",getPremiumPoints(cid) local min,max = 5, 100 if param == "" or not tonumber(param) then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Desculpe, use somente numeros.") return true elseif tonumber(param) < min or tonumber(param) > max then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Desculpe, Minimo "..min.." e Maximo "..max.." points.") return true elseif points < tonumber(param) then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Desculpe, mas você só possui "..points.." Premium Points.") return true end local item = doPlayerAddItem(cid, 7702,1) doItemSetAttribute(item, "description", var:format(tonumber(param))) setPremiumPoints(cid, points-tonumber(param)) doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE,"[Sell Point System] Você recebeu um paper com "..param.." Premium Points.") return true end tag <talkaction words="!sellpoints;/sellpoints" event="script" value="sell_points.lua"/> actions paper_points.lua function onUse(cid, item, frompos, item2, topos) local var = getItemAttribute(item.uid, "description") if var == nil then return true end local x = var:match("%b[]") if x == "[Sell Point System]" then local ret = var:match("%d+") doPlayerSendTextMessage(cid, 22,"você recebeu "..ret.." Premium Points.") setPremiumPoints(cid, getPremiumPoints(cid)+ret) doRemoveItem(item.uid) end return true end tag <action itemid="7702" script="paper_points.lua"/>
  21. vai ter npc vendedor de paçocas?
  22. chegando em casa te mando
  23. erro resolvido via PM era a task [8] com um problema no "["
  24. sim ele usaria o comando por exemplo !sellpoints 20 ai fica na descrição do item: "Este item vale 20 premium points." ai o jogador pode dar look no item q vai mostrar a descrição, qndo ele der use no item vai os 20 points pra conta e o paper é removido. infelizmente para colocar o item para não ser jogado no chao/house e só passar pelo trade acho que é por source ou modificar o item na source tbm da pra mandar por vial dai tbm, tanto faz kk
  25. essa parte de aparecer um paper eu até posso fazer, mas n vou mexer nas sources para o teim só funcionar através do trade...

Informação Importante

Confirmação de Termo