#include <sourcemod>
#include <shop>
#include <csgo_colors>
#include <morecolors>
#pragma semicolon 1

int g_CheckChatMoney[MAXPLAYERS+1];
int g_MoneyClient[MAXPLAYERS+1];
char g_FlipCoin[MAXPLAYERS+1][1024];
int TargetSaveClient[MAXPLAYERS+1];
int TargetFlipSilver[MAXPLAYERS+1];
int g_FlipCoinTarget[MAXPLAYERS+1];
int g_MoneyItem[MAXPLAYERS+1];
char TargetFlip[65][65];
char TargetFlip1[65][65];
int g_TMoney[MAXPLAYERS+1];
int g_CheckMoneyGame[MAXPLAYERS+1];
int g_BlockClientGame[MAXPLAYERS+1];
int g_BlockTargetGame[MAXPLAYERS+1];
int FlipTime;
int FlipOffers;
float FlipBlockOffers;
int g_ChangeWrite;
int g_MaxFlipCredits;
int g_MinFlipCredits;
int g_Game;

public Plugin:myinfo = 
{
	name		= "[Shop] FlipGame",
	author		= "FLASHER",
	description	= "FlipGame For Shop Core",
	version		= "1.2.5",
	url			= "skype: flshr328"
};

public OnPluginStart ()
{
	RegConsoleCmd ("sm_flip", flipgame);
	HookEvent("player_say", Say);
	if (Shop_IsStarted()) Shop_Started();
	ConVar cvar;
	(cvar = CreateConVar("flip_time", "10",	"Время, через которое будет проведена игра между игроками", _, true, 1.0)).AddChangeHook(ChangeCvar_FlipTime);
	FlipTime = cvar.IntValue;
	(cvar = CreateConVar("flip_allowoffers", "1",	"Разрешить ли возможность отключать игрокам приглашения [1 - разрешено | 0 - запрещено]", _, true, 0.0, true, 1.0)).AddChangeHook(ChangeCvar_FlipOffers);
	FlipOffers = cvar.IntValue;
	(cvar = CreateConVar("flip_blocktime", "10.0",	"Сколько секунд запрещать повторное приглашение", _, true, 1.0)).AddChangeHook(ChangeCvar_FlipBlockOffers);
	FlipBlockOffers = cvar.FloatValue;
	(cvar = CreateConVar("flip_changewrite", "1",	"Тип вывода сообщения об игре [1 - HUD | 2 - Чат]", _, true, 1.0, true, 2.0)).AddChangeHook(ChangeCvar_g_ChangeWrite);
	g_ChangeWrite = cvar.IntValue;
	(cvar = CreateConVar("flip_maxcredits", "0",	"Максимум кредитов для ставки [0 - без ограничений]", _, true, 0.0)).AddChangeHook(ChangeCvar_g_MaxFlipCredits);
	g_MaxFlipCredits = cvar.IntValue;
	(cvar = CreateConVar("flip_mincredits", "0",	"Минимум кредитов для ставки", _, true, 0.0)).AddChangeHook(ChangeCvar_g_MinFlipCredits);
	g_MinFlipCredits = cvar.IntValue;
	(cvar = CreateConVar("flip_game", "0",	"Игра [CS:GO - 0 | CSS v89 - 1]", _, true, 0.0, true, 1.0)).AddChangeHook(ChangeCvar_g_Game);
	g_Game = cvar.IntValue;
	AutoExecConfig(true, "shop_flipgame", "shop");
}

public void ChangeCvar_FlipTime(ConVar convar, const char[] oldValue, const char[] newValue)
{
	FlipTime = convar.IntValue;
}
public void ChangeCvar_FlipOffers(ConVar convar, const char[] oldValue, const char[] newValue)
{
	FlipOffers = convar.IntValue;
}
public void ChangeCvar_FlipBlockOffers(ConVar convar, const char[] oldValue, const char[] newValue)
{
	FlipBlockOffers = convar.FloatValue;
}
public void ChangeCvar_g_ChangeWrite(ConVar convar, const char[] oldValue, const char[] newValue)
{
	g_ChangeWrite = convar.IntValue;
}
public void ChangeCvar_g_MaxFlipCredits(ConVar convar, const char[] oldValue, const char[] newValue)
{
	g_MaxFlipCredits = convar.IntValue;
}
public void ChangeCvar_g_MinFlipCredits(ConVar convar, const char[] oldValue, const char[] newValue)
{
	g_MinFlipCredits = convar.IntValue;
}
public void ChangeCvar_g_Game(ConVar convar, const char[] oldValue, const char[] newValue)
{
	g_Game = convar.IntValue;
}

public int Shop_Started()
{
	Shop_AddToFunctionsMenu(OnFuncDisplay, OnFuncSelect);
}

public void OnPluginEnd()
{
	Shop_RemoveFromFunctionsMenu(OnFuncDisplay, OnFuncSelect);
}

public int OnFuncDisplay(int client, char[] buffer, int maxlength)
{
	FormatEx(buffer, maxlength, "Монетка");
}

public bool OnFuncSelect(int client)
{
	MoneyGameMenu(client);
	return true;
}

public Action:flipgame(client, args)
{
	MoneyGameMenu(client);
	return Plugin_Handled;
}

MoneyGameMenu(client)
{
	new Handle:FlipGameHandle = CreateMenu(FlipGameMenu);
	SetMenuTitle(FlipGameHandle, "Монетка\n \n");
	AddMenuItem(FlipGameHandle, "StartGame", "Начать игру");
	if(FlipOffers == 1)
	{
		if(g_BlockClientGame[client] == 0)
		{
			AddMenuItem(FlipGameHandle, "block", "Отключить предложения");
		}
		else
		{
			AddMenuItem(FlipGameHandle, "unblock", "Включить предложения");
		}
	}
	AddMenuItem(FlipGameHandle, "info", "Информация\n \n");
	SetMenuExitButton(FlipGameHandle, true);
	DisplayMenu(FlipGameHandle, client, 0);
}

MoneyGameStartMenu(client)
{
	if(g_MoneyClient[client] < g_MinFlipCredits)
	{
		g_MoneyClient[client] = 0;
	}
	if(g_MaxFlipCredits != 0)
	{
		if(g_MoneyClient[client] > g_MaxFlipCredits)
		{
			g_MoneyClient[client] = 0;
		}
	}
	if(g_CheckMoneyGame[client] == 0)
	{
		if(g_MoneyItem[client] == 0)
		{
			g_FlipCoin[client] = "Решка";
		}
		else
		{
			g_FlipCoin[client] = "Орёл";
		}
		new Handle:FlipGameStartHandle = CreateMenu(FlipGameStartMenu);
		SetMenuTitle(FlipGameStartHandle, "Старт игры\n \nВаша ставка [%i кредитов]\nВаша сторона монетки [%s]\n \n", g_MoneyClient[client], g_FlipCoin[client]);
		AddMenuItem(FlipGameStartHandle, "credits", "Изменить ставку");
		AddMenuItem(FlipGameStartHandle, "money", "Изменить сторону монетки\n \n");
		AddMenuItem(FlipGameStartHandle, "start", "Найти игрока");
		SetMenuExitButton(FlipGameStartHandle, true);
		DisplayMenu(FlipGameStartHandle, client, 0);
	}
	else
	{
		if(g_Game != 0)
		{
			CPrintToChat(client, "\x07FFFFFFУ вас уже начата игра!");
		}
		else CGOPrintToChat(client, "У вас уже начата игра!");
		MoneyGameMenu(client);
	}
}

CreditsRateMenu(client)
{
	new Handle:MenuCreditsRateHandle = CreateMenu(MenuCreditsRateMenu); 
	SetMenuTitle(MenuCreditsRateHandle, "Кредиты для ставки [%i]\n \n", g_MoneyClient[client]);
	AddMenuItem(MenuCreditsRateHandle, "1", "+10");
	AddMenuItem(MenuCreditsRateHandle, "2", "+500");
	AddMenuItem(MenuCreditsRateHandle, "3", "+5000");
	AddMenuItem(MenuCreditsRateHandle, "4", "+50000");
	AddMenuItem(MenuCreditsRateHandle, "5", "+500000\n \n");
	AddMenuItem(MenuCreditsRateHandle, "done", "Готово");
	SetMenuExitButton(MenuCreditsRateHandle, true);
	DisplayMenu(MenuCreditsRateHandle, client, 0);
}

public FlipGameMenu(Handle:FlipGameHandle, MenuAction:action, client, param2)
{
	if (action == MenuAction_End)
	{
		CloseHandle(FlipGameHandle);
		return; 
	}
	if (action == MenuAction_Select)
	{
		new String:info[64];
		GetMenuItem(FlipGameHandle, param2, info, sizeof(info));
		if(strcmp(info, "StartGame") == 0)
		{
			MoneyGameStartMenu(client);
		}
		else if(strcmp(info, "info") == 0)
		{
			new Handle:InfoMoneyHandle = CreateMenu(InfoMoneyMenu);
			SetMenuTitle(InfoMoneyHandle, "Информация\n \n* Игра 1 на 1\n-Если игрок не принял предложение\nперезайдите на сервер и снова ищите противника!-\n \n");
			AddMenuItem(InfoMoneyHandle, "exit", "Назад");
			SetMenuExitButton(InfoMoneyHandle, false);
			DisplayMenu(InfoMoneyHandle, client, 0);
		}
		else if(strcmp(info, "block") == 0)
		{
			g_BlockClientGame[client] = 1;
			if(g_Game != 0)
			{
				CPrintToChat(client, "\x07FFFFFF[\x07FF0000Монетка\x07FFFFFF] Предложения отключены! Теперь только вы сможете их отправлять!");
			}
			else CGOPrintToChat(client, "[{RED}Монетка{DEFAULT}] Предложения отключены! Теперь только вы сможете их отправлять!");			
			MoneyGameMenu(client);
		}
		else if(strcmp(info, "unblock") == 0)
		{
			g_BlockClientGame[client] = 0;
			if(g_Game != 0)
			{
				CPrintToChat(client, "\x07FFFFFF[\x07FF0000Монетка\x07FFFFFF] Предложения включены! Теперь каждый игрок сможет вас пригласить в игру!");
			}
			else CGOPrintToChat(client, "[{RED}Монетка{DEFAULT}] Предложения включены! Теперь каждый игрок сможет вас пригласить в игру!");
			MoneyGameMenu(client);
		}
	}
}

public InfoMoneyMenu(Handle:InfoMoneyHandle, MenuAction:action, client, param2)
{
	if (action == MenuAction_Select)
	{
		new String:info[64];
		GetMenuItem(InfoMoneyHandle, param2, info, sizeof(info));
		if(strcmp(info, "exit") == 0)
		{
			MoneyGameMenu(client);
		}
	}
}

public FlipGameStartMenu(Handle:FlipGameStartHandle, MenuAction:action, client, param2)
{
	if (action == MenuAction_End)
	{
		CloseHandle(FlipGameStartHandle);
		return; 
	}
	if (action == MenuAction_Select)
	{
		new String:info[64];
		GetMenuItem(FlipGameStartHandle, param2, info, sizeof(info));
		if(strcmp(info, "credits") == 0)
		{
			g_CheckChatMoney[client] = 0;
			
			new Handle:ImputSelectionHandle = CreateMenu(ImputSelectionMenu); 
			if(g_MaxFlipCredits != 0)
			{
				SetMenuTitle(ImputSelectionHandle, "Выберите тип ввода\n \nМинимальная ставка: %i кредитов\nМаксимальная ставка: %i кредитов\n \n", g_MinFlipCredits, g_MaxFlipCredits);
			}
			else
			{
				SetMenuTitle(ImputSelectionHandle, "Выберите тип ввода\n \nМинимальная ставка: %i кредитов\n \n", g_MinFlipCredits, g_MaxFlipCredits);
			}
			AddMenuItem(ImputSelectionHandle, "one", "В чат");
			AddMenuItem(ImputSelectionHandle, "two", "Через меню\n \n");
			AddMenuItem(ImputSelectionHandle, "exit", "Назад");
			SetMenuExitButton(ImputSelectionHandle, true);
			DisplayMenu(ImputSelectionHandle, client, 0);
		}
		else if(strcmp(info, "money") == 0)
		{
			if(g_MoneyItem[client] == 0)
			{
				g_MoneyItem[client] = 1;
			}
			else g_MoneyItem[client] = 0;
			MoneyGameStartMenu(client);
		}
		else if(strcmp(info, "start") == 0)
		{
			if(g_MoneyClient[client] != 0 && Shop_GetClientCredits(client) >= g_MoneyClient[client])
			{
				new player;
				new Handle:ChoicePlayerHandle = CreateMenu(ChoicePlayerMenu); 
				SetMenuTitle(ChoicePlayerHandle, "Выберите игрока [%i кредитов]:\n \n", g_MoneyClient[client]); 
				decl String:userid[15], String:name[32]; 
				for (new i = 1; i <= MaxClients; i++) 
				{
					if(IsClientInGame(i))
					{
						if (!IsFakeClient(i) && Shop_GetClientCredits(i) >= g_MoneyClient[client] && i != client && g_BlockClientGame[i] != 1 && g_BlockTargetGame[client] != i && g_CheckMoneyGame[i] != 1) 
						{ 
							IntToString(GetClientUserId(i), userid, 15); 
							GetClientName(i, name, 32); 
							AddMenuItem(ChoicePlayerHandle, userid, name); 
							player = player + 1;
						}
					}
				} 
				if (player == 0)
				{
					AddMenuItem(ChoicePlayerHandle, "nonplayer", "Нет подходящих игроков");
				}
				DisplayMenu(ChoicePlayerHandle, client, 0); 
			}
			else
			{
				if(g_Game != 0)
				{
					CPrintToChat(client, "\x07FFFFFF[\x07FF0000Монетка\x07FFFFFF] У вас не достаточно кредитов, либо ставка не может ранятся 0!");
				}
				else CGOPrintToChat(client, "[{RED}Монетка{DEFAULT}] У вас не достаточно кредитов, либо ставка не может ранятся 0!");
				MoneyGameStartMenu(client);
			}
		}
	}
}

public ImputSelectionMenu(Handle:ImputSelectionHandle, MenuAction:action, client, param2)
{
	if (action == MenuAction_End)
	{
		CloseHandle(ImputSelectionHandle);
		return; 
	}
	if (action == MenuAction_Select)
	{
		new String:info[64];
		GetMenuItem(ImputSelectionHandle, param2, info, sizeof(info));
		if(strcmp(info, "one") == 0)
		{
			g_CheckChatMoney[client] = 1;
			if(g_Game != 0)
			{
				CPrintToChat(client, "\x07FFFFFF[\x07FF0000Монетка\x07FFFFFF] Введите сумму в чат:");
			}
			else CGOPrintToChat(client, "[{RED}Монетка{DEFAULT}] Введите сумму в чат:");
			MoneyGameStartMenu(client);
		}
		else if(strcmp(info, "two") == 0)
		{
			g_MoneyClient[client] = 0;
			CreditsRateMenu(client);
		}
		else if(strcmp(info, "exit") == 0)
		{
			MoneyGameStartMenu(client);
		}
	}
}

public MenuCreditsRateMenu(Handle:MenuCreditsRateHandle, MenuAction:action, client, param2)
{
	if (action == MenuAction_End)
	{
		CloseHandle(MenuCreditsRateHandle);
		return; 
	}
	if (action == MenuAction_Select)
	{
		new String:info[64];
		GetMenuItem(MenuCreditsRateHandle, param2, info, sizeof(info));
		if(strcmp(info, "1") == 0)
		{
			if((Shop_GetClientCredits(client) - g_MoneyClient[client] - 10) >= 0)
			{
				g_MoneyClient[client] = g_MoneyClient[client] + 10;
			}
			else 
			{
				if(g_Game != 0)
				{
					CPrintToChat(client, "\x07FFFFFF[\x07FF0000Монетка\x07FFFFFF] Не достаточно кредитов!");
				}
				else CGOPrintToChat(client, "[{RED}Монетка{DEFAULT}] Не достаточно кредитов!");
			}
			CreditsRateMenu(client);
		}
		else if(strcmp(info, "2") == 0)
		{
			if((Shop_GetClientCredits(client) - g_MoneyClient[client] - 500) >= 0)
			{
				g_MoneyClient[client] = g_MoneyClient[client] + 500;
			}
			else 
			{
				if(g_Game != 0)
				{
					CPrintToChat(client, "\x07FFFFFF[\x07FF0000Монетка\x07FFFFFF] Не достаточно кредитов!");
				}
				else CGOPrintToChat(client, "[{RED}Монетка{DEFAULT}] Не достаточно кредитов!");
			}
			CreditsRateMenu(client);
		}
		else if(strcmp(info, "3") == 0)
		{
			if((Shop_GetClientCredits(client) - g_MoneyClient[client] - 5000) >= 0)
			{
				g_MoneyClient[client] = g_MoneyClient[client] + 5000;
			}
			else 
			{
				if(g_Game != 0)
				{
					CPrintToChat(client, "\x07FFFFFF[\x07FF0000Монетка\x07FFFFFF] Не достаточно кредитов!");
				}
				else CGOPrintToChat(client, "[{RED}Монетка{DEFAULT}] Не достаточно кредитов!");
			}
			CreditsRateMenu(client);
		}
		else if(strcmp(info, "4") == 0)
		{
			if((Shop_GetClientCredits(client) - g_MoneyClient[client] - 50000) >= 0)
			{
				g_MoneyClient[client] = g_MoneyClient[client] + 50000;
			}
			else 
			{
				if(g_Game != 0)
				{
					CPrintToChat(client, "\x07FFFFFF[\x07FF0000Монетка\x07FFFFFF] Не достаточно кредитов!");
				}
				else CGOPrintToChat(client, "[{RED}Монетка{DEFAULT}] Не достаточно кредитов!");
			}
			CreditsRateMenu(client);
		}
		else if(strcmp(info, "5") == 0)
		{
			if((Shop_GetClientCredits(client) - g_MoneyClient[client] - 500000) >= 0)
			{
				g_MoneyClient[client] = g_MoneyClient[client] + 500000;
			}
			else 
			{
				if(g_Game != 0)
				{
					CPrintToChat(client, "\x07FFFFFF[\x07FF0000Монетка\x07FFFFFF] Не достаточно кредитов!");
				}
				else CGOPrintToChat(client, "[{RED}Монетка{DEFAULT}] Не достаточно кредитов!");
			}
			CreditsRateMenu(client);
		}
		else if(strcmp(info, "done") == 0)
		{
			if(g_MoneyClient[client] >= g_MinFlipCredits)
			{
				if(g_MaxFlipCredits != 0)
				{
					if(g_MoneyClient[client] < g_MaxFlipCredits)
					{
						if(Shop_GetClientCredits(client) < g_MoneyClient[client])
						{
							if(g_Game != 0)
							{
								CPrintToChat(client, "\x07FFFFFF[\x07FF0000Монетка\x07FFFFFF] У вас  уже не достаточно кредитов! Ставка равна 0");
							}
							else CGOPrintToChat(client, "[{RED}Монетка{DEFAULT}] У вас  уже не достаточно кредитов! Ставка равна 0");
							g_MoneyClient[client] = 0;
							MoneyGameStartMenu(client);
						}
						else
						{
							MoneyGameStartMenu(client);
						}
					}
					else
					{
						if(g_Game != 0)
						{
							CPrintToChat(client, "\x07FFFFFF[\x07FF0000Монетка\x07FFFFFF] Ошибка! Максимальная ставка: \x07FF0000%i \x07FFFFFFкредитов", g_MaxFlipCredits);
						}
						else CGOPrintToChat(client,"[{RED}Монетка{DEFAULT}] Ошибка! Максимальная ставка: {RED}%i {DEFAULT}кредитов", g_MaxFlipCredits);
						g_MoneyClient[client] = 0;
						MoneyGameStartMenu(client);
					}
				}
			}
			else
			{
				if(g_Game != 0)
				{
					CPrintToChat(client, "\x07FFFFFF[\x07FF0000Монетка\x07FFFFFF] Ошибка! Минимальная ставка: \x07FF0000%i \x07FFFFFFкредитов", g_MinFlipCredits);
				}
				else CGOPrintToChat(client,"[{RED}Монетка{DEFAULT}] Ошибка! Минимальная ставка: {RED}%i {DEFAULT}кредитов", g_MinFlipCredits);
				g_MoneyClient[client] = 0;
				MoneyGameStartMenu(client);
			}
			MoneyGameStartMenu(client);
		}
	}
}


public ChoicePlayerMenu(Handle:ChoicePlayerHandle, MenuAction:action, client, option) 
{ 
	if (action == MenuAction_End) 
	{ 
		CloseHandle(ChoicePlayerHandle); 
		return; 
	} 
	if (action != MenuAction_Select) 
	{
		return; 
	}
	if (Shop_GetClientCredits(client) >= g_MoneyClient[client])
	{
		decl String:userid[15]; 
		GetMenuItem(ChoicePlayerHandle, option, userid, 15); 
		new target = GetClientOfUserId(StringToInt(userid)); 
		if (target > 0) 
		{
			if(g_Game != 0)
			{
				CPrintToChat(client, "\x07FFFFFF[\x07FF0000Монетка\x07FFFFFF] Предложение отправлено");
			}
			else CGOPrintToChat(client, "[{RED}Монетка{DEFAULT}] Предложение отправлено");
			if(Shop_GetClientCredits(target) >= g_MoneyClient[client])
			{
				g_CheckMoneyGame[client] = 1;
				TargetSaveClient[target] = client;
				TargetFlipSilver[target] = g_MoneyClient[client];
				g_FlipCoinTarget[target] = g_MoneyItem[client];
				new Handle:TargetFlipHandle = CreateMenu(TargetFliChoicePlayerHandle);
				SetMenuTitle(TargetFlipHandle, "-Монетка-\n \nПредложение сыграть с игроком %N\nСтавка [%i кредитов]\nСторона монетки %N [%s]\n \n", client, TargetFlipSilver[target], client, g_FlipCoin[client]); 
				AddMenuItem(TargetFlipHandle, "yes", "Принять предложение");
				AddMenuItem(TargetFlipHandle, "no", "Отказаться от предложения");
				SetMenuExitButton(TargetFlipHandle, false);
				DisplayMenu(TargetFlipHandle, target, 0);
			}
			else
			{
				if(g_Game != 0)
				{
					CPrintToChat(client, "\x07FFFFFF[\x07FF0000Монетка\x07FFFFFF] У игрока уже нет достаточного количества кредитов!");
				}
				else CGOPrintToChat(client, "[{RED}Монетка{DEFAULT}] У игрока уже нет достаточного количества кредитов!");
				MoneyGameStartMenu(client); 
			}
		} 
		else
		{		
			if(g_Game != 0)
			{
				CPrintToChat(client, "\x07FFFFFF[\x07FF0000Монетка\x07FFFFFF] Игрок не найден (вышел с сервера)");
			}
			else CGOPrintToChat(client, "[{RED}Монетка{DEFAULT}] Игрок не найден (вышел с сервера)"); 
			MoneyGameStartMenu(client); 
		}
	}
	else
	{
		if(g_Game != 0)
		{
			CPrintToChat(client, "\x07FFFFFF[\x07FF0000Монетка\x07FFFFFF] У вас не достаточно кредитов");
		}
		else CGOPrintToChat(client, "[{RED}Монетка{DEFAULT}] У вас не достаточно кредитов!");
		MoneyGameStartMenu(client);
	}
}

public TargetFliChoicePlayerHandle(Handle:TargetFlipHandle, MenuAction:action, client, param2)
{
	if (action == MenuAction_Select)
	{
		int clients;
		clients = TargetSaveClient[client];
		new String:info[64];
		GetMenuItem(TargetFlipHandle, param2, info, sizeof(info));
		if(strcmp(info, "yes") == 0)
		{
			if(IsClientInGame(client) && IsClientInGame(clients))
			{
				if(Shop_GetClientCredits(client) >= TargetFlipSilver[client] && Shop_GetClientCredits(clients) >= TargetFlipSilver[client])
				{
					g_CheckMoneyGame[client] = 1;
					if(g_FlipCoinTarget[client] == 0)
					{
						TargetFlip[client] = "Орёл";
						TargetFlip1[client] = "Решка";
					}
					else
					{
						TargetFlip[client] = "Решка";
						TargetFlip1[client] = "Орёл";
					}
					if(g_Game != 0)
					{
						CPrintToChat(clients, "\x07FFFFFF[\x07FF0000Монетка\x07FFFFFF] \x070000FF%N \x07FFFFFFпринял предложение", client);
					}
					else CGOPrintToChat(clients, "[{RED}Монетка{DEFAULT}] {BLUE}%N {DEFAULT}принял предложение", client);
					Shop_SetClientCredits(client, Shop_GetClientCredits(client) - TargetFlipSilver[client]);
					Shop_SetClientCredits(clients, Shop_GetClientCredits(clients) - TargetFlipSilver[client]);
				
					g_TMoney[client] = FlipTime;
					CreateTimer(1.0, MoneyTime, GetClientUserId(client), TIMER_REPEAT);
				}
				else
				{
					if(IsClientInGame(client))
					{
						if(g_Game != 0)
						{
							CPrintToChat(client, "\x07FFFFFF[\x07FF0000Монетка\x07FFFFFF] Ошибка!!!");
						}
						else CGOPrintToChat(client, "[{RED}Монетка{DEFAULT}] Ошибка!!!");
					}
					if(IsClientInGame(clients))
					{
						if(g_Game != 0)
						{
							CPrintToChat(clients, "\x07FFFFFF[\x07FF0000Монетка\x07FFFFFF] Ошибка!!!");
						}
						else CGOPrintToChat(clients, "[{RED}Монетка{DEFAULT}] Ошибка!!!");
					}
					g_CheckMoneyGame[client] = 0;
					g_CheckMoneyGame[TargetSaveClient[client]] = 0;
				}
			}
			else
			{
				if(IsClientInGame(client))
				{
					if(g_Game != 0)
					{
						CPrintToChat(client, "\x07FFFFFF[\x07FF0000Монетка\x07FFFFFF] Ошибка!!!");
					}
					else CGOPrintToChat(client, "[{RED}Монетка{DEFAULT}] Ошибка!!!");
					g_CheckMoneyGame[client] = 0;
				}
				if(IsClientInGame(clients))
				{
					if(g_Game != 0)
					{
						CPrintToChat(clients, "\x07FFFFFF[\x07FF0000Монетка\x07FFFFFF] Ошибка!!!");
					}
					else CGOPrintToChat(clients, "[{RED}Монетка{DEFAULT}] Ошибка!!!");
					g_CheckMoneyGame[TargetSaveClient[client]] = 0;
				}
				
			}
		}
		else if(strcmp(info, "no") == 0)
		{
			if(IsClientInGame(clients))
			{
				if(g_Game != 0)
				{
					CPrintToChat(clients, "\x07FFFFFF[\x07FF0000Монетка\x07FFFFFF] \x070000FF%N \x07FFFFFFотказался", client);
				}
				CGOPrintToChat(clients, "[{RED}Монетка{DEFAULT}] {BLUE}%N {DEFAULT}отказался", client);
				g_CheckMoneyGame[TargetSaveClient[client]] = 0;
				g_BlockTargetGame[clients] = client;
				CreateTimer(FlipBlockOffers, MoneyTimeUnblock, GetClientUserId(clients), TIMER_REPEAT);
			}
		}
	}
}

public Action MoneyTime(Handle timer, any UserId)
{
	new credits;
	char g_mText[512];
	int iClient = GetClientOfUserId(UserId);
	credits = (TargetFlipSilver[iClient] + TargetFlipSilver[iClient]);
	if(g_TMoney[iClient] != 0)
	{
		if(g_ChangeWrite == 1)
		{
			if(g_Game != 0)
			{
				if(IsClientInGame(iClient))
				{
					Format(g_mText,sizeof(g_mText), "★★★★★★★Монетка★★★★★★★\nВы [%s] Vs Противник [%s]\nНа кону %i кредитов\nДо спина %i сек.",TargetFlip[iClient], TargetFlip1[iClient], credits, g_TMoney[iClient]);
					PrintHintText(iClient, g_mText);
				}
				if(IsClientInGame(TargetSaveClient[iClient]))
				{
					Format(g_mText,sizeof(g_mText), "★★★★★★★Монетка★★★★★★★\nПротивник [%s] Vs Вы [%s]\nНа кону %i кредитов\nДо спина %i сек.",TargetFlip[iClient], TargetFlip1[iClient], credits, g_TMoney[iClient]);
					PrintHintText(TargetSaveClient[iClient], g_mText);
				}
			}
			else
			{
				if(IsClientInGame(iClient))
				{
					Format(g_mText,sizeof(g_mText), "<font size='16'> <center>★★★★★★★Монетка★★★★★★★</center>\nВы [%s] Vs Противник [%s]\nНа кону %i кредитов\nДо спина %i сек.</font>",TargetFlip[iClient], TargetFlip1[iClient], credits, g_TMoney[iClient]);
					PrintHintText(iClient, g_mText);
				}
				if(IsClientInGame(TargetSaveClient[iClient]))
				{
					Format(g_mText,sizeof(g_mText), "<font size='16'> <center>★★★★★★★Монетка★★★★★★★</center>\nПротивник [%s] Vs Вы [%s]\nНа кону %i кредитов\nДо спина %i сек.</font>",TargetFlip[iClient], TargetFlip1[iClient], credits, g_TMoney[iClient]);
					PrintHintText(TargetSaveClient[iClient], g_mText);
				}
			}
		}
		else
		{
			if(IsClientInGame(iClient))
			{
				if(g_TMoney[iClient] == FlipTime)
				{
					if(g_Game != 0)
					{
						Format(g_mText,sizeof(g_mText), "\x07FFFFFF[\x07FF0000Монетка\x07FFFFFF] Вы [\x07FF0000%s\x07FFFFFF] Vs Противник [\x07FF0000%s\x07FFFFFF] || На кону \x07FF0000%i \x07FFFFFFкредитов",TargetFlip[iClient], TargetFlip1[iClient], credits);
						CPrintToChat(iClient, g_mText);
						Format(g_mText,sizeof(g_mText), "\x07FFFFFF[\x07FF0000Монетка\x07FFFFFF] До спина \x070000FF%i \x07FFFFFFсек.", g_TMoney[iClient]);
						CPrintToChat(iClient, g_mText);
					}
					else
					{
						Format(g_mText,sizeof(g_mText), "{DEFAULT}[{RED}Монетка{DEFAULT}] Вы [{RED}%s{DEFAULT}] Vs Противник [{RED}%s{DEFAULT}] || На кону {RED}%i {DEFAULT}кредитов",TargetFlip[iClient], TargetFlip1[iClient], credits);
						CGOPrintToChat(iClient, g_mText);
						Format(g_mText,sizeof(g_mText), "{DEFAULT}[{RED}Монетка{DEFAULT}] До спина {BLUE}%i {DEFAULT}сек.", g_TMoney[iClient]);
						CGOPrintToChat(iClient, g_mText);
					}
				}
			}
			if(IsClientInGame(TargetSaveClient[iClient]))
			{
				if(g_TMoney[iClient] == FlipTime)
				{
					if(g_Game != 0)
					{
						Format(g_mText,sizeof(g_mText), "\x07FFFFFF[\x07FF0000Монетка\x07FFFFFF] Противник [\x07FF0000%s\x07FFFFFF] Vs Вы [\x07FF0000%s\x07FFFFFF] || На кону \x07FF0000%i кредитов",TargetFlip[iClient], TargetFlip1[iClient], credits);
						CPrintToChat(TargetSaveClient[iClient], g_mText);
						Format(g_mText,sizeof(g_mText), "\x07FFFFFF[\x07FF0000Монетка\x07FFFFFF] До спина \x070000FF%i \x07FFFFFFсек.", g_TMoney[iClient]);
						CPrintToChat(TargetSaveClient[iClient], g_mText);
					}
					else
					{
						Format(g_mText,sizeof(g_mText), "{DEFAULT}[{RED}Монетка{DEFAULT}] Противник [{RED}%s{DEFAULT}] Vs Вы [{RED}%s{DEFAULT}] || На кону {RED}%i кредитов",TargetFlip[iClient], TargetFlip1[iClient], credits);
						CGOPrintToChat(TargetSaveClient[iClient], g_mText);
						Format(g_mText,sizeof(g_mText), "{DEFAULT}[{RED}Монетка{DEFAULT}] До спина {BLUE}%i {DEFAULT}сек.", g_TMoney[iClient]);
						CGOPrintToChat(TargetSaveClient[iClient], g_mText);
					}
				}
			}
		}
		g_TMoney[iClient] = g_TMoney[iClient] - 1;
		return Plugin_Continue;
	}
	else
	{
		new i = GetRandomInt(0, 1);
		char MoneyWin[64];
		if (i == 0)
		{
			MoneyWin = "Решку";
		}
		else
		{
			MoneyWin = "Орла";
		}
		if(g_ChangeWrite == 1)
		{
			if(g_Game != 0)
			{
				if(iClient)
				{
					Format(g_mText,sizeof(g_mText), "★★★★★★★Монетка★★★★★★★\nВы [%s] Vs Противник [%s]\nНа кону %i кредитов\nМонетка повернулась на %s",TargetFlip[iClient], TargetFlip1[iClient], credits, MoneyWin);
					PrintHintText(iClient, g_mText);
				}
				if(TargetSaveClient[iClient])
				{
					Format(g_mText,sizeof(g_mText), "★★★★★★★Монетка★★★★★★★\nПротивник [%s] Vs Вы [%s]\nНа кону %i кредитов\nМонетка повернулась на %s",TargetFlip[iClient], TargetFlip1[iClient], credits, MoneyWin);
					PrintHintText(TargetSaveClient[iClient], g_mText);
				}
			}
			else
			{
				if(iClient)
				{
					Format(g_mText,sizeof(g_mText), "<font size='16'> <center>★★★★★★★Монетка★★★★★★★</center>\nВы [%s] Vs Противник [%s]\nНа кону %i кредитов\nМонетка повернулась на %s</font>",TargetFlip[iClient], TargetFlip1[iClient], credits, MoneyWin);
					PrintHintText(iClient, g_mText);
				}
				if(TargetSaveClient[iClient])
				{
					Format(g_mText,sizeof(g_mText), "<font size='16'> <center>★★★★★★★Монетка★★★★★★★</center>\nПротивник [%s] Vs Вы [%s]\nНа кону %i кредитов\nМонетка повернулась на %s</font>",TargetFlip[iClient], TargetFlip1[iClient], credits, MoneyWin);
					PrintHintText(TargetSaveClient[iClient], g_mText);
				}
			}
		}
		else
		{
			if(g_Game != 0)
			{
				if(IsClientInGame(iClient))
				{
					Format(g_mText,sizeof(g_mText), "\x07FFFFFF[\x07FF0000Монетка\x07FFFFFF] Монетка повернулась на \x07FF0000%s", MoneyWin);
					CGOPrintToChat(iClient, g_mText);
				}
				if(IsClientInGame(iClient))
				{
					Format(g_mText,sizeof(g_mText), "\x07FFFFFF[\x07FF0000Монетка\x07FFFFFF] Монетка повернулась на \x07FF0000%s", MoneyWin);
					CGOPrintToChat(TargetSaveClient[iClient], g_mText);
				}
			}
			else
			{
				if(IsClientInGame(iClient))
				{
					Format(g_mText,sizeof(g_mText), "{DEFAULT}[{RED}Монетка{DEFAULT}] Монетка повернулась на {RED}%s", MoneyWin);
					CGOPrintToChat(iClient, g_mText);
				}
				if(IsClientInGame(iClient))
				{
					Format(g_mText,sizeof(g_mText), "{DEFAULT}[{RED}Монетка{DEFAULT}] Монетка повернулась на {RED}%s", MoneyWin);
					CGOPrintToChat(TargetSaveClient[iClient], g_mText);
				}
			}
		}
		if (i == 0)
		{
			if(g_FlipCoinTarget[iClient] == 0)
			{
				if(IsClientInGame(TargetSaveClient[iClient]))
				{
					Shop_SetClientCredits(TargetSaveClient[iClient], Shop_GetClientCredits(TargetSaveClient[iClient]) + credits);
					if(g_Game != 0)
					{
						CPrintToChat(TargetSaveClient[iClient], "\x07FFFFFF[\x07FF0000Монетка\x07FFFFFF] Вы выиграли \x07FF0000}%i \x07FFFFFFкредитов", credits);
						CPrintToChatAll("\x07FFFFFF[\x07FF0000Монетка\x07FFFFFF] \x070000FF%N \x07FFFFFFвыиграл \x07FF0000%i \x07FFFFFFкредитов у \x070000FF%N",TargetSaveClient[iClient], credits, iClient);
					}
					else
					{
						CGOPrintToChat(TargetSaveClient[iClient], "[{RED}Монетка{DEFAULT}] Вы выиграли {RED}%i {DEFAULT}кредитов", credits);
						CGOPrintToChatAll("[{RED}Монетка{DEFAULT}] {BLUE}%N {DEFAULT}выиграл {RED}%i {DEFAULT}кредитов у {BLUE}%N",TargetSaveClient[iClient], credits, iClient);
					}
				}
				if(IsClientInGame(iClient))
				{
					if(g_Game != 0)
					{
						CPrintToChat(iClient, "\x07FFFFFF[\x07FF0000Монетка\x07FFFFFF] Вы проиграли в битве. Выпала \x07FF0000Решка");
					}
					else CGOPrintToChat(iClient, "[{RED}Монетка{DEFAULT}] Вы проиграли в битве. Выпала {RED}Решка");
				}
			}
			else
			{
				if(iClient && IsClientInGame(iClient))
				{
					Shop_SetClientCredits(iClient, Shop_GetClientCredits(iClient) + credits);
					if(g_Game != 0)
					{
						CPrintToChat(iClient, "\x07FFFFFF[\x07FF0000Монетка\x07FFFFFF] Вы выиграли \x07FF0000%i \x07FFFFFFкредитов", credits);
						CPrintToChatAll("\x07FFFFFF[\x07FF0000Монетка\x07FFFFFF] \x070000FF%N \x07FFFFFFвыиграл \x07FF0000%i \x07FFFFFFкредитов у \x070000FF%N",iClient, credits, TargetSaveClient[iClient]);
					}
					else
					{
						CGOPrintToChat(iClient, "[{RED}Монетка{DEFAULT}] Вы выиграли {RED}%i {DEFAULT}кредитов", credits);
						CGOPrintToChatAll("[{RED}Монетка{DEFAULT}] {BLUE}%N {DEFAULT}выиграл {RED}%i {DEFAULT}кредитов у {BLUE}%N",iClient, credits, TargetSaveClient[iClient]);
					}
				}
				if(IsClientInGame(TargetSaveClient[iClient]))
				{
					if(g_Game != 0)
					{
						CPrintToChat(TargetSaveClient[iClient], "\x07FFFFFF[\x07FF0000Монетка\x07FFFFFF] Вы проиграли в битве. Выпала \x07FF0000Решка");
					}
					else CGOPrintToChat(TargetSaveClient[iClient], "[{RED}Монетка{DEFAULT}] Вы проиграли в битве. Выпала {RED}Решка");
				}
			}
		}
		if (i == 1)
		{
			if(g_FlipCoinTarget[iClient] == 1)
			{
				if(TargetSaveClient[iClient] && IsClientInGame(TargetSaveClient[iClient]))
				{
					Shop_SetClientCredits(TargetSaveClient[iClient], Shop_GetClientCredits(TargetSaveClient[iClient]) + credits);
					if(g_Game != 0)
					{
						CPrintToChat(TargetSaveClient[iClient], "\x07FFFFFF[\x07FF0000Монетка\x07FFFFFF] Вы выиграли \x07FF0000%i \x07FFFFFFкредитов", credits);
						CPrintToChatAll("\x07FFFFFF[\x07FF0000Монетка\x07FFFFFF] \x070000FF%N \x07FFFFFFвыиграл \x07FF0000%i \x07FFFFFFкредитов у \x070000FF%N",TargetSaveClient[iClient], credits, iClient);
					}
					else
					{
						CGOPrintToChat(TargetSaveClient[iClient], "[{RED}Монетка{DEFAULT}] Вы выиграли {RED}%i {DEFAULT}кредитов", credits);
						CGOPrintToChatAll("[{RED}Монетка{DEFAULT}] {BLUE}%N {DEFAULT}выиграл {RED}%i {DEFAULT}кредитов у {BLUE}%N",TargetSaveClient[iClient], credits, iClient);
					}
				}
				if(iClient && IsClientInGame(iClient))
				{
					if(g_Game != 0)
					{
						CPrintToChat(iClient, "\x07FFFFFF[\x07FF0000Монетка\x07FFFFFF] Вы проиграли в битве. Выпал \x07FF0000Орёл");
					}
					else CGOPrintToChat(iClient, "[{RED}Монетка{DEFAULT}] Вы проиграли в битве. Выпал {RED}Орёл");
				}
			}
			else
			{
				if(iClient)
				{
					Shop_SetClientCredits(iClient, Shop_GetClientCredits(iClient) + credits);
					if(g_Game != 0)
					{
						CPrintToChat(iClient, "\x07FFFFFF[\x07FF0000Монетка\x07FFFFFF] Вы выиграли \x07FF0000%i \x07FFFFFFкредитов", credits);
						CPrintToChatAll("\x07FFFFFF[\x07FF0000Монетка\x07FFFFFF] \x070000FF%N \x07FFFFFFвыиграл \x07FF0000%i \x07FFFFFFкредитов у \x070000FF%N",iClient, credits, TargetSaveClient[iClient]);
					}
					else
					{
						CGOPrintToChat(iClient, "[{RED}Монетка{DEFAULT}] Вы выиграли {RED}%i {DEFAULT}кредитов", credits);
						CGOPrintToChatAll("[{RED}Монетка{DEFAULT}] {BLUE}%N {DEFAULT}выиграл {RED}%i {DEFAULT}кредитов у {BLUE}%N",iClient, credits, TargetSaveClient[iClient]);
					}
				}
				if(IsClientInGame(TargetSaveClient[iClient]))
				{
					if(g_Game != 0)
					{
						CGOPrintToChat(TargetSaveClient[iClient], "\x07FFFFFF[\x07FF0000Монетка\x07FFFFFF] Вы проиграли в битве. Выпал \x07FF0000Орёл");
					}
					else CGOPrintToChat(TargetSaveClient[iClient], "[{RED}Монетка{DEFAULT}] Вы проиграли в битве. Выпал {RED}Орёл");
				}
			}
		}
		g_BlockTargetGame[TargetSaveClient[iClient]] = iClient;
		CreateTimer(FlipBlockOffers, MoneyTimeUnblock, GetClientUserId(TargetSaveClient[iClient]), TIMER_REPEAT);
		g_CheckMoneyGame[iClient] = 0;
		g_CheckMoneyGame[TargetSaveClient[iClient]] = 0;
		return Plugin_Stop;
	}
}

public Action MoneyTimeUnblock(Handle timer, any UserId)
{
	int iClient = GetClientOfUserId(UserId);
	g_BlockTargetGame[iClient] = 0;
}

public Say(Handle:event, const String:name[], bool:dontBroadcast) 
{ 
	new i = GetClientOfUserId(GetEventInt(event, "userid")); 
	decl String:text[64];
	if(g_CheckChatMoney[i] == 1)
	{
		GetEventString(event, "text", text, sizeof(text));
		g_MoneyClient[i] = StringToInt(text);
		if(g_MoneyClient[i] > 0)
		{
			if(g_MoneyClient[i] >= g_MinFlipCredits)
			{
				if(g_MaxFlipCredits != 0)
				{
					if(g_MoneyClient[i] < g_MaxFlipCredits)
					{
						if(Shop_GetClientCredits(i) < g_MoneyClient[i])
						{
							if(g_Game != 0)
							{
								CPrintToChat(i,"\x07FFFFFF[\x07FF0000Монетка\x07FFFFFF] У вас не достаточно кредитов");
							}
							else CGOPrintToChat(i,"[{RED}Монетка{DEFAULT}] У вас не достаточно кредитов");
							g_MoneyClient[i] = 0;
						}
					}
					else
					{
						if(g_Game != 0)
						{
							CPrintToChat(i,"\x07FFFFFF[\x07FF0000Монетка\x07FFFFFF] Ошибка! Максимальная ставка: \x07FF0000%i \x07FFFFFFкредитов", g_MaxFlipCredits);
						}
						else CGOPrintToChat(i,"[{RED}Монетка{DEFAULT}] Ошибка! Максимальная ставка: {RED}%i {DEFAULT}кредитов", g_MaxFlipCredits);
						g_MoneyClient[i] = 0;
					}
				}
			}
			else
			{
				if(g_Game != 0)
				{
					CPrintToChat(i,"\x07FFFFFF[\x07FF0000Монетка\x07FFFFFF] Ошибка! Минимальная ставка: \x07FF0000%i \x07FFFFFFкредитов", g_MinFlipCredits);
				}
				else CGOPrintToChat(i,"[{RED}Монетка{DEFAULT}] Ошибка! Минимальная ставка: {RED}%i {DEFAULT}кредитов", g_MinFlipCredits);
				g_MoneyClient[i] = 0;
			}
		}
		else
		{
			if(g_Game != 0)
			{
				CPrintToChat(i,"\x07FFFFFF[\x07FF0000Монетка\x07FFFFFF] Не правильное число");
			}
			else CGOPrintToChat(i,"[{RED}Монетка{DEFAULT}] Не правильное число");
			g_MoneyClient[i] = 0;
		}
		g_CheckChatMoney[i] = 0;
		MoneyGameStartMenu(i);
	}
}

public OnClientPostAdminCheck(iClient)
{
	g_CheckMoneyGame[iClient] = 0;
	g_CheckChatMoney[iClient] = 0;
	g_MoneyClient[iClient] = 0;
}