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
  • Schön und Gut,dass du eine Funktion postest die nützlich sein könnte,aber:


    • Function - Leute neigen dazu, copy & paste zu machen. Function gibt es standardmäßig nicht.
    • if (PlayerInfo[pAdmin] >= level) - Wird bestimmt so nicht jeder haben
    • printf("%s", string); -bringt was ? Vorallem in der Schleife :wacko:


    Stimmt sorry, weiste ich wollte es nicht nochmal aufschreiben, hier die define ;)
    #define Function%0(%1) forward%0(%1); public%0(%1)

    Das mit der Definition sollte jder selber kucken ^^
    Test ;)

  • Ist glaube ich etwas kürzer:

    stock CustomMessage(color,const string[],level)
    {
    for(new i = 0; i < MAX_PLAYERS; i++)
    if (PlayerInfo[i][pAdmin] >= level)SendClientMessage(i, color, string);
    return 1;
    }

    „Auge um Auge - und die ganze Welt wird blind sein.“
    - Mahatma Gandhi

  • hier das ist auch nützlich für anfänger die nicht den
    ToAll benutzen wollen sondern nur im umfang von

    stock SendMessageInRange(color, text[], Float:X, Float:Y, Float:Z, Float:Range)
    {
    for(new i=0; i<GetMaxPlayers(); i++)
    {
    if(IsPlayerConnected(i))
    {
    if(IsPlayerInRangeOfPoint(i, Range, X, Y,Z))
    {
    SendClientMessage(i,color,text);
    }
    }
    }
    return 1;
    }

  • Funktionen:



    srandom2(min,max);



    Liefert eine zufällige Zahl aus dem Wertebereich min bis max.



    srandom3(min1,max1,min2,max2);



    Liefert eine zufällige Zahl aus dem Wertebereich min1 bis max1 und min2 bis max2.



    Nichts großes, aber nervig sowas immer im Script zu schreiben.


    Code:


    /*Include für einen begrenzten Random-Betrag*/
    #include <a_samp>


    stock srandom2(min, max)
    {
    new res = max-min;
    new result = random(res)+ min;
    return result;
    }


    stock srandom3(min1,max1,min2,max2)
    {
    new res1 = max1-min1;
    new result1 = random(res1)+ min1;
    new res2 = max1-min2;
    new result2 = random(res1)+ min2;
    new bed = random(1);
    if(bed < 0){
    return result1;}
    else{
    return result2;}
    }

    Nur wenn man das Unmögliche versucht kann man das absolut Mögliche erreichen
    Hermann Hesse


    „Was manche Menschen sich selber vormachen, das macht ihnen so schnell keiner nach.”
    Gerhard Uhlenbruck

  • Hier mal eine einfache Abfrage zur Differenz zwischen 2 Daten und 2 Uhrzeiten.
    Entstanden aus ein bereits hier zu findener Codeschnipsel mit dem man die differenz zwischen 2 Daten in Form von Tagen wiedergeben kann.


    stock CheckTimeDifference(sekunde1,minute1,stunde1,sekunde2,minute2,stunde2, returnmode)
    {
    new minutes = 0, seconds = 0, hours = 0;
    if(!IsValidTime(sekunde1,minute1,stunde1) return -1;
    if(!IsValidTime(sekunde2,minute2,stunde2) return -1;
    while(sekunde1 != sekunde2 || minute1 != minute2 || stunde1 != stunde2)
    {
    sekunde1++;
    seconds++;
    if(sekunde1 > 59)
    {
    sekunde1 = 0;
    minute1++;
    minutes++;
    }
    if(minute1 > 59)
    {
    sekunde1 = 0;
    minute1 = 0;
    stunde1++;
    hours++;
    }
    }
    if(returnmode == 0) return seconds;
    else if(returnmode == 1) return minutes;
    else if(returnmode == 2) return hours;
    else return -1;
    }


    stock CheckDateDifference(tag1, monat1, jahr1, tag2, monat2, jahr2, returnmode)
    {
    new years = 0, month = 0, days = 0;
    if(!IsValidDate(tag1,monat1,jahr1)) return -1;
    if(!IsValidDate(tag2,monat2,jahr2)) return -1;
    while(tag1 != tag2 || monat1 != monat2 || jahr1 != jahr2)
    {
    tag1++;
    days++;
    if(tag1>28 && monat1 == 2)
    {
    tag1=1;
    monat1++;
    month++;
    }
    if(tag1>30 && (monat1 == 4 || monat1 == 6 || monat1 == 9 || monat1 == 11))
    {
    tag1=1;
    monat1++;
    month++;
    }
    if(tag1>31 && (monat1 == 1 || monat1 == 3 || monat1 == 5 || monat1 == 7 || monat1 == 8 || monat1 == 10 || monat1 == 12))
    {
    tag1=1;
    monat1++;
    month++;
    }
    if(monat1>12)
    {
    tag1=1;
    monat1=1;
    jahr1++;
    years++;
    }
    }
    if(returnmode == 0) return days;
    else if(returnmode == 1) return month;
    else if(returnmode == 2) return years;
    else return -1;
    }


    stock IsValidDate(tag, monat, jahr)
    {
    new day, month, year;
    getdate(year,month,day);
    if(jahr < 0 || jahr > year) return 0;
    if(monat < 1 || monat > 12) return 0;
    if(tag < 1 && tag > 31) return 0;
    else
    {
    if(tag > 28 && monat == 2) return 0;
    if(tag > 30 && (monat == 2 || monat == 4 || monat == 6 || monat == 9 || monat == 11)) return 0;
    }
    return 1;
    }


    stock IsValidTime(sekunde, minute, stunde)
    {
    if(sekunde < 0 || sekunde > 59) return 0;
    if(minute < 0 || minute > 59) return 0;
    if(stunde < 0 || stunde > 23) return 0;
    return 1;
    }


    Liebe Grüße
    Simon

  • eine kürzere version als die normalen /befehle im script

    #define ECMD(%0) if(!strcmp(cmdtext, %0, true))


    public OnPlayerCommandText(playerid, cmdtext[])
    {
    ECMD("/mycommand")
    {
    return 1;
    }
    return 0;
    }



    so benutze ich immer meine befehle
    geht gut
    und mann muss nicht so viel schreiben
    MFG Piet

  • Hallo,


    ich habe es nicht testen können aber wenn es funktioniert sollte man damit einfach bei alten Toren die "seltsam" aufgehen wieder normal funktionieren. Ich weiß auch nicht ob das schon jemand gepostet hat.



    forward sMoveObject(objectid, Float:x, Float:y, Float:z, Float:speed);
    public sMoveObject(objectid, Float:x, Float:y, Float:z, Float:speed)
    {
    new Float:op[3];
    GetObjectRot(objectid, op[0], op[1], op[2]);
    MoveObject(objectid, x, y, z, speed, op[0], op[1], op[2]);
    return 1;
    }


    Lg

  • Halt ich für völligen Blödsinn, denn wenn man die Includes richtig updated, funktioniert das auch...
    BTW das funzt auch nur bei Toren ohne Rotation.

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

    Margarete Stokowski

  • new zement[MAX_VEHICLES];
    zement[vehicleid]=CreateObject(18672,1.509998, -3.990043, -0.589999, 47.235004, -4.020001, -91.454948);//Objekt erstellen
    AttachObjectToVehicle(zement[vehicleid],vehicleid, 1.509998, -3.990043, -0.589999, 47.235004, -4.020001, -91.454948);//Objekt ans Fahrzeug haften hinten an die Rutsche des Zementlasters
    DestroyObject(zement[vehicleid]);//Obejkt zerstören


    Bei mir ist das so eingebaut das es zum teil über einen cmd und über nen timer läuft , sieht richtig gut aus :thumbup:

  • Crypt und DeCrypt Funktion für z.B. Passwörter :)


    stock Crypt(key[])
    {
    for(new x;x<strlen(key); x++)
    {
    key[x]+=(3^x)*(x%15);
    if(key[x]>(0xff))
    {
    key[x]-=256;
    }
    }return true;
    }
    stock DeCrypt(key[])
    {
    for(new x;x<strlen(key); x++)
    {
    key[x]-=(3^x)*(x%15);
    if(key[x]<(0xff))
    {
    key[x]+=256;
    }
    }return true;
    }

    Unkompetent. Das neue dynamisch.



    ihr seit schon lustig postet erros aber nicht die zeilen wo sie sind dann können wir euch auch nicht helfen^^


    Lernt Scripten, Leute, und macht eure Augen auf!


    _______________________________________
    50 Beiträge: [x] 300 Beiträge: [x]
    100 Beiträge: [x] 500 Beiträge: [x]
    150 Beiträge: [x] 1000 Beiträge: [x]
    200 Beiträge: [x]
    2000 Beiträge: []
    250 Beiträge: [X] Boardaktivitäten: Profil


    [size=36]_______________________________________

    /Edit: Schmerzt es dir eigentlich nicht so ein Müll zu schreiben 8|

  • public OnVehicleDamageStatusUpdate(vehicleid, playerid)
    {
    new Float:vHealth; GetVehicleHealth(vehicleid, vHealth);
    if(floatcmp(vHealth, 250) == -1) SetVehicleHealth(vehicleid, 1000);
    }


    Ist gut für Stunt server viele machen ein Timer rein.


  • kann ich das auch bei SetPlayerRequestClass benutzen?

  • GetPlayerVehicleID(playerid)



    Dieser Code bewirkt das Spieler in Tunning-Garagen nicht in einander gesetzt werden und sich
    somit auch nicht mehr sehen.



    public OnEnterExitModShop(playerid, enterexit, interiorid)
    {
    if(enterexit == 1)
    {
    SetVehicleVirtualWorld(GetPlayerVehicleID(playerid), playerid);
    SetPlayerVirtualWorld(playerid, playerid);
    SendClientMessage(playerid, 0x00FF00FF, "Shop Betreten");
    }
    else
    {
    SendClientMessage(playerid, 0x00FF00FF, "Shop Verlassen");
    SetVehicleVirtualWorld(GetPlayerVehicleID(playerid), 0);
    SetPlayerVirtualWorld(playerid, 0);
    }
    return 1;
    }


    Viel spass mit diesem einfachen Code


    http://www.johnson-reallife.tk/

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen