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
  • Du brauchst die Variable x nicht ^^


    Schreibe es einfach so:


    stock GetPlayerTickCount(playerid) return GetTickCount() - y[playerid];


    mfg. :thumbup:

    ast2ufdyxkb1.png


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

  • Grade mal eingefallen:


    stock Float:GetFacingAngle(playerid)
    {
    new Float:a;
    if(IsPlayerInAnyVehicle(playerid)) GetVehicleZAngle(GetPlayerVehcileID(playerid), a);
    else GetPlayerFacingAngle(playerid, a);
    return a;
    }

    ast2ufdyxkb1.png


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


  • stock r_mysql_Insert(table[], string[], format2[], {Float,_}:...)
    {
    r_mysql_connected();
    new start = 3;
    new Query[128];
    new Query1[128];
    new Query2[128];
    new str[10][128];
    new in[10];
    new Float: pi[10];
    new f[10][32];
    r_split(string, f, ',');
    for(new i = 0; i < strlen(format2); i++)
    {
    switch(format2[i])
    {
    case 's':
    {
    for(new i2 = 0; i2 < 128; i2++)
    {
    str[i][i2]=getarg(i+start, i2);
    if(!getarg(i+start, i2+1))
    {
    break;
    }
    }
    }
    case 'd':
    {
    in[i]=getarg(i+start, 0);
    }
    case 'f':
    {
    pi[i]=Float:getarg(i+start, 0);
    }
    }
    }
    for(new i = 0; i < strlen(format2); i++)
    {
    switch(format2[i])
    {
    case 's':
    {
    if(i == 0)
    {
    format(Query1, sizeof(Query1), "`%s`", f[i]);
    format(Query2, sizeof(Query2), "'%s'", str[i]);
    }
    else
    {
    format(Query1, sizeof(Query1), "%s,`%s`", Query1, f[i]);
    format(Query2, sizeof(Query2), "%s,'%s'", Query2, str[i]);
    }
    }
    case 'd':
    {
    if(i == 0)
    {
    format(Query1, sizeof(Query1), "`%s`", f[i]);
    format(Query2, sizeof(Query2), "%d", in[i]);
    }
    else
    {
    format(Query1, sizeof(Query1), "%s,`%s`", Query1, f[i]);
    format(Query2, sizeof(Query2), "%s,%d", Query2, in[i]);
    }
    }
    case 'f':
    {
    if(i == 0)
    {
    format(Query1, sizeof(Query1), "`%s`", f[i]);
    format(Query2, sizeof(Query2), "%f", pi[i]);
    }
    else
    {
    format(Query1, sizeof(Query1), "%s,`%s`", Query1, f[i]);
    format(Query2, sizeof(Query2), "%s,%f", Query2, pi[i]);
    }
    }
    }
    }
    format(Query, sizeof(Query), "INSERT INTO `%s`(%s) VALUES (%s)", table, Query1, Query2);
    mysql_query(Query);
    return 1;
    }


    stock r_split(const strsrc[], strdest[][], delimiter) //Wiki
    {
    new i, li;
    new aNum;
    new len;
    while(i <= strlen(strsrc))
    {
    if(strsrc[i] == delimiter || i == strlen(strsrc))
    {
    len = strmid(strdest[aNum], strsrc, li, i, 128);
    strdest[aNum][len] = 0;
    li = i+1;
    aNum++;
    }
    i++;
    }
    return 1;
    }


    Anwendung: r_mysql_Insert(table[], string[], format2[], {Float,_}:...)
    r_mysql_Insert("Spieler", "Name,Pos,id", "sfd", "RFT", 6.0, 7);


    Würde nun ein Feld in der Tabelle Spieler mit folgenden Werten anlegen:


    Name = RFT;
    Pos = 6.000000
    id = 7;


    Sollte mit allen gängigen SQL Systemen funktionieren.


    LG RFT

    RFT

  • Sehr Simple spart aber viel an publics bzw. stocks die man sonst nimmt und dem ganzen Koordinaten Kopieren Hier:



    forward MoveDynamicTorRunter(tor);
    public MoveDynamicTorRunter(tor)
    {
    new Float:x,Float:y, Float:z, Float:rrx, Float:rry, Float:rrz;
    GetDynamicObjectPos(tor,x,y,z);
    GetDynamicObjectRot(tor,rrx,rry,rrz);
    MoveDynamicObject(tor, x, y, z-10.00, 3.50, rrx, rry, rrz);
    SetTimerEx("MoveDynamicTorHoch",6000,false,"d",tor);
    return 1;
    }
    forward MoveDynamicTorHoch(tor);
    public MoveDynamicTorHoch(tor)
    {
    new Float:x,Float:y, Float:z, Float:rrx, Float:rry, Float:rrz;
    GetDynamicObjectPos(tor,x,y,z);
    GetDynamicObjectRot(tor,rrx,rry,rrz);
    MoveDynamicObject(tor, x, y, z+10.00, 3.50, rrx, rry, rrz);
    return 1;
    }


    Anwendung bei Mir(Beispiel)

    Spoiler anzeigen


    if(IsPlayerInRangeOfPoint(playerid, 5.00, -1571.84, 661.31, 6.78) && Polizei(playerid))
    {
    MoveDynamicTorRunter(FBI2);
    }

  • Die meisten nutzen zwar ein Money system aber kann man ja ändern


    stock SetPlayerMoney(playerid, cash)
    {
    RemovePlayerMoney(playerid);
    return GivePlayerMoney(playerid, cash);//Geldsystem anpassen
    }

    [tabmenu][tab='Angebote','http://cdn3.iconfinder.com/data/icons/glyph/227/Tag-48.png']

    + Die Preise liegen bei 5-100+€ Ablauf:
    + Entweder ihr addet mich in Skype (PN vorher Schreiben) oder Ihr schreibt eine PN an mich (Betreff - Euer Wunsch z.B. Filterscript)
    + So nun schreibt ihr mir was ihr alles in dem Script haben wollt ich werd euch dann sagen ob ich es hinbekomme.
    + Dann machen wir ein groben Preis aus. Ich werde das Script erstellen und es zusammen mit dem Kunden Testen.



    [tab='Kontakt','http://cdn3.iconfinder.com/data/icons/line/36/person_add-48.png']
    edmix23

    + Bitte beim Adden angeben wer ihr seit oder per PN bescheid sagen!
    [tab='Zahlungs Methoden','https://cdn3.iconfinder.com/data/icons/line/36/check_money-32.png']
    +Paypal!
    +Direkte Banküberweisung

  • Hier mal was für euch wie ihr euch das ganze abfragen ob er so viel Geld hat spart:


    stock CheckGeld(playerid, money)
    {
    if(GetPlayerMoney(playerid) <= money)return 1;
    else if(GetPlayerMoney(playerid) > money)return 0;
    }


    Sehr Simple Aber nützlich manchmal :D


    Hier noch eine möglichkeit für ein eigenes Server geld


    stock GivePlayerGELDEINHEIT(playerid, a)
    {
    MONEYVARRIABLE += a;
    return 1;
    }
    So gehen natürlich auch minus rechnungen ein Beipiel das es geht:


    die Varriable ist jetzt mal 100 und a ist mal minus 50(-50)


    100+(-50) = 50


    den wenn ihr in Mathe aufgepasst habt:
    +(-) = -
    -(+) = -
    +(+) = +
    - (-) = +


    MFG Arendium

  • Lust auf Weihnachtsmütze? Kein problem!


    new Weihnachten[MAX_PLAYERS];


    CMD:Weihnachts(playerid, params[])
    {
    if(!Weihnachten[playerid])
    {
    Weihnachten[playerid] = 1;
    SetPlayerAttachedObject(playerid, 3, 19065, 2, 0.120000, 0.040000, -0.003500, 0, 100, 100, 1.4, 1.4, 1.4);
    SendClientMessage(playerid, 0xAFAFAFAA, " (info) ");
    SendClientMessage(playerid, 0xAFAFAFAA, "{808080}» {AFAFAF}blablabla");
    }
    else
    {
    Weihnachten[playerid] = 0;
    if(IsPlayerAttachedObjectSlotUsed(playerid, 3)) RemovePlayerAttachedObject(playerid, 3);
    SendClientMessage(playerid, 0xAFAFAFAA, "{808080}» {AFAFAF}blabla");
    }

    return 1;
    }

  • stock SetPos(playerid, Float:x,Float:y,Float:z,Float:a)
    {
    SetPlayerPos(playerid,x,y,z);
    SetPlayerFacingAngle(playerid, a);
    return 1;
    }

    ist dafür da das man kein SetPlayerFacingAngle mehr nutzen muss :D

    [tabmenu][tab='Angebote','http://cdn3.iconfinder.com/data/icons/glyph/227/Tag-48.png']

    + Die Preise liegen bei 5-100+€ Ablauf:
    + Entweder ihr addet mich in Skype (PN vorher Schreiben) oder Ihr schreibt eine PN an mich (Betreff - Euer Wunsch z.B. Filterscript)
    + So nun schreibt ihr mir was ihr alles in dem Script haben wollt ich werd euch dann sagen ob ich es hinbekomme.
    + Dann machen wir ein groben Preis aus. Ich werde das Script erstellen und es zusammen mit dem Kunden Testen.



    [tab='Kontakt','http://cdn3.iconfinder.com/data/icons/line/36/person_add-48.png']
    edmix23

    + Bitte beim Adden angeben wer ihr seit oder per PN bescheid sagen!
    [tab='Zahlungs Methoden','https://cdn3.iconfinder.com/data/icons/line/36/check_money-32.png']
    +Paypal!
    +Direkte Banküberweisung


  • das geht noch kompakter ^^



    #define SetPos(%0,%1,%2,%3,%4) SetPlayerPos(%0,%1,%2,%3); SetPlayerFacingAngle(%0, %4)


    daher braucht man keine extra stock funktion schreiben


    und um noch was neues beizutragen eine einfach konvertierung der sekunden in minuten und sekunden




    stock minutes (sec) {
    return printf("%02d:%02d", (sec/60), sec % 60);
    }


    code only
    (sec/60), sec % 60


    nix großes aber klein und fein

  • Ok hast recht aber....


    stocks kapieren die meisten Anfänger schon das von dir denke ich nicht...

    [tabmenu][tab='Angebote','http://cdn3.iconfinder.com/data/icons/glyph/227/Tag-48.png']

    + Die Preise liegen bei 5-100+€ Ablauf:
    + Entweder ihr addet mich in Skype (PN vorher Schreiben) oder Ihr schreibt eine PN an mich (Betreff - Euer Wunsch z.B. Filterscript)
    + So nun schreibt ihr mir was ihr alles in dem Script haben wollt ich werd euch dann sagen ob ich es hinbekomme.
    + Dann machen wir ein groben Preis aus. Ich werde das Script erstellen und es zusammen mit dem Kunden Testen.



    [tab='Kontakt','http://cdn3.iconfinder.com/data/icons/line/36/person_add-48.png']
    edmix23

    + Bitte beim Adden angeben wer ihr seit oder per PN bescheid sagen!
    [tab='Zahlungs Methoden','https://cdn3.iconfinder.com/data/icons/line/36/check_money-32.png']
    +Paypal!
    +Direkte Banküberweisung

  • Hier gehts um nützliche Codeschnipsel nicht darum das die Leute das verstehen
    schau doch zum beispiel die funktion von RTF an

    SQL
    stock r_mysql_Insert(table[], string[], format2[], {Float,_}:...)


    das versteht auch kein anfänger was bei dem code genau passiert und was soll an dem define so schwer zu verstehen sein?

  • Simpler "Ausrauben"-Befehl
    Da ich keine Verwendung mehr für diesen Befehl habe, wollte ich ihn einfach mal veröffentlichen. Er ist eigentlich ganz simpel aufgebaut und es sind auch alle "Modifikationen" von meiner Seite her eingefügt worden. Es ist nicht für GF Edit's gedacht, sondern eher für Selfmades. Beim GF müsst ihr es halt so weit nötig anpassen.


    Kommentare wie "ressourcenfressend", "nicht so simpel wie du sagst", (...) könnt ihr eigentlich direkt stecken lassen, da nicht jeder unbedingt "eure" Methode der Erstellung von Befehlen verwendet, wie gesagt: wer ihn haben will, kann ihn sich nehmen wer nicht, lässt es halt sein.


    #info: Falls Fehler auftauchen, dann sollte man mich bitte per PN darüber informieren.


    #Code
    #define HGELB 0xFFEC8BFF
    #define HBLUE 0x1C86EEFF
    #define ROT 0xFF0000FF
    #define GOLD 0xFFDEADFF


    #define SendClientMessage SCM


    new beraubt[MAX_PLAYERS];


    ocmd:ausrauben(playerid,params[])
    {
    new Float:X,Float:Y,Float:Z;
    new pID,string[128],string2[128];
    new rand = random(10000);
    GetPlayerPos(pID,X,Y,Z);
    if(!IsPlayerConnected(pID))return SCM(playerid,ROT,"Der Spieler ist nicht online.");
    if(!IsPlayerInRangeOfPoint(pID,2.0,X,Y,Z))return SCM(playerid,ROT,"Du bist nicht in der Nähe des Opfers.");
    if(sscanf(params,"u",pID))return SCM(playerid,HBLUE,"Benutze: /ausrauben [Spieler/ID]");
    /*if(GetPVarInt(playerid,"Job") == 5)*/
    {
    if(beraubt[playerid] == 0)
    {
    GivePlayerMoney(pID,-rand);
    GivePlayerMoney(playerid,rand);
    format(string,sizeof(string),"Du hast %s beklaut, Beute: %i$.",SpielerName(pID),rand);
    format(string2,sizeof(string),"Dir wurden %i$ von einem Taschendieb geklaut.",rand);
    SendClientMessage(playerid,GOLD,string);
    SendClientMessage(pID,GOLD,string2);
    SetTimerEx("beraubttimer",180000,0,"i",playerid);
    SendClientMessage(playerid,HGELB,"Du musst jetzt 3 Minuten warten bis du wieder jemanden ausrauben kannst.");
    beraubt[playerid] = 1;
    }
    else
    {
    SendClientMessage(playerid,ROT,"Du musst noch warten.");
    }
    }
    /*else
    {
    SendClientMessage(playerid,ROT,"Du bist kein Taschendieb.");
    }*/
    return 1;
    }


    forward beraubttimer(playerid);
    public beraubttimer(playerid)
    {
    beraubt[playerid] = 0;
    }



    Grüße, Felix

    [tabmenu][tab=Signatur,'http://bit.ly/1i4RY3v']

    Wie poste ich richtig?
    Nachdem du Google, die FAQ und die Suchfunktion erfolgreich ignoriert hast, erstellst du 2 bis 5 neue Themen in den falschen Unterforen mit lustigem Titel,
    zu vielen Ausrufezeichen und undeutlichem Text, unter dem sich jeder etwas anders vorstellen kann.



    Mr.Dubstep | GFX | Scripting | Hackerplace
    If Mr.DubStep don't have it, you don't need it.

    [tab=Spieler bei,'http://bit.ly/1db2jaf'][subtab=Hackerplace,'http://bit.ly/1bswN2T']


    Welch wunderschöner Hack ist heute vollzogen worden, könntest Du mir es denn sagen? Ein wunderschönes Browsergame, auch für Kleinigkeiten unterwegs. Erschaffe deinen eigenen Computer, nutze ihn um anderen das Geld zu rauben, schließe dich einem Clan an oder gründe selbst einen. Bleibe allein oder mit vielen Freunden.

    Einmal editiert, zuletzt von Mr.DubStep ()


  • Kann man auch noch direkt die hier hinterher drücken :P:


    GetPlayerPosEx
    stock GetPlayerPosEx(playerid, Float:x, Float:y, Float:z, Float:a)
    {
    if(IsPlayerInAnyVehicle(playerid)) GetVehiclePos(GetPlayerVehicleID(playerid), x, y, z), GetVehicleZAngle(GetPlayerVehicleID(playerid), a);
    GetPlayerPos(playerid, x, y, z), GetPlayerFacingAngle(playerid, a);
    return 1;
    }
    SetPlayerPosEx
    stock SetPlayerPosEx(playerid, Float:x, Float:y, Float:z, Float:a)
    {
    if(IsPlayerInAnyVehicle(playerid)) SetVehiclePos(GetPlayerVehicleID(playerid), x, y, z), SetVehicleZAngle(GetPlayerVehicleID(playerid), a);
    SetPlayerPos(playerid, x, y, z), SetPlayerFacingAngle(playerid, a);
    return 1;
    }

    2 Mal editiert, zuletzt von Steve™ () aus folgendem Grund: Text bearbeitet

  • Für die, die es evtl. gebrauchen könnten:


    stock GetName(playerid)
    {
    new name[MAX_PLAYER_NAME];
    GetPlayerName(playerid,name,sizeof(name));
    return name;
    }


    Anwendungsbeispiel:
    new string[128];
    format(string,sizeof(string),"Hey, mein Name lautet: %s",GetName(playerid));
    SendClientMesage(playerid,-1,string);

    3 Mal editiert, zuletzt von k4biX ()

  • GetPlayerName kannst du nicht erneut definieren, da es die Funktion bereits gibt, wenn dann so:
    stock GetName(playerid)
    {
    new name[MAX_PLAYER_NAME];
    GetPlayerName(playerid,name,sizeof(name));
    return name;
    }


  • das ganze geht am ressourcensparendsten, wenn man die namen in einer array speichert sobald ein spieler das game betrettet.