Skocz do zawartości

    Zamknięty Podstawy pisania pluginów


    Malibu
     Udostępnij

    Rekomendowane odpowiedzi

    • Cała zawartość 4
    • Temat został założony
    • Ostatnia odpowiedź

    Top użytkownicy w tym temacie

    Wstep chyba wam sie to przyda do nauki :D

    Poradnik ten pisałem dawno temu, gdy sam umiałem tyle co zawarte w tym poradniku. Jest to poradnik dla ludzi, którzy nie znają programowania w żadnym języku. Jeśli znasz inny język, ten poradnik na mało Ci się przyda

    Na początku należy ściągnąć AMXX Pro Studio, jest on w każdej paczce AMXX, można go też ściągnąć tutaj AMXX Studio

    Pluginy AMXX są pisane w języku o nazwie pawn

    W poradniku tym, będę opisywał rzeczy bezpośrednio w kodzie używając komentarzy. Komentarze w kodzie są bardzo przydatne szczególnie jeśli nie tworzysz dla siebie.

    Komentarzy używa się w następujący sposób

    Kod php:

    Kod:

    zwykły kod

    //komentarz jedno-liniowy

    zwykły kod

    /* a oto komentarz wielo-liniony

    pierwsza linia komentarza

    druga linia komentarza

    trzecia

    czwarta

    */

    Otwierając AMXX Studio otrzymujemy taki kod:

    Kod php:

    Kod:

    /* Plugin generated by AMXX-Studio */

    #include

    #include

    #define PLUGIN "new plugin" //definiujemy tutaj nazwę...

    #define VERSION "1.0" //...wersję...

    #define AUTHOR "author" //... oraz autora pluginu, będą one się wyświetlać w konsoli po wpisaniu amx_plugins

    //warto też wspomnieć, iż tekst który ma pzred sobą "//" jest komentarzem- jest ignorowany przez kompilator, można to również zastąpić 2 innymi znakami: "/*"- początek komentowanego tekstu, "*/"- koniec komentarza

    public plugin_init() { //jedna z ważniejszych części pluginu, tutaj rejestrujemy (mowimy) kompilatorowi co będzie robił plugin.

    register_plugin(PLUGIN, VERSION, AUTHOR)

    // Add your code here... tutaj dodajemy dowolny kod, o tym dalej :)

    Jak widać wszystyko jest ustawione domyślnie, można to zmienić w ustawieniach: tools/settings/misc

    Co oznacza #define?

    Przykład:

    Kod php:

    Kod:

    #define AUTHOR "Inside"

    wartość AUTHOR w cudzysłowiu(Inside) będzie zastępować AUTHOR w poniższym kodzie- jako autor pluginu będzie podany Inside

    Kod php:

    Kod:

    register_plugin(PLUGIN, VERSION, AUTHOR)

    Funkcje

    Funkcje są zawsze przypisane do jakiejś komendy lub eventa(DeathMsg itd.)

    Oto przykład rejestrowania funkcji:

    Kod php:

    Kod:

    register_clcmd("komenda", "funkcja")

    Co jest czym

    register_clcmd- client command, czyli komenda wykonywana przez klienta(gracza) np say /admin czy znany z serwerów pokemod +pokeskill

    register_concmd- komenda w konsoli, np amx_kick, amx_ban itd.

    Jest tego znacznie więcej, dochodzą do tego także eventy, być może opiszę je w innym poradniku.

    Kiedy mam dawać cudzysłów?

    Cudzysłowów używa się, gdy coś nie ma wartości string(string to wartość zmienna ale ma ograniczone wartości), lub id gracza

    Przykładem jest client_print(pokazuje wiadomość graczowi):

    Kod php:

    Kod:

    client_print(id, print_chat, "wiadomosc w cudzyslowiu") //id oraz wartość string print_chat nie sa w cudzyslowiu, natomiast wiadomosc- nie jest string i musi go mieć

    Wartości string client_printa

    print_chat - wiadomość na czacie,

    print_console - wiadomość w konsoli,

    print_notify - wiadomość konsoli w dev,

    print_center - napis na środku ekranu.

    Czym jest id?

    id mówi właściwie na czym ma wykonać komendę(na jakim graczu, 0= na wszystkich)

    Przykład

    Powiedzmy, że chcemy, aby graczowi po wpisaniu na czacie siema wyświetlała się na czacie odpowiedź- witamy cię!

    Kod php:

    Kod:

    //nie potrzebujemy tutaj autora, wersji oraz co to będzie za plugin, dlatego to ignorujemy

    //jednak potrzebne nam są moduły z których będziemy korzystać:

    #include //to są 2 moduły podstawowe

    #include //jeśli chcesz korzystać z bardziej zaawansowanych musisz dodać inne moduły

    public plugin_init() {

    register_plugin("test", "1.0", "Inside") //jako że zignorowaliśmy defines, możemy zarejestrować plugin teraz

    register_clcmd("say siema", "funkcja_siema") //rejestrujemy client command dla gracza dla funkcji funkcja_siema

    } //nie zapomnij zamknąć plugin_init klamrą(to bardzo ważne, ponieważ kompilator pomyśli, że jeszcze nie skończyłeś tego)

    teraz naciskamy na magiczny przycisk public function u górze kompilatora(można pisac, ale tak szybciej;p), pojawia nam się to:

    public Function() //tutaj musi być nazwa naszej funkcji oraz id gracza(w nawiasie)- id jest pobierane z wykonaniem clcmd say siema

    //tutaj będzie to, co chcemy zrobić graczowi

    będzie to wyglądać następująco:

    public funkcja_siema(id) //mówimy kompilatorowi, że teraz ma zająć się funkcją funkcja_siema, oraz pobieramy id

    client_print(id, print_chat, "Witamy cie!") //musimy podac id! to samo id, które wcześniej pobralismy, print_chat opisane wyżej, trzecim argumentem jest wiadomość wyświetlana graczowi

    Podam również przykład, że gdy jeden gracz coś napisze, widzą go wszyscy(plugin_init taki sam jak wyżej)

    Kod:

    Kod php:

    public funkcja_siema() //nie musimy pobierać id, bo będzie to dla wszystkich graczy

    client_print(0, print_chat, "Witamy cie!")// w tym przypadku id to liczba 0- wiadomość ta wyświetla się wszystkim graczom

    Podsumowanie

    jak pewnie zaważyłeś, użyłem funkcji client_print, jest wiele takich funkcji i to właśnie na tym opiera się pisanie pluginów AMXX

    Odnośnik do komentarza
    Udostępnij na innych stronach

    • 3 miesiące później...
    Gość
    Ten temat został zamknięty. Brak możliwości dodania odpowiedzi.
     Udostępnij

    ×
    ×
    • Dodaj nową pozycję...
    Przeglądasz forum jako gość.
    Nie posiadasz dostępu do niektórych treści i funkcji!