NE
pedido

Heart System

Por NewAge, 17 de nov. de 2012 em Scripts

rep +
script
13
2.3k
NewAgeN
17 de novembro de 2012 às 15:09

To usando esse sistema pra dropar o coração do player quando é morto no pvp. Mas quando os jogadores estão duelando em PVP Zone, colocado pelo RME, o coração não dropa. Acho que isso acontece pq o jogador não chega a morrer, ele é teleportado pro temple quando fica sem vida, ai o coração não vem. Alguém sabe como arrumar?

 

hearts.lua

 

function onDeath(cid, corpse, lastHitKiller, mostDamageKiller)
   local cidpos = getPlayerPosition(lastHitKiller)
   loot = 5943
   item = doPlayerAddItem(lastHitKiller,loot,1)
   if(isPlayer(lastHitKiller) == TRUE) then
    hitKillerName = getPlayerName(lastHitKiller)
    doSetItemSpecialDescription(item,"This is the heart of "..getPlayerName(cid).." killed at Level "..getPlayerLevel(cid).." by "..hitKillerName..".")
    doPlayerSendTextMessage(lastHitKiller, MESSAGE_STATUS_CONSOLE_ORANGE, "You Killed " .. getCreatureName(cid) .. ".")
    doSendMagicEffect(cidpos,12)
   else
    hitKillerName = getCreatureName(lastHitKiller)
    doSetItemSpecialDescription(item,"This is the heart of "..getPlayerName(cid).." killed at Level "..getPlayerLevel(cid).." by a "..hitKillerName..".")
   end
   setItemName(item, ""..getPlayerName(cid).."\'s Heart")
   return TRUE
end

 

creaturescripts.xml

 

<event type="death" name="Reward" event="script" value="hearts.lua"/>

VodkartV
17 de novembro de 2012 às 15:15

isso mesmo amigo, o jogador não chega a morrer... Troque de função, mude de onDeath para onPrepareDeath,

 

abraços

Editado Novembro 17 por Vodkart

NewAgeN
17 de novembro de 2012 às 15:21

[Error-CreatureEvent::ConfigureEvent] No valid type for creature event: onPrepareDeath.

Da isso no console quando o player morre

VodkartV
17 de novembro de 2012 às 15:22

u mad?

 

tem que refazer o script e mudar a tag cara

NewAgeN
17 de novembro de 2012 às 15:26

Eu mudei de OnDeath pra OnPrepareDeath ali na tag e

no script de

 

function onDeath(cid, corpse, lastHitKiller, mostDamageKiller)

 

pra

 

function onPrepareDeath(cid, corpse, lastHitKiller, mostDamageKiller)

 

não seria isso? Tem como vc refazer pra mim?

brun123B
17 de novembro de 2012 às 15:28

tem que mudar a tag no creaturescripts.xml, de type="death" para type="preparedeath"

 

a function onPrepareDeath não tem esse tanto de parâmetros aí não, experimenta colocar só o cid, deve funcionar

Editado Novembro 17 por brun123

NewAgeN
17 de novembro de 2012 às 15:34

Fiz isso ai, parou de dar erro, só que agora não dropa o coração, mesma coisa de antes

VodkartV
17 de novembro de 2012 às 20:26

acho que assim funciona

 

function onPrepareDeath(cid, deathList)    
local item = 5943
if isPlayer(cid) and isPlayer(deathList[1]) then
local add = doPlayerAddItem(deathList[1],item,1)
doSetItemSpecialDescription(add,"This is the heart of "..getPlayerName(cid).." killed at Level "..getPlayerLevel(cid).." by "..getPlayerName(deathList[1])..".")
doPlayerSendTextMessage(deathList[1], MESSAGE_STATUS_CONSOLE_ORANGE, "You Killed " .. getCreatureName(cid) .. ".")
doSendMagicEffect(getPlayerPosition(deathList[1]),12)
end
return true
end

NewAgeN
17 de novembro de 2012 às 20:36

Não funcionou, e não aparece nenhum erro no console. O player não dropa o coração

VodkartV
17 de novembro de 2012 às 21:05

já sei oque era, é que no seu script a função está errada.

 

 

function onPrepareDeath(cid, deathList)    
local item = 5943
if isPlayer(cid) and isPlayer(deathList[1]) then
local add = doPlayerAddItem(deathList[1],item,1)
doItemSetAttribute(add, "description","This is the heart of "..getPlayerName(cid).." killed at Level "..getPlayerLevel(cid).." by "..getPlayerName(deathList[1])..".")
doPlayerSendTextMessage(deathList[1], MESSAGE_STATUS_CONSOLE_ORANGE, "You Killed " .. getCreatureName(cid) .. ".")
doSendMagicEffect(getPlayerPosition(deathList[1]),12)
end
return true
end

NewAgeN
17 de novembro de 2012 às 21:36

Ainda não funciona

VodkartV
17 de novembro de 2012 às 21:59

? eu testei aqui mlk

 

 

 

<event type="preparedeath" name="HeartSys" event="script" value="nome do seu script.lua"/>

 

e no seu login.lua antes do último return true adc

 

registerCreatureEvent(cid, "HeartSys")

NewAgeN
17 de novembro de 2012 às 22:08

Agora funcionou, vlw mano

Rep +