BravHart 21 Postado Janeiro 17, 2011 Share Postado Janeiro 17, 2011 (editado) 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 Janeiro 17, 2011 por BravHart Link para o comentário Compartilhar em outros sites More sharing options...
Demonbholder 420 Postado Maio 16, 2011 Share Postado Maio 16, 2011 (editado) 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 Maio 16, 2011 por Demonbholder Link para o comentário Compartilhar em outros sites More sharing options...
BravHart 21 Postado Maio 16, 2011 Autor Share Postado Maio 16, 2011 (editado) 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 Maio 16, 2011 por BravHart Link para o comentário Compartilhar em outros sites More sharing options...
Posts Recomendados