Wstep
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: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:
Jak widać wszystyko jest ustawione domyślnie, można to zmienić w ustawieniach: tools/settings/miscKod php:/* Plugin generated by AMXX-Studio */
#include <amxmodx>
#include <amxmisc>
#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 przed 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 'mówimy' kompilatorowi co będzie robił plugin.
register_plugin(PLUGIN, VERSION, AUTHOR)
// Add your code here... tutaj dodajemy dowolny kod, o tym dalej :)
}
Co oznacza #define?
Przykład:
wartość AUTHOR w cudzysłowiu(naven) będzie zastępować AUTHOR w poniższym kodzie- jako autor pluginu będzie podany navenKod php:#define AUTHOR "naven"
FunkcjeKod php:register_plugin(PLUGIN, VERSION, AUTHOR)
Funkcje są zawsze przypisane do jakiejś komendy lub eventa(DeathMsg itd.)
Oto przykład rejestrowania funkcji:
Co jest czymKod php:register_clcmd("komenda", "funkcja")
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):
Wartości string client_printaKod php: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ć
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ę!
Podam również przykład, że gdy jeden gracz coś napisze, widzą go wszyscy(plugin_init taki sam jak wyżej)Kod php://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 <amxmodx> //to są 2 moduły podstawowe
#include <amxmisc> //jeśli chcesz korzystać z bardziej zaawansowanych musisz dodać inne moduły
public plugin_init() {
register_plugin("test", "1.0", "naven") //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
}
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
Wszystkie wartości string funcji znajdziesz tutaj: AMX Mod X Documentation
Wszystyko o pisaniu pluginów(po angielsku) znajdziesz tutaj: AMX Mod X Documentation
Poradnik napisany przez naven dla wiaderko.com. Zakaz kopiowania na inne fora!













