Killua Task System [Atualizado 16/04/2014]

Killua
Por Killua
em Mods, funções e outros

Killua

Vivendo e Aprendendo
avatar
Conde
Conde

INFOS

Grupo: CondeRegistrado: 29/04/09Posts: 904Char no Tibia: Jabuti Selvagem

Killua Task Sytem

Versões testadas: tfs 0.3.6 e 0.4

Eu sei que já existem vários task systems, inclusive aqui no fórum, mas do jeitinho que eu queria, não consegui achar nenhum. Por isso, resolvi fazer um eu mesmo.

O que ele tem de diferente?

É totalmente simplificado.

Não precisa "pegar" as tasks. Elas já são todas automáticas, ou seja, os monstros são contados desde sempre.

É tudo configurado em uma única tabela, de forma muito simples.

Tem um NPC que somente entra as recompensas.

Seu progresso pode ser visto pelo comando !task

2zp5dle.jpg

Atualização do sistema:

Refiz os códigos pois existia uma possibilidade de bug. Otimizei eles, deixando o código mais limpo, eficiente e rápido. Aconselho a todos que usam o sistema que instalem a nova versão.

Instalação:

Tags:

 

Em talkacions.xml adicione:

<talkaction log="yes" words="!task" event="script" value="amoebaTask.lua"/>

Em creaturescripts.xml adicione:

<event type="kill" name="AmoebaTask" event="script" value="amoebaTaskCreature.lua"/>

Em data/creaturescritps/scripts/login.lua adicione:


registerCreatureEvent(cid, "AmoebaTask") 

Scripts:

Lib:

Crie amoebaTask.lua em data/lib e coloque

-- Script feito por Killua, antigo amoeba13 --

amoebaTask = {
["Jabuti"] = {creatures = {"Jabuti","Jabuti Hatchling"}, storage = 2312112, storagecount = 890120, count = 300, exp = 0, money = 0, premios = {{6527, 10},{10133, 1}}},
["Thenebreus"] = {creatures = {"Thenebreus"}, storage = 2312113, storagecount = 890121, count = 250, exp = 0, money = 0, premios = {{6527, 4},{10134, 1}}},
["Demon"] = {creatures = {"Demon"}, storage = 2312114, storagecount = 890122, count = 5, exp = 0, money = 0, premios = {{6527, 4},{10134, 1}}}
}

function taskKills(cid, storage) 
    local kills = getPlayerStorageValue(cid, storage)
    return kills < 0 and 0 or kills
end 

 

Talkaction:

Crie amoebaTask.lua em data/talkactions/scripts e coloque

-- Script por Killua, antigo amoeba13 --

function onSay(cid, words, param, channel)
    local stt = ""

    for nome, info in pairs(amoebaTask) do
        nomes = nome
        storages = info.storagecount
        counts = info.count
        stt = stt .. nomes .. " [" .. taskKills(cid, storages) .. "/" .. counts .. "]\n"
    end        
    doShowTextDialog(cid, 11231, "Tasks disponiveis em nosso servidor: \n" .. stt .. "")
   return true
end

 

Creaturescripts:

Crie amoebaTaskCreature.lua em data/creaturescripts/scripts e coloque

 

-- Script por Killua, antigo amoeba13 --

function onKill(cid, target, lastHit)
    
    if not isMonster(target) or not isPlayer(cid) then
        return true
    end
    
    for _, tasks in pairs(amoebaTask) do
        if isInArray(tasks.creatures, getCreatureName(target)) then
            if taskKills(cid, tasks.storagecount) < tasks.count then
                doPlayerSetStorageValue(cid, tasks.storagecount, taskKills(cid, tasks.storagecount)+1)
                break
            end
        end
    end
    return true
end

 

NPC:

Em data/npc crie Task Man.xml e coloque

<?xml version="1.0" encoding="UTF-8"?><npc name="Task Man" script="data/npc/scripts/amoebaTask.lua" walkinterval="2000" floorchange="0">
<health now="150" max="150"/>
<look type="129" head="95" body="116" legs="121" feet="115" addons="3"/>
<parameters>
<parameter key="message_greet" value="Ola |PLAYERNAME|! Eu posso recompensa-lo por terminar tasks, basta dizer o nome de alguma! Para saber o nome das tasks e seu progresso em cada uma, diga !task."/>
</parameters>
</npc>

Em data/npc/script crie amoebaTask.lua e coloque

-- Script por Killua, antigo Amoeba13 --

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

    if amoebaTask[msg] then
        if getPlayerStorageValue(cid, amoebaTask[msg].storage) == -1 then
            if getPlayerStorageValue(cid, amoebaTask[msg].storagecount) == amoebaTask[msg].count then
                local esperiencia = amoebaTask[msg].exp > 0 and "" ..amoebaTask[msg].exp.. " exp e " or ""
                local dineiro = amoebaTask[msg].money > 0 and "" .. amoebaTask[msg].money .. " gold coins e " or ""
                selfSay("Voce conseguiu completar a task de ".. msg .. ", parabens! Eu vou te dar " .. esperiencia .. "" .. dineiro .."alguns itens como recompensa.", cid)
                doPlayerAddExperience(cid, amoebaTask[msg].exp)
                doPlayerAddMoney(cid, amoebaTask[msg].money)
                doPlayerSetStorageValue(cid, amoebaTask[msg].storage, 1)
                for juba, prize in pairs(amoebaTask[msg].premios) do
                    doPlayerAddItem(cid, prize[1], prize[2])
                end
            else
                selfSay("Desculpe, mas voce ainda nao matou todos os " .. msg .. "s. Voce so matou " .. taskKills(cid, amoebaTask[msg].storagecount) .. " de " .. amoebaTask[msg].count .. " " .. msg .. "s.", cid)
            end
        else
            selfSay("Voce so pode recber uma vez o premio de cada task.", cid)
        end
    else
        selfSay("O que?", cid)
    end
    return true
end
npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)
npcHandler:addModule(FocusModule:new())

 

Configuração:

A configuração é feita unicamente na tabela da lib:

amoebaTask = {
["Jabuti"] = {creatures = {"Jabuti","Jabuti Hatchling"}, storage = 2312112, storagecount = 890120, count = 300, exp = 0, money = 0, premios = {{6527, 10},{10133, 1}}},
["Thenebreus"] = {creatures = {"Thenebreus"}, storage = 2312113, storagecount = 890121, count = 250, exp = 0, money = 0, premios = {{6527, 4},{10134, 1}}},
["Demon"] = {creatures = {"Demon"}, storage = 2312114, storagecount = 890122, count = 5, exp = 0, money = 0, premios = {{6527, 4},{10134, 1}}}
}
  • Em [""] vc coloca o nome que vai aparecer no !task e que também será usado para pega a recompensa no NPC.
  • Em creatures vc coloca todos os monstros que vão contabilizar para tal task.
  • Em storage vc coloca o storage de task completa, que garante que o premio só será pego uma vez. Esse storage nunca pode ser repetido!
  • Em storagecount vc coloca o storage de contagem de monstros. Esse também nunca pode ser repetido!
  • Em count vc coloca o número de monstros necessários pra completar a task.
  • Em exp vc coloca a exp que ganha completando.
  • Em money vc coloca o dinheiro que ganha completando.
  • Em premios vc coloca os itens que ganham completando, seguido de sua quantidade. Ex: {6527, 4} o player vai receber 4 itens de id 6527.

Espero que façam bom uso do sistema. Vou ficar feliz em atender qualquer tipo de dúvida e também aceito sugestões.

Caso queira que as tasks possam ser feitas repetidas vezes, me peça que eu ponho aqui. Pois basta mudar duas linhas.

SkyDarkyes

avatar
Infante
Infante

INFOS

Grupo: InfanteRegistrado: 28/01/13Posts: 1685Gênero: Masculino

Curti xD

48EnrrM.png

 

JonatasLucasf

avatar
Conde
Conde

INFOS

Grupo: CondeRegistrado: 29/07/13Posts: 780Gênero: MasculinoChar no Tibia: aguarde...

Daora Talvez Vou uSAR EM MEU BAIAK, HEHE

to that change by a person who does not care about you?

Alexclusive

Um bom Veterano...
avatar
Herói
Herói

INFOS

Grupo: HeróiRegistrado: 25/10/12Posts: 2399Gênero: MasculinoChar no Tibia: Nuncative

Boa cara, pega bem na maioria dos servidores! happy.png

 

CURTA O FACEBOOK DO Ekz.

graphic_design.png  Seja um incentivador de pessoas. O mundo já tem críticos demais.  hardware_19.png

 

 

 

Killua

Vivendo e Aprendendo
avatar
Conde
Conde

INFOS

Grupo: CondeRegistrado: 29/04/09Posts: 904Char no Tibia: Jabuti Selvagem

Alexclusive

Um bom Veterano...
avatar
Herói
Herói

INFOS

Grupo: HeróiRegistrado: 25/10/12Posts: 2399Gênero: MasculinoChar no Tibia: Nuncative

Da pra adicionar quantos monstros quiser?

 

CURTA O FACEBOOK DO Ekz.

graphic_design.png  Seja um incentivador de pessoas. O mundo já tem críticos demais.  hardware_19.png

 

 

 

Killua

Vivendo e Aprendendo
avatar
Conde
Conde

INFOS

Grupo: CondeRegistrado: 29/04/09Posts: 904Char no Tibia: Jabuti Selvagem

BrunnoAlmeidahh

avatar
Campones
Campones

INFOS

Grupo: CamponesRegistrado: 16/01/14Posts: 2

"Em dinheiro voce poe a quantidade de dinheiro que o player vai ganhar"

_________

Esse valor eh em gold coin, ou crystal?

Killua

Vivendo e Aprendendo
avatar
Conde
Conde

INFOS

Grupo: CondeRegistrado: 29/04/09Posts: 904Char no Tibia: Jabuti Selvagem

Dbko

Mudando Para Melhor
avatar
Visconde
Visconde

INFOS

Grupo: ViscondeRegistrado: 21/11/13Posts: 372

Gostei Muito REP Ai mano Deu Tudo Certo Aki no meu Servidor Tava procurando Um Tipo Esse Ai FLW

tumblr_mqi6iwn0FQ1s3jp5fo3_500.gif

JustinnoTibianno

chega mais pra você ver (ê ê)
avatar
Conde
Conde

INFOS

Grupo: CondeRegistrado: 30/11/11Posts: 696Gênero: MasculinoChar no Tibia: treinador de lobo

Muito bom trabalho mano! Amanhã meu rep é seu akspdokasdop

Tem coisa melhor que task no tibia?

 

@Edit

 

Você falou que não precisa pegar a task, é só chegar na hunt e ir matando que vai contar? Se sim, da para fazer a mesma task mais de uma vez?

Att. João Pedro

Killua

Vivendo e Aprendendo
avatar
Conde
Conde

INFOS

Grupo: CondeRegistrado: 29/04/09Posts: 904Char no Tibia: Jabuti Selvagem

Muito bom trabalho mano! Amanhã meu rep é seu akspdokasdop

Tem coisa melhor que task no tibia?

 

@Edit

 

Você falou que não precisa pegar a task, é só chegar na hunt e ir matando que vai contar? Se sim, da para fazer a mesma task mais de uma vez?

 

Valeu cara :)

 

Isso, é só sair matando que já conta. Do jeito que eu configurei ele aqui, só dá pra fazer uma vez cada task... Mas dá pra mudar e deixar fazer a mesma várias vezes, pra isso só mudaria umas 3 linhas

srkapetinha

Gronkowski
avatar
Campones
Campones

INFOS

Grupo: CamponesRegistrado: 07/12/11Posts: 61Char no Tibia: Thanatus Ironfirst

Não entendo mt de script ,para poder fazer várias vezes, oque que muda?

Killua

Vivendo e Aprendendo
avatar
Conde
Conde

INFOS

Grupo: CondeRegistrado: 29/04/09Posts: 904Char no Tibia: Jabuti Selvagem

FelipeGuilherme

avatar
Campones
Campones

INFOS

Grupo: CamponesRegistrado: 24/01/14Posts: 5Gênero: Masculino
amoebaTask = {

{nome = "Jabuti", creatures = {"Jabuti","Jabuti Hatchling"}, storage = 2312112, storagecount = 890120, count = 300, exp = 0, money = 0, premios = {{2160, 10},{2195, 1}}},

{nome = "Thenebreus", creatures = {"Thenebreus"}, storage = 2312113, storagecount = 890121, count = 250, exp = 0, money = 0, premios = {{2160, 8},{10134, 1}}},

{nome = "Demon", creatures = {"Demon"}, storage = 2312114, storagecount = 890122, count = 200, exp = 0, money = 0, premios = {{2160, 80},{10134, 1}}}

{nome = "Dragon", creatures = {"Dragon"}, storage = 2312114, storagecount = 890123, count = 200, exp = 0, money = 0, premios = {{2160, 20},{10134, 1}}}



storagecount = 890123 < Eu adicionei o dragon so que ta dando ero oque errei ? em storage account como voçe disse n pode ser repetido adicionei 23 e da erro