You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
124 lines
3.1 KiB
124 lines
3.1 KiB
/* Plugin Template generated by Pawn Studio */ |
|
|
|
#include <sourcemod> |
|
#include <adminmenu> |
|
|
|
new kickclients[MAXPLAYERS+1]; |
|
new banclients[MAXPLAYERS+1]; |
|
new muteclients[MAXPLAYERS+1]; |
|
new alreadyvoted_kick[MAXPLAYERS+1]; |
|
new alreadyvoted_ban[MAXPLAYERS+1]; |
|
new alreadyvoted_mute[MAXPLAYERS+1]; |
|
|
|
public Plugin:myinfo = |
|
{ |
|
name = "Basic Votes", |
|
author = "Chefe", |
|
description = "<- Description ->", |
|
version = "1.1", |
|
url = "<- URL ->" |
|
} |
|
|
|
public OnPluginStart() |
|
{ |
|
RegConsoleCmd("sm_votekick", Command_VoteKick, "Vote for kick a client.") |
|
RegConsoleCmd("sm_voteban", Command_VoteBan, "Vote for ban a client.") |
|
} |
|
|
|
public OnClientConnected(client) |
|
{ |
|
alreadyvoted_kick[client] = 0; |
|
alreadyvoted_ban[client] = 0; |
|
alreadyvoted_mute[client] = 0; |
|
} |
|
|
|
public OnClientDisconnect(client) |
|
{ |
|
alreadyvoted_kick[client] = 0; |
|
alreadyvoted_ban[client] = 0; |
|
alreadyvoted_mute[client] = 0; |
|
} |
|
|
|
public Action:Command_VoteKick(client, args) |
|
{ |
|
new Handle:votekick = CreateMenu(Menu_VoteKick); |
|
SetMenuTitle(votekick, "Select Player to Vote") |
|
AddTargetsToMenu(votekick, 0, true, false); |
|
DisplayMenu(votekick, client, MENU_TIME_FOREVER); |
|
|
|
return Plugin_Handled; |
|
} |
|
|
|
public Action:Command_VoteBan(client, args) |
|
{ |
|
new Handle:voteban = CreateMenu(Menu_VoteBan); |
|
SetMenuTitle(voteban, "Select Player to Vote"); |
|
AddTargetsToMenu(voteban, 0, true, false); |
|
DisplayMenu(voteban, client, MENU_TIME_FOREVER); |
|
|
|
return Plugin_Handled; |
|
} |
|
|
|
public Menu_VoteKick(Handle:menu, MenuAction:action, param1, param2) |
|
{ |
|
if (action == MenuAction_Select) |
|
{ |
|
new String:info[32]; |
|
GetMenuItem(menu, param2, info, sizeof(info)); |
|
new client = GetClientOfUserId(StringToInt(info)); |
|
new required = (60 * GetClientCount(true) / 100); |
|
|
|
if (alreadyvoted_kick[param1] != client) |
|
{ |
|
kickclients[client]++; |
|
alreadyvoted_kick[param1] = client; |
|
PrintToChatAll(" [SM] Register votekicks against %N (%i registered, %i required)", client, kickclients[client], required); |
|
} |
|
else |
|
{ |
|
PrintToChat(param1, "[SM] You have already voted for %N", client); |
|
} |
|
|
|
if (kickclients[client] >= required) |
|
{ |
|
KickClient(client, "You are kicked by Vote!"); |
|
PrintToChatAll("[SM] Kicked %N by %i votes.", client, kickclients[client]); |
|
} |
|
} |
|
else if (action == MenuAction_End) |
|
{ |
|
CloseHandle(menu); |
|
} |
|
} |
|
|
|
public Menu_VoteBan(Handle:menu, MenuAction:action, param1, param2) |
|
{ |
|
if (action == MenuAction_Select) |
|
{ |
|
new String:info[32]; |
|
GetMenuItem(menu, param2, info, sizeof(info)); |
|
new client = GetClientOfUserId(StringToInt(info)); |
|
new required = (60 * GetClientCount(true) / 100); |
|
|
|
if (alreadyvoted_ban[param1] != client) |
|
{ |
|
banclients[client]++; |
|
alreadyvoted_ban[param1] = client; |
|
PrintToChatAll(" [SM] Register voteban against %N (%i registered, %i required)", client, banclients[client], required); |
|
} |
|
else |
|
{ |
|
PrintToChat(param1, "[SM] You have already voted for %N", client); |
|
} |
|
|
|
if (banclients[client] >= required) |
|
{ |
|
BanClient(client, 3600, BANFLAG_AUTHID, "Voteban.", "You are banned by Vote for %i seconds!"); |
|
PrintToChatAll("[SM] Banned %N for %i seconds by %i votes.", client, 3600, kickclients[client]); |
|
} |
|
} |
|
else if (action == MenuAction_End) |
|
{ |
|
CloseHandle(menu); |
|
} |
|
}
|
|
|