local MONEY_AMOUNT = 1000000 -- Quantidade de dinheiro (em gold coins) que o player necessitará para reviver
local MAGIC_EFFECT_TELEPORT = 65 -- Efeito que aparecerá quando o player for teleportado
local PLAYER_REBORN_POSITION_X = 66541
local PLAYER_REBORN_POSITION_Y = 66542
local PLAYER_REBORN_POSITION_Z = 66543
local keywordHandler = KeywordHandler:new()
local npcHandler = NpcHandler:new(keywordHandler)
NpcSystem.parseParameters(npcHandler)
local talkState = {}
function onCreatureAppear(cid)
npcHandler:onCreatureAppear(cid)
end
function onCreatureDisappear(cid)
npcHandler:onCreatureDisappear(cid)
end
function onCreatureSay(cid, type, msg)
npcHandler:onCreatureSay(cid, type, msg)
end
function onThink()
npcHandler:onThink()
end
function creatureSayCallback(cid, type, msg)
if not npcHandler:isFocused(cid) then
return false
end
local talkUser = NPCHANDLER_CONVBEHAVIOR == CONVERSATION_DEFAULT and 0 or cid
if msgcontains(msg, 'reviver') or msgcontains(msg, 'revive') then
selfSay('Você precisa de ' .. MONEY_AMOUNT .. ' gold(s) para ressuscitar no local onde você morreu recentemente', cid)
talkState[talkUser] = 1
elseif msgcontains(msg, 'yes') and talkState[talkUser] == 1 then
if getPlayerMoney(cid) >= MONEY_AMOUNT then
doPlayerRemoveMoney(cid, MONEY_AMOUNT)
if teleportPlayerToPositionReborn(cid) then
doTeleportThing(cid, {x = PLAYER_REBORN_POSITION_X, y = PLAYER_REBORN_POSITION_Y, z = PLAYER_REBORN_POSITION_Z})
doSendMagicEffect(getCreaturePosition(cid), MAGIC_EFFECT_TELEPORT)
selfSay('Ok, você foi ressuscitado', cid)
end
else
selfSay('Desculpe, mas você não possui dinheiro suficiente.', cid)
end
talkState[talkUser] = 0
elseif msgcontains(msg, 'no') and talkState[talkUser] == 1 then
talkState[talkUser] = 0
selfSay('Ok, até mais.', cid)
end
return true
end
npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)
npcHandler:addModule(FocusModule:new())
function teleportPlayerToPositionReborn(cid)
local playerRebornPositionX = getPlayerStorageValue(cid, PLAYER_REBORN_POSITION_X)
local playerRebornPositionY = getPlayerStorageValue(cid, PLAYER_REBORN_POSITION_Y)
local playerRebornPositionZ = getPlayerStorageValue(cid, PLAYER_REBORN_POSITION_Z)
if playerRebornPositionX == -1 or playerRebornPositionY == -1 or playerRebornPositionZ == -1 then
selfSay('Você não morreu nenhuma vez ainda.', cid)
return false
end
doTeleportThing(cid, {x = playerRebornPositionX, y = playerRebornPositionY, z = playerRebornPositionZ})
return true
end
Correção na Função teleportPlayerToPositionReborn:
Os valores PLAYER_REBORN_POSITION_X, PLAYER_REBORN_POSITION_Y e PLAYER_REBORN_POSITION_Z devem ser usados corretamente para obter a posição armazenada do jogador.
Correção na Lógica de Teleporte:
A função doTeleportThing é chamada uma vez no teleportPlayerToPositionReborn e não precisa ser chamada novamente na função principal.
Adição de Mensage