cs007 13 Postado Outubro 15, 2013 Share Postado Outubro 15, 2013 (editado) Bom galera nunca fiz tal script, o que eu queria é assim.... 1° Ele vai alterar o config.lua na "exp" 2° De 10 em 10 minutos ele vai alterar o config.lua e dar /reload 3° Um arquivo em txt ou em .lua onde vai está as exp que vai mudar de tanta em tanta horas... Não sei se ficou bem explicado essa alteração não precisa ter limites eu mesmo posso configurar... Abraço pessoal... Editado Outubro 15, 2013 por cs007 Link para o comentário https://xtibia.com/forum/topic/222676-globalevents-modificar-exp-e-atualizar/ Compartilhar em outros sites More sharing options...
0 jefersonzc 2 Postado Outubro 15, 2013 Share Postado Outubro 15, 2013 Bom.... posso estar falando besteira, mas acho que o que você quer é um pouco inviável de ser feito do modo como você explicou. Você quer um script que altere o conteúdo do config.lua, mas para isso ele deveria saber exatamente qual linha alterar, ou seja, ele teria que carregar o confi.lua, mudar a linha e salvar novamente. Tá, até ai acho viável, complicado porém viável. Mas a parte de "reload"... bom, para que as alterações do config.lua entrassem em execução, creio que seria necessário reiniciar o servidor. Agora imagine que seu servidor esteja rodando e junto com ele esse script que vc precisa, então este script fecha o serve (para o tal reload), agora como ele conseguiria abrir o servidor novamente? Afinal, ele foi fechado junto com o servidor, portanto não está mais em execução. Bom, como disse, posso ter falado besteira. Então, alguém me corrija se eu estiver errado ^^ Agora, talvez exista alguma maneira de mudar a xp a cada hora, mas sem ser por esse caminho que vc imaginou. Só que infelizmente nunca vi. Link para o comentário https://xtibia.com/forum/topic/222676-globalevents-modificar-exp-e-atualizar/#findComment-1572687 Compartilhar em outros sites More sharing options...
0 cs007 13 Postado Outubro 15, 2013 Autor Share Postado Outubro 15, 2013 Bom, algumas opções do config.lua tem como dar o comando /reload que ele aceita, sem necessidade de fechar o server o globalevents que executa o reload eu já tenho, falta a função de modificar o config.lua... Abraço Link para o comentário https://xtibia.com/forum/topic/222676-globalevents-modificar-exp-e-atualizar/#findComment-1572693 Compartilhar em outros sites More sharing options...
0 jefersonzc 2 Postado Outubro 15, 2013 Share Postado Outubro 15, 2013 Dessa eu não sabia Link para o comentário https://xtibia.com/forum/topic/222676-globalevents-modificar-exp-e-atualizar/#findComment-1572698 Compartilhar em outros sites More sharing options...
0 cs007 13 Postado Outubro 20, 2013 Autor Share Postado Outubro 20, 2013 Mais ninguém? Ninguém sabe como editar o config.lua com um script? Link para o comentário https://xtibia.com/forum/topic/222676-globalevents-modificar-exp-e-atualizar/#findComment-1574237 Compartilhar em outros sites More sharing options...
0 fitaisolante 24 Postado Outubro 20, 2013 Share Postado Outubro 20, 2013 (editado) jeferson, não precisa modificar o config lua, e sim a rate global.. fiz uma coisinha rapida aqui: em globalevents.xml coloque: <globalevent name="ChangeExp" interval="1800" event="script" value="changeexp.lua"/> interval="1800" é 30 min, lembrando que se seu server for 0.4, tem que trocar por 1800000 em scripts crie um arquivo chamado changeexp.lua e coloque isso dentro: local p = {5, 10, 15, 20, 30} function onThink(interval, lastExecution, thinkInterval) for _, tid in pairs(getPlayersOnline()) do doPlayerSetExperienceRate(tid, p[math.random(1, #p)]) end end return doBroadcastMessage("A rate do servidor foi trocada, confira dizendo !serverinfo.", 22) end o local p = {5, 10, 15, 20, 30} são as rates que podem mudar no seu servidor, você pode mudar esses valores.. Lembrando que a exp só muda para quem tá online... (a exp é sorteada) Editado Outubro 20, 2013 por Keilost Link para o comentário https://xtibia.com/forum/topic/222676-globalevents-modificar-exp-e-atualizar/#findComment-1574325 Compartilhar em outros sites More sharing options...
0 cs007 13 Postado Outubro 22, 2013 Autor Share Postado Outubro 22, 2013 jeferson, não precisa modificar o config lua, e sim a rate global.. fiz uma coisinha rapida aqui: em globalevents.xml coloque: <globalevent name="ChangeExp" interval="1800" event="script" value="changeexp.lua"/> interval="1800" é 30 min, lembrando que se seu server for 0.4, tem que trocar por 1800000 em scripts crie um arquivo chamado changeexp.lua e coloque isso dentro: local p = {5, 10, 15, 20, 30} function onThink(interval, lastExecution, thinkInterval) for _, tid in pairs(getPlayersOnline()) do doPlayerSetExperienceRate(tid, p[math.random(1, #p)]) end end return doBroadcastMessage("A rate do servidor foi trocada, confira dizendo !serverinfo.", 22) end o local p = {5, 10, 15, 20, 30} são as rates que podem mudar no seu servidor, você pode mudar esses valores.. Lembrando que a exp só muda para quem tá online... (a exp é sorteada) REP+ para ti lek... mas eu queria assim. 12:00h a 13:00h fosse um exp 13:00h a 14:00h fosse outro exp não á como modificar no config? Abração up Link para o comentário https://xtibia.com/forum/topic/222676-globalevents-modificar-exp-e-atualizar/#findComment-1574685 Compartilhar em outros sites More sharing options...
0 Omega 377 Postado Outubro 22, 2013 Share Postado Outubro 22, 2013 Tenta esse aqui: na tabela você coloca a hora que você quer dentro dos colchetes e a experiência que vai mudar depois do igual. Coloca o global event pra rodar a cada 1min, mas faça um backup do seu config.lua antes. local expTable = { -- [hora] = experiência [12] = 30, [13] = 25, [14] = 35, } function onThink() if getGlobalStorageValue(7641) < os.time() then local newExp = false setGlobalStorageValue(7641, os.time() + 3600) for hour, exp in pairs(expTable) do if tonumber(hour) == tonumber(os.date("%H")) then newExp = exp break end end if not newExp then return true end local file = io.open("config.lua", "r") local content = file:read("*a") local tmp = string.explode(content, "\n") file:close() for line, str in pairs(tmp) do if string.find(str, "rateExperience") then tmp[line] = " rateExperience = "..newExp break end end local file = io.open("config.lua", "w+") file:write(table.concat(tmp, "\n")) file:close() doReloadInfo(RELOAD_CONFIG) end return true end Link para o comentário https://xtibia.com/forum/topic/222676-globalevents-modificar-exp-e-atualizar/#findComment-1575005 Compartilhar em outros sites More sharing options...
0 cs007 13 Postado Outubro 22, 2013 Autor Share Postado Outubro 22, 2013 Tenta esse aqui: na tabela você coloca a hora que você quer dentro dos colchetes e a experiência que vai mudar depois do igual. Coloca o global event pra rodar a cada 1min, mas faça um backup do seu config.lua antes. local expTable = { -- [hora] = experiência [12] = 30, [13] = 25, [14] = 35, } function onThink() if getGlobalStorageValue(7641) < os.time() then local newExp = false setGlobalStorageValue(7641, os.time() + 3600) for hour, exp in pairs(expTable) do if tonumber(hour) == tonumber(os.date("%H")) then newExp = exp break end end if not newExp then return true end local file = io.open("config.lua", "r") local content = file:read("*a") local tmp = string.explode(content, "\n") file:close() for line, str in pairs(tmp) do if string.find(str, "rateExperience") then tmp[line] = " rateExperience = "..newExp break end end local file = io.open("config.lua", "w+") file:write(table.concat(tmp, "\n")) file:close() doReloadInfo(RELOAD_CONFIG) end return true end Ainda estou testando aqui lek... Mas eu posso por minutos também? Não é por mal não é que assim eu só posso testar de hora em hora =/ mesmo assim REP+ Link para o comentário https://xtibia.com/forum/topic/222676-globalevents-modificar-exp-e-atualizar/#findComment-1575164 Compartilhar em outros sites More sharing options...
0 fitaisolante 24 Postado Outubro 22, 2013 Share Postado Outubro 22, 2013 Eu vo fazer a modificação no meu, e já faço um melhoramento no código por creaturescripts.. É que leva um tempinho para pensar na lógica rsrs.. Link para o comentário https://xtibia.com/forum/topic/222676-globalevents-modificar-exp-e-atualizar/#findComment-1575176 Compartilhar em outros sites More sharing options...
0 cs007 13 Postado Outubro 22, 2013 Autor Share Postado Outubro 22, 2013 (editado) Eu vo fazer a modificação no meu, e já faço um melhoramento no código por creaturescripts.. É que leva um tempinho para pensar na lógica rsrs.. Valeu @Keilost... creio que o do @omega esteja bom é só por os minutos também...Não consegui testar tudo pois tem que deixar ligado 1 hora..rs esqueci desse detalhe Mesmo assim obrigado a vocês Editado Outubro 22, 2013 por cs007 Link para o comentário https://xtibia.com/forum/topic/222676-globalevents-modificar-exp-e-atualizar/#findComment-1575186 Compartilhar em outros sites More sharing options...
0 Omega 377 Postado Outubro 23, 2013 Share Postado Outubro 23, 2013 function onSay() local newExp = 30 local file = io.open("config.lua", "r") local content = file:read("*a") local tmp = string.explode(content, "\n") file:close() for line, str in pairs(tmp) do if string.find(str, "rateExperience") then tmp[line] = " rateExperience = "..newExp break end end local file = io.open("config.lua", "w+") file:write(table.concat(tmp, "\n")) file:close() doReloadInfo(RELOAD_CONFIG) return true end Testa esse como talkaction e vê se funciona. É só trocar o newExp. Se funcionar esse, 99% de chance de funcionar o globalevent. Link para o comentário https://xtibia.com/forum/topic/222676-globalevents-modificar-exp-e-atualizar/#findComment-1575293 Compartilhar em outros sites More sharing options...
0 cs007 13 Postado Outubro 23, 2013 Autor Share Postado Outubro 23, 2013 (editado) function onSay() local newExp = 30 local file = io.open("config.lua", "r") local content = file:read("*a") local tmp = string.explode(content, "\n") file:close() for line, str in pairs(tmp) do if string.find(str, "rateExperience") then tmp[line] = " rateExperience = "..newExp break end end local file = io.open("config.lua", "w+") file:write(table.concat(tmp, "\n")) file:close() doReloadInfo(RELOAD_CONFIG) return true end Testa esse como talkaction e vê se funciona. É só trocar o newExp. Se funcionar esse, 99% de chance de funcionar o globalevent. @Valeu lek... o Globalevents funcionou mas para rodar tem que por a hora no globalevents.xml não tem como por para mudar com interval e por minutos também? sem querer abusar da sua boa vontade Obrigado por está me ajudando Editado Outubro 23, 2013 por cs007 Link para o comentário https://xtibia.com/forum/topic/222676-globalevents-modificar-exp-e-atualizar/#findComment-1575302 Compartilhar em outros sites More sharing options...
0 Snowsz 23 Postado Outubro 23, 2013 Share Postado Outubro 23, 2013 (editado) function onSay() local newExp = 30 local file = io.open("config.lua", "r") local content = file:read("*a") local tmp = string.explode(content, "\n") file:close() for line, str in pairs(tmp) do if string.find(str, "rateExperience") then tmp[line] = " rateExperience = "..newExp break end end local file = io.open("config.lua", "w+") file:write(table.concat(tmp, "\n")) file:close() doReloadInfo(RELOAD_CONFIG) return true end Testa esse como talkaction e vê se funciona. É só trocar o newExp. Se funcionar esse, 99% de chance de funcionar o globalevent. @Valeu lek... o Globalevents funcionou mas para rodar tem que por a hora no globalevents.xml não tem como por para mudar com interval e por minutos também? sem querer abusar da sua boa vontade Obrigado por está me ajudando Não testei nem nada, mais acho q assim funciona, n sei mexer com %d,%m,%s etc... mais acho q assim funciona local expTable = { -- [minutos] = experiência [12] = 30, [13] = 25, [14] = 35, } function onThink() if getGlobalStorageValue(7641) < os.time() then local newExp = false setGlobalStorageValue(7641, os.time() + 60) for hour, exp in pairs(expTable) do if tonumber(hour) == tonumber(os.date("%M")) then newExp = exp break end end if not newExp then return true end local file = io.open("config.lua", "r") local content = file:read("*a") local tmp = string.explode(content, "\n") file:close() for line, str in pairs(tmp) do if string.find(str, "rateExperience") then tmp[line] = " rateExperience = "..newExp break end end local file = io.open("config.lua", "w+") file:write(table.concat(tmp, "\n")) file:close() doReloadInfo(RELOAD_CONFIG) end return true end . Editado Outubro 23, 2013 por Snowsz Link para o comentário https://xtibia.com/forum/topic/222676-globalevents-modificar-exp-e-atualizar/#findComment-1575320 Compartilhar em outros sites More sharing options...
0 cs007 13 Postado Outubro 23, 2013 Autor Share Postado Outubro 23, 2013 function onSay() local newExp = 30 local file = io.open("config.lua", "r") local content = file:read("*a") local tmp = string.explode(content, "\n") file:close() for line, str in pairs(tmp) do if string.find(str, "rateExperience") then tmp[line] = " rateExperience = "..newExp break end end local file = io.open("config.lua", "w+") file:write(table.concat(tmp, "\n")) file:close() doReloadInfo(RELOAD_CONFIG) return true end Testa esse como talkaction e vê se funciona. É só trocar o newExp. Se funcionar esse, 99% de chance de funcionar o globalevent. @Valeu lek... o Globalevents funcionou mas para rodar tem que por a hora no globalevents.xml não tem como por para mudar com interval e por minutos também? sem querer abusar da sua boa vontade Obrigado por está me ajudando Não testei nem nada, mais acho q assim funciona, n sei mexer com %d,%m,%s etc... mais acho q assim funciona local expTable = { -- [minutos] = experiência [12] = 30, [13] = 25, [14] = 35, } function onThink() if getGlobalStorageValue(7641) < os.time() then local newExp = false setGlobalStorageValue(7641, os.time() + 60) for hour, exp in pairs(expTable) do if tonumber(hour) == tonumber(os.date("%M")) then newExp = exp break end end if not newExp then return true end local file = io.open("config.lua", "r") local content = file:read("*a") local tmp = string.explode(content, "\n") file:close() for line, str in pairs(tmp) do if string.find(str, "rateExperience") then tmp[line] = " rateExperience = "..newExp break end end local file = io.open("config.lua", "w+") file:write(table.concat(tmp, "\n")) file:close() doReloadInfo(RELOAD_CONFIG) end return true end . Testei aqui não pegou lek... up Link para o comentário https://xtibia.com/forum/topic/222676-globalevents-modificar-exp-e-atualizar/#findComment-1575342 Compartilhar em outros sites More sharing options...
0 Skymagnum 234 Postado Outubro 23, 2013 Share Postado Outubro 23, 2013 (editado) Pode haver erros mas ai você me avisa, o único erro que eu penso e que seja "rateExperience = val" em vez de "rateExperience=val" ai não vai achar o valor. function setNewExp(value) local function explode(e, sep) local result = {} e:gsub("[^".. sep .."]+", function(s) table.insert(result, s:match("^%s*(.-)%s*$")) end) return result end local file = io.open("config.lua", "r") local tmp = explode(file:read("*all"), "=") if tmp[1] == "rateExperience" then tmp[2] = value file:close() end local wr = io.open(dir, "w+") wr:write(table.concat(tmp, "/n")) end function onThink() local hours = { ["12:30"] = 30, ["16:30"] = 15 } local newExp = hours[os.date("%H:%M")] if(newExp) then setNewExp(newExp) broadcastMessage("Exp has been updated to " .. newExp .. "", 25) end return true end Editado Outubro 23, 2013 por Skymagnum Link para o comentário https://xtibia.com/forum/topic/222676-globalevents-modificar-exp-e-atualizar/#findComment-1575554 Compartilhar em outros sites More sharing options...
Pergunta
cs007 13
Bom galera nunca fiz tal script, o que eu queria é assim....
1° Ele vai alterar o config.lua na "exp"
2° De 10 em 10 minutos ele vai alterar o config.lua e dar /reload
3° Um arquivo em txt ou em .lua onde vai está as exp que vai mudar de tanta em tanta horas...
Não sei se ficou bem explicado essa alteração não precisa ter limites eu mesmo posso configurar...
Abraço pessoal...
Editado por cs007Link para o comentário
https://xtibia.com/forum/topic/222676-globalevents-modificar-exp-e-atualizar/Compartilhar em outros sites
17 respostass a esta questão
Posts Recomendados