well.. im trying to make a plugin for NS that see's how many kills and deaths a player got (using vault) and then lvl him up by setting his access level to the right levels (from M to S are custom lvls) for each level im using another icon (i made military ranks like icons) so every time u reach a higher rank.. ur icon looks like a higher level.
im trying to learn how to edit the users.ini fro the admins.sma plugin that i got built in with AMX.. and i dont really get it... well i understand whats going on but i dont know why he's doing stuff.. so i cant learn from it and build my own version (that only adds steamID and 1 flag from M to S) i also dont see there a way to delete an access or edit an access how i do that?
Code:
public addadminfn(id, level, cid)
{
if (!cmd_access(id, level, cid, 3))
return PLUGIN_HANDLED
new idtype = ADMIN_STEAM | ADMIN_LOOKUP
if (read_argc() > 4)
{
new t_arg[16]
read_argv(4, t_arg, 15)
if (equali(t_arg, "steam") || equali(t_arg, "steamid") || equali(t_arg, "auth"))
{
idtype = ADMIN_STEAM
}
else if (equali(t_arg, "ip"))
{
idtype = ADMIN_IPADDR
}
else if (equali(t_arg, "name") || equali(t_arg, "nick"))
{
idtype = ADMIN_NAME
} else {
console_print(id, "[%s] Unknown idtype ^"%s^", use one of: steamid, ip, name", PLUGINNAME, t_arg)
return PLUGIN_HANDLED
}
}
new arg[33]
read_argv(1, arg, 32)
new player = -1
if (idtype & ADMIN_STEAM)
{
if (containi(arg, "STEAM_0:") == -1)
{
idtype |= ADMIN_LOOKUP
player = cmd_target(id, arg, 10)
}
}
else if (idtype & ADMIN_NAME)
{
player = cmd_target(id, arg, 10)
if (player)
idtype |= ADMIN_LOOKUP
}
else if (idtype & ADMIN_IPADDR)
{
new len = strlen(arg)
new dots, chars
for (new i = 0; i < len; i++)
{
if (arg[i] == '.')
{
if (!chars || chars > 3)
break
if (++dots > 3)
break
chars = 0
} else {
chars++
}
if (dots != 3 || !chars || chars > 3)
{
idtype |= ADMIN_LOOKUP
player = find_player("dh", arg)
}
}
}
if (idtype & ADMIN_LOOKUP && !player)
{
console_print(id, "%L", id, "CL_NOT_FOUND")
return PLUGIN_HANDLED
}
new flags[64]
read_argv(2, flags, 63)
new password[64]
if (read_argc() == 4)
read_argv(3, password, 63)
new auth[33]
if (idtype & ADMIN_LOOKUP)
{
if (idtype & ADMIN_STEAM)
{
get_user_authid(player, auth, 32)
}
else if (idtype & ADMIN_IPADDR)
{
get_user_ip(player, auth, 32)
}
else if (idtype & ADMIN_NAME)
{
get_user_name(player, auth, 32)
}
} else {
copy(auth, 32, arg)
}
new type[16], len
if (idtype & ADMIN_STEAM)
len += format(type[len], 15-len, "c")
else if (idtype & ADMIN_IPADDR)
len += format(type[len], 15-len, "d")
if (strlen(password) > 0)
len += format(type[len], 15-len, "a")
else
len += format(type[len], 15-len, "e")
AddAdmin(id, auth, flags, password, type)
cmdReload(id, ADMIN_CFG, 0)
if (player > 0)
{
new name[32]
get_user_info(player, "name", name, 31)
accessUser(player, name)
}
return PLUGIN_HANDLED
}
AddAdmin(id, auth[], accessflags[], password[], flags[])
{
#if defined USING_SQL
new host[64], user[32], pass[32], db[128], table[32], error[128], dbType[7]
dbi_type(dbType, 6)
get_cvar_string("amx_sql_host", host, 63)
get_cvar_string("amx_sql_user", user, 31)
get_cvar_string("amx_sql_pass", pass, 31)
get_cvar_string("amx_sql_db", db, 127)
get_cvar_string("amx_sql_table", table, 31)
new Sql:sql = dbi_connect(host, user, pass, db, error, 127)
if (sql <= SQL_FAILED)
{
server_print("[AMXX] %L", LANG_SERVER, "SQL_CANT_CON", error)
//backup to users.ini
#endif
// Make sure that the users.ini file exists.
new configsDir[64]
get_configsdir(configsDir, 63)
format(configsDir, 63, "%s/users.ini", configsDir)
if (!file_exists(configsDir))
{
console_print(id, "[%s] File ^"%s^" doesn't exist.", PLUGINNAME, configsDir)
return
}
// Make sure steamid isn't already in file.
new line = 0, textline[256], len
const SIZE = 63
new line_steamid[SIZE + 1], line_password[SIZE + 1], line_accessflags[SIZE + 1], line_flags[SIZE + 1], parsedParams
// <name|ip|steamid> <password> <access flags> <account flags>
while ((line = read_file(configsDir, line, textline, 255, len)))
{
if (len == 0 || equal(textline, ";", 1))
continue // comment line
parsedParams = parse(textline, line_steamid, SIZE, line_password, SIZE, line_accessflags, SIZE, line_flags, SIZE)
if (parsedParams != 4)
continue // Send warning/error?
if (containi(line_flags, flags) != -1 && equal(line_steamid, auth))
{
console_print(id, "[%s] %s already exists!", PLUGINNAME, auth)
return
}
}
// If we came here, steamid doesn't exist in users.ini. Add it.
new linetoadd[512]
format(linetoadd, 511, "^"%s^" ^"%s^" ^"%s^" ^"%s^"", auth, password, accessflags, flags)
console_print(id, "Adding:^n%s", linetoadd)
if (!write_file(configsDir, linetoadd))
console_print(id, "[%s] Failed writing to %s!", PLUGINNAME, configsDir)
#if defined USING_SQL
}
new Result:Res = dbi_query(sql, "SELECT * FROM `%s` WHERE (`auth` = '%s')", table, auth)
if (Res == RESULT_FAILED)
{
dbi_error(sql, error, 127)
server_print("[AMXX] %L", LANG_SERVER, "SQL_CANT_LOAD_ADMINS", error)
console_print(id, "[AMXX] %L", LANG_SERVER, "SQL_CANT_LOAD_ADMINS", error)
dbi_close(sql)
return
}
else if (Res > RESULT_NONE)
{
console_print(id, "[%s] %s already exists!", PLUGINNAME, auth)
dbi_free_result(Res)
dbi_close(sql)
return
}
console_print(id, "Adding to database:^n^"%s^" ^"%s^" ^"%s^" ^"%s^"", auth, password, accessflags, flags)
dbi_query(sql, "REPLACE INTO `%s` (`auth`, `password`, `access`, `flags`) VALUES ('%s', '%s', '%s', '%s')", table, auth, password, accessflags, flags)
dbi_close(sql)
#endif
}
1 more thing.. it have been a long time since i didnt program in pawn.. i hardly remember stuff.. i'v been sitting on this chair for 9 hours trying to figure my way to build the plugin out with no success... please help me