Salve geral, recentemente fiz um Task System para meu servidor, então gostaria de compartilha ele com vocês, assim como outros scripts que fiz e gostaria de compartilhar. Bom, vamos ao que interessa.
Informações!!
Task Normal - Você 1x por vez, quantas vezes quiser, repetindo a task se também quiser.
Task Diaria - Você faz uma vez por dia, não podendo repeti em quanto as 24 horas não terminar.
Task Rank - É mostrado na descrição do player qual rank task ele possui.
Task Rank Quest - Um extra desse task system é o piso task, será explicado na parte do script, leiam com atenção.
Task Comandos - Comandos task, 1 para ver o progresso das suas task e outro para mostrar informações do seu personagem, como uma consulta, os comandos são: !task que mostra quais task você ta fazendo, tanto diaria quanto normal e !task me que mostrar informações do seu personagem, como rank, quantidade de pontos task e quantidade de pontos task rank.
Well, o resto é surpresa, cabe você descobrir! xD
Para não ficar só nas palavras, mostrarei algumas imagens, várias no caso: Removida, colocarei novas!
Instalação!!
Muito bem, chega de conversa, como instalar logo essa bagaça. Primeiramente vá em data/lib e abra o arquivo lib.lua e adicione:
dofile('data/lib/task system.lua')
Ainda na pasta lib crie um arquivo.lua chamado task system.lua e adicione esse code dentro:
No final do tópico, ensinarei a configurar a lib. Agora vai em, data/npc e crie um arquivo.xml chamado task.xml e coloque esse code dentro:
<?xml version="1.0" encoding="UTF-8"?>
<npc name="NPC Task" script="task system.lua" walkinterval="0" floorchange="0">
<health now="150" max="150"/>
<look type="430"/>
<parameters>
<parameter key="message_greet" value="Hello |PLAYERNAME|. I'm in charge of delivering missions to the players. Would you like to do a {normal} task, {daily} task, {receive} your reward from a task or {abandon} a task ? You can also see the {normal task list} and the {daily task list}."/>
<parameter key="message_farewell" value="See you later." />
<parameter key="message_walkaway" value="See you later." />
</parameters>
</npc>
Ainda na pasta npc, entre na pasta scripts e crie um arquivo.lua chamado task system.lua e adicione esse code dentro:
Agora vá em data/talkactions e abra o arquivo talkactions.xml e adicione a seguinte tag:
<talkaction words="!task" separator=" " script="task system.lua" />
Ainda na pasta talkactions entre na pasta scripts e crie um arquivo.lua chamado task system.lua e adicione esse code dentro dele:
Agora vá em data/creaturescripts e abra o arquivo creaturescripts.xl e adicione a seguinte tag:
<event type="kill" name="tasksystem" script="task system.lua"/>
Ainda na pasta creaturescripts entre na pasta scripts e crie um arquivo.lua chamado task system.lua e adicione esse code dentro dele:
Ainda na pasta script abra o login.lua e adicione dentro:
player:registerEvent("tasksystem")
Agora vá em data/events/scripts e abra o arquivo player.lua, depois de aberto, antes de:
self:sendTextMessage(MESSAGE_INFO_DESCR, description)
adicione:
if thing:isCreature() then
if thing:isPlayer() then
description = string.format("%s\nTask Rank: "..getRankTask(thing), description)
end
end
Extra(Opcional)!!
Extra, vá em data/movements/scripts e crie um arquivo chamado tile task.lua, depois de aberto, antes de:
Vá em data/movements/movements.xml adicione:
<movevent event="StepIn" actionid="XXXX" script="tile task.lua"/>
Explicação: Com esse movements acima, você só poderá passar por o piso caso tenha pontos task necessário para passar, se ativar a opção, removePoints então a mesma quantidade de pontos necessária para passar, será removida, ao passar, caso esteja desativada, então
apenas será necessário ter os pontos task para passar. Em XXXX coloque o actionid, e o actionid coloque no piso desejado!
New Extra: Vá em data/movements/scripts e crie um arquivo chamado tile task2.lua e adicione o seguinte scripts:
Vá em data/movements/movements.xml adicione:
<movevent event="StepIn" actionid="XXXX" script="tile task2.lua"/>
Explicação: Ao adicionar esse movements acima, você só poderá passar pelo piso caso seu rank task seja igual ou superior ao rank definido na variável, caso não seja igual e nem superior, não será possível passar.
Configure na lib, a sequência de ranks de acordo com a sequência de rank da tabela de pontos, assim:
A sequência precisa está igual e numeradas.
Configurando!!
task_monsters = {
[1] = {name = "monster1", mons_list = {"monster_t2", "monster_t3"}, storage = 30000, amount = 20, exp = 5000, pointsTask = {1, 1}, items = {{id = 2157, count = 1}, {id = 2160, count = 3}}},
[2] = {name = "monster2", mons_list = {"", ""}, storage = 30001, amount = 10, exp = 10000, pointsTask = {1, 1}, items = {{id = 10521, count = 1}, {id = 2160, count = 5}}},
[3] = {name = "monster3", mons_list = {"", ""}, storage = 30002, amount = 10, exp = 18000, pointsTask = {1, 1}, items = {{id = 2195, count = 1}, {id = 2160, count = 8}}},
[4] = {name = "monster4", mons_list = {"", ""}, storage = 30003, amount = 10, exp = 20000, pointsTask = {1, 1}, items = {{id = 2520, count = 1}, {id = 2160, count = 10}}}
}
task_daily = {
[1] = {name = "monsterDay1", mons_list = {"monsterDay1_t2", "monsterDay1_t3"}, storage = 40000, amount = 10, exp = 5000, pointsTask = {1, 1}, items = {{id = 2157, count = 1}, {id = 2160, count = 3}}},
[2] = {name = "monsterDay2", mons_list = {"", ""}, storage = 40001, amount = 10, exp = 10000, pointsTask = {1, 1}, items = {{id = 10521, count = 1}, {id = 2160, count = 5}}},
[3] = {name = "monsterDay3", mons_list = {"", ""}, storage = 40002, amount = 10, exp = 18000, pointsTask = {1, 1}, items = {{id = 2195, count = 1}, {id = 2160, count = 8}}},
[4] = {name = "monsterDay4", mons_list = {"", ""}, storage = 40003, amount = 10, exp = 20000, pointsTask = {1, 1}, items = {{id = 2520, count = 1}, {id = 2160, count = 10}}}
}
nome - Nome do monstro.
mons_list - Nome dos monstro que são semelhantes e que matando eles também contará.
Exemplo:
name = "troll", mons_list = {"troll","frost troll","island troll"} e assim matando, troll, frost troll e island troll contará na task também.
storage - É a storage que salva a quantidade de monstros já matados.
amount - É a quantidade necessária de monstros matados para finalizar a task.
exp - É a quantidade de Experiência que vai ganhar ao finalizar a task, caso não queira dar experiência, basta deixar em 0.
pointsTask = {Task Points Que vai ganhar(Pontos usado no piso e etc..), Pontos Rank, que irá ganhar e aumentar seu rank.}
items - Itens que o player vai ganhar, devem está tabelados, dentro da tabela item, adicione das tabelas contendo o id do item e count, quantidade de items que irá ganhar.
Ex: items = {{id = 2157, count = 1}, {id = 2160, count = 3}} -- Aqui contém 2x tipos de itens, o 2157 e o 2160, e suas devidas quantidades que irá ganhar.
items = {{id = 2157, count = 1}} -- Aqui só tem 1 tipo de item e a quantidade que vai ganhar.
Adicione quantos itens quiser. O mesmo vale para as task diarias!
Bom, é isso ae, qualquer duvida, crítica, sugestões, deixem ae, se precisa de suporte na instalação ou está com erro em algo estarei dando suporte, abraços e bom uso do sistema.
É totalmente proibido leva meu sistema para outro site, blog ou fórum!