[pedido]recompensa Quando Mata Player

G0han
Por G0han
em Lixeira Pública

G0han

avatar
Campones
Campones

INFOS

Grupo: CamponesRegistrado: 21/09/07Posts: 12Char no Tibia: Gohan of Sky

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

Kydrai

"Keep Your Mind Wide Open"
avatar
Visconde
Visconde

INFOS

Grupo: ViscondeRegistrado: 21/08/06Posts: 250

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.

~ Kydrai
Programador / Scripter

 

sign.png

G0han

avatar
Campones
Campones

INFOS

Grupo: CamponesRegistrado: 21/09/07Posts: 12Char no Tibia: Gohan of Sky

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

gabrielf10

avatar
Visconde
Visconde

INFOS

Grupo: ViscondeRegistrado: 23/11/07Posts: 309

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

cagaio

avatar
Campones
Campones

INFOS

Grupo: CamponesRegistrado: 24/07/08Posts: 52Char no Tibia: Zepherus

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

jacknight

avatar
Campones
Campones

INFOS

Grupo: CamponesRegistrado: 17/03/09Posts: 8Char no Tibia: Soul Orbidain

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

 

preciza ter mais algum arkivo p isso aee roda ?

cagaio

avatar
Campones
Campones

INFOS

Grupo: CamponesRegistrado: 24/07/08Posts: 52Char no Tibia: Zepherus

Axo q Naaao :S

 

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

marcaodailha

Hellboy
avatar
Campones
Campones

INFOS

Grupo: CamponesRegistrado: 29/03/08Posts: 50Char no Tibia: Cotar

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!

"Nada é tão ruim que não possa piorar!"

 

Cotar.jpg

 

 

 

getip.gif

cagaio

avatar
Campones
Campones

INFOS

Grupo: CamponesRegistrado: 24/07/08Posts: 52Char no Tibia: Zepherus

Aff nao entendii :S

 

Eu tenhoo q Cria um Arquivo Chamado owned.lua ?

marcaodailha

Hellboy
avatar
Campones
Campones

INFOS

Grupo: CamponesRegistrado: 29/03/08Posts: 50Char no Tibia: Cotar
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!

"Nada é tão ruim que não possa piorar!"

 

Cotar.jpg

 

 

 

getip.gif

cagaio

avatar
Campones
Campones

INFOS

Grupo: CamponesRegistrado: 24/07/08Posts: 52Char no Tibia: Zepherus

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

Wiltry

avatar
Visconde
Visconde

INFOS

Grupo: ViscondeRegistrado: 03/07/08Posts: 306

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.

Atenciosamente,
Wiltry
<div align='center'><b>Wiltry 2008~2009</b></div>
<div align='center'>Mapper & Scripter</div>
<div align='center'><img src="http://img263.imageshack.us/img263/9130/beyond.png" border="0" class="linked-sig-image" /></div>
vlw guww :*