-
Notifications
You must be signed in to change notification settings - Fork 39
/
ttt_buyRoles.sp
148 lines (124 loc) · 5.57 KB
/
ttt_buyRoles.sp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
#pragma semicolon 1
#pragma newdecls required
#include <sourcemod>
#include <sdktools>
#include <ttt>
#include <ttt_shop>
#include <multicolors>
#define PLUGIN_NAME TTT_PLUGIN_NAME ... " - Buy Roles"
#define T_SHORT_NAME "buyTRole"
#define TI_SHORT_NAME "buyTiRole"
#define D_SHORT_NAME "buyCTRole"
#define DI_SHORT_NAME "buyCTiRole"
ConVar g_cTPrice = null;
ConVar g_cTPrio = null;
ConVar g_cTiPrice = null;
ConVar g_cTiPrio = null;
ConVar g_cDPrice = null;
ConVar g_cDPrio = null;
ConVar g_cDiPrice = null;
ConVar g_cDiPrio = null;
ConVar g_cTLongName = null;
ConVar g_cTiLongName = null;
ConVar g_cDLongName = null;
ConVar g_cDiLongName = null;
ConVar g_cTDiscount = null;
ConVar g_cTiDiscount = null;
ConVar g_cDDiscount = null;
ConVar g_cDiDiscount = null;
public Plugin myinfo =
{
name = PLUGIN_NAME,
author = TTT_PLUGIN_AUTHOR,
description = TTT_PLUGIN_DESCRIPTION,
version = TTT_PLUGIN_VERSION,
url = TTT_PLUGIN_URL
};
public void OnPluginStart()
{
TTT_IsGameCSGO();
TTT_StartConfig("buyroles");
CreateConVar("ttt2_buy_roles_version", TTT_PLUGIN_VERSION, TTT_PLUGIN_DESCRIPTION, FCVAR_NOTIFY | FCVAR_DONTRECORD | FCVAR_REPLICATED);
g_cTLongName = AutoExecConfig_CreateConVar("buyroles_traitor_name", "Buy Traitor Role", "The name of the buy traitor role in the Shop");
g_cTiLongName = AutoExecConfig_CreateConVar("buyroles_traitor_instantly_name", "Buy Traitor Role Instantly", "The name of the buy traitor role in the Shop");
g_cDLongName = AutoExecConfig_CreateConVar("buyroles_detective_name", "Buy Detective Role", "The name of the buy detective role in the Shop");
g_cDiLongName = AutoExecConfig_CreateConVar("buyroles_detective_instantly_name", "Buy Detective Role Instantly", "The name of the buy detective role in the Shop");
g_cTPrice = AutoExecConfig_CreateConVar("buyroles_traitor_price", "9000", "The amount of credits that cost to buy the traitor role. 0 to disable.");
g_cTiPrice = AutoExecConfig_CreateConVar("buyroles_traitor_instantly_price", "40000", "The amount of credits that cost to buy the traitor instantly role. 0 to disable.");
g_cDPrice = AutoExecConfig_CreateConVar("buyroles_detective_price", "9000", "The amount of credits that cost to buy the detective role. 0 to disable.");
g_cDiPrice = AutoExecConfig_CreateConVar("buyroles_detective_instantly_price", "10000", "The amount of credits that cost to buy the detective instantly role. 0 to disable.");
g_cTPrio = AutoExecConfig_CreateConVar("buyroles_traitor_prio", "0", "The sorting priority of the buy traitor role in the shop menu.");
g_cTiPrio = AutoExecConfig_CreateConVar("buyroles_traitor_instantly_prio", "0", "The sorting priority of the buy traitor instantly role in the shop menu.");
g_cDPrio = AutoExecConfig_CreateConVar("buyroles_detective_prio", "0", "The sorting priority of the buy detective role in the shop menu.");
g_cDiPrio = AutoExecConfig_CreateConVar("buyroles_detective_instantly_prio", "0", "The sorting priority of the buy detective instantly role in the shop menu.");
g_cTDiscount = AutoExecConfig_CreateConVar("buyroles_discount_traitor", "0", "Should traitor role discountable for detectives?", _, true, 0.0, true, 1.0);
g_cTiDiscount = AutoExecConfig_CreateConVar("buyroles_discount_traitor_instantly", "0", "Should traitor role (instantly) discountable for detectives?", _, true, 0.0, true, 1.0);
g_cDDiscount = AutoExecConfig_CreateConVar("buyroles_discount_detective", "0", "Should detective role (instantly) discountable for detectives?", _, true, 0.0, true, 1.0);
g_cDiDiscount = AutoExecConfig_CreateConVar("buyroles_discount_detective_instantly", "0", "Should detective role (instantly) discountable for detectives?", _, true, 0.0, true, 1.0);
TTT_EndConfig();
}
public void OnConfigsExecuted()
{
RegisterItem();
}
public void TTT_OnItemsReset()
{
RegisterItem();
}
void RegisterItem()
{
char sBuffer[MAX_ITEM_LENGTH];
g_cTLongName.GetString(sBuffer, sizeof(sBuffer));
TTT_RegisterCustomItem(T_SHORT_NAME, sBuffer, g_cTPrice.IntValue, TTT_TEAM_INNOCENT, g_cTPrio.IntValue, g_cTDiscount.BoolValue);
g_cTiLongName.GetString(sBuffer, sizeof(sBuffer));
TTT_RegisterCustomItem(TI_SHORT_NAME, sBuffer, g_cTiPrice.IntValue, TTT_TEAM_INNOCENT, g_cTiPrio.IntValue, g_cTiDiscount.BoolValue);
g_cDLongName.GetString(sBuffer, sizeof(sBuffer));
TTT_RegisterCustomItem(D_SHORT_NAME, sBuffer, g_cDPrice.IntValue, TTT_TEAM_INNOCENT, g_cDPrio.IntValue, g_cDDiscount.BoolValue);
g_cDiLongName.GetString(sBuffer, sizeof(sBuffer));
TTT_RegisterCustomItem(DI_SHORT_NAME, sBuffer, g_cDiPrice.IntValue, TTT_TEAM_INNOCENT, g_cDiPrio.IntValue, g_cDiDiscount.BoolValue);
}
public Action TTT_OnItemPurchased(int client, const char[] itemshort, bool count)
{
if (TTT_IsClientValid(client) && IsPlayerAlive(client))
{
if (StrEqual(itemshort, D_SHORT_NAME, false))
{
int role = TTT_GetClientRole(client);
if (role != TTT_TEAM_INNOCENT)
{
return Plugin_Stop;
}
if(!TTT_ForceDetective(client))
return Plugin_Stop;
}
else if (StrEqual(itemshort, T_SHORT_NAME, false))
{
int role = TTT_GetClientRole(client);
if (role != TTT_TEAM_INNOCENT)
{
return Plugin_Stop;
}
if(!TTT_ForceTraitor(client))
return Plugin_Stop;
}
else if (StrEqual(itemshort, DI_SHORT_NAME, false))
{
int role = TTT_GetClientRole(client);
if (role != TTT_TEAM_INNOCENT)
{
return Plugin_Stop;
}
TTT_SetClientRole(client, TTT_TEAM_DETECTIVE);
}
else if (StrEqual(itemshort, TI_SHORT_NAME, false))
{
int role = TTT_GetClientRole(client);
if (role != TTT_TEAM_INNOCENT)
{
return Plugin_Stop;
}
TTT_SetClientRole(client, TTT_TEAM_TRAITOR);
}
}
return Plugin_Continue;
}