180 lines
5.5 KiB
SourcePawn
180 lines
5.5 KiB
SourcePawn
#include <chill_helper>
|
|
#include <morecolors>
|
|
#include <sourcemod>
|
|
|
|
#pragma newdecls required
|
|
#pragma semicolon 1
|
|
|
|
static char PLUGIN_VERSION[8] = "1.0.0";
|
|
|
|
public Plugin myinfo = {
|
|
name = "Chill Skies - Menus",
|
|
author = "Fartsy",
|
|
description = "Menu plugin for Chill Skies",
|
|
version = PLUGIN_VERSION,
|
|
url = "https://forums.firehostredux.com"
|
|
};
|
|
|
|
public void OnPluginStart() {
|
|
RegisterAllMenus();
|
|
RegConsoleCmd("sm_discord", Command_ShowDiscordMenu, "Show the chill skies discord thing");
|
|
RegConsoleCmd("sm_rules", Command_ShowRulesMenu, "Show the chill skies rules thing");
|
|
RegConsoleCmd("sm_votes", Command_ShowVotesMenu, "Show the chill skies votes thing");
|
|
}
|
|
|
|
//Send client Discord menu
|
|
public Action Command_ShowDiscordMenu(int client, int args) {
|
|
if (IsValidClient(client)) {
|
|
Menu menu = new Menu(MenuHandlerDiscord, MENU_ACTIONS_DEFAULT);
|
|
char buffer[100];
|
|
menu.SetTitle(DiscordMenu[0].title);
|
|
for (int i = 0; i < DiscordMenu[0].size; i++) menu.AddItem(buffer, DiscordMenu[i].item);
|
|
menu.ExitButton = true;
|
|
menu.Display(client, 20);
|
|
}
|
|
return Plugin_Handled;
|
|
}
|
|
|
|
public int MenuHandlerDiscord(Menu menu, MenuAction action, int client, int choice) {
|
|
if (action == MenuAction_Select) {
|
|
//DiscordMenu[choice].select();
|
|
switch (choice) {
|
|
case 0: {
|
|
ShowMOTDPanel(client, DiscordMenu[0].alias, DiscordMenu[0].url, MOTDPANEL_TYPE_URL);
|
|
CPrintToChat(client, "Our Discord server invite is {violet}%s", DiscordMenu[0].url);
|
|
}
|
|
}
|
|
} else if (action == MenuAction_End) CloseHandle(menu);
|
|
return 0;
|
|
}
|
|
|
|
//Send client rules menu
|
|
public Action Command_ShowRulesMenu(int client, int args) {
|
|
if (IsValidClient(client)) {
|
|
Menu menu = new Menu(MenuHandlerRules, MENU_ACTIONS_DEFAULT);
|
|
char buffer[100];
|
|
menu.SetTitle(RulesMenu[0].title);
|
|
for (int i = 0; i < RulesMenu[0].size; i++) menu.AddItem(buffer, RulesMenu[i].item);
|
|
menu.ExitButton = true;
|
|
menu.Display(client, 20);
|
|
}
|
|
return Plugin_Handled;
|
|
}
|
|
|
|
public int MenuHandlerRules(Menu menu, MenuAction action, int client, int choice) {
|
|
if (action == MenuAction_Select) {
|
|
PrintHintText(client, RulesMenu[choice].hintText);
|
|
Command_ShowRulesMenu(client, 0);
|
|
} else if (action == MenuAction_End) CloseHandle(menu);
|
|
return 0;
|
|
}
|
|
|
|
//Send clients votes menu
|
|
public Action Command_ShowVotesMenu(int client, int args) {
|
|
if (IsValidClient(client)) {
|
|
Menu menu = new Menu(MenuHandlerVotes, MENU_ACTIONS_DEFAULT);
|
|
char buffer[100];
|
|
menu.SetTitle("Chill Skies Votes"); //VotesMenu[0].title
|
|
menu.AddItem(buffer, "Toggle AllTalk");
|
|
menu.AddItem(buffer, "Toggle RTD");
|
|
//menu.AddItem(buffer, "Example Vote");
|
|
menu.ExitButton = true;
|
|
menu.Display(client, 20);
|
|
}
|
|
return Plugin_Handled;
|
|
}
|
|
|
|
public int MenuHandlerVotes(Menu menu, MenuAction action, int client, int choice) {
|
|
if (action == MenuAction_Select) {
|
|
menuData = choice;
|
|
PrintToChatAll("%i", menuData);
|
|
ShowVoteMenu(client);
|
|
}
|
|
return 0;
|
|
}
|
|
public void ShowVoteMenu(int client) {
|
|
switch (menuData) {
|
|
case 0: {
|
|
if (!IsVoteInProgress()) {
|
|
Menu menu = new Menu(MenuHandlerVoting);
|
|
menu.SetTitle("Enable AllTalk?");
|
|
menu.AddItem("yes", "Yes");
|
|
menu.AddItem("no", "No");
|
|
menu.ExitButton = false;
|
|
menu.DisplayVoteToAll(20);
|
|
PrintToChatAll("[Chill Skies] AllTalk vote has started! Vote now!");
|
|
}
|
|
}
|
|
case 1: {
|
|
if (!IsVoteInProgress()) {
|
|
Menu menu = new Menu(MenuHandlerVoting);
|
|
menu.SetTitle("Enable RTD?");
|
|
menu.AddItem("yes", "Yes");
|
|
menu.AddItem("no", "No");
|
|
menu.ExitButton = false;
|
|
menu.DisplayVoteToAll(20);
|
|
PrintToChatAll("[Chill Skies] RTD vote has started! Vote now!");
|
|
}
|
|
}
|
|
/* To add a new menu, add a new case and copy the template above. */
|
|
/*
|
|
case 2:{
|
|
if (!IsVoteInProgress()){
|
|
Menu menu = new Menu(MenuHandlerVoting);
|
|
menu.SetTitle("Example Vote?");
|
|
menu.AddItem("yes", "Yes");
|
|
menu.AddItem("no", "No");
|
|
menu.ExitButton = false;
|
|
menu.DisplayVoteToAll(20);
|
|
PrintToChatAll("[Chill Skies] Example vote has started! Vote now!");
|
|
}
|
|
|
|
}
|
|
*/
|
|
}
|
|
}
|
|
|
|
public int MenuHandlerVoting(Menu menu, MenuAction action, int result, int choice) {
|
|
if (action == MenuAction_End) delete menu;
|
|
if (action == MenuAction_VoteStart) {
|
|
CPrintToChatAll("{red} Voting. %N chose %i", result, choice);
|
|
}
|
|
else if (action == MenuAction_VoteEnd) {
|
|
switch (menuData) {
|
|
case 0: {
|
|
if (result == 0) {
|
|
PrintToChatAll("[Chill Skies] AllTalk vote has ended! AllTalk will turn on!");
|
|
ServerCommand("sv_alltalk 1");
|
|
}
|
|
if (result == 1) {
|
|
PrintToChatAll("[Chill Skies] AllTalk vote has ended! AllTalk will turn off!");
|
|
ServerCommand("sv_alltalk 0");
|
|
}
|
|
}
|
|
case 1: {
|
|
if (result == 0) {
|
|
PrintToChatAll("[Chill Skies] RTD vote has ended! RTD will be enabled!");
|
|
ServerCommand("sm_cvar sm_rtd2_enabled 1");
|
|
}
|
|
if (result == 1) {
|
|
PrintToChatAll("[Chill Skies] RTD vote has ended! RTD will be disabled!");
|
|
ServerCommand("sm_cvar sm_rtd2_enabled 0");
|
|
}
|
|
}
|
|
/* When adding new votes, make sure to increment case #. */
|
|
/*
|
|
case 2:{
|
|
if(result == 0){
|
|
PrintToChatAll("[Chill Skies] This is an example vote. The result was yes.");
|
|
ServerCommand("sm_thingToDoWhenYES");
|
|
}
|
|
if(result == 1){
|
|
PrintToChatAll("[Chill Skies] This is an example vote. The result was no.");
|
|
ServerCommand("sm_thingToDoWhenNO");
|
|
}
|
|
}
|
|
*/
|
|
}
|
|
}
|
|
return 0;
|
|
} |