Ir para conteúdo

Featured Replies

Postado

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

 

  • 3 weeks later...
Postado

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

 

  • 2 weeks later...
Postado
  • Autor
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)

Postado
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

 

Postado
  • Autor
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.

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

Quem Está Navegando 0

  • Nenhum usuário registrado visualizando esta página.

Estatísticas dos Fóruns

  • Tópicos 96.9k
  • Posts 519.6k

Informação Importante

Confirmação de Termo