PHP Code:
#pragma semicolon 1
#include <csgocolors>
#include <store>
#include <sourcemod>
#include <sdktools>
#pragma newdecls required
int ScrollTimes[MAXPLAYERS + 1];
int WinNumber[MAXPLAYERS + 1];
int betAmount[MAXPLAYERS + 1];
bool isSpinning[MAXPLAYERS + 1] = false;
//ConVar g_Cvar_NormalItems;
//ConVar g_Cvar_VIPItems;
ConVar g_Cvar_VIPFlag;
char FULL_SOUND_PATH[] = "sound/ruleta/ruleta.mp3";
char RELATIVE_SOUND_PATH[] = "*ruleta/ruleta.mp3";
//char g_sNormalItems[64];
//char g_sVIPItems[64];
#define PLUGIN_NAME "Store Roulette by Kewaii"
#define PLUGIN_AUTHOR "Kewaii"
#define PLUGIN_DESCRIPTION "Zephyrus Store Roulette"
#define PLUGIN_VERSION "1.3.9"
#define PLUGIN_TAG " \x07[ HAWKS ]"
public Plugin myinfo =
{
name = PLUGIN_NAME,
author = PLUGIN_AUTHOR,
description = PLUGIN_DESCRIPTION,
version = PLUGIN_VERSION,
url = "http://steamcommunity.com/id/KewaiiGamer"
};
public void OnPluginStart()
{
g_Cvar_VIPFlag = CreateConVar("kewaii_roulette_vip_flag", "a", "VIP Access Flag");
//g_Cvar_NormalItems = CreateConVar("kewaii_roulette_normal_items", "100,500,750,1000,1500,1750,2000,2500,3000,4000,5000", "Lists all the menu items for normal player roulette. Separate each item with a comma. Only integers allowed");
//g_Cvar_VIPItems = CreateConVar("kewaii_roulette_vip_items", "5000,5500,6000,6500,7000,7500,8000,8500,9000,10000,12500,15000", "Lists all the menu items for VIP player roulette. Separate each item with a comma. Only integers allowed");
RegConsoleCmd("sm_ruleta", CommandRoulette);
LoadTranslations("kewaii_roulette.phrases");
AutoExecConfig(true, "kewaii_roulette");
}
public void OnMapStart()
{
AddFileToDownloadsTable( FULL_SOUND_PATH);
FakePrecacheSound(RELATIVE_SOUND_PATH);
}
public void OnClientPostAdminCheck(int client)
{
isSpinning[client] = false;
}
public Action CommandRoulette(int client, int args)
{
if (args < 1)
{
ReplyToCommand(client, "[SM] Usage: sm_ruleta <culoare> <suma>");
return Plugin_Handled;
}
}
/*Menu CreateRouletteMenu(int client)
{
Menu menu = new Menu(RouletteMenuHandler);
char buffer[128];
Format(buffer, sizeof(buffer), "%T", "ChooseType", client);
menu.SetTitle(buffer);
menu.AddItem("player", "Player");
menu.AddItem("vip", "VIP", !HasClientVIP(client) ? ITEMDRAW_DISABLED : ITEMDRAW_DEFAULT);
return menu;
}
public int RouletteMenuHandler(Menu menu, MenuAction action, int client, int selection)
{
switch(action)
{
case MenuAction_Select:
{
if(IsClientInGame(client))
{
char option[32];
menu.GetItem(selection, option, sizeof(option));
if (StrEqual(option, "player"))
{
CreatePlayerRouletteMenu(client).Display(client, MENU_TIME_FOREVER);
}
if (StrEqual(option, "vip"))
{
CreateVIPRouletteMenu(client).Display(client, MENU_TIME_FOREVER);
}
}
}
case MenuAction_End:
{
delete menu;
}
}
}
Menu CreatePlayerRouletteMenu(int client)
{
Menu menu = new Menu(CreditsChosenMenuHandler);
char buffer[128];
Format(buffer, sizeof(buffer), "%T", "ChooseCredits", client, Store_GetClientCredits(client));
menu.SetTitle(buffer);
GetConVarString(g_Cvar_NormalItems, g_sNormalItems, sizeof(g_sNormalItems));
char sItems[18][16];
ExplodeString(g_sNormalItems, ",", sItems, sizeof(sItems), sizeof(sItems[]));
for (int i = 0; i < sizeof(sItems); i++) {
if (!StrEqual(sItems[i], "")) {
menu.AddItem(sItems[i], sItems[i], Store_GetClientCredits(client) >= StringToInt(sItems[i]) ? ITEMDRAW_DEFAULT : ITEMDRAW_DISABLED);
}
}
menu.ExitBackButton = true;
return menu;
}
Menu CreateVIPRouletteMenu(int client)
{
Menu menu = new Menu(CreditsChosenMenuHandler);
char buffer[128];
Format(buffer, sizeof(buffer), "%T", "ChooseCredits", client, Store_GetClientCredits(client));
menu.SetTitle(buffer);
GetConVarString(g_Cvar_VIPItems, g_sVIPItems, sizeof(g_sVIPItems));
char sItems[18][16];
ExplodeString(g_sVIPItems, ",", sItems, sizeof(sItems), sizeof(sItems[]));
for (int i = 0; i < sizeof(sItems); i++) {
if (!StrEqual(sItems[i], "")) {
menu.AddItem(sItems[i], sItems[i], Store_GetClientCredits(client) >= StringToInt(sItems[i]) ? ITEMDRAW_DEFAULT : ITEMDRAW_DISABLED);
}
}
menu.ExitBackButton = true;
return menu;
}
public int CreditsChosenMenuHandler(Menu menu, MenuAction action, int client, int selection)
{
switch(action)
{
case MenuAction_Select:
{
if(IsClientInGame(client))
{
char option[32];
menu.GetItem(selection, option, sizeof(option));
int crd = Store_GetClientCredits(client);
int bet = StringToInt(option);
if(crd >= bet)
{
if (!isSpinning[client])
{
Store_SetClientCredits(client, crd - bet);
betAmount[client] = bet;
SpinCredits(client);
isSpinning[client] = true;
}
else
{
CPrintToChat(client, "%s %t", PLUGIN_TAG, "AlreadySpinning");
}
}
else
{
CPrintToChat(client, "%s %t", PLUGIN_TAG, "NoEnoughCredits", bet - crd);
}
}
}
case MenuAction_Cancel:
{
if (IsClientInGame(client) && selection == MenuCancel_ExitBack)
{
CreateRouletteMenu(client).Display(client, 10);
}
}
case MenuAction_End:
{
delete menu;
}
}
}*/
public void SpinCredits(int client)
{
int FakeNumber = GetRandomInt(0,999);
if(FakeNumber > 0 && FakeNumber < 111)
{
PrintHintText(client, "</font><font color='#75D1FF'>→ </font><font color='#FFFFFF'>Culoare: </font><font color='#00FF00'> Verde </font><font color='#75D1FF'>←", FakeNumber);
}
if(FakeNumber > 111 && FakeNumber < 555)
{
PrintHintText(client, "</font><font color='#75D1FF'>→ </font><font color='#FFFFFF'>Culoare: </font><font color='#000000'>Negru </font><font color='#75D1FF'>←", FakeNumber);
}
if(FakeNumber >= 555 && FakeNumber < 999)
{
PrintHintText(client, "</font><font color='#75D1FF'>→ </font><font color='#FFFFFF'>Culoare: </font><font color='#E60000'>Rosu </font><font color='#75D1FF'>←", FakeNumber);
}
if(ScrollTimes[client] == 0)
{
ClientCommand(client, "playgamesound *ui/csgo_ui_crate_open.wav");
}
if(ScrollTimes[client] < 20)
{
CreateTimer(0.05, TimerNext, client);
ScrollTimes[client] += 1;
ClientCommand(client, "playgamesound *ui/csgo_ui_crate_item_scroll.wav");
}
else if(ScrollTimes[client] < 30)
{
float AddSomeTime = 0.05 * ScrollTimes[client] / 3;
CreateTimer(AddSomeTime, TimerNext, client);
ScrollTimes[client] += 1;
ClientCommand(client, "playgamesound *ui/csgo_ui_crate_item_scroll.wav");
}
else if(ScrollTimes[client] == 30)
{
int troll = GetRandomInt(1,2);
if(troll == 1)
{
ClientCommand(client, "playgamesound *ui/csgo_ui_crate_item_scroll.wav");
ScrollTimes[client] += 1;
CreateTimer(1.5, TimerNext, client);
}
else
{
ClientCommand(client, "playgamesound *ui/csgo_ui_crate_item_scroll.wav");
CreateTimer(1.5, TimerFinishing, client);
WinNumber[client] = FakeNumber;
ScrollTimes[client] = 0;
}
}
else
{
ClientCommand(client, "playgamesound *ui/csgo_ui_crate_item_scroll.wav");
CreateTimer(1.5, TimerFinishing, client);
WinNumber[client] = FakeNumber;
ScrollTimes[client] = 0;
}
}
public Action TimerFinishing(Handle timer, any client)
{
if (IsClientInGame(client))
{
isSpinning[client] = false;
WinCredits(client, WinNumber[client], betAmount[client]);
}
}
public void WinCredits(int client, int Number, int Bet)
{
if(IsClientInGame(client))
{
int multiplier;
if(Number >= 0 && Number < 111)
{
multiplier = 14;
if(Bet * multiplier >= 70000)
{
EmitSoundToAll(RELATIVE_SOUND_PATH);
}
else
{
ClientCommand(client, "playgamesound *ui/item_drop3_rare.wav");
}
}
if(Number >= 111 && Number < 555)
{
multiplier = 2;
ClientCommand(client, "playgamesound *ui/item_drop3_rare.wav");
}
if(Number >= 555 && Number < 999)
{
multiplier = 2;
ClientCommand(client, "playgamesound *ui/item_drop3_rare.wav");
}
if (multiplier > 0)
{
if(Bet * multiplier >= 10000)
{
if(Number >= 0 && Number < 111)
{
CPrintToChatAll("%s \x04%N \x01a castigat \x07%i \x01credite pe culoarea verde!", PLUGIN_TAG, client, Bet * multiplier);
}
if(Number >= 111 && Number < 555)
{
CPrintToChatAll("%s \x04%N \x01a castigat \x07%i \x01credite pe culoarea neagra!", PLUGIN_TAG, client, Bet * multiplier);
}
if(Number >= 555 && Number < 999)
{
CPrintToChatAll("%s \x04%N \x01a castigat \x07%i \x01credite pe culoarea rosie!", PLUGIN_TAG, client, Bet * multiplier);
}
}
if(Number >= 0 && Number < 111)
{
CPrintToChat(client, "%s \x01Ai castigat {red}%i credite \x01pe culoare verde!", PLUGIN_TAG, Bet * multiplier);
}
if(Number >= 111 && Number < 555)
{
CPrintToChat(client, "%s \x01Ai castigat {red}%i credite \x01pe culoarea neagra!", PLUGIN_TAG, Bet * multiplier);
}
if(Number >= 555 && Number < 999)
{
CPrintToChat(client, "%s \x01Ai castigat {red}%i credite \x01pe culoarea rosie!", PLUGIN_TAG, Bet * multiplier);
}
Store_SetClientCredits(client, Store_GetClientCredits(client) + Bet * (multiplier + 1));
}
}
}
public Action TimerNext(Handle timer, any client)
{
if (IsClientInGame(client))
{
SpinCredits(client);
}
}
public bool HasClientVIP(int client)
{
char ConVarValue[32];
GetConVarString(g_Cvar_VIPFlag, ConVarValue, sizeof(ConVarValue));
int flag = ReadFlagString(ConVarValue);
return CheckCommandAccess(client, "", flag, true);
}
void FakePrecacheSound(const char[] szPath)
{
AddToStringTable(FindStringTable( "soundprecache" ), szPath);
}