AlliedModders

AlliedModders (https://forums.alliedmods.net/index.php)
-   Scripting Help (https://forums.alliedmods.net/forumdisplay.php?f=11)
-   -   [help]understanding this script: (https://forums.alliedmods.net/showthread.php?t=40723)

haimmaik 07-02-2006 13:49

[help]understanding this script:
 
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?

here is the code:
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 :(

thanks.


All times are GMT -4. The time now is 08:03.

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