Postado Janeiro 12, 2015 10 anos Este é um post popular. Fiz esse sistema a algum tempo e resolvi compartilhar. Geral o Sistema automaticamente irá recolher o loot dos monstros e adicionar ao player que deu mais dano, caso o loot esteja em sua loot list. Código Creaturescript/scripts, crie um novo arquivo chamado autoloot.lua e adicione o código. function onDeath(player, corpse, killer, mostDamageKiller, unjustified, mostDamageUnjustified) addEvent(getCorpseLootList, 100, killer, player:getPosition()) return true end Crie um novo script chamado autoloot.lua dentro da pasta data, e adicione o código. Loot = {} LOOTSTORAGE = 45713 function Loot:create() return setmetatable({}, {__index = self}) end function Loot:add(id) return table.insert(self, id) end function Loot:remove(id) local newtb = {} for k, v in pairs(self) do if (v + 0) ~= (id + 0) then table.insert(newtb, v) end end self = setmetatable(newtb, {__index = self}) return self end function Loot:getString() local str = "" for k, v in pairs(self) do str = str.. v.. ";" end return str end function Loot:getTable() local tb = {} for k, v in pairs(self) do table.insert(tb, v) end return tb end function Loot:saveToPlayer(player) return doPlayerAddStorageValue(player, LOOTSTORAGE, self:getString()) end function getPlayerLootList(player) local lootList = getPlayerStorageValue(player, LOOTSTORAGE) lootList = lootList:split(";") local tableList = {} for k, v in pairs(lootList) do table.insert(tableList, v) end return setmetatable(tableList, {__index = Loot}) end function getCorpseLootList(player, pos) local loot = {} local text = "" local corpse = Tile(pos):getTopVisibleThing() local plits = getPlayerLootList(player):getTable() for i = 0, corpse:getSize() do table.insert(loot, getContainerItem(corpse.uid, i)) end for k, v in pairs(plits) do for x, y in pairs(loot) do if (v + 1) == (y.itemid + 1) then doPlayerAddItem(player, y.itemid, Item(y.uid):getCount()) doRemoveItem(y.uid, Item(y.uid):getCount()) end end end return loot end Crie um novo arquivo dentro de talkactions/script chamado autoloot.lua, e adicione o código. function onSay(cid, words, param) local var = param:split(",") local loots = Loot:create() loots = getPlayerLootList(cid) if words == "/autoloot" then if var[1] == "add" then if getItemIdByName(var[2]) then for k, v in pairs(loots) do if (getItemIdByName(var[2]) + 0 ) == (v + 0) then return cid:sendCancelMessage("Alread added in the loot list.") end end loots:add(getItemIdByName(var[2])) loots:saveToPlayer(cid) return cid:sendCancelMessage("Item ".. var[2].. ", added to loot list.") else return cid:sendCancelMessage("This item dont exist.") end elseif var[1] == "remove" then if getItemIdByName(var[2]) then for k, v in pairs(loots) do if (getItemIdByName(var[2]) + 0 ) == (v + 0) then loots = loots:remove(getItemIdByName(var[2])) loots:saveToPlayer(cid) return cid:sendCancelMessage("Item ".. var[2].. ", removed from loot list.") end end return cid:sendCancelMessage("Item are not in loot list.") else return cid:sendCancelMessage("Item name dont exist.") end elseif var[1] == "list" then local text = "-- My Loot List --\n\n" for k, v in pairs(loots) do text = text.. k..": "..getItemName(v).."\n" end cid:popupFYI(text) end end return true end Dentro dos monstros aonde o script irá funcionar, adicione o código. <script> <event name="AutoLoot"/> </script> As TAG XML são essas. Creaturescript.xml <event script="autoLoot.lua" name="AutoLoot" type="death"/> Talkactions.xml <talkaction words="/autoloot" separator=" " script="autoloot.lua" /> OBS: No meu servidor eu fiz um novo sistema de storages, As funções são "doPlayerAddStorageValue e getPlayerStorageValue", você só precisa mudar o nome da função pois o corpo dela é o mesmo, então mude isso. Caso tenha esquecido de algo ou algum problema com o código me avise. Editado Janeiro 12, 2015 10 anos por SuggestName (veja o histórico de edições) O mesmo BananaFight, mais com um novo Nick. Abra sua mente, sangue suga não vive sem um hospedeiro, Não faça script para os outros, ensine-os a fazer.
Postado Janeiro 13, 2015 10 anos Já um tutorial desse simplificado no tibiaking mas valeu a intenção Amigo, não sei se já existe um tutorial deste mais é sempre bom outro... É sempre bom ver conteúdo da TFS 1.0 pelo fórum, as pessoas hoje em dia só se mantém na antiga... Bruno Carvalho / Ex-Administrador TibiaKing [email protected] Em 26/12/2016 em 03:47, Spraypaint disse: A força da alienação vem dessa fragilidade dos indivíduos, quando apenas conseguem identificar o que os separa e não o que os une. -miltinho
Postado Fevereiro 7, 2015 10 anos Tenho NEW Monster' Como faço para catar todos Os items ? tipo item com nomes diferentes tbm.
Participe da conversa
Você pode postar agora e se cadastrar mais tarde. Se você tem uma conta, faça o login para postar com sua conta.