Ir para conteúdo
  • 0
Entre para seguir isso  
potinho

Scripting Repetir Tasks

Pergunta

potinho    4
potinho

Antes de fazer a sua pergunta, tenha certeza de ter lido as regras da seção e o guia abaixo:

https://forums.otserv.com.br/index.php?/forums/topic/168583-regras-da-seção/

https://forums.otserv.com.br/index.php?/forums/topic/165121-como-fazer-uma-pergunta-ou-o-grande-guia-do-usuário-com-dúvidas/

Descreva em algumas palavras a base utilizada. (Nome do servidor / Nome do cliente / Nome do website / etc.).

The OTX Server Version: (2.100 - 6000) - Codename: (FINAL)

Base:

Extreme OT 7.6

Qual é a sua pergunta?

Olá, tenho o script abaixo de tasks, 100% funcional. Só que quando os players vão repetir, dá que a task já foi terminada, gostaria de dar a opção dos players repetirem a task. Obrigado.

 

Você tem o código disponível? Se tiver poste-o na caixa de código que está dentro do spoiler abaixo:

Spoiler

 <?xml version="1.0" encoding="UTF-8"?>  

<mod name="Simple Task" version="3.0" author="Vodkart" contact="************.com" enabled="yes">  

<config name="task_func"><![CDATA[


tasktabble = {

["troll"] = {monster_race={"troll","frost troll","furious troll","island troll","swamp troll","troll champion","troll legionnaire"}, storage_start = 200201, storage = 91001,count = 300,exp = 50000,money = 3000},

["globin"] = {monster_race={"goblin","goblin assassin","goblin leader"}, storage_start = 200202, storage = 91002,count = 300,exp = 70000,money = 3000},

["rotworm"] = {monster_race={"rotworm","carrion worm"}, storage_start = 200203, storage = 91003,count = 300,exp = 100000,money = 10000},

["cyclops"] = {monster_race={"cyclops","cyclops smith","cyclops drone"}, storage_start = 200204, storage = 91004,count = 500,exp = 200000,money = 15000},

["minotaur"] = {monster_race={"minotaur","minotaur archer","minotaur mage","minotaur guard"}, storage_start = 200209, storage = 91009,count = 600,exp = 100000,money = 5000},

["dragon"] = {monster_race={"dragon","dragon lord","frost dragon"}, storage_start = 200214, storage = 91014,count= 300, exp = 850000,money = 15000},

["giant spider"] = {monster_race={"giant spider"}, storage_start = 200215, storage = 91016,count = 500, exp = 500000, money = 15000},

["demon"] = {monster_race={"demon"}, storage_start = 200216, storage = 91017,count = 6666, reward = {{2495,1},{3960,1}}},

["hero"] = {monster_race={"hero"}, storage_start = 200217, storage = 91018,count = 600, exp = 1000000, money = 35000},

["vampire"] = {monster_race={"vampire"}, storage_start = 200218, storage = 91019,count = 500, exp = 400000, money = 30000},

["warlock"] = {monster_race={"warlock"}, storage_start = 200219, storage = 91020,count = 1000, exp = 8000000, money = 200000},

["hydra"] = {monster_race={"hydra"}, storage_start = 200220, storage = 91021,count = 700, exp = 2000000, reward = {{2195,1},{2498,1}}},

["dragon lord"] = {monster_race={"dragon lord"}, storage_start = 200221, storage = 91022,count = 1500, exp = 5000000, money = 150000},

["behemoth"] = {monster_race={"behemoth"}, storage_start = 200222, storage = 91023,count = 500, exp = 2000000, money = 80000},

["black knight"] = {monster_race={"black knight"}, storage_start = 200223, storage = 91024,count = 600, exp = 2000000, money = 80000},

}



configbosses_task = {

{race = "cave rat",Playerpos = {x = 189, y = 57, z = 7}, FromPosToPos = {{x = 186, y = 54, z = 7},{x = 193, y = 60, z = 7}},time = 5},

}


function CheckTask(cid)

for k, v in pairs(tasktabble) do

if getPlayerStorageValue(cid,v.storage_start) >= 1 then return true end

end

return false

end

function finisheAllTask(cid)

local config = {

exp = {true,100000},

money = {true,200000},

items ={false,{{2124,2},{2173,1}}},

premium ={true,5}

}

local x = true

for k, v in pairs(tasktabble) do

if tonumber(getPlayerStorageValue(cid,v.storage)) then

x = false

end

end

if x == true then

setPlayerStorageValue(cid, 521456, 0)

local b = getGlobalStorageValue(63005) if b == -1 then b = 1 end

if b < 11 then

setGlobalStorageValue(63005,b+1)

doBroadcastMessage('[Task Mission Complete] '..getCreatureName(cid)..' was the '..b..' to finish the task!.')

doPlayerAddPremiumDays(cid, config.premium[1] == true and config.premium[2] or 0)

doPlayerAddExp(cid, config.exp[1] == true and config.exp[2] or 0)

doPlayerAddMoney(cid, config.money[1] == true and config.money[2] or 0)

if config.items[1] == true then doAddItemsFromList(cid,config.items[2]) end

doItemSetAttribute(doPlayerAddItem(cid, 7369), "name", "trophy "..getCreatureName(cid).." completed all the task.")

end

end

end

function HavePlayerPosition(cid, from, to)

	return isInRange(getPlayerPosition(cid), from, to) and true or false

end

function getRankStorage(cid, value, max, RankName) -- by vodka

local str =""

str = "--[".. (RankName == nil and "RANK STORAGE" or ""..RankName.."") .."]--\n\n"

local query = db.getResult("SELECT `player_id`, `value` FROM `player_storage` WHERE `key` = "..value.." ORDER BY cast(value as INTEGER) DESC;")

if (query:getID() ~= -1) then k = 1 repeat if k > max then break end

str = str .. "\n " .. k .. ". "..getPlayerNameByGUID(query:getDataString("player_id")).." - [" .. query:getDataInt("value") .. "]"

k = k + 1 until not query:next() end return doShowTextDialog(cid, 2529, str)

end

function getItemsInContainerById(container, itemid) -- Function By Kydrai

			local items = {}

			if isContainer(container) and getContainerSize(container) > 0 then

							for slot=0, (getContainerSize(container)-1) do

											local item = getContainerItem(container, slot)

											if isContainer(item.uid) then

															local itemsbag = getItemsInContainerById(item.uid, itemid)

															for i=0, #itemsbag do

																			table.insert(items, itemsbag[i])

															end

											else

															if itemid == item.itemid then

																			table.insert(items, item.uid)

															end

											end

							end

			end

			return items

end

function doPlayerAddItemStacking(cid, itemid, quant) -- by mkalo

	local item = getItemsInContainerById(getPlayerSlotItem(cid, 3).uid, itemid)

	local piles = 0

	if #item > 0 then

			for i,x in pairs(item) do

					if getThing(x).type < 100 then

							local it = getThing(x)

							doTransformItem(it.uid, itemid, it.type+quant)

							if it.type+quant > 100 then

									doPlayerAddItem(cid, itemid, it.type+quant-100)

							end

					else

						   piles = piles+1

					end

			end

	else

			return doPlayerAddItem(cid, itemid, quant)

	end

	if piles == #item then

			doPlayerAddItem(cid, itemid, quant)

	end

end

function getItemsFromList(items) -- by vodka

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 doAddItemsFromList(cid,items) -- by vodka

if table.maxn(items) > 0 then

for i = 1, table.maxn(items) do

local count = items[i][2]

while count > 0 do

if isItemStackable(items[i][1]) then

doPlayerAddItemStacking(cid, items[i][1], 1)

else

doPlayerAddItem(cid, items[i][1],1)

end

count = count - 1

end

end

end

end

		function pairsByKeys(t, f)

		  local a = {}

		  for n in pairs(t) do table.insert(a, n) end

		  table.sort(a, f)

		  local i = 0

		  local iter = function ()

				i = i + 1

				if a[i] == nil then return nil

				else return a[i], t[a[i]]

				end

		  end

		  return iter

		end

]]></config>

<event type="login" name="TaskLogin" event="script"><![CDATA[

function onLogin(cid)

registerCreatureEvent(cid, "KillTask")

return true

end]]></event>	

<event type="kill" name="KillTask" event="script"><![CDATA[

domodlib('task_func')

function onKill(cid, target, lastHit)

if(isMonster(target) == true) then

local n = string.lower(getCreatureName(target))

for race, mob in pairs(tasktabble) do

if getPlayerStorageValue(cid,mob .storage_start) >= 1 then

for i = 1,#mob.monster_race do

if n == mob.monster_race[i] then

local contagem = getPlayerStorageValue(cid, mob.storage)

if (contagem == -1) then contagem = 1 end

if not tonumber(contagem) then return true end

if contagem > mob.count then return true end

if contagem > mob.count then return true end

setPlayerStorageValue(cid, mob.storage, contagem+1)

doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE,""..(contagem == mob.count and "Congratulations! You finished the task of "..race.."." or "defeated. Total [" .. contagem .. "/" .. mob.count .. "] " .. race .. ".").."")

end

end

end

end

end

return true

end]]></event>

</mod>

 

 

Você tem alguma imagem que possa auxiliar no problema? Se sim, anexe-a dentro do spoiler abaixo:

Spoiler

 

 

Compartilhar este post


Link para o post

0 respostass a esta questão

Recommended Posts

Até agora não há respostas para essa pergunta

Visitante
Este tópico está impedido de receber novos posts.
Entre para seguir isso  
  • Quem Está Navegando   0 membros estão online

    Nenhum usuário registrado visualizando esta página.

×