BulletRja

SqLite Gm

Jan 31st, 2018
143
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pawn 19.46 KB | None | 0 0
  1. /*                           CREDITS
  2.  *                       BulletRaja: Main
  3.  *
  4.  *
  5.  *          Includes : To All
  6.  *
  7.  *BBBBBBBBBBBBBBBBB           RRRRRRRRRRRRRR
  8.  *BB              BB          RR           RR
  9.  *BB             BB           RR          RR
  10.  *BB            BB            RR         RR
  11.  *BB           BB             RR        RR
  12.  *BBBBBBBBBBBBB               RRRRRRRRRR
  13.  *BB           BB             RR        RR
  14.  *BB            BB            RR         RR
  15.  *BB             BB           RR          RR
  16.  *BB              BB          RR           RR
  17.  *BBBBBBBBBBBBBBBBB           RR            RR
  18.  *BULLET RAJA               Presents bR Simple Sqlite Gamemode
  19.  *
  20.  *=================>>>> Change Log <<<<=================
  21.  *>>>>>>>>>>>>>>> Version 1 <<<<<<<<<<<<<<<
  22.  *>> Added SQLITE Login/Register System
  23.  *>> Added New Style In Login/Register System
  24.  *>>>>>>>>>>>>>>> Version 2 <<<<<<<<<<<<<<<
  25.  *>> Added Admin System With Simple Cmds
  26.  *>> Added Online Admins Cmd
  27.  *>> Rleased
  28.  */
  29.  
  30. //== Includes ==//
  31. #include <a_samp>
  32. #include <sscanf2>
  33. #include <utils>
  34. #include <zcmd>
  35.  
  36. //== Server Entities ==//
  37. #define     SV_VER      "(0.3.7)"//here you can add your server version
  38. #define     SV_GM       "bR Simple Sqlite Gamemode ["SCRIPT_V"]"//here add your gamemode text
  39. #define     SV_LANG     "English"//here add your server language
  40. #define     SV_RCON     "BulletR"//here add server rcon
  41. #define     SV_SNAME    "Check /rules, /updates"//here add your server second name
  42. #define     SV_NAME     "bR Simple Sqlite Gamemode "SV_VER""//here add server name
  43. #define     SV_URL      "www.BulletRaja.Com"//here put server url
  44. #define     SV_MAP      "San Andreas"//here server map name
  45. #define     SCRIPT_V    "v2"
  46.  
  47. //== Max Defines ==//
  48. #define MAX_INI_ENTRY_TEXT 80
  49. #define MAX_CLIENT_MSG_LENGTH 144
  50.  
  51. //== Dialogs ==//
  52. #define DIALOG_LOGIN        1
  53. #define DIALOG_REGISTER     2
  54.  
  55. //== Colours ==//
  56. #define COLOR_WHITE         0xFFFFFFFF
  57. #define COLOR_WHITEP        0xFFE4C4FF
  58. #define COLOR_ORANGE        0xDB881AFF
  59. #define COLOR_ORANGE2       0xFF5000FF
  60. #define COLOR_IVORY         0xFFFF82FF
  61. #define COLOR_LIME          0xD2D2ABFF
  62. #define COLOR_BLUE          0x004BFFFF
  63. #define COLOR_SBLUE         0x56A4E4FF
  64. #define COLOR_RCONBLUE      0x0080FF99
  65. #define COLOR_PURPLE        0x5A00FFFF
  66. #define COLOR_RED           0xFF0000FF
  67. #define COLOR_LRED          0xE65555FF
  68. #define COLOR_LIGHTGREEN    0x00FF00FF
  69. #define COLOR_YELLOW        0xFFFF00FF
  70. #define COLOR_YELLOW2       0xF5DEB3FF
  71. #define COLOR_LB            0x15D4EDFF
  72. #define COLOR_PINK          0xEE82EEFF
  73. #define COLOR_GOLD          0xFFD700FF
  74. #define COLOR_FIREBRICK     0xB22222FF
  75. #define COLOR_GREEN         0x3BBD44FF
  76. #define COLOR_GREY2         0x778899FF
  77. #define COLOR_GREY3         0xC8C8C8FF
  78. #define COLOR_DARK          0x7A7A7AFF
  79. #define COLOR_BROWN         0x8B4513FF
  80. #define COLOR_SYSTEM        0xEFEFF7FF
  81. #define COLOR_PURPLE2 0xC2A2DAFF
  82. #define COLOR_DARKRED 0xAA3333FF
  83. #define COLOR_GREY 0xAFAFAFFF
  84. #define COLOR_ASAY 0xFF0000FF
  85. #define COLOR_OSAY 0x007700FF
  86. #define COLOR_HSAY 0x1684CAFF
  87. #define COLOR_MSAY 0x1684CAFF
  88. #define COLOR_WHITE 0xFFFFFFFF
  89. #define COLOR_YELLOW 0xFFFF00FF
  90. #define COLOR_DARKMAUVE 0x623778FF
  91. #define COLOR_MAUVE 0x845F96FF
  92. #define COLOR_GREENYELLOW 0xADFF2FAA
  93. #define COLOR_LBLUE 0x99FFFFFF
  94. #define COLOR_LIGHTBLUE 0x99FFFFFF
  95. #define COLOR_PEACH 0xFFCC66FF
  96. #define COLOR_SILVER 0xDDDDDDFF
  97. #define COLOR_WANTEDBLUE 0x0055CCFF
  98. #define COLOR_DARK_VIOLET 0x9400D3FF
  99. #define COLOR_VIP1 0x9400D3FF
  100. #define COLOR_HELP 0x00E5EEFF
  101. #define COLOR_ADMIN 0x0066FFFF
  102. #define COLOR_ADMIN2 0x008FD6FF
  103. #define COLOR_PLAYER 0xFFCC33FF
  104. #define COLOR_RP 0xFFFFFFFF
  105. #define COLOR_ULTRAADMIN 0x993300FF
  106. #define COLOR_EVENT 0x00CC66FF
  107. #define COLOR_VIP2 0xFF33CCFF
  108. #define COLOR_VIPCHAT 0xCC66CCFF
  109. #define     COL_WHITE       "{FFFFFF}"
  110. #define     COL_BLACK       "{0E0101}"
  111. #define     COL_GREY        "{C3C3C3}"
  112. #define     COL_GREEN       "{6EF83C}"
  113. #define     COL_RED         "{F81414}"
  114. #define     COL_YELLOW      "{F3FF02}"
  115. #define     COL_ORANGE      "{FFAF00}"
  116. #define     COL_LIME        "{B7FF00}"
  117. #define     COL_CYAN        "{00FFEE}"
  118. #define     COL_BLUE        "{0049FF}"
  119. #define     COL_MAGENTA     "{F300FF}"
  120. #define     COL_VIOLET      "{B700FF}"
  121. #define     COL_PINK        "{FF00EA}"
  122. #define     COL_MARONE      "{A90202}"
  123. #define RED_E       "{FF0000}"
  124. #define BLUE_E      "{004BFF}"
  125. #define SBLUE_E     "{56A4E4}"
  126. #define PINK_E      "{FFB6C1}"
  127. #define YELLOW_E    "{FFFF00}"
  128. #define LG_E        "{00FF00}"
  129. #define LB_E        "{15D4ED}"
  130. #define LB2_E       "{87CEFA}"
  131. #define GREY_E      "{BABABA}"
  132. #define GREY2_E     "{778899}"
  133. #define GREY3_E     "{C8C8C8}"
  134. #define DARK_E      "{7A7A7A}"
  135. #define WHITE_E     "{FFFFFF}"
  136. #define WHITEP_E    "{FFE4C4}"
  137. #define IVORY_E     "{FFFF82}"
  138. #define ORANGE_E    "{DB881A}"
  139. #define GREEN_E     "{3BBD44}"
  140. #define PURPLE_E    "{5A00FF}"
  141. #define LIME_E      "{D2D2AB}"
  142. #define LRED_E      "{E65555}"
  143.  
  144. //== Class Selection Defines ==//
  145. #define CLASS_X 1088.1422
  146. #define CLASS_Y 1074.0307
  147. #define CLASS_Z 10.8382
  148.  
  149. //== Natives ==//
  150. native WP_Hash(buffer[], len, const str[]);
  151.  
  152. //== Enumerators ==//
  153. enum USER_DATA
  154. {
  155.     PlayerID,
  156.     UserName[MAX_PLAYER_NAME],
  157.     Password[129],
  158.     UserLevel,
  159.     UserVip,
  160.     UserMoney,
  161.     UserScore,
  162.     UserKills,
  163.     UserDeaths,
  164.     UserK,
  165.  
  166.     bool: Logged
  167. };
  168. new User[PLAYERS][USER_DATA];
  169. new DB: Database;
  170. new pldialog[PLAYERS];
  171. new isconnected[PLAYERS];
  172.  
  173. //== Stocks ==//
  174. stock RPN(playerid)
  175. {
  176.     new name[MAX_PLAYER_NAME];
  177.     GetPlayerName(playerid, name, sizeof(name));
  178.     return name;
  179. }
  180. stock DB_Escape(text[])
  181. {
  182.     new ret[ 80 * 2 ], ch, i, j;
  183.     while((ch = text[i++]) && j < sizeof(ret))
  184.     {
  185.         if(ch == '\'')
  186.         {
  187.             if(j < sizeof(ret) - 2)
  188.             {
  189.                 ret[j++] = '\'';
  190.                 ret[j++] = '\'';
  191.             }
  192.         }
  193.         else if(j < sizeof(ret))
  194.         {
  195.             ret[j++] = ch;
  196.         }
  197.         else
  198.         {
  199.             j++;
  200.         }
  201.     }
  202.     ret[sizeof(ret) - 1] = '\0';
  203.     return ret;
  204. }
  205. SendMessageToAdmins(color, message[])
  206. {
  207.     for (new i = 0; i < PLAYERS; i++)
  208.     {
  209.         if (IsPlayerConnected2(i) && User[i][UserLevel] != 0) SendClientMessage2(i, color, message);
  210.     }
  211. }
  212. SendClientMessage2(playerid, color, message[])
  213. {
  214.     if (strlen(message) <= MAX_CLIENT_MSG_LENGTH)
  215.     {
  216.         SendClientMessage(playerid, color, message);
  217.     }
  218.     else
  219.     {
  220.         new string[MAX_CLIENT_MSG_LENGTH + 1];
  221.         strmid(string, message, 0, MAX_CLIENT_MSG_LENGTH);
  222.         SendClientMessage(playerid, color, string);
  223.     }
  224.     return 1;
  225. }
  226.  
  227. SendClientMessageToAll2(color, message[])
  228. {
  229.     for (new i = 0; i < PLAYERS; i++)
  230.     {
  231.         if (IsPlayerConnected2(i)) SendClientMessage2(i, color, message);
  232.     }
  233.     return 1;
  234. }
  235. IsPlayerConnected2(playerid)
  236. {
  237.     return IsPlayerNPC(playerid) == 0 && playerid < sizeof(isconnected) ? isconnected[playerid] : 0;
  238. }
  239. ShowPlayerDialog2(playerid, dialogid, style, caption[], info[], button1[], button2[])
  240. {
  241.     ShowPlayerDialog(playerid, dialogid, style, caption, info, button1, button2);
  242.     pldialog[playerid] = dialogid;
  243. }
  244. SendPlayerFormattedText(playerid, color, str[], define1[], define2[])
  245. {
  246.     new tstr[256];
  247.     format(tstr, 256, str, define1, define2);
  248.     SendClientMessage2(playerid, color, tstr);
  249.     return 1;
  250. }
  251.  
  252. SendAllFormattedText(color, str[], define1[], define2[])
  253. {
  254.     new tstr[256];
  255.     format(tstr, 256, str, define1, define2);
  256.     SendClientMessageToAll2(color, tstr);
  257.     return 1;
  258. }
  259. //== Main ==//
  260. main()
  261. {
  262.     print("//=============Credits=============\\");
  263.     print("|=========== BulletRaja ===========|");
  264.     print("|=========== Includes ===========|");
  265.     print("|=========== Thanks All ===========|");
  266.     print("//=============Credits=============\\");
  267. }
  268.  
  269. public OnGameModeInit()
  270. {
  271.     Database = db_open("SDataBase.db");
  272.     db_query(Database, "CREATE TABLE IF NOT EXISTS users (UserLevel INTEGER PRIMARY KEY AUTOINCREMENT, username VARCHAR(24) COLLATE NOCASE, password VARCHAR(129), admin INTEGER DEFAULT 0 NOT NULL, vip INTEGER DEFAULT 0 NOT NULL, money INTEGER DEFAULT 0 NOT NULL, score INTEGER DEFAULT 0 NOT NULL, kills INTEGER DEFAULT 0 NOT NULL, deaths INTEGER DEFAULT 0 NOT NULL, kd INTEGER DEFAULT 0 NOT NULL)");
  273.     SetGameModeText(""SV_GM""SCRIPT_V"");
  274.     SendRconCommand("language "SV_LANG"");
  275.     SendRconCommand("rcon_password "SV_RCON"");
  276.     SendRconCommand("hostname "SV_NAME"");
  277.     SendRconCommand("weburl "SV_URL"");
  278.     SendRconCommand("mapname "SV_MAP"");
  279.    
  280.     for (new c = 1; c < 300; c++)
  281.     {
  282.         if (c == 74) continue;
  283.         AddPlayerClass(c, CLASS_X, CLASS_Y, CLASS_Z, 0.0, 0, 0, 0, 0, 0, 0);
  284.     }
  285.     return 1;
  286. }
  287.  
  288. public OnGameModeExit()
  289. {
  290.     db_close(Database);
  291.     return 1;
  292. }
  293.  
  294. public OnPlayerRequestClass(playerid, classid)
  295. {
  296.     new playername[MAX_PLAYER_NAME], str[270];
  297.     GetPlayerName(playerid, playername, MAX_PLAYER_NAME);
  298.     if (isconnected[playerid] == 0)
  299.     {
  300.         isconnected[playerid] = 1;
  301.         SetPlayerColor(playerid, COLOR_PLAYER);
  302.         TogglePlayerSpectating(playerid, 1);
  303.         SetPlayerVirtualWorld(playerid, 1);
  304.  
  305.         for(new i; i < _: USER_DATA; ++i) User[playerid][USER_DATA: i] = 0;
  306.  
  307.         GetPlayerName(playerid, User[playerid][UserName], MAX_PLAYER_NAME);
  308.         new Query[71], DBResult: Result;
  309.         format(Query, sizeof(Query), "SELECT password FROM users WHERE username = '%s' LIMIT 0, 1", DB_Escape(User[playerid][UserName]));
  310.         Result = db_query(Database, Query);
  311.         if(db_num_rows(Result))
  312.         {
  313.          db_get_field_assoc(Result, "password", User[playerid][Password], 129);
  314.          format(str, sizeof(str), "Welcome to {00FFF3}%s.\n\n"COL_RED"Account:{FFFFFF} %s\n\nPlease enter your password below:", SV_SNAME, RPN(playerid));
  315.          ShowPlayerDialog2(playerid, DIALOG_LOGIN, DIALOG_STYLE_PASSWORD, "Login to your account", str, "Login", "Cancel");
  316.          SendPlayerFormattedText(playerid, COLOR_LBLUE, "Welcome back %s to {FF33CC}"SV_SNAME"{FFFFFF}.", playername, "");
  317.         }
  318.         else
  319.         {
  320.             format(str, sizeof(str), "Welcome to {FFB900}%s.\n\n"COL_RED"Account:{FFFFFF} %s\n\nRegister an account to play.\n\nPlease put the password below:", SV_SNAME, RPN(playerid));
  321.             ShowPlayerDialog2(playerid, DIALOG_REGISTER, DIALOG_STYLE_PASSWORD, "Register an account", str, "Continue", "Cancel");
  322.             SendPlayerFormattedText(playerid, COLOR_WHITE, "Welcome %s to {FF33CC}"SV_SNAME"{FFFFFF}.", playername, "");
  323.         }
  324.         db_free_result(Result);
  325.         return 0;
  326.     }
  327.     return 1;
  328. }
  329.  
  330. public OnPlayerConnect(playerid)
  331. {
  332.     return 1;
  333. }
  334.  
  335. public OnPlayerDisconnect(playerid, reason)
  336. {
  337.     if(User[playerid][Logged] == true)
  338.     {
  339.         new Query[128];
  340.         format(Query, sizeof(Query), "UPDATE users SET aLevel = %d, vLevel = %d, money = %d, score = %d, kills = %d, deaths = %d, kd = %d WHERE username = '%s'", User[playerid][UserLevel], User[playerid][UserVip], GetPlayerMoney(playerid), GetPlayerScore(playerid), User[playerid][UserKills], User[playerid][UserDeaths], User[playerid][UserK], DB_Escape(User[playerid][UserName]));
  341.         db_query(Database, Query);
  342.     }
  343.     for(new i; i < _: USER_DATA; ++i) User[playerid][USER_DATA: i] = 0;
  344.     return 1;
  345. }
  346.  
  347. public OnPlayerSpawn(playerid)
  348. {
  349.     return 1;
  350. }
  351.  
  352. public OnPlayerDeath(playerid, killerid, reason)
  353. {
  354.     User[killerid][UserKills]++;
  355.     User[playerid][UserDeaths]++;
  356.     return 1;
  357. }
  358.  
  359. public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
  360. {
  361.     new name[MAX_PLAYER_NAME], playername[25], temp1, tmp2[256], tmp[256], str[270];
  362.     GetPlayerName(playerid, name, sizeof(name));
  363.     GetPlayerName(playerid, playername, sizeof(playername));
  364.     if(dialogid == DIALOG_LOGIN)
  365.     {
  366.         if(response)
  367.         {
  368.             if(!inputtext[0])
  369.             {
  370.              format(str, sizeof(str), "Welcome to {00FFF3}%s.\n\n"COL_RED"Account:{FFFFFF} %s\n\nPlease enter your password below:", SV_SNAME, RPN(playerid));
  371.              ShowPlayerDialog2(playerid, DIALOG_LOGIN, DIALOG_STYLE_PASSWORD, "Login to your account", str, "Login", "Cancel");
  372.              SendPlayerFormattedText(playerid, COLOR_LBLUE, "Welcome back %s to {FF33CC}"SV_SNAME"{FFFFFF}.", playername, "");
  373.              return 1;
  374.             }
  375.             new buf[129];
  376.             WP_Hash(buf, 129, inputtext);
  377.             if(!strcmp(buf, User[playerid][Password], false))
  378.             {
  379.                 new Query[75], DBResult: Result;
  380.                 format(Query, sizeof(Query), "SELECT * FROM users WHERE username = '%s' LIMIT 0, 1", DB_Escape(User[playerid][UserName]));
  381.                 Result = db_query(Database, Query);
  382.                 if(db_num_rows(Result))
  383.                 {
  384.                     db_get_field_assoc(Result, "UserID", Query, 7);
  385.                     User[playerid][PlayerID] = strval(Query);
  386.  
  387.                     db_get_field_assoc(Result, "aLevel", Query, 3);
  388.                     User[playerid][UserLevel] = strval(Query);
  389.  
  390.                     db_get_field_assoc(Result, "vLevel", Query, 3);
  391.                     User[playerid][UserVip] = strval(Query);
  392.  
  393.                     db_get_field_assoc(Result, "money", Query, 10);
  394.                     User[playerid][UserMoney] = strval(Query);
  395.  
  396.                     db_get_field_assoc(Result, "score", Query, 7);
  397.                     User[playerid][UserScore] = strval(Query);
  398.  
  399.                     db_get_field_assoc(Result, "kills", Query, 10);
  400.                     User[playerid][UserKills] = strval(Query);
  401.  
  402.                     db_get_field_assoc(Result, "deaths", Query, 10);
  403.                     User[playerid][UserDeaths] = strval(Query);
  404.  
  405.                     db_get_field_assoc(Result, "kd", Query, 10);
  406.                     User[playerid][UserK] = strval(Query);
  407.  
  408.                     User[playerid][Logged] = true;
  409.                     TogglePlayerSpectating(playerid, 0);
  410.  
  411.                     GivePlayerMoney(playerid, User[playerid][UserMoney]);
  412.                     SetPlayerScore(playerid, User[playerid][UserScore]);
  413.  
  414.                     SendClientMessage2(playerid, COLOR_WHITE, "Login successful, your status has been restored!");
  415.                     printf("[logged] %s (Id%d) has logged in.", playername, playerid);
  416.                 }
  417.                 db_free_result(Result);
  418.             }
  419.             else
  420.             {
  421.                 temp1 = GetPVarInt(playerid, "loginattempts")+1;
  422.                 if (temp1 == 3)
  423.                 {
  424.                     SendClientMessage2(playerid, COLOR_RED, "Bad password threshold reached. You have been kicked!");
  425.                     SetTimerEx("KickBanTimer", 50, 0, "dd", playerid, 1);
  426.                 }
  427.                 else
  428.                 {
  429.                     if (temp1 == 1)
  430.                     {
  431.                         SendClientMessage2(playerid, COLOR_HELP, "If you need support please say what help you need in chat, and our admins will be informed.");
  432.                     }
  433.                     SetPVarInt(playerid, "loginattempts", temp1);
  434.                     format(tmp, 32, "Login to your account (%d/3)", temp1);
  435.                     format(tmp2, 280, "Type your password below to login to your account.\n\n"COL_RED"Account:{FFFFFF} %s\n\n{E60026}Password incorrect. Attempts remaining - %d.",RPN(playerid), 3 - temp1);
  436.                     ShowPlayerDialog2(playerid, DIALOG_LOGIN, DIALOG_STYLE_PASSWORD, tmp, tmp2, "Login", "Cancel");
  437.                     format(tmp2, 280, "Password incorrect. Attempts remaining - %d.", 3 - temp1);
  438.                     SendClientMessage2(playerid, COLOR_RED, tmp2);
  439.              }
  440.              }
  441.         }
  442.         //else Kick(playerid);
  443.         return 1;
  444.     }
  445.     if(dialogid == DIALOG_REGISTER)
  446.     {
  447.         if(response)
  448.         {
  449.             if(strlen(inputtext) < 3 || strlen(inputtext) > 24)
  450.             {
  451.                 format(str, sizeof(str), "Welcome to {FFB900}%s.\n\n"COL_RED"Account:{FFFFFF} %s\n\nRegister an account to play.\nThe password is invalid, Its lenght should be 3-24 characters\n\nPlease put the password below:", SV_SNAME, RPN(playerid));
  452.                 ShowPlayerDialog2(playerid, DIALOG_REGISTER, DIALOG_STYLE_PASSWORD, "Register an account", str, "Continue", "Cancel");
  453.                 return 1;
  454.             }
  455.             new Query[208];
  456.             WP_Hash(User[playerid][Password], 129, inputtext);
  457.             format(Query, sizeof(Query), "INSERT INTO users (username, password) VALUES ('%s', '%s')", DB_Escape(User[playerid][UserName]), DB_Escape(User[playerid][Password]));
  458.             db_query(Database, Query);
  459.  
  460.             User[playerid][Logged] = true;
  461.             TogglePlayerSpectating(playerid, 0);
  462.             SendPlayerFormattedText(playerid, COLOR_YELLOW, "Account '%s' created, you have been logged in automatically!", playername, "");
  463.             SendAllFormattedText(COLOR_GREEN, "%s has registered a new account. Welcome to our server!", playername, "");
  464.             printf("[registered] %s (Id%d) has registered a new account.", playername, playerid);
  465.         }
  466.         return 1;
  467.     }
  468.     return 1;
  469. }
  470. /** Commands **/
  471. CMD:setadmin(playerid, params[])
  472. {
  473.     new giveplayerid, moneys1, giveplayer[25], playername[25], string[256];
  474.     if (User[playerid][UserLevel] < 6 && !IsPlayerAdmin(playerid)) return 0;
  475.     if (sscanf(params, "ud", giveplayerid, moneys1)) return SendClientMessage2(playerid, COLOR_WHITE, "Usage: /setadmin [playerid] [level 1-6]");
  476.     if (!IsPlayerConnected2(giveplayerid)) return SendClientMessage2(playerid, COLOR_RED, "Error: Inactive player id!");
  477.     if (moneys1 < 0 || moneys1 > 6) return SendClientMessage2(playerid, COLOR_RED, "Error: Invalid admin level.");
  478.     GetPlayerName(giveplayerid, giveplayer, MAX_PLAYER_NAME);
  479.     if (User[playerid][UserLevel] >= User[playerid][UserLevel] && User[playerid][UserLevel] < 6 && !IsPlayerAdmin(playerid)) return SendPlayerFormattedText(playerid, COLOR_RED, "Error: You cannot Make admin %s", giveplayer, "");
  480.     GetPlayerName(giveplayerid, giveplayer, MAX_PLAYER_NAME);
  481.     if (moneys1 == User[playerid][UserLevel])
  482.     {
  483.         format(string, 64, "%s is already admin level %d.", giveplayer, moneys1);
  484.         SendClientMessage2(playerid, COLOR_WHITE, string);
  485.         return 1;
  486.     }
  487.     GetPlayerName(playerid, playername, MAX_PLAYER_NAME);
  488.     User[playerid][UserLevel] = moneys1;
  489.     format(string, 64, "You have been set as admin level %d.", moneys1);
  490.     SendClientMessage2(giveplayerid, COLOR_YELLOW, string);
  491.     format(string, 64, "You have set %s as admin level %d.", giveplayer, moneys1);
  492.     SendClientMessage2(playerid, COLOR_YELLOW, string);
  493.     return 1;
  494. }
  495.  
  496. CMD:ac(playerid, params[])
  497. {
  498.     new string[172];
  499.     if(User[playerid][UserLevel] < 1) return 0;
  500.     if(isnull(params)) return SendClientMessage(playerid, -1, "Please use /ac [Message]");
  501.     new PName[MAX_PLAYER_NAME+1];
  502.     GetPlayerName(playerid, PName, sizeof(PName));
  503.     format(string, sizeof(string), "[Admin Chat][%s] %s: %s", PName, params);
  504.     SendMessageToAdmins(COLOR_RED, string);
  505.     return 1;
  506. }
  507.  
  508. CMD:asay(playerid, params[])
  509.   {
  510.   if(User[playerid][UserLevel] < 1) return 0;
  511.   new text[128];
  512.   if(sscanf(params, "s[128]",text)) return SendClientMessage(playerid, 0xFFFFFFFF, "Usage: /asay [text]");
  513.   new string[128];
  514.   new pName[128];
  515.   GetPlayerName(playerid,pName,128);
  516.   format(string,sizeof string,"[%s]%s: %s",pName,text);
  517.   SendClientMessageToAll(COLOR_GREEN,string);
  518.   return 1;
  519. }
  520. CMD:admins(playerid, params[])
  521. {
  522.   new admins, strings[270];
  523.   if(User[playerid][UserScore] < 100) return SendClientMessage(playerid, COLOR_WHITE,"[Server]: You must have 100 Scores to see online admins");
  524.   SendClientMessage(playerid, COLOR_BLUE, "Online Admins");
  525.   for(new i = 0; i < PLAYERS; i++)
  526.   {
  527.    if (IsPlayerConnected(i))
  528.    {
  529.     if(User[i][UserLevel] >= 1)
  530.     {
  531.        new string[128], pname[24];
  532.        GetPlayerName(i, pname, sizeof(pname));
  533.        admins++;
  534.        format(string, sizeof(string), "%s {00FF00} Admin Level: {FF0000}%d", pname, User[i][UserLevel]);
  535.        SendClientMessage(playerid, COLOR_RED, string);
  536.     }
  537.   }
  538.   }
  539.   if (admins == 0)
  540.   {
  541.    SendClientMessage(playerid, COLOR_RED, "[Server]: Their are no admins online.");
  542.   }
  543.   else
  544.   {
  545.    format(strings, sizeof(strings), "[Server]: There are currently %d Admins online.", admins);
  546.    SendClientMessage(playerid, COLOR_GREEN, strings);
  547.   }
  548.   return 1;
  549. }
Add Comment
Please, Sign In to add comment