Do czego służą asseracje można znaleźć na wielu stronach np. http://pl.wikibooks.org/wiki/C/assert http://pornel.net/assert http://www.cplusplus.com/reference/cassert/assert/ W zasadzie w pawnie służą one do tego samego co wszędzie czyli do debugowania. Mamy nawet dwa dostępne typy asseracji Pierwszy zCzytaj dalej
Kategoria: Scripting AMXX
Optymalizacja działania pluginów poprzez parametry kompilacji
O parametrze -d0 kompilatora pisałem już raz przy omawianiu tematu dekompilacji ( http://darkgl.pl/index.php/2012/08/27/zabezpieczanie-pluginu-przed-dekompilacja/ ) Jednak tego parametru nie należy traktować jako stworzonego wyłącznie do tego aby zapobiegać dekompilacji jest to raczej przypadkowy efekt niż zamierzonyCzytaj dalej
Zwracanie hard coded strings i trochę o samym return
Z pewnością kilka osób zna pewnego rodzaju sztuczkę która powoduje crash kompilatora. Wygląda to mnie więcej tak ( działa na localu jak i na webkompilatorze amxx.pl 😉 ) Nie ma żadnego uzasadnienia w zasadach iCzytaj dalej
Wskaźniki na zmienne w pawn
Pawn sam w sobie nie zawiera czegoś takiego jak wskaźniki ( zamiast tego mamy przekazywanie przez referencje ) jednak funkcje dostępne w amxx pozwalają na pobieranie adresu zmiennej , ustawianie wartości pod danym adresem itp.Czytaj dalej
Foreach i Forrange implementacja pętli ułatwiających życie
Często podczas prac nad pluginem w kodzie muszę „przeliterować” po elementach tablicy czy wszystkich graczach. Pisanie rozbudowanej pętli for jest meczące i nużące więc pomyślałem że foreach znane z php było by znacznym ułatwieniem. http://php.net/manual/en/control-structures.foreach.phpCzytaj dalej
Zabezpieczanie pluginu na ip ? Nic prostszego do złamania
Ostatnio na forum pojawił się taki o to wątek http://amxx.pl/topic/101210-licenja/ podany tam kod ma zabezpieczać plugin przed uruchomieniem go na serwerze z innymi ip niż podaliśmy niestety takie zabezpieczenie jest dość prymitywne i da sięCzytaj dalej
Zarządzanie ciągami znaków w pamięci pluginu
Często w pluginach widać taką konstrukcję jednak jest to bardzo złe podejście ale można je łatwo naprawić 😉 Najpierw co się dzieje przy użyciu define preprocesor podczas przeszukiwania naszego kodu każde wystąpienie SOME_TEXT podmieni naCzytaj dalej
Mechanizm pseudo-wyjątków w pawn
Wyjątki są zaimplementowane w wielu językach programowania np. http://pl.wikibooks.org/wiki/C++/Obs%C5%82uga_wyj%C4%85tk%C3%B3w http://msdn.microsoft.com/en-us/library/6dekhbbc(v=vs.80).aspx http://php.net/manual/en/language.exceptions.php http://pl.wikipedia.org/wiki/Wyj%C4%85tek Wyjątek (ang. exception) jest mechanizmem przepływu sterowania używanym w mikroprocesorach oraz współczesnych językach programowania do obsługi zdarzeń wyjątkowych, a w szczególności błędów, którychCzytaj dalej
„Magia” include i wywoływania funkcji
Początkowy kod wszyscy się zgodzą że jest on poprawy i oczywiście działa 🙂 a co jeśli usuniemy <> z include plugin ciągle działa i ciągle kompiluje się bez problemu ale po co komu () możemyCzytaj dalej
Przekonwertowane SDK
Paczka przekonwertowanych sdk wcześniej pliki na końcu linii miały znak \r ( Mac ) lub \n ( Linux ) a w windows poprawnie jest \r\n http://pl.wikipedia.org/wiki/End-of-line W paczce znajdziemy amxmodx-source-1.8.1 Arkshine-CSSDK-e3a8b1c hlsdk metamod-p-1.19p32 Przekonwertowane SDKCzytaj dalej
Zabezpieczanie pluginu przed dekompilacją
Zabezpieczanie pluginu przed dekompilacją jest bardzo prostę dodajemy tylko flagę -d0 do opcji kompilacji AMXX-Studio z górnego menu wybieramy Tools -> Settings Pawn Studio z górnego menu wybieramy Extras -> Preferences Plugin skompilowany z tąCzytaj dalej
Bug komend w menu
Bug pozwala nam na wyświetlenie w menu jakiego klawisza używa gracz dla danej komendy Przykład i kod łatwo zauważyć że używałem w menu +use a otrzymałem [e] czyli klawisz pod którym jest zbindowany klawisz uCzytaj dalej