Advertisement
CheezPuff

SrvCmd Admin Access v1.0

Mar 29th, 2020
395
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pawn 4.32 KB | None | 0 0
  1. #include <amxmodx>
  2.  
  3. #define PLUGIN "Access Admin Srvcmd"
  4. #define VERSION "1.0"
  5. #define AUTHOR "CheezPuff"
  6.  
  7. #pragma semicolon 1
  8.  
  9. const PATH_STRLEN = 64;
  10. const PLAYER_NAME_STRLEN = 32;
  11. const TEXT_STRLEN = 128;
  12. const AUTHID_STRLEN = 24;
  13. const PASSWORD_STRLEN = 32;
  14. const ACCESS_STRLEN = 24;
  15. const FLAGS_STRLEN = 8;
  16. const DATE_END_STRLEN = 32;
  17. const MESSAGE_STRLEN = 256;
  18. const TIME_STRLEN = 32;
  19.  
  20. const NULLENT = -1;
  21.  
  22. new const USER_INFO_KEY[] = "_gmf";
  23.  
  24. new g_sConfigsDir[PATH_STRLEN];
  25. new g_sLogsDir[PATH_STRLEN];
  26. new g_sUsersFile[PATH_STRLEN + 32];
  27.  
  28. public plugin_init() {
  29.     register_plugin(PLUGIN, VERSION, AUTHOR);
  30.     register_srvcmd("reloadadmins", "SrvCmdReloadAdmins"); // יעשה את עבודה וידפיס את השם של השחקן עם אדמין בלוג
  31. }
  32.  
  33. public plugin_cfg() {
  34.     get_localinfo("amxx_logs", g_sLogsDir, charsmax(g_sLogsDir)); // טעינת והרצת פקודה
  35.     add(g_sLogsDir, charsmax(g_sLogsDir), "/admins_statistic"); // הגדרה ויצירה של הקובץ
  36.     if(!dir_exists(g_sLogsDir)) mkdir(g_sLogsDir); // בדיקה במידה והקובץ אינו קיים
  37.    
  38.     get_localinfo("amxx_configsdir", g_sConfigsDir, charsmax(g_sConfigsDir));
  39.     formatex(g_sUsersFile, charsmax(g_sUsersFile), "%s/users.ini", g_sConfigsDir);
  40.     ReadUsersFile();
  41. }
  42.  
  43. public client_authorized(id) {
  44.     SetAdminAccess(id);
  45. }
  46.  
  47. ReadUsersFile() {
  48.     new iFileID;
  49.     if((iFileID = fopen(g_sUsersFile, "rt"))) {
  50.         new sText[TEXT_STRLEN],\
  51.             sAuthID[AUTHID_STRLEN],\
  52.             sPassword[PASSWORD_STRLEN],\
  53.             sAccess[ACCESS_STRLEN],\
  54.             sFlags[FLAGS_STRLEN],\
  55.             sDateEnd[DATE_END_STRLEN];
  56.        
  57.         while(!feof(iFileID)) {
  58.             fgets(iFileID, sText, charsmax(sText)); trim(sText);
  59.             if(!sText[0] || sText[0] == ';') continue;
  60.            
  61.             parse(sText,\
  62.                 sAuthID, charsmax(sAuthID),\
  63.                 sPassword, charsmax(sPassword),\
  64.                 sAccess, charsmax(sAccess),\
  65.                 sFlags, charsmax(sFlags),\
  66.                 sDateEnd, charsmax(sDateEnd)\
  67.             );
  68.            
  69.             if(sDateEnd[0])
  70.                 if(parse_time(sDateEnd, "%d.%m.%Y") < get_systime())
  71.                     continue;
  72.            
  73.             admins_push(sAuthID, sPassword, read_flags(sAccess), read_flags(sFlags));
  74.         }
  75.         fclose(iFileID);
  76.     }
  77. }
  78.  
  79. SetAdminAccess(const id) {
  80.     remove_user_flags(id);
  81.    
  82.     new sAuthID[AUTHID_STRLEN], sAuthIDTemp[AUTHID_STRLEN], iAdminIndex = NULLENT;
  83.     get_user_authid(id, sAuthID, charsmax(sAuthID));
  84.     for(new i, iAdminsCount = admins_num(); i < iAdminsCount; i++) {
  85.         admins_lookup(i, AdminProp_Auth, sAuthIDTemp, charsmax(sAuthIDTemp));
  86.         if(equal(sAuthID, sAuthIDTemp)) {
  87.             iAdminIndex = i;
  88.             break;
  89.         }
  90.     }
  91.    
  92.     if(iAdminIndex != NULLENT) {
  93.         new sPassword[PASSWORD_STRLEN], sPasswordTemp[PASSWORD_STRLEN];
  94.         get_user_info(id, USER_INFO_KEY, sPassword, charsmax(sPassword));
  95.         admins_lookup(iAdminIndex, AdminProp_Password, sPasswordTemp, charsmax(sPasswordTemp));
  96.         if(equal(sPassword, sPasswordTemp)) {
  97.             new sAccess[ACCESS_STRLEN], bsAccess, sPlayerName[PLAYER_NAME_STRLEN];
  98.             bsAccess = admins_lookup(iAdminIndex, AdminProp_Access);
  99.             get_flags(bsAccess, sAccess, charsmax(sAccess));
  100.             get_user_name(id, sPlayerName, charsmax(sPlayerName));
  101.             set_user_flags(id, bsAccess);
  102.             logging(g_sLogsDir, "admins_connection_", "^"%s^" ^"%s^" ^"%s^"", sAuthID, sPlayerName, sAccess); // לוג לתיקיה בתוך לוגס
  103.         } else
  104.             server_cmd("kick #%d ^"%s^"", get_user_userid(id), "Invalid password specified"); // יתן קיק למי שלא יעשה ישים את הפרטים הנכונים
  105.     } else
  106.         set_user_flags(id, ADMIN_USER);
  107. }
  108.  
  109. public SrvCmdReloadAdmins() {
  110.     admins_flush(); ReadUsersFile();
  111.    
  112.     new aPlayersID[MAX_PLAYERS], iPlayersNum;
  113.     get_players(aPlayersID, iPlayersNum, "ch");
  114.     for(new i; i < iPlayersNum; i++)
  115.         SetAdminAccess(aPlayersID[i]);
  116.    
  117.     server_print("administrators reloaded"); // ידפיס בקונסול שאדמין הראשי עשה ריפרש
  118. }
  119.  
  120. stock logging(const sLogsDir[], const sFileName[], const sMessage[], any:...) {
  121.     new iFileID, sFormatMsg[MESSAGE_STRLEN], sTime[TIME_STRLEN], sLogFile[PATH_STRLEN + 32];
  122.     vformat(sFormatMsg, charsmax(sFormatMsg), sMessage, 4);
  123.     get_time("%m.%Y.log", sTime, charsmax(sTime));
  124.     formatex(sLogFile, charsmax(sLogFile), "%s/%s%s", sLogsDir, sFileName, sTime);
  125.     iFileID = fopen(sLogFile, "at");
  126.     get_time("%d.%m.%Y - %H:%M:%S", sTime, charsmax(sTime));
  127.     fprintf(iFileID, "^"%s^" %s^n", sTime, sFormatMsg);
  128.     fclose(iFileID);
  129. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement