MAGNET 5 1 Napisano 2 Sierpnia 2019 Multicolors do pobrania w załączniku! Multicolors UPDATED.rarHej! Skorzystałeś z linku lub pobrałeś załącznik? Uhonoruj naszą pracę poprzez rejestrację na forum i rośnij razem z nami! Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach
Zaku 1 Napisano 3 Sierpnia 2019 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. // Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach
MAGNET 2 Napisano 3 Sierpnia 2019 @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:) 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! 🙂 Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach
Zaku Napisano 3 Sierpnia 2019 (edytowane) @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... 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 3 Sierpnia 2019 przez Zaku Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach
Paweł Napisano 4 Sierpnia 2019 6 godzin temu, Zaku napisał: a właśnie, jak ustawić sprawdzanie flagi "Z"? if(GetUserFlagBits(client) & ADMFLAG_ROOT) { // Kod } Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach
MAGNET Napisano 4 Sierpnia 2019 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 Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach
MAGNET 1 Napisano 4 Sierpnia 2019 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 FormatHej! 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 🙂 Cytuj Przez MAGNET, 4 Sierpnia 2019 PS: i teraz funkcja GraczJestAdminem nie będzie potrzebna Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach
Zaku 1 Napisano 4 Sierpnia 2019 (edytowane) 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 4 Sierpnia 2019 przez Zaku Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach
Mesharsky Napisano 5 Sierpnia 2019 11 godzin temu, Zaku napisał: 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 Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach
MAGNET 1 Napisano 5 Sierpnia 2019 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]"); Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach
PepeKOZAK Napisano 19 Września 2020 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; } Cytuj Przez Paweł, 20 Września 2020 Dodaję kod w spoiler. Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach
MAGNET Napisano 19 Września 2020 Istnieje szansa, że masz wgrane dwa pluginy, które nadpisują czat Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach
PepeKOZAK Napisano 19 Września 2020 Chodzi mi o coś takiego D: Mam wgrany tylko jeden plugin. Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach
MAGNET Napisano 19 Września 2020 ¯\_(ツ)_/¯ 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ć Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach
PepeKOZAK Napisano 20 Września 2020 Gdy używam komendy na chacie drużynowym to się ona nie pojawia D: Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach
Paweł 1 Napisano 20 Września 2020 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; } Cytuj Przez MAGNET, 20 Września 2020 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
PepeKOZAK Napisano 20 Września 2020 Dzięki bardzo :D Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach