Olá, gostaria de um script que funcione desta maneira;
ao dropar X item de um monstro, ex: Demon, apareceria no default a seguinte mensagem.
LOOT SYSTEM: O item ..X.. foi dropado do bixo ..X..
Agradeço desde já.
Olá, gostaria de um script que funcione desta maneira;
ao dropar X item de um monstro, ex: Demon, apareceria no default a seguinte mensagem.
LOOT SYSTEM: O item ..X.. foi dropado do bixo ..X..
Agradeço desde já.

Desculpa re-upar o tópico, mas alguem poderia me ajudar?

Creio eu que não exista um callback para isso em lua, e registrar uma creaturescript pra cada monstro é inviavel. Minha sugestão é que seja feito nas sources, diretamente na função void MonsterType::dropLoot(Container* corpse). Dai um meio facil de configurar seria criando um novo atributo dentro da tag do loot no xml do monstro identificando que esse item deve ter uma mensagem exclusiva.
Ou de maneira alternativa, tu pode fazer um onKill registrado no player, que verifica o corpses a procura do item, e caso encontre manda a mensagem.
"A covardia coloca a questão: É seguro? O comodismo coloca a questão: É popular? A etiqueta coloca a questão: é elegante? Mas a consciência coloca a questão, É correto? E chega uma altura em que temos de tomar uma posição que não é segura, não é elegante, não é popular, mas o temos de fazer porque a nossa consciência nos diz que é essa a atitude correta."
(Martin Luther King)
Olá pessoal!
Consegui achar um script que eu queria, precisa de algumas modificações..
Citarlocal config = {
itemid = 7764, --ID do item.
drop_message = "Voce dropou %s.", --Mensagem.
drop_effect = false --Efeito que aparecerá em cima da corpse (apenas para o dono da corpse). OPCIONAL! Se não quiser, coloque false.
}
function examine(cid, position, corpse_id)
if not isPlayer(cid) then return true end
local corpse = getTileItemById(position, corpse_id).uid
if corpse <= 1 or not isContainer(corpse) then return true end
for slot = 0, getContainerSize(corpse) - 1 do
local item = getContainerItem(corpse, slot)
if item.uid <= 1 then return true end
if item.itemid == config.itemid then
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, config.drop_message:format(getItemNameById(item.itemid)))if config.drop_effect then
doSendMagicEffect(position, config.drop_effect, cid)
end
end
end
end
function onKill(cid, target)
if not isMonster(target) then return true end
local corpse_id = getMonsterInfo(getCreatureName(target)).lookCorpse
addEvent(examine, 5, cid, getThingPos(target), corpse_id)
return true
end
Eu gostaria que o script fizesse essa função..
BroadcastMessage;
MENSAGEM LOOT: O Jogador (FULANO) dropou um item (TAL) do bixo (Demon).
Script: @Zipter98

local config = { itemid = 7764, --ID do item. drop_effect = false --Efeito que aparecerá em cima da corpse (apenas para o dono da corpse). OPCIONAL! Se não quiser, coloque false.} function examine(cid, position, corpse_id, name) if not isPlayer(cid) then return true end local corpse = getTileItemById(position, corpse_id).uid if corpse <= 1 or not isContainer(corpse) then return true end for slot = 0, getContainerSize(corpse) - 1 do local item = getContainerItem(corpse, slot) if item.uid <= 1 then return true end if item.itemid == config.itemid then broadcastMessage("MENSAGEM LOOT: O jogador "..getCreatureName(cid).." dropou um "..getItemNameById(item.itemid).." do bixo "..name..".") if config.drop_effect then doSendMagicEffect(position, config.drop_effect, cid) end end endend function onKill(cid, target) if not isMonster(target) then return true end local monster_name = getCreatureName(target) local corpse_id = getMonsterInfo(monster_name).lookCorpse addEvent(examine, 5, cid, getThingPos(target), corpse_id, monster_name) return trueend
Não respondo PMs solicitando suporte. Já existem seções no fórum para isto.
Duvida sanada, obrigado mais uma vez zipter!

esta script só da pra adicionar um ID?, como adiciono mais IDS? uso (,) ? ou (
?
e no caso se eu quisesse por um Efeito no drop-efect.., além de eu colocar true, aonde escolher o efeito que quero?
4 hours ago, Magraozinho said:esta script só da pra adicionar um ID?, como adiciono mais IDS? uso (,) ? ou (
?
e no caso se eu quisesse por um Efeito no drop-efect.., além de eu colocar true, aonde escolher o efeito que quero?
Tu precisa transformar o id em uma tabela, e mudar a verificação de "item.itemid == config.itemid" para isInArray(config.items, item.itemid)
"A covardia coloca a questão: É seguro? O comodismo coloca a questão: É popular? A etiqueta coloca a questão: é elegante? Mas a consciência coloca a questão, É correto? E chega uma altura em que temos de tomar uma posição que não é segura, não é elegante, não é popular, mas o temos de fazer porque a nossa consciência nos diz que é essa a atitude correta."
(Martin Luther King)
6 horas atrás, dalvorsn disse:Tu precisa transformar o id em uma tabela, e mudar a verificação de "item.itemid == config.itemid" para isInArray(config.items, item.itemid)
vc pode transformar o script pra mim?
Citarlocal config = {
itemid = 3940, --ID do item.
drop_effect = true --Efeito que aparecerá em cima da corpse (apenas para o dono da corpse). OPCIONAL! Se não quiser, coloque false.
}
function examine(cid, position, corpse_id, name)
if not isPlayer(cid) then return true end
local corpse = getTileItemById(position, corpse_id).uid
if corpse <= 1 or not isContainer(corpse) then return true end
for slot = 0, getContainerSize(corpse) - 1 do
local item = getContainerItem(corpse, slot)
if item.uid <= 1 then return true end
if item.itemid == config.itemid then
doBroadcastMessage("[LOOT MENSAGEM]: O jogador ("..getCreatureName(cid)..") dropou um item exclusivo de um ("..name..").", 19)
if config.drop_effect then
doSendMagicEffect(position, config.drop_effect, cid)
end
end
end
end
function onKill(cid, target)
if not isMonster(target) then return true end
local monster_name = getCreatureName(target)
local corpse_id = getMonsterInfo(monster_name).lookCorpse
addEvent(examine, 5, cid, getThingPos(target), corpse_id, monster_name)
return true
end
esta é a script, esta com 1 id apenas.. porém eu quero qe seja com todos esses ids= 5926, 3940, 11119, 10518, 10521. arruma pra mim pfv?
7 hours ago, Magraozinho said:vc pode transformar o script pra mim?
esta é a script, esta com 1 id apenas.. porém eu quero qe seja com todos esses ids= 5926, 3940, 11119, 10518, 10521. arruma pra mim pfv?
Exatamente como eu tinha dito:
local config = { ids = {5926, 3940, 11119, 10518, 10521}, --ID do item. drop_effect = true --Efeito que aparecerá em cima da corpse (apenas para o dono da corpse). OPCIONAL! Se não quiser, coloque false.} function examine(cid, position, corpse_id, name) if not isPlayer(cid) then return true end local corpse = getTileItemById(position, corpse_id).uid if corpse <= 1 or not isContainer(corpse) then return true end for slot = 0, getContainerSize(corpse) - 1 do local item = getContainerItem(corpse, slot) if item.uid <= 1 then return true end if isInArray(config.ids, item.itemid) then doBroadcastMessage("[LOOT MENSAGEM]: O jogador ("..getCreatureName(cid)..") dropou um item exclusivo de um ("..name..").", 19) if config.drop_effect then doSendMagicEffect(position, config.drop_effect, cid) end end endend function onKill(cid, target) if not isMonster(target) then return true end local monster_name = getCreatureName(target) local corpse_id = getMonsterInfo(monster_name).lookCorpse addEvent(examine, 5, cid, getThingPos(target), corpse_id, monster_name) return trueend
"A covardia coloca a questão: É seguro? O comodismo coloca a questão: É popular? A etiqueta coloca a questão: é elegante? Mas a consciência coloca a questão, É correto? E chega uma altura em que temos de tomar uma posição que não é segura, não é elegante, não é popular, mas o temos de fazer porque a nossa consciência nos diz que é essa a atitude correta."
(Martin Luther King)