Ir para conteúdo

Featured Replies

Postado

Eae galera do TK,

 

seguinte estava configurando o npc oracle no meu server (de acordo com minhas vocaçãoes), no game o player começa com as vocações iniciais que eu criei e depois escolhe entre 2 caminhos em relação a aquela vocação escolhida.

 

vou pegar uma vocação de muitas que tem la o swordman. Um Swordman pode escolher em determinado level ser um Hero ou um Dark Knight assim de acordo com as id vocations deles e alterando no script do npc fiz assim.

 

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

function oracle(cid, message, keywords, parameters, node)
	if(not npcHandler:isFocused(cid)) then
		return false
	end

	local cityNode = node:getParent():getParent()
	local vocNode = node:getParent()

	local destination = cityNode:getParameters().destination
	local town = cityNode:getParameters().town
	local vocation = vocNode:getParameters().vocation

	if(destination ~= nil and vocation ~= nil and town ~= nil) then
		if(getPlayerLevel(cid) < parameters.level) then
			npcHandler:say('You must first reach level ' .. parameters.level .. '!', cid)
			npcHandler:resetNpc()
		else
			if(getPlayerVocation(cid) > 4) then
				npcHandler:say('Sorry, You already have a vocation!')
				npcHandler:resetNpc()
			else
				doPlayerSetVocation(cid, vocation)
				doPlayerSetTown(cid, town)
				npcHandler:resetNpc()

				local tmp = getCreaturePosition(cid)
				doTeleportThing(cid, destination)
				doSendMagicEffect(tmp, CONST_ME_POFF)
				doSendMagicEffect(destination, CONST_ME_TELEPORT)
			end
		end
	end

	return true
end

function greetCallback(cid)
	if(getPlayerLevel(cid) < 50) then
		npcHandler:say('COME BACK WHEN YOU GROW UP, CHILD!')
		return false
	else
		return true
	end
end
npcHandler:setCallback(CALLBACK_GREET, greetCallback)
npcHandler:setMessage(MESSAGE_GREET, 'Hello |PLAYERNAME|. Are you prepared to face your destiny?')

local yesNode = KeywordNode:new({'yes'}, oracle, {level = 50})
local noNode = KeywordNode:new({'no'}, StdModule.say, {npcHandler = npcHandler, onlyFocus = true, moveup = 1, text = 'Then what vocation do you want to become?'})

local node1 = keywordHandler:addKeyword({'yes'}, StdModule.say, {npcHandler = npcHandler, onlyFocus = true, text = 'To give continuity repeat the name of the city that I will say now Kingdom Ellon. {Kingdom Ellon}?'})
	local node2 = node1:addChildKeyword({'kingdom ellon'}, StdModule.say, {npcHandler = npcHandler, onlyFocus = true, town = 1, destination = {x=8325, y=9358, z=6}, text = 'So what vocation do you wish to become? {hero} or {dark knight}?'})
		local node3 = node2:addChildKeyword({'hero'}, StdModule.say, {npcHandler = npcHandler, vocation = 10, onlyFocus = true, text = 'So, you wish to be a powerful taker? Are you sure about that? This decision is irreversible!'})
			node3:addChildKeywordNode(yesNode)
			node3:addChildKeywordNode(noNode)
		node3 = node2:addChildKeyword({'dark knight'}, StdModule.say, {npcHandler = npcHandler, vocation = 16, onlyFocus = true, text = 'Are you sure that the dark knight destroyer is what you wish to become? This decision is irreversible!'})
			node3:addChildKeywordNode(yesNode)
			node3:addChildKeywordNode(noNode)
keywordHandler:addKeyword({'no'}, StdModule.say, {npcHandler = npcHandler, onlyFocus = true, text = 'Then come back when you are ready.'})

npcHandler:addModule(FocusModule:new())

como esta descrito no script :

 

- o id vocation do Hero é 10 e o

- id vocation do dark knight é 16,

- o level pra escolher a vocação é 50

- e o playervocationcid é 4 que no vocations xml é o id do swordman.

 

o problema é que quando eu falo com o npc eu vou e escolho ser ou um hero ou um dark knight, QUANDO eu viro a determinada vocação escolhida, eu deslogo e a vocação não é salva assim eu continuo sendo um swordman,

não sei se deveria exisitr alguma storage pra salva a vocação ou algo do tipo, também não sei se esta faltando alguma cosia no script.

 

 

se alguém puder ajudar agradeço.

 

 

 

Postado

Tenta utilizar a função doPlayerSave(cid, true), caso não funcione verifique se na database está setado o save para 1 nos jogadores.

discord.pngDiscord: vankk #7765

Precisando de ajuda? Entre em contato comigo via Discord.

 

Muitos vêm seus muitos dias de glória, mas poucos vêm seus muitos dias de luta.

Participe da conversa

Você pode postar agora e se cadastrar mais tarde. Se você tem uma conta, faça o login para postar com sua conta.

Visitante
Responder

Quem Está Navegando 0

  • Nenhum usuário registrado visualizando esta página.

Estatísticas dos Fóruns

  • Tópicos 96.9k
  • Posts 520.1k

Informação Importante

Confirmação de Termo