Buenas e.e.. aca vengo con un tutorial simple de como modificar una linea de un archivo; solo voy a explicar lo que tiene relacion con este tema; el resto no lo explicare
PHP Code:
#include <amxmodx>
#include <amxmisc>
#define PLUGIN "Tutorial"
#define VERSION "1.0"
#define AUTHOR "[R]ak"
public plugin_init() {
register_plugin(PLUGIN, VERSION, AUTHOR)
register_concmd("amx_add_immunity", "cmdAddImmunity", ADMIN_RCON, "<target>")
}
public cmdAddImmunity(id,level,cid) {
if(!cmd_access(id, level, cid, 2))
return
new Name[32], player
read_argv(1, Name, charsmax(Name))
player = cmd_target(id, Name, CMDTARGET_NO_BOTS)
if(!player)
return
/* ahora empezamos el tutorial
.- vamos a ver un ejemplo para agregarle a un admin el flag immunity
*/
if(get_user_flags(id) & ADMIN_IMMUNITY) {
console_print(id, "[AMXX] El player seleccionado ya posee inmunidad")
return
}
new Authid[35]
get_user_authid(id, Authid, charsmax(Authid))
new ConfigDir[64] // creamos una variable para almacenar la ubicacion del archivo users.ini
get_configsdir(ConfigDir, charsmax(ConfigDir)) // obtenemos la carpeta configs ( normalmente es addons/amxmodx/configs )
add(ConfigDir, charsmax(ConfigDir), "/users.ini") // despues de obtener la carpeta le agregamos el nombre del archivo que queremos obtener los datos ( normalmente users.ini )
new File, Line, Data[128], Data1[35], Data2[35], Data3[30], Data4[5]
// File va a almacenar el handler para obtener los datos del archivo
// Line va contener las lineas transcurridas hasta llegar a la que queremos modificar
// Data va a almacenar toda la linea
// Data1 va a almacenar el steamid
// Data2 va a almacenar la contraseņa( en este caso normalmente no tiene )
// Data3 va a almacenar los flags de accesos del usuario
// Data4 va a almacenar los flags de su cuenta
File = fopen(ConfigDir , "rt") // abrimos el archivo con los parametros "rt" los cuales significa que vamos a leer/texto
while(!feof(File)) { // mientras que no este en el final del archivo
fgets(File, Data, charsmax(Data)) // obtenemos la linea
trim(Data) // removemos los espacios principio/fin
Line++ // sumamos 1 linea
if (Data[0] == ';' || !Data[0]) // chequeamos que si no esta habilitado el admin lo ignore o que si la linea esta vacia la ignore
continue;
parse(Data, Data1, charsmax(Data1), Data2, charsmax(Data2), Data3, charsmax(Data3), Data4, charsmax(Data4)) // separamos los datos
if(equal(Data1, Authid)) { // chequeamos que el steamid sea igual al del usuario que queremos agregarle el flag
format(Data3, charsmax(Data3), "a%s", Data3) // le agregamos el flag immunity
replace(Data, charsmax(Data), Data3[1], Data3) // reemplazamos los flags viejos por los nuevos
write_file(ConfigDir, Data, Line - 1) // escribimos el archivo para guardar los nuevos flags
console_print(id, "[AMXX] Se le agrego satisfactoriamente la inmunidad")
server_cmd("amx_reloadadmins") // recargamos los admins para actualizar los flags
break; // terminamos el bucle para que no siga chequeando
}
}
fclose(File) // cerramos el archivo y liberamos el handler
}
Enjoy
PD: no lo probe pero si no me equivoco funciona; cualquier cosa me avisan
SaluDDoS
__________________