Hail Xtibianos!
Desenvolvi esse sistema pois achei legal o npc fazer isso.
O que o sistema faz?
Ele seta o focus do npc em um player quando o player se aproxima dele e espera por 5 segundos.
Se o player não "falar" com o npc, o npc ignora ele (não foca mais o player).
Mas o player pode "falar" com o npc quando quiser (não interfere em nada nesse sistema).
Em npchandler.lua:
Procure:
CitarNpcHandler = {
Adicione dentro da tabela:
CitarfocusIgnore = nil,
Procure:
Citarfunction NpcHandler:new(keywordHandler)
Antes da função:
Citarsetmetatable(obj.messages, self.messages)
Adicione:
Citarobj.focusIgnore = {}
Procure:
Citarfunction NpcHandler:onThink()
Dentro do escopo de:
Citarif(callback == nil or callback()) then
Adicione:
-- Focus system by Marcryzius Devil local npcPos = getCreaturePosition(getNpcId()) -- essa função é existente no TFS Crying Damson. Certifique-se que existe essa função em seu servidor. local spectators = getSpectators(npcPos, 3,3) for _,uid in pairs(spectators) do if not(self:isFocused(uid)) and (isPlayer(uid)) then if not(self.focusIgnore[uid])then self.focusIgnore[uid] = os.time()+5 end -- 5 segundos. if(self.focusIgnore[uid] >= os.time())then doNpcSetCreatureFocus(uid) return else doNpcSetCreatureFocus(0) end end end for focus,tempo in pairs(self.focusIgnore) do if isPlayer(focus) and not(self:isInRange(focus))then self.focusIgnore[focus] = nil doNpcSetCreatureFocus(0) end end
Pronto. Adicionado.