Postado Setembro 22, 2017 7 anos Olá Tk, Gostaria de ajuda com um npc que libera-se para passar em x teleport apenas se fizer a task que ele te der. Exemplo: Npc: Gostaria de passar pelo teleport? se me ajudar posso deixa-lo passar, você aceita? Npc: Então mate 50 drakens abominations e 50 drakens elite para mim, só volte quando terminar. Uso tfs 3.7, agradeço desde já.
Postado Setembro 22, 2017 7 anos 9 horas atrás, FaaSouzax disse: Olá Tk, Gostaria de ajuda com um npc que libera-se para passar em x teleport apenas se fizer a task que ele te der. Exemplo: Npc: Gostaria de passar pelo teleport? se me ajudar posso deixa-lo passar, você aceita? Npc: Então mate 50 drakens abominations e 50 drakens elite para mim, só volte quando terminar. Uso tfs 3.7, agradeço desde já. Olá, vamos ao que interessa. Não sou bom com script não fiz da maneira que você quis mais se souber usar os dois scrpts em conjunto eles trabalharam junto e fará oque você quer, vamos ao que lhe interessa. MODS ->Task kill.xml <?xml version="1.0" encoding="ISO-8859-1"?> <mod name="Task Kill" version="1.0" author="Vodkart" contact="tibiaking.com" enabled="yes"> <config name="KillM_func"><![CDATA[ tsk = { storages = {68754,68755}, task = {"dragon", 10}, -- nome do bixo e quantidade exp = 200, item = {2123,1} } ]]></config> <event type="login" name="AreKill" event="script"><![CDATA[ function onLogin(cid) registerCreatureEvent(cid, "CountTask") return true end]]></event> <event type="kill" name="CountTask" event="script"><![CDATA[ domodlib('KillM_func') function onKill(cid, target) if isMonster(target) then local n = string.lower(getCreatureName(target)) if n == tsk.task[1] and getPlayerStorageValue(cid, tsk.storages[2]) >= 1 then local contagem = getPlayerStorageValue(cid, tsk.storages[1]) if (contagem == -1) then contagem = 1 end if not tonumber(contagem) then return true end if contagem > tsk.task[2] then return true end setPlayerStorageValue(cid, tsk.storages[1], contagem+1) doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE,""..(contagem == tsk.task[2] and "Congratulations! You finished the task of "..n.."." or "defeated. Total [" .. contagem .. "/" .. tsk.task[2] .. "] " .. n .. ".").."") end end return true end]]></event> </mod> NPC: domodlib('KillM_func') 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 local msg = string.lower(msg) if isInArray({"task","mission","missao"}, msg) then if not tonumber(getPlayerStorageValue(cid, tsk.storages[1])) then npcHandler:say("Você já terminou a task!", cid) elseif getPlayerStorageValue(cid, tsk.storages[2]) >= 1 then npcHandler:say("Você já matou "..tsk.task[2].." "..tsk.task[1].."? {yes}", cid) talkState[talkUser] = 2 else npcHandler:say("Você deseja fazer uma missão de matar "..tsk.task[2].." "..tsk.task[1].." e receber "..tsk.exp.." de experience e "..tsk.item[2].." "..getItemNameById(tsk.item[1]).."? {yes}", cid) talkState[talkUser] = 1 end elseif isInArray({"yes","sim"}, msg) and talkState[talkUser] > 0 then if talkState[talkUser] == 1 then npcHandler:say("Parabéns! Agora você está participando da task, volte quanto tiver terminado!", cid) setPlayerStorageValue(cid, tsk.storages[2], 1) else if getPlayerStorageValue(cid, tsk.storages[1]) >= tsk.task[2] then npcHandler:say("Obrigado guerreiro, aqui está sua recompensa!", cid) setPlayerStorageValue(cid, tsk.storages[1], "Finished") doPlayerAddExp(cid, tsk.exp) doPlayerAddItem(cid, tsk.item[1], tsk.item[2]) else npcHandler:say("Você ainda não terminou a sua task!", cid) end end talkState[talkUser] = 0 elseif msg == "no" then selfSay("Tudo bem então", cid) talkState[talkUser] = 0 npcHandler:releaseFocus(cid) end return true end npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new()) EM MOVIMENTOS -> MOVIMENTOS.XML - CRIE UMA TAG: <movevent type="StepIn" actionid="29856" event="script" value="nome do seu script.lua"/> AGORA EM MOVIMENTOS/SCRIPT CRIE UM COM NOME DA SUA PREFERÊNCIA function onStepIn(cid, item, position, fromPosition) if item.actionid == 29856 then local storage = 82736 if getPlayerStorageValue(cid, storage) <= 0 then doTeleportThing(cid, fromPosition, true) doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "você precisa fazer a quest de carlin para passar aqui.") doSendMagicEffect(getThingPos(cid), CONST_ME_MAGIC_BLUE) return TRUE end end return true end Caso você já tenha o npc task de sua preferência basta apenas colocar a parte do moviments e mudar o "local storage" para a storage que seu npc da para o player quando ele termina a task para que ele possa passar por cima do SQM. Espero te ajudado. Creditos: @Vodkart
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.