Skocz do zawartości

Rekomendowane odpowiedzi

  • Moderator poziom 2

Dla każdego gracza ma być automatycznie dawany randomowy pistolet?

Sygnatura użytkownika

» Steam: https://steamcommunity.com/id/pawelsteam/\

» Discord: Paweł#8244

» PluginyCS: https://pluginycs.pl/profile/Pawel

» Przyjmuję zlecenia na paczki oraz pluginy.  «

  • Lubię to!
Odnośnik do odpowiedzi
Udostępnij na innych stronach
  • Moderator poziom 2

Czy kupowanie broni ma być zablokowane?

Sygnatura użytkownika

» Steam: https://steamcommunity.com/id/pawelsteam/\

» Discord: Paweł#8244

» PluginyCS: https://pluginycs.pl/profile/Pawel

» Przyjmuję zlecenia na paczki oraz pluginy.  «

  • Lubię to!
Odnośnik do odpowiedzi
Udostępnij na innych stronach
  • Moderator poziom 2

Pamiętaj, aby ustawić limit rund na mapę. Plugin powinien działać.

 

Kod:

Spoiler

/* [ Includes ] */
#include <sourcemod>
#include <sdktools>
#include <multicolors>
#include <cstrike>

/* [ Compiler Options ] */
#pragma newdecls required
#pragma semicolon 1

/* [ Defines ] */
#define PluginTag_Info		"★{darkred}[ {lightred}Random Rounds{darkred} --> {lightred} Informacja{darkred} ]{default}"
#define LoopClients(%1)		for(int %1 = 1; %1 < MaxClients; %1++) if(IsValidClient(%1))
#define Pistols 			10
#define Smgs				12
#define Rifles				7
#define Snipers				4

/* [ Integers ] */
int g_iPistolRound, g_iSmgsRound, g_iRiflesRound, g_iSnipersRound;

/* [ Booleans ] */
bool g_bPistolRound, g_bSmgRound, g_bRifleRound, g_bSniperRound;

/* [ Chars ] */
char g_sPistols[Pistols][] =
{
	"weapon_glock", "weapon_usp_silencer", "weapon_hkp2000", 
	"weapon_p250", "weapon_tec9", "weapon_fiveseven", "weapon_cz75a",
	"weapon_deagle", "weapon_revolver", "weapon_elite"
};
char g_sSmgs[Smgs][] =
{
	"weapon_p90", "weapon_nova", "weapon_xm1014", "weapon_mag7",
	"weapon_mac10", "weapon_mp7", "weapon_mp9", "weapon_bizon",
	"weapon_ump45", "weapon_m249", "weapon_sawedoff", "weapon_negev"
};
char g_sRifles[Rifles][] =
{
	"weapon_m4a1_silencer", "weapon_ak47", "weapon_m4a1", "weapon_famas",
	"weapon_aug", "weapon_galilar", "weapon_sg556"
};
char g_sSnipers[Snipers][] = 
{
	"weapon_awp", "weapon_scar20", "weapon_g3sg1", "weapon_ssg08"
};

/* [ Plugin Author And Informations ] */
public Plugin myinfo = 
{
	name = "[CS:GO] Yamakashi - [ Random Rounds ]", 
	author = "Yamakashi", 
	description = "Autorski plugin by Yamakashi.", 
	version = "1.0", 
	url = "https://steamcommunity.com/id/yamakashisteam"
};

/* [ Plugin Startup ] */
public void OnPluginStart()
{
	/* [ Hooks ] */
	HookEvent("round_start", Event_RoundStart, EventHookMode_Pre);
	HookEvent("player_spawn", Event_PlayerSpawn);
}

/* [ Standart Actions ] */
public void OnMapStart()
{
	Reset(1);
}

/* [ Events ] */
public Action Event_RoundStart(Event event, const char[] name, bool dontBroadcast)
{
	GameRules_SetProp("m_bTCantBuy", true, _, _, true);
	GameRules_SetProp("m_bCTCantBuy", true, _, _, true);
	
	Reset(2);
	RandomRoundSet();
}

public Action Event_PlayerSpawn(Event event, const char[] name, bool dontBroadcast)
{
	LoopClients(i)
		CreateTimer(1.0, GiveWeapons, i, TIMER_FLAG_NO_MAPCHANGE);
}

/* [ Timers ] */
public Action GiveWeapons(Handle timer, any client)
{
	if(IsPlayerAlive(client))
	{
		RemoveWeapons(client);
		if(g_bPistolRound)
			GiveWeapon(client, 1);
		if(g_bSmgRound)
			GiveWeapon(client, 2);
		if(g_bRifleRound)
			GiveWeapon(client, 3);
		if(g_bSniperRound)
			GiveWeapon(client, 4);
	}
}

/* [ Helpers ] */
public void RandomRoundSet()
{
	int random = GetRandomInt(1, 4);
	switch(random)
	{
		case 1:
		{
			if(g_iPistolRound == 4)
				RandomRoundSet();
			else
			{
				g_bPistolRound = true;
				g_iPistolRound++;
				CPrintToChatAll("%s Gramy rundę {lime}pistoletową{default}!", PluginTag_Info);
			}
		}
		case 2:
		{
			if(g_iSmgsRound == 4)
				RandomRoundSet();
			else
			{
				g_bSmgRound = true;
				g_iSmgsRound++;
				CPrintToChatAll("%s Gramy rundę {lime}smg{default}!", PluginTag_Info);
			}
		}
		case 3:
		{
			if(g_iRiflesRound == 4)
				RandomRoundSet();
			else
			{
				g_bRifleRound = true;
				g_iRiflesRound++;
				CPrintToChatAll("%s Gramy rundę {lime}karabinową{default}!", PluginTag_Info);
			}
		}
		case 4:
		{
			if(g_iSnipersRound == 4)
				RandomRoundSet();
			else
			{
				g_bSniperRound = true;
				g_iSnipersRound++;
				CPrintToChatAll("%s Gramy rundę {lime}snajperską{default}!", PluginTag_Info);
			}
		}
	}
}

public void GiveWeapon(int client, int type)
{
	// 1 - Pistols  2 - SMG  3 - Rifles  4 - Snipers
	if(type == 1)
	{
		int random = GetRandomInt(0, Pistols - 1);
		GivePlayerItem(client, g_sPistols[random]);
	}
	if(type == 2)
	{
		int random = GetRandomInt(0, Smgs - 1);
		GivePlayerItem(client, g_sSmgs[random]);
	}
	if(type == 3)
	{
		int random = GetRandomInt(0, Rifles - 1);
		GivePlayerItem(client, g_sRifles[random]);
	}
	if(type == 4)
	{
		int random = GetRandomInt(0, Snipers - 1);
		GivePlayerItem(client, g_sSnipers[random]);
	}
}
	
public void RemoveWeapons(int client)
{
	int weapon;
	if ((weapon = GetPlayerWeaponSlot(client, CS_SLOT_PRIMARY)) != -1 || (weapon = GetPlayerWeaponSlot(client, CS_SLOT_SECONDARY)))
	{
		RemovePlayerItem(client, weapon);
		AcceptEntityInput(weapon, "Kill");
	}
}

public void Reset(int type)
{
	if(type == 1)
	{
		g_iPistolRound = 0;
		g_iSmgsRound = 0;
		g_iRiflesRound = 0;
		g_iSnipersRound = 0;
		g_bPistolRound = false;
		g_bSmgRound = false;
		g_bRifleRound = false;
		g_bSniperRound = false;
	}
	if(type == 2)
	{
		g_bPistolRound = false;
		g_bSmgRound = false;
		g_bRifleRound = false;
		g_bSniperRound = false;
	}
}

stock bool IsValidClient(int client)
{
	if (client <= 0)return false;
	if (client > MaxClients)return false;
	if (!IsClientConnected(client))return false;
	if (IsFakeClient(client))return false;
	return IsClientInGame(client);
}

 

 

RandomRounds.sp

Sygnatura użytkownika

» Steam: https://steamcommunity.com/id/pawelsteam/\

» Discord: Paweł#8244

» PluginyCS: https://pluginycs.pl/profile/Pawel

» Przyjmuję zlecenia na paczki oraz pluginy.  «

  • Lubię to!
Odnośnik do odpowiedzi
Udostępnij na innych stronach

Ostatnio przeglądający ten temat (4 użytkowników)

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ć grafiki. Dodaj lub załącz grafiki z adresu URL.

×
×
  • Dodaj nową pozycję...