Ir para conteúdo
  • Cadastre-se

Posts Recomendados

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)
Link para o post
Compartilhar em outros sites

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 ~

Link para o post
Compartilhar em outros sites

É 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

Link para o post
Compartilhar em outros sites
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?...

 

 

Link para o post
Compartilhar em outros sites

Mods:
Alltask.xml

Citar

<?xml version="1.0" encoding="ISO-8859-1"?>
<mod name="All Task" version="1.0" author="CaramujoSonolento" contact="tibiaking.com" enabled="yes">
<config name="AllTask_func"><![CDATA[
tsk = {
storages = {68754,68755},
task = {"dragon", 10}, -- //AQUI VOCE POE O NOME DOS BIXOS E QUANTIDADE
exp = 200, -- //AQUI A EXP QUE VAI GANHAR
item = {2123,1} -- //AQUI O ITEM QUE VAI GANHAR
}
]]></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:

\/

Citar

domodlib('AllTask_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","offer","tarefa"}, msg) then
if not tonumber(getPlayerStorageValue(cid, tsk.storages[1])) then
npcHandler:say("Voce ja acabou a missao!", cid)
elseif getPlayerStorageValue(cid, tsk.storages[2]) >= 1 then
npcHandler:say("Voce ja matou "..tsk.task[2].." "..tsk.task[1].."? {yes}", cid)
talkState[talkUser] = 2
else
npcHandler:say("Voce deseja fazer uma missao de matar "..tsk.task[2].." "..tsk.task[1].." e receber "..tsk.exp.." de experience e este item "..tsk.item[2].." "..getItemNameById(tsk.item[1]).."? {yes}", cid)
talkState[talkUser] = 1
end
elseif isInArray({"yes","sim","aceito"}, msg) and talkState[talkUser] > 0 then
if talkState[talkUser] == 1 then
npcHandler:say("Agora você esta participando da missao, 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, aqui esta a sua recompensa!", cid)
setPlayerStorageValue(cid, tsk.storages[1], "Finished")
doPlayerAddExp(cid, tsk.exp)
doPlayerAddItem(cid, tsk.item[1], tsk.item[2])
else
npcHandler:say("Voce ainda nao terminou a sua missao!", cid)
end
end
talkState[talkUser] = 0
elseif msg == "no" then
selfSay("Beleza entao de o fora!", cid)
talkState[talkUser] = 0
npcHandler:releaseFocus(cid)
end
return true
end
npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)
npcHandler:addModule(FocusModule:new())

 

SOU: Exelente Mapper

ENTENDO DE: Scripts/Programação

 

OT'S  EM  GERAL!

 ~ Playing Every Day ~ START IN VERSION: 7.1 ~

Link para o post
Compartilhar em outros sites

@ADM Slayer 
No caso ali tem.... task = {"dragon", 10}

Tente colocar assim...... task = {"dragon", 10; "demon", 20; "cyclops", 50} etc.

SOU: Exelente Mapper

ENTENDO DE: Scripts/Programação

 

OT'S  EM  GERAL!

 ~ Playing Every Day ~ START IN VERSION: 7.1 ~

Link para o post
Compartilhar em outros sites
  • 2 months later...

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

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emojis são permitidos.

×   Seu link foi automaticamente incorporado.   Mostrar como link

×   Seu conteúdo anterior foi restaurado.   Limpar o editor

×   Não é possível colar imagens diretamente. Carregar ou inserir imagens do URL.

  • Quem Está Navegando   0 membros estão online

    Nenhum usuário registrado visualizando esta página.

  • Conteúdo Similar

    • Por Jaurez
      .
    • Por Cat
      Em alguns casos, o tibia 8.60 comum não abre de jeito nenhum no map editor, mesmo desmarcando check file signatures e configurando o path corretamente.
       
      Este é o client 8.60 adaptado para o Remere's Map Editor. Resolvi postar já que ele foi removido do site oficial do RME. (ficou apenas a versão para linux lá)
      Se estiver tendo problemas para abrir a versão 8.60, tente utilizar este.
                                                                                                                     
      Baixar o Tibia Client 8.60 que funciona no Remere’s Map Editor
      Essa versão do Tibia 8.60 client resolve o erro unsupported client version ou Could not locate tibia.dat and/or tibia.spr, please navigate to your tibia 8.60 installation folder.
       
      Downloads
      https://tibiaking.com/applications/core/interface/file/attachment.php?id=47333

      Scan: https://www.virustotal.com/gui/file/333e172ac49ba2028db9eb5889994509e7d2de28ebccfa428c04e86defbe15cc
       
    • Por danilo belato
      Fala Galera To Com um problema aki 
       
      quero exporta umas sprites de um server para colocar em outro 
       
      eu clico na sprites ai aparece tds a forma delas do lado de la >>
       
      ai eu clico nela e ponho a opiçao de export mais quando salvo a sprite ela n abri 
       
      aparece isso quando tento vê-la 
       
      visualização não disponível ( no formatos png e bitmap)
       
      Agora no formato idc fala que o paint n pode ler 
       
      me ajudem ae...
    • Por Vitor Bicaleto
      Galera to com o script do addon doll aqui, quando eu digito apenas "!addon" ele aparece assim: Digite novamente, algo está errado!"
      quando digito por exemplo: "!addon citizen" ele não funciona e não da nenhum erro
       
      mesma coisa acontece com o mount doll.. 
    • Por Ayron5
      Substitui uma stone no serve, deu tudo certo fora  esse  erro ajudem  Valendo  Rep+  Grato  

      Erro: data/actions/scripts/boost.lua:557: table index is nil
       [Warning - Event::loadScript] Cannot load script (data/actions/scripts/boost.lua)

      Script:
×
×
  • Criar Novo...

Informação Importante

Confirmação de Termo