Ir para conteúdo

Amuletos Que Evitam Drop De Loot


bepokemon

Posts Recomendados

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:

<attribute key="preventDrop" value="1"/>
<attribute key="removeOnDeath" value="1"/>

 

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
end

 

Coloque também dentro de creaturescripts.xml isto:

<event type="death" name="DropLoot" event="script" value="drop.lua"/>

 

Não se esqueca de registrar no login.lua isto:

registerCreatureEvent(cid, "DropLoot")

 

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 por Byerne
Link para o comentário
Compartilhar em outros sites

×
×
  • Criar Novo...