Postado Julho 5, 2016 9 anos 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 Julho 6, 2016 9 anos Tenta mudar isso na database com um dbexecute no script, acredito que resolva o problema
Postado Julho 8, 2016 9 anos 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: 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.