Te invitamos a nuestro Servidor Discord (https://discord.gg/euAr7eT) para que puedas estar siempre al tanto de nuestra comunidad y jugar a tus juegos favoritos con nosotros.

Bienvenido a Metin2Zone

Registrate ahora para obtener acceso a todas nuestras características y ventajas. Una Vez Registrado y Conectado, Usted Será capaz de contribuir Mediante la Presentación de su propio contenido o respondiendo al contenido existente. Usted será capaz de Personalizar su Perfil, recibirá puntos de reputación como una recompensa, mientras que también se comunica con otros miembros a través de su propia bandeja de entrada privada, y Mucho Más!

Este Mensaje se eliminará una vez hayas Iniciado Sesión.

  • Comunicados

    • R1z

      Actualización del Foro y cambio de alias por usuario!   19/06/17

      Es importante saber que actualmente para iniciar sesión con tu cuenta necesitas utilizar el alias que tenías antes de la actualización como usuario, por ejemplo si tu usuario era juanito y tu alias (el nombre con el que te veían los otros miembros) era juan entonces ahora juan es tu usuario, si no recuerdas tu alias puedes solicitar que se te recupere la contraseña para que te pueda llegar el usuario actual de tu cuenta al email.
PACI

Nueva Funcion: write_or_read

Hola.

Bueno, ultimamente anduve trabajando mucho con la edición de archivos por quest, y decidi hacer una función que vamos, me reduce muchísimo el trabajo.

 

La función es: write_or_read(path, file, act, text, line)

 

Que sirve para escribir, reescribir y leer un archivo, o leer una línea especifica de un archivo.

 

Notas:

Ruta del archivo;

Nombre del archivo;

Acción;

Texto;

Línea.

 

Las acciónes:

Como os dije, esta función puede leer o escribir en un archivo, para eso en act se pone lo que se quiere que haga:

 

- Para leer se puede usar:

leer, read, l (L minusculo) u r.

 

La Acción que queréis tomar hace influenciar a lo que tengáis que poner en text, si queréis leer el contenido de un archivo, obviamente no vais a colocar ahí ningun texto.

Así que, la función de leer se divide en otras 3 funciones:

 

-> Leer la primera línea; (line, linea, o l)

-> Leer el archivo entero; (all, todo, o entero)

-> Leer una línea específica*. (sline, lineas, o ls) -> sline = specific line; lineas = linea especifica.

 

*Para leer una línea específica hay que colocar, como último argumento de la función el número de la línea que hay que leer.

 

- Para escribir se puede usar 2 tipos:

1. sobreescribir, rewrite, s u re.

2. escribir, write, e, a+

 

Lo que hace cada uno es muy simple, el 1. hace que borre el contenido del archivo y escriba de nuevo el texto que habéis puesto. El 2. apenas lo adiciona.

 

Nota: No se necesita el último argumento, line, para escribir.

 

Otros:

Para tener menos trabajo aún, hice que, si el directório o el archivo seleccionados no existan, se creen solos.

Las tabulaciones en el texto se hacen donde siempre, en el botóncito que está encima del caps lock. Pero para hacer un cambio de línea, hay que escribir __enter__.

 

Ejemplos:

 

--> Escribiendo:

 

 

quest ejemplo_escribiendo_1 begin	state start begin		when login begin			write_or_read("/usr/home/game/share", "logins", "escribir", "Hola")			-- Escribirá "Hola" en el archivo logins localizado en /usr/home/game/share		end	endend------------------------------------------------------------------------------------------------quest ejemplo_escribiendo_2 begin	state start begin		when login begin			write_or_read("/usr/home/game/share", "logins", "sobreescribir", "Adiós")			-- Borrará el contenido del archivo logins localizado en /usr/home/game/share y escribirá "Adiós"		end	endend------------------------------------------------------------------------------------------------quest ejemplo_escribiendo_3 begin	state start begin		when login begin			write_or_read("/usr/home/game/share", "logins", "escribir", "Hola	Adiós")			-- Escribirá "Hola	Adiós" en el archivo logins localizado en /usr/home/game/share		end	endend------------------------------------------------------------------------------------------------quest ejemplo_escribiendo_4 begin	state start begin		when login begin			write_or_read("/usr/home/game/share", "logins", "sobreescribir", "Hola	Adiós")			-- Borrará el contenido del archivo logins situado en /usr/home/game/share y escribirá "Hola	Adiós"		end	endend------------------------------------------------------------------------------------------------quest ejemplo_escribiendo_5 begin	state start begin		when login begin			write_or_read("/usr/home/game/share", "logins", "sobreescribir", "Hola__enter__Adiós")			-- Escribirá:			-- "Hola			-- Adiós"			-- En el archivo logins localizado en /usr/home/game/share		end	endend

 

 

--> Leyendo:

 

 

quest ejemplo_leyendo_1 begin	state start begin		when login begin			chat(write_or_read("/usr/home/game/share", "logins", "leer", "todo"))			-- Leerá el archivo logins entero localizado /usr/home/game/share		end	endend------------------------------------------------------------------------------------------------quest ejemplo_leyendo_2 begin	state start begin		when login begin			chat(write_or_read("/usr/home/game/share", "logins", "leer", "linea"))			-- Leerá la primera línea del archivo logins localizado en /usr/home/game/share		end	endend------------------------------------------------------------------------------------------------quest ejemplo_leyendo_3 begin	state start begin		when login begin			chat(write_or_read("/usr/home/game/share", "logins", "leer", "lineas", 4))			-- Leerá la línea 4 del archivo logins localizado en /usr/home/game/share		end	endend

 

 

Y por fin, la función, que hay que colocarla en el 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 == 'leer' or act == 'read' or act == 'l' or act == 'r' then type_ = 'r'	elseif act == 'sobreescribir' or act == 'rewrite' or act == 's' or act == 're' then type_ = 'w'	elseif act == 'escribir' 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 == 'todo' or text == 'entero' then return f:read('*all')		elseif text == 'line' or text == 'linea' or text == 'l' then return f:read('*l')		elseif text == 'sline' or text == 'lineas' 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
Saludos ^^

Compartir esta publicación


Enlace a la publicación
Compartir en otros sitios

Crear una cuenta o conéctate para comentar

Tienes que ser miembro para dejar un comentario

Crear una cuenta

Regístrese para obtener una cuenta nueva en nuestra comunidad. ¡Es fácil!


Registrar una nueva cuenta

Conectar

¿Ya tienes una cuenta? Conéctate aquí.


Conectar ahora

  • Recientemente navegando por este tema   0 miembros

    No hay usuarios registrados visitando esta página.