VO

[Talk] Deathlist [Fixed/no Crash]

Por Vodkart, 02 de mai. de 2012 em Actions e Talkactions

script
47
9.8k
VodkartV
02 de maio de 2012 às 23:09

Atualizado V1.0:

Mostra últimas mortes do servidor:
1x19B.png

você pode usar o comando !deathlist NOME
ex: !deathlist Carlin:
ar7Kj.png




in your db execute this query:

CREATE TABLE death_list (
id INTEGER NOT NULL,
player_id INTEGER NOT NULL,
date INTEGER NOT NULL,
level INTEGER NOT NULL,
killer_name INTEGER NOT NULL,
PRIMARY KEY ( id )
);

creaturescript

death_list.lua
function onDeath(cid, corpse, deathList)
local str = ""
for _, pid in ipairs(deathList) do
if isCreature(pid) == true then
str = str.."".. (str == "" and "" or ",") ..""..getCreatureName(pid)
else
str = str.."".. (str == "" and "" or ",") .." a field item"
end
end
str = str.."."
death = str .. " ".. (getPlayerBlessing(cid, 5) and "[Blessed]" or getPlayerSlotItem(cid, 2).itemid == 2173 and "[AOL]" or "")
db.executeQuery("INSERT INTO `death_list` (`player_id`, `date`, `level`, `killer_name`) VALUES ('".. getPlayerGUID(cid).."', '".. os.time() .."', '".. getPlayerLevel(cid) .."', '".. death .."');")
return true
end

creaturescript.xml
<event type="death" name="DeathList" event="script" value="death_list.lua"/>

creaturescript/script/login.lua
registerCreatureEvent(cid, "DeathList")

talkactions

deathlist.lua
limit = 5
function onSay(cid, words, param, channel)
str = ""
if param == "" then
local qry = db.getResult("SELECT `player_id`, `date`, `level`, `killer_name` FROM `death_list` ORDER BY `date` DESC LIMIT 0, " .. limit)
if(qry:getID() ~= -1) then
repeat
str = str .."\n "..os.date("%d %B %Y %X ", qry:getDataInt("date")).." "..getPlayerNameByGUID(qry:getDataString("player_id")).." died at level "..qry:getDataInt("level").." by:\n"..qry:getDataString("killer_name")
until not(qry:next())
qry:free()
else
str = "Não há mortes no servidor."
end
doPlayerPopupFYI(cid, "Last Deaths:\n\n" .. str)
return true
end
local getGuid = getPlayerGUIDByName(param:lower())
if not getGuid then doPlayerSendCancel(cid, "Este Player não existe.") return true end
local qry = db.getResult("SELECT `id`, `date`, `level`, `killer_name` FROM `death_list` WHERE `player_id` = " .. getGuid .." ORDER BY `date` DESC LIMIT 0, " .. limit)
if(qry:getID() ~= -1) then
repeat
str = str .."\n "..os.date("%d %B %Y %X ", qry:getDataInt("date")).." died at level "..qry:getDataInt("level").." by:\n"..qry:getDataString("killer_name")
until not(qry:next())
qry:free()
else
str = "Não há mortes."
end
doPlayerPopupFYI(cid, "Last Deaths of: " .. param .. ".\n\n" .. str)
return true
end

talkactions.xml
<talkaction words="!deathlist" script="deathlist.lua"/>

Editado Julho 28 por Vodkart

ZmovirZ
03 de maio de 2012 às 01:36

Otimo script vodkart, parabéns reputado

alldakieA
03 de maio de 2012 às 03:29

Bacana o script Vodkart, com certeza vou usa-lo, +REP

jhon992J
03 de maio de 2012 às 07:54

Tava na hra de alguem postar um deathlist que funcione. happy.png

Rep+

VodkartV
05 de maio de 2012 às 11:44

ATUALIZADO PARA V.1

 

- Mostra agora se o player morreu [blessed] ou com [Aol]

 

- Mostra últimas mortes do servidor

ZmovirZ
05 de maio de 2012 às 16:19

Agora com os bang de [Aol] e [bless] fico melhor ainda

VodkartV
08 de maio de 2012 às 12:49

obrigado pelos comentários

qualquer dúvida só postar

VildenV
08 de maio de 2012 às 13:15

Rep+, não existe um deathlist que funcione, e agora além de ter

esta com funções extras.

 

Parabéns.

1 mês depois...
VodkartV
21 de junho de 2012 às 21:16

obrigado pelos comentários

 

Bring

Up

My

Post

asgropoldoA
22 de junho de 2012 às 01:28

Mano sou muito noob nessa parada de script mas gostei muito do seu script e estava querendo colocar no servidor que estou criando. No início da escrito: in your db execute this query <- onde tenho que colocar o que está escrito no retângulo, o que eu tenho que fazer ?

VodkartV
22 de junho de 2012 às 10:45

Mano sou muito noob nessa parada de script mas gostei muito do seu script e estava querendo colocar no servidor que estou criando. No início da escrito: in your db execute this query <- onde tenho que colocar o que está escrito no retângulo, o que eu tenho que fazer ?

 

 

1° Abra o programa Sqlite

2° Selecione a database do seu server, o arquivo é esse ".s3db", por exemplo o "forgottenserver.s3db"

3° na parte superior do programa tem a aba "Tools",clica nela e seleciona "Open SQL query editor" ou (ALT + E) se preferir

4° Vai abrir uma janela branca,nela você coloca isso:

CREATE TABLE death_list (
       id                INTEGER NOT NULL,
       player_id   INTEGER NOT NULL,
       date            INTEGER NOT NULL,
       level      INTEGER NOT NULL,
       killer_name INTEGER NOT NULL,
       PRIMARY KEY ( id )
);

5° Depois clica no ícone do raio ali na parte de cima ou aperta o botão F9 que vai fazer com que a query seja executada.

Nathan96N
22 de junho de 2012 às 13:22

Aqui no meu server só esta mostrando na lista de mortes quem deu o ultimo hit, i não como mostra na imagem morto por warlock, stone golem.

VodkartV
22 de junho de 2012 às 13:30

então olha se você colocou o script direito do onDeath, porque ta funcionando normal aqui, outra coisa... qual versão do seu ot?

Nathan96N
22 de junho de 2012 às 13:33

fiz tudo igual ta la em cima, 8.60

VodkartV
22 de junho de 2012 às 16:50

tenta usar assim então:

 

 

 

function onDeath(cid, corpse, deathList)
local str = ""
       for _, pid in ipairs(deathList) do
               if isCreature(pid) == true then
str = str.."".. (str == "" and "" or ",") ..""..getCreatureName(pid)
               else
str = str.."".. (str == "" and "" or ",") .." a field item"
               end
       end
str = str.."."
death = str .. " ".. (getPlayerBlessing(cid, 5) and "[blessed]" or getPlayerSlotItem(cid, 2).itemid == 2173 and "[AOL]" or "")
db.executeQuery("INSERT INTO `death_list` (`player_id`, `date`, `level`, `killer_name`) VALUES ('".. getPlayerGUID(cid).."', '".. os.time() .."', '".. getPlayerLevel(cid) .."', '".. death .."');")
return true
end

Editado Junho 22 por Vodkart