C++

Исходный код сервера SA:MP / PAWNO

/*********************************
*   Blood Moon by Wishay          *
*   Autor: Wishay	             *
*   VK: vk.com/wishay            *
*   Group: vk.com/ff			 *
**********************************/

//Хоспаде, ну и кто сюда смотрит вообще?
#include <a_samp>
#include <a_players>
#include <dini>
#include <gvc>

//Кому нужен релиз? К чёрту его!
#define MOD_RELEASE 124

/*************Цвета сервера*************/
#define COLOR_DEF 0xFFFFFFFF
#define COLOR_ADMIN 0xDF9090FF
#define COLOR_INFO 0x5F5FFFFF
#define COLOR_CMD 0xAFAFAFFF

//RP Colors
#define COLOR_ORANGE 0xFF9900AA
#define COLOR_WHITE 0xFFFFFFAA
#define COLOR_AIR 0xB3E6FFFF
#define COLOR_DEF2 0xFFCC99FF
#define COLOR_CMD2 0xBFBFBFFF
#define COLOR_PEACH 0xFFE6CCFF
#define COLOR_SOFTGREEN 0xE6FFE6FF
#define COLOR_SOFTROSE 0xFFCCFFFF
#define COLOR_ORANGE2 0xFF9933FF
#define COLOR_SOFTORANGE 0xFFB366FF

/*************Диалоги*************/
/*Айдишники не менять, котов не обижать! */
#define DIALOG_IN 0
#define DIALOG_REG 1
#define DIALOG_OVA 2
#define DIALOG_AMENU 3
#define DIALOG_SYSMESS 4
#define DIALOG_MAIN_MENU 5
#define DIALOG_VEHACTION 6
#define DIALOG_RADIO 7
#define DIALOG_SELLDRUG1 8
#define DIALOG_SELLDRUGS2 9

#define INFOBOX 983
#define KICKBOX 984

/********Настройки********/

new avalidationp[2];
new presentr = 1;

/*************ID БАНД*************/
#define G_BM 0
#define G_GROOVE 1
#define G_BALLAS 2
#define G_VAGOS 3
#define G_POLICE 4
#define G_YAKUZA 5

/*************МАССИВЫ*************/
new pColorsC[24][7] =
{
	"FFFFFF", //Белый. 0
	"CC0000", //Тёмно-красный. 1
	"00FF00", //Лаймовый. 2
	"00CC00", //Зелёный. 3
	"1FFF00", //Желто-зеленый. 4
	"0000FF", //Синий. 5
	"0000CC", //Тёмно-синий. 6
	"FF0000", //Ярко-красный. 7
	"3F3F3F", //Серый. 8
	"000000", //Чёрный. 9
	"FFFF00", //Светло-жёлтый. 10
	"CCCC00", //Тёмно-желтый. 11
	"00FFFF", //Светло-бирюзовый. 12
	"00CCCC", //Тёмно-бирюзовый. 13
	"FF4000", //Оранжевый. 14
	"CEECF5", //Воздушный. 15
	"F5A9F2", //Розовый. 16
	"FF00FF", //Ярко-розовый. 17
	"D8F781", //Air+зеленый. 18
	"E6E6E6", //Серый 2. 19
	"975300", //Коричневый. 20
	"9E00FF", //Фиолетовый. 21
	"400069", //Баклажановый. 22
	"BC8657" //Milk-Cofee (by Cofee) 23
};

new pColorsN[24] =
{
	0xFFFFFFFF, //Белый.
	0xCC0000FF, //Тёмно-красный.
	0x00FF00FF, //Лаймовый.
	0x00CC00FF, //Зелёный.
	0x1FFF00FF, //Желто-зеленый.
	0x0000FFFF, //Синий.
	0x0000CCFF, //Тёмно-синий.
	0xFF0000FF, //Ярко-красный.
	0x3F3F3FFF, //Серый.
	0x000000FF, //Чёрный.
	0xFFFF00FF, //Светло-жёлтый.
	0xCCCC00FF, //Тёмно-желтый.
	0x00FFFFFF, //Светло-бирюзовый.
	0x00CCCCFF, //Тёмно-бирюзовый.
	0xFF4000FF, //Оранжевый.
	0xCEECF5FF, //Воздушный.
	0xF5A9F2FF, //Розовый.
	0xFF00FFFF, //Ярко-розовый.
	0xD8F781FF, //Air+зеленый.
	0xE6E6E6FF, //Серый 2.
	0x975300FF, //Коричневый.
	0x9E00FFFF, //Фиолетовый.
	0x400069FF, //Баклажановый.
	0xBC8657FF //Milk-Cofee (by Cofee)
};

new Float: pSpawns[9][3] =
{
    {2121.6709, 1232.6560, 10.8203},
    {2000.1748, 1521.1981, 17.0625},
    {1689.0837, 1447.3623, 10.7673},
    {-2027.2810, 139.2742, 28.8359},
    {-1979.7251, 882.0549, 45.2031},
    {-1501.3184, 921.6622, 7.1875},
    {1544.3414, -1353.3977, 329.4742},
    {817.2953, -1352.9248, 13.5350},
    {729.9897, -1276.4136, 17.6484}
};

new Float: nPSpawns[4][3] =
{
	{1446.9456,1501.0609,10.8203},
	{1439.6748,1500.8436,10.8203},
	{1428.8660,1500.1049,10.8203},
	{1420.8109,1501.0588,10.8203}
};

new pWeaps[55][24] =
{
	"Кулаки", /*0 0x000000*/ "Кастет", /*1 0x000001*/ "Клюшка для гольфа", /*2 0x000002*/
    "Полицейская дубинка", /*3 0x000003*/"Нож", /*4 0x000004*/"Бита", /*5 0x000005*/
	"Лопата", /*6 0x000006*/"Кий", /*7 0x000007*/"Катана", /*8 0x000008*/
	"Бензопила", /*9 0x000009*/"Дилдо", /*10 0x00000A*/"Дилдо", /*11 0x00000B*/
	"Вибратор", /*12 0x00000C*/"Вибратор", /*13 0x00000D*/"Цветы", /*14 0x00000E*/
	"Клюка", /*15 0x00000F*/"Граната", /*16 0x000010*/"Газ", /*17 0x000011*/
	"Молотов", /*18 0x000012*/"N/A", /*19 0x000013*/"N/A", /*20 0x000014*/
	"N/A", /*21 0x000015*/"Кольты", /*22 0x000016*/"Кольт с глушителем", /*23 0x000017*/
	"Пустынный орёл", /*24 0x000018*/"Дробовик", /*25 0x000019*/"Обрезы", /*26 0x00001A*/
	"Боевой дробовик", /*27 0x00001B*/"Микро SMG/Uzi", /*28 0x00001C*/"МП5", /*29 0x00001D*/
	"АК-47", /*30 0x00001E*/"М4", /*31 0x00001F*/"TEC-9", /*32 0x000020*/
    "Винтовка", /*33 0x000021*/"Снайперская винтовка", /*34 0x000022*/"РПГ", /*35 0x000023*/
	"Муха", /*36 0x000024*/"Огнемёт", /*37 0x000025*/"Миниган", /*38 0x000026*/
	"C4", /*39 0x000027*/"Детонатор", /*40 0x000028*/"Спрей", /*41 0x000029*/
	"Огнетушитель", /*42 0x00002A*/"Камера", /*43 0x00002B*/"N/A", /*44 0x00002C*/
	"N/A", /*45 0x00002D*/"Парашют", /*46 0x00002E*/":МАГИЯ:", /*47 0x00002F*/
	"N/A", /*48 0x000030*/"Задавил", /*49 0x000031*/"Зарубил винтами", /*50 0x000032*/
	"Взрыв", /*51 0x000033*/"N/A", /*52 0x000034*/":МАГИЯ:", /*53 0x000035*/
	"N/A" /*54 0x000036*/
};

// Рэп бомжей около мэрии не считается, дорогие вы мои разрабы!!!
new radioList[10][2][500] =
{
	{"http://retroserver.streamr.ru:8043/retro64", "Рэтро FM"},        //#EXTINF:-1,Рэтро FM
	{"http://radiopotok.ru/f/m3u/station_88.m3u", "DFM Radio"},        //#EXTINF:-1,DFM
	{"http://air.radiorecord.ru:8101/rr_320", "Radio Record"},         //#EXTINF:-1,Radio Record
	{"http://air.radiorecord.ru:8102/club_320", "Record Club"},        //#EXTINF:-1,Record Club
	{"http://air.radiorecord.ru:8102/dub_320", "Record Dubstep"},      //#EXTINF:-1,Record Dubstep
	{"http://ep128server.streamr.ru:8030/ep128", "Europa plus"},       //#EXTINF:-1,Europa plus
	{"http://radio.zaycev.fm:9001/ZaycevFM(256)?type=.flv&file=http://www.zaycev.fm:9001/ZaycevFM(256)?type=.flv&start=0", "Зайцев FM"},   //#EXTINF:-1,Зайцев FM
	{"http://mariafm.ru:8000/maria-fm.mp3", "Мария FM"}, //#EXTINF:-1,MariaFM
	{"http://radio01-cn03.akadostream.ru:8000/russianradio128.mp3", "Русское радио"},  //#EXTINF:-1,Русское радио
	{"http://eu7.101.ru:8000/v1_1", "Energy (NRG)"}                   //#EXTINF:-1,Радио Energy (NRG)
};

new weatherList[][][] =
{
    {"солнечная погода", "20", "30"},                 //0/1
    {"солнечная погода", "25", "36"},                 //1/2
    {"солнечная погода", "17", "20"},                 //2/3
    {"облачная погода", "15", "19"},                  //3/4
    {"облачная погода", "18", "26"},                  //4/5
    {"облачная погода", "19", "29"},                  //5/6
    {"пасмурная погода", "15", "25"},                 //6/7
    {"дождь", "15", "19"},                            //7/8
    {"туман", "17", "23"},                            //8/9
    {"солнечная погода", "21", "34"},                 //9/10
    {"облачная погода", "20", "30"},                  //10/11
    {"небольшой туман", "20", "25"},                  //11/12
    {"облачная погода, с прояснениями", "25", "27"},  //12/13
    {"высокая облачность", "23", "28"},               //13/14
    {"пасмурная погода", "16", "20"},                 //14/15
    {"гроза", "15", "25"},                            //15/16
    {"жара", "30", "40"},                             //16/17
    {"жара", "28", "38"},                             //17/18
    {"песчаная буря", "25", "28"}                     //18/19 Всё. Очень. Плохо.
};

enum weaen
{
	weatherID,
	minTemp,
	maxTemp
};

new sWeather[weaen];

// Блок информации "ДаВыЧо?" Список самой бесполезной информации за всю историю сервера.
new sUpdate[1000] = "{FFCC99}Версия мода: {B3E6FF}1.24{1AFF8C}A\n"\
					"{FFCC99}Автор: {FF531A}Lophocorona {FF0000}([C][T][P][A][X]).\n\n"\
					"{FFFFCC}Изменена система начисления игровых очков.\n"\
					"Добавлены RP команды /me /try, изменена команда для создания объявлений.\n"\
					"Проведён вайп всех аккаунтов в целях синхронизации с новым релизом.\n"\
					"Деньги теперь отображаются справа вверху, дополнительный худ был убран.\n";
					

/*************Переменные игроков*************/
/* Не трогай это! Без этого точно всё поломается. Я серьёзно.
   Не делай этого. Прошу тебя. Просто. Листай. Дальше. */
new admin[MAX_PLAYERS];
new vip[MAX_PLAYERS];
new ncolor[MAX_PLAYERS];
new ccolor[MAX_PLAYERS];
new ammo[MAX_PLAYERS];
new w1[MAX_PLAYERS];
new w2[MAX_PLAYERS];
new w3[MAX_PLAYERS];
new w4[MAX_PLAYERS];
new w5[MAX_PLAYERS];
new w6[MAX_PLAYERS];
new skin[MAX_PLAYERS];
new money[MAX_PLAYERS];
new gangid[MAX_PLAYERS];
new gleader[MAX_PLAYERS];
new glvl[MAX_PLAYERS];
new kills[MAX_PLAYERS];
new death[MAX_PLAYERS];
new logged[MAX_PLAYERS];
new banned[MAX_PLAYERS];
new jailed[MAX_PLAYERS];
new warned[MAX_PLAYERS];
new level[MAX_PLAYERS];
new score[MAX_PLAYERS];
new radio[MAX_PLAYERS];
new donate[MAX_PLAYERS];
new drugs[MAX_PLAYERS];
new carcolor[MAX_PLAYERS][2];
new mycar[MAX_PLAYERS][2];
new gamingmin[MAX_PLAYERS];
new leavec[MAX_PLAYERS];
new hudSetup[MAX_PLAYERS][2];
new muted[MAX_PLAYERS];
new avalid[MAX_PLAYERS];
new caridd[MAX_PLAYERS];
new killmessages[MAX_PLAYERS];
new kcombo[MAX_PLAYERS];
new indm[MAX_PLAYERS];
new OneSpawn[MAX_PLAYERS];
new dstatus[MAX_PLAYERS];
new ahouse[MAX_PLAYERS];
new tempp[MAX_PLAYERS];
new servermessages[MAX_PLAYERS];
new fuel[MAX_PLAYERS];
new Checkpoint[MAX_PLAYERS];
new kicked[MAX_PLAYERS];
new nonafk[MAX_PLAYERS];
new oldrelease[MAX_PLAYERS];
new nycap[MAX_PLAYERS];
new mask[MAX_PLAYERS];

new File: acc[MAX_PLAYERS];

/*************Переменные сервера*************/
new Text3D: P3DT[MAX_PLAYERS];
new PlayerText: hudStatPresent[MAX_PLAYERS];
new PlayerText: hudStatLevel[MAX_PLAYERS];
new PlayerText: hudStatOtherInfo[MAX_PLAYERS];
new PlayerText: hudTime[MAX_PLAYERS];

new vicval = -1;

forward restartv();
public restartv()
{
	SendRconCommand("gmx");
	return 1;
}

//Самая глючная штука сервера. Да. Но мне лень её переделывать, так что просто не обращаем внимания.
forward updateHud();
public updateHud()
{
	for(new i = 0; i!= MAX_PLAYERS; i++)
	{
		if(logged[i])
		{
		    if(hudSetup[i][1])
		    {
		        new infomess[1000];
		        new timeM[3];
		        new mn;
		        
		        format(infomess, sizeof(infomess), "Level: %d", level[i]);
		        PlayerTextDrawSetString(i, hudStatLevel[i], infomess);
		        caridd[i] = GetPlayerVehicleID(i);
		        format(infomess, sizeof(infomess), "Score: %d/%d", 	   score[i], (level[i] * 60));
                PlayerTextDrawSetString(i, hudStatOtherInfo[i], infomess);
                
				mn = GetPlayerMoney(i);
				if(mn != money[i])
				{
				    ResetPlayerMoney(i);
				    GivePlayerMoney(i, money[i]);
				}
				
                gettime(timeM[0], timeM[1], timeM[2]);
                format(infomess, sizeof(infomess), "%02d:%02d:%02d", timeM[0], timeM[1], timeM[2]);
                PlayerTextDrawSetString(i, hudTime[i], infomess);
		    }
		}
	}
}

forward GetAfkPlayers();
public GetAfkPlayers()
{
	for(new i = 0; i != MAX_PLAYERS; i++) if(nonafk[i]) nonafk[i] = 0;
}

//Ещё одна глючная штуковина.
forward basePlayerSetup();
public basePlayerSetup()
{
    for(new i = 0; i!= MAX_PLAYERS; i++)
    {
        if(logged[i])
        {
       		new Float:ix, Float:iy, Float:iz;
			GetPlayerPos(i, ix, iy, iz);
			
            if(money[i] > 2147480000 || money[i] < 0) money[i] = 0;
            SetPlayerScore(i, level[i]);
            if(score[i] > (level[i] * 60))
            {
                new pname[24];
                new lmess[500];
                
                GetPlayerName(i, pname, sizeof(pname));

				level[i]++;       //Не надо так.
				money[i] += 5000; //И так тоже.
				
				GameTextForPlayer(i, "~r~New Level ~w~| ~g~+5000$", 100, 0);
				format(lmess, sizeof(lmess), "{FFCC99}Игрок {%s}%s {FFCC99}получил %d уровень.", pColorsC[ncolor[i]], pname, level[i]);
				SendClientMessageToAll(COLOR_DEF, lmess);
			}
        }
    }
}

// 365... Пора прекращать писать код.
// И начать жить.
// Хотя нет.
// Чёрт, убейте меня. \-(*-*)-/
forward weatherTime();
public weatherTime()
{
	for(new i = 0; i != MAX_PLAYERS; i++)
	{
	    if(logged[i])
	    {
	        new hour, minute;
	        
	        SetPlayerWeather(i, sWeather[weatherID]);
	        gettime(hour, minute);
	        SetPlayerTime(i, hour, minute);
	    }
	}
}

forward IsKicked();
public IsKicked()
{
	for(new i = 0; i != MAX_PLAYERS; i++) if(kicked[i]){kicked[i] = 0; Kick(i);}
}

//Почувствуй себя богом - предскажи погоду.
forward weaForecast();
public weaForecast()
{
	new weaName[500] = "";
	new wTemp = 0;
	new foremess[2000];
	
    sWeather[weatherID] = random(sizeof(weatherList));
    sWeather[minTemp] = strval(weatherList[sWeather[weatherID]][1]);
    sWeather[maxTemp] = strval(weatherList[sWeather[weatherID]][2]);
    strcat(weaName, weatherList[sWeather[weatherID]][0]);
    wTemp = sWeather[minTemp] + random(sWeather[maxTemp] - sWeather[minTemp]);
    
    format(foremess, sizeof(foremess), "Прогноз погоды: {9090FF}В ближайшее время ожидается {00FF00}%s{9090FF}, температура - {FF0000}%d {9090FF}градусов по цельсию.", weaName, wTemp);
    SendClientMessageToAll(COLOR_DEF, foremess);
}

stock Info(playerid, message[]){ShowPlayerDialog(playerid, INFOBOX, DIALOG_STYLE_MSGBOX, "{00FFFF}Информация", message, "OK", "");return 1;}

stock SendKillMessage(message[])
{
	for(new i = 0; i != MAX_PLAYERS; i++) if(killmessages[i]) SendClientMessage(i, COLOR_DEF, message);
	return 1;
}

stock playerToPlayerRadius(playerid, recipient) //Кусок гов... Отличного кода.
{
	new Float: Px, Float: Py, Float: Pz;
	new Float: Rx, Float: Ry, Float: Rz;
	
	GetPlayerPos(playerid, Px, Py, Pz);
	GetPlayerPos(recipient, Rx, Ry, Rz);
	
	return floatround(((Px + Py + Pz) - (Rx + Ry + Rz)), floatround_ceil);
}

stock abs(value){if(value < 0) return -value; return 1;} //Ещё немного отличного кода :D

stock SendPlayerBubbleMessage(playerid, message[], radius) //   Шедевар. Кулисы. Занавес.
{
	new counter = 0;
	for(new i = 0; i != MAX_PLAYERS; i++)
	{
	    if(i != INVALID_PLAYER_ID && abs(playerToPlayerRadius(playerid, i)) < radius)
	    {
	        SendClientMessage(i, COLOR_DEF2, message);
	        if(i != playerid) counter++;
	    }
	}
	return counter;
}

stock getArgs(string[], arg) //Костыль, прилепленный к серверу путём варки клея из манной крупы и картошки.
{
	new argCount = 0;
	for(new i = 0; i != strlen(string); i++)
	{
	    if(argCount == arg) return i;
	    if(string[i] == ' ') argCount++;
	}
	return -1;
}

/*************Переменные сервера 2*************/
new rMessages[10][500] =
{
	"{FF0000}>> {FFFF90}Увидели читера? Сообщите в /report [ID] [Причина].",
	"{FF0000}>> {FFFF90}Есть вопрос? Задавайте его в /ask [Вопрос], администрация ответит вам!",
	"{FF0000}>> {FFFF90}Хотите купить донат? Skype: {FF0000}Lophocorona.",
	"{FF0000}>> {FFFF90}Вас забанили? Не знаете куда обратиться? В нашей группе есть специальный топик для заявок на разбан.",
	"{FF0000}>> {FFFF90}Заходите в нашу группу, в ней вас ждёт масса всего интересного! {90FFFF}[vk.com/bldmoon].",
	"{FF0000}>> {FFFF90}Не знаете как открыть меню? Используйте кнопку {FFFF00}[Y].",
	"{FF0000}>> {FFFF90}Заходите в нашу группу, в ней вас ждёт масса всего интересного! {90FFFF}[vk.com/bldmoon].",
    "{FF0000}>> {FFFF90}Заходите в нашу группу, в ней вас ждёт масса всего интересного! {90FFFF}[vk.com/bldmoon].",
    "{FF0000}>> {FFFF90}Хотите мероприятие? Пишите в /ask, администрация подумает над вашим предложением!",
    "{FF0000}>> {FFFF90}Подключайтесь к радио! Вас ждут отличные треки!"
};

/*************Функции сервера*************/
forward chatFlood();
public chatFlood()
{
	SendClientMessageToAll(COLOR_DEF, rMessages[random(sizeof(rMessages))]);
}

forward incPlayerMinuts();
public incPlayerMinuts()
{
	for(new i = 0; i != MAX_PLAYERS; i++)
	{
		if(logged[i] && i != INVALID_PLAYER_ID && nonafk[i])
		{
			gamingmin[i]++;
			score[i]++;
		}
	}
}

forward cWea();
public cWea()
{
	for(new i = 0; i != MAX_PLAYERS; i++) if(OneSpawn[i]) SetPlayerWeather(i, 100);
}

main()
{
	print("\n***********************************");
	print("Server Blood Moon\n"\
		  "Author: [C][T][P][A][X]\n"\
		  "VK: vk.com/mstpax\n"\
		  "Group: vk.com/x\n"\
		  "Gang Group: vk.com/ugang");
	print("\n***********************************");
}

public OnGameModeInit()
{
	SetTimer("chatFlood", 3900000, 1);
	SetTimer("incPlayerMinuts", 60000, 1);
	SetTimer("updateHud", 1000, 1);
	SetTimer("IsKicked", 800, 1);
	SetTimer("basePlayerSetup", 1000, 1);
	SetTimer("vicstart", 1800000, 1);
	SetTimer("cWea", 300, 1);
	SetTimer("weaForecast", 1700000, 1);
	SetTimer("weatherTime", 1800000, 1);
	SetTimer("GetAfkPlayers", 600000, 1);
	
	SetGameModeText("Positive RPG");
	AddPlayerClass(230, 1958.3783, 1343.1572, 15.3746, 269.1425, 0, 0, 0, 0, 0, 0);
	return 1;
}

public OnGameModeExit()
{
	return 1;
}

public OnPlayerRequestClass(playerid, classid)
{
    SetPlayerCameraPos(playerid, -1655.923828, 1205.868652, 21.156250);
	SetPlayerCameraLookAt(playerid, -1651.794189, 1206.626708, 21.148662);
	SetPlayerPos(playerid, -1651.794189, 1206.626708, 21.148662);
	SetPlayerFacingAngle(playerid, 98.594573);
	SetPlayerVirtualWorld(playerid, 0);
	return 1;
}

public OnPlayerConnect(playerid)
{
	kicked[playerid] = 0;
	nonafk[playerid] = 1;
	
	new pname[24];
	new acv[500];
	new forpmess[1000];
	
	leavec[playerid] = 3;
	hudSetup[playerid][0] = 1;
	hudSetup[playerid][1] = 1;
	kcombo[playerid] = 0;
	OneSpawn[playerid] = 1;
	
	PlayerPlaySound(playerid, 1183, 0, 0, 0);

	GetPlayerName(playerid, pname, sizeof(pname));
	format(acv, sizeof(acv), "Players/Account/%s.ini", pname);
	format(forpmess, sizeof(forpmess), "{FFFFFF}Добро пожаловать, {00FF00}%s!", pname);

	SendClientMessage(playerid, COLOR_DEF, "{FF0000}B{FFFFFF}lood {FF0000}M{FFFFFF}oon {AFAFAF} [RP/DM] {FFFFFF}сервер.");
	SendClientMessage(playerid, COLOR_DEF, forpmess);
	SendClientMessage(playerid, COLOR_DEF, "{BFBFBF}Для получения помощи используйте /help или пункт \"Информация\" в меню.");
	SendClientMessage(playerid, COLOR_DEF, "{BFBFBF}Для открытия меню используйте клавишу {FFFF00}[Y].");
	SendClientMessage(playerid, COLOR_DEF, "{FFE6CC}Желаем вам приятной игры на нашем сервере!");
	
	if(dini_Exists(acv)) ShowPlayerDialog(playerid, DIALOG_IN, DIALOG_STYLE_PASSWORD, "{FFFFFF}[DM/RP] {00FF00}[Blood Moon]", "{FFFFFF}Добро пожаловать на {00FFFF}[DM/RP] [Blood Moon]!\n{FFFFFF}Этот аккаунт {00FF00}зарегистрирован.\n{FFFFFF}Для {00FF00}входа {FFFFFF}в аккаунт введите свой пароль в окошко ниже.", "OK", "Выход");
	else ShowPlayerDialog(playerid, DIALOG_REG, DIALOG_STYLE_INPUT, "{FFFFFF}[DM/RP] {00FF00}[Blood Moon]", "{FFFFFF}Добро пожаловать на {00FFFF}[DM/RP] [Blood Moon]!\n{FFFFFF}Этот аккаунт {FF0000}не зарегистрирован.\n{FFFFFF}Для {00FF00}регистрации {FFFFFF}аккаунта введите свой пароль в окошко ниже.", "OK", "Выход");
	
	//==================================================================================================
	//Money TD
	hudStatPresent[playerid] = CreatePlayerTextDraw(playerid, 450, 0, "Positive RPG");
	PlayerTextDrawColor(playerid, hudStatPresent[playerid], 0xFF0000FF);
	PlayerTextDrawUseBox(playerid, hudStatPresent[playerid], 1);
	PlayerTextDrawBoxColor(playerid, hudStatPresent[playerid], 0x2F2F2F3F);
	PlayerTextDrawFont(playerid, hudStatPresent[playerid], 1);
	PlayerTextDrawShow(playerid, hudStatPresent[playerid]);
	//==================================================================================================
	//Level TD
	hudStatLevel[playerid] = CreatePlayerTextDraw(playerid, 500, 98, "Level: N");
	PlayerTextDrawColor(playerid, hudStatLevel[playerid], 0xFFFF00FF);
	PlayerTextDrawFont(playerid, hudStatLevel[playerid], 2);
	PlayerTextDrawShow(playerid, hudStatLevel[playerid]);
	//==================================================================================================
	//Other TD
	hudStatOtherInfo[playerid] = CreatePlayerTextDraw(playerid, 0, 437, "");
	PlayerTextDrawColor(playerid, hudStatOtherInfo[playerid], 0x00FFFFFF);
	PlayerTextDrawUseBox(playerid, hudStatOtherInfo[playerid], 0);
	PlayerTextDrawBoxColor(playerid, hudStatOtherInfo[playerid], 0x00000066);
	PlayerTextDrawFont(playerid, hudStatOtherInfo[playerid], 1);
	PlayerTextDrawShow(playerid, hudStatOtherInfo[playerid]);
	//==================================================================================================
	//TimeTD
	hudTime[playerid] = CreatePlayerTextDraw(playerid, 550, 439, "Time: N");
	PlayerTextDrawColor(playerid, hudTime[playerid], 0xFFFFFFFF);
	PlayerTextDrawUseBox(playerid, hudTime[playerid], 1);
	PlayerTextDrawBoxColor(playerid, hudTime[playerid], 0x2F2F2FFF);
	PlayerTextDrawFont(playerid, hudTime[playerid], 2);
	PlayerTextDrawShow(playerid, hudTime[playerid]);
	//==================================================================================================
	return 1;
}

//Загрузка всякой херни...
public OnPlayerDisconnect(playerid, reason)
{
	if(P3DT[playerid]) Delete3DTextLabel(P3DT[playerid]);
	
    new pname[24];
	new accd[500];

	GetPlayerName(playerid, pname, sizeof(pname));
	
	if(logged[playerid])
	{
		format(accd, sizeof(accd), "Players/Account/%s.ini", pname);
	
    	dini_IntSet(accd, "Admin", admin[playerid]);
		dini_IntSet(accd, "Vip", vip[playerid]);
		dini_IntSet(accd, "Ncolor", ncolor[playerid]);
		dini_IntSet(accd, "Ccolor", ccolor[playerid]);
		dini_IntSet(accd, "Ammo", ammo[playerid]);
		dini_IntSet(accd, "W1", w1[playerid]);
		dini_IntSet(accd, "W2", w2[playerid]);
		dini_IntSet(accd, "W3", w3[playerid]);
		dini_IntSet(accd, "W4", w4[playerid]);
		dini_IntSet(accd, "W5", w5[playerid]);
		dini_IntSet(accd, "W6", w6[playerid]);
		dini_IntSet(accd, "Skin", skin[playerid]);
		dini_IntSet(accd, "Money", money[playerid]);
		dini_IntSet(accd, "Kills", kills[playerid]);
		dini_IntSet(accd, "Death", death[playerid]);
		dini_IntSet(accd, "Banned", banned[playerid]);
		dini_IntSet(accd, "Jailed", jailed[playerid]);
		dini_IntSet(accd, "Warned", warned[playerid]);
		dini_IntSet(accd, "Level", level[playerid]);
    	dini_IntSet(accd, "Radio", radio[playerid]);
    	dini_IntSet(accd, "Donate", donate[playerid]);
    	dini_IntSet(accd, "Drugs", drugs[playerid]);
    	dini_IntSet(accd, "CColor1", carcolor[playerid][0]);
    	dini_IntSet(accd, "CColor2", carcolor[playerid][1]);
    	dini_IntSet(accd, "Money", money[playerid]);
    	dini_IntSet(accd, "GamingMin", gamingmin[playerid]);
    	dini_IntSet(accd, "MyCar", mycar[playerid][0]);
    	dini_IntSet(accd, "GiD", gangid[playerid]);
    	dini_IntSet(accd, "Gleader", gleader[playerid]);
    	dini_IntSet(accd, "Glvl", glvl[playerid]);
    	dini_IntSet(accd, "DrawChatLine", hudSetup[playerid][0]);
    	dini_IntSet(accd, "DrawStats", hudSetup[playerid][1]);
    	dini_IntSet(accd, "Muted", muted[playerid]);
    	dini_IntSet(accd, "Score", score[playerid]);
    	dini_IntSet(accd, "Killmessages", killmessages[playerid]);
    	dini_IntSet(accd, "Ahouse", ahouse[playerid]);
    	dini_IntSet(accd, "ServerMessages", servermessages[playerid]);
    	dini_IntSet(accd, "Fuel", fuel[playerid]);
    	dini_IntSet(accd, "OldRelease", oldrelease[playerid]);
    
    	admin[playerid] = 0;
    	vip[playerid] = 0;
    	ncolor[playerid] = 0;
    	ccolor[playerid] = 0;
    	ammo[playerid] = 0;
    	w1[playerid] = 0;
    	w2[playerid] = 0;
    	w3[playerid] = 0;
    	w4[playerid] = 0;
    	w5[playerid] = 0;
    	w6[playerid] = 0;
    	skin[playerid] = 0;
    	money[playerid] = 0;
    	kills[playerid] = 0;
    	death[playerid] = 0;
    	banned[playerid] = 0;
    	jailed[playerid] = 0;
    	warned[playerid] = 0;
    	level[playerid] = 0;
    	radio[playerid] = 0;
    	donate[playerid] = 0;
    	drugs[playerid] = 0;
    	carcolor[playerid][0] = 0;
    	carcolor[playerid][1] = 0;
    	money[playerid] = 0;
    	gamingmin[playerid] = 0;
    	mycar[playerid][0] = 0;
    	leavec[playerid] = 3;
    	logged[playerid] = 0;
    	gangid[playerid] = 0;
		gleader[playerid] = 0;
		glvl[playerid] = 0;
		hudSetup[playerid][1] = 1;
		hudSetup[playerid][0] = 1;
		muted[playerid] = 0;
		avalid[playerid] = 0;
		caridd[playerid] = 0;
		score[playerid] = 0;
		killmessages[playerid] = 1;
		kcombo[playerid] = 0;
		indm[playerid] = 0;
		dstatus[playerid] = 0;
		ahouse[playerid] = 0;
		tempp[playerid] = 0;
		servermessages[playerid] = 0;
		fuel[playerid] = 0;
		Checkpoint[playerid] = 0;
		kicked[playerid] = 0;
		nonafk[playerid] = 0;
		oldrelease[playerid] = 0;
		nycap[playerid] = 0;
		mask[playerid] = 0;
	}
    
	return 1;
}

//Выдача всякой херни...
public OnPlayerSpawn(playerid)
{
    if(OneSpawn[playerid])
    {
		new hour, minute;
	    gettime(hour, minute);
	    
		PlayerPlaySound(playerid, 1184, 0, 0, 0);
		SetPlayerWeather(playerid, sWeather[weatherID]);
		SetPlayerTime(playerid, hour, minute);
		OneSpawn[playerid] = 0;
	}
	
	dstatus[playerid] = 0;
    
	if(!logged[playerid])
	{
	    new pname[24];
	    new mess[500];
	    
	    GetPlayerName(playerid, pname, sizeof(pname));
	    format(mess, sizeof(mess), "{FFCC99}Игрок %s был кикнут с сервера. Причина: {FFCC60}Спавн без входа в аккаунт.", pname);
	    for(new i = 0; i != MAX_PLAYERS; i++) if(admin[i]) SendClientMessage(i, COLOR_DEF2, mess);
        kicked[playerid] = 1;
	}

	if((!avalid[playerid]) && (admin[playerid] > 0))
	{
	    new pname[24];
	    new mess[500];

	    GetPlayerName(playerid, pname, sizeof(pname));
	    format(mess, sizeof(mess), "{FFCC99}Игрок %s был кикнут с сервера. Причина: {FFCC60}Не пройдена процедура [ОВА].", pname);
	    for(new i = 0; i != MAX_PLAYERS; i++) if(admin[i]) SendClientMessage(i, COLOR_DEF2, mess);
        kicked[playerid] = 1;
	}
	
	if(!jailed[playerid])
	{
		if(w1[playerid] != 0) GivePlayerWeapon(playerid, w1[playerid], ammo[playerid]);
		if(w2[playerid] != 0) GivePlayerWeapon(playerid, w2[playerid], ammo[playerid]);
		if(w3[playerid] != 0) GivePlayerWeapon(playerid, w3[playerid], ammo[playerid]);
		if(w4[playerid] != 0) GivePlayerWeapon(playerid, w4[playerid], ammo[playerid]);
		if(w5[playerid] != 0) GivePlayerWeapon(playerid, w5[playerid], ammo[playerid]);
		if(w6[playerid] != 0) GivePlayerWeapon(playerid, w6[playerid], ammo[playerid]);
	}
	
	if(ahouse[playerid] != 1)
	{
		if(level[playerid] > 3)
		{
	    	new rPos = random(sizeof(pSpawns));
	    	SetPlayerPos(playerid, pSpawns[rPos][0], pSpawns[rPos][1], pSpawns[rPos][2]);
		}
		else
		{
	    	new rPos = random(sizeof(nPSpawns));
	    	SetPlayerPos(playerid, nPSpawns[rPos][0], nPSpawns[rPos][1], nPSpawns[rPos][2]);
	    	SendClientMessage(playerid, COLOR_CMD2, "Так как вы новичок на сервере, вы заспавнились в зоне новичков.");
		}
	}
	else
	{
	    SetPlayerPos(playerid, -3604.6121 + random(3), 421.3553 + random(3), 10.6656);
	}
	
	if(radio[playerid] < 10)
	{
	    new ramess[1000];
	    format(ramess, sizeof(ramess), "{E6FFE6}Сейчас играет \"%s\", для отключения используйте {FFCCFF}Меню[Y]->Радио.", radioList[radio[playerid]][1]);
	    
	    PlayAudioStreamForPlayer(playerid, radioList[radio[playerid]][0]);
		SendClientMessage(playerid, COLOR_DEF, ramess);
	}
	
	if(oldrelease[playerid] != MOD_RELEASE)
	{
	    OnPlayerCommandText(playerid, "/upd");
	    oldrelease[playerid] = MOD_RELEASE;
	}
	
	SetPlayerSkin(playerid, skin[playerid]);
	return 1;
}

public OnPlayerDeath(playerid, killerid, reason)
{
    new pname[24];
	GetPlayerName(playerid, pname, sizeof(pname));
	
	if(logged[playerid])
	{
	    	death[playerid]++;
			dstatus[playerid] = 1;
			kills[killerid]++;
	}
	else
	{
	    new fkl[500];
	    format(fkl, sizeof(fkl), "{FFCC99}Игрок {%s}%s{FFCC99} был кикнут. Причина: {00FFFF}Фейк-килл.", pColorsC[ncolor[playerid]], pname);
	    SendClientMessageToAll(COLOR_DEF, fkl);
     	kicked[playerid] = 1;
	}
	return 1;
}

public OnVehicleSpawn(vehicleid)
{
	return 1;
}

public OnVehicleDeath(vehicleid, killerid)
{
	return 1;
}

public OnPlayerText(playerid, text[])
{
	if(!logged[playerid])
	{
	    SendClientMessage(playerid, COLOR_CMD2, "Вы не вошли в аккаунт!");
	    return 0;
	}
	
	if(muted[playerid])
	{
	    SendClientMessage(playerid, COLOR_CMD2, "У вас мут, вы не можете писать в чат!");
	    return 0;
	}
	
	if(strval(text) == vicval && vicval != -1)
	{
	    new vimess[500];
	    new pname[24];
	    
	    GetPlayerName(playerid, pname, sizeof(pname));
	    format(vimess, sizeof(vimess), "{FFCC99}Игрок {%s}%s {FFCC90}победил в конкурсе! Число было: {00FFFF}%d.", pColorsC[ncolor[playerid]], pname, vicval);
		SendClientMessageToAll(COLOR_DEF, vimess);
		
		money[playerid] += vicval;
		score[playerid] += 10;
		vicval = -1;
		return 0;
	}
	
	if(text[0] == '*')
	{
	    if(admin[playerid] > 0)
	    {
	        new pname[24], message[500];

			GetPlayerName(playerid, pname, sizeof(pname));
			format(message, sizeof(message), "{FF90FF}[A-чат]{BFBFBF}%s[%d]: {FF704D}%s", pname, playerid, text[1]);
			
	        for(new i = 0; i != MAX_PLAYERS; i++) if(admin[i] > 0) SendClientMessage(i, COLOR_DEF, message);
	    } else SendClientMessage(playerid, COLOR_CMD2, "У вас нет прав для того, чтобы писать в этот чат.");
	    return 0;
	}
	
	if(text[0] == '&')
	{
	    if(vip[playerid])
	    {
	        new pname[24], message[500];

			GetPlayerName(playerid, pname, sizeof(pname));
			format(message, sizeof(message), "{99CCFF}[VIPC]{B3FFD9}%s[%d]: {FFFFCC}%s", pname, playerid, text[1]);

	        for(new i = 0; i != MAX_PLAYERS; i++) if(vip[i]) SendClientMessage(i, COLOR_DEF, message);
	    } else SendClientMessage(playerid, COLOR_CMD2, "У вас нет прав для того, чтобы писать в этот чат.");
	    return 0;
	}
	
	new pname[24], message[500];
	GetPlayerName(playerid, pname, sizeof(pname));
	format(message, sizeof(message), "{BFBFBF}(({%s}%s{%s}: %s{BFBFBF}))", pColorsC[ncolor[playerid]], pname, pColorsC[ccolor[playerid]], text);
	if(!SendPlayerBubbleMessage(playerid, message, 20)) SendClientMessage(playerid, COLOR_CMD2, "Никого нет по близости, ваше сообщение никто не увидит.");
	return 0;
}

public OnPlayerCommandText(playerid, cmdtext[])
{
    if(!logged[playerid])
	{
	    SendClientMessage(playerid, COLOR_DEF, "{FF0000}Вы не вошли в аккаунт!");
	    return 0;
	}
	
	//Мой пьяный бред. Ничего такого. Просто. Новогодняя. Шапка. Шапка, Карл!
	if(strcmp("/nycap", cmdtext, true, 6) == 0)
	{
    	if(logged[playerid])
    	{
        	if(nycap[playerid] == 0)
        	{
            	SetPlayerAttachedObject(playerid, 2, 19064, 2, 0.13, 0.0, 0.0, 0.0, 90.0, 90.0);
            	SendClientMessage(playerid, COLOR_CMD2, "Вы надели новогоднюю шапку.");
            	nycap[playerid] = 1;
        	}
        	else
       		{
            	RemovePlayerAttachedObject(playerid, 2);
            	DestroyPlayerObject(playerid, 19064);
            	SendClientMessage(playerid, COLOR_CMD2, "Вы сняли новогоднюю шапку.");
            	nycap[playerid] = 0;
        	}
    	}
    	return 1;
	}
	
	//Маска надевается на затылок и проваливается внутрь головы, но это не страшно ведь это не баг, а фича!
	//Сейчас все так носят.
	//Ладно, ладно, уговорил.
	if(strcmp("/mask", cmdtext, true, 5) == 0)
    {
        if(logged[playerid])
        {
    		if(mask[playerid] == 0)
        	{
        		SendClientMessage(playerid, COLOR_CMD2, "Вы одели маску.");
            	ApplyAnimation( playerid, "SHOP", "ROB_shifty", 4.1, 0, 1, 1, 0, 0 );
            	SetPlayerAttachedObject(playerid, 0, 18974, 2, 0.1, 0.03, -0.005, 90.0, 180.0, 90.0);
            	mask[playerid] = 1;
    		}
    		else
    		{
    		    SendClientMessage(playerid, COLOR_CMD2, "Вы сняли маску.");
    		    ApplyAnimation( playerid, "SHOP", "ROB_shifty", 4.1, 0, 1, 1, 0, 0 );
    	        RemovePlayerAttachedObject(playerid, 0);
    	        DestroyPlayerObject(playerid, 18974);
    	        mask[playerid] = 0;
    		}
		}
		return 1;
    }
	
	if(strcmp("/kick", cmdtext, true, 5) == 0)
	{
	    if(admin[playerid] > 1 || IsPlayerAdmin(playerid))
	    {
	        new kmess[2000];
	        new pId = -1;
	        new reason[1000];
	        new tmp[255];
	        new cc = 0;
	        new aname[24];
	        new pname[24];
	        
	        if(getArgs(cmdtext, 2) < 0)
	        {
	            SendClientMessage(playerid, COLOR_CMD2, "Вы не указали неверное количество опций.");
	            SendClientMessage(playerid, COLOR_SOFTGREEN, "Использование: /kick [ID] [Причина].");
	            return 1;
	        }
	        
	        for(new i = getArgs(cmdtext, 1); i != getArgs(cmdtext, 2) - 1; i++)
	        {
	            tmp[cc] = cmdtext[i];
	            cc++;
	        }
	        
			if(strlen(tmp) < 1)
			{
			    SendClientMessage(playerid, COLOR_CMD2, "Вы указали неверный ID игрока.");
	            SendClientMessage(playerid, COLOR_SOFTGREEN, "Использование: /kick [ID] [Причина].");
	            return 1;
			}
			pId = strval(tmp);
			
			if(strlen(cmdtext[getArgs(cmdtext, 2)]) < 1)
			{
			    SendClientMessage(playerid, COLOR_CMD2, "Вы указали некорректную причину.");
	            SendClientMessage(playerid, COLOR_SOFTGREEN, "Использование: /kick [ID] [Причина].");
	            return 1;
			}
			strcat(reason, cmdtext[getArgs(cmdtext, 2)]);
			
			if(pId == INVALID_PLAYER_ID)
			{
			    SendClientMessage(playerid, COLOR_CMD2, "Этого игрока нет на сервере.");
			    return 1;
			}
			
			if((admin[pId] > admin[playerid] && IsPlayerAdmin(playerid) == 0) || IsPlayerAdmin(pId))
			{
			    SendClientMessage(playerid, COLOR_CMD2, "Вы не можете кикнуть администратора выше вас по уровню.");
			    return 1;
			}
			
			GetPlayerName(playerid, aname, sizeof(aname));
			GetPlayerName(pId, pname, sizeof(pname));
			
			format(kmess, sizeof(kmess), "{DF9090}Администратор {%s}%s {DF9090}кикнул игрока {%s}%s{DF9090}. Причина: %s", pColorsC[ncolor[playerid]], aname, pColorsC[ncolor[pId]], pname, reason);
			SendClientMessageToAll(COLOR_DEF, kmess);
			kicked[pId] = 1;
	    } else SendClientMessage(playerid, COLOR_CMD2, "У вас нет полномочий для использования этой команды.");
	    return 1;
	}
	
	if(strcmp("/me", cmdtext, true, 3) == 0)
	{
	    if(strlen(cmdtext) < 4)
	    {
	        SendClientMessage(playerid, COLOR_CMD2, "Вы не ввели сообщение.");
	        SendClientMessage(playerid, COLOR_SOFTGREEN, "Использование: /me [Действие].");
	        return 1;
	    }
	    
	    new pname[24];
	    new memess[2000];
	    
	    GetPlayerName(playerid, pname, sizeof(pname));
	    format(memess, sizeof(memess), "{%s}%s {FFCCCC}%s", pColorsC[ccolor[playerid]], pname, cmdtext[4]);
	    SendPlayerBubbleMessage(playerid, memess, 10);
	    return 1;
	}
	
	if(strcmp("/boardad", cmdtext, true, 8) == 0)
	{
	    if(10000 <= money[playerid])
	    {
	    	if(strlen(cmdtext) < 9)
			{
		    	SendClientMessage(playerid, 0xFF000090, "Вы не написали текст!");
		    	return 1;
			}
		
			new Float: Ppos[3];
			new text3D[2000];
			new pname[24];
		
			GetPlayerName(playerid, pname, sizeof(pname));
			GetPlayerPos(playerid, Ppos[0], Ppos[1], Ppos[2]);
			format(text3D, sizeof(text3D), "{9090FF}Объявление от игрока: {%s}%s{FF0000}(%d).\n\n{00FF00}%s", pColorsC[ncolor[playerid]], pname, playerid, cmdtext[9]);
		
			if(P3DT[playerid]) Delete3DTextLabel(P3DT[playerid]);
			P3DT[playerid] = Create3DTextLabel(text3D, COLOR_DEF, Ppos[0], Ppos[1], Ppos[2], 40, GetPlayerVirtualWorld(playerid), 1);
		
			SendClientMessage(playerid, COLOR_DEF, "{00FF00}Вы успешно создали объявление {FF0000}(-10000$).");
			money[playerid] -= 10000;
		} else SendClientMessage(playerid, COLOR_CMD2, "У вас недостаточно денег {FFFF90}(Требуется 10000$).");
		return 1;
	}
	
	if(strcmp("/selldrugs", cmdtext, true, 10) == 0)
	{
	    if(strlen(cmdtext) < 12)
		{
		    SendClientMessage(playerid, 0xFF0000FF, "Вы не указали игрока!");
		    return 1;
		}
		new plr = strlen(cmdtext[12]);
		
		if(logged[plr] && plr != INVALID_PLAYER_ID)
		{
		    if(abs(playerToPlayerRadius(playerid, plr)) < 4)
		    {
				tempp[plr] = playerid;
				tempp[playerid] = plr;
				ShowPlayerDialog(playerid, DIALOG_SELLDRUG1, DIALOG_STYLE_INPUT, "{00FF00}Продажа наркотиков.", "{FF0000}Введите кол-во продаваемых накротиков {FFFF90}(В граммах).", "OK", "Отмена");
			} else SendClientMessage(playerid, COLOR_DEF, "{FF0000}Этот игрок слишком далеко от вас!");
		} else SendClientMessage(playerid, COLOR_DEF, "{FF0000}Этот игрок не вошёл в аккаунт!");
	    return 1;
	}
	
	if(strcmp("/velo", cmdtext, true, 5) == 0)
	{
	    if(admin[playerid] > 2)
	    {
            if(strlen(cmdtext) < 6)
			{
		    	SendClientMessage(playerid, 0xFFFFFFFF, "Вы не указали игрока!");
		    	return 1;
			}
			
			new plr;
			new Float: x, Float: y, Float: z;

			plr = strval(cmdtext[6]);
			
			if(plr != INVALID_PLAYER_ID && logged[plr])
			{
				if(GetPlayerState(plr) == PLAYER_STATE_DRIVER)
				{
					GetVehicleVelocity(GetPlayerVehicleID(plr), x, y, z);
					SetVehicleVelocity(GetPlayerVehicleID(plr), x * 4, y * 4, z);
				} else SendClientMessage(playerid, COLOR_CMD2, "Этот игрок не за рулём!");
			} else SendClientMessage(playerid, COLOR_CMD2, "Этот игрок не вошёл в аккаунт!");
		} else SendClientMessage(playerid, COLOR_CMD2, "У вас нет прав для использования этой команды!");
		return 1;
	}
	
	if(strcmp("/saya", cmdtext, true, 5) == 0)
	{
		if(admin[playerid])
		{
			if(strlen(cmdtext) < 6)
			{
				SendClientMessage(playerid, COLOR_DEF, "{FF0000}Вы не написали сообщение.");
				return 1;
			}
		
			new aname[24];
			new amess[2000];
		
			GetPlayerName(playerid, aname, sizeof(aname));
			format(amess, sizeof(amess), "{DF9090}Администратор {%s}%s{DF9090}: %s", pColorsC[ncolor[playerid]], aname, cmdtext[6]);
		
			SendClientMessageToAll(COLOR_DEF, amess);
		} else SendClientMessage(playerid, COLOR_CMD2, "У вас недостаточно прав для использования этой команды");
		return 1;
	}
	
	if(strcmp("/gmx", cmdtext, true, 4) == 0)
	{
	    if(admin[playerid] > 2 || IsPlayerAdmin(playerid))
	    {
	        if(IsPlayerAdmin(playerid))
			{
	        	SendClientMessageToAll(COLOR_DEF, "{FF0000}=============================================================================");
	        	SendClientMessageToAll(COLOR_DEF, "{FF0000}=============================================================================");
	        	SendClientMessageToAll(COLOR_DEF, "{FF0000}>>                                  {00FF00}ВНИМАНИЕ!!!{FF0000}");
	        	SendClientMessageToAll(COLOR_DEF, "{FF0000}>>                            {CCCCFF}РЕСТАРТ СЕРВЕРА{FF0000}");
	        	SendClientMessageToAll(COLOR_DEF, "{FF0000}=============================================================================");
	        	SendClientMessageToAll(COLOR_DEF, "{FF0000}=============================================================================");
	        }
	        else
	        {
	            new aname[24];
	            new amess[500];
	            
	            GetPlayerName(playerid, aname, sizeof(aname));
	            format(amess, sizeof(amess), "{FF0000}>>                {AFAFAF}Рестарт совершил администратор {%s}%s.", pColorsC[ncolor[playerid]], aname);
	            
	            SendClientMessageToAll(COLOR_DEF, "{FF0000}=============================================================================");
	        	SendClientMessageToAll(COLOR_DEF, "{FF0000}=============================================================================");
	        	SendClientMessageToAll(COLOR_DEF, "{FF0000}>>                                  {00FF00}ВНИМАНИЕ!!!{FF0000}");
	        	SendClientMessageToAll(COLOR_DEF, "{FF0000}>>                            {CCCCFF}РЕСТАРТ СЕРВЕРА{FF0000}");
	        	SendClientMessageToAll(COLOR_DEF, amess);
	        	SendClientMessageToAll(COLOR_DEF, "{FF0000}=============================================================================");
	        	SendClientMessageToAll(COLOR_DEF, "{FF0000}=============================================================================");
	        }
			SetTimer("restartv", 5000, 0);
	    }
	    else SendClientMessage(playerid, COLOR_CMD2, "У вас недостаточно прав для использования этой команды");
	    return 1;
	}
	
    if(strcmp("/switchahouse", cmdtext, true, 13) == 0)
    {
        if(IsPlayerAdmin(playerid))
        {
            new paid = strval(cmdtext[14]);
            
            if(paid != INVALID_PLAYER_ID && logged[paid])
            {
				new aname[24];
				new pname[24];
				new amess[2000];
				
				GetPlayerName(playerid, aname, sizeof(aname));
				GetPlayerName(paid, pname, sizeof(pname));
				
				if(ahouse[paid])
				{
					ahouse[paid] = 0;
					
					format(amess, sizeof(amess), "{DF9090}Администратор {%s}%s[%d] {DF9090}закрыл доступ к ЗЗ игроку {%s}%s.", pColorsC[ccolor[playerid]], aname, playerid, pColorsC[ccolor[paid]], pname);
					SendClientMessageToAll(COLOR_DEF, amess);
				}
				else
				{
				    ahouse[paid] = 1;

					format(amess, sizeof(amess), "{DF9090}Администратор {%s}%s {DF9090}открыл доступ к ЗЗ {DF9090}игроку {%s}%s.", pColorsC[ccolor[playerid]], aname, pColorsC[ccolor[paid]], pname);
					SendClientMessageToAll(COLOR_DEF, amess);
				}
            }
            else SendClientMessage(playerid, COLOR_CMD2, "ID игрока неправильный, или этот игрок не вошёл в аккаунт.");
        } else SendClientMessage(playerid, COLOR_CMD2, "У вас нет полномочий для использования этой команды.");
        return 1;
    }
    
    if(strcmp("/settime", cmdtext, true, 8) == 0)
    {
        if(admin[playerid])
        {
            new newtime;
            
            if(strlen(cmdtext) < 9)
			{
		    	SendClientMessage(playerid, 0xFFFFFFFF, "Вы не указали время!");
		    	return 1;
			}
			
            newtime = strval(cmdtext[9]);
            
			if(newtime > -1 && newtime < 24)
			{
			    new aname[24];
			    new tmess[1000];
			    
			    GetPlayerName(playerid, aname, sizeof(aname));
			    format(tmess, sizeof(tmess), "{DF9090}Администратор {%s}%s[%d] {DF9090}сменил время на %d:00.", pColorsC[ncolor[playerid]], aname, playerid, newtime);
			    SendClientMessageToAll(COLOR_DEF, tmess);
			    
			    for(new i = 0; i != MAX_PLAYERS; i++) SetPlayerTime(i, newtime, 0);
			} else SendClientMessage(playerid, COLOR_CMD2, "Вы ввели неправильное время.");
        } else SendClientMessage(playerid, COLOR_CMD2, "У вас нет полномочий для использования этой команды.");
        return 1;
    }
    
    if(strcmp("/setweather", cmdtext, true, 11) == 0)
    {
        if(admin[playerid])
        {
            new newweather;
            
        	if(strlen(cmdtext) < 12)
			{
		    	SendClientMessage(playerid, 0xFFFFFFFF, "Вы не указали ID!");
		    	return 1;
			}
			
            newweather = strval(cmdtext[12]);

			if(newweather > -1 && newweather < 2009)
			{
			    new aname[24];
			    new tmess[1000];

			    GetPlayerName(playerid, aname, sizeof(aname));
			    format(tmess, sizeof(tmess), "{DF9090}Администратор {%s}%s[%d] {DF9090}сменил погоду на %d.", pColorsC[ncolor[playerid]], aname, playerid, newweather);
			    SendClientMessageToAll(COLOR_DEF, tmess);

			    for(new i = 0; i != MAX_PLAYERS; i++) SetPlayerWeather(i, newweather);
			} else SendClientMessage(playerid, COLOR_CMD2, "Вы ввели неправильный id погоды.");
        } else SendClientMessage(playerid, COLOR_CMD2, "У вас нет полномочий для использования этой команды.");
        return 1;
    }
	
	if(strcmp("/upd", cmdtext, true, 4) == 0)
	{
	    Info(playerid, sUpdate);
	    return 1;
	}
	
	if(strcmp("/sys", cmdtext, true, 4) == 0)
	{
		if(admin[playerid] > 2 || IsPlayerAdmin(playerid))
		{
			ShowPlayerDialog(playerid, DIALOG_SYSMESS, DIALOG_STYLE_INPUT, "{FF00FF}Системное сообщение.", "{FFFF90}Введите текст системного сообщения.", "Ok", "Отмена");
		} else SendClientMessage(playerid, COLOR_CMD2, "У вас нет полномочий для использования этой команды.");
		return 1;
	}
	
    if(strcmp("/admins", cmdtext, true, 4) == 0)
	{
	    new aonline = 0;
		for(new i = 0; i != MAX_PLAYERS; i++) if(admin[i]) aonline++;
		
		if(aonline > 0)
		{
	    	new admname[500];
	    	new aname[24];

	    	SendClientMessageToAll(COLOR_DEF2, "Администраторы онлайн:");
			for(new i = 0; i != MAX_PLAYERS; i++)
			{
		    	if(admin[i])
		    	{
		        	GetPlayerName(i, aname, sizeof(aname));
		        	format(admname, sizeof(admname), "{FFCC90}Администратор {%s}%s[%d]. {FFCC90}Уровень: %d.", pColorsC[ncolor[i]], aname, i, admin[i]);
		        	SendClientMessageToAll(COLOR_DEF, admname);
		    	}
			}
		}else SendClientMessageToAll(COLOR_ADMIN, "В данный момент администраторов онлайн нет.");
	    return 1;
	}
	
	if(strcmp("/aad", cmdtext, true, 4) == 0)
	{
	    if(admin[playerid] > 7)
	    {
			for(new i = 0; i != MAX_PLAYERS; i++) if(logged[i]) Info(i, cmdtext[5]);
	    }else SendClientMessage(playerid, COLOR_CMD2, "У вас нет прав для того, чтобы использовать эту команду.");
		return 1;
	}
	
	if(strcmp("/car", cmdtext, true, 4) == 0)
	{
		if(strlen(cmdtext) < 5)
		{
		    SendClientMessage(playerid, 0xFFFFFFFF, "Вы не указали ID!");
		    return 1;
		}

		new cid = strval(cmdtext[5]);

		if(cid > 399 && cid < 612)
		{
		    new Float: pPos[3];
		    new vid;

		    GetPlayerPos(playerid, pPos[0], pPos[1], pPos[2]);
		    vid = CreateVehicle(cid, pPos[0], pPos[1], pPos[2], carcolor[playerid][0], carcolor[playerid][1], 0, 0);

			PutPlayerInVehicle(playerid, vid, 0);
		} else SendClientMessage(playerid, 0xFFFFFFFF, "Вы указали неверный ID!");
		return 1;
	}

	if(strcmp("/chc1", cmdtext, true, 5) == 0)
	{
	    if(GetPlayerState(playerid) == PLAYER_STATE_DRIVER)
	    {
	        if(strlen(cmdtext) < 6)
			{
		    	SendClientMessage(playerid, 0xFFFFFFFF, "Вы не указали ID!");
		    	return 1;
			}

	        new vid;
			new cid = strval(cmdtext[6]);
			new c1, c2;

	        vid = GetPlayerVehicleID(playerid);


            if(cid > -1 && cid < 256)
            {
                GetVehicleColor(vid, c1, c2);
                ChangeVehicleColor(vid, cid, c2);
            } else SendClientMessage(playerid, 0xFFFFFFFF, "Вы указали неверный ID!");
	    } else SendClientMessage(playerid, 0xFFFFFFFF, "Вы не в машине!");
	    return 1;
	}

	if(strcmp("/chc2", cmdtext, true, 5) == 0)
	{
	    if(GetPlayerState(playerid) == PLAYER_STATE_DRIVER)
	    {
	        if(strlen(cmdtext) < 6)
			{
		    	SendClientMessage(playerid, 0xFFFFFFFF, "Вы не указали ID!");
		    	return 1;
			}

	        new vid;
			new cid = strval(cmdtext[6]);
			new c1, c2;

	        vid = GetPlayerVehicleID(playerid);


            if(cid > -1 && cid < 256)
            {
                GetVehicleColor(vid, c1, c2);
                ChangeVehicleColor(vid, c1, cid);
            } else SendClientMessage(playerid, 0xFFFFFFFF, "Вы указали неверный ID!");
	    } else SendClientMessage(playerid, 0xFFFFFFFF, "Вы не в машине!");
	    return 1;
	}
	
	//ЕЕЕЕ. КОСТЫЛЬ! ЛОВИ ЕГО, ПОКА ОН НЕ УБЕЖАЛ! ЭХ. ПОЗДНО.
	if(strcmp("/cc", cmdtext, true, 3) == 0)
	{
	    if(admin[playerid] > 2 || IsPlayerAdmin(playerid))
	    {
			for(new i = 0; i != 200; i++) SendClientMessageToAll(COLOR_DEF, " ");
			
			if(IsPlayerAdmin(playerid) && admin[playerid] < 1)
			{
			    SendClientMessageToAll(COLOR_CMD, "Чат был очищен сервером.");
			    return 1;
			}
			else
			{
			    new cmess[500];
			    new aname[24];
			    
			    GetPlayerName(p
Теги:
Pawn, C, C++, сервер, samp, bloodmoon, moon, blood, исходники, код
Добавлено: 16 Декабря 2017 16:58:22 Добавил: Артём Коробов Нравится 0
Добавить
Комментарии:
Нету комментариев для вывода...