Postado Março 21, 2018 7 anos Olá TK, venho aqui pedir uma ajuda com um npc, que marca areas no mapa para o player conforme ele perguntar. Uso TFS: Do servidor OTX 11.49 - TFS 1.3 O problema que estou tendo segue abaixo: NPC GUIDE Citar NPC.XML <?xml version="1.0" encoding="UTF-8"?> <npc name="Getulio" script="getulios.lua"> <look type="132" head="79" body="79" legs="79" feet="79" /> </npc> NPC.LUA 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 onPlayerEndTrade(cid) npcHandler:onPlayerEndTrade(cid) end function onPlayerCloseChannel(cid) npcHandler:onPlayerCloseChannel(cid) end local voices = { {text = 'Oi sou Getulio, sei onde fica tudo por aqui em Burthorpe, caso queira "saber" algo estou aqui.'} } npcHandler:addModule(VoiceModule:new(voices)) keywordHandler:addKeyword({'saber'}, StdModule.say, {npcHandler = npcHandler, text = "gostaria de saber onde fica quais desses locais ? {Templo}, {Depot}."}) 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 doMessageCheck(msg, "templo") then selfSay('hmm tempe?', cid) talkState[talkUser] = 1 elseif talkState[talkUser] == 1 and doMessageCheck(msg, 'yes') then selfSay('Aqui', cid) doPlayerSendTextMessage(cid, MESSAGE_EVENT_ADVANCE, "Pronto, marquei eu seu mapa onde fica o templo.") doPlayerAddMapMark(cid, {x=111, y=111, z=7}, MAPMARK_TEMPLE, "Templo de Burthorpe.") talkState[talkUser] = 0 elseif doMessageCheck(msg, "depot") then selfSay('hmm Depot?', cid) talkState[talkUser] = 2 elseif talkState[talkUser] == 2 and doMessageCheck(msg, 'yes') then selfSay('Aqui', cid) doPlayerSendTextMessage(cid, MAPMARK_SHOVEL, "Pronto, marquei eu seu mapa onde fica o Depot.") doPlayerAddMapMark(cid, {x=222,y=222,z=7}, MAPMARK_SHOVEL, "Depot de Burthorpe.") talkState[talkUser] = 0 -- no elseif(doMessageCheck(msg, 'no') and isInArray({1,2}, talkState[talkUser])) then selfSay('Ok then.', cid) talkState[talkUser] = 0 end return true end npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new()) --[[ optional: MAPMARK_TICK MAPMARK_QUESTION MAPMARK_EXCLAMATION MAPMARK_STAR MAPMARK_CROSS MAPMARK_TEMPLE MAPMARK_KISS MAPMARK_SHOVEL MAPMARK_SWORD MAPMARK_FLAG MAPMARK_LOCK MAPMARK_BAG MAPMARK_SKULL MAPMARK_DOLLAR MAPMARK_REDNORTH MAPMARK_REDSOUTH MAPMARK_REDEAST MAPMARK_REDWEST MAPMARK_GREENNORTH MAPMARK_GREENSOUTH ]] Citar ESSE ERRO OCORRE QUANDO O PLAYER FALA TEMPLO. Você tem o código disponível? Se tiver publique-o aqui: Você tem alguma imagem que possa auxiliar no problema? Se sim, coloque-a aqui.
Postado Março 21, 2018 7 anos em /data/npc/lib/npc.lua adicione: function doMessageCheck(message, keyword) if(type(keyword) == "table") then return table.isStrIn(keyword, message) end local a, b = message:lower():find(keyword:lower()) if(a ~= nil and b ~= nil) then return true end return false end [*Ninguém será digno do sucesso se não usar suas derrotas para conquistá-lo.*] DISCORD: vodkart#6090
Postado Março 21, 2018 7 anos Autor Renpondendo o npc esta depois que adicionei esse comando ai que me enviou, mais ele não esta marcando, segue erro: @Vodkart Editado Março 21, 2018 7 anos por amoxicilina (veja o histórico de edições)
Postado Março 22, 2018 7 anos Solução onde estiver a função: doPlayerAddMapMark troque por: doAddMapMark [*Ninguém será digno do sucesso se não usar suas derrotas para conquistá-lo.*] DISCORD: vodkart#6090
Postado Março 23, 2018 7 anos Autor Em 22/03/2018 em 09:57, Vodkart disse: onde estiver a função: doPlayerAddMapMark troque por: doAddMapMark vlw, deu certo. tópico 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.