Tworzymy funkcję o nazwie zawierającej w sobie nazwę AMX. Nazwa ta nie jest wymagana, bo i bez niej funkcja ta będzie działać, lecz jednak lepiej mieć już ją. Przy okazji, nawet zmodyfikowanym DeAMX'em nie da się wyciągnąć ani jednej rzeczy w tym wypadku i zostanie tylko kod:
#include <a_samp> #include <core> #include <float>
No to zaczynajmy, napierw stwórzmy funkcję o nazwie EmitAMX:
stock EmitAMX()
{
new d; // zmienna d
#emit load.pri d //ładowanie zmiennej "d" do pamięci (bazowane na Asemblerze)
#emit stor.pri d //zapisywanie zmiennej "d" do pamięci (bazowane na Asemblerze)
}
Teraz, aby móc już zabezpieczyć swój skrypt (GameMod lub FilterScript) wklejamy tego typu kod do public OnGameModeInit() (lub public OnFilterScriptInit()):
public OnGameModeInit() // public OnFilterScriptInit()
{
EmitAMX();
//reszta kodu
return 1;
}
ewentualnie funkcję tą możemy zastosować również do main'a, jeżeli naszym skryptem jest GameMod:
main()
{
EmitAMX();
print("------\nSkrypt został zabezpieczony przez DeAMX\n-----");
}
Sugerowane jest dodanie tej funkcji do main jak i do public OnGameModeInit w wypadku GameMode'a, czyli na przykład:
#include <a_samp>
stock EmitAMX()
{
new d; // zmienna d
#emit load.pri d //ładowanie zmiennej "d" do pamięci (bazowane na Asemblerze)
#emit stor.pri d //zapisywanie zmiennej "d" do pamięci (bazowane na Asemblerze)
}
main()
{
EmitAMX();
print("------\nSkrypt został zabezpieczony przez DeAMX\n-----");
}
public OnGameModeInit()
{
EmitAMX();
//reszta kodu
return 1;
}
Wtedy zabezpieczenie będzie działać w 100%.
Aby zabezpieczyć skrypt po prostu tworzymy kod taki, jak poniższy:
#include <a_samp>
#if defined FILTERSCRIPT // nie jest to wymagane w skryptach, po prostu ktoś sobie to ubzdurał i teraz każdy nowy "skrypter" w PAWN to stosuje...
// Reszta funkcji
#endif
stock EmitAMX()
{
new d; // zmienna d
#emit load.pri d //ładowanie zmiennej "d" do pamięci (bazowane na Asemblerze)
#emit stor.pri d //zapisywanie zmiennej "d" do pamięci (bazowane na Asemblerze)
}
public OnFilterScriptInit()
{
EmitAMX();
//reszta kodu
return 1;
}
Wtedy będzie on zabezpieczony w 100% i będzie działać.Można również połączyć słynny Anty DeAMX z emitem, co daje kod, którego praktycznie nie da się złamać:
AntyDeAMX()
{
new amx[][] ={"Unarmed (Fist)","Brass K"};
new d; // zmienna d
#emit load.pri d //ładowanie zmiennej "d" do pamięci (bazowane na Asemblerze)
#emit stor.pri d //zapisywanie zmiennej "d" do pamięci (bazowane na Asemblerze)
#pragma unused amx
}
UWAGA! Zabezpieczenie powinno być umieszczone jako pierwsze!To chyba wszystko co miałem do przekazania, życzę miłego zabezpieczania skryptów tym sposobem.
Pozdro.


Pobierz San Andreas Multiplayer w najnowszej wersji stabilnej 0.3e.
Pobierz Multi Theft Auto w najnowszej wersji stabilnej 1.3.











