klqs Napisano 5 Sierpnia 2017 #465071 Udostępnij Napisano 5 Sierpnia 2017 Tak po krótce. Co to wgl jest? Określa to jaki public ma się wykonać po jakim evencie. Po naszemu: co ma sie wykonać po jakiejś sytuacji na serwerze :D. Będę dodawał opisy, przykłady użycia, żeby Wam bylo łatwiej zrozumieć. Odrazu mówie, że niektóre kody w tym poradniku są zaczerpnięte, lecz opisy pisane własnoręcznie. Cały spis eventów (po angielsku) -> Klik <- Start mapy: plugin_init() { //kod } //kod wykona się zaraz po załadowaniu mapy. W tym najczęściej rejestruje się sam plugin, komendy, cvary etc. które musza się wczytać oczywiscie na samym początku. Występuje praktycznie w każdym pluginie Koniec mapy: plugin_end ( ) { //kod } //kod wykona się tuż przed zmianą mapy/wyłączeniem serwera. Już wykorzystywany w bardziej zaawansowanych pluginach. Można w nim np. zamknąć uchwyt do pliku nvault. Wejscie na serwer: public client_putinserver(id){ //kod } Wykona się gdy bedziesz miał juz do wyboru team. (Po załadowaniu wszystkeigo). To tutaj najlepiej pobierac uprawnienia gracza. Połączenia się z serwerem: public client_connect(id) { //kod } Gdy gracz nacisnie connect. Można tu pobierać takie informacje jak nick gracza. W przeciwienstwie do poprzednikanie radze pobierac uprawnień gracza (admin, vip itp.) Rozłączenie się z serwerem: public client_disconnect(id) { //kod } Gdy gracz wpisze disconnect w konsoli lub wcisnie wyjdz z serwera/wyjdz z gry. Można tu resetować np. zapisane dane na danym id. Np gdy gracz wejdzie na serwer sprawdzamy czy jest on adminem i dajemy do zmiennej o nazwie powiedzmy admini[id] = true. Tutaj możemy to zmienić na false dla porządku w kodzie. Gdyby nie było to sprawdzane przy wejsciu tylko np. przy jakiejś sytuacji albo po kilku/nastu sekundach to gracz który wejdzie na to id będzie miał przez ten czas opcje które ten plugin udostępnai dla admina. Mam nadzieje, że wytlumaczylem w maire zrozumiale. Nowa runda: #include <amxmodx> #include <amxmisc> public plugin_init() { register_event("HLTV", "Nowa_Runda", "a", "1=0", "2=0") } public Nowa_Runda() { //kod } Wykona się odrazu po rozpoczęciu rundy. Tuż przed spawnem albo na samym spawnie. Można wykorzystać np do liczenia upłyniętych rund. Początek rundy: #include <amxmodx> #include <amxmisc> public plugin_init() { register_logevent("Poczatek_Rundy", 2, "1=Round_Start") } public Poczatek_Rundy() { //kod } Wykona się po zakończeniu freeza. Z doświadczenia wiem, że dawanie rzeczy takich jak hp, bronie etc. jest najlepiej pisać w "Nowa runda" po ustawieniu taska na jakiś krótki czas. (czyli opóźnienia), chociaż w tym też da radę. Koniec rundy: #include <amxmodx> #include <amxmisc> public plugin_init() { register_logevent("Koniec_Rundy", 2, "1=Round_End") } public Koniec_Rundy() { //kod } Wykonuje się wtedy kiedy wyświetla się, która drużyna wygrała (lub remis). Można tu np. wyświetlać najlepszego gracza rundy (oczywiscie po wcześniejszym kodzie który zliczał jego fragi i hsy). Zadanie obrażeń: #include <amxmodx> #include <amxmisc> public plugin_init() { register_event("Damage", "Damage", "b", "2!=0") } public Damage(id) { new vid = read_data(0) // vid == id new damage = read_data(2) // obrazenia new Origins[3] // Wspolrzedne gracza, granatu, obiektu wywolujacego obrazenia Origins[0] = read_data(4) //wspolrzedna X Origins[1] = read_data(5) //wspolrzedna Y Origins[2] = read_data(6) //wspolrzedna Z new kid = get_user_attacker(id) // Gracz atakujacy //kod } Wykonuje się gdy ktoś dostanie obrażenia. kid - osoba zadajaca obrażenia, vid/id - osoba otrzymująca. Można tu dowolnie edytować obrazenia (zwiekszac, zmniejszac, szansa % na 100% kill etc.). Śmierć: #include <amxmodx> #include <amxmisc> public plugin_init() { register_event("DeathMsg", "DeathMsg", "a") } public DeathMsg() { new kid = read_data(1) // zabojca new vid = read_data(2) // ofiara new hs = read_data(3) // HeadShot (1 == true) new weapon[64] read_data(4,weapon,63) //krotka nazwa broni (bez weapon_ / CSW_ ) //kod } Wykonuje się gdy w prawym górnym rogu wyświetli nam się informacja o zabójstwie. Można tu np. dodać bonusy graczom za HS, kase za killa, odbierac za deda etc. Gdy gracz się sam zabije lub dostanie slaya to kid == vid Gdy gracz spadnie z wysokosci/spłonie kid == 0 Nazwy broni do "weapons": -> Klik <- Zmiana broni/otrzymanie broni: #include <amxmodx> #include <amxmisc> public plugin_init() { register_event("CurWeapon","CurWeapon","be", "1=1") } public CurWeapon(id) { new wid = read_data(2) // Id broni new ammo = read_data(3) // liczba naboi w magazynku //kod } Wykonuje się gdy otrzymamy lub zmienimy broń, strzelimy lub przeładujemy. Dotyczy tylko trzymanej broni. Możemy tu np. blokować wyjmowanie, usuwac jesli wyjmie, dodawać ammo gdy dojdzie do 0 itp. Ammo dla noża i granatów == -1 ID broni do "wid": -> Klik <- Podniesienie broni: #include <amxmodx> #include <amxmisc> public plugin_init() { register_event("WeapPickup", "WeapPickup", "b") } public WeapPickup(id) { new wid = read_data(1) // id broni //kod } Wykona sie gdy podniesiemy broń, na starcie, przy zakupie. Wykona się za każdym razem, nie ważne czy trzymamy ją w ręce (tym się rózni od zmiany broni - może się wykonać 2 razy na spawnie gdy otrzymamy nóz i pistolet albo więcej gdy razem z tym dostaniemy z vipa np. broń + ammo + granaty :D) Nie liczy podniesienia/kupienia: defa, tarczy, noktowizora i kamizelki. Można tu dodać np ammo lub wywalić/usunąć ID broni do "wid": -> Klik <- Zmiana w pieniądzach: #include <amxmodx> #include <amxmisc> public plugin_init() { register_event("Money", "Money", "be") } public Money(id) { new Money = read_data(1) // aktualna kasa //kod } Gdy coś kupimy, dostaniemy za fraga itp. Można tu sie dowolnie bawić pieniędzmi Eventów jest duużo więcej. Podałem te które najczęściej się wykorzystuje. Nie wszystkie są takie proste, inne są potrzebne do bardziej skomplikowanych sytuacji, a niektórych nie rozumiem. Nie chciałem podawać niezrozumiałych mi a już tym bardziej próbować wytłumaczyć ich działania. Mam nadzieje, że komuś się przyda. W razie jakiś problemów / niejasności można pisać PW, z chęcią odpowiem jeśli tylko będę znał odpowiedź. Dla jasności. Gdy chcemy wychwycić np nową runde i koniec rundy to dopisujemy do tego samego plugin_init a nie tworzymy dwóch. Każda funkcja może być tylko jedna. Po prostu dopisujemy pod sobą. Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
Gość Napisano 3 Maja 2018 #512239 Udostępnij Napisano 3 Maja 2018 Wątek został zamknięty przez moderatora forum.Jeśli się z tym nie zgadzasz skontaktuj się z moderatorem lub administratorem, w celu ponownego otworzenia tematu. Pozdrawiamy, Zespół Multi-Head.pl Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
Rekomendowane odpowiedzi