951357 1 Postado Julho 2, 2009 Share Postado Julho 2, 2009 (editado) Olá XTibianos, Basicamente é isso: Se o player morrer automaticamente é enviada uma mensagem no BROADCAST para todos os jogadores dizendo quem matou e quem morreu. O sistema funciona tanto para mortes PvM(Player versus Monster) quanto para PvP (Player versus Player). Vou citar dois exemplos antes de exibir o script: Juanez tacou uma SD em Pedro e Pedro morreu. A seguinte mensagem é exibida: Juanez matou Pedro. Outro exemplo: Laurindo estava caçando Dragons quando de repente ele morre. A seguinte mensagem é exibida. Dragon matou Laurindo. Agora vamos ao script Em data/creaturescripts/scripts abra arquivo chamado playerdeath.lua, apague tudo que estiver nele e adicione o seguinte conteúdo: local config = { deathListEnabled = getBooleanFromString(getConfigInfo('deathListEnabled')), sqlType = getConfigInfo('sqlType'), maxDeathRecords = getConfigInfo('maxDeathRecords') } config.sqlType = config.sqlType == "sqlite" and DATABASE_ENGINE_SQLITE or DATABASE_ENGINE_MYSQL function onDeath(cid, corpse, lastHitKiller, mostDamageKiller) if(config.deathListEnabled ~= TRUE) then return end local hitKillerName = "field item" local damageKillerName = "" if(lastHitKiller ~= FALSE) then if(isPlayer(lastHitKiller) == TRUE) then hitKillerName = getCreatureName(lastHitKiller) else hitKillerName = getCreatureName(lastHitKiller) end doBroadcastMessage(""..getPlayerName(cid).." has been killed by "..hitKillerName..".") if(mostDamageKiller ~= FALSE and mostDamageKiller ~= lastHitKiller and getCreatureName(mostDamageKiller) ~= getCreatureName(lastHitKiller)) then if(isPlayer(mostDamageKiller) == TRUE) then damageKillerName = getPlayerGUID(mostDamageKiller) else damageKillerName = getCreatureName(mostDamageKiller) end end end db.executeQuery("INSERT INTO `player_deaths` (`player_id`, `time`, `level`, `killed_by`, `altkilled_by`) VALUES (" .. getPlayerGUID(cid) .. ", " .. os.time() .. ", " .. getPlayerLevel(cid) .. ", " .. db.escapeString(hitKillerName) .. ", " .. db.escapeString(damageKillerName) .. ");") local rows = db.getResult("SELECT `player_id` FROM `player_deaths` WHERE `player_id` = " .. getPlayerGUID(cid) .. ";") if(rows:getID() ~= -1) then local amount = rows:getRows(true) - config.maxDeathRecords if(amount > 0) then if(config.sqlType == DATABASE_ENGINE_SQLITE) then for i = 1, amount do db.executeQuery("DELETE FROM `player_deaths` WHERE `rowid` = (SELECT `rowid` FROM `player_deaths` WHERE `player_id` = " .. getPlayerGUID(cid) .. " ORDER BY `time` LIMIT 1);") end else db.executeQuery("DELETE FROM `player_deaths` WHERE `player_id` = " .. getPlayerGUID(cid) .. " ORDER BY `time` LIMIT " .. amount .. ";") end end end end Salve e feche. OBS.¹: Faça o backup do arquivo playerdeath.lua antes de qualquer alteração em seu conteúdo. Créditos: Aman Kartholic - Eu - 50% de participação na elaboração do script. kydrai - Membro XTibia - 50% de participação na elaboração do script. Se for postar em outro fórum favor colocar os devidos créditos. Script testado na versão: TFS - 3.4 (Crying Damson) Problemas na inserção do script favor postar aqui. OBS.²: Responderei as dúvidas feitas somente 10 dias após a postagem do tópico. Cya ~ Editado Fevereiro 7, 2010 por helinholima Link para o comentário https://xtibia.com/forum/topic/115435-creatureevents-anunciador-de-quem-mata-e-quem-morre/ Compartilhar em outros sites More sharing options...
EhooGuuh5 0 Postado Julho 2, 2009 Share Postado Julho 2, 2009 SHOW VLW..APROVADO Link para o comentário https://xtibia.com/forum/topic/115435-creatureevents-anunciador-de-quem-mata-e-quem-morre/#findComment-756019 Compartilhar em outros sites More sharing options...
Kydrai 146 Postado Julho 2, 2009 Share Postado Julho 2, 2009 (editado) if(lastHitKiller ~= FALSE) then if(isPlayer(lastHitKiller) == TRUE) then hitKillerName = getCreatureName(lastHitKiller) else hitKillerName = getCreatureName(lastHitKiller) end Acho que não precisa do "if(isPlayer(lastHitKiller) == TRUE) then", pq ele vai realizar sempre a msm função. if(lastHitKiller ~= FALSE) then hitKillerName = getCreatureName(lastHitKiller) O resto parece bom :smile_positivo: Editado Julho 2, 2009 por kydrai Link para o comentário https://xtibia.com/forum/topic/115435-creatureevents-anunciador-de-quem-mata-e-quem-morre/#findComment-756041 Compartilhar em outros sites More sharing options...
xxterrivel 0 Postado Julho 2, 2009 Share Postado Julho 2, 2009 (editado) Anúncio Removido Editado Julho 3, 2009 por Daniel Oliveira Remover anúncio de servidor~ Link para o comentário https://xtibia.com/forum/topic/115435-creatureevents-anunciador-de-quem-mata-e-quem-morre/#findComment-756234 Compartilhar em outros sites More sharing options...
Merchant 0 Postado Julho 2, 2009 Share Postado Julho 2, 2009 Usuário xxterrivel cuidado rapaz, aqui não é lugar de divulgar servidor não. Peço que da próxima vez não aconteça isto novamente, caso ao contrário poderá levar alerta. Abraços Link para o comentário https://xtibia.com/forum/topic/115435-creatureevents-anunciador-de-quem-mata-e-quem-morre/#findComment-756242 Compartilhar em outros sites More sharing options...
951357 1 Postado Julho 2, 2009 Autor Share Postado Julho 2, 2009 Acho que não precisa do "if(isPlayer(lastHitKiller) == TRUE) then", pq ele vai realizar sempre a msm função. Eu não quis retirar nenhuma função pois desse jeito funcionou perfeitamente. =D Cya ~ Link para o comentário https://xtibia.com/forum/topic/115435-creatureevents-anunciador-de-quem-mata-e-quem-morre/#findComment-756379 Compartilhar em outros sites More sharing options...
951357 1 Postado Julho 3, 2009 Autor Share Postado Julho 3, 2009 Gostaria de adicionar uma nova variação para o sistema: Lembrando que o sistema funcionará da mesma maneira mas terá efeitos diferentes. Primeiro vamos ao script: playerdeath.lua local config = { deathListEnabled = getBooleanFromString(getConfigInfo('deathListEnabled')), sqlType = getConfigInfo('sqlType'), maxDeathRecords = getConfigInfo('maxDeathRecords') } config.sqlType = config.sqlType == "sqlite" and DATABASE_ENGINE_SQLITE or DATABASE_ENGINE_MYSQL function onDeath(cid, corpse, lastHitKiller, mostDamageKiller) if(config.deathListEnabled ~= TRUE) then return end local hitKillerName = "field item" local damageKillerName = "" if(lastHitKiller ~= FALSE) then if(isPlayer(lastHitKiller) == TRUE) then hitKillerName = getCreatureName(lastHitKiller) else hitKillerName = getCreatureName(lastHitKiller) end doBroadcastMessage(cid, ""..hitKillerName.." Matou "..getPlayerName(cid)..".", TALKTYPE_ORANGE_1) if(mostDamageKiller ~= FALSE and mostDamageKiller ~= lastHitKiller and getCreatureName(mostDamageKiller) ~= getCreatureName(lastHitKiller)) then if(isPlayer(mostDamageKiller) == TRUE) then damageKillerName = getPlayerGUID(mostDamageKiller) else damageKillerName = getCreatureName(mostDamageKiller) end end end db.executeQuery("INSERT INTO `player_deaths` (`player_id`, `time`, `level`, `killed_by`, `altkilled_by`) VALUES (" .. getPlayerGUID(cid) .. ", " .. os.time() .. ", " .. getPlayerLevel(cid) .. ", " .. db.escapeString(hitKillerName) .. ", " .. db.escapeString(damageKillerName) .. ");") local rows = db.getResult("SELECT `player_id` FROM `player_deaths` WHERE `player_id` = " .. getPlayerGUID(cid) .. ";") if(rows:getID() ~= -1) then local amount = rows:getRows(true) - config.maxDeathRecords if(amount > 0) then if(config.sqlType == DATABASE_ENGINE_SQLITE) then for i = 1, amount do db.executeQuery("DELETE FROM `player_deaths` WHERE `rowid` = (SELECT `rowid` FROM `player_deaths` WHERE `player_id` = " .. getPlayerGUID(cid) .. " ORDER BY `time` LIMIT 1);") end else db.executeQuery("DELETE FROM `player_deaths` WHERE `player_id` = " .. getPlayerGUID(cid) .. " ORDER BY `time` LIMIT " .. amount .. ";") end end end end Alteração realizada em relação ao primeiro script: Alterei a linha doBroadcastMessage(cid, ""..hitKillerName.." Matou "..getPlayerName(cid)..".", TALKTYPE_ORANGE_1). Motivo da alteração Nada em relação à BUG. Apenas altera a mensagem enviada quando o player é morto e altera o tipo da mensagem, sendo de cor laranja. Dúvidas, poste aqui. Cya ~ Link para o comentário https://xtibia.com/forum/topic/115435-creatureevents-anunciador-de-quem-mata-e-quem-morre/#findComment-756448 Compartilhar em outros sites More sharing options...
Stefano26 0 Postado Julho 5, 2009 Share Postado Julho 5, 2009 Completamente perfeito, implementado no meu OT. Eu tava tentando fazer uma coisa parecida, era assim : Eu takei uma SD eu vc e vc morreu : Eu matou vc com uma sudden death rune <- e isso mudaria de acordo com o tipo, mostraria o nome da spell e etc. Mas, você está APROVADO Link para o comentário https://xtibia.com/forum/topic/115435-creatureevents-anunciador-de-quem-mata-e-quem-morre/#findComment-757519 Compartilhar em outros sites More sharing options...
951357 1 Postado Julho 7, 2009 Autor Share Postado Julho 7, 2009 Completamente perfeito, implementado no meu OT. Eu tava tentando fazer uma coisa parecida, era assim : Eu takei uma SD eu vc e vc morreu : Eu matou vc com uma sudden death rune <- e isso mudaria de acordo com o tipo, mostraria o nome da spell e etc. Mas, você está APROVADO Olá Stefano26, Realmente não sei se existe tal função que permita dizer com qual ataque o jogador foi morto. Acho que não existe. Mas nada é impossível! Quem sabe algum dia isso aconteça, não é mesmo? Obrigado pelos elogios. Cya ~ Link para o comentário https://xtibia.com/forum/topic/115435-creatureevents-anunciador-de-quem-mata-e-quem-morre/#findComment-758271 Compartilhar em outros sites More sharing options...
tadzio 0 Postado Julho 8, 2009 Share Postado Julho 8, 2009 Teria como fazer que só jogadores fossem aparecer. ex: se o jogador morre pra dragon n aparece nada ou que pegasse o namedescription do bixo ex: nameDescription="a demon" a demon killed Xd Xd ps.: já mudei pra killed em vez de matou pq meu server tem jogadores de outros países. Link para o comentário https://xtibia.com/forum/topic/115435-creatureevents-anunciador-de-quem-mata-e-quem-morre/#findComment-759345 Compartilhar em outros sites More sharing options...
951357 1 Postado Julho 9, 2009 Autor Share Postado Julho 9, 2009 Teria como fazer que só jogadores fossem aparecer.ex: se o jogador morre pra dragon n aparece nada ou que pegasse o namedescription do bixo ex: nameDescription="a demon" a demon killed Xd Xd ps.: já mudei pra killed em vez de matou pq meu server tem jogadores de outros países. Não sei se é possível fazer esse script mas acho que deve envolver algo que verifique se é player ou não e, se for, realiza a função de enviar BroadcastMessage. Como estou sem tempo não poderei ajudá-lo com tal script. Esper que alguém possa auxiliá-lo. Cya ~ Link para o comentário https://xtibia.com/forum/topic/115435-creatureevents-anunciador-de-quem-mata-e-quem-morre/#findComment-759492 Compartilhar em outros sites More sharing options...
hugo2326 4 Postado Julho 25, 2009 Share Postado Julho 25, 2009 Script ruim.. Pois eu tenho um Ot com 150 On! Uns 50 é Power Abusing.. Fikam matando diretooo! ai vai fika o tempo todo msg aparecendo! ex: Zezin mato luizin Zezin mato luizin Zezin mato luizin Zezin mato luizin Zezin mato luizin Zezin mato luizin Zezin mato luizin .... Link para o comentário https://xtibia.com/forum/topic/115435-creatureevents-anunciador-de-quem-mata-e-quem-morre/#findComment-767812 Compartilhar em outros sites More sharing options...
G0han 0 Postado Julho 29, 2009 Share Postado Julho 29, 2009 Então, meu ot estava funcionando perfeitamente com a funcao do broadcast e dar um item pro player que matasse porem nao funcionava a deathlist Agora funciona a deathlist e o broadcast, porem nao funciona o addplayeritem será que voce poderia me dizer como usar essa funcao nesse script? eu ja tentei: doPlayerAddItem(hitKillerName, 2152, 2, TRUE) mas nao consegui. Valeu ! Link para o comentário https://xtibia.com/forum/topic/115435-creatureevents-anunciador-de-quem-mata-e-quem-morre/#findComment-770052 Compartilhar em outros sites More sharing options...
jennao 4 Postado Julho 29, 2009 Share Postado Julho 29, 2009 Bem Legal Seu Script Ele Funfo Aki No Serv Parabens Link para o comentário https://xtibia.com/forum/topic/115435-creatureevents-anunciador-de-quem-mata-e-quem-morre/#findComment-770055 Compartilhar em outros sites More sharing options...
Demonbholder 420 Postado Agosto 16, 2009 Share Postado Agosto 16, 2009 Muitooo bom esse script cara e otra coisa, gostei das piadas mucio kkkkkkkk Link para o comentário https://xtibia.com/forum/topic/115435-creatureevents-anunciador-de-quem-mata-e-quem-morre/#findComment-779441 Compartilhar em outros sites More sharing options...
Posts Recomendados