antiblock
Elveron
  • Chatbox

    You don't have permission to chat.
    Load More
Sign in to follow this  
'PACI

Função Nova: Write_Or_Read

4 posts in this topic

Olá.

Nestes dias andei a trabalhar muito com a edição de ficheiros por quest, então decidi criar uma função que reduz bastante o trabalho.

A função é: write_or_read(path, file, act, text, line)

Que serve para escrever, sobrescrever e ler um ficheiro, ou uma linha específica.

Notas:

Diretório do ficheiro;

Nome do ficheiro;

Ação;

Texto;

Linha.

As ações:

Como disse, a função pode ler ou escrever num ficheiro e para isso em act coloca-se o que se quer fazer.

- Para ler pode usar-se:

ler, read, l (L minusculo) ou r.

A Ação influencia o conteúdo que se colocará em text, se querem ler o conteúdo de um ficheiro, obviamente não vão colocar texto nenhum lá.

Por isto, a função de ler divide-se noutras 3 funções:

-> Ler a primeira línha; (line, linha, ou l)

-> Ler o ficheiro inteiro; (all, tudo)

-> Ler uma línha específica*. (sline, linhas, ou ls)

*Para ler uma linha específica, no último argumento da função coloca-se a linha que querem que leia.

- Para escrever pode usar-se 2 tipos:

1. sobrescrever, rewrite, s ou re.

2. escrever, write, e, a+

É bastante simples saber o que faz cada um deles. O 1. irá apagar o conteúdo do ficheiro (se tiver algum) e irá escrever aquilo que quisermos. O 2. apenas adiciona.

Nota: Não é necessário colocar o último argumento, line, para escrever.

Outros:

Para reduzir ainda o trabalho, se o diretório ou o ficheiro não existirem, estes serão criados sozinhos.

As tabulações no texto fazem-se de forma natural, através do botão que está em cima do caps lock. Mas para mudar de linha, é necessário escrever: __enter__.

Finalmente aqui está a função, que deverão colocá-la no questlib.lua:

function write_or_read(path, file, act, text, line)	local type_	if os.execute('cd '..path) ~= 0 then os.execute('mkdir '..path)	elseif os.execute('[ -f '..path.."/"..file..' ] && echo "s" || echo "n"') == 'n' then 		os.execute('cd '..path..' && touch '..file)	end	if act == 'ler' or act == 'read' or act == 'l' or act == 'r' then type_ = 'r'	elseif act == 'sobrescrever' or act == 'rewrite' or act == 's' or act == 're' then type_ = 'w'	elseif act == 'escrever' or act == 'write' or act == 'e' or act == 'a+' then type_ = 'a+' end	local f = io.open(path..'/'..file, type_)	if type_ == 'r' then		if text == 'all' or text == 'tudo' then return f:read('*all')		elseif text == 'line' or text == 'linha' or text == 'l' then return f:read('*l')		elseif text == 'sline' or text == 'linhas' or text == 'ls' then			local ltable = {}			for i in f:lines() do table.insert(ltable, i) end			f:close()			return ltable[line]		end	elseif type_ == 'a+' or type_ == 'w' then		if string.find(text, '__enter__') ~= 0 then			f:write(string.gsub(text, '__enter__', 'n', string.find(text,'__enter__'))..'n')		else 			f:write(text..'n')		end		f:close()	endend
Inteligentes saberão para que serve.

Se quiserem exemplos avisem.

Share this post


Link to post
Share on other sites
antiblock
Cyphriun

Bom, +1 dá ai um exemplo de uma quest que use essa função, faz uma missão ou uma merda qualquer parecida...

Share this post


Link to post
Share on other sites

Já te explicámos na shoutbox.. lol

quest teste begin	state start begin		when login begin			write_or_read("/usr/home/game/login/", "logs", "escrever", pc.name.." fez login.")		end		when logout begin			write_or_read("/usr/home/game/logout/", "logs", "escrever", pc.name.." fez logout.")		end	endend

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this