Jump to content

Nasze Serwery

ID Gra MOD Monitoring IP Serwera GameTracker HLTV Dołącz Sklep
1 DEATHMATCH 145.239.236.136:27015
2 ONLY AWP 193.33.176.67:27145
3 SURF EASY 193.33.176.43:27015
4 SURF HARD 193.33.176.66:27035
5 5VS5 51.75.34.69:27015
6 5VS5 #2 54.38.143.81:27015
7 3MAPS 145.239.18.200:27030
8 ONLY DD2 54.38.49.144:27015
9 PAINTBALL 54.37.133.170:27015
10 TEAMSPEAK 3 ts3.ganjaskill.eu

Charlie W.

Właściciel serwera

Reputation Activity

  1. Upvote
    Charlie W. got a reaction from Golab in [PORADNIK] SourceMod czyli SERWEROWANIE OD POSTAW część. 1   
    Cześć wszystkim, dziś postanowiłem stworzyć dla was mam nadzieje dość prostą a zarazem użyteczną serie poradników dotyczących SourceMod'a, Serwerów CS:GO jak i samego programowania w SourcePawn'ie. Tym poradnikiem chciałbym zachęcić was do pracy nad serwerami która nie skupia się jedynie na tym jak rozkręcić sam serwer ale również nad tym jak go stworzyć i co należy zrobić aby wszystko było w jak najlepszym porządku. Serię postaram się głównie opisywać choć czasami możliwe jest że będę potrzebował coś nagrać - aby ułatwić pokazanie danej rzeczy. Jeżeli jednak ktoś będzie potrzebował w pełni zobaczyć jak daną rzecz się robi mogę nagrać filmik z wytłumaczeniem danego elementu. Całą serie zaplanowałem w pewien określony sposób i wraz z moim czasem wolnym będę opracowywać kolejne punkty z tej serii (zazwyczaj będzie to weekend, myślę że około dwóch części w jeden weekend).
    Plan ogólny:
    O Sobie oraz SourceModzie - podstawy tj. instalacja oraz konfiguracja. Inne dodatkowe wymagania. <-- Temat dzisiejszej lekcji Środowisko do programowania. Zmienne, Instrukcje Warunkowe oraz Pętle - element każdego języka programowania. Kilka słów o API czyli dokumentacji SourceMod'a. Wprowadzenie do samego SourceMod'a: dodatkowe zmienne, "obiektowość" SourceMod'a, jak działają pluginy tj. skąd biorą się dane akcje. SDKhooks czyli eventy na których możemy bardzo, bardzo dużo zdziałać. Timery oraz jak i do czego ich używamy. Praca z Bazą danych czyli MySql. Tworzenie menu, jak to w sumie działa? Console Variables czyli cvar'y, ich zmiany oraz wychwytywanie danej komendy. Tłumaczenia, jak działają, po co są, czy warto? Współpraca wielu pluginów na raz czyli jak tworzyć Native'y oraz do czego służą. Współpraca wielu pluginów część 2, czyli Forwardy oraz ich możliwości. Podsumowanie. Może zacznę krótko od samego Siebie. Nazywam się Raman lub szerzej znany jako Charlie, zaocznie studiuje Informatykę o hobbistycznej specjalizacji: "Inżynieria bezpieczeństwa systemów informatycznych". W samym tygodniu pracuje jako Python Developer gdzie pracuje nad systemami dotyczącymi zażądania przedsiębiorstwem. Hobbistycznie programuje od paru ładnych lat w językach takich jak: c++ (podobno), c# oraz właśnie Python. Samym programowaniem w SourceModzie zajmuje się od około 2 lat kiedy zostałem Opiekunem 5vs5 który aktualnie prowadzę wraz z @dbk który zajmuje się "marketingiem" zarządzaniem, gdzie ja wraz z @Bluu robimy za programistów oraz administratorów tych serwerów.
    Co warto wiedzieć? Co trzeba wiedzieć? Ciężko powiedzieć w gruncie rzeczy, mimo wszystko:
    posiadać podstawowe umiejętności rozumienia logiki matematycznej znajomość jakiegoś z języków programowania np. c++ (opcjonalne) znajomość języka angielskiego dużo chęci (ważne ^^) Przejdźmy teraz do samego SourceMod'a. Nie będziemy wgłębiali się tutaj jak on działa, kto go stworzył, w jakim języku itd. Skupimy się tutaj na podstawach oraz podstawowych informacjach dotyczących samego SourceMod'a oraz jego konfiguracji. SourceMod to modyfikacja która pozwala nam włączać oraz wyłączać napisane przez nas, inne osoby lub twórców SourceMod'a pluginy które pomagają nam w zarządzaniu serwerem. Tyle. Na prawdę. To cała potrzebna wiedza o tym czym to coś jest .
    Proces instalacji SourceMod'a. Część ta jest przeznaczona dla osób które chcą dowiedzieć się jak zrobić to ręcznie - większość hostingów posiada moduł instalacyjny modyfikacji z którego poziomu możemy zainstalować SourceMod + MetaMod w wersjach które poprawnie działają aktualnie na serwerze - tak, to dość ważne ponieważ aktualizacja CS:GO może spowodować że cały SourceMod nie będzie działać - wtedy niestety trzeba czekać aż Devy SourceMod'a napiszą odpowiednie poprawki - zwykle jest to wykonywane do kilku godzin po aktualizacji.
    Zacznijmy jednak cały proces od początku. Musimy udać się na dwie strony:
    SourceMod MetaMod na jednej jak i drugiej stronie udajemy się do zakładki Stable Builds i pobieramy najnowszą wersję dla wybranego systemu operacyjnego - ważna informacja! Na każdym hostingu serwerów online, systemem operacyjnym jest LINUX! Także pamiętajcie aby wgrywając to na serwer który kupiliśmy na hostingu pobierać wersje dla Linuxa!
    Kiedy pobierzemy oraz rozpakujemy pobrane pliki musimy zalogować się na nasz serwer poprzez klient'a FTP (zalecane) lub Edytor Plików zapewniony przez hosting. Ja używam FlieZill'i jednak to jakiego klienta używamy jest osobistą preferencją. W zależności od hostingu miejsce do którego zalogujemy się w FTP może różnie wyglądać dlatego też postanowiłem nie wstawiać żadnych zrzutów ekranu z tej części ponieważ może być to błędnie odebrane. Wracając jednak do instalacji: kiedy znajdujemy się już na FTP musimy udać się do folderu "csgo", powinien mniej/więcej wyglądać o tak:

    Kiedy znajdujemy się w tym miejscu, wgrywamy (kolejność w gruncie rzeczy nie ma znaczenia jednak jak kto woli) najpierw pliki MetaMod'a następnie SourceMod'a. Po wgraniu plików, zauważalną różnicą w folderze "csgo" będzie dojście nowego katalogu o nazwie: "addons" - jest to katalog w którym znajdują się modyfikacje do CS:GO. Zawartość tego folderu powinna wyglądać mniej więcej tak:

    Sam MetaMod zbytnio nas nie interesuje, interesujemy się głównie SourceMod'em - przejdźmy teraz do weryfikacji czy SourceMod działa poprawnie - udajemy się do panelu w wybranym przez nas hostingu, włączamy serwer - odczekujemy kilka chwil aż się w pełni włączy i udajemy się do konsoli. W konsoli wpisujemy: "meta list" - potwierdzi to działanie MetaMod'a (jest on wymagany do poprawnego działania SourceMod'a), jeżeli SourceMod znajdzie się na liście znaczy że MetaMod go wykrywa oraz sam SourceMod działa - w innym wypadku nie byłoby go na liście lub występowałby Error. Dla potwierdzenia można sprawdzić jeszcze jedną komendę taką jak: sm plugins list - wypisze to listę pluginów SourceMod'a która aktualnie działa na serwerze (są to pluginy podstawowe):


    Tadam. Skończone. Proces trwał około 5min, automatyczny instalator zrobi to kilka razy szybciej ale co tam. Zajmijmy się jeszcze przez chwilę tym co doszło nam na serwer w czasie instalacji SourceMod'a. Jak możecie zauważyć folder do którego rozpakowaliśmy paczkę zawierającą SourceMod'a posiada dwa foldery:
    addons cfg na tym drugim aktualnie się skupimy. Kiedy w niego wejdziemy zauważymy kolejny folder o nazwie "sourcemod" - w tym folderze właśnie znajdować będą się praktycznie wszystkie pliki konfiguracyjne pluginów (mogą zdarzyć się wyjątki, o tym powiem później) jednak jeżeli dany plugin posiada ConVar'y czyli komendy konfiguracyjne to właśnie tutaj automatycznie generować będą się pliki które będą odczytywane podczas ładowania pluginów oraz wartości tych komend będą ustawiane. Znajduje się też tutaj plik konfiguracyjny samego SourceMod'a czyli: sourcemod.cfg - w nim znajdują się wszystkie komendy konfiguracyjne podstawowego SourceMod'a np.
    // Specifies how admin activity should be relayed to users. Add up the values // below to get the functionality you want. // 1: Show admin activity to non-admins anonymously. // 2: If 1 is specified, admin names will be shown. // 4: Show admin activity to admins anonymously. // 8: If 4 is specified, admin names will be shown. // 16: Always show admin names to root users. // -- // Default: 13 (1+4+8) sm_show_activity 13 jest to ustawienie pokazujące aktywność adminów. Pierwotnie wartość ta ustawiona jest na 13 czyli: zwykły gracz widzi aktywność admina choć nie widzi jego nicku, inny admin widzi aktywność admina oraz widzi jego nick. Dość proste. Jednak nie tym mamy się tutaj zajmować - tutaj właśnie znajdują się takie ustawienia. Można hobbistycznie zapoznać się z tym plikiem. W tym folderze to wszystko.
    Pierwszym folderem o którym wcześniej wspominałem jest "addons". W środku znajduje się taki folder jak "sourcemod", po wejściu w niego ukazuje się nam kilka innych folderów. Pominę w tym miejscu SS'a, od ręki wypiszę oraz opowiem czym są dane foldery i czy warto się aktualnie na nich skupiać:
    bin - zawiera pliki bibliotek SourceMod'a do danych gier, folderu nie ruszać - generalnie zlać. configs - zawiera pliki konfiguracyjne SourceMod'a, niektórych pluginów czy dane jak np. konfiguracje adminów, baz danych itd. data - zawiera pliki lokalnych baz danych - generalnie zlać. extensions - zawiera pliki bibliotek dodatkowych modułów SourceMod'a np. obsługi baz danych, geoip (lokalizacja po adresie IP) itp. folder ważny jeżeli dany plugin potrzebuje dodatkowych modułów np. PTaH'a czy DHooks. gamedata - zawiera pliki posiadające w sobie informacje dotyczące danych gry czyli ważnych "liczb" które są aktualizowane wraz z większymi aktualizacjami CS:GO - ważny folder, na tyle aby nie modyfikować w nim nic jeżeli się nie wie co się robi. logs - zawiera pliki logów które generuje SourceMod - użycia komend, errorów itp. tutaj zaglądamy jeżeli chcemy coś sprawdzić. plugins - zawiera pliki WYKONAWCZE w formacie "smx" naszych pluginów - tutaj wrzucamy nasze pluginy. Proces instalacji pluginów przedstawię za chwilkę. scripting - zawiera pliki o formacie "sp" czyli nie prze kompilowanego kodu. Nie zaleca się wrzucać tam własnego kodu - ryzykujemy tym kradzież naszych pluginów. translations - zawiera pliki tekstowe odpowiednio nazwane (określa się to w pluginie). Cała ta lista zwiera informacje ważne lub mniej ważne dotyczące folderów z którymi należy się zaprzyjaźnić w kontekście SourceMod'a. Na sam koniec tej części opowiem dokładniej o dwóch folderach czyli:
    configs plugins Zacznijmy właśnie od "configs" - jak wyżej wspomniałem, znajdują się tam pliki konfiguracyjne SourceMod'a oraz części pluginów. Najważniejszymi plikami są dla nas aktualnie są:
    admins_simple.ini - w tym pliku dodajemy naszych adminów. W praktyce robi się to poprzez SourceBans'a jednak flagi właściciela najlepiej wprowadzić ręcznie do tego pliki. Kiedy otworzymy plik znajdziemy tam cały poradnik w jaki sposób konfigurować danego admina jednak zalecam to olać i przeczytać co ja mam w tej kwestii do powiedzenia. W mojej opinii istnieje jeden poprawny sposób dodania admina: na steam_id. Nic innego i tyle. Kwestia bezpieczeństwa. W jaki sposób go dodajemy? To dość proste - w nowej linijce musimy wypełnić dwie tak zwane ciapki czyli: "wpełnienie". Co mam dokładniej na myśli? Formułą jaką się tutaj kierujemy jest taki ogólny wzór (są dwa, zaraz powiem dlaczego):
    "STEAM_ID" "FLAGI" "STEAM_ID" "IMMUNITED:FLAGI" W odpowiednie pola musimy podać odpowiednie flagi które będzie SourceMod odczytywał na początku każdej mapy lub użycia komendy: sm_reloadadmins. Zacznijmy najpierw od samych flag, czym są i o co w ogóle chodzi... W SourceModzie powstał system flag za pomocą których danemu graczowi przypisywane są pozwolenia na użycie danej komendy, oficjalna lista flag to:
    a - Flaga Rezerwacji Slota b - Flaga Generyczna, określa czy ktoś ma admina (WYMAGANA!) c - Flaga Kick d - Flaga Banowania e - Flaga Odbanowywania f - Flaga Fun np. Slay'owania g - Flaga zmiany Mapy h - Flaga zmiany ConVar'ów i - Flaga wczytywania plików konfiguracyjnych j - Flaga Chatu np. admin czat itp. k - Flaga głosowań l - Flaga hasła m - Flaga Rcon n - Flaga sv_cheats o - Custom 1 p - Custom 2 q - Custom 3 r - Custom 4 s - Custom 5 t - Custom 6 z - Flaga Root'a Ogólną ideom tych flag jest jak już wcześniej wspomniałem nadanie odpowiednich permisji. Standardowy admin posiada np. takie flagi: "abcdefgjk" - podstawowe funkcje admina, kick, ban, slap zmiana mapy itd. Właściciel serwera zazwyczaj wpisuje sobie flagę: "z" - dostaje wszystkie flagi na raz, z wyjątkiem flag Customowych czyli: o, p, q, r, s oraz t. Z jakiegoś powodu te flagi nie są przypisane do flagi "z". Teraz kiedy znamy już flagi, "dodajmy" nowego admina. Jeżeli chciałbym samemu sobie nadać podstawowe uprawnienia na serwerze wpisałbym coś takiego (zgodnie z pierwszym wzorem):
    "STEAM_1:1:37802072" "abcdefgjk" //Charlie Dostałbym wtedy podstawowe uprawnienia. Kiedy chciałbym dostać uprawnienia właściciela tj. "root'a" musiałbym wpisać:
    "STEAM_1:1:37802072" "z" //Charlie Posiadałbym wtedy wszystkie flagi (z wyjątkiem customów). Niestety, w tej sytuacji każdy inny admin mógłby np. mnie wyrzucić z serwera, dlatego też powstał system immunitedu (wzór drugi). W tej sytuacji przed flagą "z", należy dodać: "99:" co w efekcie da nam taki twór:
    "STEAM_1:1:37802072" "99:z" //Charlie Oznacza to że, jedynie admin z takim samym immunitedem lub osoba z flagą "z" (tak, ona omija immunited) mogłaby wykonać jakąś komendę na mnie. Jednak tak jak już wspomniałem, flagi głównie dodaje się w SourceBans'ie i w naszym pliku będziemy jedynie widzieli linijki z flagami "z" oraz immunitedem: "99".
    admin_overrides.cfg - plik w którym zabezpieczamy niektóre komendy do których uprawnienia musimy z jakiegoś powodu nadać jednak nie chcemy aby dane komendy były używane przez kogokolwiek nieupoważnionego do tego. Z doświadczenia wiem że zwykle daną komendę ustawia się na flagę "z" o której wcześniej wspominałem tak aby zablokować w pełni dostęp do niej zwykłym adminem. W pliku znajduje się taka część:
    Overrides { //COŚ TAM MOŻE BYĆ } w miejscu w którym wpisany jest komentarz tj. informacja po "//" możemy wpisywać każdą komendę używając odpowiedniego wzoru: "KOMENDA" "Flaga na która ustawiamy komendę" Przykład realnego zastosowania:
    Overrides { "sm_rename" "z" "sm_beacon" "z" "sm_gravity" "z" } Generalnie, nic trudnego .
    databases.cfg - ostatni, w gruncie rzeczy najważniejszy plik ze wszystkich. W tym pliku znajdujemy konfigurację danych dostępowych do naszych baz danych - bardzo ważne jest aby nikomu go nie udostępniać ponieważ posiadając dane osoba postronna bardzo łatwo może zrobić nam z nimi wszystko. Podstawowy plik wygląda mniej więcej tak:
    "Databases" { "driver_default" "mysql" // When specifying "host", you may use an IP address, a hostname, or a socket file path "default" { "driver" "default" "host" "localhost" "database" "sourcemod" "user" "root" "pass" "" //"timeout" "0" //"port" "0" } "storage-local" { "driver" "sqlite" "database" "sourcemod-local" "weapons" "sm_weapons_db_connection" } "clientprefs" { "driver" "sqlite" "host" "localhost" "database" "clientprefs-sqlite" "user" "root" "pass" "" //"timeout" "0" //"port" "0" } } są to podstawowe dane odwołujące się do danych lokalnych. Zanim przedstawię co za co odpowiada pokaże przykład użycia oraz poprawnego skonfigurowania danej bazy danych w tym pliku:
    "rankme" { "driver" "mysql" "host" "host" "database" "nazwa_bazy_danych" "user" "login_do_bazy" "pass" "hasło_do_bazy" "port" "3306" } Będzie to przykładowa konfiguracja bazy danych do użytku przez plugin: KLICK. Prosta analiza każdego miejsca - opiera się to na zasadzie tak zwanego KV czyli Key Value ("klucz": "wartość dla klucza").
    "rankme" - jest to nazwa klucza jakiego dany plugin będzie szukać, może być to clientprefs, default itd. wszystko zależy od pluginu. driver - to określenie w jakim systemie działamy, mostly "mysql" host - adres IP lub domena z którą będziemy się łączyć np. "mysql.pukawka.pl" database - nazwa bazy z której będziemy pobierać dane user - login do danej bazy danych pass - hasło do danej bazy danych port - port na której nasłuchuje baza danych. Dla MySql'a jest 3306, dla np. PostgreSQL podstawowym portem jest 5432. Kiedy wprowadzimy nasze dane musimy po prostu dodać taką formułkę KV do naszego pliku, ostatecznym efektem będzie:
    "Databases" { "driver_default" "mysql" // When specifying "host", you may use an IP address, a hostname, or a socket file path "default" { "driver" "default" "host" "localhost" "database" "sourcemod" "user" "root" "pass" "" //"timeout" "0" //"port" "0" } "storage-local" { "driver" "sqlite" "database" "sourcemod-local" "weapons" "sm_weapons_db_connection" } "clientprefs" { "driver" "sqlite" "host" "localhost" "database" "clientprefs-sqlite" "user" "root" "pass" "" //"timeout" "0" //"port" "0" } "rankme" { "driver" "mysql" "host" "host" "database" "nazwa_bazy_danych" "user" "login_do_bazy" "pass" "haslo_do_bazy" "port" "3306" } } Najważniejsze w tym wszystkim jest niezapomnienie o odpowiednim umiejscowieniu danego elementu. Ostatni element musi znajdować się przed ostatnią klamrą zamykającą główny klucz który w przypadku baz danych to: "databases" - zobaczcie początek kodu / pliku databases.cfg.
    Przejdźmy teraz do folderu "plugins". Jego zawartość pierwotnie wygląda tak:

    Pluginy oraz folder disabled. Generalnie, w SourceModzie możemy robić wiele folderów w folderze plugins. Ułatwia to podział na dane typy pluginów których potem nie musimy nigdzie szukać. Wgrane pluginy zostaną tak czy siak odczytane chyba że znajdują się w folderze "disabled" - ten folder jest jako jedyny wyłączony z odczytu i można tam wrzucać starsze wersje pluginów czy pluginy które sprawiają nam problemy. Jeżeli chodzi o sortowanie pluginów możemy wszystkie podstawowe pluginy przenieść do folderu o przykładowej nazwie: base (oznacza on podstawowe pluginy bazowe). Nie będą one nam wtedy przesadzać i ułatwi nam to wizualnie ogarnięcie tego wszystkiego. Teraz pytanie jak instalować pluginy. Nic trudnego, pobieramy dany plugin - skorzystajmy z tego do którego odwoływałem się wcześniej tj. Kento RankMe i wrzucamy po prostu pliki do odpowiednich folderów tak jak autor ułożył w paczce, lub jeżeli posiadamy tylko sam plik "smx" wrzucamy go jedynie do "plugins". W przypadku RankMe, po rozpakowaniu plików widzimy że znajdujemy się w strukturze: /csgo/addons/sourcemod/ - tak więc należy przekopiować pliki/foldery właśnie do tego miejsca tj. "sourcemod". Po wgraniu powinniśmy widzieć taką strukturę w plugins (pluginy podstawowe przeniosłem do nowego folderu base):

    Aktualnie, pozostaje nam zrestartować serwer i ponownie sprawdzić listę pluginów za pomocą komendy: "sm plugins list" w konsoli naszego serwera:

    Jak widać, nasza lista zwiększyła się o jeden plugin - na pierwszej pozycji znajduje się "RankMe". Oznacza to że plugin został wgrany i uruchomił się bez błędów. Ot cała magia. Dokładnie tak samo postępujemy z każdym innym pluginem, czy to będzie kilka plików czy sam plik "smx".
    Dziś poznaliśmy w jaki sposób u podstaw konfigurować SourceMod'a na serwerze. Oczywiście istnieje jeszcze wiele elementów konfiguracji samego serwera jednak w tym poradniku będę skupiać się jedynie na SourceModzie ponieważ ostatecznym celem jest nauka pisania pluginów - co nam po tym że umiemy coś napisać jak nie umiemy skonfigurować samego SourceMod'a.
    Także dziękuję za uwagę i wszystkich zainteresowanych zapraszam na część drugą jak i kolejne które za jakiś czas powstaną.
  2. Haha
    Charlie W. reacted to kubinho in [PORADNIK] SourceMod czyli SERWEROWANIE OD POSTAW część. 1   
    i pomyslec ze jak sie uruchomisz to potrafisz to strescic w 3min ;0
  3. Piwko
    Charlie W. got a reaction from nowleusz in [5vs5] Zmiany na serwerze   
    Dnia 23/01:
    Małej modyfikacji uległa lista map:
    de_inferno de_mirage de_cache
  4. Thanks
    Charlie W. got a reaction from Wełna in [PORADNIK] SourceMod czyli SERWEROWANIE OD POSTAW część. 1   
    Cześć wszystkim, dziś postanowiłem stworzyć dla was mam nadzieje dość prostą a zarazem użyteczną serie poradników dotyczących SourceMod'a, Serwerów CS:GO jak i samego programowania w SourcePawn'ie. Tym poradnikiem chciałbym zachęcić was do pracy nad serwerami która nie skupia się jedynie na tym jak rozkręcić sam serwer ale również nad tym jak go stworzyć i co należy zrobić aby wszystko było w jak najlepszym porządku. Serię postaram się głównie opisywać choć czasami możliwe jest że będę potrzebował coś nagrać - aby ułatwić pokazanie danej rzeczy. Jeżeli jednak ktoś będzie potrzebował w pełni zobaczyć jak daną rzecz się robi mogę nagrać filmik z wytłumaczeniem danego elementu. Całą serie zaplanowałem w pewien określony sposób i wraz z moim czasem wolnym będę opracowywać kolejne punkty z tej serii (zazwyczaj będzie to weekend, myślę że około dwóch części w jeden weekend).
    Plan ogólny:
    O Sobie oraz SourceModzie - podstawy tj. instalacja oraz konfiguracja. Inne dodatkowe wymagania. <-- Temat dzisiejszej lekcji Środowisko do programowania. Zmienne, Instrukcje Warunkowe oraz Pętle - element każdego języka programowania. Kilka słów o API czyli dokumentacji SourceMod'a. Wprowadzenie do samego SourceMod'a: dodatkowe zmienne, "obiektowość" SourceMod'a, jak działają pluginy tj. skąd biorą się dane akcje. SDKhooks czyli eventy na których możemy bardzo, bardzo dużo zdziałać. Timery oraz jak i do czego ich używamy. Praca z Bazą danych czyli MySql. Tworzenie menu, jak to w sumie działa? Console Variables czyli cvar'y, ich zmiany oraz wychwytywanie danej komendy. Tłumaczenia, jak działają, po co są, czy warto? Współpraca wielu pluginów na raz czyli jak tworzyć Native'y oraz do czego służą. Współpraca wielu pluginów część 2, czyli Forwardy oraz ich możliwości. Podsumowanie. Może zacznę krótko od samego Siebie. Nazywam się Raman lub szerzej znany jako Charlie, zaocznie studiuje Informatykę o hobbistycznej specjalizacji: "Inżynieria bezpieczeństwa systemów informatycznych". W samym tygodniu pracuje jako Python Developer gdzie pracuje nad systemami dotyczącymi zażądania przedsiębiorstwem. Hobbistycznie programuje od paru ładnych lat w językach takich jak: c++ (podobno), c# oraz właśnie Python. Samym programowaniem w SourceModzie zajmuje się od około 2 lat kiedy zostałem Opiekunem 5vs5 który aktualnie prowadzę wraz z @dbk który zajmuje się "marketingiem" zarządzaniem, gdzie ja wraz z @Bluu robimy za programistów oraz administratorów tych serwerów.
    Co warto wiedzieć? Co trzeba wiedzieć? Ciężko powiedzieć w gruncie rzeczy, mimo wszystko:
    posiadać podstawowe umiejętności rozumienia logiki matematycznej znajomość jakiegoś z języków programowania np. c++ (opcjonalne) znajomość języka angielskiego dużo chęci (ważne ^^) Przejdźmy teraz do samego SourceMod'a. Nie będziemy wgłębiali się tutaj jak on działa, kto go stworzył, w jakim języku itd. Skupimy się tutaj na podstawach oraz podstawowych informacjach dotyczących samego SourceMod'a oraz jego konfiguracji. SourceMod to modyfikacja która pozwala nam włączać oraz wyłączać napisane przez nas, inne osoby lub twórców SourceMod'a pluginy które pomagają nam w zarządzaniu serwerem. Tyle. Na prawdę. To cała potrzebna wiedza o tym czym to coś jest .
    Proces instalacji SourceMod'a. Część ta jest przeznaczona dla osób które chcą dowiedzieć się jak zrobić to ręcznie - większość hostingów posiada moduł instalacyjny modyfikacji z którego poziomu możemy zainstalować SourceMod + MetaMod w wersjach które poprawnie działają aktualnie na serwerze - tak, to dość ważne ponieważ aktualizacja CS:GO może spowodować że cały SourceMod nie będzie działać - wtedy niestety trzeba czekać aż Devy SourceMod'a napiszą odpowiednie poprawki - zwykle jest to wykonywane do kilku godzin po aktualizacji.
    Zacznijmy jednak cały proces od początku. Musimy udać się na dwie strony:
    SourceMod MetaMod na jednej jak i drugiej stronie udajemy się do zakładki Stable Builds i pobieramy najnowszą wersję dla wybranego systemu operacyjnego - ważna informacja! Na każdym hostingu serwerów online, systemem operacyjnym jest LINUX! Także pamiętajcie aby wgrywając to na serwer który kupiliśmy na hostingu pobierać wersje dla Linuxa!
    Kiedy pobierzemy oraz rozpakujemy pobrane pliki musimy zalogować się na nasz serwer poprzez klient'a FTP (zalecane) lub Edytor Plików zapewniony przez hosting. Ja używam FlieZill'i jednak to jakiego klienta używamy jest osobistą preferencją. W zależności od hostingu miejsce do którego zalogujemy się w FTP może różnie wyglądać dlatego też postanowiłem nie wstawiać żadnych zrzutów ekranu z tej części ponieważ może być to błędnie odebrane. Wracając jednak do instalacji: kiedy znajdujemy się już na FTP musimy udać się do folderu "csgo", powinien mniej/więcej wyglądać o tak:

    Kiedy znajdujemy się w tym miejscu, wgrywamy (kolejność w gruncie rzeczy nie ma znaczenia jednak jak kto woli) najpierw pliki MetaMod'a następnie SourceMod'a. Po wgraniu plików, zauważalną różnicą w folderze "csgo" będzie dojście nowego katalogu o nazwie: "addons" - jest to katalog w którym znajdują się modyfikacje do CS:GO. Zawartość tego folderu powinna wyglądać mniej więcej tak:

    Sam MetaMod zbytnio nas nie interesuje, interesujemy się głównie SourceMod'em - przejdźmy teraz do weryfikacji czy SourceMod działa poprawnie - udajemy się do panelu w wybranym przez nas hostingu, włączamy serwer - odczekujemy kilka chwil aż się w pełni włączy i udajemy się do konsoli. W konsoli wpisujemy: "meta list" - potwierdzi to działanie MetaMod'a (jest on wymagany do poprawnego działania SourceMod'a), jeżeli SourceMod znajdzie się na liście znaczy że MetaMod go wykrywa oraz sam SourceMod działa - w innym wypadku nie byłoby go na liście lub występowałby Error. Dla potwierdzenia można sprawdzić jeszcze jedną komendę taką jak: sm plugins list - wypisze to listę pluginów SourceMod'a która aktualnie działa na serwerze (są to pluginy podstawowe):


    Tadam. Skończone. Proces trwał około 5min, automatyczny instalator zrobi to kilka razy szybciej ale co tam. Zajmijmy się jeszcze przez chwilę tym co doszło nam na serwer w czasie instalacji SourceMod'a. Jak możecie zauważyć folder do którego rozpakowaliśmy paczkę zawierającą SourceMod'a posiada dwa foldery:
    addons cfg na tym drugim aktualnie się skupimy. Kiedy w niego wejdziemy zauważymy kolejny folder o nazwie "sourcemod" - w tym folderze właśnie znajdować będą się praktycznie wszystkie pliki konfiguracyjne pluginów (mogą zdarzyć się wyjątki, o tym powiem później) jednak jeżeli dany plugin posiada ConVar'y czyli komendy konfiguracyjne to właśnie tutaj automatycznie generować będą się pliki które będą odczytywane podczas ładowania pluginów oraz wartości tych komend będą ustawiane. Znajduje się też tutaj plik konfiguracyjny samego SourceMod'a czyli: sourcemod.cfg - w nim znajdują się wszystkie komendy konfiguracyjne podstawowego SourceMod'a np.
    // Specifies how admin activity should be relayed to users. Add up the values // below to get the functionality you want. // 1: Show admin activity to non-admins anonymously. // 2: If 1 is specified, admin names will be shown. // 4: Show admin activity to admins anonymously. // 8: If 4 is specified, admin names will be shown. // 16: Always show admin names to root users. // -- // Default: 13 (1+4+8) sm_show_activity 13 jest to ustawienie pokazujące aktywność adminów. Pierwotnie wartość ta ustawiona jest na 13 czyli: zwykły gracz widzi aktywność admina choć nie widzi jego nicku, inny admin widzi aktywność admina oraz widzi jego nick. Dość proste. Jednak nie tym mamy się tutaj zajmować - tutaj właśnie znajdują się takie ustawienia. Można hobbistycznie zapoznać się z tym plikiem. W tym folderze to wszystko.
    Pierwszym folderem o którym wcześniej wspominałem jest "addons". W środku znajduje się taki folder jak "sourcemod", po wejściu w niego ukazuje się nam kilka innych folderów. Pominę w tym miejscu SS'a, od ręki wypiszę oraz opowiem czym są dane foldery i czy warto się aktualnie na nich skupiać:
    bin - zawiera pliki bibliotek SourceMod'a do danych gier, folderu nie ruszać - generalnie zlać. configs - zawiera pliki konfiguracyjne SourceMod'a, niektórych pluginów czy dane jak np. konfiguracje adminów, baz danych itd. data - zawiera pliki lokalnych baz danych - generalnie zlać. extensions - zawiera pliki bibliotek dodatkowych modułów SourceMod'a np. obsługi baz danych, geoip (lokalizacja po adresie IP) itp. folder ważny jeżeli dany plugin potrzebuje dodatkowych modułów np. PTaH'a czy DHooks. gamedata - zawiera pliki posiadające w sobie informacje dotyczące danych gry czyli ważnych "liczb" które są aktualizowane wraz z większymi aktualizacjami CS:GO - ważny folder, na tyle aby nie modyfikować w nim nic jeżeli się nie wie co się robi. logs - zawiera pliki logów które generuje SourceMod - użycia komend, errorów itp. tutaj zaglądamy jeżeli chcemy coś sprawdzić. plugins - zawiera pliki WYKONAWCZE w formacie "smx" naszych pluginów - tutaj wrzucamy nasze pluginy. Proces instalacji pluginów przedstawię za chwilkę. scripting - zawiera pliki o formacie "sp" czyli nie prze kompilowanego kodu. Nie zaleca się wrzucać tam własnego kodu - ryzykujemy tym kradzież naszych pluginów. translations - zawiera pliki tekstowe odpowiednio nazwane (określa się to w pluginie). Cała ta lista zwiera informacje ważne lub mniej ważne dotyczące folderów z którymi należy się zaprzyjaźnić w kontekście SourceMod'a. Na sam koniec tej części opowiem dokładniej o dwóch folderach czyli:
    configs plugins Zacznijmy właśnie od "configs" - jak wyżej wspomniałem, znajdują się tam pliki konfiguracyjne SourceMod'a oraz części pluginów. Najważniejszymi plikami są dla nas aktualnie są:
    admins_simple.ini - w tym pliku dodajemy naszych adminów. W praktyce robi się to poprzez SourceBans'a jednak flagi właściciela najlepiej wprowadzić ręcznie do tego pliki. Kiedy otworzymy plik znajdziemy tam cały poradnik w jaki sposób konfigurować danego admina jednak zalecam to olać i przeczytać co ja mam w tej kwestii do powiedzenia. W mojej opinii istnieje jeden poprawny sposób dodania admina: na steam_id. Nic innego i tyle. Kwestia bezpieczeństwa. W jaki sposób go dodajemy? To dość proste - w nowej linijce musimy wypełnić dwie tak zwane ciapki czyli: "wpełnienie". Co mam dokładniej na myśli? Formułą jaką się tutaj kierujemy jest taki ogólny wzór (są dwa, zaraz powiem dlaczego):
    "STEAM_ID" "FLAGI" "STEAM_ID" "IMMUNITED:FLAGI" W odpowiednie pola musimy podać odpowiednie flagi które będzie SourceMod odczytywał na początku każdej mapy lub użycia komendy: sm_reloadadmins. Zacznijmy najpierw od samych flag, czym są i o co w ogóle chodzi... W SourceModzie powstał system flag za pomocą których danemu graczowi przypisywane są pozwolenia na użycie danej komendy, oficjalna lista flag to:
    a - Flaga Rezerwacji Slota b - Flaga Generyczna, określa czy ktoś ma admina (WYMAGANA!) c - Flaga Kick d - Flaga Banowania e - Flaga Odbanowywania f - Flaga Fun np. Slay'owania g - Flaga zmiany Mapy h - Flaga zmiany ConVar'ów i - Flaga wczytywania plików konfiguracyjnych j - Flaga Chatu np. admin czat itp. k - Flaga głosowań l - Flaga hasła m - Flaga Rcon n - Flaga sv_cheats o - Custom 1 p - Custom 2 q - Custom 3 r - Custom 4 s - Custom 5 t - Custom 6 z - Flaga Root'a Ogólną ideom tych flag jest jak już wcześniej wspomniałem nadanie odpowiednich permisji. Standardowy admin posiada np. takie flagi: "abcdefgjk" - podstawowe funkcje admina, kick, ban, slap zmiana mapy itd. Właściciel serwera zazwyczaj wpisuje sobie flagę: "z" - dostaje wszystkie flagi na raz, z wyjątkiem flag Customowych czyli: o, p, q, r, s oraz t. Z jakiegoś powodu te flagi nie są przypisane do flagi "z". Teraz kiedy znamy już flagi, "dodajmy" nowego admina. Jeżeli chciałbym samemu sobie nadać podstawowe uprawnienia na serwerze wpisałbym coś takiego (zgodnie z pierwszym wzorem):
    "STEAM_1:1:37802072" "abcdefgjk" //Charlie Dostałbym wtedy podstawowe uprawnienia. Kiedy chciałbym dostać uprawnienia właściciela tj. "root'a" musiałbym wpisać:
    "STEAM_1:1:37802072" "z" //Charlie Posiadałbym wtedy wszystkie flagi (z wyjątkiem customów). Niestety, w tej sytuacji każdy inny admin mógłby np. mnie wyrzucić z serwera, dlatego też powstał system immunitedu (wzór drugi). W tej sytuacji przed flagą "z", należy dodać: "99:" co w efekcie da nam taki twór:
    "STEAM_1:1:37802072" "99:z" //Charlie Oznacza to że, jedynie admin z takim samym immunitedem lub osoba z flagą "z" (tak, ona omija immunited) mogłaby wykonać jakąś komendę na mnie. Jednak tak jak już wspomniałem, flagi głównie dodaje się w SourceBans'ie i w naszym pliku będziemy jedynie widzieli linijki z flagami "z" oraz immunitedem: "99".
    admin_overrides.cfg - plik w którym zabezpieczamy niektóre komendy do których uprawnienia musimy z jakiegoś powodu nadać jednak nie chcemy aby dane komendy były używane przez kogokolwiek nieupoważnionego do tego. Z doświadczenia wiem że zwykle daną komendę ustawia się na flagę "z" o której wcześniej wspominałem tak aby zablokować w pełni dostęp do niej zwykłym adminem. W pliku znajduje się taka część:
    Overrides { //COŚ TAM MOŻE BYĆ } w miejscu w którym wpisany jest komentarz tj. informacja po "//" możemy wpisywać każdą komendę używając odpowiedniego wzoru: "KOMENDA" "Flaga na która ustawiamy komendę" Przykład realnego zastosowania:
    Overrides { "sm_rename" "z" "sm_beacon" "z" "sm_gravity" "z" } Generalnie, nic trudnego .
    databases.cfg - ostatni, w gruncie rzeczy najważniejszy plik ze wszystkich. W tym pliku znajdujemy konfigurację danych dostępowych do naszych baz danych - bardzo ważne jest aby nikomu go nie udostępniać ponieważ posiadając dane osoba postronna bardzo łatwo może zrobić nam z nimi wszystko. Podstawowy plik wygląda mniej więcej tak:
    "Databases" { "driver_default" "mysql" // When specifying "host", you may use an IP address, a hostname, or a socket file path "default" { "driver" "default" "host" "localhost" "database" "sourcemod" "user" "root" "pass" "" //"timeout" "0" //"port" "0" } "storage-local" { "driver" "sqlite" "database" "sourcemod-local" "weapons" "sm_weapons_db_connection" } "clientprefs" { "driver" "sqlite" "host" "localhost" "database" "clientprefs-sqlite" "user" "root" "pass" "" //"timeout" "0" //"port" "0" } } są to podstawowe dane odwołujące się do danych lokalnych. Zanim przedstawię co za co odpowiada pokaże przykład użycia oraz poprawnego skonfigurowania danej bazy danych w tym pliku:
    "rankme" { "driver" "mysql" "host" "host" "database" "nazwa_bazy_danych" "user" "login_do_bazy" "pass" "hasło_do_bazy" "port" "3306" } Będzie to przykładowa konfiguracja bazy danych do użytku przez plugin: KLICK. Prosta analiza każdego miejsca - opiera się to na zasadzie tak zwanego KV czyli Key Value ("klucz": "wartość dla klucza").
    "rankme" - jest to nazwa klucza jakiego dany plugin będzie szukać, może być to clientprefs, default itd. wszystko zależy od pluginu. driver - to określenie w jakim systemie działamy, mostly "mysql" host - adres IP lub domena z którą będziemy się łączyć np. "mysql.pukawka.pl" database - nazwa bazy z której będziemy pobierać dane user - login do danej bazy danych pass - hasło do danej bazy danych port - port na której nasłuchuje baza danych. Dla MySql'a jest 3306, dla np. PostgreSQL podstawowym portem jest 5432. Kiedy wprowadzimy nasze dane musimy po prostu dodać taką formułkę KV do naszego pliku, ostatecznym efektem będzie:
    "Databases" { "driver_default" "mysql" // When specifying "host", you may use an IP address, a hostname, or a socket file path "default" { "driver" "default" "host" "localhost" "database" "sourcemod" "user" "root" "pass" "" //"timeout" "0" //"port" "0" } "storage-local" { "driver" "sqlite" "database" "sourcemod-local" "weapons" "sm_weapons_db_connection" } "clientprefs" { "driver" "sqlite" "host" "localhost" "database" "clientprefs-sqlite" "user" "root" "pass" "" //"timeout" "0" //"port" "0" } "rankme" { "driver" "mysql" "host" "host" "database" "nazwa_bazy_danych" "user" "login_do_bazy" "pass" "haslo_do_bazy" "port" "3306" } } Najważniejsze w tym wszystkim jest niezapomnienie o odpowiednim umiejscowieniu danego elementu. Ostatni element musi znajdować się przed ostatnią klamrą zamykającą główny klucz który w przypadku baz danych to: "databases" - zobaczcie początek kodu / pliku databases.cfg.
    Przejdźmy teraz do folderu "plugins". Jego zawartość pierwotnie wygląda tak:

    Pluginy oraz folder disabled. Generalnie, w SourceModzie możemy robić wiele folderów w folderze plugins. Ułatwia to podział na dane typy pluginów których potem nie musimy nigdzie szukać. Wgrane pluginy zostaną tak czy siak odczytane chyba że znajdują się w folderze "disabled" - ten folder jest jako jedyny wyłączony z odczytu i można tam wrzucać starsze wersje pluginów czy pluginy które sprawiają nam problemy. Jeżeli chodzi o sortowanie pluginów możemy wszystkie podstawowe pluginy przenieść do folderu o przykładowej nazwie: base (oznacza on podstawowe pluginy bazowe). Nie będą one nam wtedy przesadzać i ułatwi nam to wizualnie ogarnięcie tego wszystkiego. Teraz pytanie jak instalować pluginy. Nic trudnego, pobieramy dany plugin - skorzystajmy z tego do którego odwoływałem się wcześniej tj. Kento RankMe i wrzucamy po prostu pliki do odpowiednich folderów tak jak autor ułożył w paczce, lub jeżeli posiadamy tylko sam plik "smx" wrzucamy go jedynie do "plugins". W przypadku RankMe, po rozpakowaniu plików widzimy że znajdujemy się w strukturze: /csgo/addons/sourcemod/ - tak więc należy przekopiować pliki/foldery właśnie do tego miejsca tj. "sourcemod". Po wgraniu powinniśmy widzieć taką strukturę w plugins (pluginy podstawowe przeniosłem do nowego folderu base):

    Aktualnie, pozostaje nam zrestartować serwer i ponownie sprawdzić listę pluginów za pomocą komendy: "sm plugins list" w konsoli naszego serwera:

    Jak widać, nasza lista zwiększyła się o jeden plugin - na pierwszej pozycji znajduje się "RankMe". Oznacza to że plugin został wgrany i uruchomił się bez błędów. Ot cała magia. Dokładnie tak samo postępujemy z każdym innym pluginem, czy to będzie kilka plików czy sam plik "smx".
    Dziś poznaliśmy w jaki sposób u podstaw konfigurować SourceMod'a na serwerze. Oczywiście istnieje jeszcze wiele elementów konfiguracji samego serwera jednak w tym poradniku będę skupiać się jedynie na SourceModzie ponieważ ostatecznym celem jest nauka pisania pluginów - co nam po tym że umiemy coś napisać jak nie umiemy skonfigurować samego SourceMod'a.
    Także dziękuję za uwagę i wszystkich zainteresowanych zapraszam na część drugą jak i kolejne które za jakiś czas powstaną.
  5. Like
    Charlie W. got a reaction from keeemin. in [PORADNIK] SourceMod czyli SERWEROWANIE OD POSTAW część. 1   
    Cześć wszystkim, dziś postanowiłem stworzyć dla was mam nadzieje dość prostą a zarazem użyteczną serie poradników dotyczących SourceMod'a, Serwerów CS:GO jak i samego programowania w SourcePawn'ie. Tym poradnikiem chciałbym zachęcić was do pracy nad serwerami która nie skupia się jedynie na tym jak rozkręcić sam serwer ale również nad tym jak go stworzyć i co należy zrobić aby wszystko było w jak najlepszym porządku. Serię postaram się głównie opisywać choć czasami możliwe jest że będę potrzebował coś nagrać - aby ułatwić pokazanie danej rzeczy. Jeżeli jednak ktoś będzie potrzebował w pełni zobaczyć jak daną rzecz się robi mogę nagrać filmik z wytłumaczeniem danego elementu. Całą serie zaplanowałem w pewien określony sposób i wraz z moim czasem wolnym będę opracowywać kolejne punkty z tej serii (zazwyczaj będzie to weekend, myślę że około dwóch części w jeden weekend).
    Plan ogólny:
    O Sobie oraz SourceModzie - podstawy tj. instalacja oraz konfiguracja. Inne dodatkowe wymagania. <-- Temat dzisiejszej lekcji Środowisko do programowania. Zmienne, Instrukcje Warunkowe oraz Pętle - element każdego języka programowania. Kilka słów o API czyli dokumentacji SourceMod'a. Wprowadzenie do samego SourceMod'a: dodatkowe zmienne, "obiektowość" SourceMod'a, jak działają pluginy tj. skąd biorą się dane akcje. SDKhooks czyli eventy na których możemy bardzo, bardzo dużo zdziałać. Timery oraz jak i do czego ich używamy. Praca z Bazą danych czyli MySql. Tworzenie menu, jak to w sumie działa? Console Variables czyli cvar'y, ich zmiany oraz wychwytywanie danej komendy. Tłumaczenia, jak działają, po co są, czy warto? Współpraca wielu pluginów na raz czyli jak tworzyć Native'y oraz do czego służą. Współpraca wielu pluginów część 2, czyli Forwardy oraz ich możliwości. Podsumowanie. Może zacznę krótko od samego Siebie. Nazywam się Raman lub szerzej znany jako Charlie, zaocznie studiuje Informatykę o hobbistycznej specjalizacji: "Inżynieria bezpieczeństwa systemów informatycznych". W samym tygodniu pracuje jako Python Developer gdzie pracuje nad systemami dotyczącymi zażądania przedsiębiorstwem. Hobbistycznie programuje od paru ładnych lat w językach takich jak: c++ (podobno), c# oraz właśnie Python. Samym programowaniem w SourceModzie zajmuje się od około 2 lat kiedy zostałem Opiekunem 5vs5 który aktualnie prowadzę wraz z @dbk który zajmuje się "marketingiem" zarządzaniem, gdzie ja wraz z @Bluu robimy za programistów oraz administratorów tych serwerów.
    Co warto wiedzieć? Co trzeba wiedzieć? Ciężko powiedzieć w gruncie rzeczy, mimo wszystko:
    posiadać podstawowe umiejętności rozumienia logiki matematycznej znajomość jakiegoś z języków programowania np. c++ (opcjonalne) znajomość języka angielskiego dużo chęci (ważne ^^) Przejdźmy teraz do samego SourceMod'a. Nie będziemy wgłębiali się tutaj jak on działa, kto go stworzył, w jakim języku itd. Skupimy się tutaj na podstawach oraz podstawowych informacjach dotyczących samego SourceMod'a oraz jego konfiguracji. SourceMod to modyfikacja która pozwala nam włączać oraz wyłączać napisane przez nas, inne osoby lub twórców SourceMod'a pluginy które pomagają nam w zarządzaniu serwerem. Tyle. Na prawdę. To cała potrzebna wiedza o tym czym to coś jest .
    Proces instalacji SourceMod'a. Część ta jest przeznaczona dla osób które chcą dowiedzieć się jak zrobić to ręcznie - większość hostingów posiada moduł instalacyjny modyfikacji z którego poziomu możemy zainstalować SourceMod + MetaMod w wersjach które poprawnie działają aktualnie na serwerze - tak, to dość ważne ponieważ aktualizacja CS:GO może spowodować że cały SourceMod nie będzie działać - wtedy niestety trzeba czekać aż Devy SourceMod'a napiszą odpowiednie poprawki - zwykle jest to wykonywane do kilku godzin po aktualizacji.
    Zacznijmy jednak cały proces od początku. Musimy udać się na dwie strony:
    SourceMod MetaMod na jednej jak i drugiej stronie udajemy się do zakładki Stable Builds i pobieramy najnowszą wersję dla wybranego systemu operacyjnego - ważna informacja! Na każdym hostingu serwerów online, systemem operacyjnym jest LINUX! Także pamiętajcie aby wgrywając to na serwer który kupiliśmy na hostingu pobierać wersje dla Linuxa!
    Kiedy pobierzemy oraz rozpakujemy pobrane pliki musimy zalogować się na nasz serwer poprzez klient'a FTP (zalecane) lub Edytor Plików zapewniony przez hosting. Ja używam FlieZill'i jednak to jakiego klienta używamy jest osobistą preferencją. W zależności od hostingu miejsce do którego zalogujemy się w FTP może różnie wyglądać dlatego też postanowiłem nie wstawiać żadnych zrzutów ekranu z tej części ponieważ może być to błędnie odebrane. Wracając jednak do instalacji: kiedy znajdujemy się już na FTP musimy udać się do folderu "csgo", powinien mniej/więcej wyglądać o tak:

    Kiedy znajdujemy się w tym miejscu, wgrywamy (kolejność w gruncie rzeczy nie ma znaczenia jednak jak kto woli) najpierw pliki MetaMod'a następnie SourceMod'a. Po wgraniu plików, zauważalną różnicą w folderze "csgo" będzie dojście nowego katalogu o nazwie: "addons" - jest to katalog w którym znajdują się modyfikacje do CS:GO. Zawartość tego folderu powinna wyglądać mniej więcej tak:

    Sam MetaMod zbytnio nas nie interesuje, interesujemy się głównie SourceMod'em - przejdźmy teraz do weryfikacji czy SourceMod działa poprawnie - udajemy się do panelu w wybranym przez nas hostingu, włączamy serwer - odczekujemy kilka chwil aż się w pełni włączy i udajemy się do konsoli. W konsoli wpisujemy: "meta list" - potwierdzi to działanie MetaMod'a (jest on wymagany do poprawnego działania SourceMod'a), jeżeli SourceMod znajdzie się na liście znaczy że MetaMod go wykrywa oraz sam SourceMod działa - w innym wypadku nie byłoby go na liście lub występowałby Error. Dla potwierdzenia można sprawdzić jeszcze jedną komendę taką jak: sm plugins list - wypisze to listę pluginów SourceMod'a która aktualnie działa na serwerze (są to pluginy podstawowe):


    Tadam. Skończone. Proces trwał około 5min, automatyczny instalator zrobi to kilka razy szybciej ale co tam. Zajmijmy się jeszcze przez chwilę tym co doszło nam na serwer w czasie instalacji SourceMod'a. Jak możecie zauważyć folder do którego rozpakowaliśmy paczkę zawierającą SourceMod'a posiada dwa foldery:
    addons cfg na tym drugim aktualnie się skupimy. Kiedy w niego wejdziemy zauważymy kolejny folder o nazwie "sourcemod" - w tym folderze właśnie znajdować będą się praktycznie wszystkie pliki konfiguracyjne pluginów (mogą zdarzyć się wyjątki, o tym powiem później) jednak jeżeli dany plugin posiada ConVar'y czyli komendy konfiguracyjne to właśnie tutaj automatycznie generować będą się pliki które będą odczytywane podczas ładowania pluginów oraz wartości tych komend będą ustawiane. Znajduje się też tutaj plik konfiguracyjny samego SourceMod'a czyli: sourcemod.cfg - w nim znajdują się wszystkie komendy konfiguracyjne podstawowego SourceMod'a np.
    // Specifies how admin activity should be relayed to users. Add up the values // below to get the functionality you want. // 1: Show admin activity to non-admins anonymously. // 2: If 1 is specified, admin names will be shown. // 4: Show admin activity to admins anonymously. // 8: If 4 is specified, admin names will be shown. // 16: Always show admin names to root users. // -- // Default: 13 (1+4+8) sm_show_activity 13 jest to ustawienie pokazujące aktywność adminów. Pierwotnie wartość ta ustawiona jest na 13 czyli: zwykły gracz widzi aktywność admina choć nie widzi jego nicku, inny admin widzi aktywność admina oraz widzi jego nick. Dość proste. Jednak nie tym mamy się tutaj zajmować - tutaj właśnie znajdują się takie ustawienia. Można hobbistycznie zapoznać się z tym plikiem. W tym folderze to wszystko.
    Pierwszym folderem o którym wcześniej wspominałem jest "addons". W środku znajduje się taki folder jak "sourcemod", po wejściu w niego ukazuje się nam kilka innych folderów. Pominę w tym miejscu SS'a, od ręki wypiszę oraz opowiem czym są dane foldery i czy warto się aktualnie na nich skupiać:
    bin - zawiera pliki bibliotek SourceMod'a do danych gier, folderu nie ruszać - generalnie zlać. configs - zawiera pliki konfiguracyjne SourceMod'a, niektórych pluginów czy dane jak np. konfiguracje adminów, baz danych itd. data - zawiera pliki lokalnych baz danych - generalnie zlać. extensions - zawiera pliki bibliotek dodatkowych modułów SourceMod'a np. obsługi baz danych, geoip (lokalizacja po adresie IP) itp. folder ważny jeżeli dany plugin potrzebuje dodatkowych modułów np. PTaH'a czy DHooks. gamedata - zawiera pliki posiadające w sobie informacje dotyczące danych gry czyli ważnych "liczb" które są aktualizowane wraz z większymi aktualizacjami CS:GO - ważny folder, na tyle aby nie modyfikować w nim nic jeżeli się nie wie co się robi. logs - zawiera pliki logów które generuje SourceMod - użycia komend, errorów itp. tutaj zaglądamy jeżeli chcemy coś sprawdzić. plugins - zawiera pliki WYKONAWCZE w formacie "smx" naszych pluginów - tutaj wrzucamy nasze pluginy. Proces instalacji pluginów przedstawię za chwilkę. scripting - zawiera pliki o formacie "sp" czyli nie prze kompilowanego kodu. Nie zaleca się wrzucać tam własnego kodu - ryzykujemy tym kradzież naszych pluginów. translations - zawiera pliki tekstowe odpowiednio nazwane (określa się to w pluginie). Cała ta lista zwiera informacje ważne lub mniej ważne dotyczące folderów z którymi należy się zaprzyjaźnić w kontekście SourceMod'a. Na sam koniec tej części opowiem dokładniej o dwóch folderach czyli:
    configs plugins Zacznijmy właśnie od "configs" - jak wyżej wspomniałem, znajdują się tam pliki konfiguracyjne SourceMod'a oraz części pluginów. Najważniejszymi plikami są dla nas aktualnie są:
    admins_simple.ini - w tym pliku dodajemy naszych adminów. W praktyce robi się to poprzez SourceBans'a jednak flagi właściciela najlepiej wprowadzić ręcznie do tego pliki. Kiedy otworzymy plik znajdziemy tam cały poradnik w jaki sposób konfigurować danego admina jednak zalecam to olać i przeczytać co ja mam w tej kwestii do powiedzenia. W mojej opinii istnieje jeden poprawny sposób dodania admina: na steam_id. Nic innego i tyle. Kwestia bezpieczeństwa. W jaki sposób go dodajemy? To dość proste - w nowej linijce musimy wypełnić dwie tak zwane ciapki czyli: "wpełnienie". Co mam dokładniej na myśli? Formułą jaką się tutaj kierujemy jest taki ogólny wzór (są dwa, zaraz powiem dlaczego):
    "STEAM_ID" "FLAGI" "STEAM_ID" "IMMUNITED:FLAGI" W odpowiednie pola musimy podać odpowiednie flagi które będzie SourceMod odczytywał na początku każdej mapy lub użycia komendy: sm_reloadadmins. Zacznijmy najpierw od samych flag, czym są i o co w ogóle chodzi... W SourceModzie powstał system flag za pomocą których danemu graczowi przypisywane są pozwolenia na użycie danej komendy, oficjalna lista flag to:
    a - Flaga Rezerwacji Slota b - Flaga Generyczna, określa czy ktoś ma admina (WYMAGANA!) c - Flaga Kick d - Flaga Banowania e - Flaga Odbanowywania f - Flaga Fun np. Slay'owania g - Flaga zmiany Mapy h - Flaga zmiany ConVar'ów i - Flaga wczytywania plików konfiguracyjnych j - Flaga Chatu np. admin czat itp. k - Flaga głosowań l - Flaga hasła m - Flaga Rcon n - Flaga sv_cheats o - Custom 1 p - Custom 2 q - Custom 3 r - Custom 4 s - Custom 5 t - Custom 6 z - Flaga Root'a Ogólną ideom tych flag jest jak już wcześniej wspomniałem nadanie odpowiednich permisji. Standardowy admin posiada np. takie flagi: "abcdefgjk" - podstawowe funkcje admina, kick, ban, slap zmiana mapy itd. Właściciel serwera zazwyczaj wpisuje sobie flagę: "z" - dostaje wszystkie flagi na raz, z wyjątkiem flag Customowych czyli: o, p, q, r, s oraz t. Z jakiegoś powodu te flagi nie są przypisane do flagi "z". Teraz kiedy znamy już flagi, "dodajmy" nowego admina. Jeżeli chciałbym samemu sobie nadać podstawowe uprawnienia na serwerze wpisałbym coś takiego (zgodnie z pierwszym wzorem):
    "STEAM_1:1:37802072" "abcdefgjk" //Charlie Dostałbym wtedy podstawowe uprawnienia. Kiedy chciałbym dostać uprawnienia właściciela tj. "root'a" musiałbym wpisać:
    "STEAM_1:1:37802072" "z" //Charlie Posiadałbym wtedy wszystkie flagi (z wyjątkiem customów). Niestety, w tej sytuacji każdy inny admin mógłby np. mnie wyrzucić z serwera, dlatego też powstał system immunitedu (wzór drugi). W tej sytuacji przed flagą "z", należy dodać: "99:" co w efekcie da nam taki twór:
    "STEAM_1:1:37802072" "99:z" //Charlie Oznacza to że, jedynie admin z takim samym immunitedem lub osoba z flagą "z" (tak, ona omija immunited) mogłaby wykonać jakąś komendę na mnie. Jednak tak jak już wspomniałem, flagi głównie dodaje się w SourceBans'ie i w naszym pliku będziemy jedynie widzieli linijki z flagami "z" oraz immunitedem: "99".
    admin_overrides.cfg - plik w którym zabezpieczamy niektóre komendy do których uprawnienia musimy z jakiegoś powodu nadać jednak nie chcemy aby dane komendy były używane przez kogokolwiek nieupoważnionego do tego. Z doświadczenia wiem że zwykle daną komendę ustawia się na flagę "z" o której wcześniej wspominałem tak aby zablokować w pełni dostęp do niej zwykłym adminem. W pliku znajduje się taka część:
    Overrides { //COŚ TAM MOŻE BYĆ } w miejscu w którym wpisany jest komentarz tj. informacja po "//" możemy wpisywać każdą komendę używając odpowiedniego wzoru: "KOMENDA" "Flaga na która ustawiamy komendę" Przykład realnego zastosowania:
    Overrides { "sm_rename" "z" "sm_beacon" "z" "sm_gravity" "z" } Generalnie, nic trudnego .
    databases.cfg - ostatni, w gruncie rzeczy najważniejszy plik ze wszystkich. W tym pliku znajdujemy konfigurację danych dostępowych do naszych baz danych - bardzo ważne jest aby nikomu go nie udostępniać ponieważ posiadając dane osoba postronna bardzo łatwo może zrobić nam z nimi wszystko. Podstawowy plik wygląda mniej więcej tak:
    "Databases" { "driver_default" "mysql" // When specifying "host", you may use an IP address, a hostname, or a socket file path "default" { "driver" "default" "host" "localhost" "database" "sourcemod" "user" "root" "pass" "" //"timeout" "0" //"port" "0" } "storage-local" { "driver" "sqlite" "database" "sourcemod-local" "weapons" "sm_weapons_db_connection" } "clientprefs" { "driver" "sqlite" "host" "localhost" "database" "clientprefs-sqlite" "user" "root" "pass" "" //"timeout" "0" //"port" "0" } } są to podstawowe dane odwołujące się do danych lokalnych. Zanim przedstawię co za co odpowiada pokaże przykład użycia oraz poprawnego skonfigurowania danej bazy danych w tym pliku:
    "rankme" { "driver" "mysql" "host" "host" "database" "nazwa_bazy_danych" "user" "login_do_bazy" "pass" "hasło_do_bazy" "port" "3306" } Będzie to przykładowa konfiguracja bazy danych do użytku przez plugin: KLICK. Prosta analiza każdego miejsca - opiera się to na zasadzie tak zwanego KV czyli Key Value ("klucz": "wartość dla klucza").
    "rankme" - jest to nazwa klucza jakiego dany plugin będzie szukać, może być to clientprefs, default itd. wszystko zależy od pluginu. driver - to określenie w jakim systemie działamy, mostly "mysql" host - adres IP lub domena z którą będziemy się łączyć np. "mysql.pukawka.pl" database - nazwa bazy z której będziemy pobierać dane user - login do danej bazy danych pass - hasło do danej bazy danych port - port na której nasłuchuje baza danych. Dla MySql'a jest 3306, dla np. PostgreSQL podstawowym portem jest 5432. Kiedy wprowadzimy nasze dane musimy po prostu dodać taką formułkę KV do naszego pliku, ostatecznym efektem będzie:
    "Databases" { "driver_default" "mysql" // When specifying "host", you may use an IP address, a hostname, or a socket file path "default" { "driver" "default" "host" "localhost" "database" "sourcemod" "user" "root" "pass" "" //"timeout" "0" //"port" "0" } "storage-local" { "driver" "sqlite" "database" "sourcemod-local" "weapons" "sm_weapons_db_connection" } "clientprefs" { "driver" "sqlite" "host" "localhost" "database" "clientprefs-sqlite" "user" "root" "pass" "" //"timeout" "0" //"port" "0" } "rankme" { "driver" "mysql" "host" "host" "database" "nazwa_bazy_danych" "user" "login_do_bazy" "pass" "haslo_do_bazy" "port" "3306" } } Najważniejsze w tym wszystkim jest niezapomnienie o odpowiednim umiejscowieniu danego elementu. Ostatni element musi znajdować się przed ostatnią klamrą zamykającą główny klucz który w przypadku baz danych to: "databases" - zobaczcie początek kodu / pliku databases.cfg.
    Przejdźmy teraz do folderu "plugins". Jego zawartość pierwotnie wygląda tak:

    Pluginy oraz folder disabled. Generalnie, w SourceModzie możemy robić wiele folderów w folderze plugins. Ułatwia to podział na dane typy pluginów których potem nie musimy nigdzie szukać. Wgrane pluginy zostaną tak czy siak odczytane chyba że znajdują się w folderze "disabled" - ten folder jest jako jedyny wyłączony z odczytu i można tam wrzucać starsze wersje pluginów czy pluginy które sprawiają nam problemy. Jeżeli chodzi o sortowanie pluginów możemy wszystkie podstawowe pluginy przenieść do folderu o przykładowej nazwie: base (oznacza on podstawowe pluginy bazowe). Nie będą one nam wtedy przesadzać i ułatwi nam to wizualnie ogarnięcie tego wszystkiego. Teraz pytanie jak instalować pluginy. Nic trudnego, pobieramy dany plugin - skorzystajmy z tego do którego odwoływałem się wcześniej tj. Kento RankMe i wrzucamy po prostu pliki do odpowiednich folderów tak jak autor ułożył w paczce, lub jeżeli posiadamy tylko sam plik "smx" wrzucamy go jedynie do "plugins". W przypadku RankMe, po rozpakowaniu plików widzimy że znajdujemy się w strukturze: /csgo/addons/sourcemod/ - tak więc należy przekopiować pliki/foldery właśnie do tego miejsca tj. "sourcemod". Po wgraniu powinniśmy widzieć taką strukturę w plugins (pluginy podstawowe przeniosłem do nowego folderu base):

    Aktualnie, pozostaje nam zrestartować serwer i ponownie sprawdzić listę pluginów za pomocą komendy: "sm plugins list" w konsoli naszego serwera:

    Jak widać, nasza lista zwiększyła się o jeden plugin - na pierwszej pozycji znajduje się "RankMe". Oznacza to że plugin został wgrany i uruchomił się bez błędów. Ot cała magia. Dokładnie tak samo postępujemy z każdym innym pluginem, czy to będzie kilka plików czy sam plik "smx".
    Dziś poznaliśmy w jaki sposób u podstaw konfigurować SourceMod'a na serwerze. Oczywiście istnieje jeszcze wiele elementów konfiguracji samego serwera jednak w tym poradniku będę skupiać się jedynie na SourceModzie ponieważ ostatecznym celem jest nauka pisania pluginów - co nam po tym że umiemy coś napisać jak nie umiemy skonfigurować samego SourceMod'a.
    Także dziękuję za uwagę i wszystkich zainteresowanych zapraszam na część drugą jak i kolejne które za jakiś czas powstaną.
  6. Upvote
    Charlie W. got a reaction from SzanFi in [PORADNIK] SourceMod czyli SERWEROWANIE OD POSTAW część. 1   
    Cześć wszystkim, dziś postanowiłem stworzyć dla was mam nadzieje dość prostą a zarazem użyteczną serie poradników dotyczących SourceMod'a, Serwerów CS:GO jak i samego programowania w SourcePawn'ie. Tym poradnikiem chciałbym zachęcić was do pracy nad serwerami która nie skupia się jedynie na tym jak rozkręcić sam serwer ale również nad tym jak go stworzyć i co należy zrobić aby wszystko było w jak najlepszym porządku. Serię postaram się głównie opisywać choć czasami możliwe jest że będę potrzebował coś nagrać - aby ułatwić pokazanie danej rzeczy. Jeżeli jednak ktoś będzie potrzebował w pełni zobaczyć jak daną rzecz się robi mogę nagrać filmik z wytłumaczeniem danego elementu. Całą serie zaplanowałem w pewien określony sposób i wraz z moim czasem wolnym będę opracowywać kolejne punkty z tej serii (zazwyczaj będzie to weekend, myślę że około dwóch części w jeden weekend).
    Plan ogólny:
    O Sobie oraz SourceModzie - podstawy tj. instalacja oraz konfiguracja. Inne dodatkowe wymagania. <-- Temat dzisiejszej lekcji Środowisko do programowania. Zmienne, Instrukcje Warunkowe oraz Pętle - element każdego języka programowania. Kilka słów o API czyli dokumentacji SourceMod'a. Wprowadzenie do samego SourceMod'a: dodatkowe zmienne, "obiektowość" SourceMod'a, jak działają pluginy tj. skąd biorą się dane akcje. SDKhooks czyli eventy na których możemy bardzo, bardzo dużo zdziałać. Timery oraz jak i do czego ich używamy. Praca z Bazą danych czyli MySql. Tworzenie menu, jak to w sumie działa? Console Variables czyli cvar'y, ich zmiany oraz wychwytywanie danej komendy. Tłumaczenia, jak działają, po co są, czy warto? Współpraca wielu pluginów na raz czyli jak tworzyć Native'y oraz do czego służą. Współpraca wielu pluginów część 2, czyli Forwardy oraz ich możliwości. Podsumowanie. Może zacznę krótko od samego Siebie. Nazywam się Raman lub szerzej znany jako Charlie, zaocznie studiuje Informatykę o hobbistycznej specjalizacji: "Inżynieria bezpieczeństwa systemów informatycznych". W samym tygodniu pracuje jako Python Developer gdzie pracuje nad systemami dotyczącymi zażądania przedsiębiorstwem. Hobbistycznie programuje od paru ładnych lat w językach takich jak: c++ (podobno), c# oraz właśnie Python. Samym programowaniem w SourceModzie zajmuje się od około 2 lat kiedy zostałem Opiekunem 5vs5 który aktualnie prowadzę wraz z @dbk który zajmuje się "marketingiem" zarządzaniem, gdzie ja wraz z @Bluu robimy za programistów oraz administratorów tych serwerów.
    Co warto wiedzieć? Co trzeba wiedzieć? Ciężko powiedzieć w gruncie rzeczy, mimo wszystko:
    posiadać podstawowe umiejętności rozumienia logiki matematycznej znajomość jakiegoś z języków programowania np. c++ (opcjonalne) znajomość języka angielskiego dużo chęci (ważne ^^) Przejdźmy teraz do samego SourceMod'a. Nie będziemy wgłębiali się tutaj jak on działa, kto go stworzył, w jakim języku itd. Skupimy się tutaj na podstawach oraz podstawowych informacjach dotyczących samego SourceMod'a oraz jego konfiguracji. SourceMod to modyfikacja która pozwala nam włączać oraz wyłączać napisane przez nas, inne osoby lub twórców SourceMod'a pluginy które pomagają nam w zarządzaniu serwerem. Tyle. Na prawdę. To cała potrzebna wiedza o tym czym to coś jest .
    Proces instalacji SourceMod'a. Część ta jest przeznaczona dla osób które chcą dowiedzieć się jak zrobić to ręcznie - większość hostingów posiada moduł instalacyjny modyfikacji z którego poziomu możemy zainstalować SourceMod + MetaMod w wersjach które poprawnie działają aktualnie na serwerze - tak, to dość ważne ponieważ aktualizacja CS:GO może spowodować że cały SourceMod nie będzie działać - wtedy niestety trzeba czekać aż Devy SourceMod'a napiszą odpowiednie poprawki - zwykle jest to wykonywane do kilku godzin po aktualizacji.
    Zacznijmy jednak cały proces od początku. Musimy udać się na dwie strony:
    SourceMod MetaMod na jednej jak i drugiej stronie udajemy się do zakładki Stable Builds i pobieramy najnowszą wersję dla wybranego systemu operacyjnego - ważna informacja! Na każdym hostingu serwerów online, systemem operacyjnym jest LINUX! Także pamiętajcie aby wgrywając to na serwer który kupiliśmy na hostingu pobierać wersje dla Linuxa!
    Kiedy pobierzemy oraz rozpakujemy pobrane pliki musimy zalogować się na nasz serwer poprzez klient'a FTP (zalecane) lub Edytor Plików zapewniony przez hosting. Ja używam FlieZill'i jednak to jakiego klienta używamy jest osobistą preferencją. W zależności od hostingu miejsce do którego zalogujemy się w FTP może różnie wyglądać dlatego też postanowiłem nie wstawiać żadnych zrzutów ekranu z tej części ponieważ może być to błędnie odebrane. Wracając jednak do instalacji: kiedy znajdujemy się już na FTP musimy udać się do folderu "csgo", powinien mniej/więcej wyglądać o tak:

    Kiedy znajdujemy się w tym miejscu, wgrywamy (kolejność w gruncie rzeczy nie ma znaczenia jednak jak kto woli) najpierw pliki MetaMod'a następnie SourceMod'a. Po wgraniu plików, zauważalną różnicą w folderze "csgo" będzie dojście nowego katalogu o nazwie: "addons" - jest to katalog w którym znajdują się modyfikacje do CS:GO. Zawartość tego folderu powinna wyglądać mniej więcej tak:

    Sam MetaMod zbytnio nas nie interesuje, interesujemy się głównie SourceMod'em - przejdźmy teraz do weryfikacji czy SourceMod działa poprawnie - udajemy się do panelu w wybranym przez nas hostingu, włączamy serwer - odczekujemy kilka chwil aż się w pełni włączy i udajemy się do konsoli. W konsoli wpisujemy: "meta list" - potwierdzi to działanie MetaMod'a (jest on wymagany do poprawnego działania SourceMod'a), jeżeli SourceMod znajdzie się na liście znaczy że MetaMod go wykrywa oraz sam SourceMod działa - w innym wypadku nie byłoby go na liście lub występowałby Error. Dla potwierdzenia można sprawdzić jeszcze jedną komendę taką jak: sm plugins list - wypisze to listę pluginów SourceMod'a która aktualnie działa na serwerze (są to pluginy podstawowe):


    Tadam. Skończone. Proces trwał około 5min, automatyczny instalator zrobi to kilka razy szybciej ale co tam. Zajmijmy się jeszcze przez chwilę tym co doszło nam na serwer w czasie instalacji SourceMod'a. Jak możecie zauważyć folder do którego rozpakowaliśmy paczkę zawierającą SourceMod'a posiada dwa foldery:
    addons cfg na tym drugim aktualnie się skupimy. Kiedy w niego wejdziemy zauważymy kolejny folder o nazwie "sourcemod" - w tym folderze właśnie znajdować będą się praktycznie wszystkie pliki konfiguracyjne pluginów (mogą zdarzyć się wyjątki, o tym powiem później) jednak jeżeli dany plugin posiada ConVar'y czyli komendy konfiguracyjne to właśnie tutaj automatycznie generować będą się pliki które będą odczytywane podczas ładowania pluginów oraz wartości tych komend będą ustawiane. Znajduje się też tutaj plik konfiguracyjny samego SourceMod'a czyli: sourcemod.cfg - w nim znajdują się wszystkie komendy konfiguracyjne podstawowego SourceMod'a np.
    // Specifies how admin activity should be relayed to users. Add up the values // below to get the functionality you want. // 1: Show admin activity to non-admins anonymously. // 2: If 1 is specified, admin names will be shown. // 4: Show admin activity to admins anonymously. // 8: If 4 is specified, admin names will be shown. // 16: Always show admin names to root users. // -- // Default: 13 (1+4+8) sm_show_activity 13 jest to ustawienie pokazujące aktywność adminów. Pierwotnie wartość ta ustawiona jest na 13 czyli: zwykły gracz widzi aktywność admina choć nie widzi jego nicku, inny admin widzi aktywność admina oraz widzi jego nick. Dość proste. Jednak nie tym mamy się tutaj zajmować - tutaj właśnie znajdują się takie ustawienia. Można hobbistycznie zapoznać się z tym plikiem. W tym folderze to wszystko.
    Pierwszym folderem o którym wcześniej wspominałem jest "addons". W środku znajduje się taki folder jak "sourcemod", po wejściu w niego ukazuje się nam kilka innych folderów. Pominę w tym miejscu SS'a, od ręki wypiszę oraz opowiem czym są dane foldery i czy warto się aktualnie na nich skupiać:
    bin - zawiera pliki bibliotek SourceMod'a do danych gier, folderu nie ruszać - generalnie zlać. configs - zawiera pliki konfiguracyjne SourceMod'a, niektórych pluginów czy dane jak np. konfiguracje adminów, baz danych itd. data - zawiera pliki lokalnych baz danych - generalnie zlać. extensions - zawiera pliki bibliotek dodatkowych modułów SourceMod'a np. obsługi baz danych, geoip (lokalizacja po adresie IP) itp. folder ważny jeżeli dany plugin potrzebuje dodatkowych modułów np. PTaH'a czy DHooks. gamedata - zawiera pliki posiadające w sobie informacje dotyczące danych gry czyli ważnych "liczb" które są aktualizowane wraz z większymi aktualizacjami CS:GO - ważny folder, na tyle aby nie modyfikować w nim nic jeżeli się nie wie co się robi. logs - zawiera pliki logów które generuje SourceMod - użycia komend, errorów itp. tutaj zaglądamy jeżeli chcemy coś sprawdzić. plugins - zawiera pliki WYKONAWCZE w formacie "smx" naszych pluginów - tutaj wrzucamy nasze pluginy. Proces instalacji pluginów przedstawię za chwilkę. scripting - zawiera pliki o formacie "sp" czyli nie prze kompilowanego kodu. Nie zaleca się wrzucać tam własnego kodu - ryzykujemy tym kradzież naszych pluginów. translations - zawiera pliki tekstowe odpowiednio nazwane (określa się to w pluginie). Cała ta lista zwiera informacje ważne lub mniej ważne dotyczące folderów z którymi należy się zaprzyjaźnić w kontekście SourceMod'a. Na sam koniec tej części opowiem dokładniej o dwóch folderach czyli:
    configs plugins Zacznijmy właśnie od "configs" - jak wyżej wspomniałem, znajdują się tam pliki konfiguracyjne SourceMod'a oraz części pluginów. Najważniejszymi plikami są dla nas aktualnie są:
    admins_simple.ini - w tym pliku dodajemy naszych adminów. W praktyce robi się to poprzez SourceBans'a jednak flagi właściciela najlepiej wprowadzić ręcznie do tego pliki. Kiedy otworzymy plik znajdziemy tam cały poradnik w jaki sposób konfigurować danego admina jednak zalecam to olać i przeczytać co ja mam w tej kwestii do powiedzenia. W mojej opinii istnieje jeden poprawny sposób dodania admina: na steam_id. Nic innego i tyle. Kwestia bezpieczeństwa. W jaki sposób go dodajemy? To dość proste - w nowej linijce musimy wypełnić dwie tak zwane ciapki czyli: "wpełnienie". Co mam dokładniej na myśli? Formułą jaką się tutaj kierujemy jest taki ogólny wzór (są dwa, zaraz powiem dlaczego):
    "STEAM_ID" "FLAGI" "STEAM_ID" "IMMUNITED:FLAGI" W odpowiednie pola musimy podać odpowiednie flagi które będzie SourceMod odczytywał na początku każdej mapy lub użycia komendy: sm_reloadadmins. Zacznijmy najpierw od samych flag, czym są i o co w ogóle chodzi... W SourceModzie powstał system flag za pomocą których danemu graczowi przypisywane są pozwolenia na użycie danej komendy, oficjalna lista flag to:
    a - Flaga Rezerwacji Slota b - Flaga Generyczna, określa czy ktoś ma admina (WYMAGANA!) c - Flaga Kick d - Flaga Banowania e - Flaga Odbanowywania f - Flaga Fun np. Slay'owania g - Flaga zmiany Mapy h - Flaga zmiany ConVar'ów i - Flaga wczytywania plików konfiguracyjnych j - Flaga Chatu np. admin czat itp. k - Flaga głosowań l - Flaga hasła m - Flaga Rcon n - Flaga sv_cheats o - Custom 1 p - Custom 2 q - Custom 3 r - Custom 4 s - Custom 5 t - Custom 6 z - Flaga Root'a Ogólną ideom tych flag jest jak już wcześniej wspomniałem nadanie odpowiednich permisji. Standardowy admin posiada np. takie flagi: "abcdefgjk" - podstawowe funkcje admina, kick, ban, slap zmiana mapy itd. Właściciel serwera zazwyczaj wpisuje sobie flagę: "z" - dostaje wszystkie flagi na raz, z wyjątkiem flag Customowych czyli: o, p, q, r, s oraz t. Z jakiegoś powodu te flagi nie są przypisane do flagi "z". Teraz kiedy znamy już flagi, "dodajmy" nowego admina. Jeżeli chciałbym samemu sobie nadać podstawowe uprawnienia na serwerze wpisałbym coś takiego (zgodnie z pierwszym wzorem):
    "STEAM_1:1:37802072" "abcdefgjk" //Charlie Dostałbym wtedy podstawowe uprawnienia. Kiedy chciałbym dostać uprawnienia właściciela tj. "root'a" musiałbym wpisać:
    "STEAM_1:1:37802072" "z" //Charlie Posiadałbym wtedy wszystkie flagi (z wyjątkiem customów). Niestety, w tej sytuacji każdy inny admin mógłby np. mnie wyrzucić z serwera, dlatego też powstał system immunitedu (wzór drugi). W tej sytuacji przed flagą "z", należy dodać: "99:" co w efekcie da nam taki twór:
    "STEAM_1:1:37802072" "99:z" //Charlie Oznacza to że, jedynie admin z takim samym immunitedem lub osoba z flagą "z" (tak, ona omija immunited) mogłaby wykonać jakąś komendę na mnie. Jednak tak jak już wspomniałem, flagi głównie dodaje się w SourceBans'ie i w naszym pliku będziemy jedynie widzieli linijki z flagami "z" oraz immunitedem: "99".
    admin_overrides.cfg - plik w którym zabezpieczamy niektóre komendy do których uprawnienia musimy z jakiegoś powodu nadać jednak nie chcemy aby dane komendy były używane przez kogokolwiek nieupoważnionego do tego. Z doświadczenia wiem że zwykle daną komendę ustawia się na flagę "z" o której wcześniej wspominałem tak aby zablokować w pełni dostęp do niej zwykłym adminem. W pliku znajduje się taka część:
    Overrides { //COŚ TAM MOŻE BYĆ } w miejscu w którym wpisany jest komentarz tj. informacja po "//" możemy wpisywać każdą komendę używając odpowiedniego wzoru: "KOMENDA" "Flaga na która ustawiamy komendę" Przykład realnego zastosowania:
    Overrides { "sm_rename" "z" "sm_beacon" "z" "sm_gravity" "z" } Generalnie, nic trudnego .
    databases.cfg - ostatni, w gruncie rzeczy najważniejszy plik ze wszystkich. W tym pliku znajdujemy konfigurację danych dostępowych do naszych baz danych - bardzo ważne jest aby nikomu go nie udostępniać ponieważ posiadając dane osoba postronna bardzo łatwo może zrobić nam z nimi wszystko. Podstawowy plik wygląda mniej więcej tak:
    "Databases" { "driver_default" "mysql" // When specifying "host", you may use an IP address, a hostname, or a socket file path "default" { "driver" "default" "host" "localhost" "database" "sourcemod" "user" "root" "pass" "" //"timeout" "0" //"port" "0" } "storage-local" { "driver" "sqlite" "database" "sourcemod-local" "weapons" "sm_weapons_db_connection" } "clientprefs" { "driver" "sqlite" "host" "localhost" "database" "clientprefs-sqlite" "user" "root" "pass" "" //"timeout" "0" //"port" "0" } } są to podstawowe dane odwołujące się do danych lokalnych. Zanim przedstawię co za co odpowiada pokaże przykład użycia oraz poprawnego skonfigurowania danej bazy danych w tym pliku:
    "rankme" { "driver" "mysql" "host" "host" "database" "nazwa_bazy_danych" "user" "login_do_bazy" "pass" "hasło_do_bazy" "port" "3306" } Będzie to przykładowa konfiguracja bazy danych do użytku przez plugin: KLICK. Prosta analiza każdego miejsca - opiera się to na zasadzie tak zwanego KV czyli Key Value ("klucz": "wartość dla klucza").
    "rankme" - jest to nazwa klucza jakiego dany plugin będzie szukać, może być to clientprefs, default itd. wszystko zależy od pluginu. driver - to określenie w jakim systemie działamy, mostly "mysql" host - adres IP lub domena z którą będziemy się łączyć np. "mysql.pukawka.pl" database - nazwa bazy z której będziemy pobierać dane user - login do danej bazy danych pass - hasło do danej bazy danych port - port na której nasłuchuje baza danych. Dla MySql'a jest 3306, dla np. PostgreSQL podstawowym portem jest 5432. Kiedy wprowadzimy nasze dane musimy po prostu dodać taką formułkę KV do naszego pliku, ostatecznym efektem będzie:
    "Databases" { "driver_default" "mysql" // When specifying "host", you may use an IP address, a hostname, or a socket file path "default" { "driver" "default" "host" "localhost" "database" "sourcemod" "user" "root" "pass" "" //"timeout" "0" //"port" "0" } "storage-local" { "driver" "sqlite" "database" "sourcemod-local" "weapons" "sm_weapons_db_connection" } "clientprefs" { "driver" "sqlite" "host" "localhost" "database" "clientprefs-sqlite" "user" "root" "pass" "" //"timeout" "0" //"port" "0" } "rankme" { "driver" "mysql" "host" "host" "database" "nazwa_bazy_danych" "user" "login_do_bazy" "pass" "haslo_do_bazy" "port" "3306" } } Najważniejsze w tym wszystkim jest niezapomnienie o odpowiednim umiejscowieniu danego elementu. Ostatni element musi znajdować się przed ostatnią klamrą zamykającą główny klucz który w przypadku baz danych to: "databases" - zobaczcie początek kodu / pliku databases.cfg.
    Przejdźmy teraz do folderu "plugins". Jego zawartość pierwotnie wygląda tak:

    Pluginy oraz folder disabled. Generalnie, w SourceModzie możemy robić wiele folderów w folderze plugins. Ułatwia to podział na dane typy pluginów których potem nie musimy nigdzie szukać. Wgrane pluginy zostaną tak czy siak odczytane chyba że znajdują się w folderze "disabled" - ten folder jest jako jedyny wyłączony z odczytu i można tam wrzucać starsze wersje pluginów czy pluginy które sprawiają nam problemy. Jeżeli chodzi o sortowanie pluginów możemy wszystkie podstawowe pluginy przenieść do folderu o przykładowej nazwie: base (oznacza on podstawowe pluginy bazowe). Nie będą one nam wtedy przesadzać i ułatwi nam to wizualnie ogarnięcie tego wszystkiego. Teraz pytanie jak instalować pluginy. Nic trudnego, pobieramy dany plugin - skorzystajmy z tego do którego odwoływałem się wcześniej tj. Kento RankMe i wrzucamy po prostu pliki do odpowiednich folderów tak jak autor ułożył w paczce, lub jeżeli posiadamy tylko sam plik "smx" wrzucamy go jedynie do "plugins". W przypadku RankMe, po rozpakowaniu plików widzimy że znajdujemy się w strukturze: /csgo/addons/sourcemod/ - tak więc należy przekopiować pliki/foldery właśnie do tego miejsca tj. "sourcemod". Po wgraniu powinniśmy widzieć taką strukturę w plugins (pluginy podstawowe przeniosłem do nowego folderu base):

    Aktualnie, pozostaje nam zrestartować serwer i ponownie sprawdzić listę pluginów za pomocą komendy: "sm plugins list" w konsoli naszego serwera:

    Jak widać, nasza lista zwiększyła się o jeden plugin - na pierwszej pozycji znajduje się "RankMe". Oznacza to że plugin został wgrany i uruchomił się bez błędów. Ot cała magia. Dokładnie tak samo postępujemy z każdym innym pluginem, czy to będzie kilka plików czy sam plik "smx".
    Dziś poznaliśmy w jaki sposób u podstaw konfigurować SourceMod'a na serwerze. Oczywiście istnieje jeszcze wiele elementów konfiguracji samego serwera jednak w tym poradniku będę skupiać się jedynie na SourceModzie ponieważ ostatecznym celem jest nauka pisania pluginów - co nam po tym że umiemy coś napisać jak nie umiemy skonfigurować samego SourceMod'a.
    Także dziękuję za uwagę i wszystkich zainteresowanych zapraszam na część drugą jak i kolejne które za jakiś czas powstaną.
  7. Upvote
    Charlie W. got a reaction from dbk in [PORADNIK] SourceMod czyli SERWEROWANIE OD POSTAW część. 1   
    Cześć wszystkim, dziś postanowiłem stworzyć dla was mam nadzieje dość prostą a zarazem użyteczną serie poradników dotyczących SourceMod'a, Serwerów CS:GO jak i samego programowania w SourcePawn'ie. Tym poradnikiem chciałbym zachęcić was do pracy nad serwerami która nie skupia się jedynie na tym jak rozkręcić sam serwer ale również nad tym jak go stworzyć i co należy zrobić aby wszystko było w jak najlepszym porządku. Serię postaram się głównie opisywać choć czasami możliwe jest że będę potrzebował coś nagrać - aby ułatwić pokazanie danej rzeczy. Jeżeli jednak ktoś będzie potrzebował w pełni zobaczyć jak daną rzecz się robi mogę nagrać filmik z wytłumaczeniem danego elementu. Całą serie zaplanowałem w pewien określony sposób i wraz z moim czasem wolnym będę opracowywać kolejne punkty z tej serii (zazwyczaj będzie to weekend, myślę że około dwóch części w jeden weekend).
    Plan ogólny:
    O Sobie oraz SourceModzie - podstawy tj. instalacja oraz konfiguracja. Inne dodatkowe wymagania. <-- Temat dzisiejszej lekcji Środowisko do programowania. Zmienne, Instrukcje Warunkowe oraz Pętle - element każdego języka programowania. Kilka słów o API czyli dokumentacji SourceMod'a. Wprowadzenie do samego SourceMod'a: dodatkowe zmienne, "obiektowość" SourceMod'a, jak działają pluginy tj. skąd biorą się dane akcje. SDKhooks czyli eventy na których możemy bardzo, bardzo dużo zdziałać. Timery oraz jak i do czego ich używamy. Praca z Bazą danych czyli MySql. Tworzenie menu, jak to w sumie działa? Console Variables czyli cvar'y, ich zmiany oraz wychwytywanie danej komendy. Tłumaczenia, jak działają, po co są, czy warto? Współpraca wielu pluginów na raz czyli jak tworzyć Native'y oraz do czego służą. Współpraca wielu pluginów część 2, czyli Forwardy oraz ich możliwości. Podsumowanie. Może zacznę krótko od samego Siebie. Nazywam się Raman lub szerzej znany jako Charlie, zaocznie studiuje Informatykę o hobbistycznej specjalizacji: "Inżynieria bezpieczeństwa systemów informatycznych". W samym tygodniu pracuje jako Python Developer gdzie pracuje nad systemami dotyczącymi zażądania przedsiębiorstwem. Hobbistycznie programuje od paru ładnych lat w językach takich jak: c++ (podobno), c# oraz właśnie Python. Samym programowaniem w SourceModzie zajmuje się od około 2 lat kiedy zostałem Opiekunem 5vs5 który aktualnie prowadzę wraz z @dbk który zajmuje się "marketingiem" zarządzaniem, gdzie ja wraz z @Bluu robimy za programistów oraz administratorów tych serwerów.
    Co warto wiedzieć? Co trzeba wiedzieć? Ciężko powiedzieć w gruncie rzeczy, mimo wszystko:
    posiadać podstawowe umiejętności rozumienia logiki matematycznej znajomość jakiegoś z języków programowania np. c++ (opcjonalne) znajomość języka angielskiego dużo chęci (ważne ^^) Przejdźmy teraz do samego SourceMod'a. Nie będziemy wgłębiali się tutaj jak on działa, kto go stworzył, w jakim języku itd. Skupimy się tutaj na podstawach oraz podstawowych informacjach dotyczących samego SourceMod'a oraz jego konfiguracji. SourceMod to modyfikacja która pozwala nam włączać oraz wyłączać napisane przez nas, inne osoby lub twórców SourceMod'a pluginy które pomagają nam w zarządzaniu serwerem. Tyle. Na prawdę. To cała potrzebna wiedza o tym czym to coś jest .
    Proces instalacji SourceMod'a. Część ta jest przeznaczona dla osób które chcą dowiedzieć się jak zrobić to ręcznie - większość hostingów posiada moduł instalacyjny modyfikacji z którego poziomu możemy zainstalować SourceMod + MetaMod w wersjach które poprawnie działają aktualnie na serwerze - tak, to dość ważne ponieważ aktualizacja CS:GO może spowodować że cały SourceMod nie będzie działać - wtedy niestety trzeba czekać aż Devy SourceMod'a napiszą odpowiednie poprawki - zwykle jest to wykonywane do kilku godzin po aktualizacji.
    Zacznijmy jednak cały proces od początku. Musimy udać się na dwie strony:
    SourceMod MetaMod na jednej jak i drugiej stronie udajemy się do zakładki Stable Builds i pobieramy najnowszą wersję dla wybranego systemu operacyjnego - ważna informacja! Na każdym hostingu serwerów online, systemem operacyjnym jest LINUX! Także pamiętajcie aby wgrywając to na serwer który kupiliśmy na hostingu pobierać wersje dla Linuxa!
    Kiedy pobierzemy oraz rozpakujemy pobrane pliki musimy zalogować się na nasz serwer poprzez klient'a FTP (zalecane) lub Edytor Plików zapewniony przez hosting. Ja używam FlieZill'i jednak to jakiego klienta używamy jest osobistą preferencją. W zależności od hostingu miejsce do którego zalogujemy się w FTP może różnie wyglądać dlatego też postanowiłem nie wstawiać żadnych zrzutów ekranu z tej części ponieważ może być to błędnie odebrane. Wracając jednak do instalacji: kiedy znajdujemy się już na FTP musimy udać się do folderu "csgo", powinien mniej/więcej wyglądać o tak:

    Kiedy znajdujemy się w tym miejscu, wgrywamy (kolejność w gruncie rzeczy nie ma znaczenia jednak jak kto woli) najpierw pliki MetaMod'a następnie SourceMod'a. Po wgraniu plików, zauważalną różnicą w folderze "csgo" będzie dojście nowego katalogu o nazwie: "addons" - jest to katalog w którym znajdują się modyfikacje do CS:GO. Zawartość tego folderu powinna wyglądać mniej więcej tak:

    Sam MetaMod zbytnio nas nie interesuje, interesujemy się głównie SourceMod'em - przejdźmy teraz do weryfikacji czy SourceMod działa poprawnie - udajemy się do panelu w wybranym przez nas hostingu, włączamy serwer - odczekujemy kilka chwil aż się w pełni włączy i udajemy się do konsoli. W konsoli wpisujemy: "meta list" - potwierdzi to działanie MetaMod'a (jest on wymagany do poprawnego działania SourceMod'a), jeżeli SourceMod znajdzie się na liście znaczy że MetaMod go wykrywa oraz sam SourceMod działa - w innym wypadku nie byłoby go na liście lub występowałby Error. Dla potwierdzenia można sprawdzić jeszcze jedną komendę taką jak: sm plugins list - wypisze to listę pluginów SourceMod'a która aktualnie działa na serwerze (są to pluginy podstawowe):


    Tadam. Skończone. Proces trwał około 5min, automatyczny instalator zrobi to kilka razy szybciej ale co tam. Zajmijmy się jeszcze przez chwilę tym co doszło nam na serwer w czasie instalacji SourceMod'a. Jak możecie zauważyć folder do którego rozpakowaliśmy paczkę zawierającą SourceMod'a posiada dwa foldery:
    addons cfg na tym drugim aktualnie się skupimy. Kiedy w niego wejdziemy zauważymy kolejny folder o nazwie "sourcemod" - w tym folderze właśnie znajdować będą się praktycznie wszystkie pliki konfiguracyjne pluginów (mogą zdarzyć się wyjątki, o tym powiem później) jednak jeżeli dany plugin posiada ConVar'y czyli komendy konfiguracyjne to właśnie tutaj automatycznie generować będą się pliki które będą odczytywane podczas ładowania pluginów oraz wartości tych komend będą ustawiane. Znajduje się też tutaj plik konfiguracyjny samego SourceMod'a czyli: sourcemod.cfg - w nim znajdują się wszystkie komendy konfiguracyjne podstawowego SourceMod'a np.
    // Specifies how admin activity should be relayed to users. Add up the values // below to get the functionality you want. // 1: Show admin activity to non-admins anonymously. // 2: If 1 is specified, admin names will be shown. // 4: Show admin activity to admins anonymously. // 8: If 4 is specified, admin names will be shown. // 16: Always show admin names to root users. // -- // Default: 13 (1+4+8) sm_show_activity 13 jest to ustawienie pokazujące aktywność adminów. Pierwotnie wartość ta ustawiona jest na 13 czyli: zwykły gracz widzi aktywność admina choć nie widzi jego nicku, inny admin widzi aktywność admina oraz widzi jego nick. Dość proste. Jednak nie tym mamy się tutaj zajmować - tutaj właśnie znajdują się takie ustawienia. Można hobbistycznie zapoznać się z tym plikiem. W tym folderze to wszystko.
    Pierwszym folderem o którym wcześniej wspominałem jest "addons". W środku znajduje się taki folder jak "sourcemod", po wejściu w niego ukazuje się nam kilka innych folderów. Pominę w tym miejscu SS'a, od ręki wypiszę oraz opowiem czym są dane foldery i czy warto się aktualnie na nich skupiać:
    bin - zawiera pliki bibliotek SourceMod'a do danych gier, folderu nie ruszać - generalnie zlać. configs - zawiera pliki konfiguracyjne SourceMod'a, niektórych pluginów czy dane jak np. konfiguracje adminów, baz danych itd. data - zawiera pliki lokalnych baz danych - generalnie zlać. extensions - zawiera pliki bibliotek dodatkowych modułów SourceMod'a np. obsługi baz danych, geoip (lokalizacja po adresie IP) itp. folder ważny jeżeli dany plugin potrzebuje dodatkowych modułów np. PTaH'a czy DHooks. gamedata - zawiera pliki posiadające w sobie informacje dotyczące danych gry czyli ważnych "liczb" które są aktualizowane wraz z większymi aktualizacjami CS:GO - ważny folder, na tyle aby nie modyfikować w nim nic jeżeli się nie wie co się robi. logs - zawiera pliki logów które generuje SourceMod - użycia komend, errorów itp. tutaj zaglądamy jeżeli chcemy coś sprawdzić. plugins - zawiera pliki WYKONAWCZE w formacie "smx" naszych pluginów - tutaj wrzucamy nasze pluginy. Proces instalacji pluginów przedstawię za chwilkę. scripting - zawiera pliki o formacie "sp" czyli nie prze kompilowanego kodu. Nie zaleca się wrzucać tam własnego kodu - ryzykujemy tym kradzież naszych pluginów. translations - zawiera pliki tekstowe odpowiednio nazwane (określa się to w pluginie). Cała ta lista zwiera informacje ważne lub mniej ważne dotyczące folderów z którymi należy się zaprzyjaźnić w kontekście SourceMod'a. Na sam koniec tej części opowiem dokładniej o dwóch folderach czyli:
    configs plugins Zacznijmy właśnie od "configs" - jak wyżej wspomniałem, znajdują się tam pliki konfiguracyjne SourceMod'a oraz części pluginów. Najważniejszymi plikami są dla nas aktualnie są:
    admins_simple.ini - w tym pliku dodajemy naszych adminów. W praktyce robi się to poprzez SourceBans'a jednak flagi właściciela najlepiej wprowadzić ręcznie do tego pliki. Kiedy otworzymy plik znajdziemy tam cały poradnik w jaki sposób konfigurować danego admina jednak zalecam to olać i przeczytać co ja mam w tej kwestii do powiedzenia. W mojej opinii istnieje jeden poprawny sposób dodania admina: na steam_id. Nic innego i tyle. Kwestia bezpieczeństwa. W jaki sposób go dodajemy? To dość proste - w nowej linijce musimy wypełnić dwie tak zwane ciapki czyli: "wpełnienie". Co mam dokładniej na myśli? Formułą jaką się tutaj kierujemy jest taki ogólny wzór (są dwa, zaraz powiem dlaczego):
    "STEAM_ID" "FLAGI" "STEAM_ID" "IMMUNITED:FLAGI" W odpowiednie pola musimy podać odpowiednie flagi które będzie SourceMod odczytywał na początku każdej mapy lub użycia komendy: sm_reloadadmins. Zacznijmy najpierw od samych flag, czym są i o co w ogóle chodzi... W SourceModzie powstał system flag za pomocą których danemu graczowi przypisywane są pozwolenia na użycie danej komendy, oficjalna lista flag to:
    a - Flaga Rezerwacji Slota b - Flaga Generyczna, określa czy ktoś ma admina (WYMAGANA!) c - Flaga Kick d - Flaga Banowania e - Flaga Odbanowywania f - Flaga Fun np. Slay'owania g - Flaga zmiany Mapy h - Flaga zmiany ConVar'ów i - Flaga wczytywania plików konfiguracyjnych j - Flaga Chatu np. admin czat itp. k - Flaga głosowań l - Flaga hasła m - Flaga Rcon n - Flaga sv_cheats o - Custom 1 p - Custom 2 q - Custom 3 r - Custom 4 s - Custom 5 t - Custom 6 z - Flaga Root'a Ogólną ideom tych flag jest jak już wcześniej wspomniałem nadanie odpowiednich permisji. Standardowy admin posiada np. takie flagi: "abcdefgjk" - podstawowe funkcje admina, kick, ban, slap zmiana mapy itd. Właściciel serwera zazwyczaj wpisuje sobie flagę: "z" - dostaje wszystkie flagi na raz, z wyjątkiem flag Customowych czyli: o, p, q, r, s oraz t. Z jakiegoś powodu te flagi nie są przypisane do flagi "z". Teraz kiedy znamy już flagi, "dodajmy" nowego admina. Jeżeli chciałbym samemu sobie nadać podstawowe uprawnienia na serwerze wpisałbym coś takiego (zgodnie z pierwszym wzorem):
    "STEAM_1:1:37802072" "abcdefgjk" //Charlie Dostałbym wtedy podstawowe uprawnienia. Kiedy chciałbym dostać uprawnienia właściciela tj. "root'a" musiałbym wpisać:
    "STEAM_1:1:37802072" "z" //Charlie Posiadałbym wtedy wszystkie flagi (z wyjątkiem customów). Niestety, w tej sytuacji każdy inny admin mógłby np. mnie wyrzucić z serwera, dlatego też powstał system immunitedu (wzór drugi). W tej sytuacji przed flagą "z", należy dodać: "99:" co w efekcie da nam taki twór:
    "STEAM_1:1:37802072" "99:z" //Charlie Oznacza to że, jedynie admin z takim samym immunitedem lub osoba z flagą "z" (tak, ona omija immunited) mogłaby wykonać jakąś komendę na mnie. Jednak tak jak już wspomniałem, flagi głównie dodaje się w SourceBans'ie i w naszym pliku będziemy jedynie widzieli linijki z flagami "z" oraz immunitedem: "99".
    admin_overrides.cfg - plik w którym zabezpieczamy niektóre komendy do których uprawnienia musimy z jakiegoś powodu nadać jednak nie chcemy aby dane komendy były używane przez kogokolwiek nieupoważnionego do tego. Z doświadczenia wiem że zwykle daną komendę ustawia się na flagę "z" o której wcześniej wspominałem tak aby zablokować w pełni dostęp do niej zwykłym adminem. W pliku znajduje się taka część:
    Overrides { //COŚ TAM MOŻE BYĆ } w miejscu w którym wpisany jest komentarz tj. informacja po "//" możemy wpisywać każdą komendę używając odpowiedniego wzoru: "KOMENDA" "Flaga na która ustawiamy komendę" Przykład realnego zastosowania:
    Overrides { "sm_rename" "z" "sm_beacon" "z" "sm_gravity" "z" } Generalnie, nic trudnego .
    databases.cfg - ostatni, w gruncie rzeczy najważniejszy plik ze wszystkich. W tym pliku znajdujemy konfigurację danych dostępowych do naszych baz danych - bardzo ważne jest aby nikomu go nie udostępniać ponieważ posiadając dane osoba postronna bardzo łatwo może zrobić nam z nimi wszystko. Podstawowy plik wygląda mniej więcej tak:
    "Databases" { "driver_default" "mysql" // When specifying "host", you may use an IP address, a hostname, or a socket file path "default" { "driver" "default" "host" "localhost" "database" "sourcemod" "user" "root" "pass" "" //"timeout" "0" //"port" "0" } "storage-local" { "driver" "sqlite" "database" "sourcemod-local" "weapons" "sm_weapons_db_connection" } "clientprefs" { "driver" "sqlite" "host" "localhost" "database" "clientprefs-sqlite" "user" "root" "pass" "" //"timeout" "0" //"port" "0" } } są to podstawowe dane odwołujące się do danych lokalnych. Zanim przedstawię co za co odpowiada pokaże przykład użycia oraz poprawnego skonfigurowania danej bazy danych w tym pliku:
    "rankme" { "driver" "mysql" "host" "host" "database" "nazwa_bazy_danych" "user" "login_do_bazy" "pass" "hasło_do_bazy" "port" "3306" } Będzie to przykładowa konfiguracja bazy danych do użytku przez plugin: KLICK. Prosta analiza każdego miejsca - opiera się to na zasadzie tak zwanego KV czyli Key Value ("klucz": "wartość dla klucza").
    "rankme" - jest to nazwa klucza jakiego dany plugin będzie szukać, może być to clientprefs, default itd. wszystko zależy od pluginu. driver - to określenie w jakim systemie działamy, mostly "mysql" host - adres IP lub domena z którą będziemy się łączyć np. "mysql.pukawka.pl" database - nazwa bazy z której będziemy pobierać dane user - login do danej bazy danych pass - hasło do danej bazy danych port - port na której nasłuchuje baza danych. Dla MySql'a jest 3306, dla np. PostgreSQL podstawowym portem jest 5432. Kiedy wprowadzimy nasze dane musimy po prostu dodać taką formułkę KV do naszego pliku, ostatecznym efektem będzie:
    "Databases" { "driver_default" "mysql" // When specifying "host", you may use an IP address, a hostname, or a socket file path "default" { "driver" "default" "host" "localhost" "database" "sourcemod" "user" "root" "pass" "" //"timeout" "0" //"port" "0" } "storage-local" { "driver" "sqlite" "database" "sourcemod-local" "weapons" "sm_weapons_db_connection" } "clientprefs" { "driver" "sqlite" "host" "localhost" "database" "clientprefs-sqlite" "user" "root" "pass" "" //"timeout" "0" //"port" "0" } "rankme" { "driver" "mysql" "host" "host" "database" "nazwa_bazy_danych" "user" "login_do_bazy" "pass" "haslo_do_bazy" "port" "3306" } } Najważniejsze w tym wszystkim jest niezapomnienie o odpowiednim umiejscowieniu danego elementu. Ostatni element musi znajdować się przed ostatnią klamrą zamykającą główny klucz który w przypadku baz danych to: "databases" - zobaczcie początek kodu / pliku databases.cfg.
    Przejdźmy teraz do folderu "plugins". Jego zawartość pierwotnie wygląda tak:

    Pluginy oraz folder disabled. Generalnie, w SourceModzie możemy robić wiele folderów w folderze plugins. Ułatwia to podział na dane typy pluginów których potem nie musimy nigdzie szukać. Wgrane pluginy zostaną tak czy siak odczytane chyba że znajdują się w folderze "disabled" - ten folder jest jako jedyny wyłączony z odczytu i można tam wrzucać starsze wersje pluginów czy pluginy które sprawiają nam problemy. Jeżeli chodzi o sortowanie pluginów możemy wszystkie podstawowe pluginy przenieść do folderu o przykładowej nazwie: base (oznacza on podstawowe pluginy bazowe). Nie będą one nam wtedy przesadzać i ułatwi nam to wizualnie ogarnięcie tego wszystkiego. Teraz pytanie jak instalować pluginy. Nic trudnego, pobieramy dany plugin - skorzystajmy z tego do którego odwoływałem się wcześniej tj. Kento RankMe i wrzucamy po prostu pliki do odpowiednich folderów tak jak autor ułożył w paczce, lub jeżeli posiadamy tylko sam plik "smx" wrzucamy go jedynie do "plugins". W przypadku RankMe, po rozpakowaniu plików widzimy że znajdujemy się w strukturze: /csgo/addons/sourcemod/ - tak więc należy przekopiować pliki/foldery właśnie do tego miejsca tj. "sourcemod". Po wgraniu powinniśmy widzieć taką strukturę w plugins (pluginy podstawowe przeniosłem do nowego folderu base):

    Aktualnie, pozostaje nam zrestartować serwer i ponownie sprawdzić listę pluginów za pomocą komendy: "sm plugins list" w konsoli naszego serwera:

    Jak widać, nasza lista zwiększyła się o jeden plugin - na pierwszej pozycji znajduje się "RankMe". Oznacza to że plugin został wgrany i uruchomił się bez błędów. Ot cała magia. Dokładnie tak samo postępujemy z każdym innym pluginem, czy to będzie kilka plików czy sam plik "smx".
    Dziś poznaliśmy w jaki sposób u podstaw konfigurować SourceMod'a na serwerze. Oczywiście istnieje jeszcze wiele elementów konfiguracji samego serwera jednak w tym poradniku będę skupiać się jedynie na SourceModzie ponieważ ostatecznym celem jest nauka pisania pluginów - co nam po tym że umiemy coś napisać jak nie umiemy skonfigurować samego SourceMod'a.
    Także dziękuję za uwagę i wszystkich zainteresowanych zapraszam na część drugą jak i kolejne które za jakiś czas powstaną.
  8. Like
    Charlie W. got a reaction from T∆X in [PORADNIK] SourceMod czyli SERWEROWANIE OD POSTAW część. 1   
    Cześć wszystkim, dziś postanowiłem stworzyć dla was mam nadzieje dość prostą a zarazem użyteczną serie poradników dotyczących SourceMod'a, Serwerów CS:GO jak i samego programowania w SourcePawn'ie. Tym poradnikiem chciałbym zachęcić was do pracy nad serwerami która nie skupia się jedynie na tym jak rozkręcić sam serwer ale również nad tym jak go stworzyć i co należy zrobić aby wszystko było w jak najlepszym porządku. Serię postaram się głównie opisywać choć czasami możliwe jest że będę potrzebował coś nagrać - aby ułatwić pokazanie danej rzeczy. Jeżeli jednak ktoś będzie potrzebował w pełni zobaczyć jak daną rzecz się robi mogę nagrać filmik z wytłumaczeniem danego elementu. Całą serie zaplanowałem w pewien określony sposób i wraz z moim czasem wolnym będę opracowywać kolejne punkty z tej serii (zazwyczaj będzie to weekend, myślę że około dwóch części w jeden weekend).
    Plan ogólny:
    O Sobie oraz SourceModzie - podstawy tj. instalacja oraz konfiguracja. Inne dodatkowe wymagania. <-- Temat dzisiejszej lekcji Środowisko do programowania. Zmienne, Instrukcje Warunkowe oraz Pętle - element każdego języka programowania. Kilka słów o API czyli dokumentacji SourceMod'a. Wprowadzenie do samego SourceMod'a: dodatkowe zmienne, "obiektowość" SourceMod'a, jak działają pluginy tj. skąd biorą się dane akcje. SDKhooks czyli eventy na których możemy bardzo, bardzo dużo zdziałać. Timery oraz jak i do czego ich używamy. Praca z Bazą danych czyli MySql. Tworzenie menu, jak to w sumie działa? Console Variables czyli cvar'y, ich zmiany oraz wychwytywanie danej komendy. Tłumaczenia, jak działają, po co są, czy warto? Współpraca wielu pluginów na raz czyli jak tworzyć Native'y oraz do czego służą. Współpraca wielu pluginów część 2, czyli Forwardy oraz ich możliwości. Podsumowanie. Może zacznę krótko od samego Siebie. Nazywam się Raman lub szerzej znany jako Charlie, zaocznie studiuje Informatykę o hobbistycznej specjalizacji: "Inżynieria bezpieczeństwa systemów informatycznych". W samym tygodniu pracuje jako Python Developer gdzie pracuje nad systemami dotyczącymi zażądania przedsiębiorstwem. Hobbistycznie programuje od paru ładnych lat w językach takich jak: c++ (podobno), c# oraz właśnie Python. Samym programowaniem w SourceModzie zajmuje się od około 2 lat kiedy zostałem Opiekunem 5vs5 który aktualnie prowadzę wraz z @dbk który zajmuje się "marketingiem" zarządzaniem, gdzie ja wraz z @Bluu robimy za programistów oraz administratorów tych serwerów.
    Co warto wiedzieć? Co trzeba wiedzieć? Ciężko powiedzieć w gruncie rzeczy, mimo wszystko:
    posiadać podstawowe umiejętności rozumienia logiki matematycznej znajomość jakiegoś z języków programowania np. c++ (opcjonalne) znajomość języka angielskiego dużo chęci (ważne ^^) Przejdźmy teraz do samego SourceMod'a. Nie będziemy wgłębiali się tutaj jak on działa, kto go stworzył, w jakim języku itd. Skupimy się tutaj na podstawach oraz podstawowych informacjach dotyczących samego SourceMod'a oraz jego konfiguracji. SourceMod to modyfikacja która pozwala nam włączać oraz wyłączać napisane przez nas, inne osoby lub twórców SourceMod'a pluginy które pomagają nam w zarządzaniu serwerem. Tyle. Na prawdę. To cała potrzebna wiedza o tym czym to coś jest .
    Proces instalacji SourceMod'a. Część ta jest przeznaczona dla osób które chcą dowiedzieć się jak zrobić to ręcznie - większość hostingów posiada moduł instalacyjny modyfikacji z którego poziomu możemy zainstalować SourceMod + MetaMod w wersjach które poprawnie działają aktualnie na serwerze - tak, to dość ważne ponieważ aktualizacja CS:GO może spowodować że cały SourceMod nie będzie działać - wtedy niestety trzeba czekać aż Devy SourceMod'a napiszą odpowiednie poprawki - zwykle jest to wykonywane do kilku godzin po aktualizacji.
    Zacznijmy jednak cały proces od początku. Musimy udać się na dwie strony:
    SourceMod MetaMod na jednej jak i drugiej stronie udajemy się do zakładki Stable Builds i pobieramy najnowszą wersję dla wybranego systemu operacyjnego - ważna informacja! Na każdym hostingu serwerów online, systemem operacyjnym jest LINUX! Także pamiętajcie aby wgrywając to na serwer który kupiliśmy na hostingu pobierać wersje dla Linuxa!
    Kiedy pobierzemy oraz rozpakujemy pobrane pliki musimy zalogować się na nasz serwer poprzez klient'a FTP (zalecane) lub Edytor Plików zapewniony przez hosting. Ja używam FlieZill'i jednak to jakiego klienta używamy jest osobistą preferencją. W zależności od hostingu miejsce do którego zalogujemy się w FTP może różnie wyglądać dlatego też postanowiłem nie wstawiać żadnych zrzutów ekranu z tej części ponieważ może być to błędnie odebrane. Wracając jednak do instalacji: kiedy znajdujemy się już na FTP musimy udać się do folderu "csgo", powinien mniej/więcej wyglądać o tak:

    Kiedy znajdujemy się w tym miejscu, wgrywamy (kolejność w gruncie rzeczy nie ma znaczenia jednak jak kto woli) najpierw pliki MetaMod'a następnie SourceMod'a. Po wgraniu plików, zauważalną różnicą w folderze "csgo" będzie dojście nowego katalogu o nazwie: "addons" - jest to katalog w którym znajdują się modyfikacje do CS:GO. Zawartość tego folderu powinna wyglądać mniej więcej tak:

    Sam MetaMod zbytnio nas nie interesuje, interesujemy się głównie SourceMod'em - przejdźmy teraz do weryfikacji czy SourceMod działa poprawnie - udajemy się do panelu w wybranym przez nas hostingu, włączamy serwer - odczekujemy kilka chwil aż się w pełni włączy i udajemy się do konsoli. W konsoli wpisujemy: "meta list" - potwierdzi to działanie MetaMod'a (jest on wymagany do poprawnego działania SourceMod'a), jeżeli SourceMod znajdzie się na liście znaczy że MetaMod go wykrywa oraz sam SourceMod działa - w innym wypadku nie byłoby go na liście lub występowałby Error. Dla potwierdzenia można sprawdzić jeszcze jedną komendę taką jak: sm plugins list - wypisze to listę pluginów SourceMod'a która aktualnie działa na serwerze (są to pluginy podstawowe):


    Tadam. Skończone. Proces trwał około 5min, automatyczny instalator zrobi to kilka razy szybciej ale co tam. Zajmijmy się jeszcze przez chwilę tym co doszło nam na serwer w czasie instalacji SourceMod'a. Jak możecie zauważyć folder do którego rozpakowaliśmy paczkę zawierającą SourceMod'a posiada dwa foldery:
    addons cfg na tym drugim aktualnie się skupimy. Kiedy w niego wejdziemy zauważymy kolejny folder o nazwie "sourcemod" - w tym folderze właśnie znajdować będą się praktycznie wszystkie pliki konfiguracyjne pluginów (mogą zdarzyć się wyjątki, o tym powiem później) jednak jeżeli dany plugin posiada ConVar'y czyli komendy konfiguracyjne to właśnie tutaj automatycznie generować będą się pliki które będą odczytywane podczas ładowania pluginów oraz wartości tych komend będą ustawiane. Znajduje się też tutaj plik konfiguracyjny samego SourceMod'a czyli: sourcemod.cfg - w nim znajdują się wszystkie komendy konfiguracyjne podstawowego SourceMod'a np.
    // Specifies how admin activity should be relayed to users. Add up the values // below to get the functionality you want. // 1: Show admin activity to non-admins anonymously. // 2: If 1 is specified, admin names will be shown. // 4: Show admin activity to admins anonymously. // 8: If 4 is specified, admin names will be shown. // 16: Always show admin names to root users. // -- // Default: 13 (1+4+8) sm_show_activity 13 jest to ustawienie pokazujące aktywność adminów. Pierwotnie wartość ta ustawiona jest na 13 czyli: zwykły gracz widzi aktywność admina choć nie widzi jego nicku, inny admin widzi aktywność admina oraz widzi jego nick. Dość proste. Jednak nie tym mamy się tutaj zajmować - tutaj właśnie znajdują się takie ustawienia. Można hobbistycznie zapoznać się z tym plikiem. W tym folderze to wszystko.
    Pierwszym folderem o którym wcześniej wspominałem jest "addons". W środku znajduje się taki folder jak "sourcemod", po wejściu w niego ukazuje się nam kilka innych folderów. Pominę w tym miejscu SS'a, od ręki wypiszę oraz opowiem czym są dane foldery i czy warto się aktualnie na nich skupiać:
    bin - zawiera pliki bibliotek SourceMod'a do danych gier, folderu nie ruszać - generalnie zlać. configs - zawiera pliki konfiguracyjne SourceMod'a, niektórych pluginów czy dane jak np. konfiguracje adminów, baz danych itd. data - zawiera pliki lokalnych baz danych - generalnie zlać. extensions - zawiera pliki bibliotek dodatkowych modułów SourceMod'a np. obsługi baz danych, geoip (lokalizacja po adresie IP) itp. folder ważny jeżeli dany plugin potrzebuje dodatkowych modułów np. PTaH'a czy DHooks. gamedata - zawiera pliki posiadające w sobie informacje dotyczące danych gry czyli ważnych "liczb" które są aktualizowane wraz z większymi aktualizacjami CS:GO - ważny folder, na tyle aby nie modyfikować w nim nic jeżeli się nie wie co się robi. logs - zawiera pliki logów które generuje SourceMod - użycia komend, errorów itp. tutaj zaglądamy jeżeli chcemy coś sprawdzić. plugins - zawiera pliki WYKONAWCZE w formacie "smx" naszych pluginów - tutaj wrzucamy nasze pluginy. Proces instalacji pluginów przedstawię za chwilkę. scripting - zawiera pliki o formacie "sp" czyli nie prze kompilowanego kodu. Nie zaleca się wrzucać tam własnego kodu - ryzykujemy tym kradzież naszych pluginów. translations - zawiera pliki tekstowe odpowiednio nazwane (określa się to w pluginie). Cała ta lista zwiera informacje ważne lub mniej ważne dotyczące folderów z którymi należy się zaprzyjaźnić w kontekście SourceMod'a. Na sam koniec tej części opowiem dokładniej o dwóch folderach czyli:
    configs plugins Zacznijmy właśnie od "configs" - jak wyżej wspomniałem, znajdują się tam pliki konfiguracyjne SourceMod'a oraz części pluginów. Najważniejszymi plikami są dla nas aktualnie są:
    admins_simple.ini - w tym pliku dodajemy naszych adminów. W praktyce robi się to poprzez SourceBans'a jednak flagi właściciela najlepiej wprowadzić ręcznie do tego pliki. Kiedy otworzymy plik znajdziemy tam cały poradnik w jaki sposób konfigurować danego admina jednak zalecam to olać i przeczytać co ja mam w tej kwestii do powiedzenia. W mojej opinii istnieje jeden poprawny sposób dodania admina: na steam_id. Nic innego i tyle. Kwestia bezpieczeństwa. W jaki sposób go dodajemy? To dość proste - w nowej linijce musimy wypełnić dwie tak zwane ciapki czyli: "wpełnienie". Co mam dokładniej na myśli? Formułą jaką się tutaj kierujemy jest taki ogólny wzór (są dwa, zaraz powiem dlaczego):
    "STEAM_ID" "FLAGI" "STEAM_ID" "IMMUNITED:FLAGI" W odpowiednie pola musimy podać odpowiednie flagi które będzie SourceMod odczytywał na początku każdej mapy lub użycia komendy: sm_reloadadmins. Zacznijmy najpierw od samych flag, czym są i o co w ogóle chodzi... W SourceModzie powstał system flag za pomocą których danemu graczowi przypisywane są pozwolenia na użycie danej komendy, oficjalna lista flag to:
    a - Flaga Rezerwacji Slota b - Flaga Generyczna, określa czy ktoś ma admina (WYMAGANA!) c - Flaga Kick d - Flaga Banowania e - Flaga Odbanowywania f - Flaga Fun np. Slay'owania g - Flaga zmiany Mapy h - Flaga zmiany ConVar'ów i - Flaga wczytywania plików konfiguracyjnych j - Flaga Chatu np. admin czat itp. k - Flaga głosowań l - Flaga hasła m - Flaga Rcon n - Flaga sv_cheats o - Custom 1 p - Custom 2 q - Custom 3 r - Custom 4 s - Custom 5 t - Custom 6 z - Flaga Root'a Ogólną ideom tych flag jest jak już wcześniej wspomniałem nadanie odpowiednich permisji. Standardowy admin posiada np. takie flagi: "abcdefgjk" - podstawowe funkcje admina, kick, ban, slap zmiana mapy itd. Właściciel serwera zazwyczaj wpisuje sobie flagę: "z" - dostaje wszystkie flagi na raz, z wyjątkiem flag Customowych czyli: o, p, q, r, s oraz t. Z jakiegoś powodu te flagi nie są przypisane do flagi "z". Teraz kiedy znamy już flagi, "dodajmy" nowego admina. Jeżeli chciałbym samemu sobie nadać podstawowe uprawnienia na serwerze wpisałbym coś takiego (zgodnie z pierwszym wzorem):
    "STEAM_1:1:37802072" "abcdefgjk" //Charlie Dostałbym wtedy podstawowe uprawnienia. Kiedy chciałbym dostać uprawnienia właściciela tj. "root'a" musiałbym wpisać:
    "STEAM_1:1:37802072" "z" //Charlie Posiadałbym wtedy wszystkie flagi (z wyjątkiem customów). Niestety, w tej sytuacji każdy inny admin mógłby np. mnie wyrzucić z serwera, dlatego też powstał system immunitedu (wzór drugi). W tej sytuacji przed flagą "z", należy dodać: "99:" co w efekcie da nam taki twór:
    "STEAM_1:1:37802072" "99:z" //Charlie Oznacza to że, jedynie admin z takim samym immunitedem lub osoba z flagą "z" (tak, ona omija immunited) mogłaby wykonać jakąś komendę na mnie. Jednak tak jak już wspomniałem, flagi głównie dodaje się w SourceBans'ie i w naszym pliku będziemy jedynie widzieli linijki z flagami "z" oraz immunitedem: "99".
    admin_overrides.cfg - plik w którym zabezpieczamy niektóre komendy do których uprawnienia musimy z jakiegoś powodu nadać jednak nie chcemy aby dane komendy były używane przez kogokolwiek nieupoważnionego do tego. Z doświadczenia wiem że zwykle daną komendę ustawia się na flagę "z" o której wcześniej wspominałem tak aby zablokować w pełni dostęp do niej zwykłym adminem. W pliku znajduje się taka część:
    Overrides { //COŚ TAM MOŻE BYĆ } w miejscu w którym wpisany jest komentarz tj. informacja po "//" możemy wpisywać każdą komendę używając odpowiedniego wzoru: "KOMENDA" "Flaga na która ustawiamy komendę" Przykład realnego zastosowania:
    Overrides { "sm_rename" "z" "sm_beacon" "z" "sm_gravity" "z" } Generalnie, nic trudnego .
    databases.cfg - ostatni, w gruncie rzeczy najważniejszy plik ze wszystkich. W tym pliku znajdujemy konfigurację danych dostępowych do naszych baz danych - bardzo ważne jest aby nikomu go nie udostępniać ponieważ posiadając dane osoba postronna bardzo łatwo może zrobić nam z nimi wszystko. Podstawowy plik wygląda mniej więcej tak:
    "Databases" { "driver_default" "mysql" // When specifying "host", you may use an IP address, a hostname, or a socket file path "default" { "driver" "default" "host" "localhost" "database" "sourcemod" "user" "root" "pass" "" //"timeout" "0" //"port" "0" } "storage-local" { "driver" "sqlite" "database" "sourcemod-local" "weapons" "sm_weapons_db_connection" } "clientprefs" { "driver" "sqlite" "host" "localhost" "database" "clientprefs-sqlite" "user" "root" "pass" "" //"timeout" "0" //"port" "0" } } są to podstawowe dane odwołujące się do danych lokalnych. Zanim przedstawię co za co odpowiada pokaże przykład użycia oraz poprawnego skonfigurowania danej bazy danych w tym pliku:
    "rankme" { "driver" "mysql" "host" "host" "database" "nazwa_bazy_danych" "user" "login_do_bazy" "pass" "hasło_do_bazy" "port" "3306" } Będzie to przykładowa konfiguracja bazy danych do użytku przez plugin: KLICK. Prosta analiza każdego miejsca - opiera się to na zasadzie tak zwanego KV czyli Key Value ("klucz": "wartość dla klucza").
    "rankme" - jest to nazwa klucza jakiego dany plugin będzie szukać, może być to clientprefs, default itd. wszystko zależy od pluginu. driver - to określenie w jakim systemie działamy, mostly "mysql" host - adres IP lub domena z którą będziemy się łączyć np. "mysql.pukawka.pl" database - nazwa bazy z której będziemy pobierać dane user - login do danej bazy danych pass - hasło do danej bazy danych port - port na której nasłuchuje baza danych. Dla MySql'a jest 3306, dla np. PostgreSQL podstawowym portem jest 5432. Kiedy wprowadzimy nasze dane musimy po prostu dodać taką formułkę KV do naszego pliku, ostatecznym efektem będzie:
    "Databases" { "driver_default" "mysql" // When specifying "host", you may use an IP address, a hostname, or a socket file path "default" { "driver" "default" "host" "localhost" "database" "sourcemod" "user" "root" "pass" "" //"timeout" "0" //"port" "0" } "storage-local" { "driver" "sqlite" "database" "sourcemod-local" "weapons" "sm_weapons_db_connection" } "clientprefs" { "driver" "sqlite" "host" "localhost" "database" "clientprefs-sqlite" "user" "root" "pass" "" //"timeout" "0" //"port" "0" } "rankme" { "driver" "mysql" "host" "host" "database" "nazwa_bazy_danych" "user" "login_do_bazy" "pass" "haslo_do_bazy" "port" "3306" } } Najważniejsze w tym wszystkim jest niezapomnienie o odpowiednim umiejscowieniu danego elementu. Ostatni element musi znajdować się przed ostatnią klamrą zamykającą główny klucz który w przypadku baz danych to: "databases" - zobaczcie początek kodu / pliku databases.cfg.
    Przejdźmy teraz do folderu "plugins". Jego zawartość pierwotnie wygląda tak:

    Pluginy oraz folder disabled. Generalnie, w SourceModzie możemy robić wiele folderów w folderze plugins. Ułatwia to podział na dane typy pluginów których potem nie musimy nigdzie szukać. Wgrane pluginy zostaną tak czy siak odczytane chyba że znajdują się w folderze "disabled" - ten folder jest jako jedyny wyłączony z odczytu i można tam wrzucać starsze wersje pluginów czy pluginy które sprawiają nam problemy. Jeżeli chodzi o sortowanie pluginów możemy wszystkie podstawowe pluginy przenieść do folderu o przykładowej nazwie: base (oznacza on podstawowe pluginy bazowe). Nie będą one nam wtedy przesadzać i ułatwi nam to wizualnie ogarnięcie tego wszystkiego. Teraz pytanie jak instalować pluginy. Nic trudnego, pobieramy dany plugin - skorzystajmy z tego do którego odwoływałem się wcześniej tj. Kento RankMe i wrzucamy po prostu pliki do odpowiednich folderów tak jak autor ułożył w paczce, lub jeżeli posiadamy tylko sam plik "smx" wrzucamy go jedynie do "plugins". W przypadku RankMe, po rozpakowaniu plików widzimy że znajdujemy się w strukturze: /csgo/addons/sourcemod/ - tak więc należy przekopiować pliki/foldery właśnie do tego miejsca tj. "sourcemod". Po wgraniu powinniśmy widzieć taką strukturę w plugins (pluginy podstawowe przeniosłem do nowego folderu base):

    Aktualnie, pozostaje nam zrestartować serwer i ponownie sprawdzić listę pluginów za pomocą komendy: "sm plugins list" w konsoli naszego serwera:

    Jak widać, nasza lista zwiększyła się o jeden plugin - na pierwszej pozycji znajduje się "RankMe". Oznacza to że plugin został wgrany i uruchomił się bez błędów. Ot cała magia. Dokładnie tak samo postępujemy z każdym innym pluginem, czy to będzie kilka plików czy sam plik "smx".
    Dziś poznaliśmy w jaki sposób u podstaw konfigurować SourceMod'a na serwerze. Oczywiście istnieje jeszcze wiele elementów konfiguracji samego serwera jednak w tym poradniku będę skupiać się jedynie na SourceModzie ponieważ ostatecznym celem jest nauka pisania pluginów - co nam po tym że umiemy coś napisać jak nie umiemy skonfigurować samego SourceMod'a.
    Także dziękuję za uwagę i wszystkich zainteresowanych zapraszam na część drugą jak i kolejne które za jakiś czas powstaną.
  9. Like
    Charlie W. got a reaction from Bluu in [PORADNIK] SourceMod czyli SERWEROWANIE OD POSTAW część. 1   
    Cześć wszystkim, dziś postanowiłem stworzyć dla was mam nadzieje dość prostą a zarazem użyteczną serie poradników dotyczących SourceMod'a, Serwerów CS:GO jak i samego programowania w SourcePawn'ie. Tym poradnikiem chciałbym zachęcić was do pracy nad serwerami która nie skupia się jedynie na tym jak rozkręcić sam serwer ale również nad tym jak go stworzyć i co należy zrobić aby wszystko było w jak najlepszym porządku. Serię postaram się głównie opisywać choć czasami możliwe jest że będę potrzebował coś nagrać - aby ułatwić pokazanie danej rzeczy. Jeżeli jednak ktoś będzie potrzebował w pełni zobaczyć jak daną rzecz się robi mogę nagrać filmik z wytłumaczeniem danego elementu. Całą serie zaplanowałem w pewien określony sposób i wraz z moim czasem wolnym będę opracowywać kolejne punkty z tej serii (zazwyczaj będzie to weekend, myślę że około dwóch części w jeden weekend).
    Plan ogólny:
    O Sobie oraz SourceModzie - podstawy tj. instalacja oraz konfiguracja. Inne dodatkowe wymagania. <-- Temat dzisiejszej lekcji Środowisko do programowania. Zmienne, Instrukcje Warunkowe oraz Pętle - element każdego języka programowania. Kilka słów o API czyli dokumentacji SourceMod'a. Wprowadzenie do samego SourceMod'a: dodatkowe zmienne, "obiektowość" SourceMod'a, jak działają pluginy tj. skąd biorą się dane akcje. SDKhooks czyli eventy na których możemy bardzo, bardzo dużo zdziałać. Timery oraz jak i do czego ich używamy. Praca z Bazą danych czyli MySql. Tworzenie menu, jak to w sumie działa? Console Variables czyli cvar'y, ich zmiany oraz wychwytywanie danej komendy. Tłumaczenia, jak działają, po co są, czy warto? Współpraca wielu pluginów na raz czyli jak tworzyć Native'y oraz do czego służą. Współpraca wielu pluginów część 2, czyli Forwardy oraz ich możliwości. Podsumowanie. Może zacznę krótko od samego Siebie. Nazywam się Raman lub szerzej znany jako Charlie, zaocznie studiuje Informatykę o hobbistycznej specjalizacji: "Inżynieria bezpieczeństwa systemów informatycznych". W samym tygodniu pracuje jako Python Developer gdzie pracuje nad systemami dotyczącymi zażądania przedsiębiorstwem. Hobbistycznie programuje od paru ładnych lat w językach takich jak: c++ (podobno), c# oraz właśnie Python. Samym programowaniem w SourceModzie zajmuje się od około 2 lat kiedy zostałem Opiekunem 5vs5 który aktualnie prowadzę wraz z @dbk który zajmuje się "marketingiem" zarządzaniem, gdzie ja wraz z @Bluu robimy za programistów oraz administratorów tych serwerów.
    Co warto wiedzieć? Co trzeba wiedzieć? Ciężko powiedzieć w gruncie rzeczy, mimo wszystko:
    posiadać podstawowe umiejętności rozumienia logiki matematycznej znajomość jakiegoś z języków programowania np. c++ (opcjonalne) znajomość języka angielskiego dużo chęci (ważne ^^) Przejdźmy teraz do samego SourceMod'a. Nie będziemy wgłębiali się tutaj jak on działa, kto go stworzył, w jakim języku itd. Skupimy się tutaj na podstawach oraz podstawowych informacjach dotyczących samego SourceMod'a oraz jego konfiguracji. SourceMod to modyfikacja która pozwala nam włączać oraz wyłączać napisane przez nas, inne osoby lub twórców SourceMod'a pluginy które pomagają nam w zarządzaniu serwerem. Tyle. Na prawdę. To cała potrzebna wiedza o tym czym to coś jest .
    Proces instalacji SourceMod'a. Część ta jest przeznaczona dla osób które chcą dowiedzieć się jak zrobić to ręcznie - większość hostingów posiada moduł instalacyjny modyfikacji z którego poziomu możemy zainstalować SourceMod + MetaMod w wersjach które poprawnie działają aktualnie na serwerze - tak, to dość ważne ponieważ aktualizacja CS:GO może spowodować że cały SourceMod nie będzie działać - wtedy niestety trzeba czekać aż Devy SourceMod'a napiszą odpowiednie poprawki - zwykle jest to wykonywane do kilku godzin po aktualizacji.
    Zacznijmy jednak cały proces od początku. Musimy udać się na dwie strony:
    SourceMod MetaMod na jednej jak i drugiej stronie udajemy się do zakładki Stable Builds i pobieramy najnowszą wersję dla wybranego systemu operacyjnego - ważna informacja! Na każdym hostingu serwerów online, systemem operacyjnym jest LINUX! Także pamiętajcie aby wgrywając to na serwer który kupiliśmy na hostingu pobierać wersje dla Linuxa!
    Kiedy pobierzemy oraz rozpakujemy pobrane pliki musimy zalogować się na nasz serwer poprzez klient'a FTP (zalecane) lub Edytor Plików zapewniony przez hosting. Ja używam FlieZill'i jednak to jakiego klienta używamy jest osobistą preferencją. W zależności od hostingu miejsce do którego zalogujemy się w FTP może różnie wyglądać dlatego też postanowiłem nie wstawiać żadnych zrzutów ekranu z tej części ponieważ może być to błędnie odebrane. Wracając jednak do instalacji: kiedy znajdujemy się już na FTP musimy udać się do folderu "csgo", powinien mniej/więcej wyglądać o tak:

    Kiedy znajdujemy się w tym miejscu, wgrywamy (kolejność w gruncie rzeczy nie ma znaczenia jednak jak kto woli) najpierw pliki MetaMod'a następnie SourceMod'a. Po wgraniu plików, zauważalną różnicą w folderze "csgo" będzie dojście nowego katalogu o nazwie: "addons" - jest to katalog w którym znajdują się modyfikacje do CS:GO. Zawartość tego folderu powinna wyglądać mniej więcej tak:

    Sam MetaMod zbytnio nas nie interesuje, interesujemy się głównie SourceMod'em - przejdźmy teraz do weryfikacji czy SourceMod działa poprawnie - udajemy się do panelu w wybranym przez nas hostingu, włączamy serwer - odczekujemy kilka chwil aż się w pełni włączy i udajemy się do konsoli. W konsoli wpisujemy: "meta list" - potwierdzi to działanie MetaMod'a (jest on wymagany do poprawnego działania SourceMod'a), jeżeli SourceMod znajdzie się na liście znaczy że MetaMod go wykrywa oraz sam SourceMod działa - w innym wypadku nie byłoby go na liście lub występowałby Error. Dla potwierdzenia można sprawdzić jeszcze jedną komendę taką jak: sm plugins list - wypisze to listę pluginów SourceMod'a która aktualnie działa na serwerze (są to pluginy podstawowe):


    Tadam. Skończone. Proces trwał około 5min, automatyczny instalator zrobi to kilka razy szybciej ale co tam. Zajmijmy się jeszcze przez chwilę tym co doszło nam na serwer w czasie instalacji SourceMod'a. Jak możecie zauważyć folder do którego rozpakowaliśmy paczkę zawierającą SourceMod'a posiada dwa foldery:
    addons cfg na tym drugim aktualnie się skupimy. Kiedy w niego wejdziemy zauważymy kolejny folder o nazwie "sourcemod" - w tym folderze właśnie znajdować będą się praktycznie wszystkie pliki konfiguracyjne pluginów (mogą zdarzyć się wyjątki, o tym powiem później) jednak jeżeli dany plugin posiada ConVar'y czyli komendy konfiguracyjne to właśnie tutaj automatycznie generować będą się pliki które będą odczytywane podczas ładowania pluginów oraz wartości tych komend będą ustawiane. Znajduje się też tutaj plik konfiguracyjny samego SourceMod'a czyli: sourcemod.cfg - w nim znajdują się wszystkie komendy konfiguracyjne podstawowego SourceMod'a np.
    // Specifies how admin activity should be relayed to users. Add up the values // below to get the functionality you want. // 1: Show admin activity to non-admins anonymously. // 2: If 1 is specified, admin names will be shown. // 4: Show admin activity to admins anonymously. // 8: If 4 is specified, admin names will be shown. // 16: Always show admin names to root users. // -- // Default: 13 (1+4+8) sm_show_activity 13 jest to ustawienie pokazujące aktywność adminów. Pierwotnie wartość ta ustawiona jest na 13 czyli: zwykły gracz widzi aktywność admina choć nie widzi jego nicku, inny admin widzi aktywność admina oraz widzi jego nick. Dość proste. Jednak nie tym mamy się tutaj zajmować - tutaj właśnie znajdują się takie ustawienia. Można hobbistycznie zapoznać się z tym plikiem. W tym folderze to wszystko.
    Pierwszym folderem o którym wcześniej wspominałem jest "addons". W środku znajduje się taki folder jak "sourcemod", po wejściu w niego ukazuje się nam kilka innych folderów. Pominę w tym miejscu SS'a, od ręki wypiszę oraz opowiem czym są dane foldery i czy warto się aktualnie na nich skupiać:
    bin - zawiera pliki bibliotek SourceMod'a do danych gier, folderu nie ruszać - generalnie zlać. configs - zawiera pliki konfiguracyjne SourceMod'a, niektórych pluginów czy dane jak np. konfiguracje adminów, baz danych itd. data - zawiera pliki lokalnych baz danych - generalnie zlać. extensions - zawiera pliki bibliotek dodatkowych modułów SourceMod'a np. obsługi baz danych, geoip (lokalizacja po adresie IP) itp. folder ważny jeżeli dany plugin potrzebuje dodatkowych modułów np. PTaH'a czy DHooks. gamedata - zawiera pliki posiadające w sobie informacje dotyczące danych gry czyli ważnych "liczb" które są aktualizowane wraz z większymi aktualizacjami CS:GO - ważny folder, na tyle aby nie modyfikować w nim nic jeżeli się nie wie co się robi. logs - zawiera pliki logów które generuje SourceMod - użycia komend, errorów itp. tutaj zaglądamy jeżeli chcemy coś sprawdzić. plugins - zawiera pliki WYKONAWCZE w formacie "smx" naszych pluginów - tutaj wrzucamy nasze pluginy. Proces instalacji pluginów przedstawię za chwilkę. scripting - zawiera pliki o formacie "sp" czyli nie prze kompilowanego kodu. Nie zaleca się wrzucać tam własnego kodu - ryzykujemy tym kradzież naszych pluginów. translations - zawiera pliki tekstowe odpowiednio nazwane (określa się to w pluginie). Cała ta lista zwiera informacje ważne lub mniej ważne dotyczące folderów z którymi należy się zaprzyjaźnić w kontekście SourceMod'a. Na sam koniec tej części opowiem dokładniej o dwóch folderach czyli:
    configs plugins Zacznijmy właśnie od "configs" - jak wyżej wspomniałem, znajdują się tam pliki konfiguracyjne SourceMod'a oraz części pluginów. Najważniejszymi plikami są dla nas aktualnie są:
    admins_simple.ini - w tym pliku dodajemy naszych adminów. W praktyce robi się to poprzez SourceBans'a jednak flagi właściciela najlepiej wprowadzić ręcznie do tego pliki. Kiedy otworzymy plik znajdziemy tam cały poradnik w jaki sposób konfigurować danego admina jednak zalecam to olać i przeczytać co ja mam w tej kwestii do powiedzenia. W mojej opinii istnieje jeden poprawny sposób dodania admina: na steam_id. Nic innego i tyle. Kwestia bezpieczeństwa. W jaki sposób go dodajemy? To dość proste - w nowej linijce musimy wypełnić dwie tak zwane ciapki czyli: "wpełnienie". Co mam dokładniej na myśli? Formułą jaką się tutaj kierujemy jest taki ogólny wzór (są dwa, zaraz powiem dlaczego):
    "STEAM_ID" "FLAGI" "STEAM_ID" "IMMUNITED:FLAGI" W odpowiednie pola musimy podać odpowiednie flagi które będzie SourceMod odczytywał na początku każdej mapy lub użycia komendy: sm_reloadadmins. Zacznijmy najpierw od samych flag, czym są i o co w ogóle chodzi... W SourceModzie powstał system flag za pomocą których danemu graczowi przypisywane są pozwolenia na użycie danej komendy, oficjalna lista flag to:
    a - Flaga Rezerwacji Slota b - Flaga Generyczna, określa czy ktoś ma admina (WYMAGANA!) c - Flaga Kick d - Flaga Banowania e - Flaga Odbanowywania f - Flaga Fun np. Slay'owania g - Flaga zmiany Mapy h - Flaga zmiany ConVar'ów i - Flaga wczytywania plików konfiguracyjnych j - Flaga Chatu np. admin czat itp. k - Flaga głosowań l - Flaga hasła m - Flaga Rcon n - Flaga sv_cheats o - Custom 1 p - Custom 2 q - Custom 3 r - Custom 4 s - Custom 5 t - Custom 6 z - Flaga Root'a Ogólną ideom tych flag jest jak już wcześniej wspomniałem nadanie odpowiednich permisji. Standardowy admin posiada np. takie flagi: "abcdefgjk" - podstawowe funkcje admina, kick, ban, slap zmiana mapy itd. Właściciel serwera zazwyczaj wpisuje sobie flagę: "z" - dostaje wszystkie flagi na raz, z wyjątkiem flag Customowych czyli: o, p, q, r, s oraz t. Z jakiegoś powodu te flagi nie są przypisane do flagi "z". Teraz kiedy znamy już flagi, "dodajmy" nowego admina. Jeżeli chciałbym samemu sobie nadać podstawowe uprawnienia na serwerze wpisałbym coś takiego (zgodnie z pierwszym wzorem):
    "STEAM_1:1:37802072" "abcdefgjk" //Charlie Dostałbym wtedy podstawowe uprawnienia. Kiedy chciałbym dostać uprawnienia właściciela tj. "root'a" musiałbym wpisać:
    "STEAM_1:1:37802072" "z" //Charlie Posiadałbym wtedy wszystkie flagi (z wyjątkiem customów). Niestety, w tej sytuacji każdy inny admin mógłby np. mnie wyrzucić z serwera, dlatego też powstał system immunitedu (wzór drugi). W tej sytuacji przed flagą "z", należy dodać: "99:" co w efekcie da nam taki twór:
    "STEAM_1:1:37802072" "99:z" //Charlie Oznacza to że, jedynie admin z takim samym immunitedem lub osoba z flagą "z" (tak, ona omija immunited) mogłaby wykonać jakąś komendę na mnie. Jednak tak jak już wspomniałem, flagi głównie dodaje się w SourceBans'ie i w naszym pliku będziemy jedynie widzieli linijki z flagami "z" oraz immunitedem: "99".
    admin_overrides.cfg - plik w którym zabezpieczamy niektóre komendy do których uprawnienia musimy z jakiegoś powodu nadać jednak nie chcemy aby dane komendy były używane przez kogokolwiek nieupoważnionego do tego. Z doświadczenia wiem że zwykle daną komendę ustawia się na flagę "z" o której wcześniej wspominałem tak aby zablokować w pełni dostęp do niej zwykłym adminem. W pliku znajduje się taka część:
    Overrides { //COŚ TAM MOŻE BYĆ } w miejscu w którym wpisany jest komentarz tj. informacja po "//" możemy wpisywać każdą komendę używając odpowiedniego wzoru: "KOMENDA" "Flaga na która ustawiamy komendę" Przykład realnego zastosowania:
    Overrides { "sm_rename" "z" "sm_beacon" "z" "sm_gravity" "z" } Generalnie, nic trudnego .
    databases.cfg - ostatni, w gruncie rzeczy najważniejszy plik ze wszystkich. W tym pliku znajdujemy konfigurację danych dostępowych do naszych baz danych - bardzo ważne jest aby nikomu go nie udostępniać ponieważ posiadając dane osoba postronna bardzo łatwo może zrobić nam z nimi wszystko. Podstawowy plik wygląda mniej więcej tak:
    "Databases" { "driver_default" "mysql" // When specifying "host", you may use an IP address, a hostname, or a socket file path "default" { "driver" "default" "host" "localhost" "database" "sourcemod" "user" "root" "pass" "" //"timeout" "0" //"port" "0" } "storage-local" { "driver" "sqlite" "database" "sourcemod-local" "weapons" "sm_weapons_db_connection" } "clientprefs" { "driver" "sqlite" "host" "localhost" "database" "clientprefs-sqlite" "user" "root" "pass" "" //"timeout" "0" //"port" "0" } } są to podstawowe dane odwołujące się do danych lokalnych. Zanim przedstawię co za co odpowiada pokaże przykład użycia oraz poprawnego skonfigurowania danej bazy danych w tym pliku:
    "rankme" { "driver" "mysql" "host" "host" "database" "nazwa_bazy_danych" "user" "login_do_bazy" "pass" "hasło_do_bazy" "port" "3306" } Będzie to przykładowa konfiguracja bazy danych do użytku przez plugin: KLICK. Prosta analiza każdego miejsca - opiera się to na zasadzie tak zwanego KV czyli Key Value ("klucz": "wartość dla klucza").
    "rankme" - jest to nazwa klucza jakiego dany plugin będzie szukać, może być to clientprefs, default itd. wszystko zależy od pluginu. driver - to określenie w jakim systemie działamy, mostly "mysql" host - adres IP lub domena z którą będziemy się łączyć np. "mysql.pukawka.pl" database - nazwa bazy z której będziemy pobierać dane user - login do danej bazy danych pass - hasło do danej bazy danych port - port na której nasłuchuje baza danych. Dla MySql'a jest 3306, dla np. PostgreSQL podstawowym portem jest 5432. Kiedy wprowadzimy nasze dane musimy po prostu dodać taką formułkę KV do naszego pliku, ostatecznym efektem będzie:
    "Databases" { "driver_default" "mysql" // When specifying "host", you may use an IP address, a hostname, or a socket file path "default" { "driver" "default" "host" "localhost" "database" "sourcemod" "user" "root" "pass" "" //"timeout" "0" //"port" "0" } "storage-local" { "driver" "sqlite" "database" "sourcemod-local" "weapons" "sm_weapons_db_connection" } "clientprefs" { "driver" "sqlite" "host" "localhost" "database" "clientprefs-sqlite" "user" "root" "pass" "" //"timeout" "0" //"port" "0" } "rankme" { "driver" "mysql" "host" "host" "database" "nazwa_bazy_danych" "user" "login_do_bazy" "pass" "haslo_do_bazy" "port" "3306" } } Najważniejsze w tym wszystkim jest niezapomnienie o odpowiednim umiejscowieniu danego elementu. Ostatni element musi znajdować się przed ostatnią klamrą zamykającą główny klucz który w przypadku baz danych to: "databases" - zobaczcie początek kodu / pliku databases.cfg.
    Przejdźmy teraz do folderu "plugins". Jego zawartość pierwotnie wygląda tak:

    Pluginy oraz folder disabled. Generalnie, w SourceModzie możemy robić wiele folderów w folderze plugins. Ułatwia to podział na dane typy pluginów których potem nie musimy nigdzie szukać. Wgrane pluginy zostaną tak czy siak odczytane chyba że znajdują się w folderze "disabled" - ten folder jest jako jedyny wyłączony z odczytu i można tam wrzucać starsze wersje pluginów czy pluginy które sprawiają nam problemy. Jeżeli chodzi o sortowanie pluginów możemy wszystkie podstawowe pluginy przenieść do folderu o przykładowej nazwie: base (oznacza on podstawowe pluginy bazowe). Nie będą one nam wtedy przesadzać i ułatwi nam to wizualnie ogarnięcie tego wszystkiego. Teraz pytanie jak instalować pluginy. Nic trudnego, pobieramy dany plugin - skorzystajmy z tego do którego odwoływałem się wcześniej tj. Kento RankMe i wrzucamy po prostu pliki do odpowiednich folderów tak jak autor ułożył w paczce, lub jeżeli posiadamy tylko sam plik "smx" wrzucamy go jedynie do "plugins". W przypadku RankMe, po rozpakowaniu plików widzimy że znajdujemy się w strukturze: /csgo/addons/sourcemod/ - tak więc należy przekopiować pliki/foldery właśnie do tego miejsca tj. "sourcemod". Po wgraniu powinniśmy widzieć taką strukturę w plugins (pluginy podstawowe przeniosłem do nowego folderu base):

    Aktualnie, pozostaje nam zrestartować serwer i ponownie sprawdzić listę pluginów za pomocą komendy: "sm plugins list" w konsoli naszego serwera:

    Jak widać, nasza lista zwiększyła się o jeden plugin - na pierwszej pozycji znajduje się "RankMe". Oznacza to że plugin został wgrany i uruchomił się bez błędów. Ot cała magia. Dokładnie tak samo postępujemy z każdym innym pluginem, czy to będzie kilka plików czy sam plik "smx".
    Dziś poznaliśmy w jaki sposób u podstaw konfigurować SourceMod'a na serwerze. Oczywiście istnieje jeszcze wiele elementów konfiguracji samego serwera jednak w tym poradniku będę skupiać się jedynie na SourceModzie ponieważ ostatecznym celem jest nauka pisania pluginów - co nam po tym że umiemy coś napisać jak nie umiemy skonfigurować samego SourceMod'a.
    Także dziękuję za uwagę i wszystkich zainteresowanych zapraszam na część drugą jak i kolejne które za jakiś czas powstaną.
  10. Piwko
    Charlie W. got a reaction from Scorpion Flail in [PORADNIK] SourceMod czyli SERWEROWANIE OD POSTAW część. 1   
    Cześć wszystkim, dziś postanowiłem stworzyć dla was mam nadzieje dość prostą a zarazem użyteczną serie poradników dotyczących SourceMod'a, Serwerów CS:GO jak i samego programowania w SourcePawn'ie. Tym poradnikiem chciałbym zachęcić was do pracy nad serwerami która nie skupia się jedynie na tym jak rozkręcić sam serwer ale również nad tym jak go stworzyć i co należy zrobić aby wszystko było w jak najlepszym porządku. Serię postaram się głównie opisywać choć czasami możliwe jest że będę potrzebował coś nagrać - aby ułatwić pokazanie danej rzeczy. Jeżeli jednak ktoś będzie potrzebował w pełni zobaczyć jak daną rzecz się robi mogę nagrać filmik z wytłumaczeniem danego elementu. Całą serie zaplanowałem w pewien określony sposób i wraz z moim czasem wolnym będę opracowywać kolejne punkty z tej serii (zazwyczaj będzie to weekend, myślę że około dwóch części w jeden weekend).
    Plan ogólny:
    O Sobie oraz SourceModzie - podstawy tj. instalacja oraz konfiguracja. Inne dodatkowe wymagania. <-- Temat dzisiejszej lekcji Środowisko do programowania. Zmienne, Instrukcje Warunkowe oraz Pętle - element każdego języka programowania. Kilka słów o API czyli dokumentacji SourceMod'a. Wprowadzenie do samego SourceMod'a: dodatkowe zmienne, "obiektowość" SourceMod'a, jak działają pluginy tj. skąd biorą się dane akcje. SDKhooks czyli eventy na których możemy bardzo, bardzo dużo zdziałać. Timery oraz jak i do czego ich używamy. Praca z Bazą danych czyli MySql. Tworzenie menu, jak to w sumie działa? Console Variables czyli cvar'y, ich zmiany oraz wychwytywanie danej komendy. Tłumaczenia, jak działają, po co są, czy warto? Współpraca wielu pluginów na raz czyli jak tworzyć Native'y oraz do czego służą. Współpraca wielu pluginów część 2, czyli Forwardy oraz ich możliwości. Podsumowanie. Może zacznę krótko od samego Siebie. Nazywam się Raman lub szerzej znany jako Charlie, zaocznie studiuje Informatykę o hobbistycznej specjalizacji: "Inżynieria bezpieczeństwa systemów informatycznych". W samym tygodniu pracuje jako Python Developer gdzie pracuje nad systemami dotyczącymi zażądania przedsiębiorstwem. Hobbistycznie programuje od paru ładnych lat w językach takich jak: c++ (podobno), c# oraz właśnie Python. Samym programowaniem w SourceModzie zajmuje się od około 2 lat kiedy zostałem Opiekunem 5vs5 który aktualnie prowadzę wraz z @dbk który zajmuje się "marketingiem" zarządzaniem, gdzie ja wraz z @Bluu robimy za programistów oraz administratorów tych serwerów.
    Co warto wiedzieć? Co trzeba wiedzieć? Ciężko powiedzieć w gruncie rzeczy, mimo wszystko:
    posiadać podstawowe umiejętności rozumienia logiki matematycznej znajomość jakiegoś z języków programowania np. c++ (opcjonalne) znajomość języka angielskiego dużo chęci (ważne ^^) Przejdźmy teraz do samego SourceMod'a. Nie będziemy wgłębiali się tutaj jak on działa, kto go stworzył, w jakim języku itd. Skupimy się tutaj na podstawach oraz podstawowych informacjach dotyczących samego SourceMod'a oraz jego konfiguracji. SourceMod to modyfikacja która pozwala nam włączać oraz wyłączać napisane przez nas, inne osoby lub twórców SourceMod'a pluginy które pomagają nam w zarządzaniu serwerem. Tyle. Na prawdę. To cała potrzebna wiedza o tym czym to coś jest .
    Proces instalacji SourceMod'a. Część ta jest przeznaczona dla osób które chcą dowiedzieć się jak zrobić to ręcznie - większość hostingów posiada moduł instalacyjny modyfikacji z którego poziomu możemy zainstalować SourceMod + MetaMod w wersjach które poprawnie działają aktualnie na serwerze - tak, to dość ważne ponieważ aktualizacja CS:GO może spowodować że cały SourceMod nie będzie działać - wtedy niestety trzeba czekać aż Devy SourceMod'a napiszą odpowiednie poprawki - zwykle jest to wykonywane do kilku godzin po aktualizacji.
    Zacznijmy jednak cały proces od początku. Musimy udać się na dwie strony:
    SourceMod MetaMod na jednej jak i drugiej stronie udajemy się do zakładki Stable Builds i pobieramy najnowszą wersję dla wybranego systemu operacyjnego - ważna informacja! Na każdym hostingu serwerów online, systemem operacyjnym jest LINUX! Także pamiętajcie aby wgrywając to na serwer który kupiliśmy na hostingu pobierać wersje dla Linuxa!
    Kiedy pobierzemy oraz rozpakujemy pobrane pliki musimy zalogować się na nasz serwer poprzez klient'a FTP (zalecane) lub Edytor Plików zapewniony przez hosting. Ja używam FlieZill'i jednak to jakiego klienta używamy jest osobistą preferencją. W zależności od hostingu miejsce do którego zalogujemy się w FTP może różnie wyglądać dlatego też postanowiłem nie wstawiać żadnych zrzutów ekranu z tej części ponieważ może być to błędnie odebrane. Wracając jednak do instalacji: kiedy znajdujemy się już na FTP musimy udać się do folderu "csgo", powinien mniej/więcej wyglądać o tak:

    Kiedy znajdujemy się w tym miejscu, wgrywamy (kolejność w gruncie rzeczy nie ma znaczenia jednak jak kto woli) najpierw pliki MetaMod'a następnie SourceMod'a. Po wgraniu plików, zauważalną różnicą w folderze "csgo" będzie dojście nowego katalogu o nazwie: "addons" - jest to katalog w którym znajdują się modyfikacje do CS:GO. Zawartość tego folderu powinna wyglądać mniej więcej tak:

    Sam MetaMod zbytnio nas nie interesuje, interesujemy się głównie SourceMod'em - przejdźmy teraz do weryfikacji czy SourceMod działa poprawnie - udajemy się do panelu w wybranym przez nas hostingu, włączamy serwer - odczekujemy kilka chwil aż się w pełni włączy i udajemy się do konsoli. W konsoli wpisujemy: "meta list" - potwierdzi to działanie MetaMod'a (jest on wymagany do poprawnego działania SourceMod'a), jeżeli SourceMod znajdzie się na liście znaczy że MetaMod go wykrywa oraz sam SourceMod działa - w innym wypadku nie byłoby go na liście lub występowałby Error. Dla potwierdzenia można sprawdzić jeszcze jedną komendę taką jak: sm plugins list - wypisze to listę pluginów SourceMod'a która aktualnie działa na serwerze (są to pluginy podstawowe):


    Tadam. Skończone. Proces trwał około 5min, automatyczny instalator zrobi to kilka razy szybciej ale co tam. Zajmijmy się jeszcze przez chwilę tym co doszło nam na serwer w czasie instalacji SourceMod'a. Jak możecie zauważyć folder do którego rozpakowaliśmy paczkę zawierającą SourceMod'a posiada dwa foldery:
    addons cfg na tym drugim aktualnie się skupimy. Kiedy w niego wejdziemy zauważymy kolejny folder o nazwie "sourcemod" - w tym folderze właśnie znajdować będą się praktycznie wszystkie pliki konfiguracyjne pluginów (mogą zdarzyć się wyjątki, o tym powiem później) jednak jeżeli dany plugin posiada ConVar'y czyli komendy konfiguracyjne to właśnie tutaj automatycznie generować będą się pliki które będą odczytywane podczas ładowania pluginów oraz wartości tych komend będą ustawiane. Znajduje się też tutaj plik konfiguracyjny samego SourceMod'a czyli: sourcemod.cfg - w nim znajdują się wszystkie komendy konfiguracyjne podstawowego SourceMod'a np.
    // Specifies how admin activity should be relayed to users. Add up the values // below to get the functionality you want. // 1: Show admin activity to non-admins anonymously. // 2: If 1 is specified, admin names will be shown. // 4: Show admin activity to admins anonymously. // 8: If 4 is specified, admin names will be shown. // 16: Always show admin names to root users. // -- // Default: 13 (1+4+8) sm_show_activity 13 jest to ustawienie pokazujące aktywność adminów. Pierwotnie wartość ta ustawiona jest na 13 czyli: zwykły gracz widzi aktywność admina choć nie widzi jego nicku, inny admin widzi aktywność admina oraz widzi jego nick. Dość proste. Jednak nie tym mamy się tutaj zajmować - tutaj właśnie znajdują się takie ustawienia. Można hobbistycznie zapoznać się z tym plikiem. W tym folderze to wszystko.
    Pierwszym folderem o którym wcześniej wspominałem jest "addons". W środku znajduje się taki folder jak "sourcemod", po wejściu w niego ukazuje się nam kilka innych folderów. Pominę w tym miejscu SS'a, od ręki wypiszę oraz opowiem czym są dane foldery i czy warto się aktualnie na nich skupiać:
    bin - zawiera pliki bibliotek SourceMod'a do danych gier, folderu nie ruszać - generalnie zlać. configs - zawiera pliki konfiguracyjne SourceMod'a, niektórych pluginów czy dane jak np. konfiguracje adminów, baz danych itd. data - zawiera pliki lokalnych baz danych - generalnie zlać. extensions - zawiera pliki bibliotek dodatkowych modułów SourceMod'a np. obsługi baz danych, geoip (lokalizacja po adresie IP) itp. folder ważny jeżeli dany plugin potrzebuje dodatkowych modułów np. PTaH'a czy DHooks. gamedata - zawiera pliki posiadające w sobie informacje dotyczące danych gry czyli ważnych "liczb" które są aktualizowane wraz z większymi aktualizacjami CS:GO - ważny folder, na tyle aby nie modyfikować w nim nic jeżeli się nie wie co się robi. logs - zawiera pliki logów które generuje SourceMod - użycia komend, errorów itp. tutaj zaglądamy jeżeli chcemy coś sprawdzić. plugins - zawiera pliki WYKONAWCZE w formacie "smx" naszych pluginów - tutaj wrzucamy nasze pluginy. Proces instalacji pluginów przedstawię za chwilkę. scripting - zawiera pliki o formacie "sp" czyli nie prze kompilowanego kodu. Nie zaleca się wrzucać tam własnego kodu - ryzykujemy tym kradzież naszych pluginów. translations - zawiera pliki tekstowe odpowiednio nazwane (określa się to w pluginie). Cała ta lista zwiera informacje ważne lub mniej ważne dotyczące folderów z którymi należy się zaprzyjaźnić w kontekście SourceMod'a. Na sam koniec tej części opowiem dokładniej o dwóch folderach czyli:
    configs plugins Zacznijmy właśnie od "configs" - jak wyżej wspomniałem, znajdują się tam pliki konfiguracyjne SourceMod'a oraz części pluginów. Najważniejszymi plikami są dla nas aktualnie są:
    admins_simple.ini - w tym pliku dodajemy naszych adminów. W praktyce robi się to poprzez SourceBans'a jednak flagi właściciela najlepiej wprowadzić ręcznie do tego pliki. Kiedy otworzymy plik znajdziemy tam cały poradnik w jaki sposób konfigurować danego admina jednak zalecam to olać i przeczytać co ja mam w tej kwestii do powiedzenia. W mojej opinii istnieje jeden poprawny sposób dodania admina: na steam_id. Nic innego i tyle. Kwestia bezpieczeństwa. W jaki sposób go dodajemy? To dość proste - w nowej linijce musimy wypełnić dwie tak zwane ciapki czyli: "wpełnienie". Co mam dokładniej na myśli? Formułą jaką się tutaj kierujemy jest taki ogólny wzór (są dwa, zaraz powiem dlaczego):
    "STEAM_ID" "FLAGI" "STEAM_ID" "IMMUNITED:FLAGI" W odpowiednie pola musimy podać odpowiednie flagi które będzie SourceMod odczytywał na początku każdej mapy lub użycia komendy: sm_reloadadmins. Zacznijmy najpierw od samych flag, czym są i o co w ogóle chodzi... W SourceModzie powstał system flag za pomocą których danemu graczowi przypisywane są pozwolenia na użycie danej komendy, oficjalna lista flag to:
    a - Flaga Rezerwacji Slota b - Flaga Generyczna, określa czy ktoś ma admina (WYMAGANA!) c - Flaga Kick d - Flaga Banowania e - Flaga Odbanowywania f - Flaga Fun np. Slay'owania g - Flaga zmiany Mapy h - Flaga zmiany ConVar'ów i - Flaga wczytywania plików konfiguracyjnych j - Flaga Chatu np. admin czat itp. k - Flaga głosowań l - Flaga hasła m - Flaga Rcon n - Flaga sv_cheats o - Custom 1 p - Custom 2 q - Custom 3 r - Custom 4 s - Custom 5 t - Custom 6 z - Flaga Root'a Ogólną ideom tych flag jest jak już wcześniej wspomniałem nadanie odpowiednich permisji. Standardowy admin posiada np. takie flagi: "abcdefgjk" - podstawowe funkcje admina, kick, ban, slap zmiana mapy itd. Właściciel serwera zazwyczaj wpisuje sobie flagę: "z" - dostaje wszystkie flagi na raz, z wyjątkiem flag Customowych czyli: o, p, q, r, s oraz t. Z jakiegoś powodu te flagi nie są przypisane do flagi "z". Teraz kiedy znamy już flagi, "dodajmy" nowego admina. Jeżeli chciałbym samemu sobie nadać podstawowe uprawnienia na serwerze wpisałbym coś takiego (zgodnie z pierwszym wzorem):
    "STEAM_1:1:37802072" "abcdefgjk" //Charlie Dostałbym wtedy podstawowe uprawnienia. Kiedy chciałbym dostać uprawnienia właściciela tj. "root'a" musiałbym wpisać:
    "STEAM_1:1:37802072" "z" //Charlie Posiadałbym wtedy wszystkie flagi (z wyjątkiem customów). Niestety, w tej sytuacji każdy inny admin mógłby np. mnie wyrzucić z serwera, dlatego też powstał system immunitedu (wzór drugi). W tej sytuacji przed flagą "z", należy dodać: "99:" co w efekcie da nam taki twór:
    "STEAM_1:1:37802072" "99:z" //Charlie Oznacza to że, jedynie admin z takim samym immunitedem lub osoba z flagą "z" (tak, ona omija immunited) mogłaby wykonać jakąś komendę na mnie. Jednak tak jak już wspomniałem, flagi głównie dodaje się w SourceBans'ie i w naszym pliku będziemy jedynie widzieli linijki z flagami "z" oraz immunitedem: "99".
    admin_overrides.cfg - plik w którym zabezpieczamy niektóre komendy do których uprawnienia musimy z jakiegoś powodu nadać jednak nie chcemy aby dane komendy były używane przez kogokolwiek nieupoważnionego do tego. Z doświadczenia wiem że zwykle daną komendę ustawia się na flagę "z" o której wcześniej wspominałem tak aby zablokować w pełni dostęp do niej zwykłym adminem. W pliku znajduje się taka część:
    Overrides { //COŚ TAM MOŻE BYĆ } w miejscu w którym wpisany jest komentarz tj. informacja po "//" możemy wpisywać każdą komendę używając odpowiedniego wzoru: "KOMENDA" "Flaga na która ustawiamy komendę" Przykład realnego zastosowania:
    Overrides { "sm_rename" "z" "sm_beacon" "z" "sm_gravity" "z" } Generalnie, nic trudnego .
    databases.cfg - ostatni, w gruncie rzeczy najważniejszy plik ze wszystkich. W tym pliku znajdujemy konfigurację danych dostępowych do naszych baz danych - bardzo ważne jest aby nikomu go nie udostępniać ponieważ posiadając dane osoba postronna bardzo łatwo może zrobić nam z nimi wszystko. Podstawowy plik wygląda mniej więcej tak:
    "Databases" { "driver_default" "mysql" // When specifying "host", you may use an IP address, a hostname, or a socket file path "default" { "driver" "default" "host" "localhost" "database" "sourcemod" "user" "root" "pass" "" //"timeout" "0" //"port" "0" } "storage-local" { "driver" "sqlite" "database" "sourcemod-local" "weapons" "sm_weapons_db_connection" } "clientprefs" { "driver" "sqlite" "host" "localhost" "database" "clientprefs-sqlite" "user" "root" "pass" "" //"timeout" "0" //"port" "0" } } są to podstawowe dane odwołujące się do danych lokalnych. Zanim przedstawię co za co odpowiada pokaże przykład użycia oraz poprawnego skonfigurowania danej bazy danych w tym pliku:
    "rankme" { "driver" "mysql" "host" "host" "database" "nazwa_bazy_danych" "user" "login_do_bazy" "pass" "hasło_do_bazy" "port" "3306" } Będzie to przykładowa konfiguracja bazy danych do użytku przez plugin: KLICK. Prosta analiza każdego miejsca - opiera się to na zasadzie tak zwanego KV czyli Key Value ("klucz": "wartość dla klucza").
    "rankme" - jest to nazwa klucza jakiego dany plugin będzie szukać, może być to clientprefs, default itd. wszystko zależy od pluginu. driver - to określenie w jakim systemie działamy, mostly "mysql" host - adres IP lub domena z którą będziemy się łączyć np. "mysql.pukawka.pl" database - nazwa bazy z której będziemy pobierać dane user - login do danej bazy danych pass - hasło do danej bazy danych port - port na której nasłuchuje baza danych. Dla MySql'a jest 3306, dla np. PostgreSQL podstawowym portem jest 5432. Kiedy wprowadzimy nasze dane musimy po prostu dodać taką formułkę KV do naszego pliku, ostatecznym efektem będzie:
    "Databases" { "driver_default" "mysql" // When specifying "host", you may use an IP address, a hostname, or a socket file path "default" { "driver" "default" "host" "localhost" "database" "sourcemod" "user" "root" "pass" "" //"timeout" "0" //"port" "0" } "storage-local" { "driver" "sqlite" "database" "sourcemod-local" "weapons" "sm_weapons_db_connection" } "clientprefs" { "driver" "sqlite" "host" "localhost" "database" "clientprefs-sqlite" "user" "root" "pass" "" //"timeout" "0" //"port" "0" } "rankme" { "driver" "mysql" "host" "host" "database" "nazwa_bazy_danych" "user" "login_do_bazy" "pass" "haslo_do_bazy" "port" "3306" } } Najważniejsze w tym wszystkim jest niezapomnienie o odpowiednim umiejscowieniu danego elementu. Ostatni element musi znajdować się przed ostatnią klamrą zamykającą główny klucz który w przypadku baz danych to: "databases" - zobaczcie początek kodu / pliku databases.cfg.
    Przejdźmy teraz do folderu "plugins". Jego zawartość pierwotnie wygląda tak:

    Pluginy oraz folder disabled. Generalnie, w SourceModzie możemy robić wiele folderów w folderze plugins. Ułatwia to podział na dane typy pluginów których potem nie musimy nigdzie szukać. Wgrane pluginy zostaną tak czy siak odczytane chyba że znajdują się w folderze "disabled" - ten folder jest jako jedyny wyłączony z odczytu i można tam wrzucać starsze wersje pluginów czy pluginy które sprawiają nam problemy. Jeżeli chodzi o sortowanie pluginów możemy wszystkie podstawowe pluginy przenieść do folderu o przykładowej nazwie: base (oznacza on podstawowe pluginy bazowe). Nie będą one nam wtedy przesadzać i ułatwi nam to wizualnie ogarnięcie tego wszystkiego. Teraz pytanie jak instalować pluginy. Nic trudnego, pobieramy dany plugin - skorzystajmy z tego do którego odwoływałem się wcześniej tj. Kento RankMe i wrzucamy po prostu pliki do odpowiednich folderów tak jak autor ułożył w paczce, lub jeżeli posiadamy tylko sam plik "smx" wrzucamy go jedynie do "plugins". W przypadku RankMe, po rozpakowaniu plików widzimy że znajdujemy się w strukturze: /csgo/addons/sourcemod/ - tak więc należy przekopiować pliki/foldery właśnie do tego miejsca tj. "sourcemod". Po wgraniu powinniśmy widzieć taką strukturę w plugins (pluginy podstawowe przeniosłem do nowego folderu base):

    Aktualnie, pozostaje nam zrestartować serwer i ponownie sprawdzić listę pluginów za pomocą komendy: "sm plugins list" w konsoli naszego serwera:

    Jak widać, nasza lista zwiększyła się o jeden plugin - na pierwszej pozycji znajduje się "RankMe". Oznacza to że plugin został wgrany i uruchomił się bez błędów. Ot cała magia. Dokładnie tak samo postępujemy z każdym innym pluginem, czy to będzie kilka plików czy sam plik "smx".
    Dziś poznaliśmy w jaki sposób u podstaw konfigurować SourceMod'a na serwerze. Oczywiście istnieje jeszcze wiele elementów konfiguracji samego serwera jednak w tym poradniku będę skupiać się jedynie na SourceModzie ponieważ ostatecznym celem jest nauka pisania pluginów - co nam po tym że umiemy coś napisać jak nie umiemy skonfigurować samego SourceMod'a.
    Także dziękuję za uwagę i wszystkich zainteresowanych zapraszam na część drugą jak i kolejne które za jakiś czas powstaną.
  11. Thanks
    Charlie W. got a reaction from >>JeCoB<< ツ in [5vs5] Zmiany na serwerze   
    Dnia 23/01:
    Małej modyfikacji uległa lista map:
    de_inferno de_mirage de_cache
  12. Like
    Charlie W. got a reaction from Bluu in [5vs5] Zmiany na serwerze   
    Dnia 23/01:
    Małej modyfikacji uległa lista map:
    de_inferno de_mirage de_cache
  13. Upvote
    Charlie W. reacted to MasujTurboPtysia<3 in Podanie o admina   
    Nie wiem w którym miejscu jesteś aktywną osobą. Siedzę na teamspeaku dosyć często i cię nie widzę,a jeśli cię widzę to rzadko. Dlaczego wgl ściemniasz w podaniu - nie widzę abyś się udzielał na naszym forum w ostatnim czasie. Na tsie jest sporo osób,które są nie zarejestrowane tylko dlatego ponieważ nie przychodzą po rangi - od tego jest kanał proszę o rangę. Ja jako admin nie mam obowiązku rejestrowania osób randomowych,które się po taką rangę nie zgłaszają.
    Podsumowując jestem na nie. 
    Edytując ten post chciałbym dodać,że użytkownik nie umie przyjąć negatywnych opinii do wiadomości i wszystko wszystkim chciałby wyjaśniać - myślę, że z takim podejściem możesz zapomnieć o posadzie.Admin musi być cierpliwy.A poniżej dowód na moją rację : 

    Użytkownik nie musi cię znać,aby wypowiadać się w twoim podaniu.Wystarczy,że jest użytkownikiem forum i kilka razy był u nas na TeamSpeaku. 
    Edytując po raz kolejny post 
    Piszesz,że kiedy wbiłeś do mnie na kanał była cisza - była tylko dlatego,że po wypowiedzeniu dwóch słów i odczekaniu minuty wyszedłeś z mojego kanału,gdy ja oglądałem film na głośnikach,a jest taka opcja jak "Zaczep klienta" gdybyś jej użył na pewno moja reakcja byłaby szybsza.Jeżeli chodzi o powiadomienia reaguje na nie,ale masz rację zdarza mi się być afk,bo jak każdy człowiek idę sobie zrobić coś do jedzenia lub taktyczne zw na toaletę.Czasami robię inne rzeczy niż tylko granie na komputerze. To i tak dalej nie zmienia faktu,że nie potrafisz przyjąć krytyki na klatę.
    Pozwolę sobie przytoczyć cytat jednej z osób "Jeżeli to podanie zostanie przyjęte to stracę wiarę w ludzi." 
    Pozdrawiam Ptyś.
  14. Thanks
    Charlie W. got a reaction from keeemin. in Kompletny poradnik na zwiększenie FPS.   
    z tą komendą bym uważał. Zdarzało mi się jej kiedyś używać i w czasie jej używania zaobserwowałem crash'e CS:GO podczas zmiany mapy - po przywróceniu jej na wartość default'ową crashe ustały oraz nie zauważyłem jakiejś poprawy FPS'ów - proszę jednak pamiętać że mówię o tym co było ponad rok temu.
    Generalnie nie ma się również co czepiać, dobry poradnik - graczom ze słabszym sprzętem na pewno się przyda.
  15. Piwko
    Charlie W. reacted to keeemin. in Kompletny poradnik na zwiększenie FPS.   
    Witajcie, dzisiaj przedstawiam wam szczegółowy poradnik pt. "Jak zwiększyć FPS-y". Poradnik został stworzony w 100% przeze mnie i zabraniam kopiować go na inne fora bez mojej zgody. Leciiimy ^^
    1. PODSTAWY
    Na samym początku warto zrobić zwykły format, by oczyścić system z niepotrzebnych plików. Jeśli nie chcesz robić formatu to warto zrobić reinstall CS:GO, bądź sprawdzenie spójności plików.
    By sprawdzić spójność plików gry należy wykonać poniższe czynności:
    1. Przejdź do swojej biblioteki gier na Steam.
    2. Znajdź CS:GO kliknij na niego PPM następnie przejdź do właściwości.
    3. Przejdź do zakładki Pliki Lokalne a następnie wybierz opcje Sprawdź spójność plików gry.
    2. OPCJE URUCHAMIANIA
    Aby ustawić opcje uruchamiania należy:
    1.Przejść do biblioteki steam
    2. Szukamy CS:GO klikamy na niego PPM następnie przechodzimy do właściwości.
    3. W zakładce ogólne klikamy "Ustaw opcje uruchamiania"
    Lista parametrów startowych, które należy tam wpisać:
    -nojoy - wyłącza nam wsparcie dla dżojstika w cs:go.
    -novid - brak intra na początku. 
    +cl_forcepreload 1 -  Dzięki tej komendzie cała mapa będzie nam się ładowała podczas dołączania na serwer, dzięki czemu takie rzeczy jak tekstury, modele, eksplozje granatów itp. nie będą ładowały się podczas rozgrywki co tylko powoduje spadki FPS.
    +mat_queue_mode 2 - Parametr ten włączy nam wykorzystywanie wszystkich rdzeni naszego procesora dla CS:GO (przed komendą musi być + gdyż jest to komenda a nie parametr)!
    -d3d9ex - komenda która pozwala na zmniejszenie zużycia procesora o około 40%.
    -heapsize 4194304 - zmniejsza wydajność pamięci ram 
    3. NAKŁADKA STEAM
    By uzyskać większą ilość klatek na sekundę należy również wyłączyć Nakładkę Steam, a żeby to zrobić trzeba przejść do Ustawień Steam, następnie wejść w Interfejs i odznaczyć "Włącz nakładkę steam podczas gry"  i dzięki temu zyskujemy +/- 20fps
    4. DVr czyli Nagrywanie przez Windowsa. (DZIAŁA TYLKO NA WINDOWS 10)
    W przypadku Windows'a 10 musimy liczyć się z tym, że Windows nagrywa wszystko co robimy, czy w co gramy. Jest to o tyle uciążliwe, że skutkuje to mniejszymi FPS'ami, aby wyłączyć nagrywanie zrób poniżej podane kroki.
    1. W pasku zadań przejdź do Ustawień Windowsa (Ikonka zębatki).
    2. Wybierz opcje Granie.
    3. W zakładce Pasek gry wyłącz opcję Rejestruj klipy z gry.
    4. W zakładce DVR z gry wyłącz Rejestruj w tle podczas gry.
    Dzięki wyłączeniu tej opcji możesz być pewien, że zwiększysz swoje FPS'y.
    5. USTAWIENIA GRAFICZNE W GRZE
    Punkt chyba najbardziej oczywisty i chyba nie muszę się bardzo rozpisywać. Ustaw sobie wszystko tak jak jest na zdjęciu poniżej, a możesz być pewien, że Twoje FPS'y podskoczą!

    Pamiętaj również, że samo przejście na rozdziałke 4:3 da Ci dużo, a już na pewno FPS'y
    6. USTAWIENIA (NVIDIA)
    Aby znacząco podnieść swoje FPS'y wykonaj kroki podane poniżej, pamiętaj, że będzie to działać jedynie jeśli masz Kartę od NVIDIA, niestety nie wiem jak to się ma w przypadku AMD, czy INTEL.
     
    1. Kliknij PPM na pulpit następnie przejdź do Panel Sterowania NVIDIA.
    2. Następnie przejdź do Wyreguluj ustawiania obrazu..
    3. Zaznacz opcje Stosuj preferencje użytkownika, podkreślając i przeciągnij pasek w lewo w stronę Wydajności.
    4. Teraz przechodzimy sobie do Zarządzanie ustawieniami 3D
    5. Wyszukujemy na liście Synchronizacja Pionowa i wybieramy obok Wyłącz.
    6. Wyszukujemy na liście Filtrowanie Tekstur - jakość i wybieramy obok Wysoka wydajność.
    7. W przypadku laptopa wyszukaj w tym samym miejscu Preferowany procesor graficzny i tam KONIECZNIE zaznacz Procesor NVIDIA o dużej wydajności, w innym przypadku laptop będzie wykorzystywał o wiele słabszą kartę od normalnej.
    7. OPCJE ZASILANIA I OPCJE WYDAJNOŚCI
    Zmień swoje opcje zasilania. Pomoże Ci to w FPS'ach, lecz w przypadku laptopa zwiększy zużycie baterii. Aby zmienić opcje zasilania wykonaj podane niżej czynności.
    1. Przejdź do Panelu Sterowania
    2. Następnie przejdź do Sprzęt i Dźwięk
    3. Wybierz opcje "Opcje zasilania"
    4. I ostatnią czynnością będzie ustawienia planu "Wysoka wydajność"
    I to wszystko w przypadku Opcji zasilania! Przejdźmy teraz do Opcji Wydajności.
    Aby ustawić Opcje Wydajności wykonaj poniższe kroki:
    1. Wejdź do Ten Komputer
    2. Kliknij PPM, a następnie wejdź w Właściwości
    3. Następnie wyszukaj Zaawansowane ustawienia systemu i kliknij na to.
    4. W ramce wydajność kliknij na Ustawienia
    5. Wybierz opcje Dopasuj do najlepiej wydajności.
    I TO TYLE!
     
    8. Nie bądź gbur, posprzątaj kompa.
    Czasami wystarczy samo posprzątanie komputera - serio. Wytrzyj go z kurzu zalegającego tam i będziesz miał gwarantowaną poprawę. Ewentualnie możesz pobrać programy pomagające w czyszczeniu komputera wewnątrz, a te programy przedstawiam poniżej.
    CCleaner Malwarebytes Razer Game Booster/Razer Cortex  
    I na tym kończymy poradnik, możesz być pewny, że po wykonaniu tych czynności Twoje FPS'y polecą do góry. Jeśli zauważyłeś błąd, lub dodałbyś coś od siebie to koniecznie napisz to w Odpowiedziach, a ja od razu to naprawię  Jak już wyżej wspomniałem jest kompletny ZAKAZ kopiowania poradnika na inne fora bez mojej zgody. Poradnik jest własnościa Ganjaskill.eu. Sieeeeeemka! ^^
     
    Źródło: Youtube, Pomoc techniczna Steam, sniper13, IzakTV
     
  16. Thanks
    Charlie W. got a reaction from nowleusz in Wsparcie finansowe dla naszej sieci   
    Data: 21.01.2020
    Forma: Przelew
    Kwota: 59,97zł
    Potwierdzenie przelewu podesłane na PW do właściciela.
    @dbk - przebity ❤️
    Prośba o zaimplementowanie: O ile możliwe oczywiście [KLYK]
  17. Like
    Charlie W. got a reaction from MasujTurboPtysia<3 in Wsparcie finansowe dla naszej sieci   
    Data: 21.01.2020
    Forma: Przelew
    Kwota: 59,97zł
    Potwierdzenie przelewu podesłane na PW do właściciela.
    @dbk - przebity ❤️
    Prośba o zaimplementowanie: O ile możliwe oczywiście [KLYK]
  18. Like
    Charlie W. got a reaction from Roney in Wsparcie finansowe dla naszej sieci   
    Data: 21.01.2020
    Forma: Przelew
    Kwota: 59,97zł
    Potwierdzenie przelewu podesłane na PW do właściciela.
    @dbk - przebity ❤️
    Prośba o zaimplementowanie: O ile możliwe oczywiście [KLYK]
  19. Like
    Charlie W. got a reaction from MKS1948<3 in Wsparcie finansowe dla naszej sieci   
    Data: 21.01.2020
    Forma: Przelew
    Kwota: 59,97zł
    Potwierdzenie przelewu podesłane na PW do właściciela.
    @dbk - przebity ❤️
    Prośba o zaimplementowanie: O ile możliwe oczywiście [KLYK]
  20. Like
    Charlie W. got a reaction from T∆X in Wsparcie finansowe dla naszej sieci   
    Data: 21.01.2020
    Forma: Przelew
    Kwota: 59,97zł
    Potwierdzenie przelewu podesłane na PW do właściciela.
    @dbk - przebity ❤️
    Prośba o zaimplementowanie: O ile możliwe oczywiście [KLYK]
  21. Upvote
    Charlie W. reacted to T∆X in Odwołanie od warna   
    Link do tematu gdzie zostało nadane ostrzeżenie: 
     
    Wyjaśnienia: Warn był słuszny, jednak gdy przypatrzymy się drugiemu postowi @LukaSH^^ w temacie kolega dostaje tylko notkę i to w dodatku informacyjną, więc pytam się ja czy to @LukaSH^^ jest specjalnie traktowany czy to ja jestem jakiś gorszy a może moderacja jest niekompetentna?
     
  22. Like
    Charlie W. reacted to dbk in [SA] DIBIKEJ   
    W odpowiedzi na zarzuty @LukaSH^^ pozwolę sobie wkleić obie wypowiedzi z podań mojego oraz @Charlie W. (żeby było łatwiej się odnieść).
     
    Pisząc to podanie liczyłem się z takimi opiniami, więc i odpowiednio się na taką ewentualność przygotowałem. Idąc po kolei, zacząłeś od mojego bana. Niewątpliwe jest to, że jeszcze z 2-3tyg temu byłem tu zbanowany, a jedynie wtajemniczeni znają jego prawdziwy powód. Będąc upartym i stawiając na swoim mocno pogryzłem się z dwiema użytkowniczkami tego forum, za co dostałem blokadę z powodem "Zabrania się umieszczania zawartości, która może negatywnie wpłynąć na innych użytkowników". Może i ban był słuszny, może nie - ja nadal uważam, że nie do końca. Idąc dalej tematem bana, przypomnij sobie sytuację z @McKay i jego moderatorem. Facet pojawił się znikąd i ówczesna administracja po prostu wcisnęła go na rangę - w tamtym momencie robiłem dla tego forum co najmniej 10x więcej niż on. Jak już go przyjęliście, gość zniknął i jedyne co do dziś robi, to wrzuca donate'a co jakiś czas.
    Idąc dalej, nikomu się nie narzucaliśmy - to @Scorpion Flail wyszedł do nas z propozycją powrotu na ganję. Nie mówię, że nas o to błagał bo tak nie było, jednak sama migracja na Ganję wyszła z jego inicjatywy i już w tym momencie zaznaczę, że musiałem się trochę postarać, aby zabrać ze sobą znajomych, którzy w żaden sposób nie są problematyczni, a niektórzy z nich zrobili więcej w te 2 tygodnie niż niejedna osoba na rangach. 
    Kolejno piszesz o "traceniu resztki wiary w człowieka". Co ma jedno do drugiego? Pokaż mi w wymaganiach coś, czego nie spełniam. Zazwyczaj ludzie w opiniach powołują się na wymagania, u Ciebie tego nie widzę.
     
    Przejdźmy teraz do wypowiedzi, którą wstawiłeś w podaniu @Charlie W., bo poniekąd też tyczy się mojej osoby (napisałeś w liczbie mnogiej).
    Logicznym jest, że będąc na innej sieci siedzieliśmy na innym TS'ie, jednak czasem zarówno mi, jak i @Charlie W. zdarzało się na Waszego wbijać (RAMAN - FC z Scorpionem, JA - GTA z Masujem i czasem Tobą). Mówisz o braku aktywności, kiedy jesteś jedną z mniej aktywnych osób, wchodzisz na TS'a na 2h, kiedy my potrafimy siedzieć po dziesięć. Musisz być niezłym hipokrytą, żeby używać tego argumentu - miałeś [email protected] i nic nie robiłeś, później odpuściłeś i po Tobie wskoczyła Natalia. Po jej rezygnacji dostałeś [email protected] z powrotem (wcisnęli Cię jak klucznika wcześniej) i za Twojej drugiej kadencji NIC NIE ZROBIŁEŚ i nie byłeś nad wyraz aktywny. Cóż, cytując klasyka:
    Warto też zauważyć, że kiedy nas było mniej na tym TS'ie to Ciebie również, bo siedziałeś z nami na serwerze, który razem opłacaliśmy. Śmiem stwierdzić, że od powrotu z serwerami bardziej przyczyniliśmy się do rozwoju tej sieci niż Ty odkąd Cię znam - no sorry, takie fakty. Wcześniej może coś robiłeś, ale osobiście tego nie doświadczyłem.
    Nie zwalniając, piszesz o tym że pchamy się na rangi. Dobrze wiesz, że za czasów mojej świetności miałem ich dokładnie osiem. Nie jeden user pisał wtedy teksty typu: "nie poradzisz sobie" "czy to nie za dużo?" itp. 
    Poza tym, chęć posiadania Admina TS3 jest wg Ciebie pchaniem się na rangi? Wyraźnie napisałem, że chcę go głównie do celów własnych, a jak będzie potrzeba to i pomogę. Nigdy nie zrozumiem tej chorej teorii - nikt nikomu nie płaci tutaj za pomoc, można to porównać do wolontariatu. Widziałeś tam kiedyś zaawansowaną rekrutację lub selekcję? To administracja powinna się cieszyć, że ktoś chce pomagać, a nie na odwrót.
    Można dodać też do tej wypowiedzi moje punkty reputacji. ROK czasu byłem zbanowany, a nadal jestem w TOP5 userów, kiedy sieć istnieje od 2k12. Możesz zarzucić mi, że to przez grafikę, robienie avatarów dla użytkowników, ale czy to nie pomoc? 
    @Charlie W. - ten niejednokrotnie pomagał innym właścicielom/opiekunom serwerów nawet gdy nas tu nie było. Pomagał też wielokrotnie samemu @Scorpion Flail no i nawet będąc u konkurencji z serwerem był tutaj nadal opiekunem TS'a.
    Odkąd jesteśmy na forum wszedł również czas ONLINE. Osób, które mają go więcej ode mnie policzysz na palcach jednej ręki.
     
    Na koniec dodam, że ani u mnie, ani u @Charlie W.nie podałeś 3 argumentów za/przeciw, co na tym forum miało zwyczaj podlegać pod warna.
     
    EDIT:
     
    Właśnie pokazałeś swoją aktywność i podejście  
     
  23. Haha
    Charlie W. got a reaction from MasujTurboPtysia<3 in [SA] DIBIKEJ   
    Jak najbardziej na tak.
    Why? No to dość proste, jest go więcej niż 2 pozostałych adminów nie licząc oczywiście w/w. Zna się na rzeczy i nie jest to tylko przechwalanie się. Na tak jak najbardziej 😛 
    Z minusów: Jego poziom grania w CS:GO jest na tym samym bądź lekko wyższym poziomie niż @Scorpion Flail
  24. Piwko
    Charlie W. got a reaction from dbk in [SA] DIBIKEJ   
    Jak najbardziej na tak.
    Why? No to dość proste, jest go więcej niż 2 pozostałych adminów nie licząc oczywiście w/w. Zna się na rzeczy i nie jest to tylko przechwalanie się. Na tak jak najbardziej 😛 
    Z minusów: Jego poziom grania w CS:GO jest na tym samym bądź lekko wyższym poziomie niż @Scorpion Flail
  25. Piwko
    Charlie W. reacted to dbk in [Server Admin] Charlie W.   
    Pewnie nikt nie będzie brał pod uwagę mojego zdania, bo większość wie jakie relacje panują między mną a @Charlie W.. Jednak dlla zasady napiszę, że warto brać.
    Zaraz po @Scorpion Flail (albo nawet i przed, potyrajcie się między sobą) posiada największą wiedzę w tematyce naszej sieci (jakieś sourcemod'y, php'y itd.), potrafi się zachować i jest jednym z najbardziej pomocnych użytkowników tego forum.
     
    Z minusów - czasem za dużo gada i nie da się go słuchać, ale na szczęście mamy opcję "wycisz klienta".

Zapoznaj się z:

Regulaminy

Grupa Steam

FanPage

×
×
  • Create New...