Jump to content

NPC TFS 1.X [NPC] Daily Task com 4 opções diarias.


Recommended Posts

Tópico aprovado e agradecemos pela contribuição.

APOIE NOSSAS CAUSAS - IBEACIBEAC

SEJA UM APOIADOR E AJUDE ALGUÉM

Se você acha que meu trabalho merece uma ajuda nessa quarentena, então seja um apoiador fiel doehttps://streamlabs.com/l3k0t1

 

 CANAL YOUTUBE: https://www.youtube.com/channel/UCMP25Br519j7dD1FFEMzPgA?view_as=subscriber

Meu grupo no Discord: https://discord.gg/qMS5pm9

"Você tem um sonho? Não deixe os outros te derrubarem e lute por aquilo que você acredita" by L3K0T  

 

GENTILEZA GERA GENTILEZA

 

 

Link to post
Share on other sites

  • 2 weeks later...
  • 3 weeks later...
9 horas atrás, diarmaint disse:

Não tem, estou usando tfs 0.4

Infelizmente não é compativel com o 0.4, teria que adaptar =\

 

2 horas atrás, wizinx disse:

Registre o "dailyTasks" no seu login.lua <<- como registro eso en tfs 1.3 ???, gracias

Abra o: creaturescripts/scripts/login.lua  e coloque essa linha: player:registerEvent("dailyTasks")

MEUS POSTS:

 

SE AJUDEI, DÁ O REP+, ESQUECE NÃO, VLW BB <3

Link to post
Share on other sites

18 horas atrás, Mor3nao disse:

Infelizmente não é compativel com o 0.4, teria que adaptar =\

 

Abra o: creaturescripts/scripts/login.lua  e coloque essa linha: player:registerEvent("dailyTasks")

teria como colocar compatível com 0.4? já que é bastante usado pela comunidade. 

Link to post
Share on other sites

5 horas atrás, wizinx disse:

Hola amigo, tengo un problema, en la task expert no baja el contador de monster, te adjunto una imagen.

task.png

Corrigi! o basta atualizar o dailyTasks.lua em /data/creaturescript/scripts

 

23 horas atrás, XGaduX disse:

teria como colocar compatível com 0.4? já que é bastante usado pela comunidade. 

Pior que não, sei que a maioria é 0.4 e se tivesse jeito de mudar pra 0.4, eu mudaria, mas não tem um modo "automatico" de se fazer isso, eu teria meio q 'refazer' o script, e como nao tenho costume com o 0.4, iria demorar muito =\

MEUS POSTS:

 

SE AJUDEI, DÁ O REP+, ESQUECE NÃO, VLW BB <3

Link to post
Share on other sites

  • 4 months later...
Em 30/01/2021 em 05:37, VictorSkyer disse:

I was looking like this and the best, it works great. Thanks bro! Could you give me your discord?

@Mor3não#7661

 

MEUS POSTS:

 

SE AJUDEI, DÁ O REP+, ESQUECE NÃO, VLW BB <3

Link to post
Share on other sites

  • 1 month later...
Em 20/08/2020 em 22:47, Mor3nao disse:

Introdução:

     Eu estava procurando um sistema de tasks diarias funcional, achei alguns, mas nenhum do jeito que eu queria, então eu fiz esse.

Ele tá bem simples, porém funcional, aí vou postar uma "melhoria" dele e linkar AQUI  << tá linkado, dá uma olhada lá 😃

 

Como funciona?

        Bom, eu me baseei no sistema de tasks do PxG onde você pode escolher entre tasks de diferentes niveis/dificuldades, no caso, este é possivel que vc escolha entre 4 opções, sendo elas de nivel "easy", "medium", "hard" e "expert", e tem até o server save para entregar.

Como prêmios, coloquei: Quantidade aleatoria de XP, Quantidade fixa de um Item fixo e quantidade aleatoria de um(ou mais) item aleatorio.

 

Como "instalar" o script:

1.1 Vá até /data/npc e crie o arquivo daily.xml, abra-o e coloque tudo isso lá dentro:

  Ocultar conteúdo


<?xml version="1.0" encoding="UTF-8"?>
<npc name="Iwan" walkinterval="2000" floorchange="0" script="dailyTask.lua">
	<health now="100" max="100"/>
	<look type="128" head="0" body="112" legs="107" feet="113" addons="0"/>
</npc>

 

 

1.2 Vá até /data/npc/scripts e adicione o arquivo dailyTask.lua, e dentro dele coloque:

  Ocultar conteúdo


local keywordHandler = KeywordHandler:new()
local npcHandler = NpcHandler:new(keywordHandler)
NpcSystem.parseParameters(npcHandler)

local condition = Condition(CONDITION_BLEEDING)
condition:setParameter(CONDITION_PARAM_DELAYED, 1)
condition:addDamage(1200, 500, -100)

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

local function creatureSayCallback(cid, type, msg)
	if not npcHandler:isFocused(cid) then
		return false
	end
	local aa, bb, cc, dd, ee, ff = 0
	local player = Player(cid)
		
		if msgcontains(msg, "help") then
			npcHandler:say("I can offer you some {daily tasks}.", cid)
		elseif msgcontains(msg, "task") or msgcontains(msg, "tasks") or msgcontains(msg, "daily") or msgcontains(msg, "tarefa") or  msgcontains(msg, "tarefas") or msgcontains(msg, "diaria") then
			if player:getStorageValue(DT_STORAGES.HAVE_STARTED) > 0 then
				return npcHandler:say("You have already started your daily task today.", cid)
			elseif player:getStorageValue(DT_STORAGES.HAVE_STARTED) == -2 then
				return npcHandler:say("You have already completed your daily task today.", cid)
			end
			npcHandler:say("I have tasks of level {Easy}, {Medium}, {Hard} and {Expert}. Which one do you want to do?", cid)
			npcHandler.topic[cid] = 1
		else
			npcHandler:say("What are you talking about??", cid)
		end
		
	if npcHandler.topic[cid] == 1 then
		if msgcontains(msg, "easy") then
		if DT_PREMIOQTDE_EASY > 0 then
			npcHandler:say("Your EASY daily task today is: Kill {".. DT_NEEDKILL_EASY .."} {".. DT_CHOSENTASK_EASY .."}(s).\nIf you finish before {6:00am (GTM-3)}, you will receive:\n*{".. DT_PREMIOQTDE_EASY .."}x "..getAllTableText(DT_PRIZENAME_EASY, "or")..", chosen at random;\n*{"..DT_PREMIOFIXO_QTDE_EASY.."}x "..DT_PREMIOFIXO_NAME_EASY..";\n*{"..DT_EXPPRIZE_EASY.."} Experience points;\n*{"..DT_TASKPOINTS_EASY.."}x Task Point.\nDo you want to start this {EASY} task?", cid)
		else
			npcHandler:say("Your EASY daily task today is: Kill {".. DT_NEEDKILL_EASY .."} {".. DT_CHOSENTASK_EASY .."}(s).\nIf you finish before {6:00am (GTM-3)}, you will receive:\n*{"..DT_PREMIOFIXO_QTDE_EASY.."}x "..DT_PREMIOFIXO_NAME_EASY..";\n*{"..DT_EXPPRIZE_EASY.."} Experience points;\n*{"..DT_TASKPOINTS_EASY.."}x Task Point.\nDo you want to start this {EASY} task?", cid)
		end
			npcHandler.topic[cid] = 3
		elseif msgcontains(msg, "medium") then
			npcHandler:say("Your MEDIUM daily task today is: Kill {".. DT_NEEDKILL_MEDIUM .."}{ ".. DT_CHOSENTASK_MEDIUM .."}(s).\nIf you finish before {6:00am (GTM-3)}, you will receive:\n*{".. DT_PREMIOQTDE_MEDIUM .."}x "..getAllTableText(DT_PRIZENAME_MEDIUM, "or")..", chosen at random;\n*{"..DT_PREMIOFIXO_QTDE_MEDIUM.."}x "..DT_PREMIOFIXO_NAME_MEDIUM..";\n*{"..DT_EXPPRIZE_MEDIUM.."} Experience points;\n*{"..DT_TASKPOINTS_MEDIUM.."}x Task Point.\nDo you want to start this {MEDIUM} task?", cid)
			npcHandler.topic[cid] = 4		
		elseif msgcontains(msg, "hard") then
			npcHandler:say("Your HARD daily task today is: Kill {".. DT_NEEDKILL_HARD .."}{ ".. DT_CHOSENTASK_HARD .."}(s).\nIf you finish before {6:00am (GTM-3)}, you will receive:\n*{".. DT_PREMIOQTDE_HARD .."}x "..getAllTableText(DT_PRIZENAME_HARD, "or")..", chosen at random;\n*{"..DT_PREMIOFIXO_QTDE_HARD.."}x "..DT_PREMIOFIXO_NAME_HARD..";\n*{"..DT_EXPPRIZE_HARD.."} Experience points;\n*{"..DT_TASKPOINTS_HARD.."}x Task Point.\nDo you want to start this {HARD} task?", cid)
			npcHandler.topic[cid] = 5		
		elseif msgcontains(msg, "expert") then
			npcHandler:say("Your EXPERT daily task today is: Kill {".. DT_NEEDKILL_EXPERT .." }{".. DT_CHOSENTASK_EXPERT .."}(s).\nIf you finish before {6:00am (GTM-3)}, you will receive:\n*{".. DT_PREMIOQTDE_EXPERT .."}x "..getAllTableText(DT_PRIZENAME_EXPERT, "or")..", chosen at random;\n*{"..DT_PREMIOFIXO_QTDE_EXPERT.."}x "..DT_PREMIOFIXO_NAME_EXPERT..";\n*{"..DT_EXPPRIZE_EXPERT.."} Experience points;\n*{"..DT_TASKPOINTS_EXPERT.."}x Task Point.\nDo you want to start this {EXPERT} task?", cid)
			npcHandler.topic[cid] = 6		
		end
	end
	if msgcontains(msg, "yes") then
		if npcHandler.topic[cid] == 3 then	
		npcHandler:say("Ok, don't waste time! You must kill all these monsters and return to receive your reward before {6:00 am}(GMT-3).", cid)
		player:setStorageValue(DT_STORAGES.EASY, 0)
		player:setStorageValue(DT_STORAGES.HAVE_STARTED, 1)
		elseif npcHandler.topic[cid] == 4 then
		npcHandler:say("Ok, don't waste time! You must kill all these monsters and return to receive your reward before {6:00 am}(GMT-3).", cid)
		player:setStorageValue(DT_STORAGES.MEDIUM, 0)
		player:setStorageValue(DT_STORAGES.HAVE_STARTED, 2)
		elseif npcHandler.topic[cid] == 5 then
		npcHandler:say("Ok, don't waste time! You must kill all these monsters and return to receive your reward before {6:00 am}(GMT-3).", cid)
		player:setStorageValue(DT_STORAGES.HARD, 0)
		player:setStorageValue(DT_STORAGES.HAVE_STARTED, 3)
		elseif npcHandler.topic[cid] == 6 then
		npcHandler:say("Ok, don't waste time! You must kill all these monsters and return to receive your reward before {6:00 am}(GMT-3).", cid)
		player:setStorageValue(DT_STORAGES.EXPERT, 0)
		player:setStorageValue(DT_STORAGES.HAVE_STARTED, 4)
		end		
	end

	if msgcontains(msg, "report") then
		if player:getStorageValue(DT_STORAGES.HAVE_STARTED) == 1 then
			if player:getStorageValue(DT_STORAGES.EASY) >= DT_NEEDKILL_EASY then
				npcHandler:say("Just in time! Here are your rewards, come back tomorrow for another task!", cid)
				player:setStorageValue(DT_STORAGES.HAVE_STARTED, -2)
				
				player:addExperience(DT_EXPPRIZE_EASY) --exp
				
				player:addItem(DT_PREMIOFIXO_ID_EASY, DT_PREMIOFIXO_QTDE_EASY) --fixo
				if DT_PREMIOQTDE_EASY > 0 then --rand
					if DT_PREMIOQTDE_EASY == 1 then --rand
						aa = math.random(#DT_PRIZEID_EASY)
						player:addItem(DT_PRIZEID_EASY[aa], 1)
					else
						for i = 1, tonumber(DT_PREMIOQTDE_EASY) do
							aa = math.random(#DT_PRIZEID_EASY)
							player:addItem(DT_PRIZEID_EASY[aa], 1)
						end
					end
				end
			else
				npcHandler:say("You haven't finished your task yet. You still have to kill {"..DT_NEEDKILL_EASY - player:getStorageValue(DT_STORAGES.EASY) .."} "..DT_CHOSENTASK_EASY.."(s).", cid)
			end			
		elseif player:getStorageValue(DT_STORAGES.HAVE_STARTED) == 2 then
			if player:getStorageValue(DT_STORAGES.MEDIUM) >= DT_NEEDKILL_MEDIUM then
				npcHandler:say("Just in time! Here are your rewards, come back tomorrow for another task!", cid)
				player:setStorageValue(DT_STORAGES.HAVE_STARTED, -2)
				
				player:addExperience(DT_EXPPRIZE_MEDIUM) --exp
				
				player:addItem(DT_PREMIOFIXO_ID_MEDIUM, DT_PREMIOFIXO_QTDE_MEDIUM) --fixo
				
				if DT_PREMIOQTDE_MEDIUM > 0 then --rand
					if DT_PREMIOQTDE_MEDIUM == 1 then --rand
						aa = math.random(#DT_PRIZEID_MEDIUM)
						player:addItem(DT_PRIZEID_MEDIUM[aa], 1)
					else
						for i = 1, tonumber(DT_PREMIOQTDE_MEDIUM) do
							aa = math.random(#DT_PRIZEID_MEDIUM)
							player:addItem(DT_PRIZEID_MEDIUM[aa], 1)
						end
					end
				end
			else
				npcHandler:say("You haven't finished your task yet. You still have to kill {"..DT_NEEDKILL_MEDIUM - player:getStorageValue(DT_STORAGES.MEDIUM) .."} "..DT_CHOSENTASK_MEDIUM.."(s).", cid)
			end	
		elseif player:getStorageValue(DT_STORAGES.HAVE_STARTED) == 3 then
			if player:getStorageValue(DT_STORAGES.HARD) >= DT_NEEDKILL_HARD then
				npcHandler:say("Just in time! Here are your rewards, come back tomorrow for another task!", cid)
				player:setStorageValue(DT_STORAGES.HAVE_STARTED, -2)
				
				player:addExperience(DT_EXPPRIZE_HARD) --exp
				
				player:addItem(DT_PREMIOFIXO_ID_HARD, DT_PREMIOFIXO_QTDE_HARD) --fixo
				
				if DT_PREMIOQTDE_HARD > 0 then --rand
					if DT_PREMIOQTDE_HARD == 1 then --rand
						aa = math.random(#DT_PRIZEID_HARD)
						player:addItem(DT_PRIZEID_HARD[aa], 1)
					else
						for i = 1, tonumber(DT_PREMIOQTDE_HARD) do
							aa = math.random(#DT_PRIZEID_HARD)
							player:addItem(DT_PRIZEID_HARD[aa], 1)
						end
					end
				end
			else
				npcHandler:say("You haven't finished your task yet. You still have to kill {"..DT_NEEDKILL_HARD - player:getStorageValue(DT_STORAGES.HARD) .."} "..DT_CHOSENTASK_HARD.."(s).", cid)
			end	
		elseif player:getStorageValue(DT_STORAGES.HAVE_STARTED) == 4 then
			if player:getStorageValue(DT_STORAGES.EXPERT) >= DT_NEEDKILL_EXPERT then
				npcHandler:say("Just in time! Here are your rewards, come back tomorrow for another task!", cid)
				player:setStorageValue(DT_STORAGES.HAVE_STARTED, -2)
				
				player:addExperience(DT_EXPPRIZE_EXPERT) --exp
				
				player:addItem(DT_PREMIOFIXO_ID_EXPERT, DT_PREMIOFIXO_QTDE_EXPERT) --fixo
				
				if DT_PREMIOQTDE_EXPERT > 0 then --rand
					if DT_PREMIOQTDE_EXPERT == 1 then --rand
						aa = math.random(#DT_PRIZEID_EXPERT)
						player:addItem(DT_PRIZEID_EXPERT[aa], 1)
					else
						for i = 1, tonumber(DT_PREMIOQTDE_EXPERT) do
							aa = math.random(#DT_PRIZEID_EXPERT)
							player:addItem(DT_PRIZEID_EXPERT[aa], 1)
						end
					end
				end
			else
				npcHandler:say("You haven't finished your task yet. You still have to kill {"..DT_NEEDKILL_EXPERT - player:getStorageValue(DT_STORAGES.EXPERT) .."} "..DT_CHOSENTASK_EXPERT.."(s).", cid)
			end	
		else
			npcHandler:say("Uhn.. What are you talking about??", cid)
			npcHandler.topic[cid] = 0
		end
	end
end
npcHandler:setMessage(MESSAGE_GREET, "Hello, |PLAYERNAME| i've some {tasks} for u.")
npcHandler:setMessage(MESSAGE_FAREWELL, 'Bye.')

npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)
npcHandler:addModule(FocusModule:new())

 

 

 

2.1 Em /data/lib/lib.lua, acrescente a linha:


dofile('data/lib/task/dailytask.lua')

 

2.2 Crie o arquivo dailytask.lua em /data/lib/task/, e dentro coloque:

  Ocultar conteúdo


-- CONFIGS

local easy = {
minQTDE = 50,
maxQTDE = 300,

minEXP = 250000,
maxEXP = 750000,

prizesID = {22607, 22604},
prizesNAME = {"Boss Key", "Hunt Key"},
minQTDEPremios = 0,
maxQTDEPremios = 2,

PremioFixoID = 25377,
PremioFixoNAME = "Gold Token",
PremioFixoQTDE = 1,

taskPoints = 1
}

local medium = {
minQTDE = 100,
maxQTDE = 400,

minEXP = 500000,
maxEXP = 1500000,

prizesID = {22607, 22604},
prizesNAME = {"Boss Key", "Hunt Key"},
minQTDEPremios = 1,
maxQTDEPremios = 3,

PremioFixoID = 25377,
PremioFixoNAME = "Gold Token",
PremioFixoQTDE = 2,

taskPoints = 2
}

local hard = {
minQTDE = 150,
maxQTDE = 500,

minEXP = 1000000,
maxEXP = 3000000,

prizesID = {22607, 22604},
prizesNAME = {"Boss Key", "Hunt Key"},
minQTDEPremios = 2,
maxQTDEPremios = 4,

PremioFixoID = 25377,
PremioFixoNAME = "Gold Token",
PremioFixoQTDE = 3,

taskPoints = 3
}

local expert = {
minQTDE = 200,
maxQTDE = 600,

minEXP = 2000000,
maxEXP = 6000000,

prizesID = {22607, 22604},
prizesNAME = {"Boss Key", "Hunt Key"},
minQTDEPremios = 3,
maxQTDEPremios = 5,

PremioFixoID = 25377,
PremioFixoNAME = "Gold Token",
PremioFixoQTDE = 4,

taskPoints = 4
}

DT_TasksEasy = {"Minotaur", "Minotaur Guard", "Minotaur Mage", "Minotaur Archer", "Larva", "Scarab", "Wyvern", "Rorc", "Wolf", "War Wolf", "Orc Berserker", "Orc Warrior", "Orc Shaman", "Orc Leader", "Orc", "Cyclops", "Orc Rider", "Slime", "Orc Warlord", "Water Elemental", "Quara Mantassin Scout", "Gargoyle", "Mummy", "Crypt Shambler", "Demon Skeleton", "Ghost", "Zombie", "Rotworm", "Carrion Worm", "Rotworm Queen", "Tortoise", "Thornback Tortoise", "Toad", "Crab", "Blood Crab", "Killer Caiman", "Ghoul", "Scorpion", "Banshee", "Fire Devil", "Amazon", "Valkyrie", "Witch", "Leaf Golem", "Forest Fury", "Troll", "Goblin", "Troll Champion", "Goblin Scavanger", "Goblin Assassin", "Corym Vanguard", "Corym Skirmisher", "Corym Charlatan", "Ghost Wolf", "Gloom Wolf", "Elf", "Elf Arcanist", "Elf Scout", "Firestarter", "Bat", "Swamp Troll", "Stonerefiner", "Tarantula", "Dragon Hatchling", "Nomad", "Scorpion", "Dwarf", "Dwarf Soldier", "Dwarf Guard", "Kongra", "Sibang", "Merlkin", "Gazer", "Bonelord", "Elder Bonelord", "Braindeath"}
DT_TasksMedium = {"Vicious Squire", "Vile Grandmaster", "Renegade Knight", "Cult Believer", "Cult Enforcer", "Cult Scholar", "Ghastly Dragon", "Lizard Chosen", "Giant Spider", "Tarantula", "Bog Raider", "Earth Elemental", "Enfeebled Silencer", "Weakened Frazzlemaw", "Noble Lion", "Ancient Scarab", "Roaring Lion", "Souleater", "Mutated Bat", "Mutated Rat", "Mutated Tiger", "Warlock", "Yielothax", "Killer Caiman", "Vampire Bridge", "Vampire Viscount", "Vampire", "Bonebeast", "Necromancer", "Quara Predator", "Quara Constrictor", "Quara Mantassin", "Quara Pincher", "Quara Hydromancer", "Quara Predator Scout", "Quara Constrictor Scout", "Quara Mantassin Scout", "Quara Pincher Scout", "Quara Hydromancer Scout", "Wyrm", "Behemoth", "Nightstalker", "Giant Spider", "Energy Elemental", "Stampor", "Bonebeast", "Orc Cult Inquisitor", "Orc Cult Minion", "Orc Cultist", "Orc Cult Priest", "Orc Cult Fanatic", "Lost Husher", "Lost Basher", "Lost Thrower", "enslaved Dwarf", "Dragon", "Dragon Lord", "Barkless Devotee", "Barkless Fanatic", "Massive Water Elemental", "Minotaur Cult Follower", "Minotaur Cult Prophet", "Minotaur Cult Zealot" }
DT_TasksHard = {"Vicious Squire", "Vile Grandmaster", "Renegade Knight", "Hero", "Necromancer", "Lich", "Werebear", "Wereboar", "Werebadger", "Werewolf", "Askarak Demon", "Shaburak Demon", "Wyrm", "Elder Wyrm", "Vampire Viscount", "Blood Priest", "Shadow Pupil", "White Shade", "Vampire", "Putrid Mummy", "Giant Spider", "Fury", "Massive Fire Elemental", "Dragonling", "Hellfire Fighter", "Diabolic Imp", "Hellhound", "Infernalist", "Behemoth", "Dawnfire Asura", "Midnight Asura", "Hellspawn", "Plaguesmith", "Medusa", "Serpent Spawn", "Hydra", "Dark Faun", "Boogy", "Twisted Pooka", "Draken Elite", "Draken Warmaster", "Draken Spellweaver", "Draken Abomination", "Lizard Legionnaire", "Lizard Dragon Priest", "Lizard High Guard", "Lizard Chosen", "Ghastly Dragon"}
DT_TasksExpert = {"Guzzlemaw", "Sight of Surrender", "Terrorsleep", "Silencer", "Dark Torturer", "Demon Outcast", "Betrayed Wraith", "Plaguesmith", "Blightwalker", "Nightmare", "Juggernault", "Hellhound", "Crazed Winter Rearguard", "Crazed Winter Vanguard", "Crazed Summer Rearguard", "Crazed Summer Vanguard", "Spiky Carnivor", "Lumbering Carnivor", "Menacing Carnivor", "Vexclaw", "Grimeleech", "Demon", "Hellflayer", "Hellfire Fighter", "Fury", "Undead Dragon", "Phantasm", "Nightmare", "Defiler", "Plaguesmith", "Spectre", "Hand of Cursed Fate", "Undead Elite Gladiator", "Skeleton Elite Warrior", "Grim Reaper", "Gravedigger", "Floating Servant", "Lava Luker Attendant", "Cobra Assassin", "Cobra Vizier", "Cobra Scout", "Dread Intruder", "Reality Reaver", "Sparkion", "Breach Brood", "Choking Fear", "Retching Horror", "Animated Feather", "Biting Book", "Brain Squid", "Burning Book", "Cursed Book", "Energetic Book", "Energuardian of Tales", "Flying Book", "Guardian of Tales", "Icecold Book", "Ink Blob", "Knowledge Elemental", "Rage Squid", "Squid Warden", "Lost Soul", "Falcon Knight", "Falcon Paladin"}

-- SCRIPT

	
	DT_STORAGES = {
		PONTOS = 367643975,
		EXPERT = 367643974,
		HARD = 367643973,
		MEDIUM = 367643972,
		EASY = 367643971,
		HAVE_STARTED = 367643970,
			}
			
	--RESETAR STORAGES
		for i = 1, 6 do
		db.query('DELETE FROM `player_storage` WHERE `player_storage`.`key` = '.. 367643969+i ..'')
		end	
		
	-- EASY (100-)
		DT_CHOSENTASK_EASY = DT_TasksEasy[math.random(#DT_TasksEasy)]
		DT_NEEDKILL_EASY = math.ceil(math.random(easy.minQTDE, easy.maxQTDE))
		DT_EXPPRIZE_EASY = math.random(easy.minEXP, easy.maxEXP)
		
		DT_PRIZEID_EASY = easy.prizesID
		DT_PRIZENAME_EASY = easy.prizesNAME
		DT_PREMIOQTDE_EASY = math.random(easy.minQTDEPremios, easy.maxQTDEPremios)
		
		DT_PREMIOFIXO_ID_EASY = easy.PremioFixoID
		DT_PREMIOFIXO_NAME_EASY = easy.PremioFixoNAME
		DT_PREMIOFIXO_QTDE_EASY = easy.PremioFixoQTDE
		
		DT_TASKPOINTS_EASY = easy.taskPoints
		
	-- MEDIUM (150-)
		DT_CHOSENTASK_MEDIUM = DT_TasksMedium[math.random(#DT_TasksMedium)]
		DT_NEEDKILL_MEDIUM = math.ceil(math.random(medium.minQTDE, medium.maxQTDE))
		DT_EXPPRIZE_MEDIUM = math.random(medium.minEXP, medium.maxEXP)
		
		DT_PRIZEID_MEDIUM = medium.prizesID
		DT_PRIZENAME_MEDIUM = medium.prizesNAME
		DT_PREMIOQTDE_MEDIUM = math.random(medium.minQTDEPremios, medium.maxQTDEPremios)
		
		DT_PREMIOFIXO_ID_MEDIUM = medium.PremioFixoID
		DT_PREMIOFIXO_NAME_MEDIUM = medium.PremioFixoNAME
		DT_PREMIOFIXO_QTDE_MEDIUM = medium.PremioFixoQTDE
		
		DT_TASKPOINTS_MEDIUM = medium.taskPoints
	
	--HARD (200-)
		DT_CHOSENTASK_HARD = DT_TasksHard[math.random(#DT_TasksHard)]
		DT_NEEDKILL_HARD = math.ceil(math.random(hard.minQTDE, hard.maxQTDE))
		DT_EXPPRIZE_HARD = math.random(hard.minEXP, hard.maxEXP)
		
		DT_PRIZEID_HARD = hard.prizesID
		DT_PRIZENAME_HARD = hard.prizesNAME
		DT_PREMIOQTDE_HARD = math.random(hard.minQTDEPremios, hard.maxQTDEPremios)
		
		DT_PREMIOFIXO_ID_HARD = hard.PremioFixoID
		DT_PREMIOFIXO_NAME_HARD = hard.PremioFixoNAME
		DT_PREMIOFIXO_QTDE_HARD = hard.PremioFixoQTDE
		
		DT_TASKPOINTS_HARD = hard.taskPoints
		
	--EXPERT (200+)
		DT_CHOSENTASK_EXPERT = DT_TasksExpert[math.random(#DT_TasksExpert)]
		DT_NEEDKILL_EXPERT = math.ceil(math.random(expert.minQTDE, expert.maxQTDE))
		DT_EXPPRIZE_EXPERT = math.random(expert.minEXP, expert.maxEXP)
		
		DT_PRIZEID_EXPERT = expert.prizesID
		DT_PRIZENAME_EXPERT = expert.prizesNAME
		DT_PREMIOQTDE_EXPERT = math.random(expert.minQTDEPremios, expert.maxQTDEPremios)
		
		DT_PREMIOFIXO_ID_EXPERT = expert.PremioFixoID
		DT_PREMIOFIXO_NAME_EXPERT = expert.PremioFixoNAME
		DT_PREMIOFIXO_QTDE_EXPERT = expert.PremioFixoQTDE
		
		DT_TASKPOINTS_EXPERT = expert.taskPoints

		-- FUNÇÃO PRA PEGAR OS NOMES DOS ITEM
function getAllTableText(aa, bb, cc)
local tablecheck = aa

if not tablecheck then
	return false
end

local lang = bb
local ponto = ""
if not lang then
	lang = "and"
end
if cc then
ponto = "."
end
local text = ""
for i = 1, #tablecheck do
	if i == 1 then
	text = tablecheck[i]
	elseif i == #tablecheck then
	text = text .." "..lang.." "..tablecheck[i]..""..ponto..""
	else
	text = text ..", "..tablecheck[i]
	end
end
return text
end

 

 

 

3.1 Em /data/creaturescript/creaturescripts.xml adicione a tag:


	<event type="kill" name="dailyTasks" script="dailyTasks.lua"/>

 

3.2 Registre o "dailyTasks" no seu login.lua

 

3.3 Crie o arquivo dailyTasks.lua em /data/creaturescript/scripts e coloque tudo isso dentro:

  Mostrar conteúdo oculto


function onKill(player, target)
local monster = getCreatureName(target)
	
local KILL_EASY = player:getStorageValue(DT_STORAGES.EASY)
local KILL_MEDIUM = player:getStorageValue(DT_STORAGES.MEDIUM)
local KILL_HARD = player:getStorageValue(DT_STORAGES.HARD)
local KILL_EXPERT = player:getStorageValue(DT_STORAGES.EXPERT)

local isDOING = player:getStorageValue(DT_STORAGES.HAVE_STARTED)

if isDOING == 1 then
	if monster:lower() == DT_CHOSENTASK_EASY:lower() then
				player:setStorageValue(DT_STORAGES.EASY, KILL_EASY + 1)
		if KILL_EASY >= DT_NEEDKILL_EASY then
				player:sendTextMessage(30, "[DAILY TASK] You successully killed "..DT_NEEDKILL_EASY.." "..monster..". Talk to Iwan about it.")
			else
				player:sendTextMessage(30, "[DAILY TASK] You killed a "..monster..". There are still "..DT_NEEDKILL_EASY-KILL_EASY-1 .." to kill.")
		end
	end
elseif isDOING == 2 then
	if monster:lower() == DT_CHOSENTASK_MEDIUM:lower() then
				player:setStorageValue(DT_STORAGES.MEDIUM, KILL_MEDIUM + 1)
		if KILL_MEDIUM >= DT_NEEDKILL_MEDIUM then
				player:sendTextMessage(30, "[DAILY TASK] You successully killed "..DT_NEEDKILL_MEDIUM.." "..monster..". Talk to Iwan about it.")
			else
				player:sendTextMessage(30, "[DAILY TASK] You killed a "..monster..". There are still "..DT_NEEDKILL_MEDIUM-KILL_MEDIUM-1 .." to kill.")		
		end
	end
elseif isDOING == 3 then
	if monster:lower() == DT_CHOSENTASK_HARD:lower() then
				player:setStorageValue(DT_STORAGES.HARD, KILL_HARD + 1)
		if KILL_HARD >= DT_NEEDKILL_HARD then
				player:sendTextMessage(30, "[DAILY TASK] You successully killed "..DT_NEEDKILL_HARD.." "..monster..". Talk to Iwan about it.")
			else
				player:sendTextMessage(30, "[DAILY TASK] You killed a "..monster..". There are still "..DT_NEEDKILL_HARD-KILL_HARD-1 .." to kill.")		
		end
	end
elseif isDOING == 4 then
	if monster:lower() == DT_CHOSENTASK_EXPERT:lower() then
				player:setStorageValue(DT_STORAGES.EXPERT, KILL_EXPERT + 1)
		if KILL_EXPERT >= DT_NEEDKILL_EXPERT then
				player:sendTextMessage(30, "[DAILY TASK] You successully killed "..DT_NEEDKILL_EXPERT.." "..monster..". Talk to Iwan about it.")
			else
				player:sendTextMessage(30, "[DAILY TASK] You killed a "..monster..". There are still "..DT_NEEDKILL_EXPERT-KILL_EXPERT-1 .." to kill.")		
		end
	end
end

return true
end

 

 

Configurando o Script:

Essas configurações estão no:  /data/lib/task/dailytasks.lua

 

 

Imagens de amostra:

Escolhendo as tasks(A da direita é antes de save, e a da esquerda depois).

image.thumb.png.57869453e435c27f1188fd2e0268cf0a.png

 

Server Log contando quantos monstros foram mortos.

image.thumb.png.90ccae6a6675b184b829f25db5165236.png

 

Na bp normal os premios da primeira vez que eu fiz, na azul os premios da segunda (só pra mostrar que é aleatorio, um player não pode repetir a task)

image.png.1b4eb80df7eb59db4212f7f01f79aa9d.png

 

d pra 8.54?¡

Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • Similar Content

    • By yuriowns
      Salve rapaziada, estou criando um servidor 7.6 TFS 0.4.1, nele tem um sistema 1/1 de criar personagens, porém abre uma conta com 4 acc manager, (Criar Sorc, Criar Druid, Criar Pally e Criar Kina) o problema é que da pra criar qualquer nome que quiser (por exemplo "GOD")

      Alguém sabe como resolver?

      Script:
      focus = 0 talk_start = 0 target = 0 following = false attacking = false accstatus = 0 seksik = 3 myname = '' mypass = '' maxnamelen = 10 maxpasslen = 14 allow_pattern = '^[a-zA-Z0-9 -]+$' origmsg = '' mypasscheck = '' mynamecheck = ''   function onThingMove(creature, thing, oldpos, oldstackpos)   end   function onCreatureAppear(creature)   end   function onCreatureDisappear(cid, pos) if focus == cid then selfSay('Good bye then.') focus = 0 talk_start = 0 end end   function onCreatureTurn(creature)   end function msgcontains(txt, str) return (string.find(txt, str) and not string.find(txt, '(%w+)' .. str) and not string.find(txt, str .. '(%w+)')) end   function onCreatureSay(cid, type, msg) origmsg = msg msg = string.lower(msg)

        if (msgcontains(msg, 'hi') and focus == 0) and getDistanceToCreature(cid) < 4 then selfSay('Hello...Male or Female?') accstatus = 1 myname = '' mypass = '' myaccnumber = 0 seksik = 0 focus = cid talk_start = os.clock()   elseif msgcontains(msg, 'hi') and (focus ~= cid) and getDistanceToCreature(cid) < 4 then selfSay('Please wait')   elseif focus == cid then talk_start = os.clock()

        if msgcontains(msg, 'male') and accstatus == 1 then selfSay('Your name is...?') seksik = 1 accstatus = 2 elseif msgcontains(msg, 'female') and accstatus == 1 then selfSay('Your name is...?') seksik = 0 accstatus = 2   elseif accstatus == 2 then myname = origmsg mynamecheck = msg if string.len(mynamecheck) <= maxnamelen then if string.find(mynamecheck, allow_pattern) then if io.open("data/players/"..myname..".xml" , "r") == nil then selfSay('Your Name is '..myname..'. yes ?') accstatus = 3 else selfSay('Name allready exist, please give next one') end else selfSay('Illegal characters, try another') end else selfSay('Name is too long! Max is 10, try again') end elseif msgcontains(msg, 'yes') then if accstatus == 3 then selfSay('Ok, give your password') accstatus = 4 elseif accstatus == 5 then if seksik == 0 then selfSay('Ok. Lets check: You are female, your name is '..myname..', your password is '..mypass..'.yes ?') else selfSay('Ok. Lets check: You are male, your name is '..myname..', your password is '..mypass..'.yes ?') end accstatus = 10 elseif accstatus == 10 then selfSay('Ok. Say "acc" to take your acc...') accstatus = 7 end elseif msgcontains(msg, 'no') then if accstatus == 3 then selfSay('Chooze another') accstatus = 2 elseif accstatus == 5 then selfSay('Chooze another') accstatus = 4 elseif accstatus == 6 then selfSay('Again, you are man or woman?') accstatus = 1 end elseif accstatus == 4 then mypass = origmsg mypasscheck = msg if string.len(mypasscheck) <= maxpasslen then if string.find(mypasscheck, allow_pattern) then selfSay('Your pass is '..mypass..' yes ?') accstatus = 5 else selfSay('Illegal characters, try another') end else selfSay('too long! Max is 6, give other') end   elseif msgcontains(msg, 'acc') and accstatus == 7 then myaccnumber = math.random(100000,999999) if io.open("data/accounts/"..myaccnumber..".xml" , "r") == nil then selfSay('Your Acc is '..myaccnumber..'. Please Log in your Char...Good Luck!') accstatus = 8 f = assert(io.open("./data/accounts/"..myaccnumber..".xml", "w")) f = io.open("./data/accounts/"..myaccnumber..".xml", "w") f:write("<?xml version=\"1.0\"?><account pass=\""..mypass.."\" type=\"1\" premDays=\"90\"><characters><character name=\""..myname.."\"\/><\/characters><\/account>") f:close()   f = assert(io.open("./data/players/"..myname..".xml", "w")) f = io.open("./data/players/"..myname..".xml", "w") f:write("<?xml version=\"1.0\"?><player name=\"" ..myname.."\" account=\"" ..myaccnumber.."\" sex=\"" ..seksik.."\" lookdir=\"3\" exp=\"4200\" voc=\"2\" level=\"8\" access=\"0\" cap=\"470\" maglevel=\"1\" lastlogin=\"0\" premticks=\"0\" promoted=\"0\" banned=\"0\"><spawn x=\"1003\" y=\"1073\" z=\"7\" \/><temple x=\"1003\" y=\"1073\" z=\"7\" \/><skull type=\"0\" kills=\"0\" ticks=\"0\" absolve=\"0\" \/><health now=\"185\" max=\"185\" food=\"1000\" \/><mana now=\"35\" max=\"35\" spent=\"1\" \/><look type=\"134\" head=\"77\" body=\"79\" legs=\"78\" feet=\"77\" \/><skills><skill skillid=\"0\" level=\"10\" tries=\"0\" \/><skill skillid=\"1\" level=\"10\" tries=\"0\" \/><skill skillid=\"2\" level=\"10\" tries=\"0\" \/><skill skillid=\"3\" level=\"10\" tries=\"0\" \/><skill skillid=\"4\" level=\"10\" tries=\"0\" \/><skill skillid=\"5\" level=\"10\" tries=\"0\" \/><skill skillid=\"6\" level=\"10\" tries=\"0\" \/><\/skills><spells><spell words=\"exevo pan\" \/><spell words=\"utevo lux\" \/><spell words=\"exana pox\" \/><spell words=\"exura\" \/><spell words=\"exura gran\" \/><spell words=\"exori mort\" \/><spell words=\"exori flam\" \/><spell words=\"exori vis\" \/><spell words=\"utevo gran lux\" \/><spell words=\"utamo vita\" \/><spell words=\"utani hur\" \/><spell words=\"exura sio\" \/><spell words=\"exevo heal\" \/><spell words=\"utevo vis lux\" \/><spell words=\"exura vita\" \/><spell words=\"utani gran hur\" \/><spell words=\"utevo res ina\" \/><spell words=\"exevo vis pan\" \/><spell words=\"exura gran mas res\" \/><spell words=\"exevo gran mas pox\" \/><spell words=\"exevo mas mort pox\" \/><spell words=\"exevo bless\" \/><\/spells><deaths\/><inventory><slot slotid=\"1\"><item id=\"2490\" \/><\/slot><slot slotid=\"2\"><item id=\"2173\" \/><\/slot><slot slotid=\"3\"><item id=\"1988\"><inside><item id=\"2674\" count=\"5\" \/><item id=\"2160\" count=\"5\" \/><item id=\"2554\" count=\"1\" \/><item id=\"2120\" count=\"1\" \/><\/inside><\/item><\/slot><slot slotid=\"4\"><item id=\"2463\" \/><\/slot><slot slotid=\"5\"><item id=\"2525\" \/><\/slot><slot slotid=\"6\"><item id=\"2182\" \/><\/slot><slot slotid=\"7\"><item id=\"2647\" \/><\/slot><slot slotid=\"8\"><item id=\"2643\" \/><\/slot><\/inventory><depots><depot depotid=\"1\"><item id=\"2591\"><inside><item id=\"2594\" \/><\/inside><\/item><\/depot><depot depotid=\"2\"><item id=\"2591\"><inside><item id=\"2594\" \/><\/inside><\/item><\/depot><depot depotid=\"3\"><item id=\"2591\"><inside><item id=\"2594\" \/><\/inside><\/item><\/depot><depot depotid=\"4\"><item id=\"2591\"><inside><item id=\"2594\" \/><\/inside><\/item><\/depot><depot depotid=\"5\"><item id=\"2591\"><inside><item id=\"2594\" \/><\/inside><\/item><\/depot><depot depotid=\"6\"><item id=\"2591\"><inside><item id=\"2594\" \/><\/inside><\/item><\/depot><depot depotid=\"7\"><item id=\"2591\"><inside><item id=\"2594\" \/><\/inside><\/item><\/depot><\/depots><storage><data key=\"777\" value=\"" ..seksik.."\" \/><\/storage><\/player>") f:close() else selfSay('Error number allready exist. Say again "acc" ') end

        elseif msgcontains(msg, 'next') and accstatus == 8 then selfSay(''..myaccnumber..' Pass is '..mypass..' . If you like to enter OTS website say: --links--.') accstatus = 0 elseif msgcontains(msg, 'links') then selfSay('URLS')


        elseif string.find(msg, '(%a*)bye(%a*)') and getDistanceToCreature(cid) < 4 then selfSay('Good bye, ' .. creatureGetName(cid) .. '!') focus = 0 accstatus = 0 myname = '' mypass = '' myaccnumber = 0 seksik = '' talk_start = 0 end end end   function onCreatureChangeOutfit(creature)   end   function onThink() if (os.clock() - talk_start) > 30 then if focus > 0 then selfSay('Nastepny prosze') end focus = 0 end if focus ~= 0 then if getDistanceToCreature(focus) > 5 then selfSay('Do zobaczenia') focus = 0 end end end
    • By Bruxo Ots
      Fala meus queridos, como sabem existem alguns ots que possuem um npc que compra tudo pra facilitar a vida da galera.
      Vou compartilhar com vcs aqui.
      Npc ja atualizado com os items 12.60
      Porem e compativel com meu otb quem usa vai dar boa que não usa e so mudar os id e so alegria.
      Creditos ao dega aqui e a equipe do HadesOt.
       
       
       
      Arquivo.
      Tibia King.xml
       
    • By Cicuta Verde
      Alguem teria as sprites de todos hero cards do pxg q cujo alguns foram usados no Defenders de natal?
       
      Eu ja tive uma vez na epoca q dava pra pegar pelo próprio cliente, mas troquei de pc e perdi, agr to precisando pro meu projeto.
       
      *pesquisei por tags aqui no forum e ja pesquisei no google mas nao achei nada.
    • By Maniaco
      Boa Tarde TibiaKing!!!
       
      Bom estou precisando de um script não deve ser muito difícil !! (pra quem sabe  !)
      Quem poder ajudar já agradeço. ++ Rep
       
       
      Seria um Npc Exemplo
      Player :Hi
      Npc: Ola (PLAYERNAME) gostaria de receber {buff} ?
       
      Player: Buff 
      Npc: Gostaria de receber qual, Buff 1, buff 2, buff 3,..... buff 12.
       
      Player: Buff 12
      Npc: voce precisar ter recebido o Buff Anterior (Buff 11) para receber o próximo Buff (Buff 12)
       
      Player: Buff 1
      Npc: você precisa do item xxxx <<< !! Alem do item uma storage certa e o level!
       
      Player: Buff 1 "novamente <"
      Npc: você já recebeu esse buff!
       
      Config do npc
       
      [buff 01] = life 1000000 (Permanente)
                        mana = 10000000 ( Permanente)
      Level = 100 <!! ele so pode receber buff 01 no level 100 e assim em diante
      Storage = 211100 ( caso ele não tenha < vai aparecer o seguinte "você não completou a missão dos buffs"
      [buff 02] = life 1000000 (Permanente)
                        mana = 10000000 (Permanente)
      Level = 200
      Storage = 211101
       
       
       
      o player só poderá receber o próximo buff se ele Receber o primeiro Buff antes (Ex ele so pode ter buff 02 se tiver recebido o buff 01) 
       
      Espero que de para entender tudo!! 
       
       
       
       
       
       
       
    • By marvadon
      Bom Dia pessoal do TK
       
      estou com problemas com o npc xodet.
      ele não entrega e nem vende a wand of dragonbreath, aparece na lista de compra mas não ocorre nehuma ação referente a entrega e cobrança de gold.
       
      todos os outros itens ele entrega normalmente.
       
      alguém poderia me ajudar.
       
       
      Obrigado
      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 local shopModule = ShopModule:new() npcHandler:addModule(shopModule) shopModule:addBuyableItem({'spellbook'}, 2175, 150, 1, 'spellbook') shopModule:addBuyableItem({'small health'}, 8704, 20, 1, 'small health potion') shopModule:addBuyableItem({'health potion'}, 7618, 45, 1, 'health potion') shopModule:addBuyableItem({'mana potion'}, 7620, 50, 1, 'mana potion') shopModule:addBuyableItem({'strong health'}, 7588, 100, 1, 'strong health potion') shopModule:addBuyableItem({'strong mana'}, 7589, 80, 1, 'strong mana potion') shopModule:addBuyableItem({'great health'}, 7591, 190, 1, 'great health potion') shopModule:addBuyableItem({'great mana'}, 7590, 120, 1, 'great mana potion') shopModule:addBuyableItem({'great spirit'}, 8472, 190, 1, 'great spirit potion') shopModule:addBuyableItem({'ultimate health'}, 8473, 310, 1, 'ultimate health potion') shopModule:addSellableItem({'normal potion flask', 'normal flask'}, 7636, 5, 'empty small potion flask') shopModule:addSellableItem({'strong potion flask', 'strong flask'}, 7634, 10, 'empty strong potion flask') shopModule:addSellableItem({'great potion flask', 'great flask'}, 7635, 15, 'empty great potion flask') shopModule:addBuyableItem({'instense healing'}, 2265, 95, 1, 'intense healing rune') shopModule:addBuyableItem({'ultimate healing'}, 2273, 100, 1, 'ultimate healing rune') shopModule:addBuyableItem({'fire bomb'}, 2305, 117, 1, 'fire bomb') shopModule:addBuyableItem({'destroy field'}, 2261, 15, 1, 'destroy field rune') shopModule:addBuyableItem({'light magic missile'}, 2287, 4, 1, 'light magic missile rune') shopModule:addBuyableItem({'heavy magic missile'}, 2311, 12, 1, 'heavy magic missile rune') shopModule:addBuyableItem({'great fireball'}, 2304, 45, 1, 'great fireball rune') shopModule:addBuyableItem({'explosion'}, 2313, 31, 1, 'explosion rune') shopModule:addBuyableItem({'sudden death'}, 2268, 40, 1, 'sudden death rune') shopModule:addBuyableItem({'convince creature'}, 2290, 80, 1, 'convince creature rune') shopModule:addBuyableItem({'chameleon'}, 2291, 210, 1, 'chameleon rune') shopModule:addBuyableItem({'desintegrate'}, 2310, 80, 1, 'desintegreate rune') shopModule:addBuyableItem({'fire field'}, 2301, 28, 1, 'fire field rune') shopModule:addBuyableItem({'energy field'}, 2301, 38, 1, 'energy field rune') shopModule:addBuyableItem({'avalanche rune'}, 2274, 45, 1, 'avalanche rune') shopModule:addBuyableItem({'antidote rune'}, 2266, 65, 1, 'antidote rune') shopModule:addBuyableItem({'energy wall'}, 2279, 85, 1, 'energy wall rune') shopModule:addBuyableItem({'icicle'}, 2271, 30, 1, 'icicle rune') shopModule:addBuyableItem({'magic wall rune'}, 2293, 30, 1, 'magic wall rune') shopModule:addBuyableItem({'wild growth rune'}, 2269, 15, 1, 'wild growth rune') shopModule:addBuyableItem({'poison field'}, 2285, 21, 1, 'poison field rune') shopModule:addBuyableItem({'poison wall'}, 2289, 52, 1, 'poison wall rune') shopModule:addBuyableItem({'blank'}, 2260, 10, 1, 'blank rune') shopModule:addBuyableItem({'paralyze rune'}, 2278, 5, 1, 'paralyze rune') shopModule:addBuyableItem({'fire ball'}, 2302, 30, 1, 'fire ball rune') shopModule:addBuyableItem({'wand of vortex', 'vortex'}, 2190, 500, 'wand of vortex') shopModule:addBuyableItem({'wand of dragonbreath', 'dragonbreath'}, 2191, 1000, 1, 'wand of dragonbreath') shopModule:addBuyableItem({'wand of decay', 'decay'}, 2188, 5000, 'wand of decay') shopModule:addBuyableItem({'wand of draconia', 'draconia'}, 8921, 7500, 'wand of draconia') shopModule:addBuyableItem({'wand of cosmic energy', 'cosmic energy'}, 2189, 10000, 'wand of cosmic energy') shopModule:addBuyableItem({'wand of inferno', 'inferno'}, 2187, 15000, 'wand of inferno') shopModule:addBuyableItem({'wand of starstorm', 'starstorm'}, 8920, 18000, 'wand of starstorm') shopModule:addBuyableItem({'wand of voodoo', 'voodoo'}, 8922, 22000, 'wand of voodoo') shopModule:addSellableItem({'normal potion flask', 'normal flask'}, 7636, 5, 'empty small potion flask') shopModule:addSellableItem({'strong potion flask', 'strong flask'}, 7634, 10, 'empty strong potion flask') shopModule:addSellableItem({'great potion flask', 'great flask'}, 7635, 15, 'empty great potion flask') shopModule:addSellableItem({'wand of vortex', 'vortex'}, 2190, 250, 'wand of vortex') shopModule:addSellableItem({'wand of dragonbreath', 'dragonbreath'}, 2191, 500, 'wand of dragonbreath') shopModule:addSellableItem({'wand of decay', 'decay'}, 2188, 2500, 'wand of decay') shopModule:addSellableItem({'wand of draconia', 'draconia'}, 8921, 3750, 'wand of draconia') shopModule:addSellableItem({'wand of cosmic energy', 'cosmic energy'}, 2189, 5000, 'wand of cosmic energy') shopModule:addSellableItem({'wand of inferno', 'inferno'},2187, 7500, 'wand of inferno') shopModule:addSellableItem({'wand of starstorm', 'starstorm'}, 8920, 9000, 'wand of starstorm') shopModule:addSellableItem({'wand of voodoo', 'voodoo'}, 8922, 11000, 'wand of voodoo') shopModule:addSellableItem({'snakebite rod', 'snakebite'}, 2182, 250, 1, 'snakebite rod') shopModule:addSellableItem({'moonlight rod', 'moonlight'}, 2186, 500, 1, 'moonlight rod') shopModule:addSellableItem({'necrotic rod', 'necrotic'}, 2185, 2500, 1, 'necrotic rod') shopModule:addSellableItem({'northwind rod', 'northwind'}, 8911, 3750, 1, 'northwind rod') shopModule:addSellableItem({'terra rod', 'terra'}, 2181, 5000, 1, 'terra rod') shopModule:addSellableItem({'hailstorm rod', 'hailstorm'}, 2183, 7500, 1, 'hailstorm rod') shopModule:addSellableItem({'springsprout rod', 'springsprout'}, 8912, 9000, 1, 'springsprout rod') shopModule:addSellableItem({'underworld rod', 'underworld'}, 8910, 11000, 1, 'underworld rod') shopModule:addBuyableItem({'snakebite rod', 'snakebite'}, 2182, 500, 'snakebite rod') shopModule:addBuyableItem({'moonlight rod', 'moonlight'}, 2186, 1000, 'moonlight rod') shopModule:addBuyableItem({'necrotic rod', 'necrotic'}, 2185, 5000, 'necrotic rod') shopModule:addBuyableItem({'northwind rod', 'northwind'}, 8911, 7500, 'northwind rod') shopModule:addBuyableItem({'terra rod', 'terra'}, 2181, 10000, 'terra rod') shopModule:addBuyableItem({'hailstorm rod', 'hailstorm'}, 2183, 15000, 'hailstorm rod') shopModule:addBuyableItem({'springsprout rod', 'springsprout'}, 8912, 18000, 'springsprout rod') shopModule:addBuyableItem({'underworld rod', 'underworld'}, 8910, 22000, 'underworld rod') npcHandler:addModule(FocusModule:new())
  • Recently Browsing   0 members

    No registered users viewing this page.


×
×
  • Create New...

Important Information

Confirmação de Termo