Ir para conteúdo
  • Cadastre-se

Posts Recomendados

galera do tk alguem poderia me ajudar a colocar um tempo nessa storage por favor?

queria que ela a cada 6 dias expirasse a storage

script:

Spoiler

-----------------------------------            
---------SCRIPT por PC98------------    NAO REMOVA OS CREDITOS      
-----------------------------------            


function onUse(cid, item, frompos, item2, topos) 

------------------ Inicio das Config ------------

local castle_one_name = "Castle"                  -- Nome do castelo 1
local storages = {154154,54321,123123}               -- Storages ( se vc eh iniciante, deixe como está...)

-------PREMIOs  I N D I V I D U A L ---------

local premio_por_vezes = 1         -- Premio por vezes de conquista de castelo. (1) = Ativo  (0) = Desativa. 
local premio_vezes = 3            -- Caso ativo, a quantidade de conquista que o player tem, para ganhar PREMIO.
local premio = 10522                -- ID do Premio
local premio_cont = 1              -- Quantidade do Premio
local premio_reset = 1             -- Resetar o contador do premio depois que atingir a meta?? (1) = SIM  (0) = NAO

-------FIM PREMIOs I N D I V I D U A L ---------


----------------- FIM DAS CONFIG -----------------

local sto_ativ = getGlobalStorageValue(storages[2])
position = getCreaturePosition(cid)


  if isPlayerGuild(cid) == TRUE then
     if sto_ativ == 1 or sto_ativ == -1 then

        guildname = getPlayerGuildName(cid)     
        guild = getPlayerGuildId(cid)               
        guild_sto = getGlobalStorageValue(storages[3])

           if guild ~= guild_sto then            
              setPlayerStorageValue(cid,guild_sto,guild)                      
              if getPlayerStorageValue(cid,storages[1]) == -1 then
                 setPlayerStorageValue(cid,storages[1],0)
              end

              sto_vezes = getPlayerStorageValue(cid,storages[1])                   

              setGlobalStorageValue(storages[3],getPlayerGuildId(cid))
              setPlayerStorageValue(cid,storages[1], sto_vezes + 1)

              sto_vezes_total = getPlayerStorageValue(cid,storages[1])

              doBroadcastMessage("O(a) "..getCreatureName(cid).." acabou de conquistar o "..castle_one_name.." para a guild \""..guildname.."\" pela "..sto_vezes_total.."ª vez(s).", 22)
              doSendMagicEffect(position, 39)  
              doRemoveItem(item.uid, 1)

                if premio_por_vezes == 1 then
                   if getPlayerStorageValue(cid,storages[1]) == premio_vezes then
                      if getItemWeightById(premio,1) <= getPlayerFreeCap(cid) then
                         doBroadcastMessage("O "..getCreatureName(cid).." ganhou uma(o) "..getItemNameById(premio).." como recompensa das suas "..premio_vezes.." conquistas!", 21)
                         doPlayerAddItem(cid, premio,premio_cont)
                         doPlayerSendTextMessage(cid, 18, "Voce recebeu o(a) "..getItemNameById(premio).." como recompensa das suas "..premio_vezes.." conquistas!")
                       -----------------------------------------------  --  
                           if premio_reset == 1 then                    --
                              setPlayerStorageValue(cid,storages[1],0)  --  Resetar a contagem
                           end                                          --
                       -----------------------------------------------  --

                      else
                      doPlayerSendTextMessage(cid, 18, "Voce nao tem capacidade para ganhar o item. Vamos verificar novamente em 10 segundos!")
                      addEvent(additem,10000,cid,premio,premio_cont,premio_reset)
                      end
                   end                                        
                end               
           else
              doBroadcastMessage("O(a) "..getCreatureName(cid).." acabou de conquistar o "..castle_one_name.." para a guild \""..guildname.."\" pela "..sto_vezes_total.."ª vez(s).", 22)
              doSendMagicEffect(position, 39)  
           end
     else
     doPlayerSendCancel(cid,"O sistema está desativado")
     end      
  else
  doPlayerSendCancel(cid,"É nescessario ter guild para dominar o castelo!")
  doSendMagicEffect(position, 2)
  end
end

------------------------- por pc98

function additem(cid,premio,premio_cont,premio_reset)

if getItemWeightById(premio,1) <= getPlayerFreeCap(cid) then
   doPlayerAddItem(cid, premio,premio_cont)
   doPlayerSendTextMessage(cid, 18, "Voce recebeu o(a) "..getItemNameById(premio).." como recompensa das suas "..premio_vezes.." conquistas!")
    if premio_reset == 1 then
       setPlayerStorageValue(cid,storages[1],0)
    end
   stopEvent(additem)
 else
 doPlayerSendTextMessage(cid, 18, "Voce nao tem capacidade para receber o item. Verificando novamente em 10 segundos!")
 addEvent(additem,10000,cid)
 end
end

-------------------------  por pc98
function isPlayerGuild(cid)
if getPlayerGuildName(cid) ~= "" then
return TRUE
else
return FALSE
end
end

 

Link para o post
Compartilhar em outros sites
  • 3 weeks later...

Olá @Carlinhous1996, boa noite!

 

Você não explicou exatamente quais storages gostaria de adicionar o tempo.
Ao meu ver, seria para receber a recompensa?

Fiz as modificações para só receber as recompensas caso a Storage tenha resetado, após 6 dias.
Também fiz uma pequena organização ao código.
 

-- Created by pc98
-- Edited by xMonkey

local config = {
	castle_one_name = "Castle",                  -- Nome do castelo 1
	storages = {154154,54321,123123, 123124},    -- Storages ( se vc eh iniciante, deixe como está...)

	-- REWARDS  I N D I V I D U A I S ---------
	premio_por_vezes = 1,         -- Premio por vezes de conquista de castelo. (1) = Ativo  (0) = Desativa. 
	premio_vezes = 3,             -- Caso ativo, a quantidade de conquista que o player tem, para ganhar PREMIO.
	premio = 10522,               -- ID do Premio
	premio_cont = 1,              -- Quantidade do Premio
	premio_reset = 1,             -- Resetar o contador do premio depois que atingir a meta?? (1) = SIM  (0) = NAO
	resetReward = {6, "day"}      -- Tempo para resetar a storage e receber novamente a recompensa
}

-- Para deixar mais organizado, jogar essas funções em LIB (se jogar em LIB, remover o local na frente de function)
-- Custom Functions (inicio)
local function mathtime(table) -- by dwarfer
local unit = {"sec", "min", "hour", "day"}
	for i, v in pairs(unit) do
		if v == table[2] then
			return table[1]*(60^(v == unit[4] and 2 or i-1))*(v == unit[4] and 24 or 1)
		end
	end

	return error("Bad declaration in mathtime function.")
end

local function getTimeString(self)
    local format = {
        {'dia', self / 60 / 60 / 24},
        {'hora', self / 60 / 60 % 24},
        {'minuto', self / 60 % 60},
        {'segundo', self % 60}
    }

    local out = {}
    for k, t in ipairs(format) do
        local v = math.floor(t[2])
        if(v > 0) then
            table.insert(out, (k < #format and (#out > 0 and ', ' or '') or ' e ') .. v .. ' ' .. t[1] .. (v ~= 1 and 's' or ''))
        end
    end
    local ret = table.concat(out)
    if ret:len() < 16 and ret:find('segundo') then
        local a, b = ret:find(' e ')
        ret = ret:sub(b+1)
    end
    return ret
end
-- Custom Functions (fim)


function onUse(cid, item, frompos, item2, topos)
	local sto_ativ, position = getGlobalStorageValue(config.storages[2]), getCreaturePosition(cid)
	if (isPlayerGuild(cid) == true) then
		if (sto_ativ == 1 or sto_ativ == -1) then
			guildname = getPlayerGuildName(cid)
			guild = getPlayerGuildId(cid)
			guild_sto = getGlobalStorageValue(config.storages[3])

			if (guild ~= guild_sto) then            
				setPlayerStorageValue(cid, guild_sto, guild)                      
				if (getPlayerStorageValue(cid, config.storages[1]) == -1) then
					setPlayerStorageValue(cid, config.storages[1], 0)
				end

				setGlobalStorageValue(config.storages[3], getPlayerGuildId(cid))
				setPlayerStorageValue(cid,config.storages[1], getPlayerStorageValue(cid, config.storages[1]) + 1)

				sto_vezes_total = getPlayerStorageValue(cid, config.storages[1])
				doBroadcastMessage("O(a) "..getCreatureName(cid).." acabou de conquistar o ".. config.castle_one_name .." para a guild \"".. guildname .."\" pela ".. sto_vezes_total .."ª vez(s).", 22)
				doSendMagicEffect(position, 39)  
				doRemoveItem(item.uid, 1)
				if (config.premio_por_vezes == 1) then
					if (getPlayerStorageValue(cid, config.storages[4]) - os.time() > 0) then
						doPlayerSendTextMessage(cid, 18, "Voce deve aguardar ".. getTimeString(getPlayerStorageValue(cid, config.storages[4]) - os.time()) .." para receber a recompensa novamente.")
						return true
					end

					if (getPlayerStorageValue(cid, config.storages[1]) == config.premio_vezes) then
						if (getItemWeightById(config.premio, 1) <= getPlayerFreeCap(cid)) then
							doBroadcastMessage("O ".. getCreatureName(cid) .." ganhou uma(o) ".. getItemNameById(config.premio) .." como recompensa das suas ".. config.premio_vezes .." conquistas!", 21)
							doPlayerAddItem(cid, config.premio, config.premio_cont)
							doPlayerSendTextMessage(cid, 18, "Voce recebeu o(a) ".. getItemNameById(config.premio) .." como recompensa das suas ".. config.premio_vezes .." conquistas!")
							if config.premio_reset == 1 then
								setPlayerStorageValue(cid,config.storages[1], 0)
							end

							setPlayerStorageValue(cid, config.storages[4], os.time() + mathtime(config.resetReward))
						else
							doPlayerSendTextMessage(cid, 18, "Voce nao tem capacidade para ganhar o item. Vamos verificar novamente em 10 segundos!")
							addEvent(additem, 10000, cid, config.premio, config.premio_cont, config.premio_reset)
						end
					end                                        
				end               
			else
				doBroadcastMessage("O(a) ".. getCreatureName(cid) .." acabou de conquistar o ".. config.castle_one_name .." para a guild \"".. guildname .."\" pela ".. sto_vezes_total .."ª vez(s).", 22)
				doSendMagicEffect(position, 39)  
			end
		else
			doPlayerSendCancel(cid, "O sistema está desativado")
		end      
	else
		doPlayerSendCancel(cid, "É nescessario ter guild para dominar o castelo!")
		doSendMagicEffect(position, 2)
	end
end

function additem(cid, config.premio, config.premio_cont, config.premio_reset)
	if (not isPlayer(cid)) then
		stopEvent(additem)
		return true
	end

	if (getItemWeightById(config.premio, 1) <= getPlayerFreeCap(cid)) then
		doPlayerAddItem(cid, config.premio, config.premio_cont)
		doPlayerSendTextMessage(cid, 18, "Voce recebeu o(a) ".. getItemNameById(config.premio) .." como recompensa das suas ".. config.premio_vezes .." conquistas!")
		if (config.premio_reset == 1) then
			setPlayerStorageValue(cid, config.storages[1], 0)
		end

		setPlayerStorageValue(cid, config.storages[4], os.time() + mathtime(config.resetReward))
		stopEvent(additem)
	else
		doPlayerSendTextMessage(cid, 18, "Voce nao tem capacidade para receber o item. Verificando novamente em 10 segundos!")
		addEvent(additem, 10000, cid)
	end
end

function isPlayerGuild(cid)
	if (getPlayerGuildName(cid) ~= "") then
		return true
	else
		return false
	end
end

 

Link para o post
Compartilhar em outros sites
  • 2 weeks later...
Em 21/07/2022 em 21:43, xMonkey disse:

Olá @Carlinhous1996, boa noite!

 

Você não explicou exatamente quais storages gostaria de adicionar o tempo.
Ao meu ver, seria para receber a recompensa?

Fiz as modificações para só receber as recompensas caso a Storage tenha resetado, após 6 dias.
Também fiz uma pequena organização ao código.
 





-- Created by pc98
-- Edited by xMonkey

local config = {
	castle_one_name = "Castle",                  -- Nome do castelo 1
	storages = {154154,54321,123123, 123124},    -- Storages ( se vc eh iniciante, deixe como está...)

	-- REWARDS  I N D I V I D U A I S ---------
	premio_por_vezes = 1,         -- Premio por vezes de conquista de castelo. (1) = Ativo  (0) = Desativa. 
	premio_vezes = 3,             -- Caso ativo, a quantidade de conquista que o player tem, para ganhar PREMIO.
	premio = 10522,               -- ID do Premio
	premio_cont = 1,              -- Quantidade do Premio
	premio_reset = 1,             -- Resetar o contador do premio depois que atingir a meta?? (1) = SIM  (0) = NAO
	resetReward = {6, "day"}      -- Tempo para resetar a storage e receber novamente a recompensa
}

-- Para deixar mais organizado, jogar essas funções em LIB (se jogar em LIB, remover o local na frente de function)
-- Custom Functions (inicio)
local function mathtime(table) -- by dwarfer
local unit = {"sec", "min", "hour", "day"}
	for i, v in pairs(unit) do
		if v == table[2] then
			return table[1]*(60^(v == unit[4] and 2 or i-1))*(v == unit[4] and 24 or 1)
		end
	end

	return error("Bad declaration in mathtime function.")
end

local function getTimeString(self)
    local format = {
        {'dia', self / 60 / 60 / 24},
        {'hora', self / 60 / 60 % 24},
        {'minuto', self / 60 % 60},
        {'segundo', self % 60}
    }

    local out = {}
    for k, t in ipairs(format) do
        local v = math.floor(t[2])
        if(v > 0) then
            table.insert(out, (k < #format and (#out > 0 and ', ' or '') or ' e ') .. v .. ' ' .. t[1] .. (v ~= 1 and 's' or ''))
        end
    end
    local ret = table.concat(out)
    if ret:len() < 16 and ret:find('segundo') then
        local a, b = ret:find(' e ')
        ret = ret:sub(b+1)
    end
    return ret
end
-- Custom Functions (fim)


function onUse(cid, item, frompos, item2, topos)
	local sto_ativ, position = getGlobalStorageValue(config.storages[2]), getCreaturePosition(cid)
	if (isPlayerGuild(cid) == true) then
		if (sto_ativ == 1 or sto_ativ == -1) then
			guildname = getPlayerGuildName(cid)
			guild = getPlayerGuildId(cid)
			guild_sto = getGlobalStorageValue(config.storages[3])

			if (guild ~= guild_sto) then            
				setPlayerStorageValue(cid, guild_sto, guild)                      
				if (getPlayerStorageValue(cid, config.storages[1]) == -1) then
					setPlayerStorageValue(cid, config.storages[1], 0)
				end

				setGlobalStorageValue(config.storages[3], getPlayerGuildId(cid))
				setPlayerStorageValue(cid,config.storages[1], getPlayerStorageValue(cid, config.storages[1]) + 1)

				sto_vezes_total = getPlayerStorageValue(cid, config.storages[1])
				doBroadcastMessage("O(a) "..getCreatureName(cid).." acabou de conquistar o ".. config.castle_one_name .." para a guild \"".. guildname .."\" pela ".. sto_vezes_total .."ª vez(s).", 22)
				doSendMagicEffect(position, 39)  
				doRemoveItem(item.uid, 1)
				if (config.premio_por_vezes == 1) then
					if (getPlayerStorageValue(cid, config.storages[4]) - os.time() > 0) then
						doPlayerSendTextMessage(cid, 18, "Voce deve aguardar ".. getTimeString(getPlayerStorageValue(cid, config.storages[4]) - os.time()) .." para receber a recompensa novamente.")
						return true
					end

					if (getPlayerStorageValue(cid, config.storages[1]) == config.premio_vezes) then
						if (getItemWeightById(config.premio, 1) <= getPlayerFreeCap(cid)) then
							doBroadcastMessage("O ".. getCreatureName(cid) .." ganhou uma(o) ".. getItemNameById(config.premio) .." como recompensa das suas ".. config.premio_vezes .." conquistas!", 21)
							doPlayerAddItem(cid, config.premio, config.premio_cont)
							doPlayerSendTextMessage(cid, 18, "Voce recebeu o(a) ".. getItemNameById(config.premio) .." como recompensa das suas ".. config.premio_vezes .." conquistas!")
							if config.premio_reset == 1 then
								setPlayerStorageValue(cid,config.storages[1], 0)
							end

							setPlayerStorageValue(cid, config.storages[4], os.time() + mathtime(config.resetReward))
						else
							doPlayerSendTextMessage(cid, 18, "Voce nao tem capacidade para ganhar o item. Vamos verificar novamente em 10 segundos!")
							addEvent(additem, 10000, cid, config.premio, config.premio_cont, config.premio_reset)
						end
					end                                        
				end               
			else
				doBroadcastMessage("O(a) ".. getCreatureName(cid) .." acabou de conquistar o ".. config.castle_one_name .." para a guild \"".. guildname .."\" pela ".. sto_vezes_total .."ª vez(s).", 22)
				doSendMagicEffect(position, 39)  
			end
		else
			doPlayerSendCancel(cid, "O sistema está desativado")
		end      
	else
		doPlayerSendCancel(cid, "É nescessario ter guild para dominar o castelo!")
		doSendMagicEffect(position, 2)
	end
end

function additem(cid, config.premio, config.premio_cont, config.premio_reset)
	if (not isPlayer(cid)) then
		stopEvent(additem)
		return true
	end

	if (getItemWeightById(config.premio, 1) <= getPlayerFreeCap(cid)) then
		doPlayerAddItem(cid, config.premio, config.premio_cont)
		doPlayerSendTextMessage(cid, 18, "Voce recebeu o(a) ".. getItemNameById(config.premio) .." como recompensa das suas ".. config.premio_vezes .." conquistas!")
		if (config.premio_reset == 1) then
			setPlayerStorageValue(cid, config.storages[1], 0)
		end

		setPlayerStorageValue(cid, config.storages[4], os.time() + mathtime(config.resetReward))
		stopEvent(additem)
	else
		doPlayerSendTextMessage(cid, 18, "Voce nao tem capacidade para receber o item. Verificando novamente em 10 segundos!")
		addEvent(additem, 10000, cid)
	end
end

function isPlayerGuild(cid)
	if (getPlayerGuildName(cid) ~= "") then
		return true
	else
		return false
	end
end

 

ola, obrigado por  ajudar.

nao respondi antes pois estava sem teclado.

esse script uso ele em meu castle war, funciona mais ou menos assim:

ao matar o rei voce ganha sua crown e ao dar use nela a guild toda ganha a storage 123123

e com ela voce tem acesso ilimitado a uma porta, mas quando outra guild usa a crown ganha a storage  e

a primeira guild perde o acesso.

queria deixar essa storage tendo um tempo de 7 dias.

exemplo: o castle evento acontece aos domingos, quando eu ganhar a crown tenho direito de passar na porta ate o proximo sabado 

e ao completar 7 dias a storage some e para entrar novamente preciso de outra crown

entendeu melhor? 

 

script da porta:

Spoiler

  ---------------                                                   
-----BY PC98-------  
 ---------------                                                   

function onUse(cid, item, frompos, item2, topos) 

-------------------------Config-----------------------------------------------------------------

door_opened = 6899                             -- ID da porta aberta
storage_guild = getGlobalStorageValue(123123)  -- A 3ª storage configurada em Castle.lua

guarda_ativ = 0       -- Caso um invasor tente abrir a porta, sumonar o Monstro "Guarda"??  | (1) = SIM  (0) = NAO
guarda_cont = 2                                 -- Caso ativo: a quantidade de guardas a sumonar
guarda_pos = {x=549,y=133,y=7}                  -- Posiçao a ser sumonada os guardas!

-------------------------Fim de Config-----------------------------------------------------------


if getPlayerGuildId(cid) == storage_guild then
  doTeleportThing(cid,getThingPos(item.uid))
  doTransformItem(item.uid, door_opened)
  doPlayerSendTextMessage(cid, 22, "Seja bem vindo a vosso castelo!")   
  return TRUE
else
   if guarda_ativ == 1 then
      doPlayerSendTextMessage(cid, 22, "Guaaaardas, tirem esses invasores daqui!!")
       for i=1, guarda_cont do
           doSummonCreature("King Guard", guarda_pos)
       end
   return FALSE
   else
   doPlayerSendTextMessage(cid, 22, "Este castelo nao pertence a sua guild")
   return FALSE
   end
end
end

 

acabei de testar e deu esse erro

[Error - LuaScriptInterface::loadFile] data/actions/scripts/castlewar1.lua:111: ')' expected near '.'
[Warning - Event::loadScript] Cannot load script (data/actions/scripts/castlewar1.lua)
data/actions/scripts/castlewar1.lua:111: ')' expected near '.'

Editado por Carlinhous1996 (veja o histórico de edições)
Link para o post
Compartilhar em outros sites
Em 30/07/2022 em 14:18, Carlinhous1996 disse:

ola, obrigado por  ajudar.

nao respondi antes pois estava sem teclado.

esse script uso ele em meu castle war, funciona mais ou menos assim:

ao matar o rei voce ganha sua crown e ao dar use nela a guild toda ganha a storage 123123

e com ela voce tem acesso ilimitado a uma porta, mas quando outra guild usa a crown ganha a storage  e

a primeira guild perde o acesso.

queria deixar essa storage tendo um tempo de 7 dias.

exemplo: o castle evento acontece aos domingos, quando eu ganhar a crown tenho direito de passar na porta ate o proximo sabado 

e ao completar 7 dias a storage some e para entrar novamente preciso de outra crown

entendeu melhor? 

 

script da porta:

  Mostrar conteúdo oculto

  ---------------                                                   
-----BY PC98-------  
 ---------------                                                   

function onUse(cid, item, frompos, item2, topos) 

-------------------------Config-----------------------------------------------------------------

door_opened = 6899                             -- ID da porta aberta
storage_guild = getGlobalStorageValue(123123)  -- A 3ª storage configurada em Castle.lua

guarda_ativ = 0       -- Caso um invasor tente abrir a porta, sumonar o Monstro "Guarda"??  | (1) = SIM  (0) = NAO
guarda_cont = 2                                 -- Caso ativo: a quantidade de guardas a sumonar
guarda_pos = {x=549,y=133,y=7}                  -- Posiçao a ser sumonada os guardas!

-------------------------Fim de Config-----------------------------------------------------------


if getPlayerGuildId(cid) == storage_guild then
  doTeleportThing(cid,getThingPos(item.uid))
  doTransformItem(item.uid, door_opened)
  doPlayerSendTextMessage(cid, 22, "Seja bem vindo a vosso castelo!")   
  return TRUE
else
   if guarda_ativ == 1 then
      doPlayerSendTextMessage(cid, 22, "Guaaaardas, tirem esses invasores daqui!!")
       for i=1, guarda_cont do
           doSummonCreature("King Guard", guarda_pos)
       end
   return FALSE
   else
   doPlayerSendTextMessage(cid, 22, "Este castelo nao pertence a sua guild")
   return FALSE
   end
end
end

 

acabei de testar e deu esse erro

[Error - LuaScriptInterface::loadFile] data/actions/scripts/castlewar1.lua:111: ')' expected near '.'
[Warning - Event::loadScript] Cannot load script (data/actions/scripts/castlewar1.lua)
data/actions/scripts/castlewar1.lua:111: ')' expected near '.'

Desculpe meu erro.

Correção logo abaixo:
 

-- Created by pc98
-- Edited by xMonkey

local castle_one_name = "Castle",                  -- Nome do castelo 1
local storages = {154154,54321,123123, 123124},    -- Storages ( se vc eh iniciante, deixe como está...)

	-- REWARDS  I N D I V I D U A I S ---------
local premio_por_vezes = 1,         -- Premio por vezes de conquista de castelo. (1) = Ativo  (0) = Desativa. 
local premio_vezes = 3,             -- Caso ativo, a quantidade de conquista que o player tem, para ganhar PREMIO.
local premio = 10522,               -- ID do Premio
local premio_cont = 1,              -- Quantidade do Premio
local premio_reset = 1,             -- Resetar o contador do premio depois que atingir a meta?? (1) = SIM  (0) = NAO
local resetReward = {6, "day"}      -- Tempo para resetar a storage e receber novamente a recompensa

-- Para deixar mais organizado, jogar essas funções em LIB (se jogar em LIB, remover o local na frente de function)
-- Custom Functions (inicio)
local function mathtime(table) -- by dwarfer
local unit = {"sec", "min", "hour", "day"}
	for i, v in pairs(unit) do
		if v == table[2] then
			return table[1]*(60^(v == unit[4] and 2 or i-1))*(v == unit[4] and 24 or 1)
		end
	end

	return error("Bad declaration in mathtime function.")
end

local function getTimeString(self)
    local format = {
        {'dia', self / 60 / 60 / 24},
        {'hora', self / 60 / 60 % 24},
        {'minuto', self / 60 % 60},
        {'segundo', self % 60}
    }

    local out = {}
    for k, t in ipairs(format) do
        local v = math.floor(t[2])
        if(v > 0) then
            table.insert(out, (k < #format and (#out > 0 and ', ' or '') or ' e ') .. v .. ' ' .. t[1] .. (v ~= 1 and 's' or ''))
        end
    end
    local ret = table.concat(out)
    if ret:len() < 16 and ret:find('segundo') then
        local a, b = ret:find(' e ')
        ret = ret:sub(b+1)
    end
    return ret
end
-- Custom Functions (fim)


function onUse(cid, item, frompos, item2, topos)
	local sto_ativ, position = getGlobalStorageValue(storages[2]), getCreaturePosition(cid)
	if (isPlayerGuild(cid) == true) then
		if (sto_ativ == 1 or sto_ativ == -1) then
			guildname = getPlayerGuildName(cid)
			guild = getPlayerGuildId(cid)
			guild_sto = getGlobalStorageValue(storages[3])

			if (guild ~= guild_sto) then            
				setPlayerStorageValue(cid, guild_sto, guild)                      
				if (getPlayerStorageValue(cid, storages[1]) == -1) then
					setPlayerStorageValue(cid, storages[1], 0)
				end

				setGlobalStorageValue(storages[3], getPlayerGuildId(cid))
				setPlayerStorageValue(cid,storages[1], getPlayerStorageValue(cid, storages[1]) + 1)

				sto_vezes_total = getPlayerStorageValue(cid, storages[1])
				doBroadcastMessage("O(a) "..getCreatureName(cid).." acabou de conquistar o ".. castle_one_name .." para a guild \"".. guildname .."\" pela ".. sto_vezes_total .."ª vez(s).", 22)
				doSendMagicEffect(position, 39)  
				doRemoveItem(item.uid, 1)
				if (premio_por_vezes == 1) then
					if (getPlayerStorageValue(cid, storages[4]) - os.time() > 0) then
						doPlayerSendTextMessage(cid, 18, "Voce deve aguardar ".. getTimeString(getPlayerStorageValue(cid, storages[4]) - os.time()) .." para receber a recompensa novamente.")
						return true
					end

					if (getPlayerStorageValue(cid, storages[1]) == premio_vezes) then
						if (getItemWeightById(premio, 1) <= getPlayerFreeCap(cid)) then
							doBroadcastMessage("O ".. getCreatureName(cid) .." ganhou uma(o) ".. getItemNameById(premio) .." como recompensa das suas ".. premio_vezes .." conquistas!", 21)
							doPlayerAddItem(cid, premio, premio_cont)
							doPlayerSendTextMessage(cid, 18, "Voce recebeu o(a) ".. getItemNameById(premio) .." como recompensa das suas ".. premio_vezes .." conquistas!")
							if premio_reset == 1 then
								setPlayerStorageValue(cid,storages[1], 0)
							end

							setPlayerStorageValue(cid, storages[4], os.time() + mathtime(resetReward))
						else
							doPlayerSendTextMessage(cid, 18, "Voce nao tem capacidade para ganhar o item. Vamos verificar novamente em 10 segundos!")
							addEvent(additem, 10000, cid, premio, premio_cont, premio_reset)
						end
					end                                        
				end               
			else
				doBroadcastMessage("O(a) ".. getCreatureName(cid) .." acabou de conquistar o ".. castle_one_name .." para a guild \"".. guildname .."\" pela ".. sto_vezes_total .."ª vez(s).", 22)
				doSendMagicEffect(position, 39)  
			end
		else
			doPlayerSendCancel(cid, "O sistema está desativado")
		end      
	else
		doPlayerSendCancel(cid, "É nescessario ter guild para dominar o castelo!")
		doSendMagicEffect(position, 2)
	end
end

function additem(cid, premio, premio_cont, premio_reset)
	if (not isPlayer(cid)) then
		stopEvent(additem)
		return true
	end

	if (getItemWeightById(premio, 1) <= getPlayerFreeCap(cid)) then
		doPlayerAddItem(cid, premio, premio_cont)
		doPlayerSendTextMessage(cid, 18, "Voce recebeu o(a) ".. getItemNameById(premio) .." como recompensa das suas ".. premio_vezes .." conquistas!")
		if (premio_reset == 1) then
			setPlayerStorageValue(cid, storages[1], 0)
		end

		setPlayerStorageValue(cid, storages[4], os.time() + mathtime(resetReward))
		stopEvent(additem)
	else
		doPlayerSendTextMessage(cid, 18, "Voce nao tem capacidade para receber o item. Verificando novamente em 10 segundos!")
		addEvent(additem, 10000, cid)
	end
end

function isPlayerGuild(cid)
	if (getPlayerGuildName(cid) ~= "") then
		return true
	else
		return false
	end
end

 

Link para o post
Compartilhar em outros sites
Em 31/07/2022 em 20:24, xMonkey disse:

Desculpe meu erro.

Correção logo abaixo:
 


-- Created by pc98
-- Edited by xMonkey

local castle_one_name = "Castle",                  -- Nome do castelo 1
local storages = {154154,54321,123123, 123124},    -- Storages ( se vc eh iniciante, deixe como está...)

	-- REWARDS  I N D I V I D U A I S ---------
local premio_por_vezes = 1,         -- Premio por vezes de conquista de castelo. (1) = Ativo  (0) = Desativa. 
local premio_vezes = 3,             -- Caso ativo, a quantidade de conquista que o player tem, para ganhar PREMIO.
local premio = 10522,               -- ID do Premio
local premio_cont = 1,              -- Quantidade do Premio
local premio_reset = 1,             -- Resetar o contador do premio depois que atingir a meta?? (1) = SIM  (0) = NAO
local resetReward = {6, "day"}      -- Tempo para resetar a storage e receber novamente a recompensa

-- Para deixar mais organizado, jogar essas funções em LIB (se jogar em LIB, remover o local na frente de function)
-- Custom Functions (inicio)
local function mathtime(table) -- by dwarfer
local unit = {"sec", "min", "hour", "day"}
	for i, v in pairs(unit) do
		if v == table[2] then
			return table[1]*(60^(v == unit[4] and 2 or i-1))*(v == unit[4] and 24 or 1)
		end
	end

	return error("Bad declaration in mathtime function.")
end

local function getTimeString(self)
    local format = {
        {'dia', self / 60 / 60 / 24},
        {'hora', self / 60 / 60 % 24},
        {'minuto', self / 60 % 60},
        {'segundo', self % 60}
    }

    local out = {}
    for k, t in ipairs(format) do
        local v = math.floor(t[2])
        if(v > 0) then
            table.insert(out, (k < #format and (#out > 0 and ', ' or '') or ' e ') .. v .. ' ' .. t[1] .. (v ~= 1 and 's' or ''))
        end
    end
    local ret = table.concat(out)
    if ret:len() < 16 and ret:find('segundo') then
        local a, b = ret:find(' e ')
        ret = ret:sub(b+1)
    end
    return ret
end
-- Custom Functions (fim)


function onUse(cid, item, frompos, item2, topos)
	local sto_ativ, position = getGlobalStorageValue(storages[2]), getCreaturePosition(cid)
	if (isPlayerGuild(cid) == true) then
		if (sto_ativ == 1 or sto_ativ == -1) then
			guildname = getPlayerGuildName(cid)
			guild = getPlayerGuildId(cid)
			guild_sto = getGlobalStorageValue(storages[3])

			if (guild ~= guild_sto) then            
				setPlayerStorageValue(cid, guild_sto, guild)                      
				if (getPlayerStorageValue(cid, storages[1]) == -1) then
					setPlayerStorageValue(cid, storages[1], 0)
				end

				setGlobalStorageValue(storages[3], getPlayerGuildId(cid))
				setPlayerStorageValue(cid,storages[1], getPlayerStorageValue(cid, storages[1]) + 1)

				sto_vezes_total = getPlayerStorageValue(cid, storages[1])
				doBroadcastMessage("O(a) "..getCreatureName(cid).." acabou de conquistar o ".. castle_one_name .." para a guild \"".. guildname .."\" pela ".. sto_vezes_total .."ª vez(s).", 22)
				doSendMagicEffect(position, 39)  
				doRemoveItem(item.uid, 1)
				if (premio_por_vezes == 1) then
					if (getPlayerStorageValue(cid, storages[4]) - os.time() > 0) then
						doPlayerSendTextMessage(cid, 18, "Voce deve aguardar ".. getTimeString(getPlayerStorageValue(cid, storages[4]) - os.time()) .." para receber a recompensa novamente.")
						return true
					end

					if (getPlayerStorageValue(cid, storages[1]) == premio_vezes) then
						if (getItemWeightById(premio, 1) <= getPlayerFreeCap(cid)) then
							doBroadcastMessage("O ".. getCreatureName(cid) .." ganhou uma(o) ".. getItemNameById(premio) .." como recompensa das suas ".. premio_vezes .." conquistas!", 21)
							doPlayerAddItem(cid, premio, premio_cont)
							doPlayerSendTextMessage(cid, 18, "Voce recebeu o(a) ".. getItemNameById(premio) .." como recompensa das suas ".. premio_vezes .." conquistas!")
							if premio_reset == 1 then
								setPlayerStorageValue(cid,storages[1], 0)
							end

							setPlayerStorageValue(cid, storages[4], os.time() + mathtime(resetReward))
						else
							doPlayerSendTextMessage(cid, 18, "Voce nao tem capacidade para ganhar o item. Vamos verificar novamente em 10 segundos!")
							addEvent(additem, 10000, cid, premio, premio_cont, premio_reset)
						end
					end                                        
				end               
			else
				doBroadcastMessage("O(a) ".. getCreatureName(cid) .." acabou de conquistar o ".. castle_one_name .." para a guild \"".. guildname .."\" pela ".. sto_vezes_total .."ª vez(s).", 22)
				doSendMagicEffect(position, 39)  
			end
		else
			doPlayerSendCancel(cid, "O sistema está desativado")
		end      
	else
		doPlayerSendCancel(cid, "É nescessario ter guild para dominar o castelo!")
		doSendMagicEffect(position, 2)
	end
end

function additem(cid, premio, premio_cont, premio_reset)
	if (not isPlayer(cid)) then
		stopEvent(additem)
		return true
	end

	if (getItemWeightById(premio, 1) <= getPlayerFreeCap(cid)) then
		doPlayerAddItem(cid, premio, premio_cont)
		doPlayerSendTextMessage(cid, 18, "Voce recebeu o(a) ".. getItemNameById(premio) .." como recompensa das suas ".. premio_vezes .." conquistas!")
		if (premio_reset == 1) then
			setPlayerStorageValue(cid, storages[1], 0)
		end

		setPlayerStorageValue(cid, storages[4], os.time() + mathtime(resetReward))
		stopEvent(additem)
	else
		doPlayerSendTextMessage(cid, 18, "Voce nao tem capacidade para receber o item. Verificando novamente em 10 segundos!")
		addEvent(additem, 10000, cid)
	end
end

function isPlayerGuild(cid)
	if (getPlayerGuildName(cid) ~= "") then
		return true
	else
		return false
	end
end

 

estou usando esse script em actions com o item 2128

mas nao consigo mais da use no item.

sumiu todos os erros na distro.

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 braianlomas
      Como faço para corrigir esse problema para meu cliente, eu uso o tfs 0.3.6  
      Quero resolver esse problema que tenho no meu cliente, como e onde posso resolver?  
      Eu uso o tfs 0.3.6, não tenho as fontes do cliente, se você puder me dar eu vou amá-las para sempre  
       

       
    • Por A.Mokk
      Ola pessoal, estou tentando compilar o TFS 1.5 Downgrade para 8.60 atraves do MSVC 2022, ao tentar compilar da o seguinte erro:
       
       
      Fiz o download do MSVC, GitDash, TFS-SDK-3.2, e de varios boosts que tentei, ao fazer o seguinte procedimento no GitDash:
       
      Ao chegar em ./bootstrap-vcpkg.bat o GitDash nao consegue realizar o procedimento corretamente, alguem poderia me ajudar ?

      Tentei de diversas formas mas o mesmo erro sempre persiste, atualmente meu servidor utiliza TFS 0.4, consigo compilar sem nenhum problema no MSVC 2010, porem, as limitações do TFS 0.4 estão me fazendo precisar atualizar, se alguem souber como corrigir esses erros eu agradeço !

      Tutoriais utilizados :
      Compiling on Windows (vcpkg) · otland/forgottenserver Wiki · GitHub
      Compiling on Windows · otland/forgottenserver Wiki · GitHub
      Compilando TFS 1.3 com vídeo-aula - Tutoriais Infraestrutura & Proteção - Tibia King - Tudo sobre Tibia, OTServ e Bots!
      Compilar TFS 1.3 Vcpkg - Tutoriais Infraestrutura & Proteção - Tibia King - Tudo sobre Tibia, OTServ e Bots!
       
      O que acontece no Powershell:
       
    • Por thunmin
      .Qual servidor ou website você utiliza como base? 
      Canary 2.3.6
      Qual o motivo deste tópico? 
      Queria fazer com que os players não pudessem mexer no aleta sio, pois, agora os mesmos estão conseguindo mexer nos itens
      Está surgindo algum erro? Se sim coloque-o aqui. 
       
      Você tem o código disponível? Se tiver publique-o aqui: 
         
      Você tem alguma imagem que possa auxiliar no problema? Se sim, coloque-a aqui. 
       
    • Por thunmin
      .Qual servidor ou website você utiliza como base? 
      canary para o cliente 13.16
      Qual o motivo deste tópico? 
      Não consigo encontrar onde ajusta
      to com o problema no 13.16  o exausted, por exemplo os kinas era pra combar exori, erori gran e exori min, porém não ta indo ta dando exausted o char ta soltando magia ou runa e não consegue usar as potions
      Está surgindo algum erro? Se sim coloque-o aqui. 
       
      Você tem o código disponível? Se tiver publique-o aqui: 
         
      Você tem alguma imagem que possa auxiliar no problema? Se sim, coloque-a aqui. 
       
    • Por Andersontatuador
      Olá galera da TK, me chamo Anderson estou procurando alguém profissional em otservs e site.
      Já tenho um servidor o site e o cliente preciso só de uma pessoal competente, que esteja empenhado a trabalhar,
      não quero nada de graça, pois nessa onda fui mais roubado do quer eu pagar um profissional.
      caso alguém se interesse entrar em contato comigo através do whatsapp
      82 9 9304-9462
       
      Está surgindo algum erro? Se sim coloque-o aqui. 
       
      Você tem o código disponível? Se tiver publique-o aqui: 
         
      Você tem alguma imagem que possa auxiliar no problema? Se sim, coloque-a aqui. 
       
×
×
  • Criar Novo...

Informação Importante

Confirmação de Termo