menü

Üzenetek megjelenítése

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.

Üzenetek megjelenítése menü

Témák - Gamestar

#1
Pluginok és Programok / Fixchars IV
2013. augusztus 03. - 19:56:13
[REL] Fixchars IV
 
Bevezetõ
Íme a híres Fixchars projekt legújabb változata! Használatával egyszerûen lehet javítani az egyébként nem mûködõ (többek között) ékezetes karaktereket a GTX-ben (pl. TextDraw, stb.).
 

\"width=500
http://kepfeltoltes.hu/130803/fixchars_www.kepfeltoltes.hu_.jpg\" rel=\"external nofollow\">http://kepfeltoltes.hu/130803/fixchars_www.kepfeltoltes.hu_.jpg[/img]
 
Kompatibilitás
Elvileg minden SA-MP szerver verzióval összhangban van, és frissíteni sem kell új szerververzió megjelenése esetén.
Zárt forráskód
A csomagot annak tudatában kell használnod, hogy a forráskódja zárt. Ezért nem kell leszólni, senki se mondta, hogy kötelezõ használni.
 
Ajánlott a forráskód kihelyezése is![/quote]
Ajánlott, de nem kötelezõ - mielõtt valaki belekötne.
Letöltés
 


A csomag tartalma
 
  • plugins/fixchars.dll
  • plugins/fixchars.so


Telepítés
 
  • Bontsd ki a csomagot a szervered fõmappájába
  • Add hozzá a server.cfg plugins bejegyzéséhez a fixchars.dll-t Windows, a fixchars.so-t pedig Linux esetén
  • Mûködik, nincs további teendõd! :)
#2
SA-MP / Open.mp: Szerverfejlesztés / FIXCHARS 3
2013. július 30. - 20:02:41

>>
http://sampforum.hu/index.php?topic=45380.0\" rel=\"external nofollow\">ÚJ VERZIÓ <<
 
 
FIXCHARS 3
 
Mi ez?
Ezt a projektet még 2010 végén kezdem el. Számos verzió készült el az idõ folyamán, amelyek egy részét én készítettem. Lényege annyi, hogy a speciális (többek között az ékezetes) karakterek használatát teszi lehetõvé a GTX (GTA Text)-ben. Az ezt megelõzõ verziók még csak a magyar nyelvben is használt ékezetes karakterekre terjedtek ki, azonban az új verzió kezeli a németben használt karaktereket is.
 

\"width=500
http://kepfeltoltes.hu/120915/sa-mp-072_www.kepfeltoltes.hu_.png\" rel=\"external nofollow\">http://kepfeltoltes.hu/120915/sa-mp-072_www.kepfeltoltes.hu_.png[/img]
 
ZCMD-vel mûködik?
Nem. Ez csak a GTX-ben segít a karakterek javításában. Ugyanakkor a ZCMD parancsfeldolgozóhoz létezik speciális karaktereket hozzáadó projekt, ami http://gtaforum.hu/index.php?topic=14679.0\" rel=\"external nofollow\">itt érhetõ el.
Hogyan használd?
 
#include <fixchars>

 
Letöltés
http://www.solidfiles.com/d/307eb3ba01/\" rel=\"external nofollow\">http://www.solidfiles.com/d/307eb3ba01/
#3
gObjects
 
Bevezetõ
A jelenleg is készülõben lévõ jármûkönyvtáramtól megihletve eszembe jutott, hogy az objektumok esetében is elhagytak a fejlesztõk pár hasznos funkciót, így vettem a fáradtságot, és összeállítottam ezt a csomagot.
Fontos, hogy ez nem egy önálló objektum kezelõ, vagy streamer, hanem az eredeti könyvtár kiegészítése!
Kompatibilitás
Ez nem egy szokványos kiegészítõ, hanem a SA-MP szervert manipulálja az ehhez szükséges memóriacímek segítségével. Mivel ezek minden verzióban változnak, így ez azt jelenti, hogy egy új SA-MP verzió kiadása után le kell töltened a frissítést, ami már támogatja azt is. A támogatott verziószámok mindig fel vannak tüntetve a csomagban, mely egyaránt tartalmazza a Windows és a Linux változatot is.
Funkciók
Globális objektumok
 
  • GetObjectModel
  • SetObjectModel
  • GetObjectDrawDistance
  • SetObjectDrawDistance
  • GetObjectMovingSpeed
  • SetObjectMovingSpeed
  • GetAttachedObjectVehicleID
  • IsObjectAttachedToVehicle
  • IsObjectAttachedToAnyVehicle
  • DetachObjectFromVehicle
  • GetAttachedObjectObjectID
  • IsObjectAttachedToObject
  • IsObjectAttachedToAnyObject
  • DetachObjectFromObject
  • MoveObjectEx


Játékos objektumok
 
  • GetPlayerObjectModel
  • SetPlayerObjectModel
  • GetPlayerObjectDrawDistance
  • SetPlayerObjectDrawDistance
  • GetPlayerObjectMovingSpeed
  • SetPlayerObjectMovingSpeed
  • GetAttachedPObjectVehicleID
  • IsPObjectAttachedToVehicle
  • IsPObjectAttachedToAnyVehicle
  • DetachPObjectFromVehicle
  • MovePlayerObjectEx


Zárt forráskód
A csomagot annak tudatában kell használnod, hogy a forráskódja zárt. Ezért nem kell leszólni, senki se mondta, hogy kötelezõ használni.
 
Ajánlott a forráskód kihelyezése is![/quote]
Ajánlott, de nem kötelezõ - mielõtt valaki belekötne.
Letöltés
 


A csomag tartalma
 
  • plugins/gObjects.dll
  • plugins/gObjects.so
  • pawno/include/gObjects.inc


Telepítés
 
  • Bontsd ki a csomagot a szervered fõmappájába
  • Add hozzá a server.cfg plugins bejegyzéséhez a gObject.dll-t Windows, a gObject.so-t pedig Linux esetén
  • Szúrd be az egyik szkriptbe: #include <gObjects>


Tesztüzem, fejlesztés alatt (WIP - Working in progress)
A projekt még csak tesztelési szakaszban van, mialatt folyamatosan bõvül és változik, használata egyelõre nem javasolt élesben. Amint elkészül az elsõ stabil verzió, kikerül a Linux verzió is! Addig is, akit érdekel, írjon nyugodtan.
#4
ZCMD speciális karakterekkel
 
Tegnap írtam egy http://gtaforum.hu/index.php?topic=15222.0\" rel=\"external nofollow\">plugint, amelynek segítségével módosítottam a http://gtaforum.hu/index.php?topic=14679.0\" rel=\"external nofollow\">xelor által írt kódot. Így kicsit gyorsabb lett, alább látható az összehasonlítás:
 

\"width=500
http://kepfeltoltes.hu/120929/zcmd_sebessege_www.kepfeltoltes.hu_.png\" rel=\"external nofollow\">http://kepfeltoltes.hu/120929/zcmd_sebessege_www.kepfeltoltes.hu_.png[/img]
 
Teszt szkript:
 
#include <a_samp>
#define OnPlayerCommandText zcmd_OnPlayerCommandText
forward zcmd_OnPlayerCommandText(playerid, cmdtext[]);
#define _ALS_OnPlayerCommandText
#include <zcmd>
public OnFilterScriptInit()
{
ZCMD_Alias(\"teszt\", \"tesztelés\");
zcmd_OnPlayerCommandText(0, \"/tesztelés\");
return 1;
}
CMD:teszt(playerid)
{
printf(\"A teszt parancs sikeresen lefutott!\");
return 1;
}

 
Letöltés alább:
http://www.solidfiles.com/d/6216831caf/\" rel=\"external nofollow\">http://www.solidfiles.com/d/6216831caf/
#5
Játékmód / filterszkript megvédése jelszóval
 
Mi ez?
 
    • 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.
Letöltés
 
Alternatív letöltés (aki az elõzõre kamu riasztást kapna)
 
#6
SA-MP / Open.mp: Szerverfejlesztés / sscanf példa
2012. május 27. - 21:11:21
//------------------------------------------------------------------------------
// 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);
   
    // Karakterlánccal
    sscanf(\"\", \"S(alapértelmezett)[16]\", EXAMPLE7_var1);
    printf(\"EXAMPLE7_var1: %s\", EXAMPLE7_var1);
   
    // 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;
}

 
Formátumtáblázat: http://gtaforum.hu/index.php?topic=13404.0\" rel=\"external nofollow\">http://gtaforum.hu/index.php?topic=13404.0
#7
[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]
#8
Idézetet írta: GameStar date=1315643261\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"21523\" data-ipsquote-contentclass=\"forums_TopicEzzel 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!
 
//==============================================================================
// Név: GetDayAsString
// Frissítve: 2011. SZEPTEMBER 10.
// Készítõ: GameStar
// Megjegyzés:
//==============================================================================
stock GetDayAsString(year, month, day, dest[], len = sizeof(dest))
{
if(2000 <= year <= 2032)
{
    new
        days[][] =
   {
            \"hétfõ\",
            \"kedd\",
            \"szerda\",
            \"csütörtök\",
            \"péntek\",
            \"szombat\",
            \"vasárnap\"
   };
new
    monthdays[] =
   {
       31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31
   };
new
    leapyear = 4,
    dayid = 5; // 2000. január 1. szombat
// Évek
for(new y = 2000; y <= year; y++)
{
    // Szökõévek
    monthdays[1] = 28;
    if(leapyear == 4)
    {
        monthdays[1] = 29;
             leapyear = 0;
   }
   // Hónapok
   for(new months = 1; months <= 12; months++)
   {
               // Napok
      for(new month2 = 1; month2 <= monthdays[months - 1]; month2++)
      {
          if(y == year && months == month && month2 == day)
         {
                     format(dest, len, \"%s\", days[dayid]);
                     return 1;
         }
         dayid++;
             if(dayid > 6) dayid = 0;
             }
   }
            leapyear++;
}
}
return 0;
}

 

//==============================================================================
// Név: GetMonthAsString
// Frissítve: 2011. SZEPTEMBER 10.
// Készítõ: GameStar
// Megjegyzés:
//==============================================================================
stock GetMonthAsString(month, dest[], len = sizeof(dest))
{
if(1 <= month <= 12)
{
    new
        months[][] =
   {
            \"január\",
            \"február\",
            \"március\",
            \"április\",
            \"május\",
            \"június\",
            \"július\",
            \"augusztus\",
            \"szeptember\",
            \"október\",
            \"november\",
            \"december\"
   };
        format(dest, len, \"%s\", months[month - 1]);
}
return 1;
}

 
Példa:
 
public OnFilterScriptInit()
{
new strday[12], strmonth[24], year, month, day;
getdate(year, month, day);
GetDayAsString(year,month,day,strday);
GetMonthAsString(month, strmonth);
printf(\"Ma van %i %s %i (%s)!\",year, strmonth, day, strday);
return 1;
}

 
Eredmény: [10:58:03] Ma van 2011 szeptember 10 (szombat)!
 
#9
Fórum Archívum (Témák/Fórumok) / GTA 2 kamera
2012. május 16. - 12:40:43
Idézetet írta: GameStar date=1306672650\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"21522\" data-ipsquote-contentclass=\"forums_TopicSziasztok!
Unatkoztam a buszon, és akkor jutott eszembe ez az ötlet. Nem egy nagy dolog, de megvalósítottam...
http://noob.hu/2011/05/29/sa-mp-007.png\" alt=\"sa-mp-007.png\" />
http://noob.hu/2011/05/29/sa-mp-006.png\" alt=\"sa-mp-006.png\" />
http://noob.hu/2011/05/29/sa-mp-005.png\" alt=\"sa-mp-005.png\" />
http://noob.hu/2011/05/29/sa-mp-004.png\" alt=\"sa-mp-004.png\" />
 
#10
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.
 

 

Készítette GameStar
(2011-2012)
#11

 
//  -------------------------------
//  Mozgó kamera a karakterválasztóban
//  Készítette GameStar
//  www.gtaforum.hu
//      2012
//  -------------------------------
#include <a_samp>
#if !defined InterpolateCameraPos
#error \"A fordítód nem tartalmazza a 0.3e fájlokat!\"
#endif
#define CAMERA_TIME 8000
forward CameraInterpolate(playerid);
public OnPlayerConnect(playerid)
{
    SetPVarInt(playerid, \"cameraInterpolate\", 0);
SetPVarInt(playerid, \"skinTimer\", -1);
return 1;
}
public OnPlayerRequestClass(playerid, classid)
{
SetPlayerPos(playerid, 2232.7930,-2458.5513,61.6104);
SetPlayerFacingAngle(playerid, 97.1613);
if(GetPVarInt(playerid,\"skinTimer\") == -1)
{
CameraInterpolate(playerid);
SetPVarInt(playerid, \"skinTimer\", SetTimerEx(\"CameraInterpolate\", CAMERA_TIME + 225, 1, \"i\", playerid));
}
return 1;
}
public OnPlayerRequestSpawn(playerid)
{
    KillTimer(GetPVarInt(playerid,\"skinTimer\"));
SetPVarInt(playerid, \"skinTimer\", -1);
SetCameraBehindPlayer(playerid);
return 1;
}
public CameraInterpolate(playerid)
{
    switch(GetPVarInt(playerid,\"cameraInterpolate\"))
{
case 0:
{
   InterpolateCameraPos(playerid, 2228.596435, -2462.059082, 62.675743, 2226.085937, -2457.546875, 62.636756, CAMERA_TIME);
   InterpolateCameraLookAt(playerid, 2232.7930,-2458.5513,61.6104, 2232.7930,-2458.5513,61.6104, CAMERA_TIME);
}
case 1:
{
   InterpolateCameraPos(playerid, 2226.085937, -2457.546875, 62.636756, 2231.406250, -2456.153564, 61.862873, CAMERA_TIME);
   InterpolateCameraLookAt(playerid, 2232.7930,-2458.5513,61.6104, 2232.7930,-2458.5513,61.6104, CAMERA_TIME);
}
case 2:
{
   InterpolateCameraPos(playerid, 2231.406250, -2456.153564, 61.862873, 2228.596435, -2462.059082, 62.675743, CAMERA_TIME);
   InterpolateCameraLookAt(playerid, 2232.7930,-2458.5513,61.6104, 2232.7930,-2458.5513,61.6104, CAMERA_TIME);
}
}
SetPVarInt(playerid, \"cameraInterpolate\", GetPVarInt(playerid,\"cameraInterpolate\") + 1);
if(GetPVarInt(playerid,\"cameraInterpolate\") > 2) SetPVarInt(playerid, \"cameraInterpolate\", 0);
return 1;
}
#12
Ezek a kódok lényegében milliszekundummá váltják át a megadott másodpercek, percek, órák, napok mennyiségét, melyek összeadódnak.
 
#define second(%1) \\
    (%1 * 1000)
#define minute(%1) \\
    (second(%1) * 60)
#define hour(%1) \\
    (minute(%1) * 60)
#define day(%1) \\
    (hour(%1) * 24)
#define week(%1) \\
    (day(%1) * 7)

 
Szemléltetés:
 
  • A MyFunction() függvény 2 óra 30 perc 25 másodperc múlva lesz meghívva.

  • A felirat 30 másodpercig (fél percig) fog megjelenni mindenkinek.


 
public OnFilterScriptInit()
{
SetTimer(\"MyFunction\", hour(2) + minute(30) + second(25), 0);
GameTextForAll(\"Gametext\", second(30), 1);
return 1;
}
#13
SA-MP / Open.mp: Szerverfejlesztés / MoveObjectEx
2012. május 08. - 20:15:38
A MoveObject() függvényben eredetileg sebességként az tudjuk megadni, hogy mekkora legyen a másodpercenként megtett egységek száma. Ebben a függvényben viszont sebesség helyett meg tudjuk azt adni, hogy mennyi ideig tartson a mozgás (ezredmásodpercben mérve).
 
// -----------------------------------------------------------------------------
// Név: MoveObjectEx
// Készítette: GameStar
// Frissítve: 2012. május 8.
// -----------------------------------------------------------------------------
stock MoveObjectEx(objectid, Float:X, Float:Y, Float:Z, Time, Float:RotX = -1000.0, Float:RotY = -1000.0, Float:RotZ = -1000.0)
{
    new Float:x, Float:y, Float:z;
    GetObjectPos(objectid, x, y, z);
    return MoveObject(objectid, X, Y, Z, floatdiv(floatabs(floatsqroot(floatpower(floatsub(X,x),2)+floatpower(floatsub(Y,y),2)+floatpower(floatsub(Z,z),2))),floatdiv(Time,1000)), RotX, RotY, RotZ);
}

 
Példa:
 
MoveObjectEx(object, 10000, 10000, 10000, 3500);

 
Ez az objektum tehát 3,5 (3500 ezredmásodperc) másodperc alatt fog a megadott koordinátákra érni.
#14
SA-MP / Open.mp: Szerverfejlesztés / Kapu készítõ
2012. április 29. - 22:50:36
Ezzel a felülettel könnyedén készíthetsz parancsra vagy automatikusan nyíló kapukat.
http://gtaforum.hu/index.php/page,gates.html\" rel=\"external nofollow\">http://gtaforum.hu/index.php/page,gates.html
#15
SA-MP / Open.mp: Szerverfejlesztés / fixchars 2
2012. április 17. - 19:32:08
fixhars 2
 
Mi ez?
Alapértelmezetten az ékezetes karakterek hibásan jelennek meg bizonyos helyeken (Menu, GameText, TextDraw, stb).
Ha beágyazod ezt, akkor viszont nem. Ez a kiadás már egy felújított változata a 2010-es kiadásomnak, amelynek idõközben megjelent már más által átalakított változata is.
Demó:
\"width=400http://noob.hu/2012/04/17/sa-mp-000_1.png\" rel=\"external nofollow\">http://noob.hu/2012/04/17/sa-mp-000_1.png[/img]
Használat:
1. Rakd be az aktuálisan használt pawno/includes mappába
2. Ágyazd be a szkriptbe / módba
 
#include <fixchars>

 
Letöltés
http://www.solidfiles.com/d/7096b7681a/\" rel=\"external nofollow\">* Letöltés (fixchars 2 - 2. kiadás)
2. kiadás:
 
  • 0.3e támogatás hozzáadva

  • TextDrawCreate() hiba javítása

  • fixchars() függvény újraírva

  • unfixchar(), unfixchars() hozzáadva


Példa a használatra (az autimatikuson felül):
 
public OnFilterScriptInit()
{
new string[32]=\"Üdv nálunk!\";
fixchars(string);
    print(string);
    unfixchars(string);
    print(string);
    return 1;
}

 

// ----------------------------------
// Magyar karakterek megjelenítésének automatikus javítása
// Használathoz csak be kell ágyazni: #include <fixchars>
// Készítette GameStar 2010 (frissítve 2012 április)
// Weboldal: www.gtaforum.hu
// ----------------------------------
#include <a_samp>
#if defined fixchars_included
#endinput
#endif
#define fixchars_included
stock fixchar(chr)
{
switch(chr)
{
    case \'ö\': return \'¨\';
    case \'Ö\': return \''\';
    case \'ü\': return \'¬\';
    case \'Ü\': return \'•\';
    case \'ó\': return \'¦\';
    case \'Ó\': return \'¬\';
    case \'õ\': return \'§\';
    case \'Õ\': return \'\';
    case \'ú\': return \'ª\';
    case \'Ú\': return \'"\';
    case \'é\': return \'¾\';
    case \'É\': return \'‡\';
    case \'á\': return \'˜\';
    case \'Á\': return \'\';
    case \'û\': return \'«\';
    case \'Û\': return \'·\';
    case \'í\': return \'¢\';
    case \'Í\': return \'‹\';
}
return chr;
}
stock fixchars(string[])
{
new chr;
while(string[chr])
{
    string[chr] = fixchar(string[chr]);
    chr++;
}
return 1;
}
stock unfixchar(chr)
{
switch(chr)
{
    case \'¨\': return \'ö\';
    case \''\': return \'Ö\';
    case \'¬\': return \'ü\';
    case \'•\': return \'Ü\';
    case \'¦\': return \'ó\';
    case \'¬\': return \'Ó\';
    case \'§\': return \'õ\';
    case \'\': return \'Õ\';
    case \'ª\': return \'ú\';
    case \'"\': return \'Ú\';
    case \'¾\': return \'é\';
    case \'‡\': return \'É\';
    case \'˜\': return \'á\';
    case \'\': return \'Á\';
    case \'«\': return \'û\';
    case \'·\': return \'Û\';
    case \'¢\': return \'í\';
    case \'‹\': return \'Í\';
}
return chr;
}
stock unfixchars(string[])
{
new chr;
while(string[chr])
{
    string[chr] = unfixchar(string[chr]);
    chr++;
}
return 1;
}
stock fixchars_GameTextForPlayer(playerid,text[],time,style)
{
    fixchars(text);
return GameTextForPlayer(playerid,text,time,style);
}
#define GameTextForPlayer fixchars_GameTextForPlayer
stock fixchars_GameTextForAll(text[],time,style)
{
    fixchars(text);
return GameTextForAll(text,time,style);
}
#define GameTextForAll fixchars_GameTextForAll
stock Text:fixchars_TextDrawCreate(Float:x, Float:y, text[])
{
    fixchars(text);
return TextDrawCreate(x,y,text);
}
#define TextDrawCreate fixchars_TextDrawCreate
stock Menu:fixchars_CreateMenu(title[], columns, Float:x, Float:y, Float:col1width, Float:col2width = 0.0)
{
    fixchars(title);
return CreateMenu(title,columns,x,y,col1width,col2width);
}
#define CreateMenu fixchars_CreateMenu
stock fixchars_SetMenuColumnHeader(Menu:menuid, column, columnheader[])
{
    fixchars(columnheader);
return SetMenuColumnHeader(menuid, column, columnheader);
}
#define SetMenuColumnHeader fixchars_SetMenuColumnHeader
stock fixchars_AddMenuItem(Menu:menuid, column, menutext[])
{
    fixchars(menutext);
return AddMenuItem(menuid, column, menutext);
}
#define AddMenuItem fixchars_AddMenuItem
stock fixchars_TextDrawSetString(Text:text, string[])
{
    fixchars(string);
return TextDrawSetString(text,string);
}
#define TextDrawSetString fixchars_TextDrawSetString
// 0.3e
#if defined CreatePlayerTextDraw
stock fixchars_CreatePlayerTextDraw(playerid, Float:x, Float:y, text[])
{
fixchars(text);
return CreatePlayerTextDraw(playerid, x, y, text);
}
#define CreatePlayerTextDraw fixchars_CreatePlayerTextDraw
#endif
#if defined PlayerTextDrawSetString
stock fixchars_PlayerTextDrawSetS(playerid, PlayerText:text, string[])
{
fixchars(string);
return PlayerTextDrawSetString(playerid,text,string);
}
#define PlayerTextDrawSetString fixchars_PlayerTextDrawSetS
#endif

 
[mod]Nincs reklám![/mod]
#16
Kérdések, Segítség / Android Market probléma
2012. április 14. - 23:15:09
Üdv
Amikor az Android Marketrõl akarok letölteni, akkor az a probléma merül fel, hogy \"Starting download\", és vége. (Galaxy S 1 telefon)
Valakinek esetleg van ötlete a probléma megoldására? (Az alkalmazások adatainak törlését megpróbáltam, és a googlemail/gmail probléma sem áll fenn)
#17
SA-MP / Open.mp: Szerverfejlesztés / PAWN Autoindent
2012. április 14. - 02:06:15
Üdv
Ez a felület az elrontott kódodon hajtja végre http://gtaforum.hu/index.php/topic,9453.msg86285.html#msg86285\" rel=\"external nofollow\">EBBEN a leírásban leírtakat. Nem garantálom, hogy minden kódon mûködik, de a hibabejelentés itt lehetséges. A kódokat nem tároljuk el!
http://gtaforum.hu/index.php/page,autoindent.html\" rel=\"external nofollow\">PAWN Autoindent megnyitása
Példa:
 
public OnFilterScriptInit()
{
   new
a,
b,
c;
   new d;
   new e
f;
new Float:g[][]=
{
               {0.0,0.0,0.0},
{0.0,0.0,0.0},
      {0.0,0.0,0.0},
            };
   print(\"a\");
         print(\"a\");
   print(\"a\");
print(\"a\");
   if(print(\"a\"))
{
print(\"b\");
      if(print(\"b\"))
{
   print(\"c\");
if(print(\"c\"))
{
            print(\"d\");
   }
}
}
  return 1;
}

 
vagy
 
public OnFilterScriptInit()
{
new
a,
b,
c;
new d;
new e
f;
new Float:g[][]=
{
{0.0,0.0,0.0},
{0.0,0.0,0.0},
{0.0,0.0,0.0},
};
print(\"a\");
print(\"a\");
print(\"a\");
print(\"a\");
if(print(\"a\"))
{
print(\"b\");
if(print(\"b\"))
{
print(\"c\");
if(print(\"c\"))
{
print(\"d\");
}
}
}
return 1;
}

 
->
 
public OnFilterScriptInit()
{
    new
        a,
        b,
        c;
    new d;
    new e
        f;
    new Float:g[][]=
    {
        {0.0,0.0,0.0},
        {0.0,0.0,0.0},
        {0.0,0.0,0.0},
    };
    print(\"a\");
    print(\"a\");
    print(\"a\");
    print(\"a\");
    if(print(\"a\"))
    {
        print(\"b\");
        if(print(\"b\"))
        {
            print(\"c\");
            if(print(\"c\"))
            {
                print(\"d\");
            }
        }
    }
    return 1;
}

 

Idézetet írta: Tücsi date=1310895834\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"20133\" data-ipsquote-contentclass=\"forums_Topic
INDENTIFIKÁCIÓ
 
Üdv! Ezt a mai leírásomat abból a szándékból kezdtem el írni, hogy rávezessem a kezdõket az indentifikáció használatának szükségességére.
Elõször tisztázzuk le ennek fogalmát: egy teljesen megegyezõ futtatandó fájlhoz (.amx) különbözõ stílusú, de azonos mûveleteket tartalmazó forráskód (.pwn) tartozhat, mivel a Pawn fordítója a fordítás során a formázásokat figyelmen kívül hagyja. Formázásnak tekintjük a kommenteket, az üres sorokat ill. a behúzást vagy idegen szóval indentifikációt.
A behúzás azt jelenti, hogy egy bizonyos blokkba (függvény, elágazás, ciklus, stb.) írt kódot mindig egy meghatározott mennyiséggel beljebb húzzuk a kijjebb álló kódnál, ezzel megkapva ez \"csontvázas\" kinézetet, így ránézésre láthatjuk, hogy \"mi min belül van\".
MIÉRT?
Talán a kezdõknek nem tûnhet ez olyan fontosnak, de képzeljük el, hogy egy több ezer parancsot tartalmazó programról van szó, és abban szeretnénk mondjuk egy függvényen belül a 8. egymásba ágazott if utasításban valamit változtatni. Kín és szenvedés lenne egy azonos behúzási szinten lévõ kódban ezt megtalálni, nem beszélve arról, ha magukban az elágazásokban is eleve hosszú kód van, míg indentifikálva egybõl láthatjuk a szinteket.
A következõ részben egy rövid kódot fogok nektek beilleszteni egy szkriptbõl indentifikáció nélkül, majd vele. Próbáljátok megfejteni mit csinál mindkét esetben. Hogyan volt könnyebb?
 
public OnPlayerUpdate(playerid){
if(!newround && living[playerid]){
new Float:X, Float:Y, Float:Z;
GetPlayerPos(playerid, X, Y, Z);
if(Z < 150.0){
printf(\"DEBUG: ID %d knocked out, put in Spec\", playerid);
new outstr[128];
GetPlayerName(playerid, outstr, 128);
format(outstr, 128, \"{FFCC33}%s {CC33FF}kiesett...\", outstr);
SendClientMessageToAll(0xCC33FFFF, outstr);
living[playerid] = false;
if(IsPlayerInAnyVehicle(playerid)){
new id = GetPlayerVehicleID(playerid);
DestroyVehicle(id);
}
for(new i; i < GetMaxPlayers(); i++){
if(specing == playerid){
specing++;
while(!living[specing]){
specing++;
if(specing > GetMaxPlayers()-1) specing = 0;
}
PlayerSpectatePlayer(i, specing);
}
}
new count = 0;
for(new i; i < GetMaxPlayers(); i++) if(living) count++;
printf(\"DEBUG: Player alive count is %d\", count);
SetPlayerPos(playerid, 100.0, 100.0, 200.0);
TogglePlayerSpectating(playerid, true);
specing[playerid] = 0;
while(!living[specing[playerid]] && specing[playerid] < GetMaxPlayers()) specing[playerid]++;
PlayerSpectatePlayer(playerid, specing[playerid]);
if(count < 2){
newround = true;
SetTimer(\"NextRound\", 3000, false);
for(new i; i < GetMaxPlayers(); i++){
if(living){
new pName[MAX_PLAYER_NAME];
GetPlayerName(i, pName, 128);
format(outstr, 128, \"{CC33FF}A KÖRT {FFCC33}%s {CC33FF}NYERTE!\", pName);
SendClientMessageToAll(0xCC33FFFF, outstr);
points++;
}
}
}
}
}
return true;
}

 

public OnPlayerUpdate(playerid){
if(!newround && living[playerid]){
new Float:X, Float:Y, Float:Z;
GetPlayerPos(playerid, X, Y, Z);
if(Z < 150.0){
   printf(\"DEBUG: ID %d knocked out, put in Spec\", playerid);
   new outstr[128];
   GetPlayerName(playerid, outstr, 128);
   format(outstr, 128, \"{FFCC33}%s {CC33FF}kiesett...\", outstr);
   SendClientMessageToAll(0xCC33FFFF, outstr);
   living[playerid] = false;
   if(IsPlayerInAnyVehicle(playerid)){
      new id = GetPlayerVehicleID(playerid);
      DestroyVehicle(id);
   }
   for(new i; i < GetMaxPlayers(); i++){
      if(specing == playerid){
          specing++;
          while(!living[specing]){
            specing++;
            if(specing > GetMaxPlayers()-1) specing = 0;
          }
          PlayerSpectatePlayer(i, specing);
      }
   }
   new count = 0;
   for(new i; i < GetMaxPlayers(); i++) if(living) count++;
   printf(\"DEBUG: Player alive count is %d\", count);
   SetPlayerPos(playerid, 100.0, 100.0, 200.0);
           TogglePlayerSpectating(playerid, true);
   specing[playerid] = 0;
   while(!living[specing[playerid]] && specing[playerid] < GetMaxPlayers()) specing[playerid]++;
   PlayerSpectatePlayer(playerid, specing[playerid]);
    if(count < 2){
        newround = true;
        SetTimer(\"NextRound\", 3000, false);
        for(new i; i < GetMaxPlayers(); i++){
            if(living){
                new pName[MAX_PLAYER_NAME];
                GetPlayerName(i, pName, 128);
          format(outstr, 128, \"{CC33FF}A KÖRT {FFCC33}%s {CC33FF}NYERTE!\", pName);
               SendClientMessageToAll(0xCC33FFFF, outstr);
               points++;
            }
        }
     }
}
}
return true;
}

 
Azt hiszem, mostanra mindenki megértette az indentifikáció fontosságát!
A fenti kódtól pedig ne tessék megijedni, csak illusztráció...
HOGYAN?
Az indentifikációt mindenki saját belátása szerint végzi, fõ az átláthatóság, ám az alábbiakban néhány elterjedtebb módszert mutatok be.
1.) Allman-stílus
Az Allman-stílus az ANSI C illetve vele együtt több C-alapú nyelv (pl. PAWN) hivatalosan támogatott behúzási módja.
Egy TAB-ot használ a behúzásra, a nyitó- és zárójeleket új sorba helyezi el az eredeti szinten.
Az indentifikáció akkor helyes, ha az adott kódrészlet befejezésével a kiindulási szintre érünk vissza.
PÉLDA:
 
while(x == y)
{
    valami();
    valami2();
}
ciklusonkivulivalami();

 
2.) Whitesmiths-stílus
Az Allman-stílustól eltérõen a nyitó- és zárójeleket behúzva írja.
Az intentifikáció akkor helyes ha a kód végén a kiindulástól egy szinttel beljebb vagyunk.
PÉLDA:
 
while(x == y)
    {
    valami();
    valami2();
    }
ciklusonkivulivalami();

 
3.) 1TBS-stílus
Jómagam is ezt használom.
A nyitójeleket az elõzõ sor végére rakja, a zárójeleket külön sorba eredeti szinten, de ha pl. else állítás van, akkor azonos sorban folytatja.
Az indentifikáció akkor helyes, ha az adott kódrészlet befejezésével a kiindulási szintre érünk vissza.
PÉLDA:
 
while(x == y){
    valami();
    valami2();
}
ciklusonkivulivalami();

 
További stílusok és példák: http://en.wikipedia.org/wiki/Indent_style\" rel=\"external nofollow\">>> ITT <<
Még egyszer mondom: teljesen mindegy, ki hogyan használja a behúzásokat, de használnunk kell, hogy más számára is követhetõvé váljon a gondolatmenetünk.
 
#18
Itt könnyedén tudsz bandazónákat készíteni. Az alábbi képen kattints egy tetszõleges pontra a bal egérgombbal, majd tartsd nyomva,kKözben mozgathatod az egeret, így a zóna mérete tetszés szerint állítható. [/quote]
http://gtaforum.hu/index.php/page,gangzone.html\" rel=\"external nofollow\">Ide kattintva érhetõ el
#19
SA-MP / Open.mp: Szerverfejlesztés / IP szûrõ
2011. szeptember 02. - 19:58:50
Írtam egy függvényt, mellyel a szövegen belül elvileg elég jól meg lehet találni az IP helyét. Mellékeltem egy szkriptet is.
ipfind
Paraméterek:
 
  • string[] - a szöveg, amelyen belül keresni szeretnénk

  • start - ahonnan a keresést indítani szeretnénk

  • &iplen - ha szükségünk van az ip hosszára, akkor ebbe írja bele


Visszatérés:
 
  • Ha található IP a szövegben, akkor annak kezdõkaraktere, ha pedig nem, akkor -1.

 
stock ipfind(const string[], start = 0, &iplen = -1)
{
new
    pos = -1,
ch = start,
Float:nums = 0,
Float:dots = 0;
while(string[ch++])
{
    if(string[ch] == \'\\0\' || string[ch] == \' \')
{
   continue;
}
if(\'0\' <= string[ch] <= \'9\')
{
    if(pos < 0)
   {
      pos = ch;
   }
   if(dots >= 3)
   {
       iplen = ch - pos;
   }
   nums++;
   if(nums > 3)
   {
            if(floatround(nums / dots) < 2)
      {
          nums = 0;
           dots = 0;
         pos = -1;
         iplen = -1;
         continue;
      }
   }
   continue;
}
else if(string[ch] == \'.\')
{
   if(nums > 0)
   {
      dots++;
      if(dots > 3)
      {
          nums = 0;
            dots = 0;
         pos = -1;
         iplen = -1;
         continue;
      }
      if(nums > 3)
      {
         if((floatround(nums / dots) < 2))
          {
              nums = 0;
              dots = 0;
            pos = -1;
            iplen = -1;
            continue;
         }
      }
   }
   else
   {
       if(dots > 0)
       {
           nums = 0;
            dots = 0;
         pos = -1;
         iplen = -1;
         continue;
      }
   }
   continue;
}
else
{
           if(0 < nums < 8 || 0 < dots < 3)
    {
         nums = 0;
          dots = 0;
      pos = -1;
      iplen = -1;
            }
            continue;
        }
}
if(nums >= 8)
{
if(floatround(nums / dots) < 2)
{
    nums = 0;
     dots = 0;
   pos = -1;
   iplen = -1;
}
}
else
{
    nums = 0;
dots = 0;
pos = -1;
iplen = -1;
}
if(iplen) iplen++;
return pos;
}

 
Szkript:
[pawn]// This is a comment
// uncomment the line below if you want to write a filterscript
//#define FILTERSCRIPT
#include <a_samp>
// ipfind függvényt ide másold
stock replacestring(source[], string1[], string2[])
{
new
    pos;
    pos = strfind(source, string1);
while(pos != -1)
{
   strdel(source, pos, pos + strlen(string1));
   strins(source, string2, pos, strlen(string2));
   pos = strfind(source, string1);
}
return 1;
}
public OnPlayerText(playerid, text[])
{
new
    len,
   pos = ipfind(text, 0, len);
if(pos > -1)
{
    new
        ip[32];
   strmid(ip, text, pos, pos + len, sizeof(ip));
   replacestring(text, ip, \"[REKLÁM NINCS]\");
}
return 1;
}[/pawn]
#20
Fegyverek :: engedélyezése / tiltása
Leírás
Ezekkel a függvényekkel lehetõségünk nyílik bizonyos fegyvereket engedélyezni / letiltani.
Függvények:
 

  • DisableWeapons(...)
    A fegyverek letiltása. Például: DisableWeapons(37, 36, 35);


  • EnableWeapons(...)
    A fegyverek engedélyezése. Például: EnableWeapons(37, 36, 35);


  • EnableAllWeapons()
    Minden fegyver engedélyezése. Például: EnableAllWeapons();


  • WeaponIsDisabled(weaponid)
    Ellenõrzi, hogy egy fegyver le van-e tiltva. Például: if(WeaponIsDisabled(38)) print(\"A minigun le van tiltva\");


  • Weapon_Init()
    Elindítja az automatikus ellenõrzést. Ha valakinél tiltott fegyver van, akkor elveszi. Ajánlott az On FilterScript/GameMode Init eljárásokban használni.Weapon_Init();


Fegyverek táblázata
http://wiki.sa-mp.com/wiki/Weapons\" rel=\"external nofollow\">http://wiki.sa-mp.com/wiki/Weapons
Letöltés
http://pastebin.com/3kKbcVTp\" rel=\"external nofollow\">http://pastebin.com/3kKbcVTp