GuuhMaster 7 Posted April 18, 2016 Share Posted April 18, 2016 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á. Link to post Share on other sites More sharing options...
1 zipter98 1098 Posted April 27, 2016 Share Posted April 27, 2016 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 Link to post Share on other sites More sharing options...
0 GuuhMaster 7 Posted April 25, 2016 Author Share Posted April 25, 2016 Desculpa re-upar o tópico, mas alguem poderia me ajudar? Link to post Share on other sites More sharing options...
0 dalvorsn 267 Posted April 26, 2016 Share Posted April 26, 2016 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. Link to post Share on other sites More sharing options...
0 GuuhMaster 7 Posted April 26, 2016 Author Share Posted April 26, 2016 (edited) Olá pessoal! Consegui achar um script que eu queria, precisa de algumas modificações.. Citar local 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 Edited April 27, 2016 by GuuhMaster Link to post Share on other sites More sharing options...
0 GuuhMaster 7 Posted April 28, 2016 Author Share Posted April 28, 2016 Duvida sanada, obrigado mais uma vez zipter! Link to post Share on other sites More sharing options...
0 Magraozinho 0 Posted May 20, 2016 Share Posted May 20, 2016 (edited) 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? Edited May 20, 2016 by Magraozinho Link to post Share on other sites More sharing options...
0 dalvorsn 267 Posted May 21, 2016 Share Posted May 21, 2016 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) Link to post Share on other sites More sharing options...
0 Magraozinho 0 Posted May 21, 2016 Share Posted May 21, 2016 (edited) 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? Citar local 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? Edited May 21, 2016 by Magraozinho Link to post Share on other sites More sharing options...
0 dalvorsn 267 Posted May 21, 2016 Share Posted May 21, 2016 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 Link to post Share on other sites More sharing options...
Question
GuuhMaster 7
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á.
Link to post
Share on other sites
9 answers to this question
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now