Nützliche Codeschnipsel

Wichtiger Hinweis: Bitte ändert nicht manuell die Schriftfarbe auf schwarz sondern belasst es bei der Standardeinstellung. Somit tragt ihr dazu bei dass euer Text auch bei Verwendung unseren dunklen Forenstils noch lesbar ist!

Tipp: Ihr wollt längere Codeausschnitte oder Logfiles bereitstellen? Benutzt unseren eigenen PasteBin-Dienst Link

  • Ich hab dir mal dein code ein bissle umgeschrieben eine for-schleife ist nicht wirklich dafür notwendig :D
    Für was gibt es das prozentzeichen als Operator , welches den rest ausgibt.



    GivePlayerCash(playerid,Euro,Cent){
    SpielerInfo[playerid][Euro] = ((((SpielerInfo[playerid][cent]+Cent)/100) > 0)?(SpielerInfo[playerid][Euro]+Euro+((SpielerInfo[playerid][cent]+Cent)/100)):(SpielerInfo[playerid][Euro]+Euro));
    SpielerInfo[playerid][cent] = ((SpielerInfo[playerid][cent]+Cent)0);
    return 1;
    }



    Rohmodel:
    new val[2];
    GivePlayerCash(playerid,Euro,Cent){
    val[0] = ((((val[1]+Cent)/100) > 0)?(val[0]+Euro+((val[1]+Cent)/100)):(val[0]+Euro));
    val[1] = ((val[1]+Cent)%100);
    return 1;
    }


    //edit kleiner vermerk es wäre wohl das einfachste das ganze mit floats zu machen und nur zwei werte via einem formatierten platzhalter anzugeben in mysql könnte man dei
    attributeigenschaft auf double setzen somit wird das ganze auch nur mit zwei nachkommastellen gespeichert.

  • Berechnet die distanz zwischen 2 Points.
    stock DistanceToPoint(playerid, Float:PointX, Float:PointY, Float:PointZ)
    {
    new Float:PosX, Float:PosY, Float:PosZ;
    GetPlayerPos(playerid, PosX, PosY, PosZ);
    return floatsqroot((PosX-PointX)*(PosX-PointX)+(PosY-PointY)*(PosY-PointY)+(PosZ-PointZ)*(PosZ-PointZ)));


    }

  • Ich habe eben für einen User einen kleinen Spam stock geschrieben ^^
    Der Code sollte Selbst erklärend sein ^^



    stock Spam(playerid,1o2)
    {
    switch(1o2)
    {
    case 0:
    {
    for(new i=0;i<100;i++)
    {
    SendClientMessage(playerid,-1,"");
    }
    return 1;
    }
    case 1:
    {
    for(new i=0;i<100;i++)
    {
    SendClientMessageToAll(-1,"");
    }
    return 1;
    }
    }
    return 1;
    }

  • Der Code sollte Selbst erklärend sein


    Das kannste dch auch kurz schreiben...einfach so:


    stock Spam(playerid,bool:x) {
    new i;
    switch(x) {
    case false: for(; i<100; i++) SendClientMessage(playerid,-1,"");
    case true: for(; i<100; i++) SendClientMessageToAll(-1,"");
    }
    return 1;
    }


    mfg. :thumbup:

    ast2ufdyxkb1.png


    Leute, lernt scripten und versucht mal lieber etwas selber zu schreiben, als es aus einem GF zu kopieren. :S

  • Hab hier was gefunden gegen OnFoodCrasher.


    #if defined Itter_OnPlayerConnect || defined _inc_y_iterate
    #define __USING_FOREACH true
    #else
    #define __USING_FOREACH false
    #endif


    public OnFilterScriptInit()
    {
    SetTimer("OnfootCrasher_Checker", 1400 + random(500), true);
    return 1;
    }


    forward OnfootCrasher_Checker();
    public OnfootCrasher_Checker()
    {
    new
    x, y, z;

    #if (__USING_FOREACH == true)
    foreach(Player, playerid)
    {
    if(!(GetPlayerState(playerid) == PLAYER_STATE_ONFOOT)) continue;

    GetPlayerCameraFrontVector(playerid, Float:x, Float:y, Float:z);
    if(floatabs(Float:x) >= 9000.0 && Float:z > 1.0)
    {
    Kick(playerid);
    continue;
    }
    }
    #elseif (__USING_FOREACH == false)
    for(new playerid; playerid <= MAX_PLAYERS-1; playerid++) if(IsPlayerConnected(playerid))
    {
    if(!(GetPlayerState(playerid) == PLAYER_STATE_ONFOOT)) continue;

    GetPlayerCameraFrontVector(playerid, Float:x, Float:y, Float:z);
    if(floatabs(Float:x) >= 9000.0 && Float:z > 1.0)
    {
    Kick(playerid);
    continue;
    }
    }
    #endif
    }

  • stock freplaceline(filename[], line, replacing[]) //©Jeffry
    {
    new string[256], str[256], File:handle, File:ftmp, tmp;
    handle = fopen(filename,io_read);
    format(str,sizeof(str),"%s.part",filename);
    ftmp = fopen(str,io_write);
    while(fread(handle,string))
    if(tmp!=line)
    {
    fwrite(ftmp,string);
    tmp++;
    }
    else
    {
    fwrite(ftmp, replacing);
    tmp++;
    }
    fclose(handle);
    fclose(ftmp);
    handle = fopen(filename,io_write);
    ftmp = fopen(str,io_read);
    while(fread(ftmp,string))
    fwrite(handle,string);
    fclose(handle);
    fclose(ftmp);
    return fremove(str);
    }
    Ersetzt eine bestimmte Zeile in einer Datei mit einer neuen:
    freplaceline("test.txt", 10, "Ich bin Zeile 10 und wurde ersetzt.");


    Keywords: ersetzen, zeile ersetzen, ersetzzeile, linie, freplace

    3HZXdYd.png

    Einmal editiert, zuletzt von Jeffry ()

  • Hier 3 kleine funktionen, die etwas zeit ersparen sollen, sind so frei niedergeschrieben,
    falls was falsch ist bitte sagen, verbesserungsvorschläge bitte auch :)



    stock GivePlayerHealth(playerid,const Float:health)
    {
    new Float:Leben;
    GetPlayerHealth(playerid,Leben);
    SetPlayerHealth(playerid,Leben+health);
    }


    stock GivePlayerScore(playerid,const level)return SetPlayerScore(playerid,GetPlayerScore(playerid)+level);


    stock GivePlayerArmour(playerid,const Float:ruestung)
    {
    new Float:arm;
    GetPlayerArmour(playerid,arm);
    SetPlayerArmour(playerid,arm+ruestung);
    }

  • Um Commands o.Ä zu loggen
    stock LogCommand(event[])
    {
    new File:log = fopen("command_log.txt", io_append);//je nachdem,wie man es speichern will
    fwrite(log, event);
    fwrite(log, "\n");
    fclose(log);
    }

    Zu verwenden:


    new string[...],hour,minute,second;
    gettime(hour,minute,second);
    format(string,sizeof(string), " Dieser Command wurde um %02d:%02d:%02d eingegeben.", hour,minute,second);
    LogCommand(string);



  • stock AdminLog(string[])
    {
    new entry[128],year,month,day,hour,minute,second;
    getdate(year, month, day);
    gettime(hour, minute, second);
    format(entry, sizeof(entry), "[%02d/%02d/%02d | %02d:%02d:%d] %s\n",year,month,day,hour,minute,second,string);
    new File:hFile;
    hFile = fopen("/Logs/admin.log", io_append);
    fwrite(hFile, entry);
    fclose(hFile);
    }

  • bin gerade mit Maurice. am Scripten und da st mir die Funktion eingefallen.
    Die ermöglicht einfach, dass man ein String nicht umständlich mit format in eine Var bekommt.
    normal würde es ja so aussehen


    PHP
    new string[128];
    format(string,128,"%s",inputtext);
    pInfo[playerid][pPasswort] = string;


    Jedoch, gibt es jetzt die Funktion


    PHP
    #define fvar(%0,%1,%2) \
        format(%0,128,%1,%2)


    Benutzung:


    PHP
    new Hau[128] = "asd";
        fvar(pInfo[0][pPasswort],"%s",Hau);
        printf("%s --> %s",Hau,pInfo[playerid][pPasswort]);


    ergebnis:

    PHP
    asd --> asd

    !

    Mit Freundlichen Grüßen
    Whitetiiger aka. Kaito-sensei
    P.s. Alle mit #IRONIE bestätigten Sätze von mir, sind als Ironie anzusehen.

  • #define fvar(%0,%1,%2) \
    format(%0,128,%1,%2)


    Warum denn 128?


    Wenn ich nen String habe der kleiner ist, hab ich nen Bufferoverflow :huh:
    Sinngemäß ist das so sicherlich nicht

    "Bevor ich mir Informationen aus der "Bild" hole,
    werde ich anfangen, Wahlergebnisse danach vorauszusagen,
    neben welchen Busch unsere Katze gepinkelt hat."

    Margarete Stokowski

    2 Mal editiert, zuletzt von Akino Kiritani ()