Opa cara, muito bom parabéns. Vai ajudar bastante gente, não só com esse script e sim com as funções utilizadas.
Rep+
Por bepokemon, 13 de jun. de 2012 em Globalevents e Spells
Opa cara, muito bom parabéns. Vai ajudar bastante gente, não só com esse script e sim com as funções utilizadas.
Rep+
info
Grupo: Visconde
Registrado: 23/02/08
Posts: 273
Reputação: +101
Char no Tibia: Foxx Rookslayer
Entonces, percebi que existe uma busca constante de como "colocar tal item para previnir queda de items". Arranjei uma solucao para voces que nao precisa de nenhum tipo de edit, apenas a instalacao do script para que todos funcionem como o Amulet of Loss (obedecendo o items.xml):
Primeiramente deve-se notar para que um certo item previna a queda de items ao morrer ele deve conter este attributo nos items.xml:
Agora crie um arquivo chamado drop.lua dentro da pasta data/creaturescripts/script/ de seu OT e coloque isto dentro:
function getItemXMLAttributes(itemid) -- By: Byerne local tmp, id_now, check_ids = {}, 0, {} for line in io.lines('./data/items/items.xml') do if string.find(line, '<item fromid="') then for x=tonumber(line:match('<item fromid="(.-)"')), tonumber(line:match('toid="(.-)"')) do table.insert(check_ids, x) tmp[x] = {['name'] = tostring(line:match('name="(.-)"'))} end elseif string.find(line, '<item id="') then id_now = tonumber(line:match('<item id="(.-)"')) tmp[id_now] = {['name'] = tostring(line:match('name="(.-)"'))} elseif string.find(line, '<attribute key="') then tmp[id_now][line:match('<attribute key="(.-)"')] = line:match('value="(.-)"') elseif string.find(line, '</item>') then if id_now == itemid then return tmp[id_now] end end end return false end function onDeath(cid, corpse, deathList) for slot=CONST_SLOT_FIRST, CONST_SLOT_LAST do local item = getPlayerSlotItem(cid, slot) if getItemXMLAttributes(item.itemid).preventDrop == 1 then doCreatureSetDropLoot(cid, false) if getItemXMLAttributes(item.itemd).removeOnDeath == 1 then doRemoveItem(item.uid) end return true end end return true endColoque também dentro de creaturescripts.xml isto:
Não se esqueca de registrar no login.lua isto:
Ao final de tudo caso alguém morra com algum item (em qualquer slot) que previna drops este será removido se contido no items.xml a característica removeOnDeath. Espero que gostem, qualquer bug reporte neste mesmo tópico.
Editado Junho 13 por Byerne