Postado Outubro 30, 2017 7 anos Olá, gostaria de um NPC que funcionasse em TFS 1.3, todos os que tentei do TK, xTibia, otland não funcionaram, ou deram erro de callback entre outros. O único que funcionou, montei os 4 npcs, tudo certinho, o script era o mesmo para todos, porém mudava a voc e o npc para kina, druid, sorc e pally, Mas ai não sei como, o primeiro NPC que vc fala, faz com que todos usem o mesmo script dele... ou seja, se vc fala com o King Wizard, qdo for falar com King Archer, Warrior etc, o script é do King Wizard... OBS: As vocs estão OK, Seria assim (free pay) Sorc lvl 35 {Master Wizard 5} ou {Enchanted Wizard 6} Druid lvl 35 {Elder Wizard 7} ou {Trap Wizard 8} Paladin lvl 35 {Swift Paladin 9} ou {Heavy Paladin 10} Knight lvl 35 {Guardian Knight 11} ou {Berserker Knight 12} Um Npc para cada vocação. O único script que funcionou foi esse, mas aconteceu o erro dos conflitos, os outros que tentei (estou a dias 10 todos os dias tentando scripts de todos lugares para tfs 1.x) deram erro na distro de callback / OnCreatureSay / ou erros de fechamento de else/ifelse ou comunicação com player -- config by uotl£ config = {[1] = { -- [coloca vocation que tem que ser antes de escolher] lvl = 35, -- level tem que ser maior que 50 id_da_vocation = 5,nome_da_vocation = "Master Wizard", -- id da primeira vocation que pode compra e o nome dela id_da_vocation2 = 6,nome_da_vocation2 = "Enchanted Wizard"} -- id da segunda vocation que pode compra e o nome dela } local fala_do_npc = "MAGE Desculpe, mas voce esta falando com a pessoa errada." -- fala do npc se ja tiver comprado e se não for vocation certa local preco = 2 -- preço por platinum 100 que e igual 1 crystal -- config by uotl£ 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 voc = config[getPlayerVocation(cid)] if(msgcontains(msg, 'promotion') or msgcontains(msg, 'promotions')) then check (cid,talkUser) elseif (msgcontains(msg, voc.nome_da_vocation) and talkState[talkUser] == 1) then talkState[talkUser] = 2 selfSay("tem certeza que voce quer ser [ "..voc.nome_da_vocation.." ] ? [yes] ou [no]", cid) elseif (msgcontains(msg, 'yes') and talkState[talkUser] == 2) then v1_check (cid,talkUser,numero_s) elseif (msgcontains(msg, 'no') and talkState[talkUser] == 2) then talkState[talkUser] = 0 selfSay("ate mais volte quando decidir", cid) elseif (msgcontains(msg, voc.nome_da_vocation2) and talkState[talkUser] == 1) then talkState[talkUser] = 3 selfSay("tem certeza que voce quer ser ["..voc.nome_da_vocation2.."] ? [yes] ou [no]", cid) elseif (msgcontains(msg, 'yes') and talkState[talkUser] == 3) then v2_check (cid,talkUser,numero_s) talkState[talkUser] = 0 elseif (msgcontains(msg, 'no') and talkState[talkUser] == 3) then talkState[talkUser] = 0 selfSay("ate mais volte quando decidir", cid) end end function check (cid,talkUser) if voc then if getPlayerLevel(cid) >= voc.lvl then talkState[talkUser] = 1 selfSay('Posso lhe conceder a promocao [ '..voc.nome_da_vocation..' ] OU ['..voc.nome_da_vocation2..'] ao atingir level 35', cid) else selfSay('volta aqui quando pegar level '..voc.lvl..'', cid) talkState[talkUser] = 0 end else selfSay(fala_do_npc, cid) talkState[talkUser] = 0 return true end end function v1_check (cid,talkUser) if(doPlayerRemoveMoney(cid, (preco*100)) == true) then doPlayerSetVocation(cid, voc.id_da_vocation) selfSay("parabens agora voce e "..voc.nome_da_vocation.."", cid) talkState[talkUser] = 0 else selfSay('volta aqui quando tiver dinheiro, o xerox da papelada custa '..preco..' moedas de platinum', cid) talkState[talkUser] = 0 end return true end function v2_check (cid,talkUser) if(doPlayerRemoveMoney(cid, (preco*100)) == true) then doPlayerSetVocation(cid, voc.id_da_vocation2) selfSay("parabens agora voce e "..voc.nome_da_vocation2.."", cid) talkState[talkUser] = 0 else selfSay('volta aqui quando tiver dinheiro, o xerox da papelada custa '..preco..' moedas de platinum', cid) talkState[talkUser] = 0 end return true end npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new())
Postado Novembro 1, 2017 7 anos Autor Solução Bom resolvido, ao invés de usar o NPC, eu transformei as vocações que antes eram promotion em vocações normais e coloquei para o player passar pelo oracle mesmo. Ex: vocation id = 5 / fromvoc = 5 Resolvido, na gambiarra mas resolvido.
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.