SHOW VLW..APROVADO
- Fórum
- OTServ
- Recursos
- Scripting
- Globalevents e Spells
- [Creatureevents] Anunciador De Quem Mata E Quem Morre.
[Creatureevents] Anunciador De Quem Mata E Quem Morre.
Por 951357, 02 de jul. de 2009 em Globalevents e Spells
info
Grupo: Artesão
Registrado: 30/06/09
Posts: 101
Reputação: 0
Char no Tibia: Sem Nenhum

info
Grupo: Visconde
Registrado: 20/08/06
Posts: 250
Reputação: +146

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 por kydrai
info
Grupo: Campones
Registrado: 14/04/09
Posts: 5
Reputação: 0
Char no Tibia: [GoD]MaTHeuS

Anúncio Removido
Editado Julho 2 por Daniel Oliveira
Remover anúncio de servidor~
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
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 ~
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 ~
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
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 ~
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.
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 ~
info
Grupo: Campones
Registrado: 17/01/08
Posts: 22
Reputação: +4
Char no Tibia: Divine

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
....
info
Grupo: Campones
Registrado: 21/09/07
Posts: 12
Reputação: 0
Char no Tibia: Gohan of Sky
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 !
Bem Legal Seu Script
Ele Funfo Aki No Serv
Parabens ![]()
info
Grupo: Infante
Registrado: 13/10/08
Posts: 1.6k
Reputação: +420
Char no Tibia: Demonbholder

Muitooo bom esse script cara e otra coisa, gostei das piadas mucio kkkkkkkk






info
Grupo: Campones
Registrado: 25/05/07
Posts: 53
Reputação: +1
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:
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 por helinholima