Ir para conteúdo

Líderes

Conteúdo Popular

Exibindo conteúdo com a maior reputação em 06/01/16 em %

  1. Luga03

    Task System 2016

    Olá! Eu estava ajudando um cara com um task system , ele disse que pegou na net, mas as alterações que ele queria eu tive que refazer algumas partes do sistemas! Testei e funcionou perfeitamente! Funciona com Poketibia e Tibia! Vamos deixar de enrolação e adicionar o sistema! Lembrando também que funciona com tfs 0.3.6 e tfs 0.4! Não testei com tfs 1.x mas acho que não funciona. Vá em creaturescripts.xml e adicione isso: <event type="kill" name="KillTask" event="script" value="task.lua"/> No login.lua adiciona isso com os demais: registerCreatureEvent(cid, "KillTask") Agora crie um arquivo chamado task.lua e adicione isso: local tasksss = { [1] = {name = "Blastoise", sto = 10212, count = 3, time_sto = 5457, time = 1*24*60*60, sto_count = 14129, money = 100, rewardid = 7621, rewardcount = 100, rewardexp = 10000, text = "Congratulations! You finished this task. In 24h, you will be able to do it again."}, [2] = {name = "Charizard", sto = 10213, count = 5, time_sto = 5458, time = 1*24*60*60, sto_count = 14130, money = 100, rewardid = 7621, rewardcount = 100, rewardexp = 10000, text = "Congratulations! You finished this task. In 24h, you will be able to do it again."},}function onKill(cid, target) for _, t in ipairs(tasksss) do local total_count = t.count local m_sto = t.sto local count_sto = t.sto_count if getPlayerStorageValue(cid, m_sto) ~= -1 then if getCreatureName(target) == t.name then if (total_count - getPlayerStorageValue(cid, count_sto)) == 1 then setPlayerStorageValue(cid, count_sto, getPlayerStorageValue(cid, count_sto) + 1) doPlayerSendTextMessage(cid, 20, "You are killed ".. getPlayerStorageValue(cid, count_sto) .." " .. t.name .. " and finished the task!") return true elseif (total_count - getPlayerStorageValue(cid, count_sto)) >= 1 then setPlayerStorageValue(cid, count_sto, getPlayerStorageValue(cid, count_sto) + 1) doPlayerSendTextMessage(cid, 20, "You are killed ".. getPlayerStorageValue(cid, count_sto) .." of ".. total_count .." " .. t.name .. " kills to finish the task.") return true end end end end return trueend Agora vá em npc/scripts e crie um arquivo chamado task.lua e adicione isso: local tasksss = { [1] = {name = "Blastoise", sto = 10212, count = 3, time_sto = 5457, time = 1*24*60*60, sto_count = 14129, money = 100, rewardid = 7621, rewardcount = 100, rewardexp = 10000, text = "Congratulations! You finished this task. In 24h, you will be able to do it again."}, [2] = {name = "Charizard", sto = 10213, count = 5, time_sto = 5458, time = 1*24*60*60, sto_count = 14130, money = 100, rewardid = 7621, rewardcount = 100, rewardexp = 10000, text = "Congratulations! You finished this task. In 24h, you will be able to do it again."},}local keywordHandler = KeywordHandler:new()local npcHandler = NpcHandler:new(keywordHandler)NpcSystem.parseParameters(npcHandler)local talkState = {}function onCreatureAppear(cid) npcHandler:onCreatureAppear(cid) endfunction onCreatureDisappear(cid) npcHandler:onCreatureDisappear(cid) endfunction onCreatureSay(cid, type, msg) npcHandler:onCreatureSay(cid, type, msg) endfunction onThink() npcHandler:onThink() endfunction creatureSayCallback(cid, type, msg) if(not npcHandler:isFocused(cid)) then return false end local talkUser = NPCHANDLER_CONVBEHAVIOR == CONVERSATION_DEFAULT and 0 or cid value = -1 for i = 1, #tasksss do if msgcontains(msg, tasksss[i].name) and not value ~= -1 then value = i end end if value == -1 then selfSay('I don\'t have a this task!', cid) talkState[talkUser] = 0 return true end local configss = tasksss[value] local name = configss.name local m_sto = configss.sto local time_sto = configss.time_sto local count_sto = configss.sto_count local total_count = configss.count local rest = total_count - getPlayerStorageValue(cid, count_sto) if getPlayerStorageValue(cid, time_sto) < os.time() then -- verifica se o player ainda está no prazo if getPlayerStorageValue(cid, m_sto) <= 0 then -- verifica se o player não pegou está task selfSay('Ready! Now you need kill a '.. total_count .. ' '.. name .. '!', cid) setPlayerStorageValue(cid, m_sto, 1) setPlayerStorageValue(cid, total_count, 0) talkState[talkUser] = 0 else if rest <= 0 then -- Verifica se o player matou todos os monstros nescessários doPlayerAddItem(cid, configss.rewardid, configss.rewardcount) setPlayerStorageValue(cid, count_sto, 0) setPlayerStorageValue(cid, m_sto, -1) setPlayerStorageValue(cid, time_sto, os.time() + configss.time) doPlayerAddExperience(cid, configss.rewardexp) doSendAnimatedText(getCreaturePosition(cid), configss.rewardexp, 215) selfSay(configss.text, cid) talkState[talkUser] = 0 else selfSay('You need to kill '..rest..' '..name..' to gain a reward.', cid) talkState[talkUser] = 0 end end else selfSay('You already did this task, player. Wait '..math.ceil((getPlayerStorageValue(cid, time_sto) - os.time())/(60*60))..' hours to do it again.', cid) talkState[talkUser] = 0 endendnpcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)npcHandler:addModule(FocusModule:new()) Pronto, agora volte para a pasta npc e crie um novo arquivo .xml chamado de Task e adicione isso lá: <?xml version="1.0" encoding="UTF-8"?><npc name="Npc Nome" script="task.lua" walkinterval="350000" floorchange="0" speed="0"> <health now="150" max="150"/> <look type="369" head="91" body="102" legs="83" feet="0"/> <parameters> <parameter key="message_greet" value="You want gain a task of {Blastoise}?"/> </parameters></npc> Pronto, agora o sistema de task está funcionando, e para adicionar um novo monstro pra fazer a task? Basta editar a tabela, mas não esqueça que tem que atualizar a tabela nos 2 scripts .lua !! local tasksss = { [1] = {name = "Blastoise", sto = 10212, count = 3, time_sto = 5457, time = 1*24*60*60, sto_count = 14129, money = 100, rewardid = 7621, rewardcount = 100, rewardexp = 10000, text = "Congratulations! You finished this task. In 24h, you will be able to do it again."}, [2] = {name = "Charizard", sto = 10213, count = 5, time_sto = 5458, time = 1*24*60*60, sto_count = 14130, money = 100, rewardid = 7621, rewardcount = 100, rewardexp = 10000, text = "Congratulations! You finished this task. In 24h, you will be able to do it again."},} Para configurar siga as seguintes instruções: Modificações da versão 2.0: Corrigido bug de apenas o primeiro monstro configurado funcionava, agora todos configurados funcionam! Quando player fala qual quer coisa que não seja o nome do monstro, diz que não tem aquela task! Modificado modo de contagem de kill, agora monstra quantos você matou e o total que precisa matar, quando mata o ultimo monstro, aparece a mensagem que terminou a task! Créditos: Criador @miguel223 Drazyn1291 -- Editei e reformulei muita coisa! Adicionei coisas como a contagem que falta ao matar os monstros, editei pra fazer a task apenas se o player falar com o NPC e outras coisas!
    2 pontos
  2. Josegvb

    SERVER Bugado

    pensei q poderia ser 1 storage duplicada ou bugada algo do tipo, entao deletei TDS as storages da database, mesmo assim gelou ^^ me dou por vencido, pda filho da *******
    1 ponto
  3. Yan Liima

    SERVER Bugado

    Nuus kkkkkkkkkkkkkkkkkkkkkkkkkkkkkk Não sei porque mais achei engraçado o jeito que tu falou rsrs Depois dessa da mais não man, sei o que é não kkkkkkkk Boa sorte!
    1 ponto
  4. Josegvb

    SERVER Bugado

    esqueça ainda ta travando kkkkkkkkkkkkkkkkkk
    1 ponto
  5. Scizorgame

    [Encerrado] Erro Distro Catch

    sim no mesmo arquivo, editei o post são 8 attributes e não 3, reveja ele
    1 ponto
  6. Scizorgame

    [Encerrado] Erro Distro Catch

    se estiver usando o pda by bolz(q não tem level system) vc tem q desabilitar esses 8 attributes: doItemSetAttribute(item, "offense", coffense) doItemSetAttribute(item, "level", clevel) doItemSetAttribute(item, "exp", cexp) doItemSetAttribute(item, "nextlevelexp", cnext) doItemSetAttribute(item, "defense", cdefense) doItemSetAttribute(item, "speed", cspeed) doItemSetAttribute(item, "vitality", cvitality) doItemSetAttribute(item, "specialattack", cspatk) deixe-os assim e teste: --doItemSetAttribute(item, "offense", coffense) --doItemSetAttribute(item, "level", clevel) --doItemSetAttribute(item, "exp", cexp) --doItemSetAttribute(item, "nextlevelexp", cnext) --doItemSetAttribute(item, "defense", cdefense) --doItemSetAttribute(item, "speed", cspeed) --doItemSetAttribute(item, "vitality", cvitality) --doItemSetAttribute(item, "specialattack", cspatk)
    1 ponto
  7. Scizorgame

    [Encerrado] Erro Distro Catch

    posta o lib/catch system.lua, lembrando q o erro é pq esta setando um attribute q provavelmente n existe, foi tirado ou n configurado.
    1 ponto
  8. vou deixar pra lá por enquanto tenho coisas mais urgentes para resolver no jogo mas valeu pela ajuda não funfo mas valeu pela ajuda @Yan Liima
    1 ponto
  9. Danihcv

    [Erro] Npc

    @kttallan, dessa forma você estaria fazendo um arrodeio desnecessário. Observe uma forma mais sucinta e prática: local table = { ["Arcanine"] = {} } for k, v in pairs(table) do if msgcontains(msg, k) then ..etc etc.. end end Eu fiz um npc um tempo atrás utilizando esse mesmo princípio: http://www.xtibia.com/forum/topico/240211-npc-que-dá-informaçõesconta-histórias/ Dá uma olhada nos códigos dele pra vc ver como é que funcionaria a execução prática disso.
    1 ponto
  10. É a formatação do seu .lua. Abre a script desse sistema seu pelo notepad ++, copie tudo que está la dentro depois lá em cima vai ter uma opção escrita "FORMATAR" clique nela e veja se está marcado em UTF-8 ou ANSI. Se tiver em UTF-8 mude para ANSI ou se tiver ANSI mude para UTF-8. Depois os caracteres com acentos vai bugar tu cola o que tu tinha copiado antes e depois salva. Depois é so dar reload no servidor e curtir seus acentos rsrs
    1 ponto
  11. Danihcv

    [Erro] Npc

    @kttallan, pelo que dá pra entender, nessa linha você está qrnd pegar o id de um item. local tb = tables[item.itemid] Sendo que você está usando um parâmetro (item) que não possui nenhum valor atribuído. Faria sentido utilizar essa linha se o script fosse um action. Eis o porquê: Como você pode ver, aqui se vc utilizar o parâmetro item em algum lugar do script (action), ele terá um valor que terá sido pego automaticamente no momento em que o script foi acionado. Porém você está utilizando um onCreatureSay, e nesse tipo de evento, não é possível utilizar o parâmetro item. Vc terá que arranjar alguma outra forma de capturar o id do item X que vc tá qrnd. Não sei se me fiz entender, mas espero que sim... sahusahusahu possível solução: Já que na tabela tables vc tá usando só 1 elemento, acredito que usar isso não irá te trazer problemas: for k, v in pairs(tables) do if getPlayerItemCount(cid, k) > 0 then ..etc etc.. end end
    1 ponto
  12. Danihcv

    [erro] npc

    @Spring Trap, como que tá os arquivos .xml desses npcs?
    1 ponto
  13. Luga03

    Task System 2016

    Tópico atualizado! Scripts refeitos na versão 2.0 com tudo funcionando!
    1 ponto
Líderes está configurado para São Paulo/GMT-03:00
×
×
  • Criar Novo...