Recommended Posts

Napisano (edytowany)

Chciałbym aby dawało losową klase zombie spośród 4, ale nie mam pojęcia jak to zrobić :/ Coś tam próbowałem ale nie wychodziło :/

SetPlayerArms(client, "models/player/custom_player/zombie/crimsonhead/crimsonhead_arms.mdl");
SetEntityModel(client, "models/player/custom_player/zombie/crimsonhead/crimsonhead.mdl");
SetEntityGravity(client, 1.0);
SetEntityHealth(client, 2000);
SetEntPropFloat(client, Prop_Data, "m_flLaggedMovementValue", 1.0);
PrintToChat(client, "Twoja Klasa To \x05Zombie!");
CS_SetClientClanTag(client, "Zombie");

SetPlayerArms(client, "models/player/custom_player/zombie/mummy/mummy_arms.mdl");
SetEntityModel(client, "models/player/custom_player/zombie/mummy/mummy.mdl");
SetEntityGravity(client, 0.6);
SetEntityHealth(client, 1500);
SetEntPropFloat(client, Prop_Data, "m_flLaggedMovementValue", 1.0);
PrintToChat(client, "Twoja Klasa To \x05Ghoul!");
CS_SetClientClanTag(client, "Ghoul");

SetPlayerArms(client, "models/player/custom_player/zombie/revenant/revenant_arms.mdl");
SetEntityModel(client, "models/player/custom_player/zombie/revenant/revenant_v2.mdl");
SetEntityGravity(client, 1.1);
SetEntityHealth(client, 3500);
SetEntPropFloat(client, Prop_Data, "m_flLaggedMovementValue", 0.7);			
PrintToChat(client, "Twoja Klasa To \x05Slasher!");
CS_SetClientClanTag(client, "Slasher");

SetPlayerArms(client, "models/player/custom_player/zombie/romeo_zombie/romeo_zombie_arms.mdl");
SetEntityModel(client, "models/player/custom_player/zombie/romeo_zombie/romeo_zombie.mdl");
SetEntityGravity(client, 0.8);
SetEntityHealth(client, 1000);
SetEntPropFloat(client, Prop_Data, "m_flLaggedMovementValue", 2.0);
PrintToChat(client, "Twoja Klasa To \x05Undead!");
CS_SetClientClanTag(client, "Undead");

 

Edytowano przez sdasdas

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
Napisano (edytowany)
int random = GetRandomInt(1, 4);
if (random == 1)
{
	SetPlayerArms(client, "models/player/custom_player/zombie/crimsonhead/crimsonhead_arms.mdl");
	SetEntityModel(client, "models/player/custom_player/zombie/crimsonhead/crimsonhead.mdl");
	SetEntityGravity(client, 1.0);
	SetEntityHealth(client, 2000);
	SetEntPropFloat(client, Prop_Data, "m_flLaggedMovementValue", 1.0);
	PrintToChat(client, "Twoja Klasa To \x05Zombie!");
	CS_SetClientClanTag(client, "Zombie");
}
else if (random == 2)
{
	SetPlayerArms(client, "models/player/custom_player/zombie/mummy/mummy_arms.mdl");
	SetEntityModel(client, "models/player/custom_player/zombie/mummy/mummy.mdl");
	SetEntityGravity(client, 0.6);
	SetEntityHealth(client, 1500);
	SetEntPropFloat(client, Prop_Data, "m_flLaggedMovementValue", 1.0);
	PrintToChat(client, "Twoja Klasa To \x05Ghoul!");
	CS_SetClientClanTag(client, "Ghoul");
}
else if (random == 3)
{
	SetPlayerArms(client, "models/player/custom_player/zombie/revenant/revenant_arms.mdl");
	SetEntityModel(client, "models/player/custom_player/zombie/revenant/revenant_v2.mdl");
	SetEntityGravity(client, 1.1);
	SetEntityHealth(client, 3500);
	SetEntPropFloat(client, Prop_Data, "m_flLaggedMovementValue", 0.7);			
	PrintToChat(client, "Twoja Klasa To \x05Slasher!");
	CS_SetClientClanTag(client, "Slasher");
}
else if (random == 4)
{
	SetPlayerArms(client, "models/player/custom_player/zombie/romeo_zombie/romeo_zombie_arms.mdl");
	SetEntityModel(client, "models/player/custom_player/zombie/romeo_zombie/romeo_zombie.mdl");
	SetEntityGravity(client, 0.8);
	SetEntityHealth(client, 1000);
	SetEntPropFloat(client, Prop_Data, "m_flLaggedMovementValue", 2.0);
	PrintToChat(client, "Twoja Klasa To \x05Undead!");
	CS_SetClientClanTag(client, "Undead");
}

 

Edytowano przez live4net

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Lub możesz to zrobić w tablicach char, int, float. wtedy nie będziesz miał żadnych if'ów, przykład:

float grawitka[4] = {
1.0,
0.5,
1.2,
6.0
};

int random = GetRandomInt(0, 3);

SetEntityGravity(client, grawitka[random]);

 

  • Like 2

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
2 godziny temu, live4net napisał:
int random = GetRandomInt(1, 4);
if (random == 1)
{
	SetPlayerArms(client, "models/player/custom_player/zombie/crimsonhead/crimsonhead_arms.mdl");
	SetEntityModel(client, "models/player/custom_player/zombie/crimsonhead/crimsonhead.mdl");
	SetEntityGravity(client, 1.0);
	SetEntityHealth(client, 2000);
	SetEntPropFloat(client, Prop_Data, "m_flLaggedMovementValue", 1.0);
	PrintToChat(client, "Twoja Klasa To \x05Zombie!");
	CS_SetClientClanTag(client, "Zombie");
}
else if (random == 2)
{
	SetPlayerArms(client, "models/player/custom_player/zombie/mummy/mummy_arms.mdl");
	SetEntityModel(client, "models/player/custom_player/zombie/mummy/mummy.mdl");
	SetEntityGravity(client, 0.6);
	SetEntityHealth(client, 1500);
	SetEntPropFloat(client, Prop_Data, "m_flLaggedMovementValue", 1.0);
	PrintToChat(client, "Twoja Klasa To \x05Ghoul!");
	CS_SetClientClanTag(client, "Ghoul");
}
else if (random == 3)
{
	SetPlayerArms(client, "models/player/custom_player/zombie/revenant/revenant_arms.mdl");
	SetEntityModel(client, "models/player/custom_player/zombie/revenant/revenant_v2.mdl");
	SetEntityGravity(client, 1.1);
	SetEntityHealth(client, 3500);
	SetEntPropFloat(client, Prop_Data, "m_flLaggedMovementValue", 0.7);			
	PrintToChat(client, "Twoja Klasa To \x05Slasher!");
	CS_SetClientClanTag(client, "Slasher");
}
else if (random == 4)
{
	SetPlayerArms(client, "models/player/custom_player/zombie/romeo_zombie/romeo_zombie_arms.mdl");
	SetEntityModel(client, "models/player/custom_player/zombie/romeo_zombie/romeo_zombie.mdl");
	SetEntityGravity(client, 0.8);
	SetEntityHealth(client, 1000);
	SetEntPropFloat(client, Prop_Data, "m_flLaggedMovementValue", 2.0);
	PrintToChat(client, "Twoja Klasa To \x05Undead!");
	CS_SetClientClanTag(client, "Undead");
}

 

 

 

Jest tylko jeden problem, czy da się zrobić to w ten sposób, że będzie to losowane tylko raz przy respawnie, bo teraz aktualnie to po respie z 10 razy przeleci i zatrzyma się na jednym, a chce żeby to było odrazu w sensie osoba się respi i dostaje załóżmy klase Zombie a inna osoba, która się zrespi, np. klase Ghoul, w ten sposób chciałbym żeby to działało :D

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Jeśli dodasz to w evencie OnPlayerSpawn to tak właśnie będzie.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
Napisano (edytowany)
int x = GetRandomInt(0, 3);
switch(x) 
{
	case 0:
	{
		SetPlayerArms(client, "models/player/custom_player/zombie/crimsonhead/crimsonhead_arms.mdl");
		SetEntityModel(client, "models/player/custom_player/zombie/crimsonhead/crimsonhead.mdl");
		SetEntityGravity(client, 1.0);
		SetEntityHealth(client, 2000);
		SetEntPropFloat(client, Prop_Data, "m_flLaggedMovementValue", 1.0);
		PrintToChat(client, "Twoja Klasa To \x05Zombie!");
		CS_SetClientClanTag(client, "Zombie");
	}
	case 1:
	{
		SetPlayerArms(client, "models/player/custom_player/zombie/mummy/mummy_arms.mdl");
		SetEntityModel(client, "models/player/custom_player/zombie/mummy/mummy.mdl");
		SetEntityGravity(client, 0.6);
		SetEntityHealth(client, 1500);
		SetEntPropFloat(client, Prop_Data, "m_flLaggedMovementValue", 1.0);
		PrintToChat(client, "Twoja Klasa To \x05Ghoul!");
		CS_SetClientClanTag(client, "Ghoul");
	}
	case 2:
	{
		SetPlayerArms(client, "models/player/custom_player/zombie/revenant/revenant_arms.mdl");
		SetEntityModel(client, "models/player/custom_player/zombie/revenant/revenant_v2.mdl");
		SetEntityGravity(client, 1.1);
		SetEntityHealth(client, 3500);
		SetEntPropFloat(client, Prop_Data, "m_flLaggedMovementValue", 0.7);			
		PrintToChat(client, "Twoja Klasa To \x05Slasher!");
		CS_SetClientClanTag(client, "Slasher");
	}
	case 3:
	{
		SetPlayerArms(client, "models/player/custom_player/zombie/romeo_zombie/romeo_zombie_arms.mdl");
		SetEntityModel(client, "models/player/custom_player/zombie/romeo_zombie/romeo_zombie.mdl");
		SetEntityGravity(client, 0.8);
		SetEntityHealth(client, 1000);
		SetEntPropFloat(client, Prop_Data, "m_flLaggedMovementValue", 2.0);
		PrintToChat(client, "Twoja Klasa To \x05Undead!");
		CS_SetClientClanTag(client, "Undead");
	}
}

@live4net weź Ty się nie bierz za pisanie plugów xD 

Edytowano przez daffik
  • Like 1

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

 

1 godzinę temu, daffik napisał:

@live4net weź Ty się nie bierz za pisanie plugów xD 

 

Nie rozumiem o co Ci chodzi. Zaproponowałeś rozwiązanie inne, podobnie jak xBonio. Wszystkie rozwiązania są prawidłowe, wszystkie będą działać i wszystkie mają podobną wydajność. Nie ma jednej prawidłowej ścieżki - dróg do osiągnięcia celu zazwyczaj jest kilka i to od programisty zależy jak co sobie zapisze, żeby mu się wygodnie poruszało po swoim kodzie.

 

 

 

1 godzinę temu, daffik napisał:

O CHUJ, ŻE JAK?!

 

Jak już chcesz w taki sposób to bynajmniej przynajmniej pseudo techniku zainteresuj się case

 

Cieszę się przynajmniej, że pierwszą wersję posta zedytowałeś, bo była ona dość obraźliwa.

  • Like 3

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
2 minuty temu, live4net napisał:

 

 

Nie rozumiem o co Ci chodzi. Zaproponowałeś rozwiązanie inne, podobnie jak xBonio. Wszystkie rozwiązania są prawidłowe, wszystkie będą działać i wszystkie mają podobną wydajność. Nie ma jednej prawidłowej ścieżki - dróg do osiągnięcia celu zazwyczaj jest kilka i to od programisty zależy jak co sobie zapisze, żeby mu się wygodnie poruszało po swoim kodzie.

 

 

 

 

Cieszę się przynajmniej, że pierwszą wersję posta zedytowałeś, bo była ona dość obraźliwa.

 

Jak piszesz tylko trashcode to możesz pisać swoje ify ;]

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Podaj mi w takim razie argumenty, w czym casy są lepsze? Z źródłem skąd to masz, bo informacja, że @daffik stwierdził, że tylko pseudo technicy nie używają ifów do mnie nie trafia. Nie są one szybsze, nie zajmują mniej pamięci, za to zabierają więcej miejsca w kodzie.

 

A co do trashcodu, to polecam obejrzeć to:

 

 

 

  • Like 1

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
Napisano (edytowany)

Dokładnie, użycie if a case to dobrowolna decyzja i nie wpływa na wydajnosc, natomiast syntax sprzed 2 wojny światowej + non-threaded querys, które mogą tworzyć lagi to już faktycznie trashcode. Nie wiem skąd czerpiesz wiedzę i nawyki, ale jest to złe miejsce.

Edytowano przez camerdisco
  • Like 1

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
12 godzin temu, daffik napisał:
int x = GetRandomInt(0, 3);
switch(x) 
{
	case 0:
	{
		SetPlayerArms(client, "models/player/custom_player/zombie/crimsonhead/crimsonhead_arms.mdl");
		SetEntityModel(client, "models/player/custom_player/zombie/crimsonhead/crimsonhead.mdl");
		SetEntityGravity(client, 1.0);
		SetEntityHealth(client, 2000);
		SetEntPropFloat(client, Prop_Data, "m_flLaggedMovementValue", 1.0);
		PrintToChat(client, "Twoja Klasa To \x05Zombie!");
		CS_SetClientClanTag(client, "Zombie");
	}
	case 1:
	{
		SetPlayerArms(client, "models/player/custom_player/zombie/mummy/mummy_arms.mdl");
		SetEntityModel(client, "models/player/custom_player/zombie/mummy/mummy.mdl");
		SetEntityGravity(client, 0.6);
		SetEntityHealth(client, 1500);
		SetEntPropFloat(client, Prop_Data, "m_flLaggedMovementValue", 1.0);
		PrintToChat(client, "Twoja Klasa To \x05Ghoul!");
		CS_SetClientClanTag(client, "Ghoul");
	}
	case 2:
	{
		SetPlayerArms(client, "models/player/custom_player/zombie/revenant/revenant_arms.mdl");
		SetEntityModel(client, "models/player/custom_player/zombie/revenant/revenant_v2.mdl");
		SetEntityGravity(client, 1.1);
		SetEntityHealth(client, 3500);
		SetEntPropFloat(client, Prop_Data, "m_flLaggedMovementValue", 0.7);			
		PrintToChat(client, "Twoja Klasa To \x05Slasher!");
		CS_SetClientClanTag(client, "Slasher");
	}
	case 3:
	{
		SetPlayerArms(client, "models/player/custom_player/zombie/romeo_zombie/romeo_zombie_arms.mdl");
		SetEntityModel(client, "models/player/custom_player/zombie/romeo_zombie/romeo_zombie.mdl");
		SetEntityGravity(client, 0.8);
		SetEntityHealth(client, 1000);
		SetEntPropFloat(client, Prop_Data, "m_flLaggedMovementValue", 2.0);
		PrintToChat(client, "Twoja Klasa To \x05Undead!");
		CS_SetClientClanTag(client, "Undead");
	}
}

@live4net weź Ty się nie bierz za pisanie plugów xD 

łohohoho to ja się wypowiem możę 

 

switch z casem jest zazwyczaj MNIEJ OPTYMALNY niż if w takim przypadku; 

po pierwsze niszczy strukturalność kodu ( w przypadku C++  ) -> a jeśli już nie wykonuje o więcej operacji niż if; 

nie wiem jaka jest konstrukcja w sourcemodzie jednak mimo wszystko lepszym nawykiem zostaje if;
switcha wykorzystuje się w specjalistycznych przypadkach do unikania goto;

#gówno "busza" czekam na arguemnty za swichem :P 

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
3 godziny temu, mastah7991 napisał:

łohohoho to ja się wypowiem możę 

 

switch z casem jest zazwyczaj MNIEJ OPTYMALNY niż if w takim przypadku; 

po pierwsze niszczy strukturalność kodu ( w przypadku C++  ) -> a jeśli już nie wykonuje o więcej operacji niż if; 

nie wiem jaka jest konstrukcja w sourcemodzie jednak mimo wszystko lepszym nawykiem zostaje if;
switcha wykorzystuje się w specjalistycznych przypadkach do unikania goto;

#gówno "busza" czekam na arguemnty za swichem :P 

 

Switch daje przejrzystość kodu i nad tym co jest optymalniejsze można długo pisać ;] Zalezy od języka, ale zazwyczaj to kilka ms więc różnica na serwerze gry żadna.

Jeżeli miałbyś ponad 1k ifów lub caseów to wtedy jest różnica w tych 100ms ;]

Jak lubicie robic trashcode ktorego pozniej nikt nie ogarnie to  "robta jak chceta"

 

14 godzin temu, live4net napisał:

Podaj mi w takim razie argumenty, w czym casy są lepsze? Z źródłem skąd to masz, bo informacja, że @daffik stwierdził, że tylko pseudo technicy nie używają ifów do mnie nie trafia. Nie są one szybsze, nie zajmują mniej pamięci, za to zabierają więcej miejsca w kodzie.

 

A co do trashcodu, to polecam obejrzeć to:

 

 

 

Co do tego polecam doczytać pierwszą część posta:

Cytat

Robione na szybko, ale możesz spróbować.

Później przewinąć do góry:

 

Cytat

 

W wolnym czasie zrobię i wrzucę za free ale podaj na jakiej zasadzie ma tworzyć te win pod koniec mapy 

 


 

 

A później to

Cytat

To mój autorski - nie znajdziesz w necie

 

Podziel się tym swoim "autorskim" bo już i tak jest za free w necie ;] więc pośmiejemy się obydwoje. Widziałem jak wygląda plugin od csgotokens i katastrofa

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
22 minuty temu, daffik napisał:

Switch daje przejrzystość kodu i nad tym co jest optymalniejsze można długo pisać ;] Zalezy od języka, ale zazwyczaj to kilka ms więc różnica na serwerze gry żadna.

Jeżeli miałbyś ponad 1k ifów lub caseów to wtedy jest różnica w tych 100ms ;]

Jak lubicie robic trashcode ktorego pozniej nikt nie ogarnie to  "robta jak chceta"

 

a więc prosze o jezyk programowania w którym switch przy takim wykorzystaniu będzie optymalniejszy niż ściana ifów ( taka sama wydajnośc się nie liczy) 

dodatkowo w takich prostych przykładach omijanie optymalności jest karygodne, gdyż przy wiekszych projektów z tych Twoich milisekund zrobią się sekudny <- a to już strasznie dużo ;P 

 

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
19 godzin temu, daffik napisał:
int x = GetRandomInt(0, 3);
switch(x) 
{
	case 0:
	{
		SetPlayerArms(client, "models/player/custom_player/zombie/crimsonhead/crimsonhead_arms.mdl");
		SetEntityModel(client, "models/player/custom_player/zombie/crimsonhead/crimsonhead.mdl");
		SetEntityGravity(client, 1.0);
		SetEntityHealth(client, 2000);
		SetEntPropFloat(client, Prop_Data, "m_flLaggedMovementValue", 1.0);
		PrintToChat(client, "Twoja Klasa To \x05Zombie!");
		CS_SetClientClanTag(client, "Zombie");
	}
	case 1:
	{
		SetPlayerArms(client, "models/player/custom_player/zombie/mummy/mummy_arms.mdl");
		SetEntityModel(client, "models/player/custom_player/zombie/mummy/mummy.mdl");
		SetEntityGravity(client, 0.6);
		SetEntityHealth(client, 1500);
		SetEntPropFloat(client, Prop_Data, "m_flLaggedMovementValue", 1.0);
		PrintToChat(client, "Twoja Klasa To \x05Ghoul!");
		CS_SetClientClanTag(client, "Ghoul");
	}
	case 2:
	{
		SetPlayerArms(client, "models/player/custom_player/zombie/revenant/revenant_arms.mdl");
		SetEntityModel(client, "models/player/custom_player/zombie/revenant/revenant_v2.mdl");
		SetEntityGravity(client, 1.1);
		SetEntityHealth(client, 3500);
		SetEntPropFloat(client, Prop_Data, "m_flLaggedMovementValue", 0.7);			
		PrintToChat(client, "Twoja Klasa To \x05Slasher!");
		CS_SetClientClanTag(client, "Slasher");
	}
	case 3:
	{
		SetPlayerArms(client, "models/player/custom_player/zombie/romeo_zombie/romeo_zombie_arms.mdl");
		SetEntityModel(client, "models/player/custom_player/zombie/romeo_zombie/romeo_zombie.mdl");
		SetEntityGravity(client, 0.8);
		SetEntityHealth(client, 1000);
		SetEntPropFloat(client, Prop_Data, "m_flLaggedMovementValue", 2.0);
		PrintToChat(client, "Twoja Klasa To \x05Undead!");
		CS_SetClientClanTag(client, "Undead");
	}
}

@live4net weź Ty się nie bierz za pisanie plugów xD 

 

To działa jak powinno, dziękuje! :D

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
21 godzin temu, live4net napisał:

Nie ma jednej prawidłowej ścieżki - dróg do osiągnięcia celu zazwyczaj jest kilka i to od programisty zależy jak co sobie zapisze, żeby mu się wygodnie poruszało po swoim kodzie.

XD Tak Zelentem powiało :P 

  • Like 1

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Każdy sie przyjebal tych ifow i casow, a nikt chyba nie zwrócił uwagi na rozwiazanie Bonia, chyba najbardziej przejrzyste i poprawne (pomijając łączenie języka polskiego z angielskim xD).

Mozna to dodatkowo opakować w jakas odpowiednio nazwana funkcje (każde property, ktore ustawiamy osobno - zgodnie z zasadami SOLID). Nawet ścieżki do modeli mozna wjebac do tablicy, albo same ich nazwy, bo chyba mozna robic konkatenacje w sp?

ps. Serio, nie mieszajcie polskiego do kodu, chyba, ze w komentarzach xD

  • Thanks 1

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Utwórz konto lub zaloguj się, aby skomentować

Musisz być użytkownikiem, aby dodać komentarz

Utwórz konto

Zarejestruj nowe konto na forum. To jest łatwe!

Zarejestruj nowe konto

Zaloguj się

Masz już konto? Zaloguj się.

Zaloguj się


  • Kto przegląda   0 użytkowników

    Brak zalogowanych użytkowników przeglądających tę stronę.

  • Podobna zawartość

    • Przez Vinchit
      Siemka, znacie jakieś fajne dodatki (plugin, skrypt, itp) do Areny1v1 (Mulit1v1) :)
    • Przez Miral
      Witam, czy mógłby ktoś dodać mi do vipa wyglądy dla Ct z gry Team Fortress, informacje o vipie pod komendą !vip. Możliwe poprawki: Obecna wersja:
      #include <sourcemod> #include <sdktools> #include <cstrike> #include <sdkhooks> #include <scp> public Plugin:myinfo = { name = "VIP Generator", author = "mastah7991", description = "Automatycznie wygenerowany VIP", version = "1.0", url = "www.MyGo.pl" } public OnPluginStart() { HookEvent("player_spawn", Event_PlayerSpawn); HookEvent("player_death", Event_PlayerDeath); } public OnClientPutInServer(client) { if(IsValidPlayer(client)&&GetUserFlagBits(client)&(1<<ADMFLAG_RESERVATION)) { CS_SetClientClanTag(client, "[VIP]"); } } public Action:Event_PlayerSpawn(Handle:event, const String:name[], bool:dontBroadcast) { int client = GetClientOfUserId(GetEventInt(event, "attacker")); if(IsValidPlayer(client)&&GetUserFlagBits(client)&(1<<ADMFLAG_RESERVATION)) { SetEntProp(client, Prop_Send, "m_iAccount", GetEntProp(client, Prop_Send, "m_iAccount")+10); } } public Action:Event_PlayerDeath(Handle:event, const String:name[], bool:dontBroadcast) { int client = GetClientOfUserId(GetEventInt(event, "attacker")); bool headshot = GetEventBool(event, "headshot"); if(IsValidPlayer(client)&&GetUserFlagBits(client)&(1<<ADMFLAG_RESERVATION)) { SetEntityHealth(client, GetEntProp(client, Prop_Send, "m_iHealth")+15); if(headshot) SetEntityHealth(client, GetEntProp(client, Prop_Send, "m_iHealth")+30); if(GetEntProp(client, Prop_Send, "m_iHealth")>5000) SetEntityHealth(client, 5000); SetEntProp(client, Prop_Send, "m_iAccount", GetEntProp(client, Prop_Send, "m_iAccount")+20); } } public Action:OnChatMessage(&author, Handle:recipients, String:name[], String:message[]) { if(IsValidPlayer(author)&&GetUserFlagBits(author)&(1<<ADMFLAG_RESERVATION)) { Format(name, MAXLENGTH_NAME, "%s", name); new MaxMessageLength = MAXLENGTH_MESSAGE - strlen(name) - 5; Format(name, MaxMessageLength, " [VIP]%s",name); return Plugin_Changed; } return Plugin_Continue; } stock bool IsValidPlayer(client) { if(client >= 1 && client <= MaxClients && IsClientConnected(client) && !IsFakeClient(client) && IsClientInGame(client) ) return true; return false; }