Skocz do zawartości

Ranking

Popularna zawartość

Treść z najwyższą reputacją w 11/20/17 uwzględniając wszystkie działy

  1. Witam, pragnę z miłą chęcią poinformować Was, że w dniu dzisiejszym powstał nowy dział zatytułowany Zgadywanki. Czas na parę informacji Zgadywanki to nic innego jak temat poświęcony rozrywce w którym będą podawane informacje na temat poszczególnych jednostek a będą to: 1. Celebryta (np. Aktor, piosenkarka, sportowiec itp.) 2. Użytkownik forum (informacje na jego temat będą podawane na podstawie wywiadów bądź Q&A) 3. Sprawy związane z forum. 4. Wiedza ogólna. Itd. (Ogółem - pojawić się może wszystko) Odpowiedzi wysyłamy w wiadomości prywatnej do osoby prowadzące konkurs. Nagrody mogą ulegać zmianie z tygodnia na tydzień. Dwie pierwsze osoby które odgadną dostają nagrody. Czas na oddanie typów będzie wynosił tydzień. Po utworzeniu tematu dostaniecie pare informacji naprowadzających was na konkretne osoby następnie temat będzie zamknięty i swoje typy wysyłacie na priv do założyciela tematu. Zgadywanki będą pojawiały się od teraz co czwartek o godzinie 19:00. Pozdrawiam knopa
    1 punkt
  2. <Losik>

    [ZAMKNIĘTY]Lekkie zmiany

    To i ja się podpiszę. 1. Na serwerze jest strasznie dużo śmie(r)ci, dlatego że ludzie nie potrafią . . . przycelować, a pozostałe atuty sprawiają że nawet kompletny matoł coś tą klasą ugra. Wszystko do kupy zbierając, tak jak przedmówca stwierdził, ta klasa ma za dużo dobroci. Osobiście eliminator bym zostawił - przez to jest tak lubianą klasą, zabrał bym natomiast te dodatkowe skoki. 2. Niewidka aktualna u assasina w porównaniu do niektórych klas non premium jak i premium to jest kpina. Szybki jest, bo dostał jako "śmieszną rekompensatę" 50 kondy za zwinne palce. Ja rozumiem że ma nie być całkowicie niewidzialnych klas na serwerze, ale ta assasinowa niewidka wymaga poprawienia. Dodatkowo klasa szturmowiec ma niewidkę nie z tej ziemi, a w połączeniu z kosą assasina - maszyna do fragowania. Niszczyciela na max inta nie widziałem na serwerze więc nie mogę ocenić jak się prezentuje. Pozdrawiam.
    1 punkt
  3. Frost`

    Premium

    Witam, żeby nie zaśmiecać temat milionami tematów związanymi z premium, tutaj możecie pisać o zamianie starych premium na nowe. Ja osobiście miałem na starym codzie: Kapitana, sanitariusza, imigranta, morderce bodajże.
    1 punkt
  4. W dniu dzisiejszym range admina COD 200 traci @Cannabisek Dziękujemy za współpracę
    1 punkt
  5. 'piję bo mnie hłopak żucił' - Kasia 14 lat
    1 punkt
  6. Na nie , Za szybko non steam 15 lat i bez mikra
    1 punkt
  7. Nick:LOVASSS Data ( Od kiedy do Kiedy ): 20.11.2017r - 30.11.2017r Powód: Muszę kilka spraw sobie przemyśleć, odpoczynek pomoże mi w podjęciu pewnej decyzji. Opiekun, bądź ktoś z wyższej administracji: @SUNN. Pozdrawiam!
    1 punkt
  8. happy

    Samoistny podglad broni

    Dziwne aby na FFA dali dodatkowo silnik cs go mod. Jak zmieni się wygląd broni nie powinno pokazywać chyba że zostało połączone FFA + CS GO MOD. Ale to @SUNN. może ty wiesz coś więcej na ten temat.
    1 punkt
  9. RYBSON

    [ZAAKCEPTOWANE]podanie by dezo

    Za okresem próbnym. + Doświadczenie +/- Aktywność + Steam + Kultura Powodzenia!
    1 punkt
  10. mkasia

    [ZAAKCEPTOWANE]podanie by dezo

    Jestem na TAK . Doświadczenie, kultura
    1 punkt
  11. Baniatowaty

    [ZAAKCEPTOWANE]podanie by dezo

    +Był adminem= Doświadczenie +Kulturka +/-aktywność (jeden dzień grasz, drugi wcale) +Pomocny Jestem na tak
    1 punkt
  12. Av3K

    [ZAAKCEPTOWANE]podanie by dezo

    Okres próbny. Coś ogarniasz, ale degradacja za małą aktywność przez 3 tyg to sporo. Jeśli serio zobaczę, że masz dobrą aktywność, że zgłaszasz i chcesz pomóc będę na pewne tak. + wiek + były admin
    1 punkt
  13. SUNN.

    [POZYTYWNE]Odwołanie od Bana

    @Szakal11 wszyscy dostali UB i Ty również. Machnąłem się przy aktualizacji jednej zabawki i poszła fala banów. P R Z E P R A S Z A M
    1 punkt
  14. Ani !

    [ZAAKCEPTOWANE]podanie by dezo

    Jestem na tak, był już adminem i wywiązywał się że swoich obowiązków przyzwoicie. Tylko jak znowu nam taki numer wywiniesz z aktywnością, to już tak miło nie będzie
    1 punkt
  15. Meduska

    [ZAAKCEPTOWANE]podanie by dezo

    Jestem Na Tak Powody UP Masz więcej grać !
    1 punkt
  16. Tom

    [ZAAKCEPTOWANE]podanie by dezo

    Jestem na tak - Doświadczenie - był już adminem - GT
    1 punkt
  17. Gr4nd

    [ZAAKCEPTOWANE]podanie by dezo

    Był już tu adminem, zdegradowany podobno za małą aktywność, ale jak napisał, że ją poprawi i będzie robił godziny, to ja jestem na TAK. +Wiek +Doświadczenie +/- GT
    1 punkt
  18. Mysiaa

    [ZAAKCEPTOWANE]podanie by dezo

    Na tak + Miły + Pomocny + Steam
    1 punkt
  19. Bykus

    [ZAAKCEPTOWANE]podanie by dezo

    Jestem na TAK +doświadczenie +wiek +steam +ogarnięty +pomocny
    1 punkt
  20. Natalciaa.

    Pokażcie swoje mordki!

    Nie, dzięki
    1 punkt
  21. skaj

    Pokażcie swoje mordki!

    @Natalciaa. moze przejdziemy sie za reke dluga na dd2? ;))))
    1 punkt
  22. Pyskata.

    Pokażcie swoje mordki!

    dobrze, że u Ciebie dystans jest :*
    1 punkt
  23. wandi

    Pokażcie swoje mordki!

    dwa lajki A N I A
    1 punkt
  24. klqs

    Podstawy 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.
    1 punkt
  25. skaj

    Pokażcie swoje mordki!

    no teraz to mi smutno
    0 punktów
Ten Ranking jest ustawiony na Warszawa/GMT+01:00
×
×
  • Dodaj nową pozycję...