pawn Код:
#include <a_samp>
#include <dini>
#include <dutils>
#pragma unused ret_memcpy
#define FILTERSCRIPT
#if defined FILTERSCRIPT
#define dcmd(%1,%2,%3) if ((strcmp((%3)[1], #%1, true, (%2)) == 0) && ((((%3)[(%2) + 1] == 0) && (dcmd_%1(playerid, "")))||(((%3)[(%2) + 1] == 32) && (dcmd_%1(playerid, (%3)[(%2) + 2]))))) return 1
#define COLOR_GREY 0xAFAFAFAA
#define COLOR_ACTIVEBORDER 0xB4B4B4FF
#define COLOR_ACTIVECAPTION 0x99B4D1FF
#define COLOR_ACTIVECAPTIONTEXT 0x000000FF
#define COLOR_ALICEBLUE 0xF0F8FFFF
#define COLOR_ANTIQUEWHITE 0xFAEBD7FF
#define COLOR_APPWORKSPACE 0xABABABFF
#define COLOR_AQUA 0x00FFFFFF
#define COLOR_AQUAMARINE 0x7FFFD4FF
#define COLOR_AZURE 0xF0FFFFFF
#define COLOR_BEIGE 0xF5F5DCFF
#define COLOR_BISQUE 0xFFE4C4FF
#define COLOR_BLACK 0x000000FF
#define COLOR_BLANCHEDALMOND 0xFFEBCDFF
#define COLOR_BLUE 0x0000FFFF
#define COLOR_BLUEVIOLET 0x8A2BE2FF
#define COLOR_BROWN 0xA52A2AFF
#define COLOR_BURLYWOOD 0xDEB887FF
#define COLOR_BUTTONFACE 0xF0F0F0FF
#define COLOR_BUTTONHIGHLIGHT 0xFFFFFFFF
#define COLOR_BUTTONSHADOW 0xA0A0A0FF
#define COLOR_CADETBLUE 0x5F9EA0FF
#define COLOR_CHARTREUSE 0x7FFF00FF
#define COLOR_CHOCOLATE 0xD2691EFF
#define COLOR_CONTROL 0xF0F0F0FF
#define COLOR_CONTROLDARK 0xA0A0A0FF
#define COLOR_CONTROLDARKDARK 0x696969FF
#define COLOR_CONTROLLIGHT 0xE3E3E3FF
#define COLOR_CONTROLLIGHTLIGHT 0xFFFFFFFF
#define COLOR_CONTROLTEXT 0x000000FF
#define COLOR_CORAL 0xFF7F50FF
#define COLOR_CORNFLOWERBLUE 0x6495EDFF
#define COLOR_CORNSILK 0xFFF8DCFF
#define COLOR_CRIMSON 0xDC143CFF
#define COLOR_CYAN 0x00FFFFFF
#define COLOR_DARKBLUE 0x00008BFF
#define COLOR_DARKCYAN 0x008B8BFF
#define COLOR_DARKGOLDENROD 0xB8860BFF
#define COLOR_DARKGRAY 0xA9A9A9FF
#define COLOR_DARKGREEN 0x006400FF
#define COLOR_DARKKHAKI 0xBDB76BFF
#define COLOR_DARKMAGENTA 0x8B008BFF
#define COLOR_DARKOLIVEGREEN 0x556B2FFF
#define COLOR_DARKORANGE 0xFF8C00FF
#define COLOR_DARKORCHID 0x9932CCFF
#define COLOR_DARKRED 0x8B0000FF
#define COLOR_DARKSALMON 0xE9967AFF
#define COLOR_DARKSEAGREEN 0x8FBC8BFF
#define COLOR_DARKSLATEBLUE 0x483D8BFF
#define COLOR_DARKSLATEGRAY 0x2F4F4FFF
#define COLOR_DARKTURQUOISE 0x00CED1FF
#define COLOR_DARKVIOLET 0x9400D3FF
#define COLOR_DEEPPINK 0xFF1493FF
#define COLOR_DEEPSKYBLUE 0x00BFFFFF
#define COLOR_DESKTOP 0x000000FF
#define COLOR_DIMGRAY 0x696969FF
#define COLOR_DODGERBLUE 0x1E90FFFF
#define COLOR_FIREBRICK 0xB22222FF
#define COLOR_FLORALWHITE 0xFFFAF0FF
#define COLOR_FORESTGREEN 0x228B22FF
#define COLOR_FUCHSIA 0xFF00FFFF
#define COLOR_GAINSBORO 0xDCDCDCFF
#define COLOR_GHOSTWHITE 0xF8F8FFFF
#define COLOR_GOLD 0xFFD700FF
#define COLOR_GOLDENROD 0xDAA520FF
#define COLOR_GRADIENTACTIVECAPTION 0xB9D1EAFF
#define COLOR_GRADIENTINACTIVECAPTION 0xD7E4F2FF
#define COLOR_GRAY 0x808080FF
#define COLOR_GRAYTEXT 0x808080FF
#define COLOR_GREEN 0x008000FF
#define COLOR_GREENYELLOW 0xADFF2FFF
#define COLOR_HIGHLIGHT 0x3399FFFF
#define COLOR_HIGHLIGHTTEXT 0xFFFFFFFF
#define COLOR_HONEYDEW 0xF0FFF0FF
#define COLOR_HOTPINK 0xFF69B4FF
#define COLOR_HOTTRACK 0x0066CCFF
#define COLOR_INACTIVEBORDER 0xF4F7FCFF
#define COLOR_INACTIVECAPTION 0xBFCDDBFF
#define COLOR_INACTIVECAPTIONTEXT 0x434E54FF
#define COLOR_INDIANRED 0xCD5C5CFF
#define COLOR_INDIGO 0x4B0082FF
#define COLOR_INFO 0xFFFFE1FF
#define COLOR_INFOTEXT 0x000000FF
#define COLOR_IVORY 0xFFFFF0FF
#define COLOR_KHAKI 0xF0E68CFF
#define COLOR_LAVENDER 0xE6E6FAFF
#define COLOR_LAVENDERBLUSH 0xFFF0F5FF
#define COLOR_LAWNGREEN 0x7CFC00FF
#define COLOR_LEMONCHIFFON 0xFFFACDFF
#define COLOR_LIGHTBLUE 0xADD8E6FF
#define COLOR_LIGHTCORAL 0xF08080FF
#define COLOR_LIGHTCYAN 0xE0FFFFFF
#define COLOR_LIGHTGOLDENRODYELLOW 0xFAFAD2FF
#define COLOR_LIGHTGRAY 0xD3D3D3FF
#define COLOR_LIGHTGREEN 0x90EE90FF
#define COLOR_LIGHTPINK 0xFFB6C1FF
#define COLOR_LIGHTSALMON 0xFFA07AFF
#define COLOR_LIGHTSEAGREEN 0x20B2AAFF
#define COLOR_LIGHTSKYBLUE 0x87CEFAFF
#define COLOR_LIGHTSLATEGRAY 0x778899FF
#define COLOR_LIGHTSTEELBLUE 0xB0C4DEFF
#define COLOR_LIGHTYELLOW 0xFFFFE0FF
#define COLOR_LIME 0x00FF00FF
#define COLOR_LIMEGREEN 0x32CD32FF
#define COLOR_LINEN 0xFAF0E6FF
#define COLOR_MAGENTA 0xFF00FFFF
#define COLOR_MAROON 0x800000FF
#define COLOR_MEDIUMAQUAMARINE 0x66CDAAFF
#define COLOR_MEDIUMBLUE 0x0000CDFF
#define COLOR_MEDIUMORCHID 0xBA55D3FF
#define COLOR_MEDIUMPURPLE 0x9370DBFF
#define COLOR_MEDIUMSEAGREEN 0x3CB371FF
#define COLOR_MEDIUMSLATEBLUE 0x7B68EEFF
#define COLOR_MEDIUMSPRINGGREEN 0x00FA9AFF
#define COLOR_MEDIUMTURQUOISE 0x48D1CCFF
#define COLOR_MEDIUMVIOLETRED 0xC71585FF
#define COLOR_MENU 0xF0F0F0FF
#define COLOR_MENUBAR 0xF0F0F0FF
#define COLOR_MENUHIGHLIGHT 0x3399FFFF
#define COLOR_MENUTEXT 0x000000FF
#define COLOR_MIDNIGHTBLUE 0x191970FF
#define COLOR_MINTCREAM 0xF5FFFAFF
#define COLOR_MISTYROSE 0xFFE4E1FF
#define COLOR_MOCCASIN 0xFFE4B5FF
#define COLOR_NAVAJOWHITE 0xFFDEADFF
#define COLOR_NAVY 0x000080FF
#define COLOR_OLDLACE 0xFDF5E6FF
#define COLOR_OLIVE 0x808000FF
#define COLOR_OLIVEDRAB 0x6B8E23FF
#define COLOR_ORANGE 0xFFA500FF
#define COLOR_ORANGERED 0xFF4500FF
#define COLOR_ORCHID 0xDA70D6FF
#define COLOR_PALEGOLDENROD 0xEEE8AAFF
#define COLOR_PALEGREEN 0x98FB98FF
#define COLOR_PALETURQUOISE 0xAFEEEEFF
#define COLOR_PALEVIOLETRED 0xDB7093FF
#define COLOR_PAPAYAWHIP 0xFFEFD5FF
#define COLOR_PEACHPUFF 0xFFDAB9FF
#define COLOR_PERU 0xCD853FFF
#define COLOR_PINK 0xFFC0CBFF
#define COLOR_PLUM 0xDDA0DDFF
#define COLOR_POWDERBLUE 0xB0E0E6FF
#define COLOR_PURPLE 0x800080FF
#define COLOR_RED 0xFF0000FF
#define COLOR_ROSYBROWN 0xBC8F8FFF
#define COLOR_ROYALBLUE 0x4169E1FF
#define COLOR_SADDLEBROWN 0x8B4513FF
#define COLOR_SALMON 0xFA8072FF
#define COLOR_SANDYBROWN 0xF4A460FF
#define COLOR_SCROLLBAR 0xC8C8C8FF
#define COLOR_SEAGREEN 0x2E8B57FF
#define COLOR_SEASHELL 0xFFF5EEFF
#define COLOR_SIENNA 0xA0522DFF
#define COLOR_SILVER 0xC0C0C0FF
#define COLOR_SKYBLUE 0x87CEEBFF
#define COLOR_SLATEBLUE 0x6A5ACDFF
#define COLOR_SLATEGRAY 0x708090FF
#define COLOR_SNOW 0xFFFAFAFF
#define COLOR_SPRINGGREEN 0x00FF7FFF
#define COLOR_STEELBLUE 0x4682B4FF
#define COLOR_TAN 0xD2B48CFF
#define COLOR_TEAL 0x008080FF
#define COLOR_THISTLE 0xD8BFD8FF
#define COLOR_TOMATO 0xFF6347FF
#define COLOR_TRANSPARENT 0xFFFFFF00
#define COLOR_TURQUOISE 0x40E0D0FF
#define COLOR_VIOLET 0xEE82EEFF
#define COLOR_WHEAT 0xF5DEB3FF
#define COLOR_WHITE 0xFFFFFFFF
#define COLOR_WHITESMOKE 0xF5F5F5FF
#define COLOR_WINDOW 0xFFFFFFFF
#define COLOR_WINDOWFRAME 0x646464FF
#define COLOR_WINDOWTEXT 0x000000FF
#define COLOR_YELLOW 0xFFFF00FF
#define COLOR_YELLOWGREEN 0x9ACD32FF
#define STEALTH_ORANGE 0xFF880000
#define STEALTH_OLIVE 0x66660000
#define STEALTH_GREEN 0x33DD1100
#define STEALTH_PINK 0xFF22EE00
#define STEALTH_BLUE 0x0077BB00
#define PlayerFile "Admin/Users/%s.ini"
#define CommandFile "Admin/Settings/Commands.ini"
#endif
enum PLAYER_MAIN {
PLAYER_NAME[MAX_PLAYER_NAME],
PLAYER_IP[16],
PLAYER_REGGED,
PLAYER_PASS,
PLAYER_LEVEL,
PLAYER_MONEY,
}
new gPlayerInfo[MAX_PLAYERS][PLAYER_MAIN];
new gPlayerLogged[MAX_PLAYERS];
enum COMMANDS_MAIN {
KICK,
BAN
}
new gCommands[COMMANDS_MAIN];
public OnFilterScriptInit()
{
print("\n************************************");
print("* *");
print("* Admin Filterscript by Hipflop *");
print("* *");
print("************************************\n");
// Level 0 = Noob
// Level 1 = Trusted Player
// Level 2 = Member
// Level 3 = Moderator
// Level 4 = Administrator
// Level 5 = Server owner
if(!fexist(CommandFile))
{
dini_Create(CommandFile);
dini_IntSet(CommandFile, "Kick", 2);
dini_IntSet(CommandFile, "Ban", 3);
}
gCommands[KICK] = dini_Int(CommandFile, "Kick");
gCommands[BAN] = dini_Int(CommandFile, "Ban");
return 1;
}
public OnPlayerConnect(playerid)
{
new file[100], name[MAX_PLAYER_NAME];
GetPlayerName(playerid, name, sizeof(name));
format(file, sizeof(file), PlayerFile, name);
if(!fexist(file))
{
ShowPlayerDialog(playerid, 1, DIALOG_STYLE_INPUT, "Register", "Please fill in your username as a password.", "Register", "Exit");
}
else if(fexist(file))
{
ShowPlayerDialog(playerid, 2, DIALOG_STYLE_INPUT, "Logon", "Please fill in your password.", "Logon", "Exit");
}
return 1;
}
public OnPlayerDisconnect(playerid, reason)
{
new file[100];
format(file, sizeof(file), PlayerFile, gPlayerInfo[playerid][PLAYER_NAME]);
dini_Set(file, "Name", gPlayerInfo[playerid][PLAYER_NAME]);
dini_Set(file, "Ip", gPlayerInfo[playerid][PLAYER_IP]);
dini_IntSet(file, "Registered", gPlayerInfo[playerid][PLAYER_REGGED]);
dini_IntSet(file, "Password", gPlayerInfo[playerid][PLAYER_PASS]);
dini_IntSet(file, "Level", gPlayerInfo[playerid][PLAYER_LEVEL]);
dini_IntSet(file, "Money", GetPlayerMoney(playerid));
gPlayerLogged[playerid] = 0;
return 1;
}
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
if(dialogid == 1)
{
if(response)
{
if(strlen(inputtext))
{
new file[100], name[MAX_PLAYER_NAME], ip[16], string[128];
GetPlayerName(playerid, name, sizeof(name));
GetPlayerIp(playerid, ip, sizeof(ip));
format(file, sizeof(file), PlayerFile, name);
dini_Create(file);
dini_Set(file, "Name", name);
dini_Set(file, "Ip", ip);
dini_IntSet(file, "Registered", 1);
dini_IntSet(file, "Password", num_hash(inputtext));
dini_IntSet(file, "Level", 0);
dini_IntSet(file, "Money", 50);
format(string, sizeof(string), "[SYSTEM] You succesfully registered the player %s.", name);
SendClientMessage(playerid, COLOR_LIGHTGREEN, string);
strcat(gPlayerInfo[playerid][PLAYER_NAME], dini_Get(file, "Name"));
strcat(gPlayerInfo[playerid][PLAYER_IP], dini_Get(file, "Ip"));
gPlayerInfo[playerid][PLAYER_PASS] = dini_Int(file, "Password");
gPlayerInfo[playerid][PLAYER_LEVEL] = dini_Int(file, "Level");
GivePlayerMoney(playerid, dini_Int(file, "Money"));
gPlayerLogged[playerid] = 1;
}
else if(!strlen(inputtext))
{
SendClientMessage(playerid, COLOR_RED, "[SYSTEM] You must fill in a password!");
ShowPlayerDialog(playerid, 1, DIALOG_STYLE_INPUT, "Register", "Please fill in your username as a password.", "Register", "Exit");
}
}
else if(!response)
{
SendClientMessage(playerid, COLOR_RED, "[SYSTEM] You need to register in order to play!");
Kick(playerid);
}
}
if(dialogid == 2)
{
if(response)
{
if(strlen(inputtext))
{
new file[100], name[MAX_PLAYER_NAME], string[128];
GetPlayerName(playerid, name, sizeof(name));
format(file, sizeof(file), PlayerFile, name);
if(num_hash(inputtext) == dini_Int(file, "Password"))
{
strcat(gPlayerInfo[playerid][PLAYER_NAME], dini_Get(file, "Name"));
strcat(gPlayerInfo[playerid][PLAYER_IP], dini_Get(file, "Ip"));
gPlayerInfo[playerid][PLAYER_PASS] = dini_Int(file, "Password");
gPlayerInfo[playerid][PLAYER_LEVEL] = dini_Int(file, "Level");
GivePlayerMoney(playerid, dini_Int(file, "Money"));
gPlayerLogged[playerid] = 1;
format(string, sizeof(string), "[SYSTEM] Welcome back, %s", name);
SendClientMessage(playerid, COLOR_LIGHTGREEN, string);
}
else if(num_hash(inputtext) != dini_Int(file, "Password"))
{
SendClientMessage(playerid, COLOR_RED, "[SYSTEM] Wrong password!");
ShowPlayerDialog(playerid, 2, DIALOG_STYLE_INPUT, "Logon", "Please fill in your password.", "Logon", "Exit");
}
}
else if(!strlen(inputtext))
{
SendClientMessage(playerid, COLOR_RED, "[SYSTEM] You must fill in your password!");
ShowPlayerDialog(playerid, 2, DIALOG_STYLE_INPUT, "Logon", "Please fill in your password.", "Logon", "Exit");
}
}
else if(!response)
{
SendClientMessage(playerid, COLOR_RED, "[SYSTEM] You need to logon in order to play!");
Kick(playerid);
}
}
return 1;
}
public OnPlayerCommandText(playerid, cmdtext[])
{
dcmd(kick, 4, cmdtext);
dcmd(ban, 3, cmdtext);
return 0;
}
dcmd_kick(playerid, params[])
{
if(gPlayerInfo[playerid][PLAYER_LEVEL] < gCommands[KICK])
{
new string[128];
format(string, sizeof(string), "You must be a level %d administrator to use that command!", gCommands[KICK]);
SendClientMessage(playerid, COLOR_ORANGE, string);
}
else
{
new tmp[256], tmp2[256], index, id;
tmp = strtok(params, index);
tmp2 = strtok(params, index);
if(!strlen(tmp))
{
SendClientMessage(playerid, COLOR_ORANGE, "[KICK] Usage: /kick [ID] [REASON]");
}
else if(!strlen(tmp2))
{
SendClientMessage(playerid, COLOR_ORANGE, "[KICK] Usage: /kick [ID] [REASON]");
}
else
{
id = strval(tmp);
if(!IsPlayerConnected(id))
{
SendClientMessage(playerid, COLOR_ORANGE, "[KICK] That player is not connected.");
}
else if(id == playerid)
{
SendClientMessage(playerid, COLOR_ORANGE, "[KICK] You can't kick yourself.");
}
else if(gPlayerInfo[id][PLAYER_LEVEL] > gPlayerInfo[playerid][PLAYER_LEVEL])
{
SendClientMessage(playerid, COLOR_ORANGE, "[KICK] That player has a higher level than you.");
}
else
{
new string[256], name[MAX_PLAYER_NAME];
GetPlayerName(id, name, sizeof(name));
if(id >= 0 && id <= 9)
{
format(string, sizeof(string), "[KICK] You have been kicked. Reason: %s.", params[2]);
SendClientMessage(id, COLOR_ORANGE, string);
Kick(id);
format(string, sizeof(string), "[KICK] Player %s has been kicked. Reason: %s.", name, params[2]);
SendClientMessageToAll(COLOR_ORANGE, string);
}
else if(id >= 10 && id <= 99)
{
format(string, sizeof(string), "[KICK] You have been kicked. Reason: %s.", params[3]);
SendClientMessage(id, COLOR_ORANGE, string);
Kick(id);
format(string, sizeof(string), "[KICK] Player %s has been kicked. Reason: %s.", name, params[3]);
SendClientMessageToAll(COLOR_ORANGE, string);
}
}
}
}
return 1;
}
dcmd_ban(playerid, params[])
{
if(gPlayerInfo[playerid][PLAYER_LEVEL] < gCommands[KICK])
{
new string[128];
format(string, sizeof(string), "You must be a level %d administrator to use that command!", gCommands[KICK]);
SendClientMessage(playerid, COLOR_ORANGE, string);
}
else
{
new tmp[256], tmp2[256], index, id;
tmp = strtok(params, index);
tmp2 = strtok(params, index);
if(!strlen(tmp))
{
SendClientMessage(playerid, COLOR_ORANGE, "[BAN] Usage: /ban [ID] [REASON]");
}
else if(!strlen(tmp2))
{
SendClientMessage(playerid, COLOR_ORANGE, "[BAN] Usage: /ban [ID] [REASON]");
}
else
{
id = strval(tmp);
if(!IsPlayerConnected(id))
{
SendClientMessage(playerid, COLOR_ORANGE, "[BAN] That player is not connected.");
}
else if(id == playerid)
{
SendClientMessage(playerid, COLOR_ORANGE, "[BAN] You can't kick yourself.");
}
else if(gPlayerInfo[id][PLAYER_LEVEL] > gPlayerInfo[playerid][PLAYER_LEVEL])
{
SendClientMessage(playerid, COLOR_ORANGE, "[BAN] That player has a higher level than you.");
}
else
{
new string[256], name[MAX_PLAYER_NAME];
GetPlayerName(id, name, sizeof(name));
if(id >= 0 && id <= 9)
{
format(string, sizeof(string), "[BAN] You have been banned. Reason: %s.", params[2]);
SendClientMessage(id, COLOR_ORANGE, string);
Kick(id);
format(string, sizeof(string), "[BAN] Player %s has been banned. Reason: %s.", name, params[2]);
SendClientMessageToAll(COLOR_ORANGE, string);
}
else if(id >= 10 && id <= 99)
{
format(string, sizeof(string), "[BAN] You have been banned. Reason: %s.", params[3]);
SendClientMessage(id, COLOR_ORANGE, string);
Kick(id);
format(string, sizeof(string), "[BAN] Player %s has been banned. Reason: %s.", name, params[3]);
SendClientMessageToAll(COLOR_ORANGE, string);
}
}
}
}
return 1;
}