Postado Setembro 23, 2016 8 anos Boa noite galerinha, gostaria de uma ajuda de quem pudesse me ajudar... Tenho um sistema de Tasks no meu Server, porém, é preciso ir até o NPC e PEDIR uma Task por vez... O que eu queria era que não fosse necessário pedir Tasks ao NPC, somente entrega-las quando terminasse de faze-las. Abaixo o Script de Task: Desde já agradeço a quem ajudar ! Mostrar conteúdo oculto domodlib('task_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","tasks","missao","mission"}, msg) then npcHandler:say("Me diga o nome da task que voce deseja fazer!", cid) talkState[talkUser] = 1 elseif talkState[talkUser] == 1 then if tasktabble[msg] then if CheckTask(cid) ~= true then local contagem = getPlayerStorageValue(cid, tasktabble[msg].storage) if (contagem == -1) then contagem = 1 end if not tonumber(contagem) then npcHandler:say('Desculpe, mas voce já terminou a task de '..msg..'.', cid) return true end setPlayerStorageValue(cid, tasktabble[msg].storage_start, 1) npcHandler:say("Parabéns, agora voce está participando da task de "..msg..", voce precisa matar "..string.sub(((contagem)-1)-tasktabble[msg].count, 2).." "..msg..".", cid) talkState[talkUser] = 0 else npcHandler:say('Desculpe, mas voce já faz parte de uma task!', cid) talkState[talkUser] = 0 end else npcHandler:say('Digite o nome correto da task! Para mais informações digite {!task}', cid) talkState[talkUser] = 1 end elseif isInArray({"receber","reward","recompensa","report","reportar"}, msg) then if CheckTask(cid) then for k, v in pairs(tasktabble) do racetype = k if getPlayerStorageValue(cid,v.storage_start) >= 1 then local contagem = getPlayerStorageValue(cid, v.storage) if (contagem == -1) then contagem = 1 end if not tonumber(contagem) then npcHandler:say('Voce só pode receber os itens uma única vez!', cid) return true end if (((contagem)-1) >= v.count) then for _, check in pairs(configbosses_task) do if string.lower(check.race) == string.lower(racetype) then local on = getPlayersOnline() for i=1, #on do if HavePlayerPosition(on, check.FromPosToPos[1],check.FromPosToPos[2]) thenselfSay('Aguarde alguns instantes, tem pessoas fazendo a task.', cid) return trueendenddoTeleportThing(cid, check.Playerpos)local function checkArea(cid)if not isCreature(cid) then return LUA_ERROR endif HavePlayerPosition(cid, check.FromPosToPos[1],check.FromPosToPos[2]) thendoTeleportThing(cid, getTownTemplePosition(getPlayerTown(cid)))endendaddEvent(checkArea, check.time*60*1000, cid)endendlocal str = ""if v.exp ~= nil then doPlayerAddExp(cid, v.exp ) str = str.."".. (str == "" and "" or ",") .." "..v.exp.." de exp" endif v.money ~= nil then doPlayerAddMoney(cid, v.money) str = str.."".. (str == "" and "" or ",") ..""..v.money.." gps" endif v.reward ~= nil then doAddItemsFromList(cid,v.reward) str = str.."".. (str == "" and "" or ",") ..""..getItemsFromList(v.reward) endnpcHandler:say("Obrigado pela sua ajuda! Recompensas:"..(str == "" and "nenhuma" or ""..str.."").." por ter completado a task de "..k..".", cid)setPlayerStorageValue(cid, v.storage, "Finished")setPlayerStorageValue(cid, v.storage_start, 0)setPlayerStorageValue(cid, 521456, getPlayerStorageValue(cid, 521456) == -1 and 1 or getPlayerStorageValue(cid, 521456)+1)finisheAllTask(cid)elsenpcHandler:say('Desculpe,mas voce só matou '..((contagem)-1)..' de '..v.count..' '..k..'.', cid)endendendelsenpcHandler:say("Voce não está em nenhuma task.", cid)endelseif isInArray({"sair","leave","exit"}, msg) thenif CheckTask(cid) thentalkState[talkUser] = 2for k, v in pairs(tasktabble) doif getPlayerStorageValue(cid,v.storage_start) >= 1 thenstoragesair = v.storage_startlocal contagem = getPlayerStorageValue(cid, v.storage)if (contagem == -1) then contagem = 1 endnpcHandler:say('Voce está participando da task de '..k..' e já tem '..((contagem)-1)..' '..k..' mortos, deseja mesmo sair?', cid)endendelsenpcHandler:say("Voce não está em nenhuma task.", cid)endelseif msgcontains(msg, 'yes') and talkState[talkUser] == 2 thensetPlayerStorageValue(cid, storagesair, 0)npcHandler:say("Voce foi retirado da task com sucesso!", cid)elseif msg == "no" then selfSay("Tudo bem então!", cid) talkState[talkUser] = 0 npcHandler:releaseFocus(cid) endreturn TRUEendnpcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)npcHandler:addModule(FocusModule:new()) Editado Setembro 23, 2016 8 anos por ADM Slayer (veja o histórico de edições)
Postado Setembro 23, 2016 8 anos Não tem como. As outras o jogador tem que pedir, uma vez que é dada a missão passa a ser possivel concluir, nao tem como concluir algo que não está em andamento ainda. Obs: Tem como também iniciar com somente 1 (UMA) task automatica, facilitar o acesso ao NPC e criar um "all tasks" e o NPC libera todos as tasks de uma vez bastando o jogador pedir somente uma vez. SOU: Exelente Mapper ENTENDO DE: Scripts/Programação OT'S EM GERAL! ~ Playing Every Day ~ START IN VERSION: 7.1 ~
Postado Setembro 23, 2016 8 anos É que assim, você precisa iniciar a task ou criar um controle de quantos monstros daquele tipo você já matou, o ideal é utilizar a ideia do nosso amigo, iniciar todas as tasks possíveis de maneira automática(já deixar os storages prontos nos samples), e quando finalizar só ir ao npc entregar, e quando entregar a task, alterar o script para já criar novamente a task entregue. ficando sempre disponível para caçar o monstro... Editado Setembro 23, 2016 8 anos por turnes (veja o histórico de edições) Está procurando um Global Mid exp para se divertir e dominar? http://www.deluxe-global.com
Postado Setembro 23, 2016 8 anos Autor Em 23/09/2016 em 17:43, GabrielMix disse: Não tem como. As outras o jogador tem que pedir, uma vez que é dada a missão passa a ser possivel concluir, nao tem como concluir algo que não está em andamento ainda. Obs: Tem como também iniciar com somente 1 (UMA) task automatica, facilitar o acesso ao NPC e criar um "all tasks" e o NPC libera todos as tasks de uma vez bastando o jogador pedir somente uma vez. Teria como fazer isso editando o Script que possuo ou eu teria que começar do zero?...
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.