Ir para conteúdo

Npc Guard (Dallheim) De Rookgard


BravHart

Posts Recomendados

Galera preciso do NPC Dallheim o guarda de Rookgard que fica na ponte ao norte.

 

_____

Ocupação: Guard

 

Notas: Dallheim protege a cidade de criaturas que podem vir do norte. Se você ficar envenenado, queimado ou eletrificado ele pode restaurar seus hitpoints até 65; somente fale "hi". Ele impede jogadores de level 1 ao querer cruzar a ponte.

 

Itens negociáveis: Nenhum.

______

 

Desde Já, Obrigado

Editado por BravHart
Link para o comentário
Compartilhar em outros sites

  • 3 months later...

Certo, vamos lá!

 

Em data/npcs, crie um arquivo .xml e cole isto nele:

 

<?xml version="1.0" encoding="UTF-8"?>
<npc name="NomeDoNpc" script="data/npc/scripts/NomeDoArquivo.lua" walkinterval="0" floorchange="0">
<health now="100" max="100"/>
<look typeex="1448" corpse="3128"/> 
</npc>

 

Edite o nome, o look type e o local onde ficará o script. Não edite o walkinterval.

 

Agora vá em data/npcs/scripts, crie um arquivo .lua e cole isto nele:

 

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) 

local time = 3600*24 -- tempo entre uma cura e outra

if msg == "hi" then
if getCreatureCondition(cid, CONDITION_FIRE) or getCreatureCondition(cid, CONDITION_ENERGY) or getCreatureCondition(cid, CONDITION_POISON) then
if getPlayerStorageValue(cid, 38000) - os.time() <= 0 then
doCreatureAddHealth(cid, 65)
selfSay("You may get better now.", cid)
setPlayerStorageValue(cid, 38000, time + os.time())
else
selfSay("I already helped you today, now go away!", cid)
end
else
selfSay("Greetings tibian!", cid)
end
end
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

return true
end

npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)
npcHandler:addModule(FocusModule:new())

 

Pronto, o npc está feito!

 

Agora, pelo map editor, coloque um actionid nos tiles da ponte.

 

Feito isso, vá em data/movevents/scripts, crie um arquivo .lua e cole isto nele:

 

function onStepIn(cid, item, position, fromPosition)

local npc = {x=158, y=52, z=7, stackpos=253} -- posição do npc, não mude o stackpos

if isPlayer(cid) then
if getPlayerLevel(cid) == 1 then
doCreatureSay(getThingFromPos(npc).uid, "You can not continue.", 1)
doTeleportThing(cid, fromPosition)
end
end

return TRUE
end

 

Por último, vá em data/movevents, abra o arquivo movements.xml e cole esta tag nele:

 

<movevent type="StepIn" actionid="37804" event="script" value="NomeDoArquivo.lua"/>

 

Em actionid você coloca o mesmo actionid que colocou pelo mapeditor, e em value o nome do script que você colou o script acima.

 

É isso, testei aqui e funcionou, aguardando confirmação. Até.

Editado por Demonbholder
Link para o comentário
Compartilhar em outros sites

Então, eu peguei o script e fiz como foi pedido. Mas, no momento estou sem tibia no meu computador, então não tenho como testar o NPC por enquanto, assim que eu testar eu edito o post falando sobre o mesmo.

 

Desde já, obrigado! :button_ok:

 

BravHart

Editado por BravHart
Link para o comentário
Compartilhar em outros sites

  • Quem Está Navegando   0 membros estão online

    • Nenhum usuário registrado visualizando esta página.
×
×
  • Criar Novo...