• There is NO official Otland's Discord server and NO official Otland's server list. The Otland's Staff does not manage any Discord server or server list. Moderators or administrator of any Discord server or server lists have NO connection to the Otland's Staff. Do not get scammed!

[9.6] NPC Pytanie

edzio20

New Member
Joined
Apr 1, 2009
Messages
8
Reaction score
0
Siemka mam taki przykładowy skrypt na npc'a:

PHP:
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)
	if(not npcHandler:isFocused(cid)) then
		return false
	end
	
	local talkUser = NPCHANDLER_CONVBEHAVIOR == CONVERSATION_DEFAULT and 0 or cid
	
	if msgcontains(msg, 'travel') then
		selfSay('I can take you to the {city}.', cid)
		talkState[talkUser] = 0
	elseif msgcontains(msg, 'city') then
		selfSay('Are you sure to send you to the city?',cid)
		talkState[talkUser] = 1
	elseif msgcontains(msg, 'yes') and talkState[talkUser] == 1 then
			if(doPlayerRemoveMoney(cid, 100)) then
				selfSay('Lets go.',cid)
				doTeleportThing(cid,{x=5037,y=4982,z=7})
				talkState[talkUser] = 0
			end
	elseif msgcontains(msg, 'no') and talkState[talkUser] == 1	then
			talkState[talkUser] = 0
			selfSay('Ok, then.',cid)
	end
	
end

npcHandler:setMessage(MESSAGE_GREET, "Hello |PLAYERNAME|. I send you to {city}.") 
npcHandler:setMessage(MESSAGE_FAREWELL, 'Good bye |PLAYERNAME|!') 
npcHandler:setMessage(MESSAGE_WALKAWAY, 'Bye then...') 
npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) 
npcHandler:addModule(FocusModule:new())


I mam pytanie, bo po wpisaniu 'city' , talkState[talkUser] zamienia się na 1 i jak np. wpiszemy 'yes' to talkState[talkUser] zmieni się na 0, ale gdy np odejdę od npca tak aby zakończyć z nim rozmowę podczas gdy talkState[talkUser] równa się 1 to po ponownym przyjściu do niego i rozpoczęciu rozmowy talkState[talkUser] nadal równa się 1 i moje pytanie jest takie, czy da się jakoś zrobić, że po odejściu od npc'a talkState[talkUser] zmianiał się na 0 a nie zostawał taki jak przed odejściem?
 
dodaj sobie w libie przy funkcji odejścia bez pożegnania i jak i pożegnaniem dopisek, że ma zmienić talkstate na 0 np.

poszukaj jak tam to jest zrobione z traceniem focus'a, albo daj np. przy onThink sprawdzanie czy gracz ma talkstate jeśli ma to wtedy jeśli nie jest focused to zmieni mu na 0
 
Tak wiem że tam :D, ale gdzie potem. Czy w funkcji NpcHandler:isFocused, mam dopisac talkState[creatureCheck] = 0, czy jak ? :D
 
@refresh

dodaj sobie w libie przy funkcji odejścia bez pożegnania i jak i pożegnaniem dopisek, że ma zmienić talkstate na 0 np.

poszukaj jak tam to jest zrobione z traceniem focus'a, albo daj np. przy onThink sprawdzanie czy gracz ma talkstate jeśli ma to wtedy jeśli nie jest focused to zmieni mu na 0


Robiłem tak jak piszesz i nic to nie dawało :D
 
Back
Top