Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <sourcemod>
- #include <sdktools>
- #include <sdkhooks>
- #include <cstrike>
- #include <multicolors>
- #include <smlib>
- #include <Total/Sheriff>
- #include <Total/Functions>
- #include <Total/Master>
- #include <Total/Innocent>
- new bool:sheriff[MAXPLAYERS];
- new guardVotes[MAXPLAYERS];
- new Handle:t_showResultVotes;
- new Handle:t_addRandSheriff;
- new String:shAn[256];
- new bool:MensagemZoeira = false;
- public APLRes:AskPluginLoad2(Handle:myself, bool:late, String:error[], err_max){
- CreateNative("isSheriff", Native_isSheriff);
- CreateNative("addSheriff", Native_addSheriff);
- CreateNative("removeSheriff", Native_removeSheriff);
- CreateNative("getTotalSheriffs", Native_getTotalSheriffs);
- }
- public OnPluginStart(){
- HookEvent("round_start", roundStart);
- HookEvent("player_death", playerDeath);
- CreateTimer(3.0, PrintMsg, _, TIMER_REPEAT);
- AddCommandListener(changeSheriffCommand, "say");
- AddCommandListener(changeSheriffCommand, "say_team");
- }
- public Action:roundStart(Handle:event, const String:name[], bool:dontBroadcast){
- MensagemZoeira = false;
- resetTimers();
- resetSheriffs();
- resetVotes();
- startTimers();
- //Mostrar votação de XERIFES
- if(getTotalGuardsAlive() > 0)
- for(new i = 1; i <= MaxClients; i++)
- if(isPrisonerAlive(i)){
- new Handle: showGuards = CreateMenu(showVote);
- SetMenuTitle(showGuards, "[TJB] Votacao para XERIFE:");
- for(new l = 1; l <= MaxClients; l++)
- if(isGuardAlive(l)){
- new String:guardName[32], String:guardID[2];
- GetClientName(l, guardName, sizeof(guardName));
- Format(guardID, sizeof(guardID), "%i", l);
- AddMenuItem(showGuards, guardID, guardName);
- }
- //Mostrar para o PRISIONEIRO
- SetMenuExitButton(showGuards, true);
- DisplayMenu(showGuards, i, 9);
- }
- }
- public OnGameFrame()
- {
- for(new i=1;i<MaxClients;i++)
- {
- if(IsValidClient(i) && GetClientTeam(i) == 3 && MensagemZoeira)
- {
- PrintHintText(i,shAn);
- }
- }
- }
- public showVote(Handle: menu, MenuAction: action, id, strOpt){
- if(action == MenuAction_Select){
- new String: guardID[2], String: option[2];
- GetMenuItem(menu, strOpt, option, 2);
- for(new i = 1; i <= MaxClients; i++){
- Format(guardID, 2, "%.i", i);
- if(StrEqual(option, guardID))
- if(isGuardAlive(i)){
- guardVotes[i]++;
- CPrintToChat(id, "{lightred}[TJB] {default}Voce votou no guarda: {lightblue}%N", i);
- break;
- }
- }
- }
- }
- public Action:changeSheriffCommand(client, const String:command[], argc){
- new String:text[16];
- GetCmdArgString(text, sizeof(text));
- //Comando para mudar de SHERIFF
- if(client > 0){
- if(isGuardAlive(client) && isSheriff(client))
- if(StrEqual("\"!cg\"", text) || StrEqual("!cg", text)){
- if(getTotalGuardsAlive() > getTotalSheriffs()){
- new Handle: showChangeSheriff = CreateMenu(changeSheriff);
- SetMenuTitle(showChangeSheriff, "[TJB] Trocar XERIFE com:");
- for(new l = 1; l <= MaxClients; l++)
- if(isGuardAlive(l) && !isSheriff(l)){
- new String:guardName[32], String:guardID[2];
- GetClientName(l, guardName, 32);
- Format(guardID, 2, "%.i", l);
- AddMenuItem(showChangeSheriff, guardID, guardName);
- }
- SetMenuExitButton(showChangeSheriff, true);
- DisplayMenu(showChangeSheriff, client, 10);
- }
- else CPrintToChat(client, "{lightred}[TJB] {default}Nao foi possivel exibir a listas de {lightblue}guardas{default}...");
- return Plugin_Handled;
- }
- }
- return Plugin_Continue;
- }
- public Action:f_showResultVotes(Handle:timer){
- t_showResultVotes = INVALID_HANDLE;
- if(getTotalGuardsAlive() > 0){
- new String: topName[20], String: segName[20];
- new topVote = 0, topID = 1;
- new segVote = 0, segID = 1;
- //Computador os votos
- for(new i = 1; i <= MaxClients; i++){
- if(guardVotes[i] > topVote){
- segVote = topVote;
- segID = topID;
- topVote = guardVotes[i];
- topID = i;
- }
- else if(guardVotes[i] > segVote){
- segVote = guardVotes[i];
- segID = i;
- }
- }
- Format(shAn, sizeof(shAn), "Xerife(s):");
- //Dar XERIFE para o mais votado
- if(topVote > 0){
- if(isGuardAlive(topID)){
- GetClientName(topID, topName, sizeof(topName));
- addSheriff(topID);
- Format(shAn, sizeof(shAn), "%s\n %s - %i voto(s)", shAn, topName, topVote);
- }
- else t_addRandSheriff = CreateTimer(2.0, f_addRandSheriff);
- }
- else t_addRandSheriff = CreateTimer(2.0, f_addRandSheriff);
- //Dar XERIFE para o segundo votado
- if(segVote > 0){
- if(isGuardAlive(segID)){
- GetClientName(segID, segName, sizeof(segName));
- Format(shAn, sizeof(shAn), "%s\n %s - %i voto(s)", shAn, segName, segVote);
- addSheriff(segID);
- }
- else t_addRandSheriff = CreateTimer(2.0, f_addRandSheriff);
- }
- else t_addRandSheriff = CreateTimer(2.0, f_addRandSheriff);
- //Aparecer a MSG se não for vazia
- if(!StrEqual(shAn, "Xerife(s):"))
- {
- MensagemZoeira = true;
- }
- else
- {
- MensagemZoeira = false;
- }
- }
- }
- public Action:f_addRandSheriff(Handle:timer)
- {
- t_addRandSheriff = INVALID_HANDLE;
- if(getTotalGuardsAlive() > getTotalSheriffs())
- while(true){
- new rg = GetRandomInt(1, MaxClients);
- if(isGuardAlive(rg) && !isSheriff(rg)){
- addSheriff(rg);
- break;
- }
- else if(getTotalGuardsAlive() == 0)
- break;
- }
- }
- public Action:playerDeath(Handle:event, const String:name[], bool:dontBroadcast){
- new client = GetClientOfUserId(GetEventInt(event, "userid"));
- if(isSheriff(client)){
- removeSheriff(client);
- t_addRandSheriff = CreateTimer(2.0, f_addRandSheriff);
- }
- }
- public OnClientDisconnect(client){
- if(isSheriff(client)){
- removeSheriff(client);
- t_addRandSheriff = CreateTimer(2.0, f_addRandSheriff);
- }
- }
- //Métodos FUNÇÕES
- public changeSheriff(Handle: menu, MenuAction: action, id, strOpt){
- if(action == MenuAction_Select){
- new String: guardID[2], String: option[2];
- GetMenuItem(menu, strOpt, option, 2);
- for(new i = 1; i <= MaxClients; i++){
- Format(guardID, 2, "%.i", i);
- if(StrEqual(option, guardID))
- if(isGuardAlive(i) && !isSheriff(i)){
- if(isMaster(id)){
- CPrintToChatAll("{lightred}[TJB]{default} O guarda {lightblue}%N{default} nao e mais o {lightblue}MESTRE{default}.", id);
- removeMaster();
- }
- SetEntityModel(id, "models/player/elis/po/police.mdl");
- removeSheriff(id);
- addSheriff(i);
- break;
- }
- }
- }
- }
- public Native_addSheriff(Handle:plugin, numParams){
- new client = GetNativeCell(1);
- if(!isSheriff(client))
- if(isGuardAlive(client)){
- sheriff[client] = true;
- SetEntityModel(client, "models/player/mapeadores/kaem/policeADM/policeadm.mdl");
- CPrintToChatAll("{lightred}[TJB]{default} O guarda {lightblue}%N{default} agora e um {orange}XERIFE{default}!!!", client);
- }
- }
- public startTimers(){
- t_showResultVotes = CreateTimer(10.0, f_showResultVotes);
- }
- public resetTimers(){
- clearTimer(t_showResultVotes);
- clearTimer(t_addRandSheriff);
- }
- public resetSheriffs(){
- for(new i = 1; i <= MaxClients; i++)
- removeSheriff(i);
- }
- public resetVotes(){
- for(new i = 1; i <= MaxClients; i++)
- guardVotes[i] = 0;
- }
- //Métodos GET
- public Native_isSheriff(Handle:plugin, numParams){
- new client = GetNativeCell(1);
- return sheriff[client];
- }
- public Native_removeSheriff(Handle:plugin, numParams){
- new client = GetNativeCell(1);
- sheriff[client] = false;
- }
- public Native_getTotalSheriffs(Handle:plugin, numParams){
- new total = 0;
- for(new i = 1; i <= MaxClients; i++)
- if(isSheriff(i))
- total++;
- return total;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement