AlliedModders

AlliedModders (https://forums.alliedmods.net/index.php)
-   Scripting Help (https://forums.alliedmods.net/forumdisplay.php?f=11)
-   -   .ini writing dont works :/ (https://forums.alliedmods.net/showthread.php?t=217354)

Roccoxx 06-01-2013 21:17

.ini writing dont works :/
 
hi, sorry for my bad english, i have a problem, when I give ban the user, not stored in the. ini

PHP Code:

/* Plugin generated by AMXX-Studio */

#include <amxmodx>
#include <amxmisc>
#include <celltrie>

#define PLUGIN "Ban by Name e ip"
#define VERSION "1.0"
#define AUTHOR "Roccoxx + rak(code del .ini)"

new Trie:g_trie
const ADMIN_FLAG ADMIN_BAN // acceso al menu de ban
new g_maxplayers
public plugin_init() {
    
register_plugin(PLUGINVERSIONAUTHOR)
    
    
g_trie TrieCreate( )
    
g_maxplayers get_maxplayers()
    
register_clcmd("say /banmm""show_menu_banear_jugador")
}

public 
plugin_cfg() {
    new 
ConfigDir[256]
    
    
get_configsdir(ConfigDircharsmax(ConfigDir))
    
    
format(ConfigDircharsmax(ConfigDir), "%s/amx_banbyroccoxx.ini"ConfigDir
    
    if(!
file_exists(ConfigDir)) create_file(ConfigDir)
    
    new 
Data[37], File fopen(ConfigDir"rt")
    
    while (!
feof(File)) {
        
        
fgets(FileDatacharsmax(Data))
        
        
trim(Data)
        
        if (
Data[0] == ';' || !Data[0]) 
            continue;
        
        
rak_remove_quotes(Data)
        
        
TrieSetCell(g_trie,Data,1)    
    }
    
    
fclose(File)
}

create_file(ConfigDir[]) {
    
    new 
File fopen(ConfigDir"wt")
    
    
fprintf(File"; Lista de pts baneados^n; File location: $moddir/addons/amxmodx/configs/amx_banbyroccoxx.ini^n^n;Enjoy")
    
    
fclose(File)
}

public 
plugin_end( ) 

    
TrieDestroyg_trie 


public 
client_connect(id){
    new 
name[32], ip[40]
    
get_user_name(idnamecharsmax(name))
    
get_user_ip(idipcharsmax(ip))
    
    if(
TrieKeyExists(g_triename) || TrieKeyExists(g_triename)){
        
server_cmd("kick %s"name)
    }
}

public 
show_menu_banear_jugador(id){
    static 
flagsflags get_user_flags(id)
    if(
flags ADMIN_FLAG){
        new 
menu menu_create("Menu banear hacks""banear_jugador")
        new 
pos[3], name[32]
        for(new 
1<= g_maxplayersi++){
            if(
is_user_connected(i)){
                
get_user_name(inamecharsmax(name))
                
num_to_str(iposcharsmax(pos))
                
menu_additem(menunamepos)
            }
        }
    
        
menu_display(idmenu0)
    }
    else{
        
client_print(idprint_chat"No tienes acceso")
    }
    
    return 
PLUGIN_HANDLED
}

public 
banear_jugador(idmenuitem){
    if(
item == MENU_EXIT || !is_user_connected(id)){
        
menu_destroy(menu)
        return 
PLUGIN_HANDLED
    
}
    
    new 
iData[6];
    new 
iAccess;
    new 
ip[40]
    new 
iCallback;
    new 
iName[64];
    new 
name[33]
    
get_user_name(idnamecharsmax(name))
    
menu_item_getinfo(menuitemiAccessiData5iName63iCallback)
    new 
iTarget str_to_num(iData);
    
get_user_ip(iTargetipcharsmax(ip))
    
TrieSetCell(g_trieiName1)
    
TrieSetCell(g_trieip1)
    
aniadir_ini(iName)
    
aniadir_ini(ip)
    
server_cmd("kick %s"iName)
    
client_print(0print_chat"%s ha sido baneado por el admin %s"iNamename)
    
    
menu_destroy(menu)
    return 
PLUGIN_HANDLED
}

public 
aniadir_ini(const nombre[]){    
    new 
ConfigDir[256]
    
    
get_configsdir(ConfigDircharsmax(ConfigDir))
    
    
format(ConfigDircharsmax(ConfigDir), "%s/amx_banbyroccoxx.ini"ConfigDir
    
    new 
FileLineData[256]
    
    
File fopen(ConfigDir "rt")
    
    while(!
feof(File)) {
        
        
fgets(FileDatacharsmax(Data))
        
        
trim(Data)
        
        
Line++ 
        
        if (
Data[0] == ';' || !Data[0])
            continue;
            
        
write_file(ConfigDirnombreLine 1
        
        break;
    }
    
    
fclose(File)
}

stock rak_remove_quotes(Args[]) {
    
    static 
n
    
    
if(!Args[0])
        return
    else if(
Args[0] == 34) {
        
        for(
1;/* nothing */n++) {
            
            if(!
Args[n] || Args[n] == 34 && !Args[n+1]) {
                
                
Args[n] = 0
                
                
break;
                
            }
            
            
Args[n-1] = Args[n]
            
        }
    }
    else {
        
        for(
1;/* nothing */n++) {
            
            if(!
Args[n] || Args[n] == 34 && !Args[n+1]) {
                
                
Args[n] = 0
                
                
break;
                
            }
        }    
    }



fysiks 06-02-2013 12:51

Re: .ini writing dont works :/
 
Ban by SteamID. Fixed.

TheDS1337 06-02-2013 17:20

Re: .ini writing dont works :/
 
Try
Code:

/* Plugin generated by AMXX-Studio */

#include <amxmodx>
#include <amxmisc>
#include <celltrie>

#define PLUGIN "Ban by Name e ip"
#define VERSION "1.0"
#define AUTHOR "Roccoxx + rak(code del .ini)"

new Trie:g_trie
const ADMIN_FLAG = ADMIN_BAN // acceso al menu de ban
new g_maxplayers
public plugin_init() {
    register_plugin(PLUGIN, VERSION, AUTHOR)
   
    g_trie = TrieCreate( )
    g_maxplayers = get_maxplayers()
    register_clcmd("say /banmm", "show_menu_banear_jugador")
}

public plugin_cfg() {
    new ConfigDir[256]
   
    get_configsdir(ConfigDir, charsmax(ConfigDir))
   
    format(ConfigDir, charsmax(ConfigDir), "%s/amx_banbyroccoxx.ini", ConfigDir) 
   
    if(!file_exists(ConfigDir))
        {
   
                new Data[1024], File;
                create_file(File,ConfigDir)
                while (!feof(File)) {
       
                        fgets(File, Data, charsmax(Data))
       
                        trim(Data)
       
                        if (Data[0] == ';' || !Data[0]) 
                                continue;
       
                        rak_remove_quotes(Data)
       
                        TrieSetCell(g_trie,Data,1) 
                }
    }
   
    fclose(File)
}

create_file(File,ConfigDir[]) {
   
    File = fopen(ConfigDir, "wt")
   
    fprintf(File, "; Lista de pts baneados^n; File location: $moddir/addons/amxmodx/configs/amx_banbyroccoxx.ini^n^n;Enjoy")
   
    fclose(File)
}

public plugin_end( ) 

    TrieDestroy( g_trie ) 


public client_connect(id){
    new name[32], ip[40]
    get_user_name(id, name, charsmax(name))
    get_user_ip(id, ip, charsmax(ip))
   
    if(TrieKeyExists(g_trie, name) || TrieKeyExists(g_trie, name)){
        server_cmd("kick %s", name)
    }
}

public show_menu_banear_jugador(id){
    static flags; flags = get_user_flags(id)
    if(flags & ADMIN_FLAG){
        new menu = menu_create("Menu banear hacks", "banear_jugador")
        new pos[3], name[32]
        for(new i = 1; i <= g_maxplayers; i++){
            if(is_user_connected(i)){
                get_user_name(i, name, charsmax(name))
                num_to_str(i, pos, charsmax(pos))
                menu_additem(menu, name, pos)
            }
        }
   
        menu_display(id, menu, 0)
    }
    else{
        client_print(id, print_chat, "No tienes acceso")
    }
   
    return PLUGIN_HANDLED
}

public banear_jugador(id, menu, item){
    if(item == MENU_EXIT || !is_user_connected(id)){
        menu_destroy(menu)
        return PLUGIN_HANDLED
    }
   
    new iData[6];
    new iAccess;
    new ip[40]
    new iCallback;
    new iName[64];
    new name[33]
    get_user_name(id, name, charsmax(name))
    menu_item_getinfo(menu, item, iAccess, iData, 5, iName, 63, iCallback)
    new iTarget = str_to_num(iData);
    get_user_ip(iTarget, ip, charsmax(ip))
    TrieSetCell(g_trie, iName, 1)
    TrieSetCell(g_trie, ip, 1)
    aniadir_ini(iName)
    aniadir_ini(ip)
    server_cmd("kick %s", iName)
    client_print(0, print_chat, "%s ha sido baneado por el admin %s", iName, name)
   
    menu_destroy(menu)
    return PLUGIN_HANDLED
}

public aniadir_ini(const nombre[]){   
    new ConfigDir[256]
   
    get_configsdir(ConfigDir, charsmax(ConfigDir))
   
    format(ConfigDir, charsmax(ConfigDir), "%s/amx_banbyroccoxx.ini", ConfigDir) 
   
    new File, Line, Data[1024]
   
    File = fopen(ConfigDir , "rt")
   
    while(!feof(File)) {
       
        fgets(File, Data, charsmax(Data))
       
        trim(Data)
       
        Line++ 
       
        if (Data[0] == ';' || !Data[0])
            continue;
           
        write_file(ConfigDir, nombre, Line - 1) 
       
        break;
    }
   
    fclose(File)
}

stock rak_remove_quotes(Args[]) {
   
    static n
   
    if(!Args[0])
        return
    else if(Args[0] == 34) {
       
        for(n = 1;/* nothing */; n++) {
           
            if(!Args[n] || Args[n] == 34 && !Args[n+1]) {
               
                Args[n] = 0
               
                break;
               
            }
           
            Args[n-1] = Args[n]
           
        }
    }
    else {
       
        for(n = 1;/* nothing */; n++) {
           
            if(!Args[n] || Args[n] == 34 && !Args[n+1]) {
               
                Args[n] = 0
               
                break;
               
            }
        }   
    }
}


fysiks 06-03-2013 00:25

Re: .ini writing dont works :/
 
Quote:

Originally Posted by DeagLe.Studio (Post 1963294)
Try

FYI, your changes made it worse.

The problem is likely because of mixing the old (should never be used) file natives with the new (should be used instead) ones.


All times are GMT -4. The time now is 16:27.

Powered by vBulletin®
Copyright ©2000 - 2024, vBulletin Solutions, Inc.