G0

[pedido]recompensa Quando Mata Player

Por G0han, 06 de jul. de 2009 em Archived

tibia
script
otserv
12
1.6k
G0hanG
06 de julho de 2009 às 22:21

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

KydraiK
07 de julho de 2009 às 01:23

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.

G0hanG
07 de julho de 2009 às 19:35

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

gabrielf10G
08 de julho de 2009 às 18:17

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).

4 semanas depois...
cagaioC
30 de julho de 2009 às 01:17

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 Julho 30 por cagaio

jacknightJ
30 de julho de 2009 às 14:29

@cagaio esse q vc postou ja pronto pra ser usado ? o.O

 

preciza ter mais algum arkivo p isso aee roda ?

cagaioC
30 de julho de 2009 às 14:44

Axo q Naaao :S

 

Tbm kero saber se preciza de mais algo ou é so isso ae q eu postei :/

marcaodailhaM
01 de agosto de 2009 às 13:59

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 Agosto 1 por Cotar

cagaioC
02 de agosto de 2009 às 02:43

Aff nao entendii :S

 

Eu tenhoo q Cria um Arquivo Chamado owned.lua ?

marcaodailhaM
02 de agosto de 2009 às 03:27
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!

cagaioC
02 de agosto de 2009 às 13:48

intao mais aii ta o problema eu nao tenho a scripiti essa q o cara posto ai em cima ta certa ? :/

 

Tem como faze um tuto enssinano naao ? :'S

WiltryW
06 de agosto de 2009 às 15:56

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.