Ir para conteúdo

Imcompatibilidade :|


Dwig

Posts Recomendados

Estou com um Pequeno Problema de Imcompatibilidade

Apesar de Ja saber a Solução do Meu Problema, ainda Não

Sei como solucionar.

 

é O seguinte:

 

Eu baixei aqui mesmo no Fórum um Servidor

(Real Global Map)

 

Ele Contém um ótimo Mapa 8.60,o melhor que ja vi, ele foi Postado pelo Doohz Rush

Porém o Tópico foi Fechado por Falta de Atualizações

 

Eu Editei algumas Coisas ao meu Gosto nele e Queria Adicionar um War System

Eu usei um War system postado Aqui no Fórum(Acho que o unico postado)

War System Do Walef Xavier

 

No Post do War System pede pra que Seja usado o TFS.04 e os Item.OTB Anexos ao Post

 

Mas Acontece um Pequeno Problema, Aquele TFS.04 Só é compativel com Aquele Item.OTB

Mas se eu Substituir o Item.otb no Servidor que eu Quero(Aquele postado la em cima)Ao

abrir o Servidor da um Erro no Mapa de Não reconhecer Itens pelo Map Todo.

 

Resumo:Não consegui usar aquele TFS.04 no meu Servidor

 

Porém consegui Editar esse War System no meu Servidor usando o Distro que ja

Acompanha ele, mas Da Apenas um Problema Após uma Guild Invitar a outra Pra Guerra

(isso Funciona Normal, sem Erros) Quando a Outra Vai Aceitar Não Acontece Nada.

Dei uma Pesquisada e Encontrei a solução pro Problema Aqui mesmo No Fórum

 

Aqui

 

o Distro que eu Uso Deve Conter o Seguinte Comando ao Ser Compilado

 

'-D__WAR_SYSTEM__'

 

Eu Entrei em Contato com o Doohz Rush Pra Ver se ele Não Poderia Editar o Post do Servidor

Com um Distro ja Editado com esse Parametro, ele Me disse Que Não pois o Post foi Fechado.

Pedi os Sources pra ver Se eu mesmo Poderia compila-los mas ele Disse que As Sources São

Do Doidin, e eu não consegui entrar em contato com ele Aqui pelo Fórum.

 

SeráQue Alguem poderia me Fazer o Favor de Conseguir As Sources do WE DO Ots

ou uma Distro ja Adicionado o parametro que Falta e Compativel Com o Item.otb e o Mapa

Do Servidor do Doohz Rush, pq eu Queria muito Usar Aquele Mapa.

 

Sei Que Vários Usuarios Tão com o Mesmo Erro...Por Favor Ajudem!

Qualquer Coisa ADD msn

 

raffael_ladwig@hotmail.com

 

Doidin, Caso você leia esse Tópico, Pfvor, entre Em contato

 

Agradeço desde Já a Todos que Ajudarem

Link para o comentário
Compartilhar em outros sites

ai, andei olhando aqui nas minhas milhares pastas de otserv e acho que achei distro que voce conseguira ultiliza-lo, se não me engano ele ja vem com war system, mais tive problemas com "sha1"

 

Download TFS

 

Usei esse TFS Porém ele é imcompativel com o item.OTB do seu Servidor

 

errrorh.png

 

Ta legal Achei um Item.otb Compativel mas Agora

o TFS da Conflito com o Mapa

 

Fuuuuuuuuuuu

 

erroev.png

Link para o comentário
Compartilhar em outros sites

use o qual acabei de lhe passar (items.otb)

 

edit

 

é simples,

vá em seu config.lua

 

dê ctrl+f wedo, vai estar lá assim:

mapName = "wedo"

mude para:

mapName = "wedo.otbm"

 

mude tambem

worldType = "pvp"

para

worldType = "open"

 

se der algum outro bug, estarei aqui.

 

Ajudei? Rep+

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

O war System funciono :]

Porém da uns erros :[

 

olha aew quando o ot ta abrindo da esse Erro

derrc.png

 

Aew Sempre que vc Diz HI pra algun npc da esse Erro

 

dert.png

 

=/

Link para o comentário
Compartilhar em outros sites

Procure se o arquivo npcsystem.lua existe na pasta do seu OT em seuot\data\npc\lib\npcsystem

 

Caso não exista, crie um com isso dentro (talvez nao funcione por causa da versão)

 

if(NpcSystem == nil) then
-- Loads the underlying classes of the npcsystem.
dofile('data/npc/lib/npcsystem/keywordhandler.lua')
dofile('data/npc/lib/npcsystem/queue.lua')
dofile('data/npc/lib/npcsystem/npchandler.lua')
dofile('data/npc/lib/npcsystem/modules.lua')

-- Global npc constants:

-- Keyword nestling behavior. For more information look at the top of keywordhandler.lua
KEYWORD_BEHAVIOR = BEHAVIOR_NORMAL_EXTENDED

-- Greeting and unGreeting keywords. For more information look at the top of modules.lua
FOCUS_GREETWORDS = {'hi', 'hello', 'hey'}
FOCUS_FAREWELLWORDS = {'bye', 'farewell', 'cya'}

-- The word for requesting trade window. For more information look at the top of modules.lua
SHOP_TRADEREQUEST = {'offer', 'trade'}

-- The word for accepting/declining an offer. CAN ONLY CONTAIN ONE FIELD! For more information look at the top of modules.lua
SHOP_YESWORD = {'yes'}
SHOP_NOWORD = {'no'}

-- Pattern used to get the amount of an item a player wants to buy/sell.
PATTERN_COUNT = '%d+'

-- Talkdelay behavior. For more information, look at the top of npchandler.lua.
NPCHANDLER_TALKDELAY = TALKDELAY_ONTHINK

-- Conversation behavior. For more information, look at the top of npchandler.lua.
NPCHANDLER_CONVBEHAVIOR = CONVERSATION_DEFAULT

-- Constant strings defining the keywords to replace in the default messages.
--	For more information, look at the top of npchandler.lua...
TAG_PLAYERNAME = '|PLAYERNAME|'
TAG_ITEMCOUNT = '|ITEMCOUNT|'
TAG_TOTALCOST = '|TOTALCOST|'
TAG_ITEMNAME = '|ITEMNAME|'
TAG_QUEUESIZE = '|QUEUESIZE|'

NpcSystem = {}

-- Gets an npcparameter with the specified key. Returns nil if no such parameter is found.
function NpcSystem.getParameter(key)
	local ret = getNpcParameter(tostring(key))
	if((type(ret) == 'number' and ret == 0) or ret == nil) then
		return nil
	else
		return ret
	end
end

-- Parses all known parameters for the npc. Also parses parseable modules.
function NpcSystem.parseParameters(npcHandler)
	local ret = NpcSystem.getParameter('idletime')
	if(ret ~= nil) then
		npcHandler.idleTime = tonumber(ret)
	end
	local ret = NpcSystem.getParameter('talkradius')
	if(ret ~= nil) then
		npcHandler.talkRadius = tonumber(ret)
	end
	local ret = NpcSystem.getParameter('message_greet')
	if(ret ~= nil) then
		npcHandler:setMessage(MESSAGE_GREET, ret)
	end
	local ret = NpcSystem.getParameter('message_farewell')
	if(ret ~= nil) then
		npcHandler:setMessage(MESSAGE_FAREWELL, ret)
	end
	local ret = NpcSystem.getParameter('message_decline')
	if(ret ~= nil) then
		npcHandler:setMessage(MESSAGE_DECLINE, ret)
	end
	local ret = NpcSystem.getParameter('message_needmorespace')
	if(ret ~= nil) then
		npcHandler:setMessage(MESSAGE_NEEDMORESPACE, ret)
	end
	local ret = NpcSystem.getParameter('message_needspace')
	if(ret ~= nil) then
		npcHandler:setMessage(MESSAGE_NEEDSPACE, ret)
	end
	local ret = NpcSystem.getParameter('message_sendtrade')
	if(ret ~= nil) then
		npcHandler:setMessage(MESSAGE_SENDTRADE, ret)
	end
	local ret = NpcSystem.getParameter('message_noshop')
	if(ret ~= nil) then
		npcHandler:setMessage(MESSAGE_NOSHOP, ret)
	end
	local ret = NpcSystem.getParameter('message_oncloseshop')
	if(ret ~= nil) then
		npcHandler:setMessage(MESSAGE_ONCLOSESHOP, ret)
	end
	local ret = NpcSystem.getParameter('message_onbuy')
	if(ret ~= nil) then
		npcHandler:setMessage(MESSAGE_ONBUY, ret)
	end
	local ret = NpcSystem.getParameter('message_onsell')
	if(ret ~= nil) then
		npcHandler:setMessage(MESSAGE_ONSELL, ret)
	end
	local ret = NpcSystem.getParameter('message_missingmoney')
	if(ret ~= nil) then
		npcHandler:setMessage(MESSAGE_MISSINGMONEY, ret)
	end
	local ret = NpcSystem.getParameter('message_needmoney')
	if(ret ~= nil) then
		npcHandler:setMessage(MESSAGE_NEEDMONEY, ret)
	end
	local ret = NpcSystem.getParameter('message_missingitem')
	if(ret ~= nil) then
		npcHandler:setMessage(MESSAGE_MISSINGITEM, ret)
	end
	local ret = NpcSystem.getParameter('message_needitem')
	if(ret ~= nil) then
		npcHandler:setMessage(MESSAGE_NEEDITEM, ret)
	end
	local ret = NpcSystem.getParameter('message_idletimeout')
	if(ret ~= nil) then
		npcHandler:setMessage(MESSAGE_IDLETIMEOUT, ret)
	end
	local ret = NpcSystem.getParameter('message_walkaway')
	if(ret ~= nil) then
		npcHandler:setMessage(MESSAGE_WALKAWAY, ret)
	end
	local ret = NpcSystem.getParameter('message_alreadyfocused')
	if(ret ~= nil) then
		npcHandler:setMessage(MESSAGE_ALREADYFOCUSED, ret)
	end
	local ret = NpcSystem.getParameter('message_placedinqueue')
	if(ret ~= nil) then
		npcHandler:setMessage(MESSAGE_PLACEDINQUEUE, ret)
	end
	local ret = NpcSystem.getParameter('message_buy')
	if(ret ~= nil) then
		npcHandler:setMessage(MESSAGE_BUY, ret)
	end
	local ret = NpcSystem.getParameter('message_sell')
	if(ret ~= nil) then
		npcHandler:setMessage(MESSAGE_SELL, ret)
	end
	local ret = NpcSystem.getParameter('message_bought')
	if(ret ~= nil) then
		npcHandler:setMessage(MESSAGE_BOUGHT, ret)
	end
	local ret = NpcSystem.getParameter('message_sold')
	if(ret ~= nil) then
		npcHandler:setMessage(MESSAGE_SOLD, ret)
	end

	-- Parse modules.
	for parameter, module in pairs(Modules.parseableModules) do
		local ret = NpcSystem.getParameter(parameter)
		if(ret ~= nil) then
			local number = tonumber(ret)
			if(number ~= 0 and module.parseParameters ~= nil) then
				local instance = module:new()
				npcHandler:addModule(instance)
				instance:parseParameters()
			end
		end
	end
end
end

Link para o comentário
Compartilhar em outros sites

Abra o arquivo default.lua em data\npcs\scripts\ e troque tudo por isso:

 

local keywordHandler = KeywordHandler:new()
local npcHandler = NpcHandler:new(keywordHandler)
NpcSystem.parseParameters(npcHandler)

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

npcHandler:addModule(FocusModule:new())

 

No arquivo npchandler.lua em \data\npc\lib\npcsystem

 

Troque tudo por:

-- Advanced NPC System (Created by Jiddo),
-- Modified by Talaturen.

if(NpcHandler == nil) then
-- Constant talkdelay behaviors.
TALKDELAY_NONE = 0 -- No talkdelay. Npc will reply immedeatly.
TALKDELAY_ONTHINK = 1 -- Talkdelay handled through the onThink callback function. (Default)
TALKDELAY_EVENT = 2 -- Not yet implemented

-- Currently applied talkdelay behavior. TALKDELAY_ONTHINK is default.
NPCHANDLER_TALKDELAY = TALKDELAY_ONTHINK

-- Constant conversation behaviors.
CONVERSATION_DEFAULT = 0 -- Conversation through default window, like it was before 8.2 update.
CONVERSATION_PRIVATE = 1 -- Conversation through NPCs chat window, as of 8.2 update. (Default)
	--Small Note: Private conversations also means the NPC will use multi-focus system.

-- Currently applied conversation behavior. CONVERSATION_DEFAULT is default.
NPCHANDLER_CONVBEHAVIOR = CONVERSATION_DEFAULT

-- Constant indexes for defining default messages.
MESSAGE_GREET 			= 1 -- When the player greets the npc.
MESSAGE_FAREWELL 		= 2 -- When the player unGreets the npc.
MESSAGE_BUY 			= 3 -- When the npc asks the player if he wants to buy something.
MESSAGE_ONBUY 			= 4 -- When the player successfully buys something via talk.
MESSAGE_BOUGHT			= 5 -- When the player bought something through the shop window.
MESSAGE_SELL 			= 6 -- When the npc asks the player if he wants to sell something.
MESSAGE_ONSELL 			= 7 -- When the player successfully sells something via talk.
MESSAGE_SOLD			= 8 -- When the player sold something through the shop window.
MESSAGE_MISSINGMONEY	= 9 -- When the player does not have enough money.
MESSAGE_NEEDMONEY		= 10 -- Same as above, used for shop window.
MESSAGE_MISSINGITEM		= 11 -- When the player is trying to sell an item he does not have.
MESSAGE_NEEDITEM		= 12 -- Same as above, used for shop window.
MESSAGE_NEEDSPACE 		= 13 -- When the player don't have any space to buy an item
MESSAGE_NEEDMORESPACE	= 14 -- When the player has some space to buy an item, but not enough space
MESSAGE_IDLETIMEOUT		= 15 -- When the player has been idle for longer then idleTime allows.
MESSAGE_WALKAWAY		= 16 -- When the player walks out of the talkRadius of the npc.
MESSAGE_DECLINE			= 17 -- When the player says no to something.
MESSAGE_SENDTRADE		= 18 -- When the npc sends the trade window to the player
MESSAGE_NOSHOP			= 19 -- When the npc's shop is requested but he doesn't have any
MESSAGE_ONCLOSESHOP		= 20 -- When the player closes the npc's shop window
MESSAGE_ALREADYFOCUSED	= 21 -- When the player already has the focus of this npc.
MESSAGE_PLACEDINQUEUE	= 22 -- When the player has been placed in the costumer queue.

-- Constant indexes for callback functions. These are also used for module callback ids.
CALLBACK_CREATURE_APPEAR 	= 1
CALLBACK_CREATURE_DISAPPEAR = 2
CALLBACK_CREATURE_SAY 		= 3
CALLBACK_ONTHINK 			= 4
CALLBACK_GREET 				= 5
CALLBACK_FAREWELL 			= 6
CALLBACK_MESSAGE_DEFAULT 	= 7
CALLBACK_PLAYER_ENDTRADE 	= 8
CALLBACK_PLAYER_CLOSECHANNEL= 9
CALLBACK_ONBUY				= 10
CALLBACK_ONSELL				= 11

-- Addidional module callback ids
CALLBACK_MODULE_INIT		= 12
CALLBACK_MODULE_RESET		= 13

-- Constant strings defining the keywords to replace in the default messages.
TAG_PLAYERNAME = '|PLAYERNAME|'
TAG_ITEMCOUNT = '|ITEMCOUNT|'
TAG_TOTALCOST = '|TOTALCOST|'
TAG_ITEMNAME = '|ITEMNAME|'
TAG_QUEUESIZE = '|QUEUESIZE|'

NpcHandler = {
	keywordHandler = nil,
	focuses = nil,
	talkStart = nil,
	idleTime = 90,
	talkRadius = 4,
	talkDelayTime = 1, -- Seconds to delay outgoing messages.
	queue = nil,
	talkDelay = nil,
	callbackFunctions = nil,
	modules = nil,
	shopItems = nil, -- They must be here since ShopModule uses "static" functions
	messages = {
		-- These are the default replies of all npcs. They can/should be changed individually for each npc.
		[MESSAGE_GREET] 			= 'Welcome, |PLAYERNAME|! I have been expecting you.',
		[MESSAGE_FAREWELL] 			= 'Good bye, |PLAYERNAME|!',
		[MESSAGE_BUY] 				= 'Do you want to buy |ITEMCOUNT| |ITEMNAME| for |TOTALCOST| gold coins?',
		[MESSAGE_ONBUY] 			= 'It was a pleasure doing business with you.',
		[MESSAGE_BOUGHT] 			= 'Bought |ITEMCOUNT|x |ITEMNAME| for |TOTALCOST| gold.',
		[MESSAGE_SELL] 				= 'Do you want to sell |ITEMCOUNT| |ITEMNAME| for |TOTALCOST| gold coins?',
		[MESSAGE_ONSELL] 			= 'Thank you for this |ITEMNAME|, |PLAYERNAME| gold.',
		[MESSAGE_SOLD]	 			= 'Sold |ITEMCOUNT|x |ITEMNAME| for |TOTALCOST| gold.',
		[MESSAGE_MISSINGMONEY]		= 'Sorry, you don\'t have enough money.',
		[MESSAGE_NEEDMONEY] 		= 'You do not have enough money.',
		[MESSAGE_MISSINGITEM] 		= 'You don\'t even have that item, |PLAYERNAME|!',
		[MESSAGE_NEEDITEM]	 		= 'You do not have this object.',
		[MESSAGE_NEEDSPACE]			= 'You do not have enough capacity.',
		[MESSAGE_NEEDMORESPACE]		= 'You do not have enough capacity for all items.',
		[MESSAGE_IDLETIMEOUT] 		= 'Next, please!',
		[MESSAGE_WALKAWAY] 			= 'How rude!',
		[MESSAGE_DECLINE]			= 'Not good enough, is it... ?',
		[MESSAGE_SENDTRADE]			= 'Here\'s my offer, |PLAYERNAME|. Don\'t you like it?',
		[MESSAGE_NOSHOP]			= 'Sorry, I\'m not offering anything.',
		[MESSAGE_ONCLOSESHOP]		= 'Thank you, come back when you want something more.',
		[MESSAGE_ALREADYFOCUSED]	= '|PLAYERNAME|! I am already talking to you...',
		[MESSAGE_PLACEDINQUEUE] 	= '|PLAYERNAME|, please wait for your turn. There are |QUEUESIZE| customers before you.'
	}
}

-- Creates a new NpcHandler with an empty callbackFunction stack.
function NpcHandler:new(keywordHandler)
	local obj = {}
	obj.callbackFunctions = {}
	obj.modules = {}
	if(NPCHANDLER_CONVBEHAVIOR ~= CONVERSATION_DEFAULT) then
		obj.focuses = {}
		obj.talkStart = {}
	else
		obj.queue = Queue:new(obj)
		obj.focuses = 0
		obj.talkStart = 0
	end
	obj.talkDelay = {}
	obj.keywordHandler = keywordHandler
	obj.messages = {}
	obj.shopItems = {}

	setmetatable(obj.messages, self.messages)
	self.messages.__index = self.messages

	setmetatable(obj, self)
	self.__index = self
	return obj
end

-- Re-defines the maximum idle time allowed for a player when talking to this npc.
function NpcHandler:setMaxIdleTime(newTime)
	self.idleTime = newTime
end

-- Attackes a new keyword handler to this npchandler
function NpcHandler:setKeywordHandler(newHandler)
	self.keywordHandler = newHandler
end

-- Function used to change the focus of this npc.
function NpcHandler:addFocus(newFocus)
	if(NPCHANDLER_CONVBEHAVIOR ~= CONVERSATION_DEFAULT) then
		if(self:isFocused(newFocus)) then
			return
		end

		table.insert(self.focuses, newFocus)
	else
		self.focuses = newFocus
	end
	self:updateFocus()
end
NpcHandler.changeFocus = NpcHandler.addFocus --"changeFocus" looks better for CONVERSATION_DEFAULT

-- Function used to verify if npc is focused to certain player
function NpcHandler:isFocused(focus)
	if(NPCHANDLER_CONVBEHAVIOR ~= CONVERSATION_DEFAULT) then
		for k,v in pairs(self.focuses) do
			if v == focus then
				return true
			end
		end
		return false
	end
	return (self.focuses == focus)
end

-- This function should be called on each onThink and makes sure the npc faces the player it is talking to.
--	Should also be called whenever a new player is focused.
function NpcHandler:updateFocus()
	if(NPCHANDLER_CONVBEHAVIOR ~= CONVERSATION_DEFAULT) then
		for pos, focus in pairs(self.focuses) do
			if(focus ~= nil) then
				doNpcSetCreatureFocus(focus)
				return
			end
		end
		doNpcSetCreatureFocus(0)
	else
		doNpcSetCreatureFocus(self.focuses)
	end
end

-- Used when the npc should un-focus the player.
function NpcHandler:releaseFocus(focus)
	if(NPCHANDLER_CONVBEHAVIOR ~= CONVERSATION_DEFAULT) then
		if(not self:isFocused(focus)) then
			return
		end

		local pos = nil
		for k,v in pairs(self.focuses) do
			if v == focus then
				pos = k
			end
		end
		table.remove(self.focuses, pos)
		self.talkStart[focus] = nil

		if isPlayer(focus) then
			closeShopWindow(focus) --Even if it can not exist, we need to prevent it.
		end
		self:updateFocus()
	else
		if isPlayer(focus) then
			closeShopWindow(focus)
		end
		self:changeFocus(0)
	end
end

-- Returns the callback function with the specified id or nil if no such callback function exists.
function NpcHandler:getCallback(id)
	local ret = nil
	if(self.callbackFunctions ~= nil) then
		ret = self.callbackFunctions[id]
	end
	return ret
end

-- Changes the callback function for the given id to callback.
function NpcHandler:setCallback(id, callback)
	if(self.callbackFunctions ~= nil) then
		self.callbackFunctions[id] = callback
	end
end

-- Adds a module to this npchandler and inits it.
function NpcHandler:addModule(module)
	if(self.modules ~= nil) then
		table.insert(self.modules, module)
		module:init(self)
	end
end

-- Calls the callback function represented by id for all modules added to this npchandler with the given arguments.
function NpcHandler:processModuleCallback(id, ...)
	local ret = true
	for i, module in pairs(self.modules) do
		local tmpRet = true
		if(id == CALLBACK_CREATURE_APPEAR and module.callbackOnCreatureAppear ~= nil) then
			tmpRet = module:callbackOnCreatureAppear(...)
		elseif(id == CALLBACK_CREATURE_DISAPPEAR and module.callbackOnCreatureDisappear ~= nil) then
			tmpRet = module:callbackOnCreatureDisappear(...)
		elseif(id == CALLBACK_CREATURE_SAY and module.callbackOnCreatureSay ~= nil) then
			tmpRet = module:callbackOnCreatureSay(...)
		elseif(id == CALLBACK_PLAYER_ENDTRADE and module.callbackOnPlayerEndTrade ~= nil) then
			tmpRet = module:callbackOnPlayerEndTrade(...)
		elseif(id == CALLBACK_PLAYER_CLOSECHANNEL and module.callbackOnPlayerCloseChannel ~= nil) then
			tmpRet = module:callbackOnPlayerCloseChannel(...)
		elseif(id == CALLBACK_ONBUY and module.callbackOnBuy ~= nil) then
			tmpRet = module:callbackOnBuy(...)
		elseif(id == CALLBACK_ONSELL and module.callbackOnSell ~= nil) then
			tmpRet = module:callbackOnSell(...)
		elseif(id == CALLBACK_ONTHINK and module.callbackOnThink ~= nil) then
			tmpRet = module:callbackOnThink(...)
		elseif(id == CALLBACK_GREET and module.callbackOnGreet ~= nil) then
			tmpRet = module:callbackOnGreet(...)
		elseif(id == CALLBACK_FAREWELL and module.callbackOnFarewell ~= nil) then
			tmpRet = module:callbackOnFarewell(...)
		elseif(id == CALLBACK_MESSAGE_DEFAULT and module.callbackOnMessageDefault ~= nil) then
			tmpRet = module:callbackOnMessageDefault(...)
		elseif(id == CALLBACK_MODULE_RESET and module.callbackOnModuleReset ~= nil) then
			tmpRet = module:callbackOnModuleReset(...)
		end
		if(not tmpRet) then
			ret = false
			break
		end
	end
	return ret
end

-- Returns the message represented by id.
function NpcHandler:getMessage(id)
	local ret = nil
	if(self.messages ~= nil) then
		ret = self.messages[id]
	end
	return ret
end

-- Changes the default response message with the specified id to newMessage.
function NpcHandler:setMessage(id, newMessage)
	if(self.messages ~= nil) then
		self.messages[id] = newMessage
	end
end

-- Translates all message tags found in msg using parseInfo
function NpcHandler:parseMessage(msg, parseInfo)
	local ret = msg
	for search, replace in pairs(parseInfo) do
		ret = string.gsub(ret, search, replace)
	end
	return ret
end

-- Makes sure the npc un-focuses the currently focused player
function NpcHandler:unGreet(cid)
	if(not self:isFocused(cid)) then
		return
	end

	local callback = self:getCallback(CALLBACK_FAREWELL)
	if(callback == nil or callback()) then
		if(self:processModuleCallback(CALLBACK_FAREWELL)) then
			if(self.queue == nil or not self.queue:greetNext()) then
				local msg = self:getMessage(MESSAGE_FAREWELL)
				local parseInfo = { [TAG_PLAYERNAME] = getPlayerName(cid) }
				msg = self:parseMessage(msg, parseInfo)
				self:say(msg, cid, true)
				self:releaseFocus(cid)
			end
		end
	end
end

-- Greets a new player.
function NpcHandler:greet(cid)
	if(cid ~= 0) then
		local callback = self:getCallback(CALLBACK_GREET)
		if(callback == nil or callback(cid)) then
			if(self:processModuleCallback(CALLBACK_GREET, cid)) then
				local msg = self:getMessage(MESSAGE_GREET)
				local parseInfo = { [TAG_PLAYERNAME] = getCreatureName(cid) }
				msg = self:parseMessage(msg, parseInfo)
				self:say(msg, cid, true)
			else
				return
			end
		else
			return
		end
	end
	self:addFocus(cid)
end

-- Handles onCreatureAppear events. If you with to handle this yourself, please use the CALLBACK_CREATURE_APPEAR callback.
function NpcHandler:onCreatureAppear(cid)
	local callback = self:getCallback(CALLBACK_CREATURE_APPEAR)
	if(callback == nil or callback(cid)) then
		if(self:processModuleCallback(CALLBACK_CREATURE_APPEAR, cid)) then
			--
		end
	end
end

-- Handles onCreatureDisappear events. If you with to handle this yourself, please use the CALLBACK_CREATURE_DISAPPEAR callback.
function NpcHandler:onCreatureDisappear(cid)
	local callback = self:getCallback(CALLBACK_CREATURE_DISAPPEAR)
	if(callback == nil or callback(cid)) then
		if(self:processModuleCallback(CALLBACK_CREATURE_DISAPPEAR, cid)) then
			if(self:isFocused(cid)) then
				self:unGreet(cid)
			end
		end
	end
end

-- Handles onCreatureSay events. If you with to handle this yourself, please use the CALLBACK_CREATURE_SAY callback.
function NpcHandler:onCreatureSay(cid, msgtype, msg)
	local callback = self:getCallback(CALLBACK_CREATURE_SAY)
	if(callback == nil or callback(cid, msgtype, msg)) then
		if(self:processModuleCallback(CALLBACK_CREATURE_SAY, cid, msgtype, msg)) then
			if(not self:isInRange(cid)) then
				return
			end

			if(self.keywordHandler ~= nil) then
				if(self:isFocused(cid) and (msgtype == TALKTYPE_PRIVATE_PN or NPCHANDLER_CONVBEHAVIOR == CONVERSATION_DEFAULT) or (not self:isFocused(cid))) then
					local ret = self.keywordHandler:processMessage(cid, msg)
					if(not ret) then
						local callback = self:getCallback(CALLBACK_MESSAGE_DEFAULT)
						if(callback ~= nil and callback(cid, msgtype, msg)) then
							if(NPCHANDLER_CONVBEHAVIOR ~= CONVERSATION_DEFAULT) then
								self.talkStart[cid] = os.time()
							else
								self.talkStart = os.time()
							end
						end
					else
						if(NPCHANDLER_CONVBEHAVIOR ~= CONVERSATION_DEFAULT) then
							self.talkStart[cid] = os.time()
						else
							self.talkStart = os.time()
						end
					end
				end
			end
		end
	end
end

-- Handles onPlayerEndTrade events. If you wish to handle this yourself, use the CALLBACK_PLAYER_ENDTRADE callback.
function NpcHandler:onPlayerEndTrade(cid)
	local callback = self:getCallback(CALLBACK_PLAYER_ENDTRADE)
	if(callback == nil or callback(cid)) then
		if(self:processModuleCallback(CALLBACK_PLAYER_ENDTRADE, cid, msgtype, msg)) then
			if(self:isFocused(cid)) then
				local parseInfo = { [TAG_PLAYERNAME] = getPlayerName(cid) }
				local msg = self:parseMessage(self:getMessage(MESSAGE_ONCLOSESHOP), parseInfo)
				self:say(msg, cid)
			end
		end
	end
end

-- Handles onPlayerCloseChannel events. If you wish to handle this yourself, use the CALLBACK_PLAYER_CLOSECHANNEL callback.
function NpcHandler:onPlayerCloseChannel(cid)
	local callback = self:getCallback(CALLBACK_PLAYER_CLOSECHANNEL)
	if(callback == nil or callback(cid)) then
		if(self:processModuleCallback(CALLBACK_PLAYER_CLOSECHANNEL, cid, msgtype, msg)) then
			if(self:isFocused(cid)) then
				self:unGreet(cid)
			end
		end
	end
end

-- Handles onBuy events. If you wish to handle this yourself, use the CALLBACK_ONBUY callback.
function NpcHandler:onBuy(cid, itemid, subType, amount)
	local callback = self:getCallback(CALLBACK_ONBUY)
	if(callback == nil or callback(cid, itemid, subType, amount)) then
		if(self:processModuleCallback(CALLBACK_ONBUY, cid, itemid, subType, amount)) then
			--
		end
	end
end

-- Handles onSell events. If you wish to handle this yourself, use the CALLBACK_ONSELL callback.
function NpcHandler:onSell(cid, itemid, subType, amount)
	local callback = self:getCallback(CALLBACK_ONSELL)
	if(callback == nil or callback(cid, itemid, subType, amount)) then
		if(self:processModuleCallback(CALLBACK_ONSELL, cid, itemid, subType, amount)) then
			--
		end
	end
end

-- Handles onThink events. If you wish to handle this yourself, please use the CALLBACK_ONTHINK callback.
function NpcHandler:onThink()
	local callback = self:getCallback(CALLBACK_ONTHINK)
	if(callback == nil or callback()) then
		if(NPCHANDLER_TALKDELAY == TALKDELAY_ONTHINK) then
			if(NPCHANDLER_CONVBEHAVIOR ~= CONVERSATION_DEFAULT) then
				for cid, talkDelay in pairs(self.talkDelay) do
					if(talkDelay.time ~= nil and talkDelay.message ~= nil and os.time() >= talkDelay.time) then
						selfSay(talkDelay.message, cid, talkDelay.publicize and TRUE or FALSE)
						self.talkDelay[cid] = nil
					end
				end
			elseif(self.talkDelay.time ~= nil and self.talkDelay.message ~= nil and os.time() >= self.talkDelay.time) then
				selfSay(self.talkDelay.message)
				self.talkDelay.time = nil
				self.talkDelay.message = nil
			end
		end

		if(self:processModuleCallback(CALLBACK_ONTHINK)) then
			if(NPCHANDLER_CONVBEHAVIOR ~= CONVERSATION_DEFAULT) then
				for pos, focus in pairs(self.focuses) do
					if(focus ~= nil) then
						if(not self:isInRange(focus)) then
							self:onWalkAway(focus)
						elseif((os.time() - self.talkStart[focus]) > self.idleTime) then
							self:unGreet(focus)
						else
							self:updateFocus()
						end
					end
				end
			elseif(self.focuses ~= 0) then
				if(not self:isInRange(self.focuses)) then
					self:onWalkAway(self.focuses)
				elseif(os.time()-self.talkStart > self.idleTime) then
					self:unGreet(self.focuses)
				else
					self:updateFocus()
				end
			end
		end
	end
end

-- Tries to greet the player with the given cid.
function NpcHandler:onGreet(cid)
	if(self:isInRange(cid)) then
		if(NPCHANDLER_CONVBEHAVIOR == CONVERSATION_PRIVATE) then
			if(not self:isFocused(cid)) then
				self:greet(cid)
				return
			end
		elseif(NPCHANDLER_CONVBEHAVIOR == CONVERSATION_DEFAULT) then
			if(self.focuses == 0) then
				self:greet(cid)
			elseif(self.focuses == cid) then
				local msg = self:getMessage(MESSAGE_ALREADYFOCUSED)
				local parseInfo = { [TAG_PLAYERNAME] = getCreatureName(cid) }
				msg = self:parseMessage(msg, parseInfo)
				self:say(msg)
			else
				if(not self.queue:isInQueue(cid)) then
					self.queue:push(cid)
				end
				local msg = self:getMessage(MESSAGE_PLACEDINQUEUE)
				local parseInfo = { [TAG_PLAYERNAME] = getCreatureName(cid), [TAG_QUEUESIZE] = self.queue:getSize() }
				msg = self:parseMessage(msg, parseInfo)
				self:say(msg)
			end
		end
	end
end

-- Simply calls the underlying unGreet function.
function NpcHandler:onFarewell(cid)
	self:unGreet(cid)
end

-- Should be called on this npc's focus if the distance to focus is greater then talkRadius.
function NpcHandler:onWalkAway(cid)
	if(self:isFocused(cid)) then
		local callback = self:getCallback(CALLBACK_CREATURE_DISAPPEAR)
		if(callback == nil or callback()) then
			if(self:processModuleCallback(CALLBACK_CREATURE_DISAPPEAR, cid)) then
				if(self.queue == nil or not self.queue:greetNext()) then
					local msg = self:getMessage(MESSAGE_WALKAWAY)
					local playerName = getPlayerName(cid)
					if not playerName then
						playerName = -1
					end

					local parseInfo = { [TAG_PLAYERNAME] = playerName }
					msg = self:parseMessage(msg, parseInfo)
					self:say(msg, cid, true)
					self:releaseFocus(cid)
				end
			end
		end
	end
end

-- Returns true if cid is within the talkRadius of this npc.
function NpcHandler:isInRange(cid)
	if not isPlayer(cid) then
		return false
	end

	local distance = getDistanceTo(cid) or -1
	if distance == -1 then
		return false
	end

	return (distance <= self.talkRadius)
end

-- Resets the npc into it's initial state (in regard of the keyrodhandler).
--	All modules are also receiving a reset call through their callbackOnModuleReset function.
function NpcHandler:resetNpc()
	if(self:processModuleCallback(CALLBACK_MODULE_RESET)) then
		self.keywordHandler:reset()
	end
end

-- Makes the npc represented by this instance of NpcHandler say something.
--	This implements the currently set type of talkdelay.
--	shallDelay is a boolean value. If it is false, the message is not delayed. Default value is true.
function NpcHandler:say(message, focus, publicize, shallDelay)
	if(shallDelay == nil) then
		shallDelay = true
	end
	if(NPCHANDLER_TALKDELAY == TALKDELAY_NONE or shallDelay == false) then
		if(NPCHANDLER_CONVBEHAVIOR ~= CONVERSATION_DEFAULT) then
			selfSay(message, focus, publicize and TRUE or FALSE)
			return
		else
			selfSay(message)
			return
		end
	end
	if(NPCHANDLER_CONVBEHAVIOR ~= CONVERSATION_DEFAULT) then
		self.talkDelay[focus] = {
			message = message,
			time = os.time() + self.talkDelayTime,
			publicize = publicize
		}
	else
		self.talkDelay = {
			message = message,
			time = os.time() + self.talkDelayTime
		}
	end
end
end

 

O erro está certamente nesse arquivo npchandler.lua, mas como deram varios erros, é mais facil substituir tudo pra nao dar confusão.

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

Abra o arquivo default.lua em data\npcs\scripts\ e troque tudo por isso:

 

local keywordHandler = KeywordHandler:new()
local npcHandler = NpcHandler:new(keywordHandler)
NpcSystem.parseParameters(npcHandler)

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

npcHandler:addModule(FocusModule:new())

 

No arquivo npchandler.lua em \data\npc\lib\npcsystem

 

Troque tudo por:

-- Advanced NPC System (Created by Jiddo),
-- Modified by Talaturen.

if(NpcHandler == nil) then
-- Constant talkdelay behaviors.
TALKDELAY_NONE = 0 -- No talkdelay. Npc will reply immedeatly.
TALKDELAY_ONTHINK = 1 -- Talkdelay handled through the onThink callback function. (Default)
TALKDELAY_EVENT = 2 -- Not yet implemented

-- Currently applied talkdelay behavior. TALKDELAY_ONTHINK is default.
NPCHANDLER_TALKDELAY = TALKDELAY_ONTHINK

-- Constant conversation behaviors.
CONVERSATION_DEFAULT = 0 -- Conversation through default window, like it was before 8.2 update.
CONVERSATION_PRIVATE = 1 -- Conversation through NPCs chat window, as of 8.2 update. (Default)
	--Small Note: Private conversations also means the NPC will use multi-focus system.

-- Currently applied conversation behavior. CONVERSATION_DEFAULT is default.
NPCHANDLER_CONVBEHAVIOR = CONVERSATION_DEFAULT

-- Constant indexes for defining default messages.
MESSAGE_GREET 			= 1 -- When the player greets the npc.
MESSAGE_FAREWELL 		= 2 -- When the player unGreets the npc.
MESSAGE_BUY 			= 3 -- When the npc asks the player if he wants to buy something.
MESSAGE_ONBUY 			= 4 -- When the player successfully buys something via talk.
MESSAGE_BOUGHT			= 5 -- When the player bought something through the shop window.
MESSAGE_SELL 			= 6 -- When the npc asks the player if he wants to sell something.
MESSAGE_ONSELL 			= 7 -- When the player successfully sells something via talk.
MESSAGE_SOLD			= 8 -- When the player sold something through the shop window.
MESSAGE_MISSINGMONEY	= 9 -- When the player does not have enough money.
MESSAGE_NEEDMONEY		= 10 -- Same as above, used for shop window.
MESSAGE_MISSINGITEM		= 11 -- When the player is trying to sell an item he does not have.
MESSAGE_NEEDITEM		= 12 -- Same as above, used for shop window.
MESSAGE_NEEDSPACE 		= 13 -- When the player don't have any space to buy an item
MESSAGE_NEEDMORESPACE	= 14 -- When the player has some space to buy an item, but not enough space
MESSAGE_IDLETIMEOUT		= 15 -- When the player has been idle for longer then idleTime allows.
MESSAGE_WALKAWAY		= 16 -- When the player walks out of the talkRadius of the npc.
MESSAGE_DECLINE			= 17 -- When the player says no to something.
MESSAGE_SENDTRADE		= 18 -- When the npc sends the trade window to the player
MESSAGE_NOSHOP			= 19 -- When the npc's shop is requested but he doesn't have any
MESSAGE_ONCLOSESHOP		= 20 -- When the player closes the npc's shop window
MESSAGE_ALREADYFOCUSED	= 21 -- When the player already has the focus of this npc.
MESSAGE_PLACEDINQUEUE	= 22 -- When the player has been placed in the costumer queue.

-- Constant indexes for callback functions. These are also used for module callback ids.
CALLBACK_CREATURE_APPEAR 	= 1
CALLBACK_CREATURE_DISAPPEAR = 2
CALLBACK_CREATURE_SAY 		= 3
CALLBACK_ONTHINK 			= 4
CALLBACK_GREET 				= 5
CALLBACK_FAREWELL 			= 6
CALLBACK_MESSAGE_DEFAULT 	= 7
CALLBACK_PLAYER_ENDTRADE 	= 8
CALLBACK_PLAYER_CLOSECHANNEL= 9
CALLBACK_ONBUY				= 10
CALLBACK_ONSELL				= 11

-- Addidional module callback ids
CALLBACK_MODULE_INIT		= 12
CALLBACK_MODULE_RESET		= 13

-- Constant strings defining the keywords to replace in the default messages.
TAG_PLAYERNAME = '|PLAYERNAME|'
TAG_ITEMCOUNT = '|ITEMCOUNT|'
TAG_TOTALCOST = '|TOTALCOST|'
TAG_ITEMNAME = '|ITEMNAME|'
TAG_QUEUESIZE = '|QUEUESIZE|'

NpcHandler = {
	keywordHandler = nil,
	focuses = nil,
	talkStart = nil,
	idleTime = 90,
	talkRadius = 4,
	talkDelayTime = 1, -- Seconds to delay outgoing messages.
	queue = nil,
	talkDelay = nil,
	callbackFunctions = nil,
	modules = nil,
	shopItems = nil, -- They must be here since ShopModule uses "static" functions
	messages = {
		-- These are the default replies of all npcs. They can/should be changed individually for each npc.
		[MESSAGE_GREET] 			= 'Welcome, |PLAYERNAME|! I have been expecting you.',
		[MESSAGE_FAREWELL] 			= 'Good bye, |PLAYERNAME|!',
		[MESSAGE_BUY] 				= 'Do you want to buy |ITEMCOUNT| |ITEMNAME| for |TOTALCOST| gold coins?',
		[MESSAGE_ONBUY] 			= 'It was a pleasure doing business with you.',
		[MESSAGE_BOUGHT] 			= 'Bought |ITEMCOUNT|x |ITEMNAME| for |TOTALCOST| gold.',
		[MESSAGE_SELL] 				= 'Do you want to sell |ITEMCOUNT| |ITEMNAME| for |TOTALCOST| gold coins?',
		[MESSAGE_ONSELL] 			= 'Thank you for this |ITEMNAME|, |PLAYERNAME| gold.',
		[MESSAGE_SOLD]	 			= 'Sold |ITEMCOUNT|x |ITEMNAME| for |TOTALCOST| gold.',
		[MESSAGE_MISSINGMONEY]		= 'Sorry, you don\'t have enough money.',
		[MESSAGE_NEEDMONEY] 		= 'You do not have enough money.',
		[MESSAGE_MISSINGITEM] 		= 'You don\'t even have that item, |PLAYERNAME|!',
		[MESSAGE_NEEDITEM]	 		= 'You do not have this object.',
		[MESSAGE_NEEDSPACE]			= 'You do not have enough capacity.',
		[MESSAGE_NEEDMORESPACE]		= 'You do not have enough capacity for all items.',
		[MESSAGE_IDLETIMEOUT] 		= 'Next, please!',
		[MESSAGE_WALKAWAY] 			= 'How rude!',
		[MESSAGE_DECLINE]			= 'Not good enough, is it... ?',
		[MESSAGE_SENDTRADE]			= 'Here\'s my offer, |PLAYERNAME|. Don\'t you like it?',
		[MESSAGE_NOSHOP]			= 'Sorry, I\'m not offering anything.',
		[MESSAGE_ONCLOSESHOP]		= 'Thank you, come back when you want something more.',
		[MESSAGE_ALREADYFOCUSED]	= '|PLAYERNAME|! I am already talking to you...',
		[MESSAGE_PLACEDINQUEUE] 	= '|PLAYERNAME|, please wait for your turn. There are |QUEUESIZE| customers before you.'
	}
}

-- Creates a new NpcHandler with an empty callbackFunction stack.
function NpcHandler:new(keywordHandler)
	local obj = {}
	obj.callbackFunctions = {}
	obj.modules = {}
	if(NPCHANDLER_CONVBEHAVIOR ~= CONVERSATION_DEFAULT) then
		obj.focuses = {}
		obj.talkStart = {}
	else
		obj.queue = Queue:new(obj)
		obj.focuses = 0
		obj.talkStart = 0
	end
	obj.talkDelay = {}
	obj.keywordHandler = keywordHandler
	obj.messages = {}
	obj.shopItems = {}

	setmetatable(obj.messages, self.messages)
	self.messages.__index = self.messages

	setmetatable(obj, self)
	self.__index = self
	return obj
end

-- Re-defines the maximum idle time allowed for a player when talking to this npc.
function NpcHandler:setMaxIdleTime(newTime)
	self.idleTime = newTime
end

-- Attackes a new keyword handler to this npchandler
function NpcHandler:setKeywordHandler(newHandler)
	self.keywordHandler = newHandler
end

-- Function used to change the focus of this npc.
function NpcHandler:addFocus(newFocus)
	if(NPCHANDLER_CONVBEHAVIOR ~= CONVERSATION_DEFAULT) then
		if(self:isFocused(newFocus)) then
			return
		end

		table.insert(self.focuses, newFocus)
	else
		self.focuses = newFocus
	end
	self:updateFocus()
end
NpcHandler.changeFocus = NpcHandler.addFocus --"changeFocus" looks better for CONVERSATION_DEFAULT

-- Function used to verify if npc is focused to certain player
function NpcHandler:isFocused(focus)
	if(NPCHANDLER_CONVBEHAVIOR ~= CONVERSATION_DEFAULT) then
		for k,v in pairs(self.focuses) do
			if v == focus then
				return true
			end
		end
		return false
	end
	return (self.focuses == focus)
end

-- This function should be called on each onThink and makes sure the npc faces the player it is talking to.
--	Should also be called whenever a new player is focused.
function NpcHandler:updateFocus()
	if(NPCHANDLER_CONVBEHAVIOR ~= CONVERSATION_DEFAULT) then
		for pos, focus in pairs(self.focuses) do
			if(focus ~= nil) then
				doNpcSetCreatureFocus(focus)
				return
			end
		end
		doNpcSetCreatureFocus(0)
	else
		doNpcSetCreatureFocus(self.focuses)
	end
end

-- Used when the npc should un-focus the player.
function NpcHandler:releaseFocus(focus)
	if(NPCHANDLER_CONVBEHAVIOR ~= CONVERSATION_DEFAULT) then
		if(not self:isFocused(focus)) then
			return
		end

		local pos = nil
		for k,v in pairs(self.focuses) do
			if v == focus then
				pos = k
			end
		end
		table.remove(self.focuses, pos)
		self.talkStart[focus] = nil

		if isPlayer(focus) then
			closeShopWindow(focus) --Even if it can not exist, we need to prevent it.
		end
		self:updateFocus()
	else
		if isPlayer(focus) then
			closeShopWindow(focus)
		end
		self:changeFocus(0)
	end
end

-- Returns the callback function with the specified id or nil if no such callback function exists.
function NpcHandler:getCallback(id)
	local ret = nil
	if(self.callbackFunctions ~= nil) then
		ret = self.callbackFunctions[id]
	end
	return ret
end

-- Changes the callback function for the given id to callback.
function NpcHandler:setCallback(id, callback)
	if(self.callbackFunctions ~= nil) then
		self.callbackFunctions[id] = callback
	end
end

-- Adds a module to this npchandler and inits it.
function NpcHandler:addModule(module)
	if(self.modules ~= nil) then
		table.insert(self.modules, module)
		module:init(self)
	end
end

-- Calls the callback function represented by id for all modules added to this npchandler with the given arguments.
function NpcHandler:processModuleCallback(id, ...)
	local ret = true
	for i, module in pairs(self.modules) do
		local tmpRet = true
		if(id == CALLBACK_CREATURE_APPEAR and module.callbackOnCreatureAppear ~= nil) then
			tmpRet = module:callbackOnCreatureAppear(...)
		elseif(id == CALLBACK_CREATURE_DISAPPEAR and module.callbackOnCreatureDisappear ~= nil) then
			tmpRet = module:callbackOnCreatureDisappear(...)
		elseif(id == CALLBACK_CREATURE_SAY and module.callbackOnCreatureSay ~= nil) then
			tmpRet = module:callbackOnCreatureSay(...)
		elseif(id == CALLBACK_PLAYER_ENDTRADE and module.callbackOnPlayerEndTrade ~= nil) then
			tmpRet = module:callbackOnPlayerEndTrade(...)
		elseif(id == CALLBACK_PLAYER_CLOSECHANNEL and module.callbackOnPlayerCloseChannel ~= nil) then
			tmpRet = module:callbackOnPlayerCloseChannel(...)
		elseif(id == CALLBACK_ONBUY and module.callbackOnBuy ~= nil) then
			tmpRet = module:callbackOnBuy(...)
		elseif(id == CALLBACK_ONSELL and module.callbackOnSell ~= nil) then
			tmpRet = module:callbackOnSell(...)
		elseif(id == CALLBACK_ONTHINK and module.callbackOnThink ~= nil) then
			tmpRet = module:callbackOnThink(...)
		elseif(id == CALLBACK_GREET and module.callbackOnGreet ~= nil) then
			tmpRet = module:callbackOnGreet(...)
		elseif(id == CALLBACK_FAREWELL and module.callbackOnFarewell ~= nil) then
			tmpRet = module:callbackOnFarewell(...)
		elseif(id == CALLBACK_MESSAGE_DEFAULT and module.callbackOnMessageDefault ~= nil) then
			tmpRet = module:callbackOnMessageDefault(...)
		elseif(id == CALLBACK_MODULE_RESET and module.callbackOnModuleReset ~= nil) then
			tmpRet = module:callbackOnModuleReset(...)
		end
		if(not tmpRet) then
			ret = false
			break
		end
	end
	return ret
end

-- Returns the message represented by id.
function NpcHandler:getMessage(id)
	local ret = nil
	if(self.messages ~= nil) then
		ret = self.messages[id]
	end
	return ret
end

-- Changes the default response message with the specified id to newMessage.
function NpcHandler:setMessage(id, newMessage)
	if(self.messages ~= nil) then
		self.messages[id] = newMessage
	end
end

-- Translates all message tags found in msg using parseInfo
function NpcHandler:parseMessage(msg, parseInfo)
	local ret = msg
	for search, replace in pairs(parseInfo) do
		ret = string.gsub(ret, search, replace)
	end
	return ret
end

-- Makes sure the npc un-focuses the currently focused player
function NpcHandler:unGreet(cid)
	if(not self:isFocused(cid)) then
		return
	end

	local callback = self:getCallback(CALLBACK_FAREWELL)
	if(callback == nil or callback()) then
		if(self:processModuleCallback(CALLBACK_FAREWELL)) then
			if(self.queue == nil or not self.queue:greetNext()) then
				local msg = self:getMessage(MESSAGE_FAREWELL)
				local parseInfo = { [TAG_PLAYERNAME] = getPlayerName(cid) }
				msg = self:parseMessage(msg, parseInfo)
				self:say(msg, cid, true)
				self:releaseFocus(cid)
			end
		end
	end
end

-- Greets a new player.
function NpcHandler:greet(cid)
	if(cid ~= 0) then
		local callback = self:getCallback(CALLBACK_GREET)
		if(callback == nil or callback(cid)) then
			if(self:processModuleCallback(CALLBACK_GREET, cid)) then
				local msg = self:getMessage(MESSAGE_GREET)
				local parseInfo = { [TAG_PLAYERNAME] = getCreatureName(cid) }
				msg = self:parseMessage(msg, parseInfo)
				self:say(msg, cid, true)
			else
				return
			end
		else
			return
		end
	end
	self:addFocus(cid)
end

-- Handles onCreatureAppear events. If you with to handle this yourself, please use the CALLBACK_CREATURE_APPEAR callback.
function NpcHandler:onCreatureAppear(cid)
	local callback = self:getCallback(CALLBACK_CREATURE_APPEAR)
	if(callback == nil or callback(cid)) then
		if(self:processModuleCallback(CALLBACK_CREATURE_APPEAR, cid)) then
			--
		end
	end
end

-- Handles onCreatureDisappear events. If you with to handle this yourself, please use the CALLBACK_CREATURE_DISAPPEAR callback.
function NpcHandler:onCreatureDisappear(cid)
	local callback = self:getCallback(CALLBACK_CREATURE_DISAPPEAR)
	if(callback == nil or callback(cid)) then
		if(self:processModuleCallback(CALLBACK_CREATURE_DISAPPEAR, cid)) then
			if(self:isFocused(cid)) then
				self:unGreet(cid)
			end
		end
	end
end

-- Handles onCreatureSay events. If you with to handle this yourself, please use the CALLBACK_CREATURE_SAY callback.
function NpcHandler:onCreatureSay(cid, msgtype, msg)
	local callback = self:getCallback(CALLBACK_CREATURE_SAY)
	if(callback == nil or callback(cid, msgtype, msg)) then
		if(self:processModuleCallback(CALLBACK_CREATURE_SAY, cid, msgtype, msg)) then
			if(not self:isInRange(cid)) then
				return
			end

			if(self.keywordHandler ~= nil) then
				if(self:isFocused(cid) and (msgtype == TALKTYPE_PRIVATE_PN or NPCHANDLER_CONVBEHAVIOR == CONVERSATION_DEFAULT) or (not self:isFocused(cid))) then
					local ret = self.keywordHandler:processMessage(cid, msg)
					if(not ret) then
						local callback = self:getCallback(CALLBACK_MESSAGE_DEFAULT)
						if(callback ~= nil and callback(cid, msgtype, msg)) then
							if(NPCHANDLER_CONVBEHAVIOR ~= CONVERSATION_DEFAULT) then
								self.talkStart[cid] = os.time()
							else
								self.talkStart = os.time()
							end
						end
					else
						if(NPCHANDLER_CONVBEHAVIOR ~= CONVERSATION_DEFAULT) then
							self.talkStart[cid] = os.time()
						else
							self.talkStart = os.time()
						end
					end
				end
			end
		end
	end
end

-- Handles onPlayerEndTrade events. If you wish to handle this yourself, use the CALLBACK_PLAYER_ENDTRADE callback.
function NpcHandler:onPlayerEndTrade(cid)
	local callback = self:getCallback(CALLBACK_PLAYER_ENDTRADE)
	if(callback == nil or callback(cid)) then
		if(self:processModuleCallback(CALLBACK_PLAYER_ENDTRADE, cid, msgtype, msg)) then
			if(self:isFocused(cid)) then
				local parseInfo = { [TAG_PLAYERNAME] = getPlayerName(cid) }
				local msg = self:parseMessage(self:getMessage(MESSAGE_ONCLOSESHOP), parseInfo)
				self:say(msg, cid)
			end
		end
	end
end

-- Handles onPlayerCloseChannel events. If you wish to handle this yourself, use the CALLBACK_PLAYER_CLOSECHANNEL callback.
function NpcHandler:onPlayerCloseChannel(cid)
	local callback = self:getCallback(CALLBACK_PLAYER_CLOSECHANNEL)
	if(callback == nil or callback(cid)) then
		if(self:processModuleCallback(CALLBACK_PLAYER_CLOSECHANNEL, cid, msgtype, msg)) then
			if(self:isFocused(cid)) then
				self:unGreet(cid)
			end
		end
	end
end

-- Handles onBuy events. If you wish to handle this yourself, use the CALLBACK_ONBUY callback.
function NpcHandler:onBuy(cid, itemid, subType, amount)
	local callback = self:getCallback(CALLBACK_ONBUY)
	if(callback == nil or callback(cid, itemid, subType, amount)) then
		if(self:processModuleCallback(CALLBACK_ONBUY, cid, itemid, subType, amount)) then
			--
		end
	end
end

-- Handles onSell events. If you wish to handle this yourself, use the CALLBACK_ONSELL callback.
function NpcHandler:onSell(cid, itemid, subType, amount)
	local callback = self:getCallback(CALLBACK_ONSELL)
	if(callback == nil or callback(cid, itemid, subType, amount)) then
		if(self:processModuleCallback(CALLBACK_ONSELL, cid, itemid, subType, amount)) then
			--
		end
	end
end

-- Handles onThink events. If you wish to handle this yourself, please use the CALLBACK_ONTHINK callback.
function NpcHandler:onThink()
	local callback = self:getCallback(CALLBACK_ONTHINK)
	if(callback == nil or callback()) then
		if(NPCHANDLER_TALKDELAY == TALKDELAY_ONTHINK) then
			if(NPCHANDLER_CONVBEHAVIOR ~= CONVERSATION_DEFAULT) then
				for cid, talkDelay in pairs(self.talkDelay) do
					if(talkDelay.time ~= nil and talkDelay.message ~= nil and os.time() >= talkDelay.time) then
						selfSay(talkDelay.message, cid, talkDelay.publicize and TRUE or FALSE)
						self.talkDelay[cid] = nil
					end
				end
			elseif(self.talkDelay.time ~= nil and self.talkDelay.message ~= nil and os.time() >= self.talkDelay.time) then
				selfSay(self.talkDelay.message)
				self.talkDelay.time = nil
				self.talkDelay.message = nil
			end
		end

		if(self:processModuleCallback(CALLBACK_ONTHINK)) then
			if(NPCHANDLER_CONVBEHAVIOR ~= CONVERSATION_DEFAULT) then
				for pos, focus in pairs(self.focuses) do
					if(focus ~= nil) then
						if(not self:isInRange(focus)) then
							self:onWalkAway(focus)
						elseif((os.time() - self.talkStart[focus]) > self.idleTime) then
							self:unGreet(focus)
						else
							self:updateFocus()
						end
					end
				end
			elseif(self.focuses ~= 0) then
				if(not self:isInRange(self.focuses)) then
					self:onWalkAway(self.focuses)
				elseif(os.time()-self.talkStart > self.idleTime) then
					self:unGreet(self.focuses)
				else
					self:updateFocus()
				end
			end
		end
	end
end

-- Tries to greet the player with the given cid.
function NpcHandler:onGreet(cid)
	if(self:isInRange(cid)) then
		if(NPCHANDLER_CONVBEHAVIOR == CONVERSATION_PRIVATE) then
			if(not self:isFocused(cid)) then
				self:greet(cid)
				return
			end
		elseif(NPCHANDLER_CONVBEHAVIOR == CONVERSATION_DEFAULT) then
			if(self.focuses == 0) then
				self:greet(cid)
			elseif(self.focuses == cid) then
				local msg = self:getMessage(MESSAGE_ALREADYFOCUSED)
				local parseInfo = { [TAG_PLAYERNAME] = getCreatureName(cid) }
				msg = self:parseMessage(msg, parseInfo)
				self:say(msg)
			else
				if(not self.queue:isInQueue(cid)) then
					self.queue:push(cid)
				end
				local msg = self:getMessage(MESSAGE_PLACEDINQUEUE)
				local parseInfo = { [TAG_PLAYERNAME] = getCreatureName(cid), [TAG_QUEUESIZE] = self.queue:getSize() }
				msg = self:parseMessage(msg, parseInfo)
				self:say(msg)
			end
		end
	end
end

-- Simply calls the underlying unGreet function.
function NpcHandler:onFarewell(cid)
	self:unGreet(cid)
end

-- Should be called on this npc's focus if the distance to focus is greater then talkRadius.
function NpcHandler:onWalkAway(cid)
	if(self:isFocused(cid)) then
		local callback = self:getCallback(CALLBACK_CREATURE_DISAPPEAR)
		if(callback == nil or callback()) then
			if(self:processModuleCallback(CALLBACK_CREATURE_DISAPPEAR, cid)) then
				if(self.queue == nil or not self.queue:greetNext()) then
					local msg = self:getMessage(MESSAGE_WALKAWAY)
					local playerName = getPlayerName(cid)
					if not playerName then
						playerName = -1
					end

					local parseInfo = { [TAG_PLAYERNAME] = playerName }
					msg = self:parseMessage(msg, parseInfo)
					self:say(msg, cid, true)
					self:releaseFocus(cid)
				end
			end
		end
	end
end

-- Returns true if cid is within the talkRadius of this npc.
function NpcHandler:isInRange(cid)
	if not isPlayer(cid) then
		return false
	end

	local distance = getDistanceTo(cid) or -1
	if distance == -1 then
		return false
	end

	return (distance <= self.talkRadius)
end

-- Resets the npc into it's initial state (in regard of the keyrodhandler).
--	All modules are also receiving a reset call through their callbackOnModuleReset function.
function NpcHandler:resetNpc()
	if(self:processModuleCallback(CALLBACK_MODULE_RESET)) then
		self.keywordHandler:reset()
	end
end

-- Makes the npc represented by this instance of NpcHandler say something.
--	This implements the currently set type of talkdelay.
--	shallDelay is a boolean value. If it is false, the message is not delayed. Default value is true.
function NpcHandler:say(message, focus, publicize, shallDelay)
	if(shallDelay == nil) then
		shallDelay = true
	end
	if(NPCHANDLER_TALKDELAY == TALKDELAY_NONE or shallDelay == false) then
		if(NPCHANDLER_CONVBEHAVIOR ~= CONVERSATION_DEFAULT) then
			selfSay(message, focus, publicize and TRUE or FALSE)
			return
		else
			selfSay(message)
			return
		end
	end
	if(NPCHANDLER_CONVBEHAVIOR ~= CONVERSATION_DEFAULT) then
		self.talkDelay[focus] = {
			message = message,
			time = os.time() + self.talkDelayTime,
			publicize = publicize
		}
	else
		self.talkDelay = {
			message = message,
			time = os.time() + self.talkDelayTime
		}
	end
end
end

 

O erro está certamente nesse arquivo npchandler.lua, mas como deram varios erros, é mais facil substituir tudo pra nao dar confusão.

 

 

Fiz Tudo isso mas continua Dando o mesmo Erro, Acho que o Distro que to Usando, o que o doohz rush passo

Procura por Arquivos diferentes :/

Link para o comentário
Compartilhar em outros sites

×
×
  • Criar Novo...