Ir para conteúdo

[pedido]recompensa Quando Mata Player


G0han

Posts Recomendados

Tipo do script: addItem

Protocolo (versão do Tibia): 8.4

Servidor utilizado: TFS 0.3.1.1231

Nível de experiência: 20x

 

Adicionais/Informações:

È o seguinte eu queria uma script, se possivel introduzida no playerdeath.lua

que quando um tal player matasse o outro, o player que matasse, ganhasse um item ou dinheiro

e só, eu ja tentei doPlayerAddItem(cid,param,1) usando todas as variaveis do playerdeath.lua, mas nao consegui.

 

Vou mandar aqui meu playerdeath.lua:

local config = {

deathListEnabled = getBooleanFromString(getConfigInfo('deathListEnabled')),

sqlType = getConfigInfo('sqlType'),

maxDeathRecords = getConfigInfo('maxDeathRecords')

}

function onDeath(cid, corpse, lastHitKiller, mostDamageKiller)

if(config.deathListEnabled == TRUE) then

local hitKillerName = "field item"

local damageKillerName = ""

if(lastHitKiller ~= FALSE) then

if(isPlayer(lastHitKiller) == TRUE) then

hitKillerName = getPlayerGUID(lastHitKiller)

else

hitKillerName = getCreatureName(lastHitKiller)

end

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:numRows(true) - config.maxDeathRecords)

if(amount > 0) then

if(config.sqlType == "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

end

function onDeath(cid, corpse, killer)

local player = getCreatureName(cid)

local killername = getCreatureName(killer)

local level = getPlayerLevel(cid)

local levelkiller = getPlayerLevel(killer)

if getPlayerLevel(cid) >= 0 then

broadcastMessage(""..player.." ["..level.."] acabou de ser morto(a) por "..killername.." ["..levelkiller.."].",19)

else

return TRUE

end

end

Obrigado

Link para o comentário
Compartilhar em outros sites

Vc usou a function onDeath 2 vezes, mas pelo que vc falou isso deve estar funcionando.

Se vc fosse usar o doPlayerAddItem seria assim:

doPlayerAddItem(cid, itemid, count, canDropOnMap)

Pode por isso dps do:

broadcastMessage(""..player.." ["..level.."] acabou de ser morto(a) por "..killername.." ["..levelkiller.."].",19)

Fica assim:

broadcastMessage(""..player.." ["..level.."] acabou de ser morto(a) por "..killername.." ["..levelkiller.."].",19)
doPlayerAddItem(killer, 2160, 10, TRUE)

 

Acho que isso deve dar, se tiver com erro avisa qual o erro que da.

Link para o comentário
Compartilhar em outros sites

Nossa cara, muito obrigado mesmo, voce salvou meu otserver

Agora olha, se nao for pedir muito, tem como dar um determinado valor de gps entre 100 gps e 1000 gps?

 

Valeu

Link para o comentário
Compartilhar em outros sites

GOOhan, nao entendo muito de scripts mas pelo que dei uma olhada no script do kydrai, (o ultimo bb code)

onde está o 2160 é o id de crystal e onde está o 10 é a quantidade.

(não sou scripter, é só uma suposição).

Link para o comentário
Compartilhar em outros sites

  • 3 weeks later...

pow keria bota isso tbm no meu serve como eu fasso posta ele pronto ae plx :S

 

FICARIA TIPO ASSIM ?

local config = {

deathListEnabled = getBooleanFromString(getConfigInfo('deathListEnabled')),

sqlType = getConfigInfo('sqlType'),

maxDeathRecords = getConfigInfo('maxDeathRecords')

}

function onDeath(cid, corpse, lastHitKiller, mostDamageKiller)

if(config.deathListEnabled == TRUE) then

local hitKillerName = "field item"

local damageKillerName = ""

if(lastHitKiller ~= FALSE) then

if(isPlayer(lastHitKiller) == TRUE) then

hitKillerName = getPlayerGUID(lastHitKiller)

else

hitKillerName = getCreatureName(lastHitKiller)

end

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:numRows(true) - config.maxDeathRecords)

if(amount > 0) then

if(config.sqlType == "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

end

function onDeath(cid, corpse, killer)

local player = getCreatureName(cid)

local killername = getCreatureName(killer)

local level = getPlayerLevel(cid)

local levelkiller = getPlayerLevel(killer)

if getPlayerLevel(cid) >= 0 then

broadcastMessage(""..player.." ["..level.."] acabou de ser morto(a) por "..killername.." ["..levelkiller.."].",19)

doPlayerAddItem(killer,2160,10,TRUE)

else

return TRUE

end

end

 

??? ::::::::S

Editado por cagaio
Link para o comentário
Compartilhar em outros sites

Está faltando a tag no creaturescripts.xml

 

<event type="death" name="PlayerDeath" event="script" value="owned.lua"/>

 

Agora salva o script ai em cima como owned

Se quiser outro nome para o script muda onde está em negrito no quote.

 

Confere ai pessoal não sei se é isso mesmo!

 

Grande abraço!

Editado por Cotar
Link para o comentário
Compartilhar em outros sites

Aff nao entendii :S

 

Eu tenhoo q Cria um Arquivo Chamado owned.lua ?

 

Arquivo não véio, uma tag(linha de comando) dentro do teu arquivo creaturescripts.xml que se encontra na pasta creaturescripts.

Depois você copia, cola e renomeia para onwed um arquivo qualquer dentro da pasta scripts, apaga o script que está lá e cola o teu script.

 

Grande abraço!

Link para o comentário
Compartilhar em outros sites

Dúvida do GOOHAN sanada, então tópico fechado.

Para as outras duvidas aqui, olhem:

 

local config = {

deathListEnabled = getBooleanFromString(getConfigInfo('deathListEnabled')),

sqlType = getConfigInfo('sqlType'),

maxDeathRecords = getConfigInfo('maxDeathRecords')

}

function onDeath(cid, corpse, lastHitKiller, mostDamageKiller)

if(config.deathListEnabled == TRUE) then

local hitKillerName = "field item"

local damageKillerName = ""

if(lastHitKiller ~= FALSE) then

if(isPlayer(lastHitKiller) == TRUE) then

hitKillerName = getPlayerGUID(lastHitKiller)

else

hitKillerName = getCreatureName(lastHitKiller)

end

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:numRows(true) - config.maxDeathRecords)

if(amount > 0) then

if(config.sqlType == "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

end

function onDeath(cid, corpse, killer)

local player = getCreatureName(cid)

local killername = getCreatureName(killer)

local level = getPlayerLevel(cid)

local levelkiller = getPlayerLevel(killer)

if getPlayerLevel(cid) >= 0 then

broadcastMessage(""..player.." ["..level.."] acabou de ser morto(a) por "..killername.." ["..levelkiller.."].",19)

doPlayerAddItem(killer, 2160, 10, TRUE)

else

return TRUE

end

end

Coloque isso sobre o seu script playerdeath.lua em creaturescripts.

Apenas isso creio eu.

 

Abraços.

Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novos posts.
×
×
  • Criar Novo...