Skocz do zawartości
Akeno

[Brak rozwiązania] Klasa - DR

Rekomendowane odpowiedzi

Witam, mam problem z klasami w DR od NOX niestety sam autor nie wie co jest problemem więc sięgam po pomoc tutaj.

 

Poniżej daję wam kod przykładowej klasy która nie działa.

Spoiler

#include <sourcemod>
#include <sdktools>
#include <deathrun>
#include <cstrike>
#include <sdkhooks>

char Nazwa[]		= 	"[MP] Smierc";
char Opis[]     	= 	"* 1/1 z noza [PPM],\n * Dodatkowe 40HP,\n * Lung Jump,\n Posiada strzykawke,\n * 20% szans na zrespienie sie po smierci." 

const int Damage 				= 	50;
const int Zdrowie 				= 	40;
const int Reinkarnacja 			= 	35;
const int Kondycja 				= 	30;
const int Grawitacja			=	60;

int MaKlase					[MAXPLAYERS+1];

public OnPluginStart()
{
	DR_ZarejestrujKlase(Nazwa, Opis, Damage, Zdrowie, Reinkarnacja, Kondycja, Grawitacja);
	HookEvent("player_death",	EventPlayerDeath);
	HookEvent("player_spawn",	OnPlayerSpawn);
}

public DR_OnClassEnabled(client, ClassID:id)
{	
	if(!GetAdminFlag(GetUserAdmin(client), Admin_Custom6))
	{
		PrintToChat(client, " %s \x06Klasa jest dostępna tylko dla posiadaczy \x02Mega Premium \x06!", PREFIX_NORMAL);
		return DR_DISABLE;
	}
	
	PrintToChat(client, "\x02[DR]\x04 Wybrales klase \x03[MP] Smierc");
	MaKlase[client] = 1;
	
	GivePlayerItem(client, "weapon_healthshot");
	
	return DR_CONTINUE;
}

public DR_OnClassDiabled(client, ClassID:id)
{	
	MaKlase[client] = 0;
}

public OnClientPutInServer(client)
{
	SDKHook(client, SDKHook_OnTakeDamage, OnTakeDamage);
}

public Action EventPlayerDeath(Handle:event, const String:name[], bool:dontBroadcast)
{
	int attacker = GetClientOfUserId(GetEventInt(event, "attacker"));
	int victim = GetClientOfUserId(GetEventInt(event, "userid"));
	if(GameRules_GetProp("m_bWarmupPeriod") == 0)
	{
		if(IsValidClient(attacker) && !IsFakeClient(attacker) && (attacker != victim))
		{	
			if(MaKlase[attacker])
			{
				if(!GetRandomInt(0, 4))
				{
					CreateTimer(0.01, Timer_Respawn, GetClientUserId(victim), TIMER_FLAG_NO_MAPCHANGE);
				}
			}
		}
	}
}

public Action Timer_Respawn(Handle:timer, any:index)
{
	int client = GetClientOfUserId(index);
	
	if(client)
	{
		CS_RespawnPlayer(client);
		PrintToChat(client, "%s \x06Odrodziłeś się.", PREFIX_NORMAL);
	}
}

public Action:OnTakeDamage(victim, &attacker, &inflictor, &Float:damage, &damagetype)
{	
	if(!IsValidClient(attacker))
		return Plugin_Continue;
	
	if(!MaKlase[attacker])
		return Plugin_Continue;
	
	if(MaKlase[attacker] && GetClientButtons(attacker) & IN_ATTACK2)
	{
		char sWeapon[32];
		GetClientWeapon(attacker, sWeapon, sizeof(sWeapon));
		if(StrEqual(sWeapon, "weapon_knife"))
		{
			SetEntProp(victim, Prop_Data, "m_ArmorValue", 0, 1);
			damage = float(GetClientHealth(victim) + 1);
			return Plugin_Changed;	
		}	
	}
	return Plugin_Continue;
}

public Action OnPlayerSpawn(Handle:event, const String:name[], bool:dontBroadcast)
{
	new client = GetClientOfUserId(GetEventInt(event, "userid"));
	if(MaKlase[client])
	{
		GivePlayerItem(client, "weapon_healthshot");
		GivePlayerItem(client, "weapon_healthshot");
	}
}

stock bool IsValidClient(client)
{
	if(client >= 1 && client <= MaxClients && IsClientInGame(client))
		return true;

	return false;
}

 

 

Problem polega na tym że mimo posiadania danej flagi, niema dostępu do klasy. Nawet z flagą "z" nie mogę wybrać klasy Premium/MegaPremium.

 

A tutaj kod jedynej klasy która działa:

 

Spoiler

#include <sourcemod>
#include <deathrun>
#include <sdktools>
#include <cstrike>
#include <sdkhooks>
#include <nox_mbhop>

char Nazwa[]		= 	"[P] Hunter";
char Opis[]     	= 	" * Dodatkowe 50hp na start\n * Dodatkowy skok\n * AutoRespawn przez 25 sekund";

const int Damage 				= 	30;
const int Zdrowie 				= 	40;
const int Reinkarnacja 			= 	15;
const int Kondycja 				=  	10;
const int Grawitacja			=	25;

int MaKlase					[MAXPLAYERS+1];
int roundTime;

public OnPluginStart()
{
	DR_ZarejestrujKlase(Nazwa, Opis, Damage, Zdrowie, Reinkarnacja, Kondycja, Grawitacja);
	HookEvent("player_death", Event_PlayerDeath);
	HookEvent("round_start", Event_RoundStart);
}
public Event_RoundStart(Handle:event, const String:name[], bool:dontBroadcast)
{	
	roundTime = GetTime();
	new client = GetClientOfUserId(GetEventInt(event, "userid"));
	if(MaKlase[client])
	{
		CreateTimer(3.0, HP, client);
	}
}
public Action HP(Handle:timer, any:client)
{
	if(MaKlase[client])
	{
		SetEntityHealth(client, GetEntProp(client, Prop_Send, "m_iHealth") + 50);
	}
} 
public DR_OnClassEnabled(client, ClassID:id)
{
	if(!GetAdminFlag(GetUserAdmin(client), Admin_Custom5))
	{
		PrintToChat(client, "╔══════════════════════════════════════════╗");
		PrintToChat(client, " %s \x06Klasa jest dostępna tylko dla posiadaczy \x02Premium \x06!", PREFIX_NORMAL);
		PrintToChat(client, "╚══════════════════════════════════════════╝");
		return DR_DISABLE;
	}
	
	PrintToChat(client, "\x04╔════════════════════════╗");
	PrintToChat(client, "\%s \x01Wybrałeś Klase \x04[P] Hunter", PREFIX_NORMAL);
	PrintToChat(client, "\x04╚════════════════════════╝");
	
	MaKlase[client] = 1;
	MBHOP_AddClientJumps(client, 1);
	
	return DR_CONTINUE;
}
public DR_OnClassDisabled(client, ClassID:id)
{
	MaKlase[client] = 0;
	MBHOP_AddClientJumps(client, -1);

}
public Event_PlayerDeath(Handle event, const char[] name, bool dontBroadcast)
{
	int client = GetClientOfUserId(GetEventInt(event, "userid"));
	
	if(MaKlase[client])
	{
		int currentTime = GetTime();
		if (currentTime-roundTime > 25)
			return;
		CreateTimer(0.1, ExecRespawn, client);
	}
}
public Action ExecRespawn(Handle:timer, any:client)
{
	if ( client && (!IsPlayerAlive(client)) && (MaKlase[client]))
		CS_RespawnPlayer(client);
	return Plugin_Stop;
}

 

 

Edytowane przez Akeno|AdvancedNet

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Kod pierwszy który twoim zdaniem nie działa ma ustawioną flagę na admin_custom6 natomiast kod w którym napisałeś, że działa jest custom5

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach
Spoiler

#include <sourcemod>
#include <sdktools>
#include <deathrun>
#include <cstrike>
#include <sdkhooks>

char Nazwa[] = "[MP] Smierc";
char Opis[] = "* 1/1 z noza [PPM],\n * Dodatkowe 40HP,\n * Lung Jump,\n Posiada strzykawke,\n * 20% szans na zrespienie sie po smierci." 

const int Damage = 50;
const int Zdrowie = 40;
const int Reinkarnacja = 35;
const int Kondycja = 30;
const int Grawitacja = 60;

bool ma_klase[65];
public void OnPluginStart()
{
	DR_ZarejestrujKlase(Nazwa, Opis, Damage, Zdrowie, Reinkarnacja, Kondycja, Grawitacja);
	HookEvent("player_death", EventPlayerDeath);
	HookEvent("player_spawn", OnPlayerSpawn);
}

public int DR_OnClassEnabled(int client, int ClassID:id)
{	
	if(!GetUserFlagBits(client, Admin_Custom6))
	{
		PrintToChat(client, " %s \x06Klasa jest dostępna tylko dla posiadaczy \x02Mega Premium \x06!", PREFIX_NORMAL);
		return DR_DISABLE;
	}
	
	PrintToChat(client, "\x02[DR]\x04 Wybrales klase \x03[MP] Smierc");
	ma_klase[client] = true;
	
	GivePlayerItem(client, "weapon_healthshot");
	return DR_CONTINUE;
}

public int DR_OnClassDiabled(int client, int ClassID:id)
{	
	ma_klase[client] = false;
}

public void OnClientPutInServer(intclient)
{
	SDKHook(client, SDKHook_OnTakeDamage, OnTakeDamage);
}

public Action EventPlayerDeath(Event event, const char[] name, bool dontBroadcast)
{
	int attacker = GetClientOfUserId(GetEventInt(event, "attacker"));
	int victim = GetClientOfUserId(GetEventInt(event, "userid"));
	if(GameRules_GetProp("m_bWarmupPeriod") == 0)
	{
		if(IsValidClient(attacker) && !IsFakeClient(attacker) && (attacker != victim))
		{	
			if(ma_klase[attacker])
			{
				if(!GetRandomInt(0, 4))
				{
					CreateTimer(0.01, Timer_Respawn, GetClientUserId(victim), TIMER_FLAG_NO_MAPCHANGE);
				}
			}
		}
	}
}

public Action Timer_Respawn(Handle timer, any index)
{
	int client = GetClientOfUserId(index);
	
	if(client)
	{
		CS_RespawnPlayer(client);
		PrintToChat(client, "%s \x06Odrodziłeś się.", PREFIX_NORMAL);
	}
}

public Action OnTakeDamage(int victim, int &attacker, int &inflictor, float &damage, int &damagetype)
{	
	if(!IsValidClient(attacker))
		return Plugin_Continue;
	
	if(!ma_klase[attacker])
		return Plugin_Continue;
	
	if(ma_klase[attacker] && GetClientButtons(attacker) & IN_ATTACK2)
	{
		char weapon[32];
		GetClientWeapon(attacker, weapon, sizeof(weapon));
		if(StrEqual(weapon, "weapon_knife"))
		{
			SetEntProp(victim, Prop_Data, "m_ArmorValue", 0, 1);
			damage = float(GetClientHealth(victim) + 1);
			return Plugin_Changed;	
		}	
	}
	return Plugin_Continue;
}

public Action OnPlayerSpawn(Event event, const char[] name, bool dontBroadcast)
{
	int client = GetClientOfUserId(GetEventInt(event, "userid"));
	if(ma_klase[client])
	{
		GivePlayerItem(client, "weapon_healthshot");
		GivePlayerItem(client, "weapon_healthshot");
	}
}

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);
}

Spróbuj tego

 

Edytowane przez Yamakashi

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach
2 godziny temu, Brum Brum napisał:

Kod pierwszy który twoim zdaniem nie działa ma ustawioną flagę na admin_custom6 natomiast kod w którym napisałeś, że działa jest custom5

To akurat niema nic do znaczenia bo sprawdzałem już to.

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach
2 godziny temu, Yamakashi napisał:
 
Hej! Skorzystałeś z linku lub pobrałeś załącznik? Uhonoruj naszą pracę poprzez rejestrację na forum i rośnij razem z nami! Odkryj ukrytą treść


#include <sourcemod>
#include <sdktools>
#include <deathrun>
#include <cstrike>
#include <sdkhooks>

char Nazwa[] = "[MP] Smierc";
char Opis[] = "* 1/1 z noza [PPM],\n * Dodatkowe 40HP,\n * Lung Jump,\n Posiada strzykawke,\n * 20% szans na zrespienie sie po smierci." 

const int Damage = 50;
const int Zdrowie = 40;
const int Reinkarnacja = 35;
const int Kondycja = 30;
const int Grawitacja = 60;

bool ma_klase[65];
public void OnPluginStart()
{
	DR_ZarejestrujKlase(Nazwa, Opis, Damage, Zdrowie, Reinkarnacja, Kondycja, Grawitacja);
	HookEvent("player_death", EventPlayerDeath);
	HookEvent("player_spawn", OnPlayerSpawn);
}

public int DR_OnClassEnabled(int client, int ClassID:id)
{	
	if(!GetUserFlagBits(client, Admin_Custom6))
	{
		PrintToChat(client, " %s \x06Klasa jest dostępna tylko dla posiadaczy \x02Mega Premium \x06!", PREFIX_NORMAL);
		return DR_DISABLE;
	}
	
	PrintToChat(client, "\x02[DR]\x04 Wybrales klase \x03[MP] Smierc");
	ma_klase[client] = true;
	
	GivePlayerItem(client, "weapon_healthshot");
	return DR_CONTINUE;
}

public int DR_OnClassDiabled(int client, int ClassID:id)
{	
	ma_klase[client] = false;
}

public void OnClientPutInServer(intclient)
{
	SDKHook(client, SDKHook_OnTakeDamage, OnTakeDamage);
}

public Action EventPlayerDeath(Event event, const char[] name, bool dontBroadcast)
{
	int attacker = GetClientOfUserId(GetEventInt(event, "attacker"));
	int victim = GetClientOfUserId(GetEventInt(event, "userid"));
	if(GameRules_GetProp("m_bWarmupPeriod") == 0)
	{
		if(IsValidClient(attacker) && !IsFakeClient(attacker) && (attacker != victim))
		{	
			if(ma_klase[attacker])
			{
				if(!GetRandomInt(0, 4))
				{
					CreateTimer(0.01, Timer_Respawn, GetClientUserId(victim), TIMER_FLAG_NO_MAPCHANGE);
				}
			}
		}
	}
}

public Action Timer_Respawn(Handle timer, any index)
{
	int client = GetClientOfUserId(index);
	
	if(client)
	{
		CS_RespawnPlayer(client);
		PrintToChat(client, "%s \x06Odrodziłeś się.", PREFIX_NORMAL);
	}
}

public Action OnTakeDamage(int victim, int &attacker, int &inflictor, float &damage, int &damagetype)
{	
	if(!IsValidClient(attacker))
		return Plugin_Continue;
	
	if(!ma_klase[attacker])
		return Plugin_Continue;
	
	if(ma_klase[attacker] && GetClientButtons(attacker) & IN_ATTACK2)
	{
		char weapon[32];
		GetClientWeapon(attacker, weapon, sizeof(weapon));
		if(StrEqual(weapon, "weapon_knife"))
		{
			SetEntProp(victim, Prop_Data, "m_ArmorValue", 0, 1);
			damage = float(GetClientHealth(victim) + 1);
			return Plugin_Changed;	
		}	
	}
	return Plugin_Continue;
}

public Action OnPlayerSpawn(Event event, const char[] name, bool dontBroadcast)
{
	int client = GetClientOfUserId(GetEventInt(event, "userid"));
	if(ma_klase[client])
	{
		GivePlayerItem(client, "weapon_healthshot");
		GivePlayerItem(client, "weapon_healthshot");
	}
}

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);
}

Spróbuj tego

 

Niestety również nie działa ?

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach
32 minuty temu, Roberrt napisał:

do używania GetUserFlagBits używamy wartości typu ADMFLAG_ROOT a nie Admin_Root ? tak na przyszłość

 
Hej! Skorzystałeś z linku lub pobrałeś załącznik? Uhonoruj naszą pracę poprzez rejestrację na forum i rośnij razem z nami! Odkryj ukrytą treść


#include <sourcemod>
#include <sdktools>
#include <deathrun>
#include <cstrike>
#include <sdkhooks>

char Nazwa[] = "[MP] Smierc";
char Opis[] = "* 1/1 z noza [PPM],\n * Dodatkowe 40HP,\n * Lung Jump,\n Posiada strzykawke,\n * 20% szans na zrespienie sie po smierci." 

const int Damage = 50;
const int Zdrowie = 40;
const int Reinkarnacja = 35;
const int Kondycja = 30;
const int Grawitacja = 60;

bool ma_klase[65];
public void OnPluginStart()
{
	DR_ZarejestrujKlase(Nazwa, Opis, Damage, Zdrowie, Reinkarnacja, Kondycja, Grawitacja);
	HookEvent("player_death", EventPlayerDeath);
	HookEvent("player_spawn", OnPlayerSpawn);
}

public int DR_OnClassEnabled(int client, int ClassID:id)
{	
	if(!(GetUserFlagBits(client) & ADMFLAG_CUSTOM6))
	{
		PrintToChat(client, " %s \x06Klasa jest dostępna tylko dla posiadaczy \x02Mega Premium \x06!", PREFIX_NORMAL);
		return DR_DISABLE;
	}
	
	PrintToChat(client, "\x02[DR]\x04 Wybrales klase \x03[MP] Smierc");
	ma_klase[client] = true;
	
	GivePlayerItem(client, "weapon_healthshot");
	return DR_CONTINUE;
}

public int DR_OnClassDiabled(int client, int ClassID:id)
{	
	ma_klase[client] = false;
}

public void OnClientPutInServer(intclient)
{
	SDKHook(client, SDKHook_OnTakeDamage, OnTakeDamage);
}

public Action EventPlayerDeath(Event event, const char[] name, bool dontBroadcast)
{
	int attacker = GetClientOfUserId(GetEventInt(event, "attacker"));
	int victim = GetClientOfUserId(GetEventInt(event, "userid"));
	if(GameRules_GetProp("m_bWarmupPeriod") == 0)
	{
		if(IsValidClient(attacker) && !IsFakeClient(attacker) && (attacker != victim))
		{	
			if(ma_klase[attacker])
			{
				if(!GetRandomInt(0, 4))
				{
					CreateTimer(0.01, Timer_Respawn, GetClientUserId(victim), TIMER_FLAG_NO_MAPCHANGE);
				}
			}
		}
	}
}

public Action Timer_Respawn(Handle timer, any index)
{
	int client = GetClientOfUserId(index);
	
	if(client)
	{
		CS_RespawnPlayer(client);
		PrintToChat(client, "%s \x06Odrodziłeś się.", PREFIX_NORMAL);
	}
}

public Action OnTakeDamage(int victim, int &attacker, int &inflictor, float &damage, int &damagetype)
{	
	if(!IsValidClient(attacker))
		return Plugin_Continue;
	
	if(!ma_klase[attacker])
		return Plugin_Continue;
	
	if(ma_klase[attacker] && GetClientButtons(attacker) & IN_ATTACK2)
	{
		char weapon[32];
		GetClientWeapon(attacker, weapon, sizeof(weapon));
		if(StrEqual(weapon, "weapon_knife"))
		{
			SetEntProp(victim, Prop_Data, "m_ArmorValue", 0, 1);
			damage = float(GetClientHealth(victim) + 1);
			return Plugin_Changed;	
		}	
	}
	return Plugin_Continue;
}

public Action OnPlayerSpawn(Event event, const char[] name, bool dontBroadcast)
{
	int client = GetClientOfUserId(GetEventInt(event, "userid"));
	if(ma_klase[client])
	{
		GivePlayerItem(client, "weapon_healthshot");
		GivePlayerItem(client, "weapon_healthshot");
	}
}

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);
}

 

 

 

// C:\Users\akeno\Desktop\kompilator nowy\include\clients.inc(374) : warning 219: local variable "client" shadows a variable at a preceding level
// C:\Users\akeno\Desktop\kompilator nowy\include\usermessages.inc(250) : warning 219: local variable "client" shadows a variable at a preceding level
// C:\Users\akeno\Desktop\kompilator nowy\include\halflife.inc(612) : warning 219: local variable "client" shadows a variable at a preceding level
// C:\Users\akeno\Desktop\kompilator nowy\include\halflife.inc(633) : warning 219: local variable "client" shadows a variable at a preceding level
// C:\Users\akeno\Desktop\kompilator nowy\include\commandfilters.inc(96) : warning 219: local variable "client" shadows a variable at a preceding level
// C:\Users\akeno\Desktop\kompilator nowy\include\helpers.inc(46) : warning 219: local variable "client" shadows a variable at a preceding level
// C:\Users\akeno\Desktop\kompilator nowy\include\helpers.inc(155) : warning 219: local variable "client" shadows a variable at a preceding level
// C:\Users\akeno\Desktop\kompilator nowy\include\entity_prop_stocks.inc(574) : warning 219: local variable "client" shadows a variable at a preceding level
// C:\Users\akeno\Desktop\kompilator nowy\include\deathrun.inc(207) : warning 219: local variable "client" shadows a variable at a preceding level
// C:\Users\akeno\Desktop\kompilator nowy\include\deathrun.inc(215) : warning 219: local variable "client" shadows a variable at a preceding level
// C:\Users\akeno\Desktop\kompilator nowy\include\sdktools_sound.inc(414) : warning 219: local variable "client" shadows a variable at a preceding level
// C:\Users\akeno\Desktop\kompilator nowy\include\sdktools_sound.inc(641) : warning 219: local variable "client" shadows a variable at a preceding level
// C:\Users\akeno\Desktop\kompilator nowy\include\sdktools_tempents.inc(208) : warning 219: local variable "client" shadows a variable at a preceding level
// C:\Users\akeno\Desktop\kompilator nowy\dr_class_MP_SMIERC.sp(31) : warning 219: local variable "client" shadows a variable at a preceding level
// C:\Users\akeno\Desktop\kompilator nowy\dr_class_MP_SMIERC.sp(31) : error 001: expected token: "-identifier-", but found "-label-"
// C:\Users\akeno\Desktop\kompilator nowy\dr_class_MP_SMIERC.sp(31) : error 001: expected token: "{", but found "-label-"
// C:\Users\akeno\Desktop\kompilator nowy\dr_class_MP_SMIERC.sp(31) : error 017: undefined symbol "id"
// C:\Users\akeno\Desktop\kompilator nowy\dr_class_MP_SMIERC.sp(31) : fatal error 190: too many error messages on one line

Przy kompilacji gdy użyłem kodu który podałeś

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach
6 minut temu, Roberrt napisał:

a i jeszcze DR_OnClassDiabled(int client, int ClassID:id)

na DR_OnClassDisabled(int client, int id)

 

Tutaj masz kod przykładowej klasy na której testuje:

 

Spoiler

#include <sourcemod>
#include <deathrun>
#include <sdktools>
#include <cstrike>
#include <nox_mbhop>

char Nazwa[]		= 	"[MP] Cichociemny";
char Opis[]     	= 	" * 2 Dodatkowe Skoki\n * 30 Sekund AutoRespawn\n * Zmniejszona Grawitacja\n * Bonus EXPa 30%";

const int Damage 				= 	35;
const int Zdrowie 				= 	40;
const int Reinkarnacja 			= 	30;
const int Kondycja 				= 	35;
const int Grawitacja			=	35;

int MaKlase					[MAXPLAYERS+1];
int roundTime;

public OnPluginStart()
{
	DR_ZarejestrujKlase(Nazwa, Opis, Damage, Zdrowie, Reinkarnacja, Kondycja, Grawitacja);
	HookEvent("player_spawn", OnPlayerSpawn);
	HookEvent("round_start", Event_RoundStart);
	HookEvent("player_death", Event_PlayerDeath);

}
public Event_RoundStart(Handle:event, const String:name[], bool:dontBroadcast)
{	
	roundTime = GetTime();
}
public DR_OnClassEnabled(client, ClassID:id)
{	
	if(!(GetUserFlagBits(client) & ADMFLAG_CUSTOM4))
	{
		PrintToChat(client, "╔══════════════════════════════════════════╗");
		PrintToChat(client, " %s \x06Klasa jest dostępna tylko dla posiadaczy \x02MegaPremium \x06!", PREFIX_NORMAL);
		PrintToChat(client, "╚══════════════════════════════════════════╝");
		return DR_DISABLE;
	}
	
	PrintToChat(client, "\x04╔═══════════════════════════╗");
	PrintToChat(client, "\%s \x01Wybrałeś Klase \x04[MP] Cichociemny", PREFIX_NORMAL);
	PrintToChat(client, "\x04╚═══════════════════════════╝");
	MaKlase[client] = 1;
	
	MBHOP_AddClientJumps(client, 2);// Dodawanie skoku dla indexu 'client'
	
	SetEntityGravity(client, 0.75);
	DR_DodajBonusExp(client, 150);
	return DR_CONTINUE;
}

public DR_OnClassDisabled(client, ClassID:id)
{
	MaKlase[client] = 0;
	DR_DodajBonusExp(client, -150);
	MBHOP_AddClientJumps(client, -2);// Odejmowanie skoku z indexu client.

	SetEntityGravity(client, 1.0);
}
public Action OnPlayerSpawn(Handle event, const char[] name, bool dontBroadcast)
{
	
	int client = GetClientOfUserId(GetEventInt(event, "userid"));
	if(MaKlase[client])
		SetEntityGravity(client, 0.75);
}
public Event_PlayerDeath(Handle event, const char[] name, bool dontBroadcast)
{
	int client = GetClientOfUserId(GetEventInt(event, "userid"));
	
	if(MaKlase[client])
	{
		int currentTime = GetTime();
		if (currentTime-roundTime > 30)
			return;
		CreateTimer(0.1, ExecRespawn, client);
	}
}
public Action ExecRespawn(Handle:timer, any:client)
{
	if ( client && (!IsPlayerAlive(client)) && (MaKlase[client]))
		CS_RespawnPlayer(client);
	return Plugin_Stop;
} 

 

 

Po dodaniu: if(!(GetUserFlagBits(client) & ADMFLAG_CUSTOM4)) niby klasę wybiera ale nie nadaje jej graczowi.

Za to przy: if(!GetAdminFlag(GetUserAdmin(client), Admin_Custom4)) pokazuje że nie masz uprawnień do klasy.

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach
] sm_who 
    Nazwa                    Nazwa użytkow     Dostęp admini
 1. somebody                                    none
 2. lucid20.PL                                  none
 3. HoTTeR                                      none
 5. Tomas                                    res, admin, kick, ban, unban, slay, map, chat, vote, custom(4,5)
 6. Akeno ❤️ Dominika                       root

 

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Wiadomość wygenerowana automatycznie

 

Temat został zamknięty i przeniesiony do działu "Przestarzałe tematy". Powodem jest brak rozwiązania problemu zawartego w temacie lub brak zainteresowania autora w jego rozwiązaniu.

 

Jeśli się z tym nie zgadzasz, zaraportuj ten post z prośbą o ponowne otwarcie i kontynuację dyskusji.

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach
Gość
Ten temat został zamknięty. Brak możliwości dodania odpowiedzi.

×
×
  • Dodaj nową pozycję...