Ir para conteúdo
  • Cadastre-se

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


Posts Recomendados

  • Respostas 298
  • 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

12 minutos atrás, wesquel disse:

Sim !

 

ah ta, então tem função diferente mesmo, por exemplo existe um "ehMonster(cid)" , dentre outras que não estou por dentro

vodkart_logo.png

[*Ninguém será digno do sucesso se não usar suas derrotas para conquistá-lo.*]

 

DISCORDvodkart#6090

 

Link para o post
Compartilhar em outros sites
3 horas atrás, Weslley Kiyo disse:

Vodkard, tem como fazer o npc dar apenas as task diária? Oq preciso deletar nesse caso?

 

posso fazer um sistema de somente task diaria... tem alguma alteração que alguém queira fzr no sistema? implementar a task diaria no caso.

vodkart_logo.png

[*Ninguém será digno do sucesso se não usar suas derrotas para conquistá-lo.*]

 

DISCORDvodkart#6090

 

Link para o post
Compartilhar em outros sites

@Vodkart, uma ótima opção também seria uma integração, cada task diária feita seria um ponto, mayb uma tabela na db, task_points, cada task diária feita ganharia um ponto, esses pontos poderíamos usar para colocar em uma quest por exemplo, supomos que tenha um setzinho novo no server, ou uma quest de um item raro, um arma, uma shield e etc...

Poucos poderão ter, não importa se o player é vip ou free, somente os dignos à terão, haha, então com uma certa quantidade de pontos task poderiam passa por uma porta ou portal, ou um teleport, que poderá fazer a quest, a quest se a pessoa tiver criatividade não deixara fácil, morrendo na quest, terá que fazer as task novamente, pois ao passa pela porta digamos assim, perderá seus pontos, deixando aquele item somente com os Lendários. KKkkk, algo fácil de fazer.  

 

@Off: (1.x cade ?)

                                                              ezgif-1-98aab239f3.gif.1a897c9c3225228909e7b356a5cfb8e4.gif

Link para o post
Compartilhar em outros sites

queria fazer 3 perguntinhas bro exemplo  eu tenho uma task que da para pega e acumular ate 3 boss na sua tem como ? 

e tbm essa para de talkaction fica meio chato nao que seja ruim muito bom mais queria sabe se tem como apenas aparecer no defaut ex: Hydras 2/500

tbm queria saber se tem como colokar pra invez de ganhar os item se tem como colokar uma estorage pra abrir um bau exemplo 

mata os bixos e tem direito de abri um bau ou matar um boss

 

 

 

e tbm ficaria muito grato se vc fizese apenas a task diaria muito massa muitos servers rpg usam nao so tibia com quest e premios diarios genio

agradeço desde ja!

 

Editado por dersinho (veja o histórico de edições)
Link para o post
Compartilhar em outros sites
3 horas atrás, Vodkart disse:

 

posso fazer um sistema de somente task diaria... tem alguma alteração que alguém queira fzr no sistema? implementar a task diaria no caso.

 

*-*

Rpz, poderia somente ser a task diária que da XP/Money

 

 

 

OFF TOPIC --

Pensei muito além aqui hewuheiuw
Tipo, a cada task diária finalizada você ganha o xp/dinheiro e de 0 à 2 pontos de RANK.

 

Você pode trocar esses pontos de RANK para subi-lo de nível, poder resetar a task diária para fazer novamente ou dar um re-roll nos monstros aleatórios.

 

re-roll nos monstros aleatórios = 2 pontos

resetar a task diária (para fazer novamente) = 5 pontos

 

Haverá tipo uma tabela de RANK e seus determinados pontos para subir.

 

Rank 1 = 10 pontos

Rank 2 = 20 pontos

Rank 3 = 50 pontos

Rank 4 = 100 pontos

...

 

Ao subir de rank, você perde os pontos de acordo com os pontos necessários EX: Eu tenho 12 pontos e vou subir para rank 1, nesse caso ficaria com 2 pontos.

 

Ao chegar em Rank 1, você ganha +1% de xp/dinheiro que o npc lhe dar ao finalizar a task

Ao chegar em Rank 2, você pode negociar com o NPC.

Ao chegar em Rank 3, você pode entrar em um teleport especifico (player no caso ganharia uma storagevalue)

Ao chegar em Rank 4, Você poderia fazer a task 2x

Ao chegar em Rank 5, você ganha +2% de xp/dinheiro que o npc lhe dar ao finalizar a task (somando com o bônus do Rank1, totalizando 3%)

Editado por Weslley Kiyo (veja o histórico de edições)
Link para o post
Compartilhar em outros sites
22 horas atrás, KotZletY disse:

@Vodkart, uma ótima opção também seria uma integração, cada task diária feita seria um ponto, mayb uma tabela na db, task_points, cada task diária feita ganharia um ponto, esses pontos poderíamos usar para colocar em uma quest por exemplo, supomos que tenha um setzinho novo no server, ou uma quest de um item raro, um arma, uma shield e etc...

Poucos poderão ter, não importa se o player é vip ou free, somente os dignos à terão, haha, então com uma certa quantidade de pontos task poderiam passa por uma porta ou portal, ou um teleport, que poderá fazer a quest, a quest se a pessoa tiver criatividade não deixara fácil, morrendo na quest, terá que fazer as task novamente, pois ao passa pela porta digamos assim, perderá seus pontos, deixando aquele item somente com os Lendários. KKkkk, algo fácil de fazer.  

 

@Off: (1.x cade ?)

 

Todas essas aplicações já existem no sistema, além disso não acho necessário criar uma coluna na DB para salvar as task points, sendo que pode ser feito com storage... O que eu posso fazer é ensinar ou criar um script ensinando a usar os task points, para abrir báu, falar com npc, etc...

22 horas atrás, dersinho disse:

queria fazer 3 perguntinhas bro exemplo  eu tenho uma task que da para pega e acumular ate 3 boss na sua tem como ? 

e tbm essa para de talkaction fica meio chato nao que seja ruim muito bom mais queria sabe se tem como apenas aparecer no defaut ex: Hydras 2/500

tbm queria saber se tem como colokar pra invez de ganhar os item se tem como colokar uma estorage pra abrir um bau exemplo 

mata os bixos e tem direito de abri um bau ou matar um boss

 

 

 

e tbm ficaria muito grato se vc fizese apenas a task diaria muito massa muitos servers rpg usam nao so tibia com quest e premios diarios genio

agradeço desde ja!

 

 

1° - Não fiz o sistema de BOSS ROOM ainda, mas poderá ser feito desse jeito sim

2° - Dá para remover a talk e colocar só no default msm

3° - Já ganha uma storage, só falar usar a storage e usar para abrir o baú com a mesma storage do sistema

20 horas atrás, Weslley Kiyo disse:

 

*-*

Rpz, poderia somente ser a task diária que da XP/Money

 

 

 

OFF TOPIC --

Pensei muito além aqui hewuheiuw
Tipo, a cada task diária finalizada você ganha o xp/dinheiro e de 0 à 2 pontos de RANK.

 

Você pode trocar esses pontos de RANK para subi-lo de nível, poder resetar a task diária para fazer novamente ou dar um re-roll nos monstros aleatórios.

 

re-roll nos monstros aleatórios = 2 pontos

resetar a task diária (para fazer novamente) = 5 pontos

 

Haverá tipo uma tabela de RANK e seus determinados pontos para subir.

 

Rank 1 = 10 pontos

Rank 2 = 20 pontos

Rank 3 = 50 pontos

Rank 4 = 100 pontos

...

 

Ao subir de rank, você perde os pontos de acordo com os pontos necessários EX: Eu tenho 12 pontos e vou subir para rank 1, nesse caso ficaria com 2 pontos.

 

Ao chegar em Rank 1, você ganha +1% de xp/dinheiro que o npc lhe dar ao finalizar a task

Ao chegar em Rank 2, você pode negociar com o NPC.

Ao chegar em Rank 3, você pode entrar em um teleport especifico (player no caso ganharia uma storagevalue)

Ao chegar em Rank 4, Você poderia fazer a task 2x

Ao chegar em Rank 5, você ganha +2% de xp/dinheiro que o npc lhe dar ao finalizar a task (somando com o bônus do Rank1, totalizando 3%)

 

 

o que é re-roll?

 

acho legal de acordo com os pontos(rank já existe) vc poder ganhar alguns recompensas "extras" como você falou.

vodkart_logo.png

[*Ninguém será digno do sucesso se não usar suas derrotas para conquistá-lo.*]

 

DISCORDvodkart#6090

 

Link para o post
Compartilhar em outros sites

@Vodkart pode crê, malz, não sabia, em tais ocasiões estava com pressa ou preguiça para ler com um pouco mais de atenção.  Hhahaha! 

Parabéns mais uma vez!

 

xD

                                                              ezgif-1-98aab239f3.gif.1a897c9c3225228909e7b356a5cfb8e4.gif

Link para o post
Compartilhar em outros sites
4 horas atrás, Vodkart disse:

 

Todas essas aplicações já existem no sistema, além disso não acho necessário criar uma coluna na DB para salvar as task points, sendo que pode ser feito com storage... O que eu posso fazer é ensinar ou criar um script ensinando a usar os task points, para abrir báu, falar com npc, etc...

 

1° - Não fiz o sistema de BOSS ROOM ainda, mas poderá ser feito desse jeito sim

2° - Dá para remover a talk e colocar só no default msm

3° - Já ganha uma storage, só falar usar a storage e usar para abrir o baú com a mesma storage do sistema

 

 

o que é re-roll?

 

acho legal de acordo com os pontos(rank já existe) vc poder ganhar alguns recompensas "extras" como você falou.

 

Re-roll é tipo, o npc vai dar novamente a task aleatória entende?

 

Exemplo: Eu peguei "Dragon" na task diária soq não gostei. Ai eu falo com o npc, pago 2 pontos e ele vai dar tipo um reload na task para vir outro monstro aleatório. Eu poderei pegar outro monstro para matar na task ou então se não tiver sorte pode vir até o dragon novamente kkk, é como ele tirasse a task e te desse novamente, só pra dar o reload no mostro que você vai matar entendeu?

 

PS: Sou péssimo explicando, mas espero q entenda rs

Link para o post
Compartilhar em outros sites
31 minutos atrás, Weslley Kiyo disse:

 

Re-roll é tipo, o npc vai dar novamente a task aleatória entende?

 

Exemplo: Eu peguei "Dragon" na task diária soq não gostei. Ai eu falo com o npc, pago 2 pontos e ele vai dar tipo um reload na task para vir outro monstro aleatório. Eu poderei pegar outro monstro para matar na task ou então se não tiver sorte pode vir até o dragon novamente kkk, é como ele tirasse a task e te desse novamente, só pra dar o reload no mostro que você vai matar entendeu?

 

PS: Sou péssimo explicando, mas espero q entenda rs

 

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 sistema e colocar um somente para Daily Task System com essas coisas que vc citou, pq achei mto boa essas dicas. só n vou te dar prazo pq não sei qndo começo kk

vodkart_logo.png

[*Ninguém será digno do sucesso se não usar suas derrotas para conquistá-lo.*]

 

DISCORDvodkart#6090

 

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

 

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 sistema e colocar um somente para Daily Task System com essas coisas que vc citou, pq achei mto boa essas dicas. só n vou te dar prazo pq não sei qndo começo kk

 

Ouch, tranquilo pô kkk

Eu adoraria por isso em meu projeto aqui mas ele também vai demorar, e muitooooo então ta sussa kkk

de qualquer maneira, obrigado :) e fico feliz por ter gostado da ideia XD

Link para o post
Compartilhar em outros sites
20 horas atrás, wougoplex disse:

@Vodkart Tem como botar pra o player escolher qualquer task sem ser na ordem 

 

Como no simple task 3.0? Até dá, mas teria que adaptar as funções, npc, etc... E como na versão 4.0 falaram para fazer por ordem, vou deixar assim...

vodkart_logo.png

[*Ninguém será digno do sucesso se não usar suas derrotas para conquistá-lo.*]

 

DISCORDvodkart#6090

 

Link para o post
Compartilhar em outros sites

As task geral se iniciam sozinhas ou tem que ir buscar no npc igual as diarias ?

https://www.youtube.com/SaymonKopolsky

 

589f09a9e1af9_SemTtulo-1.png.ddf1b437984d72bd5d4124b7e90762fa.png

https://www.youtube.com/SaymonKopolsky

 

 

 

Easy Mapper Map Editor 8.60: Clique aqui

[8.60] BeastXHunter: Clique aqui

 

5494899_orig.gif

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

As task geral se iniciam sozinhas ou tem que ir buscar no npc igual as diarias ?

 

tem que ir buscar no npc 

vodkart_logo.png

[*Ninguém será digno do sucesso se não usar suas derrotas para conquistá-lo.*]

 

DISCORDvodkart#6090

 

Link para o post
Compartilhar em outros sites
2 minutos atrás, Zzyzx disse:

@Vodkart tem como voce fazer um SQM que só pode passar com um tanto determinado de pontos de task ? 

ótimo script, irei usar com certeza xd

 

já fiz!! está na 2° página do tópico rsrsrs

 

abre o MODS e antes de

 

</mod>

 

adicione

 

<movevent type="StepIn" actionid ="45250" event="script"><![CDATA[
domodlib('task_func')
function onStepIn(cid, item, position, fromPosition)
	local amount = 30
	if getTaskPoints(cid) < amount then
		doTeleportThing(cid, fromPosition, true)
		doPlayerSendTextMessage(cid, 25, "Você só pode passar se tiver " .. amount .. " Task Points.")
		doSendMagicEffect(getThingPos(cid), CONST_ME_MAGIC_BLUE)
		return true
	end
	return true
end]]></movevent>

 

 

ai no tile coloca AID = 45250

vodkart_logo.png

[*Ninguém será digno do sucesso se não usar suas derrotas para conquistá-lo.*]

 

DISCORDvodkart#6090

 

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

 

já fiz!! está na 2° página do tópico rsrsrs

 

abre o MODS e antes de

 


</mod>

 

adicione

 


<movevent type="StepIn" actionid ="45250" event="script"><![CDATA[
domodlib('task_func')
function onStepIn(cid, item, position, fromPosition)
	local amount = 30
	if getTaskPoints(cid) < amount then
		doTeleportThing(cid, fromPosition, true)
		doPlayerSendTextMessage(cid, 25, "Você só pode passar se tiver " .. amount .. " Task Points.")
		doSendMagicEffect(getThingPos(cid), CONST_ME_MAGIC_BLUE)
		return true
	end
	return true
end]]></movevent>

 

 

ai no tile coloca AID = 45250

OBRIGADOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO !!!!!!!!!!!!

@Vodkart esta dando esse erro no distro tem como ver oque é ?

<?xml version="1.0" encoding="ISO-8859-1"?> 
<mod name="Simple Task" version="4.0" author="Vodkart" contact="tibiaking.com" enabled="yes"> 
<config name="task_func"><![CDATA[
task_sys = {
	[1] = {name = "rotworms", start = 176202, monsters_list = {"rotworm","carrion worm","Rotworm Queen"}, level = 8, count = 50, points = 0, items = {}, reward = {}, exp = 100000, money = 20000},
	[2] = {name = "Slime", start = 176203, monsters_list = {"Slime"}, level = 8, count = 100, points = 0, items = {}, reward = {}, exp = 250000, money = 50000},
	[3] = {name = "cyclops", start = 176204, monsters_list = {"cyclops","cyclops smith","cyclops drone"}, level = 8, count = 150, points = 0, items = {}, reward = {}, exp = 350000, money = 70000},
	[4] = {name = "Hellfire Fighter" ,start = 17625, monsters_list = {"Hellfire Fighter"}, level = 8, count = 500, points = 2, items = {}, reward = {}, exp = 300000, money = 300000},
	[5] = {name = "Ghastly Dragon" ,start = 176206, monsters_list = {"Ghastly Dragon"}, level = 8, count = 500, points = 2, items = {}, reward = {{2173,1}}, exp = 300000, money = 300000},
	[6] = {name = "Behemoth" ,start = 176207, monsters_list = {"Behemoth"}, level = 8, count = 500, points = 2, items = {}, reward = {}, exp = 300000, money = 300000},
	[7] = {name = "Lizard Chosen" ,start = 176208, monsters_list = {"Lizard Chosen"}, level = 8, count = 500, points = 2, items = {}, reward = {}, exp = 300000, money = 300000},
	[8] = {name = "Medusa" ,start = 176209, monsters_list = {"Medusa"}, level = 8, count = 500, points = 2, items = {}, reward = {}, exp = 300000, money = 300000},
	[9] = {name = "Grim Reaper" ,start = 176210, monsters_list = {"Grim Reaper"}, level = 8, count = 500, points = 2, items = {}, reward = {}, exp = 300000, money = 300000},
	[10] = {name = "Frost Dragon" ,start = 176211, monsters_list = {"Frost Dragon"}, level = 8, count = 500, points = 2, items = {}, reward = {}, exp = 300000, money = 300000},
	[11] = {name = "Hydras" ,start = 176212, monsters_list = {"Hydra"}, level = 8, count = 500, points = 2, items = {}, reward = {}, exp = 300000, money = 300000},
	[12] = {name = "Serpent Spawn" ,start = 176213, monsters_list = {"Serpent Spawn"}, level = 8, count = 500, points = 2, items = {}, reward = {}, exp = 300000, money = 300000},
	[13] = {name = "Hellhounds" ,start = 176214, monsters_list = {"Hellhound"}, level = 8, count = 500, points = 2, items = {}, reward = {}, exp = 300000, money = 300000},
	[14] = {name = "Demons" ,start = 176215, monsters_list = {"Demon"}, level = 8, count = 500, points = 2, items = {}, reward = {}, exp = 300000, money = 300000},
	[15] = {name = "Grim Reaper Vip" ,start = 176216, monsters_list = {"Grim Reaper Vip"}, level = 300, count = 800, points = 3, items = {}, reward = {}, exp = 500000, money = 500000},
	[16] = {name = "Demon Vip" ,start = 176217, monsters_list = {"Demon Vip"}, level = 300, count = 800, points = 3, items = {}, reward = {}, exp = 500000, money = 500000},
	[17] = {name = "Medusa Vip" ,start = 176218, monsters_list = {"Medusa Vip"}, level = 300, count = 800, points = 3, items = {}, reward = {}, exp = 500000, money = 500000},
	[18] = {name = "Hydra Vip" ,start = 176219, monsters_list = {"Hydra Vip"}, level = 300, count = 800, points = 3, items = {}, reward = {}, exp = 500000, money = 500000},
	[19] = {name = "Frost Dragon Vip" ,start = 176220, monsters_list = {"Frost Dragon Vip"}, level = 300, count = 800, points = 3, items = {}, reward = {}, exp = 500000, money = 500000},
	[20] = {name = "Hydra Vip II" ,start = 176221, monsters_list = {"Hydra Vip II"}, level = 400, count = 1000, points = 4, items = {}, reward = {}, exp = 1000000, money = 1000000},
	[21] = {name = "Grim Reaper Vip II" ,start = 176222, monsters_list = {"Grim Reaper Vip II"}, level = 400, count = 1000, points = 4, items = {}, reward = {}, exp = 1000000, money = 1000000},
	[22] = {name = "Dragon Lord Vip II" ,start = 176223, monsters_list = {"Dragon Lord Vip II"}, level = 400, count = 1000, points = 4, items = {}, reward = {}, exp = 1000000, money = 1000000},
	[23] = {name = "Medusa Vip II" ,start = 176224, monsters_list = {"Medusa Vip II"}, level = 400, count = 1000, points = 4, items = {}, reward = {}, exp = 1000000, money = 1000000},
	[24] = {name = "Frost Dragon Vip II" ,start = 176225, monsters_list = {"Frost Dragon Vip II"}, level = 400, count = 1000, points = 4, items = {}, reward = {}, exp = 1000000, money = 1000000},
	[25] = {name = "VIP DRAGON LORD" ,start = 176226, monsters_list = {"VIP DRAGON LORD"}, level = 8, count = 700, points = 6, items = {}, reward = {}, exp = 3000000, money = 3000000},
	[26] = {name = "VIP FROST" ,start = 176227, monsters_list = {"VIP FROST"}, level = 8, count = 700, points = 6, items = {}, reward = {}, exp = 3000000, money = 3000000},
	[27] = {name = "VIP HYDRA" ,start = 176228, monsters_list = {"VIP HYDRA"}, level = 8, count = 700, points = 6, items = {}, reward = {}, exp = 3000000, money = 3000000},
	[28] = {name = "VIP MEDUSA" ,start = 176229, monsters_list = {"VIP MEDUSA"}, level = 8, count = 700, points = 6, items = {}, reward = {}, exp = 3000000, money = 3000000},
	[29] = {name = "VIP GRIM REAPER" ,start = 176230, monsters_list = {"VIP GRIM REAPER"}, level = 8, count = 700, points = 6, items = {}, reward = {}, exp = 3000000, money = 3000000},
	[30] = {name = "VIP DEMON" ,start = 176231, monsters_list = {"VIP DEMON"}, level = 8, count = 700, points = 6, items = {}, reward = {}, exp = exp = 3000000, money = 3000000},
	[31] = {name = "VIP  WARLOCK" ,start = 176232, monsters_list = {"VIP  WARLOCK"}, level = 8, count = 700, points = 6, items = {}, reward = {}, exp = 3000000, money = 3000000},
	[32] = {name = "Fury" ,start = 176233, monsters_list = {"Fury"}, level = 300, count = 500, points = 2, items = {}, reward = {}, exp = 66600, money = 66000}
}
daily_task = {
	[1] = {name = "Orcs" ,monsters_list = {"Orc Berserker","Orc Rider","Orc Leader","Orc Warlord"}, count = 100, points = 0, reward = {}, exp = 5000, money = 10000},
	[2] = {name = "TarantulaS" ,monsters_list = {"Tarantula"}, count = 120, points = 1, reward = {}, exp = 9000, money = 12000},
	[3] = {name = "Wyvern" ,monsters_list = {"Wyvern"}, count = 125, points = 2, reward = {}, exp = 9000, money = 15000},
	[4] = {name = "Dragons" ,monsters_list = {"Dragon","Dragon Hatchling"}, count = 150, points = 0, reward = {}, exp = 2000, money = 10000},
	[5] = {name = "Wailing Widows" ,monsters_list = {"Wailing Widows"}, count = 200, points = 1, reward = {}, exp = 20000, money = 25000},
	[6] = {name = "Ancient Scarabs" ,monsters_list = {"Ancient Scarab"}, count = 180, points = 5, reward = {}, exp = 22000, money = 18000},
	[7] = {name = "High Class Lizards" ,monsters_list = {"Corrupted Soul","Eternal Guardian","Lizard Chosen","Lizard Dragon Priest","Lizard High Guard","Lizard Legionnaire","Lizard Magistratus","Lizard Noble","Lizard Zaogun"}, count = 300, points = 3, reward = {}, exp = 50000, money = 60000},
	[8] = {name = "Mutated BatS" ,monsters_list = {"Mutated Bat"}, count = 260, points = 2, reward = {}, exp = 40000, money = 55000},
	[9] = {name = "Giant Spiders" ,monsters_list = {"Giant Spider"}, count = 350, points = 3, reward = {}, exp = 60000, money = 70000},
	[10] = {name = "Frost Dragon" ,monsters_list = {"Frost Dragon"}, count = 500, points = 3, reward = {{2173,1}}, exp = 90000, money = 120000},
	[11] = {name = "HydraS" ,monsters_list = {"Hydra"}, count = 600, points = 3, reward = {{2173,1}}, exp = 100000, money = 160000},
	[12] = {name = "Demon" ,monsters_list = {"Demon"}, count = 700, points = 3, reward = {{2173,1}}, exp = 130000, money = 200000}
}
task_sys_storages = {176601, 176602, 176603, 176604, 176605, 176606, 176607, 176608} -- task, points, count, daily task, daily count, daily time , daily start, contador
function getTaskMission(cid)
	return getPlayerStorageValue(cid,task_sys_storages[1]) < 0 and 1 or getPlayerStorageValue(cid,task_sys_storages[1])
end
function getDailyTaskMission(cid)
	return getPlayerStorageValue(cid,task_sys_storages[4]) < 0 and 1 or getPlayerStorageValue(cid,task_sys_storages[4])
end
function getTaskPoints(cid)
	return getPlayerStorageValue(cid,task_sys_storages[2]) < 0 and 0 or getPlayerStorageValue(cid,task_sys_storages[2])
end
function doRandomDailyTask(cid)
	local t = {
		[{6,150}] = {1,3},
		[{151,250}] = {4,6},
		[{251,450}] = {7,9},
		[{451,math.huge}] = {10,12}
	}
	for a , b in pairs(t) do
		if getPlayerLevel(cid) >= a[1] and getPlayerLevel(cid) <= a[2] then
			return math.random(b[1], b[2])
		end
	end
	return 0
end
function GetRankTask(cid)
	local ranks = {
		[{1, 20}] = "Leite com Pera", 
		[{21, 50}] = "Iniciante",
		[{51, 100}] = "Fodinha",
		[{101, 200}] = "Zika do Bagulho",		
		[{201, math.huge}] = "Supremo Lord"
	}
	for v , r in pairs(ranks) do
		if getTaskPoints(cid) >= v[1] and getTaskPoints(cid) <= v[2] then
			return r
		end
	end
	return 0
end
function getItemsFromList(items)
	local str = ''
	if table.maxn(items) > 0 then
		for i = 1, table.maxn(items) do
			str = str .. items[i][2] .. ' ' .. getItemNameById(items[i][1])
			if i ~= table.maxn(items) then str = str .. ', ' 
			end 
		end 
	end
	return str
end
function doRemoveItemsFromList(cid,items)
	local count = 0
	if table.maxn(items) > 0 then
		for i = 1, table.maxn(items) do
			if getPlayerItemCount(cid,items[i][1]) >= items[i][2] then
			count = count + 1 end 
		end 
	end
	if count == table.maxn(items) then
		for i = 1, table.maxn(items) do doPlayerRemoveItem(cid,items[i][1],items[i][2]) end
	else 
		return false 
	end
	return true 
end
function getMonsterFromList(monster)
	local str = ''
	if #monster > 0 then
		for i = 1, #monster do
			str = str .. monster[i]
			if i ~= #monster then str = str .. ', ' end
		end 
	end
	return str
end
function GiveRewardsTask(cid, items)
	local backpack = doPlayerAddItem(cid, 1999, 1) -- backpackID
	for _, i_i in ipairs(items) do
		local item, amount = i_i[1],i_i[2]
		if isItemStackable(item) or amount == 1 then
			doAddContainerItem(backpack, item, amount)
		else
			for i = 1, amount do
				doAddContainerItem(backpack, item, 1)
			end
		end
	end
end
function isSummon(cid)
	if(not isCreature(cid)) then
		return false
	end
	return getCreatureMaster(cid) ~= cid
end
]]></config>
<event type="login" name="TaskLogin" event="script"><![CDATA[
function onLogin(cid)
	registerCreatureEvent(cid, "KillTask")
	registerCreatureEvent(cid, "TaskLook")
	return true
end]]></event>
<talkaction words="/task;!task" event="buffer"><![CDATA[
domodlib('task_func')
param,task,daily = param:lower(), getTaskMission(cid), getDailyTaskMission(cid)
if isInArray({"counter","contador"},param) then
	setPlayerStorageValue(cid, task_sys_storages[8], getPlayerStorageValue(cid, task_sys_storages[8]) <= 0 and 1 or 0)
	doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE,"[Task System] O contador foi "..(getPlayerStorageValue(cid, task_sys_storages[8]) <= 0 and "ativado" or "desativado")..".") return true
elseif isInArray({"daily","diaria"},param) then
	if not daily_task[daily] or getPlayerStorageValue(cid, task_sys_storages[7]) <= 0 then
		doPlayerSendCancel(cid, "Desculpe, Mas você não está em nenhuma Daily Task.") return true
	elseif getPlayerStorageValue(cid, task_sys_storages[6]) - os.time() <= 0 and getPlayerStorageValue(cid, task_sys_storages[5]) < daily_task[daily].count then
		doPlayerSendCancel(cid,"Desculpe, Mas Você não terminou a Daily Task a tempo! Por favor volte ao npc e comece uma nova Daily Task!") return true
	end
	return doShowTextDialog(cid, 8983, "[->] CURRENT DAILY TASK INFO [<-]\n\nNome: "..daily_task[daily].name.."\nProgresso: ["..(getPlayerStorageValue(cid, task_sys_storages[5]) < 0 and 0 or getPlayerStorageValue(cid, task_sys_storages[5])).."/"..daily_task[daily].count.."]\nPrazo para entrega: "..os.date("%d %B %Y %X ", getPlayerStorageValue(cid,task_sys_storages[6])).."\nMonstros para caçar: "..getMonsterFromList(daily_task[daily].monsters_list).."\n\n[->] CURRENT TASK REWARDS [<-]\n\nMoney: "..(daily_task[daily].money > 0 and daily_task[daily].money or 0).."\nExperiencia: "..(daily_task[daily].exp > 0 and daily_task[daily].exp or 0).."\nTask Points: "..daily_task[daily].points.."\nItems: "..(#daily_task[daily].reward > 0 and getItemsFromList(daily_task[daily].reward) or "Nenhum item de recompensa")..".")
end
if not task_sys[task] or getPlayerStorageValue(cid, task_sys[task].start) <= 0 then
	doPlayerSendCancel(cid, "você não está em nenhuma task.") return true
end 
return doShowTextDialog(cid, 8983, "-> CURRENT TASK ["..getTaskMission(cid).."/"..#task_sys.."] <-\n\nTask Name: "..task_sys[task].name.."\nTask Level: "..task_sys[task].level.."\nTask Progress: ["..(getPlayerStorageValue(cid, task_sys_storages[3]) < 0 and 0 or getPlayerStorageValue(cid, task_sys_storages[3])).."/"..task_sys[task].count.."]\nMonster To Hunt: "..getMonsterFromList(task_sys[task].monsters_list)..".\nItens Para Entrega: "..(#task_sys[task].items > 0 and getItemsFromList(task_sys[task].items) or "Nenhum")..".\n\n[->] CURRENT TASK REWARDS [<-]\n\nReward Money: "..(task_sys[task].money > 0 and task_sys[task].money or 0).."\nReward Experiencia: "..(task_sys[task].exp > 0 and task_sys[task].exp or 0).."\nReward Points: "..task_sys[task].points.."\nRedward Items: "..(#task_sys[task].reward > 0 and getItemsFromList(task_sys[task].reward) or "Nenhum item de recompensa")..".")
]]></talkaction>
<event type="look" name="TaskLook" event="script"><![CDATA[
domodlib('task_func')
function onLook(cid, thing, position, lookDistance)
	if isPlayer(thing.uid) and getTaskPoints(thing.uid) > 0 then
		doPlayerSetSpecialDescription(thing.uid, "\n"..(getPlayerSex(thing.uid) == 0 and "She" or "He").. " is a "..GetRankTask(thing.uid))
	end	
	return true
end]]></event> 
<event type="kill" name="KillTask" event="script"><![CDATA[
domodlib('task_func')
function onKill(cid, target)
	if isPlayer(cid) and isMonster(target) and not isSummon(target) then
		local t,daily = task_sys[getTaskMission(cid)], daily_task[getDailyTaskMission(cid)]
		if t and getPlayerStorageValue(cid, t.start) > 0 and isInArray(t.monsters_list, getCreatureName(target):lower()) and getPlayerStorageValue(cid, task_sys_storages[3]) < t.count then
			setPlayerStorageValue(cid, task_sys_storages[3], getPlayerStorageValue(cid, task_sys_storages[3]) < 0 and 1 or (getPlayerStorageValue(cid, task_sys_storages[3])+1))
			if getPlayerStorageValue(cid, task_sys_storages[8]) <= 0 and getPlayerStorageValue(cid, task_sys_storages[3]) < t.count then
				doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE,"[Task System] defeated Total [" .. getPlayerStorageValue(cid, task_sys_storages[3]) .. "/" .. t.count .. "] da Task do " .. t.name .. ".")
			end
			if getPlayerStorageValue(cid, task_sys_storages[3]) >= t.count then
				doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE,"[Task System] Parabéns! Você terminou a Task do "..t.name..", volte ao npc parece receber sua recompensa.")
			end
		end
		if daily and getPlayerStorageValue(cid, task_sys_storages[7]) > 0 and getPlayerStorageValue(cid, task_sys_storages[6]) - os.time() >= 0 and isInArray(daily.monsters_list, getCreatureName(target):lower()) and getPlayerStorageValue(cid, task_sys_storages[5]) < daily.count then
			setPlayerStorageValue(cid, task_sys_storages[5], getPlayerStorageValue(cid, task_sys_storages[5]) < 0 and 1 or (getPlayerStorageValue(cid, task_sys_storages[5])+1))
			if getPlayerStorageValue(cid, task_sys_storages[8]) <= 0 and getPlayerStorageValue(cid, task_sys_storages[5]) < daily.count then
				doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE,"[Daily Task System] defeated Total [" .. getPlayerStorageValue(cid, task_sys_storages[5]) .. "/" .. daily.count .. "] da Task do " .. daily.name .. ".")
			end
			if getPlayerStorageValue(cid, task_sys_storages[5]) >= daily.count then
				doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE,"[Daily Task System] Parabéns! Você terminou a Task do "..daily.name..", volte ao npc parece receber sua recompensa.")
			end
		end 
	end
	return true
end]]></event>
</mod>

 

erro.png

       112674.gif

 

 

 

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