View Single Post
Author Message
rak
Veteran Member
Join Date: Oct 2011
Location: banned country
Old 12-16-2012 , 17:55   [TUT] Modificar una linea de un archivo
#1

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(PLUGINVERSIONAUTHOR)
    
    
register_concmd("amx_add_immunity""cmdAddImmunity"ADMIN_RCON"<target>")
        
}

public 
cmdAddImmunity(id,level,cid) {
    
    if(!
cmd_access(idlevelcid2))  
        return
        
    new 
Name[32], player
    
    read_argv
(1Namecharsmax(Name))
    
    
player cmd_target(idNameCMDTARGET_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(idAuthidcharsmax(Authid))
        
    new 
ConfigDir[64// creamos una variable para almacenar la ubicacion del archivo users.ini
    
    
get_configsdir(ConfigDircharsmax(ConfigDir)) // obtenemos la carpeta configs ( normalmente es addons/amxmodx/configs )
    
    
add(ConfigDircharsmax(ConfigDir), "/users.ini"// despues de obtener la carpeta le agregamos el nombre del archivo que queremos obtener los datos ( normalmente users.ini )
    
    
new FileLineData[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(FileDatacharsmax(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(DataData1charsmax(Data1), Data2charsmax(Data2), Data3charsmax(Data3), Data4charsmax(Data4)) // separamos los datos
        
        
if(equal(Data1Authid)) { // chequeamos que el steamid sea igual al del usuario que queremos agregarle el flag
            
            
format(Data3charsmax(Data3), "a%s"Data3// le agregamos el flag immunity
            
            
replace(Datacharsmax(Data), Data3[1], Data3// reemplazamos los flags viejos por los nuevos
            
            
write_file(ConfigDirDataLine 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
__________________

www.amxmodx-es.com

Steam: Luchokoldo

Last edited by rak; 01-05-2013 at 20:34.
rak is offline
Send a message via MSN to rak Send a message via Skype™ to rak