-
Content count
772 -
Posts on chatbox
760 -
Donations
4.63 PLN -
Joined
-
Last visited
-
Time Online
15d 3g 29m 39s
Community Reputation
339 IntellectualAbout grafi1337
Members
-
Rank
- Birthday 06/30/2006
About user
-
First name
Gracjan
-
Gender
Mężczyzna
-
From
Okolice Gdańska
-
Hobbies
Piłka nożna
-
Favourite server
Hide and Seek
Contact
- Steam
-
GOG
nie wiem
Recent Profile Visitors
3,536 profile views
-
Co 20 minut, jak mnie @ xKacperKoxPLxYT potrąci i odjedzie.
-
Gratuluje i życzę powodzenia 😄
-
xKacperKoxPLxYT started following grafi1337
-
Wypominam @ xKacperKoxPLxYT , że nie pomógł ani troche w wygranej.
-
Wyżywam się na @ xKacperKoxPLxYT
-
Zaraiając potęzne pieniądze z @ xKacperKoxPLxYT
-
1. Ulubione jedzenie twoje to? 2. Skąd nauczyłeś się pisać pluginy? 3. Często jesz fast foody, a może wcale? 4. Masz jakieś hobby? 5. Miałeś taki czas, że chciałeś zrezygnować z roli administratora sieci?
-
grafi1337 started following Plugin - Pętla for
-
Pętla for Pętla for będzie powtarzać pewne instrukcje, dopóki nie zostanie spełniony określony warunek, jeżeli chcesz pisać troche bardziej zaawansowane pluginy to powinnieneś chociaż troche wiedzieć jak można jej użyć, a przydać się taka pętla może, chociażby wtedy, gdy chcemy wyświetlać wiadomości osobom z np. konkretną flagą. Przykładowy plugin: Będzie on pozwalał graczowi pisać tylko i wyłącznie z osobami, które mają flage "a". By użyc komendy trzeba wpisać "sm_vipchat tutaj wpisz swoją wiadomość" Więc zacznijmy od dodania includów, które bedą nam potrzebne. #include <sourcemod> #include <multicolors> Biblioteka <multicolors> odpowiada za możliwość używania kolorów w taki sposób "CPrintToChat(client, " {lightred} WItaj"); zamiast "PrintToChat(client, " \x07 WItaj"); Skoro mamy już potrzebne nam include'y to możemy przejść do dalszej części pluginu. Jeżeli chcemy możemy dodać informacje na czym polega plugin oraz kto jest autorem pluginu. public Plugin myinfo = { name = "Nazwa pluginu", author = "Autor pluginu", description = "Opis pluginu", version = "Wersja pluginu", }; Teraz przechodzimy do zarejstrowania komendy dla osoby z flagą "a" na starcie pluginu. public void OnPluginStart() { RegAdminCmd("sm_vipchat", vipChat, ADMFLAG_RESERVATION); // RegAdminCmd - rejestruje komende dla osoby z podaną flagą, vipChat to callback, ADMFLAG_RESERVATION to flaga "a" - całość pozwala tylko osobie z flagą "a" użycia komendy "sm_vipchat" } Teraz zarejstrujemy co ma się wykonać, gdy ktoś wpisze "sm_vipchat". public Action vipChat(int client, int args) { char buffer[512] // tworzymy buffer z maksymalną ilością znaków, którą buffer może zachować i ("buffer" mozna zamienic na to co chcemy, czyli za "buffer" może być np. "text" GetCmdArgString(buffer, sizeof(buffer)) // Pobieramy wiadomość, który gracz napisał po "sm_vipchat" i przekazuje to do buffera. StripQuotes(buffer); // by pozbyć się cudzysłowii, które pojawiłyby się podczas pisania z innymi używamy StripQuotes, by je usuwał if (strlen(buffer) <= 1) return Plugin_Handled; // jeżeli cała wiadomość ma mniejszą lub równą ilość znaków 1 to w takim przypadku "return Plugin_Handled;" zatrzymuje akcje. if (buffer[0] == 'a' || buffer[0] == 'b') return Plugin_Handled; // jeżeli jako 1 słowo w wiadomości jest "a" lub "b" to "return Plugin_Handled;" przerywa akcje, znak "||" to "lub". Teraz tworzymy pętle, ktora bedzie po każdym graczu "przechodzić" i sprawdzać czy dana osoba ma taką flage jaką chcemy, jeżeli tak to wykonujemy akcje. for (int i = 1; i < MAXPLAYERS; i++) { // "i" to zmienna i możemy ja zmienić na co chcemy i ustawia odrazu przechodzenie od 1 gracza, 0 to serwer, zmienna "i" sprawdza wszystkim graczom to co jest poniżej, i++ dodaje się na końcu sprawdzonego warunku(tu. MAXPLAYERS) natomiast ++i dodaje się przy początku próby sprawdzanego warunku. if (!IsValidClient(i)) // jeżeli gracz nie jest połączony continue; // to przerywa akcje - wymagane, gdyż brak tej funkcji może czasami powodować crashe serwera else if (IsPlayerVIP(client) == IsPlayerVIP(i)) // jeżeli powyższy warunek nie jest prawdziwy to sprawdza czy gracz jest vipem i czy odbiorca również jest vipem, jeżeli tak to wykonuje akcje osobom z flagą "a" się akcja po między klamrami (tutaj. Wysłanie wiadomości) CPrintToChat(i, "[{lightred}VIP Chat{default}] {lightred}- {orange} %N: {yellow}%s", client, buffer); // client przechwytuje nick gracza i umieszcze je zamiast "%N" natomiast "buffer" w miejsce "%s" pokazuje tekst wpisany przez gracza. "buffer" jak już wczesniej wspomiałem przechwytuje tekst wpisany przez gracza, "client" było juz automatycznie zdefiniowane, gdy w handlerze podamy "int client" } return Plugin_Handled; } Teraz na sam koniec musimy utworzyć boole, które bedą przechowywać czy gracz jest połączony "IsValidClient(client)" oraz "IsPlayerVIP(client)" public bool IsPlayerVIP(int client) { if (GetUserFlagBits(client) & ADMFLAG_RESERVATION) // jeżeli gracz ma flage "a". return true; // jeżeli powyższy warunek jest prawdziwy to zwraca prawde. return false; // w przeciwnym wypadku zwraca fałsz } public bool IsValidClient(int client) { if (client >= 1 && client <= MaxClients && IsClientInGame(client)) // jeżeli gracz jest połączony. return true; // jeżeli powyższy warunek jest prawdziwy to zwraca prawde. return false; // w przeciwnym wypadku zwraca fałsz } Cały kod powinnien wyglądać mniej więcej tak. #include <sourcemod> #include <multicolors> public Plugin myinfo = { name = "[VIP Chat] Chat vipów", author = "Grafit", description = "Dodaje na serwer chat vip", version = "1.0", }; public void OnPluginStart() { RegAdminCmd("sm_vipchat", vipChat, ADMFLAG_RESERVATION); } public Action vipChat(int client, int args) { char buffer[512] GetCmdArgString(buffer, sizeof(buffer)) StripQuotes(buffer); if (strlen(buffer) <= 1) return Plugin_Handled; if (buffer[0] == 'a' || buffer[0] == 'b') return Plugin_Handled; for (int i = 1; i < MAXPLAYERS; i++) { if (!IsValidClient(i)) continue; else if (IsPlayerVIP(client) == IsPlayerVIP(i)) CPrintToChat(i, "[{lightred}VIP Chat{default}] {lightred}- {orange} %N: {yellow}%s", client, buffer); } return Plugin_Handled; } public bool IsPlayerVIP(int client) { if (GetUserFlagBits(client) & ADMFLAG_RESERVATION) return true; return false; } public bool IsValidClient(int client) { if (client >= 1 && client <= MaxClients && IsClientInGame(client)) return true; return false; } I o to koniec. W grze prezentuje się to tak: Link do include'a "multicolors": https://forums.alliedmods.net/showthread.php?t=247770 Spis flag: Legenda: Nazwa: // Flaga: // Opis: Liste flag wziąłem stąd --> https://go-code.pl/temat/70-flagi-sourcemod-opis/
-
śledz/losos
-
Mój typ: Ćwierćfinały: #1 - Pietrek 2 - 0 Its #2 - AdaX 2 - 0 Robot #3 - squall 2 - 1 Kathan #4 - P1x 2 - 1 NiN ♥ Półfinały: #5 - Pietrek 1 - 2 AdaX #6 - squall 2 - 1 P1x Mecz o trzecie miejsce: Pietrek 2 - 1 P1x Finał: #7 - squall 2 - 1 AdaX
-
ktory serwer najgorszy? lubisz ryby? lubisz swoje imie? twoja wymarzona praca? ciezko gra sie na serwerach spolecznosci jako kobieta?
-
grafi1337 started following Plebiscyt Listopad 2020
-
@ Bro_nek
-
ADMINISTRACJA 1. Najlepszy z zarządu Administracji (Właściciel, Administrator Sieci, Junior Admin, Moderator, Technik): @ Shadov 2. Najlepszy Redaktor: @ Inny 3. Najlepszy Grafik: @ NoName 4. Najlepszy opiekun serwera: @ BryleQ 5. Najlepszy Admin serwera: @ Mercedes 6. Najsurowszy Admin serwera: - SPOŁECZNOŚĆ 1. Najbardziej pomocny/a gracz/ka: @ xKacperKoxPLxYT 2. Najbardziej lubiana osoba: @ galbar 3. Najbardziej agresywny/a gracz/ka: @ To be fast 4. Najbardziej kulturalna osoba: @ Mercedes 5. Najbardziej wulgarna osoba: @ To be fast 6. Najbardziej odpowiedzialna osoba: - 7. Najmniej odpowiedzialna osoba: @ Bro_nek 8. Największy No-Lifer: - 9. Najbardziej kreatywna osoba: @ Scrash 10. Najbardziej niedoceniana osoba: @ B0mbel 11. Najbardziej rozgadana osoba: - 12. Osoba potrzebująca najwięcej uwagi:- 13. Największy spamer(chatbox): - 14. Największy prowokator: @ yoPoniacz 15. Największy leń: @ JustNikoś 16. Największy flirciarz: @ krulkamilek 17. Najzabawniejsza osoba: - 18. Osoba godna zaufania: @ NyuK 19. Najbardziej pracowita osoba: @ atroX 20. Najlepszy serwer: Oczywiscie ze hide and seek :DD
-
Kasjusz "DonKasjo" Życiński Win - Lose Marcin "El Testosteron" Najman Piotr "Szeli" Szeliga Win - Lose Piotr "Bestia" Piechowiak Zusje Astafiewa Win - Lose Dagmara Szewczyk Piotr Pająk Win - Lose Alan "Alanik" Kwieciński Michał "Sobota" Sobolewski Win - Lose Filip "Filipek" Marcinek Paweł "Tybori" Tyburski Lose - Win Gabriel "Arab" Al-Sulwi Amadeusz Roślik Win - Lose Maksymilian "Wiewiór" Wiewiórka Maciej "Szewcu" Szewczyk Win - Lose Gamou Fall Mariusz "Hejter" Słoński Lose - Win Patryk "Mortalcio" Baran Kacper Błoński Lose - Win Marcin Dubiel