Ir para conteúdo

Npc set focus on player


Poccnn

Posts Recomendados

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:

Citar

NpcHandler = {

 

Adicione dentro da tabela:

Citar

focusIgnore = nil,

 

Procure:

Citar

function NpcHandler:new(keywordHandler)

 

Antes da função:

Citar

setmetatable(obj.messages, self.messages)

 

Adicione:

Citar

obj.focusIgnore                = {}

 

Procure:

Citar

function NpcHandler:onThink()

 

Dentro do escopo de:

Citar

if(callback == nil or callback()) then

 

Adicione:

Spoiler

			-- 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.

 

Link para o comentário
Compartilhar em outros sites

  • 3 years later...
×
×
  • Criar Novo...