Postado Julho 2, 2022 2 anos 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
Postado Julho 22, 2022 2 anos 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
Postado Julho 30, 2022 2 anos 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 Julho 30, 2022 2 anos por Carlinhous1996 (veja o histórico de edições)
Postado Julho 31, 2022 2 anos 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 Agosto 6, 2022 2 anos 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.