Jump to content
Sign in to follow this  
Malibu

Podstawy pisania pluginów

4 posts in this topic

Recommended Posts

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

Share this post


Link to post
Share on other sites
Guest Ogen Dogen

Nie skopiowales tego przypadkiem z innego zrodla ?

Share this post


Link to post
Share on other sites

Ogen jest to kiedrowanie sie na moich doswiaczeniach jak cos skopiuje to dodam link do danego tematu

Share this post


Link to post
Share on other sites

Wiadomość wygenerowana automatycznie

Ten temat został zamknięty przez Moderatora.

Powód: Temat Zamknięty

Pozdrawia Administracja CsKatowice.com

Share this post


Link to post
Share on other sites
Guest
This topic is now closed to further replies.
Sign in to follow this  

  • Recently Browsing   0 members

    No registered users viewing this page.

O Nas

CSKatowice.com powstało dnia 28 lipca 2012 roku. Jesteśmy prężnie rozwijającą się siecią serwerów Counter-Strike. Nasza młoda i uzdolniona kadra Administratorów pozwala nam się szybko rozwijać!

Społeczność

Reklama

cskatowice
×