Ez a szekció lehetővé teszi a felhasználó által írt összes hozzászólás megtekintését. Vedd figyelembe, hogy csak azokba a fórumokba írt hozzászólásokat látod, amelyekhez hozzáférésed van.
Egy olyan védelmi rendszer, melynek segítségével a szerverünkön található bármelyik játékmódot / filterszkriptet elláthatjuk egy jelszóval. Egy tetszõleges weboldalra feltöltjük a jelszó ellenõrzõt, amiben megint csak meg kell adni egy jelszót. Ha a weben található jelszóellenõrzõben található jelszót megváltoztatod, akkor a régi jelszavak egyikével a szkriptek / módok már megbuknak az ellenõrzésen, tehát nem indíthatók el.
//------------------------------------------------------------------------------ // Név: sscanf példaszkript, magyarázatokkal // Készítõ: GameStar // sscanf plugin, eredeti dokumentáció: Y_Less (a példák Y_Less dokumentációjára épülnek!) // Web: gtaforum.hu, y-less.com // Frissítve: 2012. május 20. //------------------------------------------------------------------------------ #include <a_samp> // Az sscanf funkció beágyazása ebbe a szkriptbe #include <sscanf2> // Ha egy példa nem kell, akkor tegyél az alábbi sorokban \"//\"-t elé. (kommenteld) // Ha pedig kell, akkor töröld ki elõle. #define EXAMPLE1 #define EXAMPLE2 #define EXAMPLE3 #define EXAMPLE4 #define EXAMPLE5 #define EXAMPLE6 #define EXAMPLE7 #define EXAMPLE8 //#define EXAMPLE9 // A példák a szkript indulásakor futnak le. Ha elindítod a szkriptet, akkor // ellenõrizheted a leírtakat. public OnFilterScriptInit() { #if defined EXAMPLE1 // 1. PÉLDA: Az alap // Meg kell adni egy bemenetet, egy formátumot, és céltárolókat, amikbe az // értékeket szeretnéd menteni a bemenetbõl a formátum alapján. new EXAMPLE1_var0[32], EXAMPLE1_var1;
// Az alábbi kód lefutásával az EXAMPLE1_var0 értéke \"üdv\", az EXAMPLE1_var1 értéke // pedig 10 lesz. A formátum egy 32 cellás karakterlánc és egy egész szám. sscanf(\"üdv 10\", \"s[32]i\", EXAMPLE1_var0, EXAMPLE1_var1); printf(\"EXAMPLE1_var0: %s\\nEXAMPLE1_var1: %i\", EXAMPLE1_var0, EXAMPLE1_var1); #endif
#if defined EXAMPLE2 // 2. PÉLDA: Tömbök // A függvény lehetõvé teszi, hogy egy tömbbe mentsük bele az értékeket. new EXAMPLE2_array0[5]; // Az alábbi kód lefutásával az EXAMPLE2_array0 minden indexbe sorra felveszi // az értékeket sscanf(\"1 2 3 4 5\", \"a<i>[5]\", EXAMPLE2_array0); for(new i = 0; i < sizeof(EXAMPLE2_array0); i++) printf(\"EXAMPLE2_array0[%i]: %i\", i, EXAMPLE2_array0); #endif
#if defined EXAMPLE3 // 3. PÉLDA: Enum enum EXAMPLE3_enum0 { e_integer, Float:e_float, e_string[32], e_character } new EXAMPLE3_var0[EXAMPLE3_enum0]; // Az alábbi kód lefutásával az EXAMPLE3_var0 minden indexe felvesz egy értéket // a megadott formátum alapján sscanf(\"1 12.0 Bob c\", \"e<ifs[32]c>\", EXAMPLE3_var0); printf(\"EXAMPLE3_var0[e_integer]: %i\", EXAMPLE3_var0[e_integer]); printf(\"EXAMPLE3_var0[e_float]: %f\", EXAMPLE3_var0[e_float]); printf(\"EXAMPLE3_var0[e_string]: %s\", EXAMPLE3_var0[e_string]); printf(\"EXAMPLE3_var0[e_character]: %c\", EXAMPLE3_var0[e_character]); #endif
#if defined EXAMPLE4 // 4. PÉLDA: Az úgynevezett \"csendes szekció\" // Amelyik formátumszakaszt {} közé rakjuk, azt a függvény késõbb érzékeli, // de nem veszi figyelembe. new EXAMPLE4_var0, EXAMPLE4_var1; // Az alábbi kód lefutásával az EXAMPLE3_var0 értéke -100 lesz, mert az elsõ egész // számot (42) nem vesszük figyelembe. sscanf(\"42 -100\", \"{i}i\", EXAMPLE4_var0); printf(\"EXAMPLE4_var0: %i\", EXAMPLE4_var0); // Az alábbi kód lefutásával az EXAMPLE3_var1 értéke 42 lesz, mert a második egész // számot (-100) nem vesszük figyelembe. sscanf(\"42 -100\", \"i{i}\", EXAMPLE4_var1); printf(\"EXAMPLE4_var1: %i\", EXAMPLE4_var1); #endif
#if defined EXAMPLE5 // 5. PÉLDA: Szöveg keresése // \'\' közé rakva kereshetõ egy szöveg. Ilyenkor a függvény a szöveg pozíciójára // ugrik, ezért a korábbi és az új pozíció közötti dolgokat nem fogja figyelembe // venni. Az alábbi példa is szemlélteti ezt. // Formátumként megadunk egy egész számot (ami az elsõ egész szám - 10), amit a // függvény be is olvas. Majd megkerestetjük vele a szövegben a \"szöveg\" részt, // és végül lekérjük az utolsó egész számot (ami a 12). A 11 kimarad, mert a keresés // elõtt még nem lett figyelembe véve, utána pedig a függvény nem is törõdött vele, // mert a keresés miatt átugrott azon a részen. new EXAMPLE5_var0, EXAMPLE5_var1; sscanf(\"10 11 szöveg 12\", \"i\'szöveg\'i\", EXAMPLE5_var0, EXAMPLE5_var1); printf(\"EXAMPLE5_var0: %i\\nEXAMPLE5_var1: %i\", EXAMPLE5_var0, EXAMPLE5_var1); #endif
#if defined EXAMPLE6 // 6. PÉLDA: Az elválasztók // Ha a bemeneti szövegekben az értékeket valami elválasztja (mondjuk vesszõ), akkor // megadhatjuk a függvénynek, hogy azok mentén válassza szét az értékeket. // A formátuma p<elválasztó>, tehát vesszõnél p<,> new EXAMPLE6_var0, EXAMPLE6_var1[12], EXAMPLE6_var2; sscanf(\"1,nem,3\", \"p<,>is[12]i\", EXAMPLE6_var0, EXAMPLE6_var1, EXAMPLE6_var2); printf(\"EXAMPLE6_var0: %i\\nEXAMPLE6_var1: %s\\nEXAMPLE6_var2: %i\", EXAMPLE6_var0, EXAMPLE6_var1, EXAMPLE6_var2); #endif
#if defined EXAMPLE7 // 7. PÉLDA: Választható formátumok // Ugyanaz, mint a sima formátum, viszont ha a függvény nem talál neki értéket, // abban az esetben az általunk megadott \"alapértelmezett értéket\" adja neki. // Csak nagybetûvel kell írni, és meg kell adni az alapértelmezett értéket. new EXAMPLE7_var0, EXAMPLE7_var1[16], EXAMPLE7_var2[5]; // Itt nem adunk meg bemeneti szöveget, a választható egész szám alapértelmezett értékét // pedig 12-re állítjuk. A függvény nem fog találni értéket, így automatikusan 12-t fog // adni. sscanf(\"\", \"I(12)\", EXAMPLE7_var0); printf(\"EXAMPLE7_var0: %i\", EXAMPLE7_var0);
// Tömbbel sscanf(\"\", \"A<i>(1, 2, 3, 4, 5)[5]\", EXAMPLE7_var2); for(new i = 0; i < sizeof(EXAMPLE7_var2); i++) printf(\"EXAMPLE7_var2[%i]: %i\", i, EXAMPLE7_var2); #endif
#if defined EXAMPLE8 // 8. PÉLDA: Egyéni formátumok // Lehetõségünk van saját formátumokat csinálni. Csak egy SSCANF: elõtag kell. // Ennek is van választható, és sima fajtája is. A választható esetében, ha nem tudja // meghívni a saját formátum eljárását, akkor az alapértelmezett értéket adja. new EXAMPLE8_var0[16], EXAMPLE8_var1, EXAMPLE8_var2[16], EXAMPLE8_var3; sscanf(\"GameStar PLAYER_STATE_PASSENGER\", \"s[16]k<playerstate>\", EXAMPLE8_var0, EXAMPLE8_var1); // Az EXAMPLE7_var1 értéke 3 kell, hogy legyen. printf(\"EXAMPLE8_var0: %s\\nEXAMPLE8_var1: %i\", EXAMPLE8_var0, EXAMPLE8_var1);
// Ha a bemenetben nincs megadva az állapot szövegesen, akkor az alapértelmezett // értéket (PLAYER_STATE_PASSENGER) kapjuk sscanf(\"GameStar\", \"s[16]K<playerstate>(PLAYER_STATE_PASSENGER)\", EXAMPLE8_var2, EXAMPLE8_var3); // Az EXAMPLE8_var3 értéke 3 kell, hogy legyen. printf(\"EXAMPLE8_var2: %s\\nEXAMPLE8_var3: %i\", EXAMPLE8_var0, EXAMPLE8_var1); #endif
#if defined EXAMPLE9 // 9. PÉLDA: Összetettebb használat // A függvénnyel akár egész komplex formátumokat is csinálhatunk, íme egy példa: enum EXAMPLE9_enum0 { Float:e_float, // f e_string[32], // s[32] e_character, // c e_hex // h } new EXAMPLE9_var0[EXAMPLE9_enum0], EXAMPLE9_var1, Float:EXAMPLE9_var2[4]; // unformat-ot is írhatunk, az is elfogadott... unformat( \"üdv 22 nem PLAYER_STATE_DRIVER 20.0 gtaforum.hu g FF00DD\", \"{s[4]}\'nem\'k<playerstate>e<fs[32]ch>A<f>(1.434, 2.233, 3.262 ,4.176)[4]\", // A formátum szöveges magyarázata: // - Az elsõ szöveget (üdv) kihagyjuk a \"csendes szekcióval\". // - A 22-t is kihagyjuk, mert rákeresünk a következõ szövegre (nem). // Azzal sem törõdünk. // - A következõ szövegrõl (PLAYER_STATE_DRIVER) lekérdezzük a saját // formátumunkkal, hogy milyen érték tartozik hozzá. // - Ezután az enumba tartozó értékeket olvassuk ki: // - A lebegõpontos értéket (20.0) // - A karakterláncot (gtaforum.hu) // - A karaktert (g) // - A tizenhatos számrendszer beli számot (FF00DD) // - Választható tömbformátummal az alapértelmezett lebhegõpontos értékeket // fogjuk kapni, mivel nincs megadva a 4 lebegõpontos érték EXAMPLE9_var1, // k<playerstate> EXAMPLE9_var0, // e<fs[32]ch> EXAMPLE9_var2 // A<f>(1.434, 2.233, 3.262 ,4.176)[4] ); printf(\"EXAMPLE9_var1: %i\", EXAMPLE9_var1); printf(\"EXAMPLE9_var0[e_float]: %.1f\", EXAMPLE9_var0[e_float]); printf(\"EXAMPLE9_var0[e_string]: %s\", EXAMPLE9_var0[e_string]); printf(\"EXAMPLE9_var0[e_character]: %c\", EXAMPLE9_var0[e_character]); printf(\"EXAMPLE9_var0[e_hex]: %x\", EXAMPLE9_var0[e_hex]); for(new i = 0; i < sizeof(EXAMPLE9_var2); i++) printf(\"EXAMPLE9_var2[%i]: %.3f\", i, EXAMPLE9_var2); #endif
return 1; } // (A 8. és 9. példához) egy egyéni formátum. Megadja szöveges adat alapján számmal, hogy a játékosnak // éppen mi az állapota. SSCANF:playerstate(string[]) { // Ha a szöveg már szám formátumú if (\'0\' <= string[0] <= \'9\') { // Lekérjük az értékét new ret = strval(string); // Ha a lekért érték 0, vagy kisebb vagy egyenlõ mint 9, akkor visszaadjuk if (0 <= ret <= 9) { return ret; } } else if (!strcmp(string, \"PLAYER_STATE_NONE\")) return 0; else if (!strcmp(string, \"PLAYER_STATE_ONFOOT\")) return 1; else if (!strcmp(string, \"PLAYER_STATE_DRIVER\")) return 2; else if (!strcmp(string, \"PLAYER_STATE_PASSENGER\")) return 3; else if (!strcmp(string, \"PLAYER_STATE_WASTED\")) return 7; else if (!strcmp(string, \"PLAYER_STATE_SPAWNED\")) return 8; else if (!strcmp(string, \"PLAYER_STATE_SPECTATING\")) return 9;
// Ha nem találtunk a megadott szöveghez azonosítót, akkor -1-el tér vissza return -1; }
[pawn]#include <a_samp> #include <sscanf2> public OnFilterScriptInit() { // Az IP kitiltása úgy, hogy az utolsó két szám legyen * // Ha *-ot teszel egy szám helyett, akkor az olyan, mintha // akármilyen szám lenne ott, így hiába változik meg Ban2(\"127.0.0.1\",NumBits(0,0,1,1)); return 1; } stock NumBits(num1, num2, num3, num4) return num1|(num2<<1)|(num3<<2)|(num4<<3); stock Ban2(ip[], n_bits) { new n_arr[4],tmp[32]; unformat(ip, \"p<.>a<i>[4]\", n_arr); for(new i = 0; i < 4; i++) { if(n_bits >> i & 1) format(tmp, 32, \"%s.*\",tmp); else format(tmp, 32, \"%s.%i\",tmp,n_arr); } format(tmp,32,\"banip %s\",tmp[1]); SendRconCommand(tmp); return 1; }[/pawn]
Ezzel a függvénnyel lehetõségünk van egy adott dátum alapján lekérni, hogy milyen napra esik. A függvény 2000. január 1-tõl 2032 december 31-ig mûködik!
A rögzítést a /rec [AZONOSÍTÓ] paranccsal tudjuk elindítani. Ekkor a jármûvel meg kell tennünk azt az utat, amelyet rögzíteni szeretnénk. A rögzítést a /stop paranccsal tudjuk megállítani. A lejátszást a /play [AZONOSÍTÓ](jármû azonosítója) paranccsal tudjuk elindítani. Ha nem adunk meg jármû azonosítót, akkor automatikusan a felvételkor használt jármûvel történik meg a lejátszás. A lejátszás szüneteltethetõ a /pause, megállítható szintén a /stop paranccsal.