Ir para conteúdo

Featured Replies

Postado

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 !

 

Spoiler

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]) then
selfSay('Aguarde alguns instantes, tem pessoas fazendo a task.', cid) return true
end
end
doTeleportThing(cid, check.Playerpos)
local function checkArea(cid)
if not isCreature(cid) then return LUA_ERROR end
if HavePlayerPosition(cid, check.FromPosToPos[1],check.FromPosToPos[2]) then
doTeleportThing(cid, getTownTemplePosition(getPlayerTown(cid)))
end
end
addEvent(checkArea, check.time*60*1000, cid)
end
end
local str = ""
if v.exp ~= nil then doPlayerAddExp(cid, v.exp ) str = str.."".. (str == "" and "" or ",") .." "..v.exp.." de exp" end
if v.money ~= nil then doPlayerAddMoney(cid, v.money) str = str.."".. (str == "" and "" or ",") ..""..v.money.." gps" end
if v.reward ~= nil then doAddItemsFromList(cid,v.reward) str = str.."".. (str == "" and "" or ",") ..""..getItemsFromList(v.reward) end
npcHandler: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)
else
npcHandler:say('Desculpe,mas voce só matou '..((contagem)-1)..' de '..v.count..' '..k..'.', cid)
end
end
end
else
npcHandler:say("Voce não está em nenhuma task.", cid)
end
elseif isInArray({"sair","leave","exit"}, msg) then
if CheckTask(cid) then
talkState[talkUser] = 2
for k, v in pairs(tasktabble) do
if getPlayerStorageValue(cid,v.storage_start) >= 1 then
storagesair = v.storage_start
local contagem = getPlayerStorageValue(cid, v.storage)
if (contagem == -1) then contagem = 1 end
npcHandler:say('Voce está participando da task de '..k..' e já tem '..((contagem)-1)..' '..k..' mortos, deseja mesmo sair?', cid)
end
end
else
npcHandler:say("Voce não está em nenhuma task.", cid)
end
elseif msgcontains(msg, 'yes') and talkState[talkUser] == 2 then
setPlayerStorageValue(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)  
end
return TRUE
end
npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)
npcHandler:addModule(FocusModule:new())

 

Editado por ADM Slayer (veja o histórico de edições)

  • Respostas 8
  • Visualizações 826
  • Created
  • Última resposta

Top Posters In This Topic

Most Popular Posts

  • 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 t

  • Mods: Alltask.xml  NPC: \/  

  • @ADM Slayer  No caso ali tem.... task = {"dragon", 10} Tente colocar assim...... task = {"dragon", 10; "demon", 20; "cyclops", 50} etc.

Postado

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

É 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 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
  • Autor
2 horas atrás, 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.

Visitante
Responder

Quem Está Navegando 0

  • Nenhum usuário registrado visualizando esta página.

Estatísticas dos Fóruns

  • Tópicos 96.9k
  • Posts 519.6k

Informação Importante

Confirmação de Termo