O sistema de npc fight e um npc de batalha ele mesmo batalha com o player.
Primeiramente voce precisa configurar que creature o poder dele vai ser exemplo um "Demon" então a vida,hit e spells seram do demon ja o newtype sera o do npc.
E literamente um batalha com o npc.
Crie um arquivo xml em npc chamado de fight e coloque isto
<npc name="Fight" script="data/npc/scripts/fight.lua" walkinterval="0" floorchange="0"> <health now="100" max="100"/> <look type="134" head="0" body="0" legs="0" feet="0" addons="0"/> <parameters> <parameter key="message_greet" value="Para batalhar nos diga {aceitar}." /> <parameter key="message_farewell" value="Ate mais." /> <parameter key="message_walkaway" value="Ate mais." /> </parameters> </npc>
Agora va em npc/scripts crie um arquivo chamado fight.lua e coloque isto
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)
local position = getPlayerPosition(cid)
local powerdemonster = "Demon" -------------Coloque aki o poder da creature tera exemplo hit,spells e vida o outfit sera o mesmo do npc------
if(not npcHandler:isFocused(cid)) then
return false
end
local talkUser = NPCHANDLER_CONVBEHAVIOR == CONVERSATION_DEFAULT and 0 or cid
function doCreatureNpcInTimes()
local npc = "Fight"
local position = {x=1016,y=1019,z=7}
doCreateNpc(npc, position)
return true
end
function doStartDuelNpc()
local npcesta = {x=1016,y=1019,z=7} ---- Coloque aqui a posiçao de onde o npc esta(Não e obrigatorio eu testei mais se existir mais de um npc com este nome e necessario)
local npcname = "Fight"
doRemoveCreature(getCreatureByName(npcesta,npcname))
return true
end
if msgcontains(msg, 'aceitar') then
local playerpos = getPlayerPosition(cid)
local npcl = {lookType = 134} ----Coloque o look type do npc aqui(Super recomendavel)
local tempo = 60
local monster = doCreateMonster("Demon", playerpos)
doSetCreatureOutfit(monster, npcl, -1)
addEvent(doCreatureNpcInTimes, tempo* 10000)
doStartDuelNpc()
else
selfSay('Diga aceitar para batalhar', cid)
end
return true
end
npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)
npcHandler:addModule(FocusModule:new())
Importante
E super recomendavel apenas um npc deste tipo no seu mapa se quiser mais tera que alterar o nome do npc no script.