Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- CeSuX Andreas 0.2
- made by CeSuX
- -=Commands=-
- Player Commands:
- /PM /CMDS
- /STATS
- Admin Level 1 Commands:
- /KICK /MUTE /UNMUTE
- Admin Level 2 Commands:
- /BAN /SLAP
- */
- // INCLUDES ===============================
- #include <a_samp>
- #include <izcmd>
- #include <sscanf2>
- #include <a_mysql>
- native WP_Hash(buffer[], len, const str[]);
- // ========================================
- // COLORS =====================
- #define COLOR_RED 0xFF0000FF
- #define COLOR_YELLOW 0xFFFF00FF
- #define COLOR_GREEN 0x33AA33FF
- // ============================
- // COMMANDS =========================================
- #define CMDS "\t {FFFF00}*Player Commands*\
- \n/CMDS /PM /R /STATS\
- \n\t{FFFF00}*Admin Level 1 Commands*\
- \n/KICK /MUTE /UNMUTE\
- \n\t{FFFF00}*Admin Level 2 Commands*\
- /BAN /SLAP"
- // ==================================================
- // SETTINGS ======================
- #define MYSQL_HOST "localhost"
- #define MYSQL_USER "root"
- #define MYSQL_DATABASE "users"
- #define MYSQL_PASSWORD ""
- #define GamemodeText "Build 0.2"
- // ===============================
- // DIALOGS =====
- enum
- {
- DIALOG_CMDS,
- DIALOG_STATS,
- DIALOG_REGISTER,
- DIALOG_LOGIN
- };
- // =================
- // PLAYER DATA ====================================
- enum PlayerData
- {
- RepliedPlayer[MAX_PLAYERS], // Doesn't save
- bool:PlayerIsMuted[MAX_PLAYERS], // Doesn't save
- ID,
- Name[MAX_PLAYER_NAME],
- Password[129],
- IP[16],
- Money,
- Score,
- AdminLevel,
- };
- new pData[MAX_PLAYERS][PlayerData];
- // ================================================
- // TIMERS =============
- forward KickTimer(pID);
- public KickTimer(pID)
- {Kick(pID);}
- forward BanTimer(pID);
- public BanTimer(pID)
- {Ban(pID);}
- // ====================
- // MYSQL =========================================================================
- new mysql;
- ConnectToMySQL()
- {
- mysql_log(LOG_ALL);
- mysql = mysql_connect(MYSQL_HOST, MYSQL_USER, MYSQL_DATABASE, MYSQL_PASSWORD);
- if(mysql_errno() != 0) print("[MySQL] The connection has failed.");
- else printf("[MySQL] The connection was successful.");
- }
- forward OnAccountCheck(playerid);
- public OnAccountCheck(playerid)
- {
- new rows, fields;
- cache_get_data(rows, fields, mysql);
- if(rows)
- {
- cache_get_field_content(0, "Password", pData[playerid][Password], 129);
- pData[playerid][ID] = cache_get_field_content_int(0, "ID");
- ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_PASSWORD,
- "{FFFF00}Login/Register Window",
- "This account has been already registered.\
- \nPlease login to continue.",
- "{33AA33}Login", "{FF0000}Quit");
- }
- else ShowPlayerDialog(playerid, DIALOG_REGISTER, DIALOG_STYLE_PASSWORD,
- "{FFFF00}Login/Register Window",
- "This account has been already registered.\
- \nPlease register to continue.",
- "{33AA33}Login", "{FF0000}Quit");
- return 1;
- }
- forward OnAccountLoad(playerid);
- public OnAccountLoad(playerid)
- {
- pData[playerid][AdminLevel] = cache_get_field_content_int(0, "Admin Level");
- pData[playerid][Money] = cache_get_field_content_int(0, "Money");
- pData[playerid][Score] = cache_get_field_content_int(0, "Score");
- TogglePlayerSpectating(playerid, false);
- GivePlayerMoney(playerid, pData[playerid][Money]);
- SetPlayerScore(playerid, pData[playerid][Score]);
- return 1;
- }
- forward OnAccountRegister(playerid);
- public OnAccountRegister(playerid)
- {
- pData[playerid][ID] = cache_insert_id();
- printf("[Registration] New account registered. Database ID: [%d]", pData[playerid][ID]);
- TogglePlayerSpectating(playerid, false);
- return 1;
- }
- //================================================================================
- // FUNCTIONS =====================================================================================================
- Pm(senderid, receiverid, const Message[128])
- {
- new pName[MAX_PLAYER_NAME]; GetPlayerName(receiverid, pName, sizeof(pName));
- new String[128]; format(String, sizeof(String), "To: %s: %s", pName, Message);
- SendClientMessage(senderid, COLOR_YELLOW, String);
- GetPlayerName(senderid, pName, sizeof(pName)); format(String, sizeof(String), "From: %s: %s", pName, Message);
- SendClientMessage(receiverid, COLOR_YELLOW, String);
- }
- KickEx(adminid, playerid, const Reason[50])
- {
- new aName[MAX_PLAYER_NAME]; GetPlayerName(adminid, aName, sizeof(aName));
- new pName[MAX_PLAYER_NAME]; GetPlayerName(playerid, pName, sizeof(pName));
- new String[128]; format(String, sizeof(String), "Player %s got kicked by %s (%s).", pName, aName, Reason);
- SendClientMessageToAll(COLOR_YELLOW, String);
- SetTimerEx("KickTimer", 2000, false, "i", playerid);
- }
- BanEx(adminid, playerid, const Reason[50])
- {
- new aName[MAX_PLAYER_NAME]; GetPlayerName(adminid, aName, sizeof(aName));
- new pName[MAX_PLAYER_NAME]; GetPlayerName(playerid, pName, sizeof(pName));
- new String[128]; format(String, sizeof(String), "Player %s got banned by %s (%s).", pName, aName, Reason);
- SendClientMessageToAll(COLOR_YELLOW, String);
- SetTimerEx("BanTimer", 2000, false, "i", playerid);
- }
- Mute(adminid, playerid, const Reason[50])
- {
- new pName[MAX_PLAYER_NAME]; GetPlayerName(playerid, pName, sizeof(pName));
- new String[128]; format(String, sizeof(String), "You freezed player %s(%s)", pName, Reason);
- SendClientMessage(adminid, COLOR_YELLOW, String);
- GetPlayerName(adminid, pName, sizeof(pName)); format(String, sizeof(String), "You got frozen by admin %s (%s)", pName, Reason);
- SendClientMessage(playerid, COLOR_YELLOW, String);
- }
- UnMute(adminid, playerid, const Reason[50])
- {
- new pName[MAX_PLAYER_NAME]; GetPlayerName(playerid, pName, sizeof(pName));
- new String[128]; format(String, sizeof(String), "You unfreezed player %s(%s)", pName, Reason);
- SendClientMessage(adminid, COLOR_YELLOW, String);
- GetPlayerName(adminid, pName, sizeof(pName)); format(String, sizeof(String), "You got unfrozen by admin %s (%s)", pName, Reason);
- SendClientMessage(playerid, COLOR_YELLOW, String);
- }
- Slap(adminid, playerid)
- {
- new pName[MAX_PLAYER_NAME]; GetPlayerName(playerid, pName, sizeof(pName));
- new String[128]; format(String, sizeof(String), "You slapped %s", pName);
- SendClientMessage(adminid, COLOR_RED, String);
- new Float:X, Float:Y, Float:Z;
- GetPlayerPos(playerid, X, Y, Z); SetPlayerPos(playerid, X, Y, Z + 5);
- }
- // ==================================================================================================================================
- main()
- {
- print("\n");
- print("\t -=CeSuX Andreas=-");
- print("\tStarted successfully");
- print("\n");
- }
- public OnGameModeInit()
- {
- ConnectToMySQL();
- SetGameModeText(GamemodeText);
- return 1;
- }
- public OnGameModeExit()
- {return 1;}
- public OnPlayerConnect(playerid)
- {
- TogglePlayerSpectating(playerid, true);
- new query[128], pName[MAX_PLAYER_NAME]; GetPlayerName(playerid, pName, sizeof(pName));
- mysql_format(mysql, query, sizeof(query), "SELECT `Password`, `ID` FROM `players` WHERE `Name` = '%e' LIMIT 1", pName);
- mysql_tquery(mysql, query, "OnAccountCheck", "i", playerid);
- pData[playerid][PlayerIsMuted] = false;
- pData[playerid][RepliedPlayer] = INVALID_PLAYER_ID;
- new Message[90]; format(Message, sizeof(Message), "Player %s has joined the game!", pName);
- SendClientMessageToAll(COLOR_YELLOW, Message);
- return 1;
- }
- public OnPlayerDisconnect(playerid, reason)
- {
- new query[128];
- mysql_format(mysql, query, sizeof(query), "UPDATE `players` SET `Money` = %d, `Score` = %d WHERE `ID` = %d",
- GetPlayerMoney(playerid), GetPlayerScore(playerid), pData[playerid][ID]);
- mysql_tquery(mysql, query, "", "");
- pData[playerid][PlayerIsMuted] = false;
- pData[playerid][RepliedPlayer] = INVALID_PLAYER_ID;
- new DisconnectReason[3][] =
- {
- "Timeout/Crashed",
- "Quited",
- "Kicked/Banned"
- };
- new pName[MAX_PLAYER_NAME]; GetPlayerName(playerid, pName, sizeof(pName));
- new Message[128]; format(Message, sizeof(Message), "Player %s left the server (%s).", pName, DisconnectReason[reason]);
- return 1;
- }
- public OnPlayerSpawn(playerid)
- {return 1;}
- public OnPlayerText(playerid, text[])
- {
- if(pData[playerid][PlayerIsMuted])
- {
- SendClientMessage(playerid, COLOR_RED, "You are muted, you cannot chat.");
- return 0;
- }
- new String[50]; format(String, sizeof(String), "(%i) %s", playerid, text);
- SendPlayerMessageToAll(playerid, String);
- return 0;
- }
- public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
- {
- switch(dialogid)
- {
- case DIALOG_LOGIN:
- {
- if(!response) Kick(playerid);
- new hashpass[129], query[100], pName[MAX_PLAYER_NAME];
- GetPlayerName(playerid, pName, sizeof(pName));
- WP_Hash(hashpass, sizeof(hashpass), pData[playerid][Password]);
- if(!strcmp(hashpass, pData[playerid][Password]))
- {
- mysql_format(mysql, query, sizeof(query), "SELECT * FROM `players` WHERE `Name` = '%e' LIMIT 1", pName);
- mysql_tquery(mysql, query, "OnAccountLoad", "i", playerid);
- }
- else
- {
- SendClientMessage(playerid, COLOR_RED, "Incorrect password, try again.");
- ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_PASSWORD,
- "{FFFF00}Login/Register Window",
- "This account has been already registered.\
- \nPlease login to continue.",
- "{33AA33}Login", "{FF0000}Quit");
- }
- }
- case DIALOG_REGISTER:
- {
- if(!response) Kick(playerid);
- if(strlen(inputtext) < 5)
- {
- SendClientMessage(playerid, COLOR_RED, "Your password has to contain atleast 4 characters.");
- return ShowPlayerDialog(playerid, DIALOG_REGISTER, DIALOG_STYLE_PASSWORD,
- "{FFFF00}Login/Register Window",
- "This account has been already registered.\
- \nPlease register to continue.",
- "{33AA33}Login", "{FF0000}Quit");
- }
- new query[512], pName[MAX_PLAYER_NAME], pIP[16];
- GetPlayerName(playerid, pName, sizeof(pName));
- GetPlayerIp(playerid, pIP, sizeof(pIP));
- WP_Hash(pData[playerid][Password], 129, inputtext);
- mysql_format(mysql, query, sizeof(query), "INSERT INTO `players` (`Name`, `Password`, `IP`, `Admin Level`, `Money`, `Score`) VALUES ('%e', '%e', '%e', 0, 0, 0)",
- pName, pData[playerid][Password], pIP);
- mysql_tquery(mysql, query, "OnAccountRegister", "i", playerid);
- }
- }
- return 1;
- }
- // COMMANDS ==========================================================================================
- public OnPlayerCommandReceived(playerid, cmdtext[])
- {
- return 1;
- }
- CMD:cmds(playerid, params[]) // Player command
- {
- ShowPlayerDialog(playerid, DIALOG_CMDS, DIALOG_STYLE_MSGBOX, "{FFFF00}CeSuX Andreas - Commands", CMDS, "{33AA33}Okay", "");
- return 1;
- }
- CMD:commands(playerid, params[]) // Player command
- {
- return cmd_cmds(playerid, params);
- }
- CMD:stats(playerid, params[]) // Player command
- {
- new pID;
- if(sscanf(params, "u", pID)) return SendClientMessage(playerid, COLOR_RED, "Usage: /Stats ID.");
- if(!IsPlayerConnected(playerid)) return SendClientMessage(pID, COLOR_RED, "Player is not connected.");
- new pName[MAX_PLAYER_NAME]; GetPlayerName(pID, pName, sizeof(pName));
- new Caption[50]; format(Caption, sizeof(Caption), "{FFFF00}Player - %s", pName);
- new Stats[128]; format(Stats, sizeof(Stats), "\n\n\
- \nAdmin Level: %d\
- \nScore: %d\
- \nMoney: %d\
- \nID: %d\
- \n\n",
- 0, GetPlayerScore(pID), GetPlayerMoney(pID), pID);
- ShowPlayerDialog(playerid, DIALOG_STATS, DIALOG_STYLE_MSGBOX, Caption, Stats, "{33AA33}Okay", "");
- return 1;
- }
- CMD:pm(playerid, params[]) // Player command
- {
- new pID, Message[128];
- if(sscanf(params, "us[128]", pID, Message)) return SendClientMessage(playerid, COLOR_RED, "Usage: /Pm ID Message.");
- if(!IsPlayerConnected(pID)) return SendClientMessage(pID, COLOR_RED, "Player is not connected.");
- Pm(playerid, pID, Message);
- pData[playerid][RepliedPlayer] = playerid;
- return 1;
- }
- CMD:r(playerid, params[]) // Player command
- {
- new Message[128];
- if(sscanf(params, "s[128]", Message)) return SendClientMessage(playerid, COLOR_RED, "Usage: /r Message.");
- if(!IsPlayerConnected(pData[playerid][RepliedPlayer])) return SendClientMessage(playerid, COLOR_RED, "You don't have a person to reply to.");
- Pm(playerid, pData[playerid][RepliedPlayer], Message);
- return 1;
- }
- CMD:reply(playerid, params[]) // Player command
- {return cmd_r(playerid, params);}
- CMD:kick(playerid, params[]) // Admin level 1 command
- {
- new pID, Reason[50];
- if(sscanf(params, "us[50]", pID, Reason)) return SendClientMessage(playerid, COLOR_RED, "Usage: /Kick ID Reason.");
- if(!IsPlayerConnected(pID)) return SendClientMessage(playerid, COLOR_RED, "Player is not connected.");
- KickEx(playerid, pID, Reason);
- return 1;
- }
- CMD:ban(playerid, params[]) // Admin level 2 command
- {
- new pID, Reason[50];
- if(sscanf(params, "us[50]", pID, Reason)) return SendClientMessage(playerid, COLOR_RED, "Usage: /Kick ID Reason.");
- if(!IsPlayerConnected(pID)) return SendClientMessage(playerid, COLOR_RED, "Player is not connected.");
- BanEx(playerid, pID, Reason);
- return 1;
- }
- CMD:mute(playerid, params[]) // Admin level 1 command
- {
- new pID, Reason[50];
- if(sscanf(params, "us[50]", pID, Reason)) return SendClientMessage(playerid, COLOR_RED, "Usage: /Mute ID Reason.");
- if(!IsPlayerConnected(pID)) return SendClientMessage(playerid, COLOR_RED, "Player is not connected.");
- Mute(playerid, pID, Reason);
- pData[pID][PlayerIsMuted] = true;
- return 1;
- }
- CMD:unmute(playerid, params[]) // Admin level 1 command
- {
- new pID, Reason[50];
- if(sscanf(params, "us[50]", pID, Reason)) return SendClientMessage(playerid, COLOR_RED, "Usage: /Mute ID Reason.");
- if(!IsPlayerConnected(pID)) return SendClientMessage(playerid, COLOR_RED, "Player is not connected.");
- UnMute(playerid, pID, Reason);
- pData[playerid][PlayerIsMuted] = false;
- return 1;
- }
- CMD:slap(playerid, params[]) // Admin level 2 command
- {
- new pID;
- if(sscanf(params, "u", pID)) return SendClientMessage(playerid, COLOR_RED, "Usage: /Slap ID.");
- if(!IsPlayerConnected(pID)) return SendClientMessage(playerid, COLOR_RED, "Player is not connected.");
- Slap(playerid, pID);
- return 1;
- }
- public OnPlayerCommandPerformed(playerid, cmdtext[], success)
- {
- if(!success)
- return SendClientMessage(playerid, COLOR_RED, "Unknown command, use /cmds for all commands.");
- return 1;
- }
- // ====================================================================================================
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement