Ir para conteúdo
  • Cadastre-se

Sistema [8.6] Task System 4.0! (Task system + Daily Task System)


Posts Recomendados

  • 4 weeks later...
  • Respostas 296
  • Created
  • Última resposta

Top Posters In This Topic

Top Posters In This Topic

Popular Posts

Removido:   *Boss Room *Rank Task *Prêmios para os 10 primeiros a terminar todas as tasks   Adicionado:   *Daily Task System (Sistema exclusivo de Task diario,

tenta deixar essa linha: if isPlayer(cid) and isMonster(target) and not isSummon(target) then assim if isPlayer(cid) and isMonster(target) then   e testa

gostei dessa ideia, então estou num projeto e estou meio sem tempo, já passei parto do simple task pra tfs 1.2 e tal. terminando esse projeto e de passar o sistema pra tfs 1.2 eu começo a editar o sis

Posted Images

da pra criar mais de um npc?

tem que mudar os storages?

@EDIT testei e nao funcionou... da um erro na distro ao eu tentar falar com o npc

@Vodkart

 

Print:

Spoiler

image.thumb.png.26d8abe58b3c6eb80094af6bfffcb354.png

 

image.thumb.png.fa1edc52cd67d77430a82b4652584f70.png

 

 

 

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

AJfwFit.png&key=fe4d679c24a3f021c13992ab

Link para o post
Compartilhar em outros sites
  • 2 months later...
Em 08/01/2017 em 22:08, Vodkart disse:

é a storage que indicará se o jogador co

Seria possível fazer com que o jogador recebesse uma task diária aleatória ao logar?

Editado por magera (veja o histórico de edições)
Link para o post
Compartilhar em outros sites

Pai esta dando esse erro aqui na distro quando vou entregar a recompensa!

[11:7:30.059] [Error - NpcScript Interface]
[11:7:30.059] data/npc/scripts/simple_task.lua:onCreatureSay
[11:7:30.059] Description:
[11:7:30.059] data/lib/100-shortcut.lua:260: attempt to index a boolean value
[11:7:30.059] stack traceback:
[11:7:30.060]   data/lib/100-shortcut.lua:260: in function 'getItemNameById'
[11:7:30.060]   [string "task_sys = {..."]:85: in function 'getItemsFromList'
[11:7:30.060]   data/npc/scripts/simple_task.lua:53: in function 'callback'
[11:7:30.060]   data/npc/lib/npcsystem/npchandler.lua:458: in function 'onCreatureSay'
[11:7:30.060]   data/npc/scripts/simple_task.lua:8: in function <data/npc/scripts/simple_task.lua:8>

A linha do script está asim!
 

[1] = {name = "Ratos", start = 176201, monsters_list = {"Rato","Ratazana"}, level = 1, count = 50, points = 0, items = {{2696,10}}, reward = {{13126,1}}, exp = 400, money = 500},

A onde está dando o erro no LIB 100 etc. está asim
 

function getItemNameById(itemid)
	return getItemDescriptionsById(itemid).name
end

function getItemPluralNameById(itemid)
	return getItemDescriptionsById(itemid).plural
end

 

Link para o post
Compartilhar em outros sites
  • 1 month later...

Estou tendo problemas com esse sistema de tasks.

Qualquer player aleatório que estiver fazendo qualquer task, em algum momento quando mata os monstros, os monstros não "caem", não morrem, e fica pulando um erro no console.

O script em algum momento não é capaz de comparar string com numero, em algum momento.... bem complicado.

image.thumb.png.6dc4aedc4d0e94eea9516fc2f454d511.png

Baiak 24h -> www.baiakinfinity.ml

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

[string "task_sys = {..."]:66: attempt to index field '?' (a number value)

 

alguem da uma forca?

Link para o post
Compartilhar em outros sites
7 horas atrás, Jensen disse:
  Ocultar conteúdo

[string "task_sys = {..."]:66: attempt to index field '?' (a number value)

 

alguem da uma forca?

 

Joga o arquivo dentro de um Bloco de notas, e salva, vai aparecer um erro, voce aperta OK, quando abrir o arquivo novamente, ira ter uns "ponto de interrogação", apaga eles, e pronto.

 

Em 31/07/2019 em 13:12, pedrominare disse:

Estou tendo problemas com esse sistema de tasks.

Qualquer player aleatório que estiver fazendo qualquer task, em algum momento quando mata os monstros, os monstros não "caem", não morrem, e fica pulando um erro no console.

O script em algum momento não é capaz de comparar string com numero, em algum momento.... bem complicado.

image.thumb.png.6dc4aedc4d0e94eea9516fc2f454d511.png

 


Abaixo dessas 3 linhas você irá adicionar oque vou postar logo abaixo.

task_sys_storages = {176601, 176602, 176603, 176604, 176605, 176606, 176607, 176608}

 

<talkaction words="/task;!task" event="buffer"><![CDATA[
domodlib('task_func')

 

<event type="kill" name="KillTask" event="script"><![CDATA[
domodlib('task_func')

ISSO AQUI
 

local function getPlayerStorageValue(cid, value)
  local tmp = getCreatureStorage(cid, value)
  tmp = (type(tmp) == "string" and 0 or tmp)
  return tmp
end

 

       112674.gif

 

 

 

Link para o post
Compartilhar em outros sites
1 hora atrás, Ackerzin disse:

Joga o arquivo dentro de um Bloco de notas, e salva, vai aparecer um erro, voce aperta OK, quando abrir o arquivo novamente, ira ter uns "ponto de interrogação", apaga eles, e pronto.

 


Abaixo dessas 3 linhas você irá adicionar oque vou postar logo abaixo.


task_sys_storages = {176601, 176602, 176603, 176604, 176605, 176606, 176607, 176608}

 


<talkaction words="/task;!task" event="buffer"><![CDATA[
domodlib('task_func')

 


<event type="kill" name="KillTask" event="script"><![CDATA[
domodlib('task_func')

ISSO AQUI
 


local function getPlayerStorageValue(cid, value)
  local tmp = getCreatureStorage(cid, value)
  tmp = (type(tmp) == "string" and 0 or tmp)
  return tmp
end

 

 

Certo, mas o que exatamente isso vai fazer? vai só converter o valor que é obtido pela função getplayerstoragevalue pra string?

Baiak 24h -> www.baiakinfinity.ml

Link para o post
Compartilhar em outros sites
5 horas atrás, pedrominare disse:

Certo, mas o que exatamente isso vai fazer? vai só converter o valor que é obtido pela função getplayerstoragevalue pra string?

 

Quando acontece esse bug, do bixo morrer e não morrer, ehaueha é porque a storage deu ruim, ultrapassou, ele vai resetar ela e voltar pra zero, então no momento que acontecer vai voltar pra "0" e vai desbugar, no caso nem bugar vai, vai arrumar ?

 

       112674.gif

 

 

 

Link para o post
Compartilhar em outros sites
Em 09/08/2019 em 13:35, Ackerzin disse:

Joga o arquivo dentro de um Bloco de notas, e salva, vai aparecer um erro, voce aperta OK, quando abrir o arquivo novamente, ira ter uns "ponto de interrogação", apaga eles, e pronto.

 


Abaixo dessas 3 linhas você irá adicionar oque vou postar logo abaixo.


task_sys_storages = {176601, 176602, 176603, 176604, 176605, 176606, 176607, 176608}

 


<talkaction words="/task;!task" event="buffer"><![CDATA[
domodlib('task_func')

 


<event type="kill" name="KillTask" event="script"><![CDATA[
domodlib('task_func')

ISSO AQUI
 


local function getPlayerStorageValue(cid, value)
  local tmp = getCreatureStorage(cid, value)
  tmp = (type(tmp) == "string" and 0 or tmp)
  return tmp
end

 

 

qual arquivo? simple task? fiz isso com o arquivo mas nao deu erro nenhum!

Link para o post
Compartilhar em outros sites
Em 10/08/2019 em 18:53, Jensen disse:

qual arquivo? simple task? fiz isso com o arquivo mas nao deu erro nenhum!

 

Posta o arquivo ai, no pastebin

       112674.gif

 

 

 

Link para o post
Compartilhar em outros sites
13 minutos atrás, Ackerzin disse:

Posta o arquivo ai, no pastebin

 

@Ackerzin Eu ja consegui, grato pela ajuda, se possivel me ajuda no boss reward?

Link para o post
Compartilhar em outros sites
Em 09/08/2019 em 20:43, Ackerzin disse:

Quando acontece esse bug, do bixo morrer e não morrer, ehaueha é porque a storage deu ruim, ultrapassou, ele vai resetar ela e voltar pra zero, então no momento que acontecer vai voltar pra "0" e vai desbugar, no caso nem bugar vai, vai arrumar ?

 

 

Certo, ele até evita do char ficar trapado pelos monstros, mas o erro não é corrigido, uma vez que agora ao invés de os monstros não morrerem, o player tem a sua task resetada (volta pra 0 na contagem de monstros).

Baiak 24h -> www.baiakinfinity.ml

Link para o post
Compartilhar em outros sites
12 horas atrás, pedrominare disse:

Certo, ele até evita do char ficar trapado pelos monstros, mas o erro não é corrigido, uma vez que agora ao invés de os monstros não morrerem, o player tem a sua task resetada (volta pra 0 na contagem de monstros).

 

Exato, foi oque eu disse, mas é melhor resetar e usar assim por enquanto, doque bugar todos monstros, e a distro ficar spamando erro até cair =x

       112674.gif

 

 

 

Link para o post
Compartilhar em outros sites

@Ackerzin 


sabe resolver?

[string "task_sys = {..."]:52: bad argument #2 to 'random' (number expected, got nil)
stack traceback:
        [C]: in function 'random'
        [string "task_sys = {..."]:52: in function 'doRandomDailyTask'
        data/npc/scripts/task.lua:37: in function 'callback'
        data/npc/lib/npcsystem/npchandler.lua:456: in function 'onCreatureSay'
        data/npc/scripts/task.lua:8: in function <data/npc/scripts/task.lua:8>

 

Link para o post
Compartilhar em outros sites
15 horas atrás, Ackerzin disse:

Exato, foi oque eu disse, mas é melhor resetar e usar assim por enquanto, doque bugar todos monstros, e a distro ficar spamando erro até cair =x

 

Eu concordo kkkkk mas o melhor seria encontrar uma solução pra esse erro x.x :(

Baiak 24h -> www.baiakinfinity.ml

Link para o post
Compartilhar em outros sites

Quando eu falo "!task" da esse erro...

 

@Vodkart 

image.thumb.png.c9f2954bc3d544a72f4d948e17989476.png

 

E quando eu vou entregar a task, fala esse outro erro..

image.thumb.png.2f6dcf898cb78e7db23592e4466fefc4.png

 

 

 

 

 

                                                                                                                                                     tumblr_nwmv2z4VEM1ujiquxo1_100.gif.2db64bb36f0f565e68ff2a90cb98f439.gif.59f4c4cf234d2f6906621cac0553a862.gif

https://github.com/italoxxx1

 

Link para o post
Compartilhar em outros sites

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 luanluciano93
      Olá pessoal, estou desenvolvendo esse sistema vip para TFS 1.x, se precisarem de alguma função nova é só comentar, criei para usar em um servidor meu e resolvi postar, bom proveito a todos.
       
      É só ir no arquivo data/lib/core/player.lua e adicionar esse código no começo do script:
      -- ALTER TABLE `accounts` ADD `vip_time` BIGINT(20) NOT NULL DEFAULT 0; -- player:getVipTime() function Player.getVipTime(self) local resultId = db.storeQuery("SELECT `vip_time` FROM `accounts` WHERE `id` = '".. self:getAccountId() .."';") local time = resultId ~= false and result.getNumber(resultId, "vip_time") or 0 result.free(resultId) return time end -- player:isVip() function Player.isVip(self) return self:getVipTime() > os.time() and true or false end -- player:addVipDays(days) function Player.addVipDays(self, days) return(self:isVip() and tonumber((days * 86400))) and db.query("UPDATE `accounts` SET `vip_time` = '".. (self:getVipTime() + (days * 86400)) .."' WHERE `id` ='".. self:getAccountId() .."' LIMIT 1 ;") or db.query("UPDATE `accounts` SET `vip_time` = '".. (os.time() + (days * 86400)) .."' WHERE `id` ='".. self:getAccountId() .."' LIMIT 1 ;") end -- player:removeVipDays(days) function Player.removeVipDays(self, days) return(self:isVip() and tonumber((days * 86400))) and db.query("UPDATE `accounts` SET `vip_time` = '".. (self:getVipTime() - (days * 86400)) .."' WHERE `id` ='".. self:getAccountId() .."' LIMIT 1 ;") or db.query("UPDATE `accounts` SET `vip_time` = '".. (os.time() - (days * 86400)) .."' WHERE `id` ='".. self:getAccountId() .."' LIMIT 1 ;") end -- player:setVipDays(days) function Player.setVipDays(self, days) return db.query("UPDATE `accounts` SET `vip_time` = '".. (os.time() - (days * 86400)) .."' WHERE `id` ='".. self:getAccountId() .."' LIMIT 1 ;") end -- player:removeVip() function Player.removeVip(self) db.query("UPDATE `accounts` SET `vip_time` = '0' WHERE `id` ='".. self:getAccountId() .."' LIMIT 1 ;") end -- player:sendVipDaysMessage() function Player.sendVipDaysMessage(self) if self:isVip() then local vipTime = self:getVipTime() - os.time() local vipDays = 1 + (math.floor(vipTime / 86400)) return self:getVipTime() ~= false and self:sendTextMessage(MESSAGE_STATUS_CONSOLE_BLUE, 'You have '.. vipDays .. ' vip day(s) in your account.') end end -- player:checkVipLogin() function Player.checkVipLogin(self) if self:getVipTime() > 0 and not self:isVip() then return self:removeVip() and self:teleportTo(self:getTown():getTemplePosition()) end end  
       
      As funções são:
      • player:getVipTime() - Retorna o valor da tabela vip_time (igual esta na database).
      • player:isVip() - Retorna se o player é vip ou não.
      • player:addVipDays(days) - Usa-se em algum script para para adicionar dias de vip ao player (parâmetro de entrada "days").
      • player:removeVipDays(days) - Usa-se em algum script para para remover dias de vip do player (parâmetro de entrada "days").
      • player:setVipDays(days) - Usa-se em algum script para para mudar os dias de vip do player (parâmetro de entrada "days").
      • player:removeVip() - Usa-se em algum script para para remover todo tempo de vip do player.
      • player:sendVipDaysMessage() - Retorna uma mensagem no player mostrando os dias de vip que ainda restam ao player.
      • player:checkVipLogin() - Checa se a vip do player acabou, se sim teleporta ele para o templo.
       

      Qualquer dúvida ou erro/bug poste aqui.
    • Por Killua
      Como funciona?
      A cada monstro que vc mata, seus itens equipados ganham 1 de exp. Quando seus itens chegarem às quantidades de exp definidas, eles upam e ficam com o nome assim: Demon Helmet + 1. Helmets, armors, legs, e boots recebem 1 de arm a cada vez que upam. Armas recebem 1 de ataque e escudos 1 de defesa.
       
      Para o monstro contar, ele deve dar um mínimo de exp (definido no script). O número de exp a que me refiro é aquele um presente no arquivo .xml.
       
      Para instalar, crie Killua Items Upgrade.lua em data/creaturescripts/scripts e coloque:
        Em data/creaturescripts/creaturescripts.xml coloque essas duas tags:
      <event type="kill" name="Item level" event="script" value="Killua Items Upgrade.lua"/> <event type="login" name="Item levell" event="script" value="Killua Items Upgrade.lua"/> Configurando: Na tabela table_of_slots, coloque em quais slots os itens upam.
      min_exp é a experiência mínima que o monstro deve ter para contar exp para o item. Se vc colocar 500, somente os monstros que tem exp igual ou superior a 500 no arquivo.xml vão valer.
      exp_levels são os valores de exp que os itens devem atingir para upar. No meu caso, quando o item alcançar 50 de exp, ele upa para o level 1. Quando alcançar 50 de exp, upa para o level 2 e assim por diante.
    • Por Sekk
      Bom, procurei esse Castle por MUITO TEMPO, mas não achei em NENHUM LUGAR DA INTERNET. Ontem, eu estava vendo alguns mapas do @Deathrocks, e vi nos prints, que o mapa possuia o evento que eu queria!
       
      Então baixei o mapa e extrai o evento, então venho lhes trazer!
       
       
      Nome: Castle 24H
      Cliente: 8.6
      Versão TFS: 0.4
      Tipo: Evento
       
      Bom, para começar, vamos em actions/scripts e crie 2 arquivos:
       
      castledoor1.lua
       
      castlewar1.lua
       
        Agora em actions.xml adicione as tags:
       
      Agora em monster/traps crie 3 arquivos:
       
      porta.xml
       
      protectcastle.xml  
      statue.xml  
      Agora em monsters.xml adicione as tags:    
      Vamos para movements/scripts e crie 2 arquivos:
       
      castlewar2.lua
       
      level.lua  
      Agora em movements.xml adicione as tags:  
       
      Pronto. Agora você só precisa baixar o mapa, inserir o mesmo ao seu servidor, configurar os teleports, e as hunts dentro do castle etc.
       
      PRINTS:
      1ª parte
       
      2ª parte:
       
      Obs.: Todos os ActionID e monsters já estão no mapa! Você só precisa configurar as coordenadas dos teleports, e o que possui no castle!
       
      Obs².: Tudo o que você pode configurar, já está escrito em cada script!
       
       
      Créditos:
      @DeathRocks
      PC98
      mapa.rar
    • Por gpedro
      Testado: MySQL & SQLite
      Distro: TFS 0.4_SVN & TFS 0.3.6

      MySQL

      ALTER TABLE `players` ADD `resets` INT(11) NOT NULL DEFAULT "0"; SQLite ALTER TABLE players ADD resets INTEGER not null default 0 Adicionando nas sources player.h procure por: uint32_t level; logo abaixo, adicione: uint32_t resets; iologindata.cpp procure por query << "SELECT `id`, `account_id`, `group_id`, `world_id`, `sex`, `vocation`, `experience`, `level`," substitua por: query << "SELECT `id`, `account_id`, `group_id`, `world_id`, `sex`, `vocation`, `experience`, `level`, `resets`, " procure por player->level = std::max((uint32_t)1, (uint32_t)result->getDataInt("level")); logo abaixo adicione: player->resets = (uint32_t)result->getDataInt("resets"); procure por query << "`maglevel` = " << player->magLevel << ", "; logo abaixo adicione: query << "`resets` = " << player->resets << ", "; players.cpp procure por: s << " (Level " << level << ")"; substitua por: s << " (Level " << level << ") [Reset " << resets << "]"; players.h procure por: void setPromotionLevel(uint32_t pLevel); logo abaixo adicione: uint32_t getResets() { return resets;} void setResets(int32_t amount) { resets += amount; if (resets < 0) {resets = 0;} } luascript.cpp para 0.3.6 static int32_t luaDoPlayerSetIdleTime(lua_State* L); logo abaixo adicione: static int32_t luaGetResets(lua_State* L); static int32_t luaSetResets(lua_State* L); talkactions.xml <talkaction words="!rank;/rank" event="script" value="ranks.lua"/> <talkaction words="!reset;/reset" script="reset.lua"/> ranks.lua
      Créditos: Dark Skyllen, Marcryzius, Mock, Kydrai, Cykotitan, gpedro*.
      * adaptação para 0.4
    • Por VitorSubhi
      Apresentação: Olá galera do Tibia King, este é meu primeiro tutorial que desenvolvo após anos apenas sugando da comunidade, chegou a hora de compartilhar um pouco de conhecimento, rsrs...
      Após ver que muitos usuários tinham interesse em um sistema de Trade de Points in-game resolvi trazer um sistema totalmente completo para vocês.
       
      Funcionamento:
      Player 1 após adquirir os Points, pode iniciar uma negociação com o Player 2 através do comando /tradepoints Player 2, Quantidade. Será aberto uma Janela de Trade com o item referente aos Points. Após ambos aceitarem a negociação será realizado a troca de Points pelo item requisitado.
      Observações:
      Necessário ter acesso às Sources de sua Distro. Testado em servidor 8.6 (The Forgotten Server 0.4). Antes que venham falar que possui sistemas parecidos, veja o diferencial (Item não aparece em nenhum inventário, e não é necessário usar/comprar qualquer item).  
      Algumas Imagens:
       
      Instalação:
      Sources > Luascript.cpp Sources > Luascript.cpp Sources > Luascript.h  
       
      Server > Data > Lib > 050-function Server > Data > Creaturescripts > Scripts >Trade_Orbs.lua Server > Data > Creaturescripts > Creaturescripts.xml Server > Data > Creaturescripts > Scripts > Login.lua Server > Data > Talkactions > Scripts > Points_Trade.lua Server > Data > Talkactions > Talkactions.xml Créditos:
      Todo o sistema foi feito completamente por mim: Vítor Subhi.
      The Forgotten Server (Pelas Sources)
      Vodkart, White Wolf, Natanael Beckman, e a todos os demais membros do TK que não lembro o nome, que contribuíram indiretamente através de seus tutoriais.
       
       
       
       
       



×
×
  • Criar Novo...

Informação Importante

Confirmação de Termo