Skocz do zawartości

Inte Tillgänglig Danke:*

Weteran

Aktywność reputacji

  1. Haha
    Inte Tillgänglig Danke:* otrzymał reputację od QQisBAckKontunuacja turnieju - może teraz się uda   
    Dobra drużyno, jako S@ poprowadzę Nas po zwycięstwo.  xD
    Dobry składzik. <3
    @MeGusta ; @QQisBAck ; @Bezzi ; @MartyN 
    Przynajmniej nikt spinać nie będzie. xD
  2. Serduszko
    Inte Tillgänglig Danke:* przyznał reputację dla KnopaKontunuacja turnieju - może teraz się uda   
    Jak coś mogę zagrać w zastępstwie za kogoś jak wam coś wypadnie
    Kontakt PW 
     
    Płatne po meczach 
  3. Haha
    Inte Tillgänglig Danke:* otrzymał reputację od MartyNKontunuacja turnieju - może teraz się uda   
    Dobra drużyno, jako S@ poprowadzę Nas po zwycięstwo.  xD
    Dobry składzik. <3
    @MeGusta ; @QQisBAck ; @Bezzi ; @MartyN 
    Przynajmniej nikt spinać nie będzie. xD
  4. Serduszko
    Inte Tillgänglig Danke:* przyznał reputację dla Werid *-*Kontunuacja turnieju - może teraz się uda   
    Jestem z Was dumna Idealnie wyszło, żeby zagrać 5vs5.
    Teamy wstępnie prezentują się tak.
    Kapitan zostaje oznaczony gwiazdką ⭐️
    Team1:
    @Idealna Bania⭐️
    @Doman
    @Ripton
    @Tomass ツ
    @sypkilopez
    TEAM2:
    @MeGusta⭐️
    @Inte Tillgänglig Danke:*
    @QQisBAck
    @Bezzi
    @MartyN
    TEAM3:
    @Aureox⭐️
    @M a m c i a
    @Missia
    @Th3End
    @Bene
    TEAM4:
    @SQNFUN⭐️
    @nieprawdopodobniak
    @Maajkeel
    @señor
    @VEX`
    TEAM5:
    @BORN2KILL.⭐️
    @cover
    @^^RYBSON^^
    @koksy
    @~KUCYK~
     
    Mam nadzieję, że nie macie większych pretensji co do teamów Na dniach pojawi się temat wraz z tabelą jak i datami, kto, z kim i kiedy gra.
    Przypominam, że wszystko odbędzie się między 11 a 13 sierpnia.
    Tak jak wcześniej, prosiłabym, aby kapitanowie w jakiś sposób skontaktował się ze swoją drużyną czy to na forum, czy na ts. W celu wyeliminowania jednej z map, jak i ogólnej rozmowy.
  5. Wkurzony
    Inte Tillgänglig Danke:* otrzymał reputację od MartyN[ODRZUCONE]Podanie piterooo   
    A ja jestem na NIE.
    Powód?
    L 07/30/2017 - 11:43:46: piterooo : kuzwa powyzej 5 ct b !!!!
    L 07/30/2017 - 11:44:15: piterooo : kuzwa powyzej 5ct B
    L 07/30/2017 - 11:45:34: piterooo : kto przed chwila zaplantowal na B ???
    L 07/30/2017 - 11:47:32: piterooo : k***a bany bdz
    L 07/30/2017 - 11:59:37: piterooo : k***a powyzej 5 ct b Q!!!!!
    L 07/30/2017 - 12:33:29: *DEAD* piterooo : kuzwa znowu bd hosty
    L 07/30/2017 - 12:47:33: piterooo : ty chujku
    L 07/30/2017 - 13:01:01: *DEAD* piterooo : chujku
    L 07/30/2017 - 13:07:33: *DEAD* piterooo : 1 hp ty ciulu
    L 07/30/2017 - 13:27:23: piterooo : dobra nie D:D chujowa masz
    L 07/30/2017 - 13:29:44: piterooo : k***a alce pajace
    L 07/30/2017 - 13:54:59: piterooo : o ty kuzwa
    L 07/30/2017 - 14:16:49: piterooo : jaki ku**s
    L 07/30/2017 - 14:54:39: *DEAD* piterooo : ty cwelu xdd
    L 07/30/2017 - 15:38:18: *DEAD* piterooo : jakie ku***y


    Nie chce mi się już dalej szukać, tyle starczy.
    Cały czas albo ku*wa albo obrażasz (nawet 'w żartach'), a takiego zachowania Administracja nie toleruje.
  6. Lubię to
    Inte Tillgänglig Danke:* otrzymał reputację od Janek Snieg [ZAMKNIĘTY][COD 400] Rezygnacja - KreatywnyAli   
    W dniu dzisiejszym @KreatywnyAli zrezygnował ze swojej funkcji.
    Dziękujemy za współpracę.
  7. Serduszko
    Inte Tillgänglig Danke:* otrzymał reputację od Bezzi[ODRZUCONE]Podanie piterooo   
    A ja jestem na NIE.
    Powód?
    L 07/30/2017 - 11:43:46: piterooo : kuzwa powyzej 5 ct b !!!!
    L 07/30/2017 - 11:44:15: piterooo : kuzwa powyzej 5ct B
    L 07/30/2017 - 11:45:34: piterooo : kto przed chwila zaplantowal na B ???
    L 07/30/2017 - 11:47:32: piterooo : k***a bany bdz
    L 07/30/2017 - 11:59:37: piterooo : k***a powyzej 5 ct b Q!!!!!
    L 07/30/2017 - 12:33:29: *DEAD* piterooo : kuzwa znowu bd hosty
    L 07/30/2017 - 12:47:33: piterooo : ty chujku
    L 07/30/2017 - 13:01:01: *DEAD* piterooo : chujku
    L 07/30/2017 - 13:07:33: *DEAD* piterooo : 1 hp ty ciulu
    L 07/30/2017 - 13:27:23: piterooo : dobra nie D:D chujowa masz
    L 07/30/2017 - 13:29:44: piterooo : k***a alce pajace
    L 07/30/2017 - 13:54:59: piterooo : o ty kuzwa
    L 07/30/2017 - 14:16:49: piterooo : jaki ku**s
    L 07/30/2017 - 14:54:39: *DEAD* piterooo : ty cwelu xdd
    L 07/30/2017 - 15:38:18: *DEAD* piterooo : jakie ku***y


    Nie chce mi się już dalej szukać, tyle starczy.
    Cały czas albo ku*wa albo obrażasz (nawet 'w żartach'), a takiego zachowania Administracja nie toleruje.
  8. Lubię to
    Inte Tillgänglig Danke:* otrzymał reputację od  SQNFUN#2 Gazetka MH - Lipiec   
    :like:
    Bardzo ładna gazeta. Miło się czytało, fajne informacje. Czekam na kolejną.
     
    Ja w ogóle nie znam się na grafice, ale mi się szczerze podoba.
  9. Serduszko
    Inte Tillgänglig Danke:* otrzymał reputację od Bezzi#2 Gazetka MH - Lipiec   
    :like:
    Bardzo ładna gazeta. Miło się czytało, fajne informacje. Czekam na kolejną.
     
    Ja w ogóle nie znam się na grafice, ale mi się szczerze podoba.
  10. Serduszko
    Inte Tillgänglig Danke:* przyznał reputację dla Bezzi#2 Gazetka MH - Lipiec   
    Cuś takiego grafikiem nie jestem  
  11. Serduszko
    Inte Tillgänglig Danke:* przyznał reputację dla  SQNFUN#2 Gazetka MH - Lipiec   
  12. Lubię to
    Inte Tillgänglig Danke:* otrzymał reputację od MamusiaaKontunuacja turnieju - może teraz się uda   
    Zapisz, jak zabawa to zabawa. 
    Tylko też nie wiem co z weekendem, ale dwie czy tam trzy godzinki powinno udać mi się poświęcić.
  13. Serduszko
    Inte Tillgänglig Danke:* otrzymał reputację od Werid *-*Kontunuacja turnieju - może teraz się uda   
    Zapisz, jak zabawa to zabawa. 
    Tylko też nie wiem co z weekendem, ale dwie czy tam trzy godzinki powinno udać mi się poświęcić.
  14. Serduszko
    Inte Tillgänglig Danke:* otrzymał reputację od BezziKontunuacja turnieju - może teraz się uda   
    Zapisz, jak zabawa to zabawa. 
    Tylko też nie wiem co z weekendem, ale dwie czy tam trzy godzinki powinno udać mi się poświęcić.
  15. Haha
    Inte Tillgänglig Danke:* otrzymał reputację od  RiptonKontunuacja turnieju - może teraz się uda   
    Zapisz, jak zabawa to zabawa. 
    Tylko też nie wiem co z weekendem, ale dwie czy tam trzy godzinki powinno udać mi się poświęcić.
  16. Lubię to
    Inte Tillgänglig Danke:* przyznał reputację dla Bezzi[UB]Ślepy jesteś??   
    Jesteś strasznie arogancki nie podoba mi sie Twoje zburaczałe zachowanie. Idź graj i nie siej fermentu na sieci, bo jak spotkamy sie ponownie to może nie być tak miło.
  17. Lubię to
    Inte Tillgänglig Danke:* otrzymał reputację od Rest :*Podanie na Admina.   
    Podanie zamykam na okres tygodnia.
    Zobaczymy jakie za tydzień będzie Twoje GT. Jeżeli będzie co najmniej godzina dziennie, podanie zostanie otwarte.
  18. Lubię to
    Inte Tillgänglig Danke:* otrzymał reputację od Janek Snieg [ZAMKNIĘTY][COD 400] Utrata rangi - Przemo*_*   
    W dniu dzisiejszym rangę Admina COD 400 traci @Przemo*_*.
    Dziękujemy za współpracę.
  19. Serduszko
    Inte Tillgänglig Danke:* przyznał reputację dla Werid *-*Kontunuacja turnieju - może teraz się uda   
    Przed zagłosowaniem zapoznaj się z treścią tematu bądź skonsultuj się z @.:Aga:. lub @Th3End,gdyż każdy głos oddany przed przeczytaniem, zagraża Twojemu życiu lub zdrowiu!
    Jak większość wie z turniejem, który miał się odbyć, były pewne problemy. Mianowicie jeden z organizatorów się obraził, bo dostał warna, za to inne osoby zrezygnowały z niewiadomych przyczyn.
    Tak więc pytanie do Was, czy są jeszcze w ogóle osoby chętne do zagrania owego turnieju?
    Jeśli tak, to zgłoście się w tym temacie, a najlepiej gdyby osoby, które chcą wziąć udział wysłały mi link do profilu steam tutaj, na pw albo dodały bezpośrednio na steam -> қςιεzηι¢zқα ღ
    Przewidywana data to 12-13 sierpnia (sobota, niedziela) albo zaczniemy już w piątek, jeśli będzie to pasowało uczestnikom. Przypominam, jest to turniej ONLY STEAM!
     
    Przebieg, małe zmiany:
    Teamy zostaną na nowo złożone, nie będą to duże zmiany ale jednak trzeba to zrobić, aby nie było drastycznych różnic w doświadczeniu, bądź czasie przegranym w cs. Krótko mówiąc: będzie się liczyła taktyka, jak i łut szczęścia, no i może też te doświadczenie
    Gracze do teamu będą przydzielani pod względem przegranych godzin, dlatego potrzebne mi są Wasze konta.
    W rozgrywce praktycznie nic się nie zmieni, grane będą trzy mapy. Oczywiście gramy do przewagi dwu-mapowej, może zdarzy się comeback i faworyt meczu zostanie wyeliminowany.
    Wszyscy spotkamy się na ts3, aby tam ustalić jakie mapy będą, jak i ich kolejność. Na serwerze jest wgranych pięć: DUST2, INFERNO, NUKE, MIRAGE oraz TRAIN. Kapitanowie ustalą wraz z drużyną, którą wyrzucić i gramy te trzy, które zostaną.
    Będzie 30 rund, włączony friendlyfire, runda trwająca 2 minuty, jak i czas od zaplantowania bomby do jej wybuchu, który wynosi 35 sekund.
    Gdy dojdzie do wyniku 16:X osoba nadzorująca, zmieni mapę na następną. Jest wiadome, że gramy do dwóch zwycięstw, żeby było trochę trudniej  
    Najprawdopodobniej wszystko będzie się rozgrywało pod wieczór, lecz zawsze można zmienić godzinę.
     
    Ankieta:
    Jak sami widzicie jest ankieta, w której zadecydujecie jak rozegra się ten turniej, co prawda w dużej mierze zależy to od tego ile osób się zgłosi, ale mam nadzieje, że tym razem się uda!
    Jeśli liczba graczy nie będzie odpowiednia żeby np: zagrać 5vs5, to będziemy zmuszeni zagrać te 4vs4, ale liczę na Was!
    Prosiłabym, żeby w ankiecie wypowiadały się osoby, które są zaciekawione turniejem, jak i chcą brać w nim udział. Żeby to chociaż jakoś wyglądało, a nie 35 głosów, a tylko 12 graczy. To osoby biorące udział w tym turnieju mają o tym decydować.
     
    Czas na zgłoszenie się, jak i głosowanie w ankiecie macie do 04.08.2017 do godziny 23:59, po tym czasie razem z @Th3End'em jak i @LOLSON'em zbierzemy wszystkich i ustalimy jak będą wyglądać teamy. Jeśli ktoś się zgłosił, a to z kim jest mu nie pasuje, to już nie miejcie pretensji do Nas tylko do osób przez które trzeba było robić to na nowo.. 
    Jeśli ktoś nie jest zainteresowany albo był, a teraz nie chce grać, wszelkie komentarze niech zachowa dla siebie tym bardziej te, które z turniejem nie są związane, gdyż będą one uważane za spam
  20. Serduszko
    Inte Tillgänglig Danke:* przyznał reputację dla BezziKontunuacja turnieju - może teraz się uda   
    Zgłaszam sie chce Madzie w team xD
  21. Serduszko
    Inte Tillgänglig Danke:* przyznał reputację dla BezziKlops   
    My sie już zdążyliśmy poznać
    Siemka
  22. Serduszko
    Inte Tillgänglig Danke:* otrzymał reputację od BezziKlops   
    Wojtuś, to był Mój Podopieczny CS:GO#2. Zapamiętałam go jako bardzo dobrego Admina.
    Witam ponownie i słuszny wybór jeśli chodzi o wybranie serwera!  ;*
    Oczywiście też zapraszam na wszystkie serwery MG! =)
  23. Serduszko
    Inte Tillgänglig Danke:* przyznał reputację dla  klqsPodstawy amxx   
    Cześć. Nie zauważyłem na tym forum jakiegoś dużego grona osób, które potrafią cokolwiek w amxx, więc postanowiłem się z Wami podzielić moją niewielką wiedzą. Będę się starał opisać wszystko najprościej jak potrafię, aby każdy kto chce, mógł to zrozumieć. Od razu mówię, że moje słownictwo tj. nazywanie konkretnych rzeczy nie będzie idealne i fachowe. Jest to spowodowane tym, że jestem samoukiem i nie wkuwałem teorii na pamięć tylko pobierałem pluginy i próbowałem rozgryźć jak to wszystko działa. 
    Co to wgl jest jak się do tego zabrać.
    AMXX (AMX Mod X - ulepszona i rozwijana wersja AMX Mod).
    Na tym opiera się praktycznie każdy serwer w 1.6 (z wyłączeniem mixów etc.). To dzięki temu wszystkie pluginy działają. W to zagadnienie nie ma potrzeby się głęboko zagłębiać. 
    Pliki *.sma i *.amxx.
    Zapewne nie raz o tym słyszeliście. Pierw pliki *.sma - Wszystkie projekty (tj. pluginy, silniki) w wersji możliwej do rozczytania przez człowieka są zapisywane właśnie w takim rozszerzeniu. Po co ono jest? Otóż gdy chcemy chociażby edytować istniejący już plugin to edytujemy właśnie plik *.sma. Gdy już skończymy prace, specjalnym kompilatorem który opisze później zamieniamy ten plik *.sma na plik *.amxx. Po co coś takiego robimy? AMXX rozpoznaje tylko pliki *.amxx. Do rozczytania przez człowieka są chyba niemożliwe. Kompilator zamienia to kolokwialnie mówiąc z "języka ludzkiego na język komputera". Ważne! Każdy plik *.sma można zamienić na *.amxx bez większego problemu (oczywiscie gdy nie występują errory, przy warningach kompiluje lecz zazwyczaj dana część kodu nie działa). W drugą strone jest większy problem. Istnieją dekompilatory (przeciwienstwa kompilatorów) które robią dokładnie odwrotną akcje. Niestety, nie są one zbyt dokładne. Często bywa, że większość część kodu jest nierozszyfrowana, a istnieją nawet metody które całkowicie uniemożliwiają dekompilacje. Mam nadzieje, że zrozumieliście, że pliki *.sma w FTP serwera są potrzebne tylko i wyłącznie w razie konieczności sprawdzenia działania pluginu/edycji etc., czyli z FTP można całkowicie wywalić folder "Scriptings", w którym znajdują się pliki *.sma oraz bilbioteki (o których będzie niżej) 
    Kompilacja.
    Myślę, że każdy kto prowadzi/ł serwer słyszał o czymś takim. Jest to jak już wyżej pisałem, zamiana pliku *.sma na *.amxx. Istnieją tak jakby dwie kompilacje:  lokalna i online, czym się różnią? Lokalna - kompilujemy naszym programem w którym najczęściej piszemy (w moim przypadku jest to amxx_studio, istnieje też możliwość pisania i kompilowania w notepad++ lecz to wymaga większego trudu. Można poszukać poradniki na internecie jak to zrobić.), a pliki *.amxx odrazu zapisują nam się w ustalonym miejscu na komputerze. Online - Przykładowy kompilator online: amxx.pl/kompilator. Wrzucamy tam kod albo uploadujemy plik *.sma, kompiluje a my musimy pobrać plik *.amxx który oczywiscie zapisuje się tam gdzie zapisują się pobierane pliki przez przeglądarke/ustalonym miejscu.
    Biblioteki.
    Chyba najczęsciej używaną biblioteką która nie jest domyślnie w amxx jest ColorChat. Co to takiego? Gdy piszemy to w kodzie wykorzystujemy funkcje. Zaincludowanie czyli pokazanie kompilatorowi, że ma użyć tej biblioteki, w kodzie to wygląda:
    #include <ColorChat> . Dzięki temu możemy używać funkcji które ta biblioteka zawiera, w tym przypadku jest to jedna, bardzo przydatna funkcja która pozwala w łatwy sposób kolorować wiadomosci wysyłane przez serwer (plugin) do gracza. Oczywiście, można zamiast includować to wrzucić umiejętnie to do kodu i wtedy nie trzeba - tylko po co, skoro tak jest szybciej i prościej. Biblioteki mają rozszerzenie zwykłe .inc
    Funkcje.
    Niestety, funkcje to rzecz które trzeba się nauczyć na pamięć, jednakże ich nazwy są na tyle intuicyjne, a jeśli dobrze skonfigurujemy nasz program do pisania który nam będzie podpowiadał składnie danej funkcji to z używaniem ich nie będzie większego problemu. Spis wszystkich dostepnych znajduje się tu: -> Klik <- po Polsku, a po Angielsku (więcej informacji) -> Klik <- 
    Funkcje forward. Wywoływane są one gdy się stanie coś konkretnego. Konkretniej: przykładem takiej funkcji jest 
    public plugin_init(){ //code } "public" przed funkcją jest oznajmieniem że jest to forward. Zamiast //code wpisujemy kod który w przypadku tej funkcji wykona się przy załadowaniu mapy. Używana jest ona zazwyczaj do rejestrowania pluginu (autor, wersja, nazwa), rejestrowania komend, cvarów (niżej) etc.
    Funkcje natywne. Można je umieścić np. w funkcjach forward. Przykładem takiego użycia byłoby:
    public plugin_init(){     register_plugin("Nazwa", "Wersja", "Autor"); } Po czymś takim po wpisaniu komendy amx_plugins byłby nasz plugin, nazywał by się Nazwa, przy wersji by pisało Wersja a jako autor byłby podany Autor. Po prostu rejestracja pluginu.
    Cvary.
    Najprosciej mówiąc - coś co pozwala nam sterowac pluginem przy pomocy komend/ustawien w amxx.cfg (w ftp serwera). Do zmieniania ich ustawien z poziomu admina na serwerze (oczywiscie z odpowiednimi flagami) uzywamy komendy amx_cvar. Cvary trzeba zarejestrować tam gdzie plugin, czyli w plugin_init.
    Zmienne.
    Zmienne dodajemy poprzedzajac je wyrazem "new". Służą do przechowywania, edytowania i odczytywania danych. Przykłady takich zmiennych to 
    new Zmienna //Może przechowywać max 1 literke/liczbe czyli np: "A", "a", "x" albo "1", "13", "69" etc.  new Zmienna[32] //Może przechowywać 32 literki/cyfry. Jak to działa? Każdy taki [1] to jest jedna zmienna, czyli można było by to zapisać new Zmienna0, new Zmienna1 itd. Ostatnia (32) jest to znak kończący, którego się nie edytuje czyli jak mamy 32 to mozemy wykonać operacje Zmienna[1] = 69 albo Zmienna[31] = 69.  new Float:Zmienna // Przechowuje liczby zmiennoprzecinkowe czyli np "1.69", "6.9" "1.141561" itd. Może występować również jako new Float:Zmienna[32] wtedy jest dokładnie jak przypadek wyżej new bool:Zmienna //Może ona tylko być jak true/false (True = 1, false = 0).  Formatowanie zmiennych. Dokładnie o znakach powiem niżej, ale zmienne po zadeklarowaniu na początku czyli np przed plugin_init można edytować/odczytywać w całym pluginie, czyli gdziekolwiek można napisać
    Zmienna = 1 lub
    if(zmienna == 1) Pierwszy przypadek ustawia Zmiennej wartość 1, drugi sprawdza czy zmienna równa się 1, jesli nie to zwraca 0, jeśli tak to zwraca 1.
     
    Operatory.
    W większości używane w funkcji if, for lub while oraz przy działaniach.
    a == b - Sprawdza czy lewa równa się prawej - jeśli tak zwraca 1, jeśli nie zwraca 0 a = b - Zmienna a przyjmuje wartość b, czyli jeśli b było równe 5 to a teraz tez jest równe 5 a < b - Jesli a jest mniejsze od b - zwraca 1, jeśli nie zwraca 0 a <= b - Jesli a jest mniejsze lub równe b - zwraca 1, jeśli nie zwraca 0 a != b - Jeśli a jest różne od b - zwraca 1, jeśli nie zwraca 0 a+b - a dodać b a+=5 - a dodać 5 a-b - a odjąć b a-=5 - a odjąć 5 a*b - a razy b a*=5 - to samo co a=a*5 a/b - a podzielone przez b a/=5 - to to samo co a=a/5 a%2 - zwrócenie reszty z dzielenia (przykład: 5%2 - zwróci nam 1) a++ - a użyte a potem zwiększone o 1 ++a - a zwiększone o jeden i dopeiro użyte a-- - a uzyte a potem zmniejszone o 1 --a - a zmniejszone o 1 a potem użyte is_user_connected(id) && is_user_alive(id) - jeśli jest połączony i żywy zwróci 1, jeśli nie jest żywy/nie jest połączony lub oba warunki są fałszywe to zwraca 0 is_user_connected(id) || is_user_alive(id) - jeśli jest połączony lub żywy zwróci 1, jesli żadne z tych zwróci 0. UWAGA!!
    7.0/3 = 3.5 7/3 = 3 Istnieje tez znak "?" Sprawdza on czy wartość po jego lewej jest 1, jeśli tak to wykona sie pierwszy argument, jeśli nie to drugi. Praktyka:
    is_user_alive(id) ? "Jest zywy" : "Jest martwy" Pętle oraz warunek if.
    Zawarty w nich kod wykona się określona ilość razy albo zanim zostanie wykonany wykona się sprawdzenie. Istnieja 3 pętle, trzeciej za bardzo nie rozumiem więc opisze dwie ktore się używa, jej jeszcze nie widziałem żeby ktoś uzywał, a nazywa się "do,while".
    Warunek if - sprawdza czy wyrażenie w nim jest prawdziwe (1) czy fałszywe (0) i zwraca odpowiednią cyfre. Praktyka:
    if(is_user_alive(id)){     user_kill(id) } Jeśli gracz jest zywy, zwróci 1 po czym wykona się zawarty w nim kod, czyli gracz zostanie zabity, jeśli gracz nie zyje, kod zostanei pominięty. Jeśli zostanei pominięty - czyli gracz będzie martwy, a chcemy sprawdzić skoro jest martwy to czy może jest w SPECT wiec robimy:
    if(is_user_alive(id){     user_kill(id)(id) } else if(cs_get_user_team(id) == 0 || cs_get_user_team(id) == 3){     cs_set_user_team(id, random(1,2)) } Juz tłumacze i objaśniam: Jak można wyczytać z dokumentacji -> Klik <- funkcja cs_get_uset_team zwraca 0 jeśli gracz nie wybrał drużyny lub 3 jesli jest na spect, więc w warunku if sprawdzamy czy jest 0 lub 3. Jeśli tak, przenosimy go do losowego teamu. W 2 argumencie funkcji cs_set_user_team wybieramy team do którego ma go przenieść. Funkcja random(1,2) losuje liczbe od 1 do 2 czyli 1 = TT, 2 = CT. Gdyby zamiast else if(cs_get_user_team(id) == 0 || cs_get_user_team(id) == 3) dać samo else to kod wykonał by się gdyby w pierwszym if gracz był martwy.
    Pętla for. Jest to jak sama nazwa mówi, pętla, w której kod będzie się wykonywał do pewnego momentu.
    for(new i; i<=get_maxplayers(), i++){     if(is_user_admin(i)) break; } Jak widać, tworzymy zmienną i która po każdej pętli się zwieksza o 1 aż do maksymalnej ilości graczy która jest pobierana funkcją get_maxplayers(). Jak to wyglada? for(NOWA ZMIENNA; KIEDY MA SIĘ PĘTLA SKOŃCZYĆ; CO MA SIĘ ZROBIĆ PO SKOŃCZENIU PĘTLI). W pętlach między argumentami nie używamy "," tylko ";" W środku pętli: Jeśli użytkownik o id = zmiennej i jest adminem to pętla się kończy czyli dzieje się tak jakby i doszło do maksymalnej ilości graczy. Po co to? Gdy chcemy np znaleźć jednego admina i wyświetlić go komuś, wtedy po ifie a przed breakiem wysyłamy komuś wiadomosć.
    for(new i; i<=get_maxplayers(), i++){     if(is_user_admin(i)) continue;     user_kill(i) //TEN KOD SIE NIE WYKONA JESLI GRACZ JEST ADMINEM, ALE PĘTLA BĘDZIE SPRAWDZAŁA DALEJ } Jeśli gracz o id = zmiennej i jest adminem to jest to pomijane i traktowane jakby pętla się skończyła, reszta kodu wtedy nie jest brane pod uwage
    Pętla while, podobna do for jednak w jej "wnętrzu" (nawiasach) nie tworzymy zmiennej.
    while(1==2){ //kod } Taka pętla nigdy się nie skończy ponieważ nigdy 1 nie będzie się równało 2.
    new zmienna new id=1 while(zmienna==5){ if(is_user_alive(id++)) zmienna++ } Ta pętla skończy się gdy będzie żyło 5 graczy
    Formatowanie.
    Czyli podmienianie np wyświetlanej wiadomosci do gracza. Załóżmy, że chcemy mu wysłać ile jest graczy online. W takim przypadku nie możemy wklepać na sztywno do kodu że jest 32 bo mijałoby się to z prawdą, dlatego robimy:
    client_print(id, print_center, "Na serwerze jest %d graczy!", ilosc_graczy) Gdzie ilosc_graczy to zmienna do której wcześniej zapisaliśmy liczbe graczy.
    Znaki formatujace:
    %s - string (ciag znaków) czyli np. "bober", "krowa", "elo" etc. %d lub %i - Liczba, czyli np "5", "15", "30". %f - float - liczba zmiennoprzecinkowa czyli np "1.3", "6.9" itd. Czasami będziemy chcieli wyświetlić tylko np. 2 cyfry po przecinku, taki problem wystepował swego czasu na niektorych codmodach gdzie po zmienieniu wymaganego doświadczenia na % wychodzilo im coś w stylu 50.4112308501%. Aby temu zapobierać zamiast %f piszemy %0.2f i wtedy wyświetli 2 cyfry po przecinku. Jeśli chcemy 5 cyfr to piszemy %0.5f. To są te najpotrzebniejsze, reszty się praktrycznie nie używa. Jeśli chcemy w jednej funkcji dodac kilka stringów to robimy to po prostu w kolejności. Jeśli chcemy wysłać zwykły znak % musimy go napisac podwójnie, czyli %%:
    client_print(id, print_center, "Na serwerze jest %d graczy, godzine temu było %d graczy a za 5 lat na 50%% bedzie %d graczy", ilosc_graczy, ilosc_graczy1hago, ilosc_graczy5y) To nam wyświetli np: "Na serwerze jest 20 graczy, godzine temu bylo 15, a za 5 lat na 50% bedzie 0 graczy"
    Dokładna rozpiska znajduje się tu: 
     
    Może w końcu po tej nudnej teorii się czymś zajmiemy? Pasowało by ogarnąć jakiś program do pisania. W tym celu pobieramy z tej strony -> Klik <-  AMX Mod X Full Installer, odpalamy go i instalujemy jak zwykły program. Potem wchodzimy w zainstalowany folder i uruchamiamy Installer.
    Klikamy Next, next, wybieramy select mod directory - next, wybieramy ścieżkę do cstrike, poniżej "Custome game addon:" wybieramy Counter-Strike i instalujemy wszystko. Teraz wracamy się do folderu w którym znajdował się pliczek Installer i wchodzimy w amxxstudio>AMXX_studio. Tam wchodzimy w Tools>settings>Compiler>Compiler settings i w Compiler (amxxpc.exe) ustalamy ścieżko do pliku amxxpc.exe który znajduje się w cstrike>addons>amxmodx>scripting. W moim przypadku jest to 
    D:\Program Files (x86)\Steam\steamapps\common\Half-Life\cstrike\addons\amxmodx\scripting\amxxpc.exe W Deafult Output directory wybieramy ścieżke gdzie mają się zapisywać pliki *.amxx.
    I Gotowe! Mamy program do pisania i dobrze skonfigurowany kompilator! Gdy skonczysz edytować lub pisać jakiś plugin, aby skompilować należy wcisnąć przycisk F9 lub na górze kliknąć Compile>Compile. 
    Jeśli pobieramy biblioteki tak jak np. ColorChat to wrzucamy je do cstrike>addons>amxmodx>scripting>include.
     
    Zaczynamy pisać
    Włączamy amxx_studio i klikamy File>new>empty plugin. Naszym oczom powinno się ukazać
    Po kolei tłumaczę. #include <amxmodx> - Podstawowa biblioteka zawierajaca podstawowe funkcje.
    #define PLUGIN "New Plug-In" - Define lubie tak śmiesznie na nie mówić - zmienna niezmienna  Jak widzimy w register_plugin zamiast nazwy pluginu jest PLUGIN. Przy kompilacji kompilator podmienia PLUGIN na "new Plug-In" Najczęściej jest to wykorzystywane przy pluginach które korzystają z jakiejś flagi admina a dla wygody uzytkownika robi się #define ADMIN_FLAG ADMIN_CHAT i jeśli w jakiejś funkcji bedziemy chcieli sprawdzić czy gracz ma flage ADMIN_FLAG to zamieni nam to na ADMIN_CHAT dzięki czemu będziemy sprawdzać czy gracz ma ADMIN_CHAT. Po co takei babranie? Po to żeby przy 2000 linijkach nie szukać i nie podmieniać flagi tylko wejść sobie na początek, zmienić, skompilować i wrzucić na serwer. 
    No to spróbujemy sobie zrobić powitanie na serwerze. Do tego potrzebujemy funkcji forward która będzie wyłapywała graczy ktorzy wchodzą na serwer. Istnieją dwie funkcje które nam to umożliwiają:
    client_putinserver(id) client_connect(id) Czym się różnią? Pierwsza wywołuje się gdy gracz wejdzie na serwer, czyli będzie miał do wyboru team. Druga wywołuje się przy kliknieciu connect! Przez co niemożliwe jest pobieranie takich danych przez tą funkcje jak uprawnienia, ponieważ one się dopiero załadują. Do tych celów używamy client_putinserver(id) My możemy sobie użyć client_connect(id) gdyż pobieramy tylko nick gracza który nie jest narzucany przez serwer i nie musi się ładować, ale wtedy może zaistnieć taka sytuacja, że wszyscy już go przywitają a on dopiero wejdzie na serwer, ponieważ np. będzie mu się długo ładowało  Wiec używamy client_putinserver(id).
    Pod } od plugin_init dopisujemy:
    public client_putinserver(id){ } Teraz przydało by się pobrać nick gracza którego chcemy przywitać, więc używamy funkcji get_user_name(id, name[], len). Już pędze z wyjaśnieniami. id - Jak wiadomo id gracza który wszedl na serwer.  name[] - nazwa zmiennej do której chcemy zapisać nick tego gracza oraz len - długość tej zmiennej. Teraz trzeba wyświetlić gdzieś te powitanie. Najlepiej do tego posłuży HUD. samodzielne konfigurowanie tego nie należy do najprzymeniejszych rzeczy wiec polecam w amxxstudio: Generators>hudmessage generator i wybranie sobie koloru i pozycji. Następnei formatujemy wiadomość. Powinno to wyglądać mniej więcej tak:
    public client_putinserver(id){     new name[48];     get_user_name(id, name, 47);     set_hudmessage(0, 127, 255, 0.02, 0.13, 0, 6.0, 12.0)     show_hudmessage(id, "Witamy %s na serwerze!", name) } To może teraz sprawdzimy czy gracz jest vipem i odpowiednio napisać. Założymy, że VIP jest na flage t czyli w kodzie będzie to ADMIN_LEVEL_H (pełny link do tego: -> Klik <-)
    Więc robimy odpowiednie ify, czyli będzie to mniej więcej cos takiego:
    public client_putinserver(id){     new name[48];     get_user_name(id, name, 47);     set_hudmessage(0, 127, 255, 0.02, 0.13, 0, 6.0, 12.0)     if(get_user_flags(id) & ADMIN_LEVEL_H)         show_hudmessage(0, "[VIP]Witamy %s na serwerze!", name)     else         show_hudmessage(0, "Witamy %s na serwerze!", name)     }     W funkcji show_hudmessage pierwszy argument "0" powoduje wysłanie do każdego gracza. Można też zrobić to w pętli gdy funkcja nie ma takiej możliwości.
     
    Całość:
     
     
    Zdaje sobie sprawe, że jest to mało, lecz pisanei tego poradnika troche mi zajeło. Ja wiem, że nie jestem w tym jakiś wybitny a co dopiero idealny, więc zapewne jakieś błędy się wkradły. No niestety, wszyscy jestesmy ludźmi, mam nadzieje że mi wybaczycie i uszanujecie mój czas włożony w ten poradnik, który napisałem dla Multi-Head.pl i proszę o uszanowanie tego i nie przywłaszczanie/kopiowanie na inne fora.
  24. Serduszko
    Inte Tillgänglig Danke:* przyznał reputację dla Bezzi[POZYTYWNE]prosze o ub   
    @5g_KoLoS masz na to jakieś dowody? Nie możemy działać bezpodstawnie.
    Brak dowodów @Inte Tillgänglig Danke:*  nowy admin na okresie próbnym pacnij go tam wiesz jak  
  25. Serduszko
    Inte Tillgänglig Danke:* otrzymał reputację od Born [ZAMKNIĘTY][COD 400] Utrata rangi - Przemo*_*   
    W dniu dzisiejszym rangę Admina COD 400 traci @Przemo*_*.
    Dziękujemy za współpracę.
×
×
  • Dodaj nową pozycję...