samuel157
/root
- Joined
- Mar 19, 2010
- Messages
- 447
- Solutions
- 3
- Reaction score
- 49
- Location
- São Paulo, Brazil
- GitHub
- Samuel10M
NPC .xml
NPC: script
creaturescript: script:
XML:
<?xml version="1.0" encoding="UTF-8"?>
<npc name="Reviver" script="data/npc/scripts/reviver.lua" walkinterval="2000" floorchange="0">
<health now="100" max="100"/>
<look type="300" head="0" body="0" legs="0" feet="0" corpse="5995"/>
<parameters />
</npc>
NPC: script
Lua:
local MONEY_AMOUNT = 1000 --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
npcHandler:setMessage(MESSAGE_GREET, "Ola |PLAYERNAME|. Eu posso te {reviver} no local aonde voce morreu recentemente por uma certa quantidade de dinheiro.")
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('Voce precisa de ' .. MONEY_AMOUNT .. ' gold(s) para ressuscitar no local aonde voce 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=playerRebornPositionX, y=playerRebornPositionY, z=playerRebornPositionZ })
doSendMagicEffect(getThingPos(cid), MAGIC_EFFECT_TELEPORT)
selfSay('Ok, voce foi ressuscitado', cid)
end
else
selfSay('Desculpe, mais voce nao possui o dinheiro suficiente.', cid)
end
talkState[talkUser] = 0
elseif(msgcontains(msg, 'no') and isInArray({1}, talkState[talkUser]) == TRUE) then
talkState[talkUser] = 0
selfSay('Ok, ate 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('Voce nao morreu nenhuma vez ainda.', cid)
return false
end
doTeleportThing(cid, { x=playerRebornPositionX, y=playerRebornPositionY, z=playerRebornPositionZ })
return true
end
creaturescript: script:
Lua:local PLAYER_REBORN_POSITION_X = 66541 local PLAYER_REBORN_POSITION_Y = 66542 local PLAYER_REBORN_POSITION_Z = 66543 function onDeath(cid, corpse, deathList) if not isPlayer(cid) then return true end local player_position = getThingPos(cid) setPlayerStorageValue(cid, PLAYER_REBORN_POSITION_X, player_position.x) setPlayerStorageValue(cid, PLAYER_REBORN_POSITION_Y, player_position.y) setPlayerStorageValue(cid, PLAYER_REBORN_POSITION_Z, player_position.z) return TRUE end
Attachments
-
Screenshot_1.png38.1 KB · Views: 6 · VirusTotal