Postado Junho 19, 2023 1 ano Autor Em 17/06/2023 em 04:24, L3K0T disse: Se puder poste a solução para ajudar as outras pessoas Vou fazer um resumo pq precisaria criar um tutorial ou post pois envolve varias modificações; Basicamente é necessário criar um script com a função "onGainExp", que esse script tera a condição se a xp vier de players nesse mesmo script setar o storage value para cada morte baseado na ID (getGuid) do player. dai vem a condição de controlar a quantidade de kills assim que ele ganhe exp de players (a cada ganho de xp um storage value). logo se acontecer de chegar o limite configurada, exp = 0 No caso do "reset" eu peguei o proprio "autoSave" e coloquei a função em SQL para setar = 0 o storageValue que estiver no range (BEETWEEN X AND Y). e colocar o intervalo de 4 horas, por exemplo. PS¹: é necessario habilitar no config.lua "expfromplayers" e colocar um rage elevado (ex: 200) e depois no script "onGainExp" que será feitas as modificações das condições para ganhar exp. PS²: desisti de tentar criar com a função "onkill" pq se houvessem mais de 1 ou varios players batendo a exp era apenas para quem "ganhava a kill". Em breve poderei postar, Talvez eu poste minhas configs e modificações num server completo, caso alguém queria deixar ele online. Abraço!
Postado Junho 20, 2023 1 ano Diretor 12 horas atrás, jcfd.joao disse: Vou fazer um resumo pq precisaria criar um tutorial ou post pois envolve varias modificações; Basicamente é necessário criar um script com a função "onGainExp", que esse script tera a condição se a xp vier de players nesse mesmo script setar o storage value para cada morte baseado na ID (getGuid) do player. dai vem a condição de controlar a quantidade de kills assim que ele ganhe exp de players (a cada ganho de xp um storage value). logo se acontecer de chegar o limite configurada, exp = 0 No caso do "reset" eu peguei o proprio "autoSave" e coloquei a função em SQL para setar = 0 o storageValue que estiver no range (BEETWEEN X AND Y). e colocar o intervalo de 4 horas, por exemplo. PS¹: é necessario habilitar no config.lua "expfromplayers" e colocar um rage elevado (ex: 200) e depois no script "onGainExp" que será feitas as modificações das condições para ganhar exp. PS²: desisti de tentar criar com a função "onkill" pq se houvessem mais de 1 ou varios players batendo a exp era apenas para quem "ganhava a kill". Em breve poderei postar, Talvez eu poste minhas configs e modificações num server completo, caso alguém queria deixar ele online. Abraço! Pensei nisso complexo local function getPlayerKills(player) local killsStorage = 1000 -- StorageValue para armazenar as mortes do jogador return player:getStorageValue(killsStorage) end local function setPlayerKills(player, kills) local killsStorage = 1000 -- StorageValue para armazenar as mortes do jogador player:setStorageValue(killsStorage, kills) end function onGainExp(player, exp, fromPlayer) local maxKills = 10 -- Número máximo de kills permitidas antes de zerar a experiência local expStorage = 2000 -- StorageValue para armazenar a experiência do jogador local fragid = 3000 -- StorageValue para armazenar o contador de frags local timeFrag = 4000 -- StorageValue para armazenar o tempo do último frag local requiredFrags = 3 -- Número mínimo de frags necessários para ativar o evento -- Verifica se o jogador possui frags suficientes e se a experiência é maior que zero if player:getStorageValue(fragid) >= requiredFrags and exp > 0 then local currentExp = player:getStorageValue(expStorage) local currentKills = getPlayerKills(player) -- Verifica se o jogador atingiu o limite de kills if currentKills >= maxKills then return 0 -- Retorna 0 para zerar a experiência ganha else -- Atualiza o número de kills e a experiência do jogador setPlayerKills(player, currentKills + 1) player:setStorageValue(expStorage, currentExp + exp) end end return exp -- Retorna a experiência atualizada end function onLogin(player) local resetInterval = 4 * 60 * 60 -- Intervalo de reset em segundos (4 horas) local lastResetStorage = 3000 -- StorageValue para armazenar o último reset local fragid = 3000 -- StorageValue para armazenar o contador de frags local timeFrag = 4000 -- StorageValue para armazenar o tempo do último frag local timeThreshold = 2 * 60 * 60 -- Tempo em segundos para reiniciar o contador de frags local requiredFrags = 3 -- Número mínimo de frags necessários para ativar o evento -- Verifica se já passou o intervalo de reset desde o último login local lastReset = player:getStorageValue(lastResetStorage) local currentTime = os.time() if lastReset ~= nil and currentTime - lastReset >= resetInterval then -- Realiza o reset do número de kills e a experiência do jogador setPlayerKills(player, 0) player:setStorageValue(expStorage, 0) player:setStorageValue(lastResetStorage, currentTime) end -- Verifica se já passaram 2 horas desde o último frag local lastFrag = player:getStorageValue(timeFrag) if lastFrag ~= nil and currentTime - lastFrag >= timeThreshold then player:setStorageValue(fragid, 0) -- Reinicia o contador de frags end -- Verifica se o jogador possui frags suficientes ao fazer o login if player:getStorageValue(fragid) < requiredFrags then player:setStorageValue(fragid, 0) -- Zera o contador de frags end end -- Registra os eventos registerCreatureEvent(cid, "onGainExp") registerCreatureEvent(cid, "onLogin") <event type="gainExperience" name="onGainExp" event="script" value="scripts/gainexp.lua"/> <event type="login" name="onLogin" event="script" value="scripts/login.lua"/> Eu sou um entusiasta da programação apaixonado por ajudar a comunidade open source a crescer. Sempre em busca de novos desafios e oportunidades para contribuir com meu código. #OpenSource #Programação #Contribuição
Postado Junho 20, 2023 1 ano Autor 10 horas atrás, L3K0T disse: Pensei nisso complexo local function getPlayerKills(player) local killsStorage = 1000 -- StorageValue para armazenar as mortes do jogador return player:getStorageValue(killsStorage) end local function setPlayerKills(player, kills) local killsStorage = 1000 -- StorageValue para armazenar as mortes do jogador player:setStorageValue(killsStorage, kills) end function onGainExp(player, exp, fromPlayer) local maxKills = 10 -- Número máximo de kills permitidas antes de zerar a experiência local expStorage = 2000 -- StorageValue para armazenar a experiência do jogador local fragid = 3000 -- StorageValue para armazenar o contador de frags local timeFrag = 4000 -- StorageValue para armazenar o tempo do último frag local requiredFrags = 3 -- Número mínimo de frags necessários para ativar o evento -- Verifica se o jogador possui frags suficientes e se a experiência é maior que zero if player:getStorageValue(fragid) >= requiredFrags and exp > 0 then local currentExp = player:getStorageValue(expStorage) local currentKills = getPlayerKills(player) -- Verifica se o jogador atingiu o limite de kills if currentKills >= maxKills then return 0 -- Retorna 0 para zerar a experiência ganha else -- Atualiza o número de kills e a experiência do jogador setPlayerKills(player, currentKills + 1) player:setStorageValue(expStorage, currentExp + exp) end end return exp -- Retorna a experiência atualizada end function onLogin(player) local resetInterval = 4 * 60 * 60 -- Intervalo de reset em segundos (4 horas) local lastResetStorage = 3000 -- StorageValue para armazenar o último reset local fragid = 3000 -- StorageValue para armazenar o contador de frags local timeFrag = 4000 -- StorageValue para armazenar o tempo do último frag local timeThreshold = 2 * 60 * 60 -- Tempo em segundos para reiniciar o contador de frags local requiredFrags = 3 -- Número mínimo de frags necessários para ativar o evento -- Verifica se já passou o intervalo de reset desde o último login local lastReset = player:getStorageValue(lastResetStorage) local currentTime = os.time() if lastReset ~= nil and currentTime - lastReset >= resetInterval then -- Realiza o reset do número de kills e a experiência do jogador setPlayerKills(player, 0) player:setStorageValue(expStorage, 0) player:setStorageValue(lastResetStorage, currentTime) end -- Verifica se já passaram 2 horas desde o último frag local lastFrag = player:getStorageValue(timeFrag) if lastFrag ~= nil and currentTime - lastFrag >= timeThreshold then player:setStorageValue(fragid, 0) -- Reinicia o contador de frags end -- Verifica se o jogador possui frags suficientes ao fazer o login if player:getStorageValue(fragid) < requiredFrags then player:setStorageValue(fragid, 0) -- Zera o contador de frags end end -- Registra os eventos registerCreatureEvent(cid, "onGainExp") registerCreatureEvent(cid, "onLogin") <event type="gainExperience" name="onGainExp" event="script" value="scripts/gainexp.lua"/> <event type="login" name="onLogin" event="script" value="scripts/login.lua"/> MUITO BOM. eu manjo pouco de scripts/programação. no meu caso, eu pego sempre o que ja esta pronto e faço modificações a partir dali. pq sempre leio o que esta dentro e a imaginação flui. cada vez que abro um script que ja existe as ideias fluem, até armadura que reflete o dano estou conseguindo fazer. kkkkkkkkkkkk controle de damage por diferença de lvl (para +)., etc, etc vc foi muito bom em criar esse do zero, parabéns. só nao consigo dizer pra vc se tem erro ou nao pq eu uso o tfs diferente desse que vc postou... um abraço!
Postado Junho 21, 2023 1 ano Diretor 11 horas atrás, jcfd.joao disse: MUITO BOM. eu manjo pouco de scripts/programação. no meu caso, eu pego sempre o que ja esta pronto e faço modificações a partir dali. pq sempre leio o que esta dentro e a imaginação flui. cada vez que abro um script que ja existe as ideias fluem, até armadura que reflete o dano estou conseguindo fazer. kkkkkkkkkkkk controle de damage por diferença de lvl (para +)., etc, etc vc foi muito bom em criar esse do zero, parabéns. só nao consigo dizer pra vc se tem erro ou nao pq eu uso o tfs diferente desse que vc postou... um abraço! Qual tfs, ele é pra tfs 1.3 Eu sou um entusiasta da programação apaixonado por ajudar a comunidade open source a crescer. Sempre em busca de novos desafios e oportunidades para contribuir com meu código. #OpenSource #Programação #Contribuição
Postado Junho 21, 2023 1 ano Autor 11 horas atrás, L3K0T disse: Qual tfs, ele é pra tfs 1.3 é 1.3 tbm, desculpa. eu que não notei que era o mesmo. mas vc está precisando dessa configuração no seu ot ou ainda esta tentando me ajudar?
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.