Skocz do zawartości
SUPER TIMOR

[CS:GO] Taktyczna & techniczna przerwa

Rekomendowane odpowiedzi

Plugin powstał z myślą o rozgrywkach ligowych dla jednej z organizacji, z którymi współpracujemy.

Wprowadza on na serwer dwie komendy - !tac i !tech, której gracze mogą używać, aby wywołać przerwę taktyczną, bądź techniczną.

Czas przerwy technicznej - 5 minut.

Czas przerwy taktycznej - 30 sekund.

Wyświetlana jest również informacja na czacie kto wywołał przerwę, oraz ile czasu zostało.

Ilość przerw taktycznych na drużynę - 4. Techniczna jest jedna.

 

Kod:

Spoiler

#pragma semicolon 1
#include <sourcemod>
#include <sdktools>
#include <cstrike>

#define PLUGIN_VERSION "1.0"
#pragma newdecls required

int iTac_team1;
int iTac_team2;
int iPhase;
int iCountdown;

bool bTeamswitch;
bool bPaused;
bool bTech;
bool bTech_team1;
bool bTech_team2;

public Plugin myinfo =
{
	name = "tech&tac",
	author = "SUPER TIMOR",
	description = "",
	version = PLUGIN_VERSION,
	url = "https://cs-placzabaw.pl"
}

public void OnPluginStart()
{
	RegConsoleCmd("sm_tac", Command_TAC);
	RegConsoleCmd("sm_tech", Command_TECH);
	HookEvent("round_start", Event_RoundStart);
	HookEvent("announce_phase_end", Event_Phase);
}
public void OnMapStart()
{
	iPhase = 0;	
	bTeamswitch = false;
	bPaused = false;
	bTech = false;
}
public Action Event_Phase(Event event, const char[] name, bool dontBroadcast) 
{
 	iPhase++;
} 
public Action Event_RoundStart(Event event, const char[] name, bool dontBroadcast)
{
	if(!bTeamswitch)
	{
		if(iPhase == 2)
			bTeamswitch = true;
	}
	if(bPaused)
	{
		CreateTimer(30.0, Unpause);
		CreateTimer(15.0, AnnounceHalf);
	}
	if(bTech)
	{
		CreateTimer(300.0, Unpause);
		CreateTimer(15.0, AnnounceHalf);		
	}	
}
public Action Command_TAC(int client, int args)
{
	int iTeam = GetClientTeam(client);
	if(!bPaused && !bTech)
	{
		if(!bTeamswitch)
		{
			if(iTeam == CS_TEAM_CT)
			{
				if(iTac_team1 < 4)
				{
					
					iTac_team1 ++;			
					PrintToChatAll("%i/4 przerwa taktyczna, wywołana na życzenie %N", iTac_team1, client);
					bPaused = true;
					ServerCommand("mp_pause_match");				
					if(GameRules_GetProp("m_bFreezePeriod") == 1)
					{
						CreateTimer(30.0, Unpause);
						CreateTimer(15.0, AnnounceHalf);
					}	
				}
				else
				{
					PrintToChat(client, "Wykorzystano wszystkie dozwolone przerwy taktyczne.");
				}
			}
			else if(iTeam == CS_TEAM_T)
			{
				if(iTac_team2 < 4)
				{
					iTac_team2 ++;			
					PrintToChatAll("%i/4 przerwa taktyczna, wywołana na życzenie %N", iTac_team2, client);
					bPaused = true;
					ServerCommand("mp_pause_match");				
					if(GameRules_GetProp("m_bFreezePeriod") == 1)
					{
						CreateTimer(30.0, Unpause);
						CreateTimer(15.0, AnnounceHalf);
					}					
				}
				else
				{
					PrintToChat(client, "Wykorzystano wszystkie dozwolone przerwy taktyczne.");
				}				
			}
		}
		else
		{
			if(iTeam == CS_TEAM_T)
			{
				if(iTac_team1 < 4)
				{
					iTac_team1 ++;			
					PrintToChatAll("%i/4 przerwa taktyczna, wywołana na życzenie %N", iTac_team1, client);
					bPaused = true;
					ServerCommand("mp_pause_match");				
					if(GameRules_GetProp("m_bFreezePeriod") == 1)
					{
						CreateTimer(30.0, Unpause);
						CreateTimer(15.0, AnnounceHalf);
					}					
				}
				else
				{
					PrintToChat(client, "Wykorzystano wszystkie dozwolone przerwy taktyczne.");
				}
			}
			else if(iTeam == CS_TEAM_CT)
			{
				if(iTac_team2 < 4)
				{
					iTac_team2 ++;			
					PrintToChatAll("%i/4 przerwa taktyczna, wywołana na życzenie %N", iTac_team2, client);
					bPaused = true;
					ServerCommand("mp_pause_match");				
					if(GameRules_GetProp("m_bFreezePeriod") == 1)
					{
						CreateTimer(30.0, Unpause);
						CreateTimer(15.0, AnnounceHalf);
					}					
				}
				else
				{
					PrintToChat(client, "Wykorzystano wszystkie dozwolone przerwy taktyczne.");
				}				
			}
		}	
	}		
	else
		PrintToChat(client, "Przerwa została już wymuszona.");
}
public Action Command_TECH(int client, int args)
{
	int iTeam = GetClientTeam(client);
	if(!bTech && !bPaused)
	{
		if(!bTeamswitch)
		{
			if(iTeam == CS_TEAM_CT)
			{
				if(!bTech_team1)
				{
					PrintToChatAll("Przerwa techniczna, wywołana na życzenie %N", client);
					bTech = true;
					bTech_team1 = true;
					ServerCommand("mp_pause_match");					
					if(GameRules_GetProp("m_bFreezePeriod") == 1)
					{
						CreateTimer(300.0, Unpause);
						CreateTimer(15.0, AnnounceHalf);
					}	
				}
				else
				{
					PrintToChat(client, "Wykorzystano przerwę techniczną.");
				}
			}
			else if(iTeam == CS_TEAM_T)
			{
				if(!bTech_team2)
				{
					PrintToChatAll("Przerwa techniczna, wywołana na życzenie %N", client);
					bTech = true;
					bTech_team1 = true;	
					ServerCommand("mp_pause_match");					
					if(GameRules_GetProp("m_bFreezePeriod") == 1)
					{
						CreateTimer(300.0, Unpause);
						CreateTimer(15.0, AnnounceHalf);
					}						
				}
				else
				{
					PrintToChat(client, "Wykorzystano przerwę techniczną.");
				}				
			}
		}
		else
		{
			if(iTeam == CS_TEAM_T)
			{
				if(!bTech_team1)
				{
					PrintToChatAll("Przerwa techniczna, wywołana na życzenie %N", client);
					bTech = true;
					bTech_team1 = true;
					ServerCommand("mp_pause_match");					
					if(GameRules_GetProp("m_bFreezePeriod") == 1)
					{
						CreateTimer(300.0, Unpause);
						CreateTimer(15.0, AnnounceHalf);
					}						
				}
				else
				{
					PrintToChat(client, "Wykorzystano przerwę techniczną.");
				}
			}
			else if(iTeam == CS_TEAM_CT)
			{
				if(!bTech_team2)
				{
					PrintToChatAll("Przerwa techniczna, wywołana na życzenie %N", client);
					bTech = true;
					bTech_team1 = true;
					ServerCommand("mp_pause_match");					
					if(GameRules_GetProp("m_bFreezePeriod") == 1)
					{
						CreateTimer(300.0, Unpause);
						CreateTimer(15.0, AnnounceHalf);
					}						
				}
				else
				{
					PrintToChat(client, "Wykorzystano przerwę techniczną.");
				}				
			}
		}		
	}		
	else
		PrintToChat(client, "Przerwa została już wymuszona.");
}
public Action Unpause(Handle timer, any client)
{
	if(bPaused)
	{
		ServerCommand("mp_unpause_match");	
		PrintToChatAll("Koniec przerwy taktycznej.");
		bPaused = false;
	}
	else if(bTech)
	{
		ServerCommand("mp_unpause_match");	
		PrintToChatAll("Koniec przerwy technicznej.");
		bTech = false;
	}	
}
public Action AnnounceHalf(Handle timer, any client)
{
	if(bPaused)
	{
		CreateTimer(5.0, Countdown);
		PrintToChatAll("Zostało 15 sekund przerwy taktycznej!");
	}
	else if(bTech)
	{
		CreateTimer(140.0, Countdown);		
		PrintToChatAll("Zostało 150 sekund przerwy technicznej!");
	}
	iCountdown = 10;	
}
public Action Countdown(Handle timer, any client)
{
	if(bPaused)
	{
		if(iCountdown)
		{
			CreateTimer(1.0, Countdown);
			PrintToChatAll("Zostało %i sekund przerwy taktycznej!", iCountdown);
			iCountdown --;
		}
	}
	else if(bTech)
	{
		if(iCountdown)
		{		
			CreateTimer(1.0, Countdown);		
			PrintToChatAll("Zostało %i sekund przerwy technicznej!", iCountdown);
			iCountdown --;			
		}
	}
}

 

 

Download w załączniku.

 

W przypadku błędów, niedociągnięć, próśb o edycję - proszę pisać ?

 

 

tactech.sp
Hej! Skorzystałeś z linku lub pobrałeś załącznik? Uhonoruj naszą pracę poprzez rejestrację na forum i rośnij razem z nami!

Przez MAGNET,

aktualizacja kodu

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Heh, Wy tu plusujecie a plugin zbugowany ?

 

Poprawiony kod, testowany podczas ligii - wszystko śmiga. Dzięki @Brum Brum (nie mogę Cię oznaczyć, ładuje sto lat) za test 15 minut przed ligą, jesteś wielki ?

 

nie mogę wstawić również kodu, coś się buguje na forumku - daję w spoiler

?

Spoiler

#pragma semicolon 1
#include <sourcemod>
#include <sdktools>
#include <cstrike>

#define PLUGIN_VERSION "1.0"
#pragma newdecls required

int iTac_team1;
int iTac_team2;
int iPhase;
int iCountdown;

bool bTeamswitch;
bool bPaused;
bool bTech;
bool bTech_team1;
bool bTech_team2;

public Plugin myinfo =
{
    name = "tech&tac",
    author = "SUPER TIMOR",
    description = "",
    version = PLUGIN_VERSION,
    url = "https://cs-placzabaw.pl"
}

public void OnPluginStart()
{
    RegConsoleCmd("sm_tac", Command_TAC);
    RegConsoleCmd("sm_tech", Command_TECH);
    HookEvent("round_start", Event_RoundStart);
    HookEvent("announce_phase_end", Event_Phase);
}
public void OnMapStart()
{
    iPhase = 0;    
    bTeamswitch = false;
    bPaused = false;
    bTech = false;
    iTac_team1 = 0;
    iTac_team2 = 0;
}
public Action Event_Phase(Event event, const char[] name, bool dontBroadcast) 
{
     iPhase++;

public Action Event_RoundStart(Event event, const char[] name, bool dontBroadcast)
{
    if(!bTeamswitch)
    {
        if(iPhase == 1)
            bTeamswitch = true;
    }
    if(bPaused)
    {
        CreateTimer(30.0, Unpause);
        CreateTimer(15.0, AnnounceHalf);
    }
    if(bTech)
    {
        CreateTimer(300.0, Unpause);
        CreateTimer(15.0, AnnounceHalf);        
    }    
}
public Action Command_TAC(int client, int args)
{
    int iTeam = GetClientTeam(client);
    if(!bPaused && !bTech)
    {
        if(!bTeamswitch)
        {
            if(iTeam == CS_TEAM_CT)
            {
                if(iTac_team1 < 4)
                {
                    iTac_team1 ++;            
                    PrintToChatAll("%i/4 przerwa taktyczna, wywołana na życzenie %N", iTac_team1, client);
                }
                else
                    PrintToChat(client, "Wykorzystano wszystkie dozwolone przerwy taktyczne.");
            }
            else if(iTeam == CS_TEAM_T)
            {
                if(iTac_team2 < 4)
                {
                    iTac_team2 ++;            
                    PrintToChatAll("%i/4 przerwa taktyczna, wywołana na życzenie %N", iTac_team2, client);
                }
                else
                    PrintToChat(client, "Wykorzystano wszystkie dozwolone przerwy taktyczne.");
            }
        }
        else
        {
            if(iTeam == CS_TEAM_T)
            {
                if(iTac_team1 < 4)
                {
                    iTac_team1 ++;            
                    PrintToChatAll("%i/4 przerwa taktyczna, wywołana na życzenie %N", iTac_team1, client);
                }
                else
                    PrintToChat(client, "Wykorzystano wszystkie dozwolone przerwy taktyczne.");
            }
            else if(iTeam == CS_TEAM_CT)
            {
                if(iTac_team2 < 4)
                {
                    iTac_team2 ++;            
                    PrintToChatAll("%i/4 przerwa taktyczna, wywołana na życzenie %N", iTac_team2, client);
                }
                else
                    PrintToChat(client, "Wykorzystano wszystkie dozwolone przerwy taktyczne.");
            }
        }    
    }        
    else
        PrintToChat(client, "Przerwa została już wymuszona.");
}
public Action Command_TECH(int client, int args)
{
    int iTeam = GetClientTeam(client);
    if(!bTech && !bPaused)
    {
        if(!bTeamswitch)
        {
            if(iTeam == CS_TEAM_CT)
            {
                if(!bTech_team1)
                {
                    bTech_team1 = true;
                    Tech_Pause(client);                      
                }
                else
                    PrintToChat(client, "Wykorzystano przerwę techniczną.");
            }
            else if(iTeam == CS_TEAM_T)
            {
                if(!bTech_team2)
                {
                    bTech_team2 = true;   
                    Tech_Pause(client);                     
                }
                else
                    PrintToChat(client, "Wykorzystano przerwę techniczną.");
            }
        }
        else
        {
            if(iTeam == CS_TEAM_T)
            {
                if(!bTech_team1)
                {
                    bTech_team1 = true;
                    Tech_Pause(client);                        
                }
                else
                    PrintToChat(client, "Wykorzystano przerwę techniczną.");
            }
            else if(iTeam == CS_TEAM_CT)
            {
                if(!bTech_team2)
                {
                    bTech_team2 = true;
                    Tech_Pause(client); 
                }
                else
                    PrintToChat(client, "Wykorzystano przerwę techniczną.");
            }
        }        
    }        
    else
        PrintToChat(client, "Przerwa została już wymuszona.");
}
public int Tac_Pause(int client)
{
    bPaused = true;
    ServerCommand("mp_pause_match");                
    if(GameRules_GetProp("m_bFreezePeriod") == 1)
    {
        CreateTimer(30.0, Unpause);
        CreateTimer(15.0, AnnounceHalf);
    } 
}
public int Tech_Pause(int client)
{
    PrintToChatAll("Przerwa techniczna, wywołana na życzenie %N", client);    
    ServerCommand("mp_pause_match");     
    bTech = true;    
    if(GameRules_GetProp("m_bFreezePeriod") == 1)
    {
        CreateTimer(300.0, Unpause);
        CreateTimer(15.0, AnnounceHalf);
    }      
}
public Action Unpause(Handle timer, any client)
{
    if(bPaused)
    {
        ServerCommand("mp_unpause_match");    
        PrintToChatAll("Koniec przerwy taktycznej.");
        bPaused = false;
    }
    else if(bTech)
    {
        ServerCommand("mp_unpause_match");    
        PrintToChatAll("Koniec przerwy technicznej.");
        bTech = false;
    }    
}
public Action AnnounceHalf(Handle timer, any client)
{
    if(bPaused)
    {
        CreateTimer(5.0, Countdown);
        PrintToChatAll("Zostało 15 sekund przerwy taktycznej!");
    }
    else if(bTech)
    {
        CreateTimer(140.0, Countdown);        
        PrintToChatAll("Zostało 150 sekund przerwy technicznej!");
    }
    iCountdown = 10;    
}
public Action Countdown(Handle timer, any client)
{
    if(bPaused)
    {
        if(iCountdown)
        {
            CreateTimer(1.0, Countdown);
            PrintToChatAll("Zostało %i sekund przerwy taktycznej!", iCountdown);
            iCountdown --;
        }
    }
    else if(bTech)
    {
        if(iCountdown)
        {        
            CreateTimer(1.0, Countdown);        
            PrintToChatAll("Zostało %i sekund przerwy technicznej!", iCountdown);
            iCountdown --;            
        }
    }
}

 

https://pastebin.com/sGqZhT3A
Hej! Skorzystałeś z linku lub pobrałeś załącznik? Uhonoruj naszą pracę poprzez rejestrację na forum i rośnij razem z nami!

 

Edytowane przez supertimor

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Dołącz do dyskusji

Możesz dodać zawartość już teraz a zarejestrować się później. Jeśli posiadasz już konto, zaloguj się aby dodać zawartość za jego pomocą.

Gość
Dodaj odpowiedź do tematu...

×   Wklejono zawartość z formatowaniem.   Usuń formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Odnośnik został automatycznie osadzony.   Przywróć wyświetlanie jako odnośnik

×   Przywrócono poprzednią zawartość.   Wyczyść edytor

×   Nie możesz bezpośrednio wkleić obrazków. Dodaj lub załącz obrazki z adresu URL.


×
×
  • Dodaj nową pozycję...