Ir para conteúdo
  • Cadastre-se

(Resolvido)Adaptar script de ring pra amulet


Ir para solução Resolvido por Wakon,

Posts Recomendados

  • Solução

Testa ai:

<?xml version="1.0" encoding="UTF-8"?>
<mod name="Loot Ring" version="1.0" author="Cykotitan" contact="otland.net" enabled="yes">
<event type="kill" name="lootring" event="script"> <![CDATA[
local t = {
item = 11393,
slot = CONST_SLOT_NECKLACE,
newRate = 5
}

local rate = getConfigInfo('rateLoot')

function getContentDescription(uid, comma)
local ret, i, containers = '', 0, {}
while i < getContainerSize(uid) do
local v, s = getContainerItem(uid, i), ''
local k = getItemInfo(v.itemid)
if k.name ~= '' then
if v.type > 1 and k.stackable and k.showCount then
s = v.type .. ' ' .. getItemInfo(v.itemid).plural
else
local article = k.article
s = (article == '' and '' or article .. ' ') .. k.name
end
ret = ret .. (i == 0 and not comma and '' or ', ') .. s
if isContainer(v.uid) and getContainerSize(v.uid) > 0 then
table.insert(containers, v.uid)
end
else
ret = ret .. (i == 0 and not comma and '' or ', ') .. 'an item of type ' .. v.itemid .. ', please report it to gamemaster'
end
i = i + 1
end
for i = 1, #containers do
ret = ret .. getContentDescription(containers, true)
end
return ret
end

local function send(cid, pos, corpseid, monster, party)
local corpse = getTileItemById(pos, corpseid).uid
local ret = isContainer(corpse) and getContentDescription(corpse)
doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, 'Loot of ' .. monster .. ': ' .. (ret ~= '' and ret or 'nothing'))
if party then
for _, pid in ipairs(getPartyMembers(party)) do
doPlayerSendChannelMessage(pid, '', 'Loot of ' .. monster .. ': ' .. (ret ~= '' and ret or 'nothing'), TALKTYPE_CHANNEL_W, CHANNEL_PARTY)
end
end
end

local function createLoot(i, ext)
local item = type(i.id) == 'table' and i.id[math.random(#i.id)] or i.id
local random = math.ceil(math.random(100000) / (ext and t.newRate or rate))
local tmpItem

if random < i.chance then
tmpItem = doCreateItemEx(item, getItemInfo(item).stackable and random % i.count + 1 or 1)
end

if not tmpItem then
return
end

if i.subType ~= -1 then
doItemSetAttribute(tmpItem, 'subType', i.subType)
end

if i.actionId ~= -1 then
doItemSetAttribute(tmpItem, 'aid', i.actionId)
end

if i.uniqueId ~= -1 then
doItemSetAttribute(tmpItem, 'uid', i.uniqueId)
end

if i.text ~= '' then
doItemSetAttribute(tmpItem, 'text', i.text)
end

return tmpItem
end

local function createChildLoot(parent, i, ext)
if #i == 0 then
return true
end

local size, cap = 0, getContainerCap(parent)
for k = 1, #i do
if size == cap then
break
end
local tmp = createLoot(i[k], ext)
if tmp then
if isContainer(tmp) then
if createChildLoot(tmp, i[k].child, ext) then
doAddContainerItemEx(parent, tmp)
size = size + 1
else
doRemoveItem(tmp)
end
else
doAddContainerItemEx(parent, tmp)
size = size + 1
end
end
end

return size > 0
end

local function dropLoot(pos, v, ext)
local corpse = getTileItemById(pos, v.lookCorpse).uid
if isContainer(corpse) then
for i = 1, getContainerSize(corpse) do
doRemoveItem(getContainerItem(corpse, 0).uid)
end
local size, cap = 0, getContainerCap(corpse)
for i = 1, #v.loot do
if size == cap then
break
end
local tmp = createLoot(v.loot, ext)
if tmp then
if isContainer(tmp) then
if createChildLoot(tmp, v.loot.child, ext) then
doAddContainerItemEx(corpse, tmp)
size = size + 1
else
doRemoveItem(tmp)
end
else
doAddContainerItemEx(corpse, tmp)
size = size + 1
end
end
end
end
end

function onKill(cid, target, lastHit)
if lastHit and isMonster(target) then
local v = getMonsterInfo(getCreatureName(target))
if v.lookCorpse > 0 then
local master = getCreatureMaster(target)
if not master or master == target then
addEvent(dropLoot, 0, getThingPos(target), v, getPlayerSlotItem(cid, t.slot).itemid == t.item)
end
addEvent(send, 100, cid, getThingPos(target), v.lookCorpse, v.description, getPlayerParty(cid))
end
end
return true
end
]]></event>
<event type="login" name="Loot Ring" event="buffer"><![CDATA[
registerCreatureEvent(cid, "lootring")
]]></event>
</mod>

Link para o post
Compartilhar em outros sites

Testa ai:

<?xml version="1.0" encoding="UTF-8"?>

<mod name="Loot Ring" version="1.0" author="Cykotitan" contact="otland.net" enabled="yes">

<event type="kill" name="lootring" event="script"> <![CDATA[

local t = {

item = 11393,

slot = CONST_SLOT_NECKLACE,

newRate = 5

}

local rate = getConfigInfo('rateLoot')

function getContentDescription(uid, comma)

local ret, i, containers = '', 0, {}

while i < getContainerSize(uid) do

local v, s = getContainerItem(uid, i), ''

local k = getItemInfo(v.itemid)

if k.name ~= '' then

if v.type > 1 and k.stackable and k.showCount then

s = v.type .. ' ' .. getItemInfo(v.itemid).plural

else

local article = k.article

s = (article == '' and '' or article .. ' ') .. k.name

end

ret = ret .. (i == 0 and not comma and '' or ', ') .. s

if isContainer(v.uid) and getContainerSize(v.uid) > 0 then

table.insert(containers, v.uid)

end

else

ret = ret .. (i == 0 and not comma and '' or ', ') .. 'an item of type ' .. v.itemid .. ', please report it to gamemaster'

end

i = i + 1

end

for i = 1, #containers do

ret = ret .. getContentDescription(containers, true)

end

return ret

end

local function send(cid, pos, corpseid, monster, party)

local corpse = getTileItemById(pos, corpseid).uid

local ret = isContainer(corpse) and getContentDescription(corpse)

doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, 'Loot of ' .. monster .. ': ' .. (ret ~= '' and ret or 'nothing'))

if party then

for _, pid in ipairs(getPartyMembers(party)) do

doPlayerSendChannelMessage(pid, '', 'Loot of ' .. monster .. ': ' .. (ret ~= '' and ret or 'nothing'), TALKTYPE_CHANNEL_W, CHANNEL_PARTY)

end

end

end

local function createLoot(i, ext)

local item = type(i.id) == 'table' and i.id[math.random(#i.id)] or i.id

local random = math.ceil(math.random(100000) / (ext and t.newRate or rate))

local tmpItem

if random < i.chance then

tmpItem = doCreateItemEx(item, getItemInfo(item).stackable and random % i.count + 1 or 1)

end

if not tmpItem then

return

end

if i.subType ~= -1 then

doItemSetAttribute(tmpItem, 'subType', i.subType)

end

if i.actionId ~= -1 then

doItemSetAttribute(tmpItem, 'aid', i.actionId)

end

if i.uniqueId ~= -1 then

doItemSetAttribute(tmpItem, 'uid', i.uniqueId)

end

if i.text ~= '' then

doItemSetAttribute(tmpItem, 'text', i.text)

end

return tmpItem

end

local function createChildLoot(parent, i, ext)

if #i == 0 then

return true

end

local size, cap = 0, getContainerCap(parent)

for k = 1, #i do

if size == cap then

break

end

local tmp = createLoot(i[k], ext)

if tmp then

if isContainer(tmp) then

if createChildLoot(tmp, i[k].child, ext) then

doAddContainerItemEx(parent, tmp)

size = size + 1

else

doRemoveItem(tmp)

end

else

doAddContainerItemEx(parent, tmp)

size = size + 1

end

end

end

return size > 0

end

local function dropLoot(pos, v, ext)

local corpse = getTileItemById(pos, v.lookCorpse).uid

if isContainer(corpse) then

for i = 1, getContainerSize(corpse) do

doRemoveItem(getContainerItem(corpse, 0).uid)

end

local size, cap = 0, getContainerCap(corpse)

for i = 1, #v.loot do

if size == cap then

break

end

local tmp = createLoot(v.loot, ext)

if tmp then

if isContainer(tmp) then

if createChildLoot(tmp, v.loot.child, ext) then

doAddContainerItemEx(corpse, tmp)

size = size + 1

else

doRemoveItem(tmp)

end

else

doAddContainerItemEx(corpse, tmp)

size = size + 1

end

end

end

end

end

function onKill(cid, target, lastHit)

if lastHit and isMonster(target) then

local v = getMonsterInfo(getCreatureName(target))

if v.lookCorpse > 0 then

local master = getCreatureMaster(target)

if not master or master == target then

addEvent(dropLoot, 0, getThingPos(target), v, getPlayerSlotItem(cid, t.slot).itemid == t.item)

end

addEvent(send, 100, cid, getThingPos(target), v.lookCorpse, v.description, getPlayerParty(cid))

end

end

return true

end

]]></event>

<event type="login" name="Loot Ring" event="buffer"><![CDATA[

registerCreatureEvent(cid, "lootring")

]]></event>

</mod>

 

Acho q funcionou! VLWWWW

Link para o post
Compartilhar em outros sites

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.

Visitante
Responder

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emojis são permitidos.

×   Seu link foi automaticamente incorporado.   Mostrar como link

×   Seu conteúdo anterior foi restaurado.   Limpar o editor

×   Não é possível colar imagens diretamente. Carregar ou inserir imagens do URL.

  • Quem Está Navegando   0 membros estão online

    Nenhum usuário registrado visualizando esta página.

×
×
  • Criar Novo...

Informação Importante

Confirmação de Termo