Nützliche Codeschnipsel

In 10 Minuten startet der nächtliche Backupvorgang! Es kann währenddessen (ca. 10 Minuten) zu Einschränkungen bei der Nutzung des Forums kommen
Weitere Infos findet ihr im Thema Backup des Forums
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
  • Und wenn ich für jeden einzelnen CMD das angleiche, d.h. CMD's mit langen Texten ( wie /adminchat ... ) größere Größen und bei CMD's mit vielen Parametern (Darunter zahlen) kleinere Größen nehmen? Spart das was oder eigtl. nicht?


    // Edit: Ich gebs auf :pinch: bleibe beim Alten :)

    Einmal editiert, zuletzt von KornChief ()

  • Ja dann spart es durchaus was aber nicht jeder cmd sieht gleich aus , verstehst wie ich es meine ?
    Du wirst mehr cmd's haben die auf einem Kurzen Prinzip arbeiten als du cmd's haben wirst die mit sehr vielen Params arbeiten

    Mfg. BlackFoX_UD_ alias [BFX]Explosion


  • HAHA das ist cool :D
    if(strcmp(cmd, "/haha", true) == 0)
    {
    tmp = strtok(cmdtext, idx);
    if(!strlen(tmp))
    {
    SendClientMessage(playerid, COLOR_WHITE, "NUTZE: /haha [playerid]");
    }
    new target;
    target = ReturnUser(tmp);
    if (target == playerid)
    {
    SendClientMessage(target, COLOR_WHITE, "Du kannst dich nicht selber auslachen.");
    return 1;
    }
    if(IsPlayerConnected(target))
    {
    if(target != INVALID_PLAYER_ID)
    {
    GetPlayerName(playerid, sendername, sizeof(sendername));
    format(string, sizeof(string), "* %s lacht dich aus!", sendername);
    SendClientMessage(target,COLOR_PURPLE,string);
    return 1;
    }
    }
    return 1;
    }


  • The kiLLercLicK


    Also alleine das wollte ich nicht posten, deswegen mach ich auch nen codeschnipsel rein. Ist bisschen merkwürdig, und auch nicht sehr nützlich aber geil XD :thumbup:
    Es heißt KillerClick (0.3). Also man kann mit dem command "/killerclickon" den killerclick mode einschalten (mit /killerclickoff auschalten)(die killerclick cmds benötigen Rcon-Rechte). Dann klickt man auf einen spieler und der spieler stirbt, und der killerclick mode wird automatisch wieder ausgeschaltet. Und wenn der killerklick mode nicht eingeschaltet ist, kommen infos über den geklickten spieler (Name, Level, Skin ID). Das mit den infos geht bei allen, nicht nur bei admins ^^.


    Unter "public OnPlayerCommandText" einfügen:

    //---------------------------: KillerClick bY PSPgamer | Foxhound :-----------------------------//
    if (strcmp(cmd, "/killerclick", true) == 0)
    {
    if(IsPlayerAdmin(playerid))
    {
    if(KillerClick == 0)
    {
    KillerClick = 1;
    SendClientMessage(playerid, COLOR_WHITE, "KillerClick aktiviert!");
    }
    else if(KillerClick == 1)
    {
    KillerClick = 0;
    SendClientMessage(playerid, COLOR_WHITE, "KillerClick deaktiviert!");
    }
    }
    else
    {
    SendClientMessage(playerid, COLOR_GREY, "Du bist kein RCON-Admin !");
    }
    return 1;
    }


    Unter "public OnPlayerClickPlayer" einfügen:

    new pname[MAX_PLAYER_NAME];
    new cpname[MAX_PLAYER_NAME];
    GetPlayerName(playerid, pname, sizeof(pname));
    GetPlayerName(clickedplayerid, cpname, sizeof(cpname));
    if(KillerClick == 1)
    {
    SetPlayerHealth(clickedplayerid, 0.0);
    KillerClick = 0;
    SendClientMessage(playerid, COLOR_WHITE, "Spieler %s wurde KillClicked.");
    SendClientMessage(playerid, COLOR_WHITE, "KillerClick deaktiviert!");
    printf("[KillerClick] %s KillerClicked %s.",pname,cpname);
    return 1;
    }
    else
    {
    SendClientMessage(playerid, COLOR_ORANGE, "|-----------------------+");
    SendClientMessage(playerid, COLOR_ORANGE, "|- Name: %s",cpname);
    SendClientMessage(playerid, COLOR_ORANGE, "|- Level: %d",PlayerInfo[clickedplayerid][pLevel]);
    SendClientMessage(playerid, COLOR_ORANGE, "|- Skin: %d",PlayerInfo[clickedplayerid][pChar]);
    SendClientMessage(playerid, COLOR_ORANGE, "|-----------------------+");
    return 1;
    }


    Wie gesagt, ist vllt nicht so sehr nützlich aber lustig :D. und wer nicht den killerclick mode sondern nur die infos benutzen möchte, hier die codes ;) :


    Unter "public OnPlayerClickPlayer" einfügen:

    new pname[MAX_PLAYER_NAME];
    new cpname[MAX_PLAYER_NAME];
    GetPlayerName(playerid, pname, sizeof(pname));
    GetPlayerName(clickedplayerid, cpname, sizeof(cpname));
    SendClientMessage(playerid, COLOR_ORANGE, "|-----------------------+");
    SendClientMessage(playerid, COLOR_ORANGE, "|- Name: %s",cpname);
    SendClientMessage(playerid, COLOR_ORANGE, "|- Level: %d",PlayerInfo[clickedplayerid][pLevel]);
    SendClientMessage(playerid, COLOR_ORANGE, "|- Skin: %d",PlayerInfo[clickedplayerid][pChar]);
    SendClientMessage(playerid, COLOR_ORANGE, "|-----------------------+");
    return 1;

    5 Mal editiert, zuletzt von FoxHound ()

  • Negative Zahlen in das Positive umwandeln , es ist zwar alles eine Frage der Mathematik aber so manch einer bleibt schon bei solch einfachen Dingen hängen :

    new negativ = -7;
    new positiv = (negativ-negativ*2);


    der Negative Wert wird nun Minus die Negative & *2 genommen und so wird einmal die Gesamtsumme hin zugegeben und dann gleich noch einmal ,
    so hat man die Zahl im Gesamten nochmal im + Bereich bzw. Positiven Bereich


    So noch ein Tipp zu eigenen Geld Systemen & Summen ... Bsp:

    stock Gelddazu(playerid,geld)
    {
    spielergeld[playerid]+=geld;
    }


    So kann das Geld Minus & Plus genommen werden , einige verwirrt diese Methode immer jedoch ist es die , die Funktioniert,
    wer nicht wirklich was begreift der sollte nochmal ein paar Mathematik regeln nachholen.


    Schluss Satz ... vllt hilft es einigen , so manches schneller zu begreifen


    //é : Sorry mein Browser hat gemuckt und was weggeschnitten ^^

    Mfg. BlackFoX_UD_ alias [BFX]Explosion


    Einmal editiert, zuletzt von BlackFoX ()

  • Wieder was von mir , eine Mini Funktion um Zufallszahlen im String Format zu generieren , länge der Zahl ist bestimmbar...


    stock RandomStr(len)
    {
    new zahlx[128];
    new zahlen[][0] = {"1","2","3","4","5","6","7","8","9"};
    for(new i = 0;i<len;i++)
    {
    zahlx[i] = zahlen[random(sizeof(zahlen))][0];
    }
    return zahlx;
    }



    Beispiel
    printf("%s",RandomStr(12));


    Have Fun

    Mfg. BlackFoX_UD_ alias [BFX]Explosion


  • Jop, und von mir auch mal wieder was :>


    IsPlayerInNaehe - Prüft ob ein Player in der Nähe von einem Radius ist.
    stock IsPlayerInNaehe(playerid,Float:radius)
    {
    new Float:xx,Float:yy,Float:zz;
    for(new spieler = 0; spieler <= MAX_PLAYERS; spieler++)
    {
    GetPlayerPos(spieler,xx,yy,zz);
    if(PlayerToPoint(radius,playerid,xx,yy,zz)) //Ist noch von 0.2x aber koennt ja des andere verwenden :>
    return 1;
    }
    return 0;
    }


    PlayerImWasser - Prüft ob der Player im Wasser ist
    stock PlayerImWasser(playerid) {
    new Float:x1, Float:y1, Float:z1;
    GetPlayerPos(playerid,x1,y1,z1);
    if(z1<0) return 1; //kann man nach belieben einstellen :>
    return 0;
    }


    Have Fun too ! xD


    //Edit:
    Von Monte:
    BlackFoX: man kann eine negative zahl viel leichter in eine positive zahl umwandeln, indem man die negative zahl mit -1 multipliziert..

    2 Mal editiert, zuletzt von [PRT]The_Gamer ()

  • Naja bei beiden Varianten muss man jedoch wissen, dass es sich um eine negative Zahl handelt - was ist wenn man sich nicht sicher ist? Oder beides möglich wäre?


    new ImmerPositiv = floatsqroot(X^2);

  • stock RandomStr(len)
    {
    new zahlx[80];
    new charz[] = {'1','2','3','4','5','6','7','8','9','A','B','C','D',
    'E','F','G','H','I','J','K','L','M','N','O','P','Q',
    'R','S','T','U','V','W','X','Y','Z'};
    for(new i = 0;i<len;i++)
    {
    zahlx[i] = charz[random(sizeof(charz))];
    }
    return zahlx;
    }


    Hab meine RandomStr Funktion nochmal verbessert.


    - Text Größe auf 80 reduziert
    - Text in Zeichen gewandelt
    - Buchstaben hinzugefügt


    Gebrauch ...
    printf("%s",RandomStr(8));


    Beispiel Ausgabe...
    Q5G89SCM


    Wozu...


    Kann für viele System verwendet werden ...


    - Telefon Systeme
    - Erweiterte Multi User Bank Account Systeme
    - Auto Türen mit Passwort


    usw. ^^

    Mfg. BlackFoX_UD_ alias [BFX]Explosion


  • Was ist wenn man (auch wenn unwahrscheinlich) mehr als 80 Zeichen braucht?
    Kann man nicht einfach das nehmen oder ist das falsch?
    new zahlx[(len+1)];


    Ich scripte NICHT mehr, ich möchte mit NIEMANDEM einen Server aufmachen habe auch NICHTS mehr mit LoH zu tun, also lasst es mit den PNs!

  • Ich vermute "len+1" soll eben den Null-Charakter mit einbeziehen, und dem String auch wirklich die Länge geben, die in der Parameterangabe der Funktion steht.

  • Falsch die länge stimmt auch so , wenn ich 8 im Parameter angebe kommen auch 8 stellen dabei raus, nicht mehr & nicht weniger,
    wer es nicht glaubt soll sich dann selber überzeugen.


    //é:
    Außerdem hätte
    var[var2++]
    gereicht , wenn es denn wirklich nötig wäre ^^

    Mfg. BlackFoX_UD_ alias [BFX]Explosion


    Einmal editiert, zuletzt von BlackFoX ()

  • stock PlayerNearPlayer(Float:radius, playerid, targetid)
    {
    new Float:fpX, Float:fpY, Float:fpZ;
    GetPlayerPos(targetid, fpX, fpY, fpZ);
    return IsPlayerInRangeOfPoint(playerid, radius, fpX, fpY, fpZ);
    }


    Das ist eine Funktion, um zu Überprüfen, ob zwei Spieler neben sich in einen bestimmten Radius gegenüber befinden.

    Einmal editiert, zuletzt von d30af26d ()

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