Postado Setembro 5, 2016 8 anos Olá! Estou usando um TFS 0.3.6 É o seguinte, meu ot possui um sistema de loteria que sorteia pontos que são os mesmos pontos obtidos por donate. Várias pessoas criam MC para burlar esse sistema e aumentar as chances de ganhar na loteria, e queria acabar com isso. Fiz a primeira parte do script, em creaturescripts via onLogin, onde eu posso add nomes que o sistema passa a dar auto-kick, pois tem players que jogam em lan house, então um anti-MC 'normal' impossibilitaria eles de jogar! Porém meu ot se eu add um nome no script, e der reload creaturescripts, ele crasha, então tem como fazer esse script ler um arquivo .txt na pasta raiz do servidor, e verificar os nomes de la ao invés de verificar no próprio script? Assim eu não precisaria dar reload algum quando adicionar um novo nome. Espero que alguém possa me ajudar Código que eu fiz (usando como base um encontrado aqui no fórum): local config = { max = 1, } local recusar = {"Techno", "Pedro"} local function antiMC(p) if #getPlayersByIp(getPlayerIp(p.pid)) >= p.max then doRemoveCreature(p.pid) end return true end function onLogin(cid) if isInArray(recusar,getCreatureName(cid)) then addEvent(antiMC, 1000, {pid = cid, max = config.max+1}) end return true end Te ajudei? Clique em Gostei ! ²²²d¬¬b²²² "She's got a smile that it seems to me...." ♪♪
Postado Setembro 5, 2016 8 anos Acho que seria melhor usar globalStorage. Mas, aí está as funções que precisa, e um exemplo. function tableToString(t) -- Transforma uma tabela em string return ("{'" .. table.concat(t, "','") .. "'}") end function setFileTable(filename, t) -- Salva uma tabela em um arquivo local tmpStr = tableToString(t) local f = io.open(filename, "wb") f:write(tmpStr) f:close() end function getFileTable(filename) -- Carrega uma tabela de um arquivo local fileStr = "" local f = io.open(filename, "rb") fileStr = f:read("*a") f:close() if fileStr then return loadstring("return " .. fileStr)() end return {} end -- Exemplo de uso local exTable = {"Joao", "Pedro", "Lucas", "Derp"} setFileTable("test.txt", exTable) local exTable2 = getFileTable("test.txt") print(tableToString(exTable2)) edit: Não esquece de pôr a declaração da variável "recusar" dentro do onLogin. Editado Setembro 6, 2016 8 anos por Featzen (veja o histórico de edições) Att. Featzen.
Postado Setembro 6, 2016 8 anos Autor 2 horas atrás, Featzen disse: Acho que seria melhor usar globalStorage. Mas, aí está as funções que precisa, e um exemplo. function tableToString(t) -- Transforma uma tabela em string return ("{'" .. table.concat(t, "','") .. "'}") end function setFileTable(filename, t) -- Salva uma tabela em um arquivo local tmpStr = tableToString(t) local f = io.open(filename, "wb") f:write(tmpStr) f:close() end function getFileTable(filename) -- Carrega uma tabela de um arquivo local fileStr = "" local f = io.open(filename, "rb") fileStr = f:read("*a") f:close() if fileStr then return loadstring("return " .. fileStr)() end return {} end -- Exemplo de uso local exTable = {"Joao", "Pedro", "Lucas", "Derp"} setFileTable("test.txt", exTable) local exTable2 = getFileTable("test.txt") print(tableToString(exTable2)) edit: Não esquece de pôr a declaração da variável "recusar" dentro do onLogin. Cara eu nao manjo de montar script, não entendi quase nada disso kkk consegue adaptar pra mim isso no meu script ali de cima, e so me dizer onde eu devo criar meu .txt para add os nomes? e como add os nomes no .txt Te ajudei? Clique em Gostei ! ²²²d¬¬b²²² "She's got a smile that it seems to me...." ♪♪
Postado Setembro 6, 2016 8 anos Não sei bem onde o arquivo tem que estar, porquê tô sem nenhum ot aqui, mas botei pra o script criar um arquivo caso não exista, provavelmente vai ficar na pasta da executável ou no creaturescripts. function getTableFromFile(filename) local t = {} local f = io.open(file, "rb") if f then f:close() end if f == nil then f = io.open("recusar.txt", "wb") f:close() end for line in io.lines(filename) do table.insert(t, line) end return t end local config = { max = 1, } local function antiMC(p) if #getPlayersByIp(getPlayerIp(p.pid)) >= p.max then doRemoveCreature(p.pid) end return true end function onLogin(cid) local recusar = getTableFromFile('recusar.txt') if isInArray(recusar,getCreatureName(cid)) then addEvent(antiMC, 1000, {pid = cid, max = config.max+1}) end return true end No arquivo de texto, bota um nome por linha. Espero que tenha ajudado \o Att. Featzen.
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.