Skocz do zawartości

Nowy szablon forum

mygo.pl

Stworzyliśmy dla Was nowy wygląd forum. Z pewnością znajdziesz rzeczy, które wg Ciebie mogą zostać zmienione - wspomnij o tym w specjalnym wątku.

Czytaj więcej

Jak założyć własną sieć

serwerów CS

Zastanawiasz się nad prowadzeniem własnej sieci serwerów? Przeczytaj podstawowe informacje, na które należy zwrócić uwagę, przy takim projekcie.

Czytaj więcej

Tworzymy spis sieci

dodaj swoją

Dodaj sieć do której należysz, pozwoli to na promocję i budowę ogólnopolskiej bazy sieci CS.

Czytaj więcej

Sqower

Użytkownik
  • Postów

    245
  • Dołączył

  • Ostatnia wizyta

  • Wygrane w rankingu

    5

Odpowiedzi opublikowane przez Sqower

  1. Łap

    sm_skill.smx

     

    #define IsValidAlive(%1) ( 1 <= %1 <= MaxClients && IsClientInGame(%1) && IsPlayerAlive(%1) )
    
    public OnPluginStart()	
    {
    	RegConsoleCmd("sm_skill", CMD_SKILL, "Skill");
    }
    
    public Action CMD_SKILL(int client, int args)
    {
    	if(IsValidAlive(client))
    	{
    		SetEntPropFloat(client, Prop_Send, "m_flLaggedMovementValue", 1.4);
    		CreateTimer(7.0, TIMER_SKILL, GetClientUserId(client));
    	}
    }
    
    public Action TIMER_SKILL(Handle hTimer, int userid)
    {
    	int client = GetClientOfUserId(userid);
    	
    	if(IsValidAlive(client))
    	{
    		SetEntPropFloat(client, Prop_Send, "m_flLaggedMovementValue", 1.0);
    	}
    }

     

    • Super! 2
  2. 40 minut temu, BuBeK | HellZone.pl napisał:

     

     

    
    sm version
    SourceMod Version Information:
    SourceMod Version: 1.11.0.6524
    SourcePawn Engine: 1.11.0.6524, jit-x86 (build 1.11.0.6524)
    SourcePawn API: v1 = 5, v2 = 12
    Compiled on: Apr 14 2020 09:52:33
    Built from: https://github.com/alliedmodders/sourcemod/commit/2546207
    Build ID: 6524:2546207
    http://www.sourcemod.net/

     

    Nie sm version tylko samo version 

  3. 18 godzin temu, KrecikWSourceModzie napisał:

    Witam jestem aktualnie w pisaniu plg na wojny gangów (jeżeli ktoś nie wie na czym to polega to że tt jest przydzielane losowo do drużyn a dokładniej 4 [oznaczeni są kolorami]) i brakuje mi części kodu która odpowiadałaby za to że np zielony nie może bić zielonego . byłbym wdzięczny jakby ktoś chciał pomóc ? 

    Spoiler
    
    #include <sourcemod>
    #include <sdkhooks>
    #include <sdktools>
    #include <cstrike>
    #include <csgocolors>
    
    #define MENU_TIME_LENGTH 15
    
    #pragma newdecls required
    
    public Plugin myinfo = 
    {
    	name = "Wojny Gangów", 
    	author = "CamerDisco", 
    	description = "Wojny Gangów", 
    	version = "1.1", 
    	url = "https://max-play.pl"
    };
    
    char Entities[][] = {"func_door", "func_door_rotating"};
    
    bool Open = false;
    bool wiad = true;
    bool zabawaon = false;
    bool wystartowalo = false;
    bool jestok = false;
    bool wgangu1[MAXPLAYERS +1];
    bool wgangu2[MAXPLAYERS +1];
    
    
    float g_fDistance;
    
    Handle sprawdzajj = INVALID_HANDLE;
    Handle round_timer = INVALID_HANDLE;
    Handle wiadomoscc = INVALID_HANDLE;
    Handle pokazz = INVALID_HANDLE;
    
    int gI_Time;
    int g_iFilteredEntity = -1;
    int g_WeaponParent;
    
    ConVar g_Cvar_Distance;
    
    public void OnPluginStart()
    {
    	RegConsoleCmd("sm_gangi", gangi);
    	//RegConsoleCmd("sm_team1", tm1);
    	//RegConsoleCmd("sm_team2", tm2);
    	
    	g_WeaponParent = FindSendPropOffs("CBaseCombatWeapon", "m_hOwnerEntity");
    	
    	HookEvent("round_start", Event_RoundStart);
    	HookEvent("round_end", Event_RoundEnd);
    	HookEvent("player_death", Event_PlayerDeath);
    	
    	g_Cvar_Distance = CreateConVar("sm_aimnames_distance", "100.0", "(Default: 100) Distance in meters for showing aim names.");
    	g_fDistance = g_Cvar_Distance.FloatValue;
    }
    
    public Action Event_PlayerDeath(Event event, const char[] name, bool dontBroadcast)
    {
    	int victim = GetClientOfUserId(GetEventInt(event, "userid"));
    	
    	if(wgangu1[victim])
    		wgangu1[victim] = false;
    	
    	if(wgangu2[victim])
    		wgangu2[victim] = false;
    }
    
    
    public Action gangi(int client, int args)
    {
    	if(GetClientTeam(client) == CS_TEAM_CT || GetUserFlagBits(client) & ADMFLAG_ROOT || GetUserFlagBits(client) & ADMFLAG_GENERIC)
    	{
    		glowne(client);
    	}
    	else
    	{
    		CPrintToChat(client, "{GREEN}[Wojny Gangów]{NORMAL} Tylko {BLUE}CT{NORMAL} może włączać tą zabawę!");
    	}
    }
    
    public void OnClientPutInServer(int client)
    {
    	SDKHook(client, SDKHook_OnTakeDamage, OnTakeDamage);
    }
    
    public void OnClientDisconnect(int client)
    {
    	SDKUnhook(client, SDKHook_OnTakeDamage, OnTakeDamage);
    }
    
    
    public void glowne(int client)
    {
    	Handle menu = CreateMenu(MenuHandler_WYB);
    	SetMenuTitle(menu, "Zabawa Wojny Gangów:");
    	if(!zabawaon)
    	{
    		AddMenuItem(menu, "on", "Włącz zabawę");
    	}
    	AddMenuItem(menu, "off", "Wyłącz zabawę"); 
    	if(!wystartowalo && zabawaon)
    	{
    		AddMenuItem(menu, "team1", "Wybierz osobę do gangu czerw."); 
    		AddMenuItem(menu, "team2", "Wybierz osobę do gangu ziel."); 
    		AddMenuItem(menu, "team3", "Usuń osobę z gangu czerw."); 
    		AddMenuItem(menu, "team4", "Usuń osobę z gangu ziel."); 
    		AddMenuItem(menu, "ust", "Ustawiłem"); 
    	}
    	DisplayMenu(menu, client, MENU_TIME_LENGTH);
    }
    
    public bool IsValidClient(int client)
    {
    	if(client >= 1 && client <= MaxClients && IsClientInGame(client) && IsClientConnected(client) && IsPlayerAlive(client))
    		return true;
    
    	return false;
    }
    
    public int MenuHandler_WYB(Handle menu, MenuAction action, int param1, int param2) {
    	if (action == MenuAction_Select) {
    		int client = param1;
    		char info[32];
    		GetMenuItem(menu, param2, info, sizeof(info));
    		if (StrEqual(info, "on"))
    		{
    			for (int client2 = 1; client2<= MaxClients; client2++)
    			{
    				if(IsValidClient(client2))
    				{
    					pokazz = CreateTimer(0.1, pokaz, client2, TIMER_REPEAT);
    				}
    			}
    			zabawaon = true;
    			CPrintToChatAll("{GREEN}[Wojny Gangów]{NORMAL} Wojna gangów została włączona przez {RED}%N", client);
    			CPrintToChatAll("{GREEN}[Wojny Gangów]{NORMAL} Otwieram cele...");
    			opencells();
    			CPrintToChatAll("{GREEN}[Wojny Gangów]{NORMAL} Czekamy na wybranie drużyn przez {RED}prowadzącego.");
    			wiadomoscc = CreateTimer(1.0, wiadomosc, _, TIMER_REPEAT);
    			OpenTeam1Menu(client);
    		}
    		if (StrEqual(info, "off"))
    		{
    			CPrintToChatAll("{GREEN}[Wojny Gangów]{NORMAL} Wojna gangów została wyłączona przez {RED}%N", client);
    			zabawaon = false;
    			for (int i = 1; i <= MaxClients; i++)
    			{
    				if(IsValidClient(i))
    				{
    					SetEntityRenderColor(i, 255, 255, 255, 255);
    				}
    			}
    			zabawaon = false;
    			Zabij(wiadomoscc);
    			Zabij(pokazz);
    		}
    		if (StrEqual(info, "team1"))
    		{
    			if(!wystartowalo)
    			{
    				OpenTeam1Menu(client);
    			}
    			else
    			{
    				CPrintToChat(client, "{GREEN}[Wojna Gangów]{NORMAL} Za późno, drużyny zostały już wybrane i czekamy na rozpoczęcie zabawy!");
    			}
    		}
    		if (StrEqual(info, "team2"))
    		{
    			if(!wystartowalo)
    			{
    				OpenTeam2Menu(client);
    			}
    			else
    			{
    				CPrintToChat(client, "{GREEN}[Wojna Gangów]{NORMAL} Za późno, drużyny zostały już wybrane i czekamy na rozpoczęcie zabawy!")
    			}
    		}
    		if (StrEqual(info, "team3"))
    		{
    			if(!wystartowalo)
    			{
    					OpenDelMenu(client);
    			}
    			else
    			{
    				CPrintToChat(client, "{GREEN}[Wojna Gangów]{NORMAL} Za późno, drużyny zostały już wybrane i czekamy na rozpoczęcie zabawy!")
    			}
    		}
    		if (StrEqual(info, "team4"))
    		{
    			if(!wystartowalo)
    			{
    				OpenDel2Menu(client);
    			}
    			else
    			{
    				CPrintToChat(client, "{GREEN}[Wojna Gangów]{NORMAL} Za późno, drużyny zostały już wybrane i czekamy na rozpoczęcie zabawy!")
    			}
    		}
    		if (StrEqual(info, "ust"))
    		{
    			if(!wystartowalo)
    			{
    				int count = 0;
    				for(int i = 1; i <= MaxClients; i++)
    				{
    					if(IsValidClient(i) && wgangu1[i] == true || wgangu2[i] == true)
    					{
    						count++;
    					}
    				}
    				if(count == 0)
    				{
    					jestok = false;
    				}
    				else
    				{
    					jestok = true;
    				}
    				if(jestok)
    				{
    					Zabij(wiadomoscc);
    					wiad = true;
    					round_timer = CreateTimer(1.0, counting, _, TIMER_REPEAT);
    					wystartowalo = true;
    					CreateTimer(31.0, zrup);
    					CreateTimer(30.0, wlaczff);
    					CPrintToChatAll("{GREEN}[Wojny Gangów]{NORMAL} Jesteście już podzieleni, rozdzielcie się i ustalcie swoją kryjówkę!");
    					for(int i = 1; i<=MaxClients; i++)
    					{
    						if(IsValidClient(client))
    						{
    							DajBronie(i);
    						}
    					}
    				}
    				else
    				{
    					CPrintToChat(client, "{GREEN}[Wojny Gangów]{NORMAL} Potrzeba conajmniej {RED}1 gracza{NORMAL} w którymś z gangów!");
    				}
    			}
    			else
    			{
    				CPrintToChat(client, "{GREEN}[Wojna Gangów]{NORMAL} Wojna już została ustawiona wcześniej!");
    			}
    		}
        }
    	else if (action == MenuAction_End) {
            CloseHandle(menu);
        }
    }
    
    public Action zrup(Handle timer)
    {	
    	sprawdzajj = CreateTimer(2.0, sprawdzaj, _, TIMER_REPEAT);
    }
    
    public Action sprawdzaj(Handle hTimer)
    {
    	int count_tt_alive_client;
    	int iTTClient = 1;
    	while (iTTClient <= MaxClients)
    	{
    		if (IsClientInGame(iTTClient) && IsPlayerAlive(iTTClient) && IsValidClient(iTTClient) && GetClientTeam(iTTClient) == 2 && wgangu2[iTTClient]==true)
    		{
    			count_tt_alive_client += 1;
    		}
    		iTTClient++;
    	}
    		
    	int count_tt2_alive_client;
    	int iTTClient2 = 1;
    	while (iTTClient2 <= MaxClients)
    	{
    		if (IsClientInGame(iTTClient2) && IsPlayerAlive(iTTClient2) && IsValidClient(iTTClient2) && GetClientTeam(iTTClient2) == 2 && wgangu1[iTTClient2]==true)
    		{
    			count_tt2_alive_client += 1;
    		}
    		iTTClient2++;
    	}
    		
    	if (count_tt_alive_client < 1)
    	{
    		Zabij(sprawdzajj);
    		Zabij(pokazz);
    		CPrintToChatAll("{GREEN}[Wojna Gangów]{NORMAL} Gang {LIGHTGREEN}zielonych{NORMAL} został rozbity! Kończymy {BLUE}zabawę!");
    		zabawaon = false;
    		wystartowalo = false;
    		ServerCommand("mp_teammates_are_enemies 0");
    		
    		for(int i = 1;i<=MaxClients;i++)
    		{
    			if(IsValidClient(i) && GetClientTeam(i) == CS_TEAM_T)
    			{
    				SetEntityRenderMode(i, RENDER_TRANSCOLOR);
    				SetEntityRenderColor(i, 255, 255, 255, 255);
    				disarm(i);
    				wgangu1[i] = false;
    				wgangu2[i] = false;
    			}
    		}
    		
    		int maxent = GetMaxEntities();
    		char weapon[64];
    		
    		for (int i=GetMaxClients(); i<maxent; i++)
    		{
    			if ( IsValidEdict(i) && IsValidEntity(i) )
    			{
    				GetEdictClassname(i, weapon, sizeof(weapon));
    				if ( ( StrContains(weapon, "weapon_") != -1 || StrContains(weapon, "item_") != -1 ) && GetEntDataEnt2(i, g_WeaponParent) == -1 )
    					RemoveEdict(i);
    			}
    		}	
    		
    		if (pokazz != INVALID_HANDLE)
    		{
    			CloseHandle(pokazz);
    			pokazz = INVALID_HANDLE;
    		}
    		
    		Zabij(round_timer);
    	}
    		
    	else if (count_tt2_alive_client < 1)
    	{
    		Zabij(sprawdzajj);
    		Zabij(pokazz);
    		CPrintToChatAll("{GREEN}[Wojna Gangów]{NORMAL} Gang {RED}czerwonych{NORMAL} został rozbity! Kończymy {BLUE}zabawę!");
    		zabawaon = false;
    		wystartowalo = false;
    		ServerCommand("mp_teammates_are_enemies 0");
    		
    		for(int i = 1;i<=MaxClients;i++)
    		{
    			if(IsValidClient(i) && GetClientTeam(i) == CS_TEAM_T)
    			{
    				SetEntityRenderMode(i, RENDER_TRANSCOLOR);
    				SetEntityRenderColor(i, 255, 255, 255, 255);
    				disarm(i);
    				wgangu1[i] = false;
    				wgangu2[i] = false;
    			}
    		}
    		int maxent = GetMaxEntities();
    		char weapon[64];
    		
    		for (int i=GetMaxClients(); i<maxent; i++)
    		{
    			if ( IsValidEdict(i) && IsValidEntity(i) )
    			{
    				GetEdictClassname(i, weapon, sizeof(weapon));
    				if ( ( StrContains(weapon, "weapon_") != -1 || StrContains(weapon, "item_") != -1 ) && GetEntDataEnt2(i, g_WeaponParent) == -1 )
    					RemoveEdict(i);
    			}
    		}	
    		if (pokazz != INVALID_HANDLE)
    		{
    			CloseHandle(pokazz);
    			pokazz = INVALID_HANDLE;
    		}
    		Zabij(round_timer);
    	}
    		
    }
    
    
    public void disarm(int id)
    {
    	int disarme;
    	for (int i = 0; i < 6; i++)
    	{
    		if (i < 6 && (disarme = GetPlayerWeaponSlot(id, i)) != -1) 
    		{
    			RemovePlayerItem(id, disarme);
    			GivePlayerItem(id, "weapon_knife");
    		}
    	}
    }
    
    
    public Action counting(Handle Timer, any data)
    {
    	gI_Time++;
    	if (gI_Time < 31) {
    		PrintHintTextToAll("<font color= '#ff4d4d'>[Wojny Gangów]</font> Do rozpoczęcia wojny pozostało:<font color='#00ff00'> %i sek.</font>", 30 - gI_Time);
    	}
    }
    
    public Action wiadomosc(Handle timer, any client)
    {
    	for (int i=1;i<=MaxClients;i++)
    	{
    		if(IsValidClient(i))
    		{
    			if(!wiad && zabawaon && wgangu1[i])
    			{
    				PrintHintText(i, "<font color='#ff6666'>[Wojny Gangów]</font> Jesteś w <font color='#ff5050'>gangu czerwonych</font>!");
    			}
    			else if(!wiad && !zabawaon && wgangu2[i])
    			{
    				PrintHintText(i, "<font color='#ff6666'>[Wojny Gangów]</font> Jesteś w <font color='#00cc00'>gangu zielonych</font>!");
    			}
    			else
    			{
    				PrintHintText(i, "<font color='#ff6666'>[Wojny Gangów]</font> Czekamy na wybranie drużyn przez prowadzącego!");
    			}
    		}
    	}
    }
    
    public void DajBronie(int client)
    {
    	Handle menu = CreateMenu(MenuHandler_M42);
    	SetMenuTitle(menu, "Wybierz broń:");
    	AddMenuItem(menu, "m4", "M4A4");
    	AddMenuItem(menu, "m4s", "M4A1-S"); 
    	AddMenuItem(menu, "ak47", "AK-47"); 
    	AddMenuItem(menu, "awp", "AWP"); 
    	DisplayMenu(menu, client, MENU_TIME_LENGTH);
    }
    
    public int MenuHandler_M42(Handle menu, MenuAction action, int param1, int param2)
    {
    	if (action == MenuAction_Select) {
    		int client = param1;
    		char info[32];
    		GetMenuItem(menu, param2, info, sizeof(info));
    		if (StrEqual(info, "m4"))
    		{
    			GivePlayerItem(client, "weapon_m4a1");
    			DajPistolet(client);
    		}
    		if (StrEqual(info, "m4s"))
    		{
    			GivePlayerItem(client, "weapon_m4a1_silencer");
    			DajPistolet(client);
    		}
    		if (StrEqual(info, "ak47"))
    		{
    			GivePlayerItem(client, "weapon_ak47");
    			DajPistolet(client);
    		}
    		if (StrEqual(info, "awp"))
    		{
    			GivePlayerItem(client, "weapon_awp");
    			DajPistolet(client);
    		}
        }
    	else if (action == MenuAction_End) {
            CloseHandle(menu);
        }
    
    }
    
    public void DajPistolet(int client) 
    {
    	Handle menu = CreateMenu(MenuHandler_M43);
    	SetMenuTitle(menu, "Wybierz pistolet:");
    	AddMenuItem(menu, "usp", "USP-S");
    	AddMenuItem(menu, "p2", "P2000"); 
    	AddMenuItem(menu, "glock", "Glock-18"); 
    	AddMenuItem(menu, "deagle", "Deagle"); 
    	AddMenuItem(menu, "p250", "P250"); 
    	AddMenuItem(menu, "tec9", "Tec-9"); 
    	AddMenuItem(menu, "five", "Five-Seven"); 
    	DisplayMenu(menu, client, MENU_TIME_LENGTH);
    }
    
    public int MenuHandler_M43(Handle menu, MenuAction action, int param1, int param2) {
    	if (action == MenuAction_Select) 
    	{
    		int client = param1;
    		char info[32];
    		GetMenuItem(menu, param2, info, sizeof(info));
    		if (StrEqual(info, "usp"))
    		{
    			GivePlayerItem(client, "weapon_usp_silencer");
    		}
    		if (StrEqual(info, "p2"))
    		{
    			GivePlayerItem(client, "weapon_hkp2000");
    		}
    		if (StrEqual(info, "glock"))
    		{
    			GivePlayerItem(client, "weapon_glock");
    		}
    		if (StrEqual(info, "deagle"))
    		{
    			GivePlayerItem(client, "weapon_deagle");
    		}
    		if (StrEqual(info, "p250"))
    		{
    			GivePlayerItem(client, "weapon_p250");
    		}
    		if (StrEqual(info, "tec9"))
    		{
    			GivePlayerItem(client, "weapon_tec9");
    		}
    		if (StrEqual(info, "five"))
    		{
    			GivePlayerItem(client, "weapon_fiveseven");
    		}
        }
    	else if (action == MenuAction_End) {
            CloseHandle(menu);
        }
    
    }
    
    
    public Action Event_RoundEnd(Handle hEvent, const char[] sName, bool bDontBroadcast)
    {
    	for(int i = 1; i<=MaxClients; i++)
    	{
    		wgangu1[i] = false;
    		wgangu2[i] = false;
    	}
    	
    	ServerCommand("mp_teammates_are_enemies 0");
    	
    	Zabij(pokazz);
    	Zabij(sprawdzajj);
    	Zabij(wiadomoscc);
    }
    
    public void Zabij(Handle hName)
    {
    	if (hName != INVALID_HANDLE)
    	{
    		KillTimer(hName);
    		hName = INVALID_HANDLE;
    		CloseHandle(hName);
    	}
    }
    
    public Action Event_RoundStart(Handle hEvent, const char[] sName, bool bDontBroadcast)
    {
    	TryClearData();
    	Open = false;
    	zabawaon = false;
    	wystartowalo = false;
    	wiad = false;
    }
    
    public void TryClearData() 
    {
        if (round_timer != INVALID_HANDLE) 
    	{
            CloseHandle(round_timer);
            round_timer = INVALID_HANDLE;
        }
    
        gI_Time = 0;
    }  
    
    public Action opencells()
    {
    	int iEnt = -1;
        
    	for(int i; i < sizeof(Entities); i++)
    	{
    		while((iEnt = FindEntityByClassname(iEnt, Entities[i])) != -1)
    		{
    			AcceptEntityInput(iEnt, Open? "Close":"Open");
    		}
    	}
    }
    
    
    public void OpenTeam1Menu(int client) 
    { 
    	char sDisplayBuffer[128], sInfoBuffer[16], sTitle[64];
    	Format(sTitle, sizeof(sTitle), "Wybierz graczy do teamu1 :");
    	Menu MainMenu = new Menu(MainMenu_CallBack, MenuAction_Select | MenuAction_End); 
    	MainMenu.SetTitle(sTitle); 
    	for (int i = 1; i <= MaxClients; i++)
    	{
    		if (IsValidClient(i) && wgangu2[i] == false && wgangu1[i] == false && GetClientTeam(i) == CS_TEAM_T)
    		{
    			Format(sDisplayBuffer, sizeof(sDisplayBuffer), "%N", i);
    			Format(sInfoBuffer, sizeof(sInfoBuffer), "%i", GetClientUserId(i));
    			MainMenu.AddItem(sInfoBuffer, sDisplayBuffer);
    		}
    	}
    	DisplayMenu(MainMenu, client, MENU_TIME_FOREVER); 
    }
    
    public int MainMenu_CallBack(Menu MainMenu, MenuAction action, int param1, int param2) 
    {
    	switch (action)
    	{
    		case MenuAction_Select:
    		{
    			char sInfo[128];
    			GetMenuItem(MainMenu, param2, sInfo, sizeof(sInfo));
    			int iTarget = GetClientOfUserId(StringToInt(sInfo));
    			SetEntityRenderMode(iTarget, RENDER_TRANSCOLOR);
    			SetEntityRenderColor(iTarget, 113, 46, 44, 255);
    			wgangu1[iTarget] = true;
    			glowne(param1);
    			CPrintToChat(iTarget, "{GREEN}[Wojny Gangów]{NORMAL} Zostałeś dodany do teamu {DARKRED}czerwonych.")
    			CPrintToChat(param1, "Dodałeś gracza {GREEN}%N{NORMAL} do {RED}gangu czerwonych", iTarget);
    		}
    		case MenuAction_End:
    		{
    			CloseHandle(MainMenu);
    		}
    	}
    }
    
    public void OpenTeam2Menu(int client) 
    { 
    	char sDisplayBuffer[128], sInfoBuffer[16], sTitle[64];
    	Format(sTitle, sizeof(sTitle), "Wybierz graczy do teamu2 :");
    	Menu MainMenu = new Menu(MainMenu_CallBack2, MenuAction_Select | MenuAction_End); 
    	MainMenu.SetTitle(sTitle); 
    	for (int i = 1; i <= MaxClients; i++)
    	{
    		if (IsValidClient(i) && wgangu2[i] == false && wgangu1[i] == false && GetClientTeam(i) == CS_TEAM_T)
    		{
    			Format(sDisplayBuffer, sizeof(sDisplayBuffer), "%N", i);
    			Format(sInfoBuffer, sizeof(sInfoBuffer), "%i", GetClientUserId(i));
    			MainMenu.AddItem(sInfoBuffer, sDisplayBuffer);
    		}
    	}
    	DisplayMenu(MainMenu, client, MENU_TIME_FOREVER); 
    }
    
    public int MainMenu_CallBack2(Menu MainMenu, MenuAction action, int param1, int param2) 
    {
    	switch (action)
    	{
    		case MenuAction_Select:
    		{
    			char sInfo[128];
    			GetMenuItem(MainMenu, param2, sInfo, sizeof(sInfo));
    			int iTarget = GetClientOfUserId(StringToInt(sInfo));
    			SetEntityRenderMode(iTarget, RENDER_TRANSCOLOR);
    			SetEntityRenderColor(iTarget, 0, 146, 0, 255);
    			wgangu2[iTarget] = true;
    			CPrintToChat(iTarget, "{GREEN}[Wojny Gangów]{NORMAL} Zostałeś dodany do teamu {LIGHTGREEN}zielonych.")
    			glowne(param1);
    			CPrintToChat(param1, "Dodałeś gracza {GREEN}%N{NORMAL} do {GREEN}gangu zielonych.", iTarget);
    		}
    		case MenuAction_End:
    		{
    			CloseHandle(MainMenu);
    		}
    	}
    }
    
    public void OpenDelMenu(int client) 
    { 
    	char sDisplayBuffer[128], sInfoBuffer[16], sTitle[64];
    	Format(sTitle, sizeof(sTitle), "Usuń gracza z gangu czerw. :");
    	Menu MainMenu = new Menu(MainMenu_CallBack28, MenuAction_Select | MenuAction_End); 
    	MainMenu.SetTitle(sTitle); 
    	for (int i = 1; i <= MaxClients; i++)
    	{
    		if (IsValidClient(i) && wgangu1[i] == true)
    		{
    			Format(sDisplayBuffer, sizeof(sDisplayBuffer), "%N", i);
    			Format(sInfoBuffer, sizeof(sInfoBuffer), "%i", GetClientUserId(i));
    			MainMenu.AddItem(sInfoBuffer, sDisplayBuffer);
    		}
    	}
    	DisplayMenu(MainMenu, client, MENU_TIME_FOREVER); 
    }
    
    public int MainMenu_CallBack28(Menu MainMenu, MenuAction action, int param1, int param2) 
    {
    	switch (action)
    	{
    		case MenuAction_Select:
    		{
    			char sInfo[128];
    			GetMenuItem(MainMenu, param2, sInfo, sizeof(sInfo));
    			int iTarget = GetClientOfUserId(StringToInt(sInfo));
    			SetEntityRenderMode(iTarget, RENDER_TRANSCOLOR);
    			SetEntityRenderColor(iTarget, 255, 255, 255, 255);
    			wgangu1[iTarget] = false;
    			CPrintToChat(iTarget, "{GREEN}[Wojny Gangów]{NORMAL} Usunięto Cię z gangu {RED}czerwonych.")
    			glowne(param1);
    			CPrintToChat(param1, "Usunąłeś gracza {GREEN}%N{NORMAL} z {RED}gangu czerwonych.", iTarget);
    		}
    		case MenuAction_End:
    		{
    			CloseHandle(MainMenu);
    		}
    	}
    }
    
    public void OpenDel2Menu(int client) 
    { 
    	char sDisplayBuffer[128], sInfoBuffer[16], sTitle[64];
    	Format(sTitle, sizeof(sTitle), "Usuń gracza z gangu ziel. :");
    	Menu MainMenu = new Menu(MainMenu_CallBack29, MenuAction_Select | MenuAction_End); 
    	MainMenu.SetTitle(sTitle); 
    	for (int i = 1; i <= MaxClients; i++)
    	{
    		if (IsValidClient(i) && wgangu2[i] == true)
    		{
    			Format(sDisplayBuffer, sizeof(sDisplayBuffer), "%N", i);
    			Format(sInfoBuffer, sizeof(sInfoBuffer), "%i", GetClientUserId(i));
    			MainMenu.AddItem(sInfoBuffer, sDisplayBuffer);
    		}
    	}
    	DisplayMenu(MainMenu, client, MENU_TIME_FOREVER); 
    }
    
    public int MainMenu_CallBack29(Menu MainMenu, MenuAction action, int param1, int param2) 
    {
    	switch (action)
    	{
    		case MenuAction_Select:
    		{
    			char sInfo[128];
    			GetMenuItem(MainMenu, param2, sInfo, sizeof(sInfo));
    			int iTarget = GetClientOfUserId(StringToInt(sInfo));
    			SetEntityRenderMode(iTarget, RENDER_TRANSCOLOR);
    			SetEntityRenderColor(iTarget, 255, 255, 255, 255);
    			wgangu2[iTarget] = false;
    			CPrintToChat(iTarget, "{GREEN}[Wojny Gangów]{NORMAL} Usunięto Cię z gangu {LIGHTGREEN}zielonych.")
    			glowne(param1);
    			CPrintToChat(param1, "Usunąłeś gracza {GREEN}%N{NORMAL} z {LIGHTGREEN}gangu zielonych.", iTarget);
    		}
    		case MenuAction_End:
    		{
    			CloseHandle(MainMenu);
    		}
    	}
    }
    
    public Action pokaz(Handle timer, any client)
    {
    	if(zabawaon)
    	{
    		if(IsValidClient(client))
    		{
    			int iTarget = GetClientAimTarget(client, true);
    			float client_pos[3];
    			float target_pos[3];
    			
    			if(IsValidClient(iTarget))
    			{
    				GetClientEyePosition(client, client_pos);
    				GetClientEyePosition(iTarget, target_pos);
    				if (CanSeeTarget(client, client_pos, iTarget, target_pos, g_fDistance))
    				{
    					if(wgangu1[iTarget])
    					{
    						PrintHintText(client, "Gracz <font color='#3399ff'>%N</font> - w gangu <font color='#ff5050'>czerwonych</font>", iTarget);
    					}
    					else if(wgangu2[iTarget])
    					{
    						PrintHintText(client, "Gracz <font color='#3399ff'>%N</font>  - w gangu <font color='#00cc00'>zielonych</font>", iTarget);
    					}
    					else
    					{
    						PrintHintText(client, "Gracz <font color='#3399ff'>%N</font> - nie jest w <font color='#333300'>żadnym gangu</font>", iTarget);
    					}
    				}
    			}
    		}
    	}
    	else
    	{
    		Zabij(pokazz);
    	}
    }
    
    public Action wlaczff(Handle timer)
    {
    	ServerCommand("mp_teammates_are_enemies 1");
    	PrintHintTextToAll("<font color= '#ff4d4d'>[Wojny Gangów]</font> <font color='#00ff00'>Wojna rozpoczęta!</font>");
    	TryClearData();
    }
    	
    
    public Action OnTakeDamage(int victim, int &attacker, int &inflictor, float &damage, int &damagetype, int &weapon, float damageForce[3], float damagePosition[3], int damagecustom) 
    {
        if (zabawaon == true)
        {
    		if (wgangu1[victim] && wgangu1[attacker])
    		{
    			PrintHintText(attacker, "Gracz %N jest też w <font color='#ff5050'>gangu czerwonych</font>, <font size='25'>NIE ZABIJESZ GO.</font>", victim);
    			damage = float(0);
    			return Plugin_Changed;
    		}
    		if(GetClientTeam(victim) == CS_TEAM_CT && GetClientTeam(attacker) == CS_TEAM_CT)
    		{
    			damage = float(0);
    			return Plugin_Changed;
    		}
    		if (wgangu2[victim] && wgangu2[attacker])
            {
    			PrintHintText(attacker, "Gracz %N jest też w <font color='#00cc00'>gangu zielonych</font>, <font size='25'>NIE ZABIJESZ GO.</font>", victim);
    			damage = float(0);
    			return Plugin_Changed;
            }
    		if (GetClientTeam(attacker) == CS_TEAM_T && GetClientTeam(victim) == CS_TEAM_CT)
            {
    			PrintHintText(attacker, "To jest CT, on nie bierze udziału w zabawie, <font size='25'>NIE ZABIJESZ GO.</font>");
    			damage = float(0);
    			return Plugin_Changed;
            }
    		if (GetClientTeam(attacker) == CS_TEAM_CT && GetClientTeam(victim) == CS_TEAM_T && wystartowalo==true)
            {
    			damage = float(0);
    			return Plugin_Changed;
            }
        }
        return Plugin_Continue;
    }
    
    
    stock bool CanSeeTarget(any origin, float pos[3], any target, float targetPos[3], float range)
    {
    	float fDistance;
    	fDistance = GetVectorDistanceMeter(pos, targetPos);
    	if (fDistance >= range)
    	{
    		return false;
    	}
    	
    	Handle hTraceEx = INVALID_HANDLE;
    	float hitPos[3];
    	g_iFilteredEntity = origin;
    	hTraceEx = TR_TraceRayFilterEx(pos, targetPos, MASK_PLAYERSOLID, RayType_EndPoint, TraceFilter);
    	TR_GetEndPosition(hitPos, hTraceEx);
    	CloseHandle(hTraceEx);
    	
    	if (GetVectorDistanceMeter(hitPos, targetPos) <= 1.0)
    	{
    		return true;
    	}
    	return false;
    }
    
    stock float GetVectorDistanceMeter(const float vec1[3], const float vec2[3], bool squared=false) 
    {
    	return UnitToMeter(GetVectorDistance(vec1, vec2, squared));
    }
    
    public bool TraceFilter(int ent, int contentMask)
    {
    	return (ent == g_iFilteredEntity) ? false : true;
    }
    
    stock float UnitToMeter(float distance)
    {
    	return distance / 50.00;
    }
    
    stock int GetTeam1Count()
    {
    	int iAmmount = 0;
    	for (int i = 1; i <= MaxClients; i++)
    	{
    		if (wgangu1[i] == true && IsPlayerAlive(i))
    		{
    			iAmmount++;
    		}
    	}
    	return iAmmount;
    }
    
    
    stock int GetTeam2Count()
    {
    	int iAmmount = 0;
    	for (int i = 1; i <= MaxClients; i++)
    	{
    		if (wgangu2[i] == true && IsPlayerAlive(i))
    		{
    			iAmmount++;
    		}
    	}
    	return iAmmount;
    }

     

     

    może tu to znajdziesz co chcesz

×
×
  • Dodaj nową pozycję...