Skocz do zawartości

Rekomendowane odpowiedzi

Czyść @MAGNET

Chciałem dodać opcję gdy Gracz jest vipem. Nie wiem czy idę dobrym tropem \/

Spoiler

#include <sourcemod>

#include <multicolors>

#include <cstrike>


 

// char C_Tag[][] = {"{default}", "{darkred}", "{green}", "{lightgreen}", "{red}", "{blue}", "{olive}", "{lime}", "{lightred}", "{purple}", "{grey}", "{yellow}", "{orange}", "{bluegrey}", "{lightblue}", "{darkblue}", "{grey2}", "{orchid}", "{lightred2}"};


 

public void OnPluginStart() {

RegConsoleCmd("say", ProcessChat);

RegConsoleCmd("say_team", ProcessChat_Team);

}


 

// GDY GRACZ JEST ADMINEM --------------------------------------------------------------------------------------------------------------------------------------------------------------------


 

public Action ProcessChat(int client, int args) {

char buffer[512];

GetCmdArgString(buffer, sizeof(buffer));

StripQuotes(buffer); // usunięcie "" z czatu

if (strlen(buffer) == 0) return Plugin_Handled; // jeśli wiadomośc jest pusta, nic nie zostanie wyświetlone

if (buffer[0] == '/' || buffer[0] == '!' || buffer[0] == '@') return Plugin_Handled;

 

CPrintToChatAll("%s%s$N{lightgreen} %s", GraczJestAdminem(client) ? "{green}ADMIN " : "", GetClientTeam(client) == CS_TEAM_CT ? "{lightblue}" : "{red}", client, buffer);

 

return Plugin_Handled;

}

 

public Action ProcessChat_Team(int client, int args) {

char buffer[512];

GetCmdArgString(buffer, sizeof(buffer));

StripQuotes(buffer); // usunięcie "" z czatu

if (strlen(buffer) == 0) return Plugin_Handled; // jeśli wiadomośc jest pusta, nic nie zostanie wyświetlone

if (buffer[0] == '/' || buffer[0] == '!' || buffer[0] == '@') return Plugin_Handled;

 

for (int i = 1; i < MAXPLAYERS; i++) {

if (IsValidClient(i) && GetClientTeam(i) == GetClientTeam(client))

CPrintToChat(i, "{purple}(team say) %s%s$N{lightgreen} %s", GraczJestAdminem(client) ? "{green}ADMIN " : "", GetClientTeam(client) == CS_TEAM_T ? "{red}" : "{blue}", client, buffer);

return Plugin_Handled;

}


 

bool GraczJestAdminem(int client) {

if (GetUserFlagBits(client) & ADMFLAG_BAN) return true

 

return false;

}

 

public bool IsValidClient(int client) {

if (client >= 1 && client <= MaxClients && IsClientInGame(client))

return true;

 

return false;

}

 

// GRY GRACZ JEST VIPEM ----------------------------------------------------------------------------------------------------------------------------------------------------------------------

 

public Action ProcessChat(int client, int args) {

char buffer[512];

GetCmdArgString(buffer, sizeof(buffer));

StripQuotes(buffer); // usunięcie "" z czatu

if (strlen(buffer) == 0) return Plugin_Handled; // jeśli wiadomośc jest pusta, nic nie zostanie wyświetlone

if (buffer[0] == '/' || buffer[0] == '!' || buffer[0] == '@') return Plugin_Handled;

 

CPrintToChatAll("%s%s$N{lightgreen} %s", GraczJestVipem(client) ? "{lightblue}VIP " : "", GetClientTeam(client) == CS_TEAM_CT ? "{orange}" : "{orange}", client, buffer);

 

return Plugin_Handled;

}

 

public Action ProcessChat_Team(int client, int args) {

char buffer[512];

GetCmdArgString(buffer, sizeof(buffer));

StripQuotes(buffer); // usunięcie "" z czatu

if (strlen(buffer) == 0) return Plugin_Handled; // jeśli wiadomośc jest pusta, nic nie zostanie wyświetlone

if (buffer[0] == '/' || buffer[0] == '!' || buffer[0] == '@') return Plugin_Handled;

 

for (int i = 1; i < MAXPLAYERS; i++) {

if (IsValidClient(i) && GetClientTeam(i) == GetClientTeam(client))

CPrintToChat(i, "{purple}(team say) %s%s$N{lightgreen} %s", GraczJestVipem(client) ? "{yellow}VIP " : "", GetClientTeam(client) == CS_TEAM_T ? "{orange}" : "{orange}", client, buffer);

}

 

return Plugin_Handled;

}



 

bool GraczJestVipem(int client) {

if (GetUserFlagBits(client) & ADMFLAG_CUSTOM1) return true;

 

return false;

}

 

public bool IsValidClient(int client) {

if (client >= 1 && client <= MaxClients && IsClientInGame(client))

return true;

 

return false;

}

 

Gdy chcę go skompilować wyskakują mi takie błędy:

Spoiler

// C:\Users\Zaku\Desktop\scripting\prefixy.sp(45) : error 017: undefined symbol "GraczJestAdminem"
// C:\Users\Zaku\Desktop\scripting\prefixy.sp(71) : error 017: undefined symbol "IsValidClient"
// C:\Users\Zaku\Desktop\scripting\prefixy.sp(73) : error 017: undefined symbol "GraczJestAdminem"
// C:\Users\Zaku\Desktop\scripting\prefixy.sp(82) : warning 219: local variable "GraczJestAdminem" shadows a variable at a preceding level
// C:\Users\Zaku\Desktop\scripting\prefixy.sp(82) : error 001: expected token: ";", but found "("
// C:\Users\Zaku\Desktop\scripting\prefixy.sp(82) : error 029: invalid expression, assumed zero
// C:\Users\Zaku\Desktop\scripting\prefixy.sp(82) : error 029: invalid expression, assumed zero
// C:\Users\Zaku\Desktop\scripting\prefixy.sp(82) : fatal error 190: too many error messages on one line
//
// Compilation aborted.
// 7 Errors.
//

 

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

@Zaku

 

Bardzo się cięszę, że podjąłeś się próby napisania prefixu dla VIPa 🙂 najważniejsze to zacząć, a wszystkiego nauczysz się z czasem. W Twoim kodzie istnieje jedna zasadnicza nieścisłość - nazwy funkcji muszą być unikatowe - oznacza to, że nie możesz w jednym pluginie mieć dwóch funkcji, które nazywają się ProcessChat. Muszą mieć one dwie różne nazwy. Ponadto, jeśli chciałbyś implementować prefix, który będzie istniał zarówno dla VIPa, jak i admina, to nie ma sensu rozbijać tego na dwie funkcje - wszystko można załatwić w jednej i tej samej 😉

 

Najprościej to zobrazować, biorąc pod lupę funkcję ProcessChat:

public Action ProcessChat(int client, int args) {
	char buffer[512];
	GetCmdArgString(buffer, sizeof(buffer));
	StripQuotes(buffer);
	if (strlen(buffer) == 0)	return Plugin_Handled;
	if (buffer[0] == '/' || buffer[0] == '!' || buffer[0] == '@')	return Plugin_Handled;

	CPrintToChatAll("%s%s%N{default}: %s", GraczJestAdminem(client) ? "{green}ADMIN " : "", GetClientTeam(client) == CS_TEAM_T ? "{lightred}" : "{lightblue}", client, buffer);

	return Plugin_Handled;
}

(Nawiasem mówiąc, zachęcam do korzystania ze znacznika do kodu:)

Bez tytułu.png

 

Zasadnicze pytanie brzmi: co, jeśli gracz jest zarówno adminem jak i VIPem? Czy wówczas maja być wyświetlane obydwa prefixy? Na tę chwilę założę, że tak, bo jest to prostsza wersja, ale gdybyś chciał trochę przykombinować daj mi znać 😉

 

Jak widzę w kodzie, słusznie zauważyłeś, że trzeba stworzyć funkcję do sprawdzania, czy gracz jest VIPem. Napisałeś ją w poprawny sposób i właśnie jej możemy teraz użyć. Po modyfikcji nasza funkcja będzie wyglądała następująco:

 

public Action ProcessChat(int client, int args) {
	char buffer[512];
	GetCmdArgString(buffer, sizeof(buffer));
	StripQuotes(buffer);
	if (strlen(buffer) == 0)	return Plugin_Handled;
	if (buffer[0] == '/' || buffer[0] == '!' || buffer[0] == '@')	return Plugin_Handled;

	CPrintToChatAll("%s%s%s%N{default}: %s", GraczJestAdminem(client) ? "{green}ADMIN " : "", GraczJestVipem(client) ? "{green}VIP " : "", GetClientTeam(client) == CS_TEAM_T ? "{lightred}" : "{lightblue}", client, buffer);

	return Plugin_Handled;
}

jak widzisz, prefix od vipa umieściłem w tym samym CPrintToChat'cie. Dobór kolorystyki pozostawiam Tobie. Teraz pozostaje zaimplementować to samo w ProcessChat_Team.

 

Mam nadzieję, że nie zrobiłem z tego zbyt długiego wywodu i wszystko z tego wywnioskowałeś. W razie czego - pisz śmiało. Dobra robota! 🙂

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

@MAGNET

 

Dodałem dodatkowo na właściciela. Z normalnym czatem działa, ale jeśli zaczynam pisać na team sayu, to mam tak jak niżej na screenie...

blad.JPG.c3ac5f035334745f8550d5ca1716fc93.JPG

 

public Action ProcessChat_Team(int client, int args) {
    char buffer[512];
    GetCmdArgString(buffer, sizeof(buffer));
    StripQuotes(buffer); // usunięcie "" z czatu
        if (strlen(buffer) == 0) return Plugin_Handled; // jeśli wiadomośc jest pusta, nic nie zostanie wyświetlone
        if (buffer[0] == '/' || buffer[0] == '!' || buffer[0] == '@') return Plugin_Handled;
            for (int i = 1; i < MAXPLAYERS; i++) {
                if (IsValidClient(i) && GetClientTeam(i) == GetClientTeam(client))
                    CPrintToChat(i, "{purple}(team say) %s%s%s%s$N{lightgreen} %s", GraczJestAdminem(client) ? "{green}ADMIN " : "", GraczJestVipem(client) ? "{orange}VIP " : "", GraczJestWlascicielem(client) ? "{red}Wlasciciel " : "", GetClientTeam(client) == CS_TEAM_T ? "{lightred}" : "{lightblue}", client, buffer);
            }
            

return Plugin_Handled;

}

Szukam szukam i nie mogę znaleźć co jest nie tak 😕

 

@edit

 

a właśnie, jak ustawić sprawdzanie flagi "Z"? Można wgl tak ustawić bool'a?

 

@edit2

dobra znalazłem, użyłem $N zamiast %N ehh...

Edytowane przez Zaku

Udostępnij tę odpowiedź


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

a właśnie, jak ustawić sprawdzanie flagi "Z"?

if(GetUserFlagBits(client) & ADMFLAG_ROOT)
{
	// Kod
}

 

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Mała dygresja - flaga root powinna działać tak, że magicznie przyznaje wszystkie przywileje. Tyle tylko, że...to tak nie działa.

 

Posiadając flagę root oczywiście możesz korzystać z wszystkich możliwości admina, to fakt. Niestety, prawie żaden plugin napisany przez społeczność nie uwzględnia faktu, że root to flaga jak każda inna i nią też trzeba uwzględniać przy pisaniu kodu, aby stała się pełnoprawną flagą ROOT. Nie ma tutaj żadnej magii - to normalne pole jak każde inne

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Przygotowałem również rozwiązanie, które przydziela tylko po jednym prefixie

Całość jest konfigurowana z poziomu tych dwóch tablic:

char prefix[][] = {
	"{lightred}[Właściciel]",
	"{lightgreen}[Admin]",
	"{lime}[VIP]"
};

int flaga[] = {
	ADMFLAG_ROOT,
	ADMFLAG_BAN,
	ADMFLAG_CUSTOM1
}

 

Właściciel ma przyporządkowaną flagę ROOT, admin BAN i tak dalej...jeśli chcesz dodać jakieś swoje prefixy - zrób to właśnie tutaj, dodając kolejną pozycję w obydwu tablicach.

Zasada działania jest taka, że "Właściciel" ma przyporządkowany największy priorytet i jeśli okaże się, że dany gracz ma flagę ROOT, to kolejne pola w tych tablicach nie będą sprawdzane. Jeśli gracz ma wszystkie flagi (root, ban i custom), to wyświetlanym prefixem będzie właściciel, natomiast osoba z BAN i CUSTOM1 będzie miała "admin". Odpowiada za to ten kod:

char prefixBuffer[64];
Format(prefixBuffer, sizeof(prefixBuffer), "");

for (int i = 0; i < sizeof(prefix); i++) {
  if (GetUserFlagBits(client) & flaga[i]) {
    Format(prefixBuffer, sizeof(prefixBuffer), "%s", prefix[i]);
    break;
  }

}

Funkcja Format
Hej! Skorzystałeś z linku lub pobrałeś załącznik? Uhonoruj naszą pracę poprzez rejestrację na forum i rośnij razem z nami!
działa tak, jakbyś "pisał do stringa" - a więc to, co zazwyczaj wypisywaliśmy w PrintToChat może być użyte do zamieszczenia jakiejś informacji w stringu.

Może się okazać, że gracz nie będzie miał żadnej flagi i z tego powodu istnieje ta druga linijka - w razie czego, string jest ustawiany na pusty.

Następnie ecę tutaj pętlą od 0 do ilości prefixów (określonej przez rozmiar tablicy za pomocą sizeof) i sprawdzam po kolei flagi gracza. Jeśli trafię na taką, którą ma gracz - przypisuję prefix do stringa i zamykam pętlę. A później w Print'cie robię po prostu tak:

CPrintToChatAll("%s%s%N{default}: %s", prefixBuffer.......

 

Całość:

 

Spoiler
#include <sourcemod>
#include <multicolors>
#include <cstrike>

// CS_TEAM_T
// CS_TEAM_CT


//{"{default}", "{darkred}", "{green}", "{lightgreen}", "{red}", "{blue}", "{olive}", "{lime}", "{lightred}", "{purple}", "{grey}", "{yellow}", "{orange}", "{bluegrey}", "{lightblue}", "{darkblue}", "{grey2}", "{orchid}", "{lightred2}"};

char prefix[][] = {
	"{lightred}[Właściciel]",
	"{lightgreen}[Admin]",
	"{lime}[VIP]"
};

int flaga[] = {
	ADMFLAG_ROOT,
	ADMFLAG_BAN,
	ADMFLAG_CUSTOM1
}

public void OnPluginStart() {
	RegConsoleCmd("say", ProcessChat);
	RegConsoleCmd("say_team", ProcessChat_Team);
}

public Action ProcessChat(int client, int args) {
	char buffer[512];
	GetCmdArgString(buffer, sizeof(buffer));
	StripQuotes(buffer);
	if (strlen(buffer) == 0)	return Plugin_Handled;
	if (buffer[0] == '/' || buffer[0] == '!' || buffer[0] == '@')	return Plugin_Handled;

	char prefixBuffer[64];
	Format(prefixBuffer, sizeof(prefixBuffer), "");

	for (int i = 0; i < sizeof(prefix); i++) {
		if (GetUserFlagBits(client) & flaga[i]) {
			Format(prefixBuffer, sizeof(prefixBuffer), "%s", prefix[i]);
			break;
		}

	}

	CPrintToChatAll("%s%s%N{default}: %s", prefixBuffer, GetClientTeam(client) == CS_TEAM_T ? "{lightred}" : "{lightblue}", client, buffer);

	return Plugin_Handled;
}

public Action ProcessChat_Team(int client, int args) {
	char buffer[512];
	GetCmdArgString(buffer, sizeof(buffer));
	StripQuotes(buffer);
	if (strlen(buffer) == 0)	return Plugin_Handled;
	if (buffer[0] == '/' || buffer[0] == '!' || buffer[0] == '@')	return Plugin_Handled;

	for (int i = 1; i < MAXPLAYERS; i++) {
		if (IsValidClient(i) && GetClientTeam(i) == GetClientTeam(client))
			CPrintToChat(i, "{orchid}(team say) %s%s%N{default}: %s", GraczJestAdminem(client) ? "{green}ADMIN " : "", GetClientTeam(client) == CS_TEAM_T ? "{lightred}" : "{lightblue}", client, buffer);

	}

	return Plugin_Handled;
}

bool GraczJestAdminem(int client) {
	if (GetUserFlagBits(client) & ADMFLAG_BAN)	return true;

	return false;
}

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

  return false;
}

 

 

 

Zostawiłem Ci tylko drobne zadanie zaimplementowania tych prefixów w czat teamsay'owy. Powodzenia 🙂

Przez MAGNET,

PS: i teraz funkcja GraczJestAdminem nie będzie potrzebna

Udostępnij tę odpowiedź


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

prefix.JPG.2d04d73d77df70de5728c9ea0e270001.JPG

 

Jest moc ^_^

 

 

@edit

@MAGNET - aż zamęczę Cię pytaniami 😄

 

Próbuję ogarnąć tag dla zwykłego gracza, takiego bez flag. Idę tropem if/else:

 

else (GetUserFlagBits(client) == 0)

Nie wiem czy aby na pewno dobrze, ale nie mam pomysłu, jak zrobić warunek, że gracz nie posiada flagi. Starałem się zrobić dodatkowy char graczBuffer[64]. Mógłbyś tylko nakierować w jaką stronę iść? Nie chcę gotowca, tylko wskazówki 😄

Edytowane przez Zaku

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach
11 godzin temu, Zaku napisał:

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

 

Jest moc ^_^

 

 

@edit

@MAGNET - aż zamęczę Cię pytaniami 😄

 

Próbuję ogarnąć tag dla zwykłego gracza, takiego bez flag. Idę tropem if/else:

 

else (GetUserFlagBits(client) == 0)

Nie wiem czy aby na pewno dobrze, ale nie mam pomysłu, jak zrobić warunek, że gracz nie posiada flagi. Starałem się zrobić dodatkowy char graczBuffer[64]. Mógłbyś tylko nakierować w jaką stronę iść? Nie chcę gotowca, tylko wskazówki 😄

Wystarczy Ci samo is valid client. 

Nie musisz definiować że grasz nie ma flagi bo domyślnie nie ma. 

 

Validacja klienta wystarczy 

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Jeżeli chcesz, aby każdy gracz miał domyślnie jakiś prefix, to wystarczy zrobić to tutaj:

char prefixBuffer[64];
Format(prefixBuffer, sizeof(prefixBuffer), "USTAW SOBIE PREFIX TUTAJ np. {orange}[gracz]");

 

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Mam taki problem D: Wysyła mi dwie wiadomości na chacie do swojego teamu.

Spoiler
#include <sourcemod>
#include <cstrike>
#include <colors_csgo>

/* << Define >> */

/* << Pragma >> */
#pragma semicolon 1
#pragma tabsize 0

/* << Macro >> */
	
/* << ConVary >> */

/* << Inty >> */
int flaga[] = {
	ADMFLAG_ROOT,
	ADMFLAG_GENERIC,
	ADMFLAG_CUSTOM1
};

/* << Chary >> */
char prefix[][] = {
	"{lightred}[Właściciel]",
	"{lightgreen}[Admin]",
	"{lime}[VIP]"
};

/* << Boole >> */

public void OnPluginStart() {
	RegConsoleCmd("say", ProcessChat);
	RegConsoleCmd("say_team", ProcessChat_Team);
}

public Action ProcessChat(int client, int args) {
	char buffer[512];
	GetCmdArgString(buffer, sizeof(buffer));
	StripQuotes(buffer);
	if (strlen(buffer) == 0)	return Plugin_Handled;
	if (buffer[0] == '/' || buffer[0] == '!' || buffer[0] == '@')	return Plugin_Handled;

	char prefixBuffer[64];
	Format(prefixBuffer, sizeof(prefixBuffer), "");

	for (int i = 0; i < sizeof(prefix); i++) {
		if (GetUserFlagBits(client) & flaga[i]) {
			Format(prefixBuffer, sizeof(prefixBuffer), "%s", prefix[i]);
			break;
		}

	}

	CPrintToChatAll("%s %s%N{default} : %s", prefixBuffer, GetClientTeam(client) == CS_TEAM_T ? "{yellow}" : "{lightblue}", client, buffer);

	return Plugin_Handled;
}

public Action ProcessChat_Team(int client, int args) {
	char buffer[512];
	GetCmdArgString(buffer, sizeof(buffer));
	StripQuotes(buffer);
	if (strlen(buffer) == 0)	return Plugin_Handled;
	if (buffer[0] == '/' || buffer[0] == '!' || buffer[0] == '@')	return Plugin_Handled;

	char prefixBuffer[64];
	Format(prefixBuffer, sizeof(prefixBuffer), "");

	for (int a = 1; a < MAXPLAYERS; a++) {
		if (IsValidClient(a) && GetClientTeam(a) == GetClientTeam(client))
			
			for (int i = 0; i < sizeof(prefix); i++) {
				if (GetUserFlagBits(client) & flaga[i]) {
				Format(prefixBuffer, sizeof(prefixBuffer), "%s", prefix[i]);
				break;
		}

	}

		CPrintToChat(a, "{orchid}(team say) %s %s%N{default} : %s", prefixBuffer, GetClientTeam(client) == CS_TEAM_T ? "{yellow}" : "{lightblue}", client, buffer);
	}

	return Plugin_Handled;
}

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

  return false;
}

 

 

Przez Paweł,

Dodaję kod w spoiler.

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Istnieje szansa, że masz wgrane dwa pluginy, które nadpisują czat

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

¯\_(ツ)_/¯

kiepska pomoc z mojej strony, ale w sumie nie wiem dlaczego to sie tak dubluje, zwłaszacza że poprawnie zwracasz Plugin_Handled;

 a co, jeśli użyjesz jakiejś komendy (np. !admin, !razdwatrzy) w teamowym czacie? Teoretycznie wiadomość też powinna się pojawić

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Proszę bardzo, wystarczyło dodać jedną linijkę w kodzie.

Spoiler
#include <sourcemod>
#include <cstrike>
#include <multicolors>

/* << Define >> */

/* << Pragma >> */
#pragma semicolon 1
#pragma tabsize 0

/* << Macro >> */

/* << ConVary >> */

/* << Inty >> */
int flaga[] =  {
	ADMFLAG_ROOT, 
	ADMFLAG_GENERIC, 
	ADMFLAG_CUSTOM1
};

/* << Chary >> */
char prefix[][] =  {
	"{lightred}[Właściciel]", 
	"{lightgreen}[Admin]", 
	"{lime}[VIP]"
};

/* << Boole >> */

public void OnPluginStart() {
	RegConsoleCmd("say", ProcessChat);
	RegConsoleCmd("say_team", ProcessChat_Team);
}

public Action ProcessChat(int client, int args) {
	char buffer[512];
	GetCmdArgString(buffer, sizeof(buffer));
	StripQuotes(buffer);
	if (strlen(buffer) == 0)return Plugin_Handled;
	if (buffer[0] == '/' || buffer[0] == '!' || buffer[0] == '@')return Plugin_Handled;
	
	char prefixBuffer[64];
	Format(prefixBuffer, sizeof(prefixBuffer), "");
	
	for (int i = 0; i < sizeof(prefix); i++) {
		if (GetUserFlagBits(client) & flaga[i]) {
			Format(prefixBuffer, sizeof(prefixBuffer), "%s", prefix[i]);
			break;
		}
		
	}
	
	CPrintToChatAll("%s %s%N{default} : %s", prefixBuffer, GetClientTeam(client) == CS_TEAM_T ? "{yellow}" : "{lightblue}", client, buffer);
	
	return Plugin_Handled;
}

public Action ProcessChat_Team(int client, int args) {
	char buffer[512];
	GetCmdArgString(buffer, sizeof(buffer));
	StripQuotes(buffer);
	if (strlen(buffer) == 0)return Plugin_Handled;
	if (buffer[0] == '/' || buffer[0] == '!' || buffer[0] == '@')return Plugin_Handled;
	
	char prefixBuffer[64];
	Format(prefixBuffer, sizeof(prefixBuffer), "");
	
	for (int a = 1; a < MAXPLAYERS; a++) {
		if (IsValidClient(a) && GetClientTeam(a) == GetClientTeam(client))
			
		for (int i = 0; i < sizeof(prefix); i++) {
			if (GetUserFlagBits(client) & flaga[i]) {
				Format(prefixBuffer, sizeof(prefixBuffer), "%s", prefix[i]);
				break;
			}
			
		}
		
		CPrintToChat(a, "{orchid}(team say) %s %s%N{default} : %s", prefixBuffer, GetClientTeam(client) == CS_TEAM_T ? "{yellow}" : "{lightblue}", client, buffer);
		return Plugin_Handled;
	}
	
	return Plugin_Handled;
}

public bool IsValidClient(int client) {
	if (client >= 1 && client <= MaxClients && IsClientInGame(client))
		return true;
	
	return false;
} 

 

image.png.1d88fb686c2ac7bc282060352feca317.png

Przez MAGNET,

dokładnie o tym samym myślałem, ale tak sie patrze na to...przecież i tak kod w końcu natknie sie na return Plugin_Handled

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ę...