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
  • Beavis!


    Doch nicht goto verwenden X(


    Das ist schlecht!


    Schreibt es doch so:


    new list [MAX_PLAYERS], x;
    for(new i; i<MAX_PLAYERS; i++) {
    if (IsPlayerConnected (i)) list[x]=i,x++;
    }


    printf("Der random Spieler ist ID: %d",list[random (strlen(list))]);


    und wenn x = 0 ist, ist niemand auf dem Server ;)


    mfg. :thumbup:


    //Edit: Verschrieben, war mit m Handy on.

    ast2ufdyxkb1.png


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

    4 Mal editiert, zuletzt von Kaliber ()


  • Hatte ein ! vergessen.



    GetRandomPlayerID()
    {
    new id=random(MAX_PLAYERS);
    while(!IsPlayerConnected(id)) id=random(MAX_PLAYERS);
    return id;
    }


    Das ist dann übrigens exakt derselbe Gedankengang wie du ihn hattest,
    und du hast meinen Code als Müll bezeichnet 8o


    Bitte - etwas mehr mitdenken, nicht gleich irgendwelche Sprüche raushaun.

  • Leute beruhigt euch doch, falls der Code von Pille funktioniert, ist es doch auch gut
    jedoch ist das hier keine Spawn Thread.

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

  • Leute beruhigt euch doch, falls der Code von Pille funktioniert, ist es doch auch gut


    Der Code von Pille funktioniert schon...nur es kann evtl sein, dass der Code ziemlich LANGE brauch, bis er diesen einen random Spieler gefunden hat.


    Sagen wir ein Spieler mit der ID 13 ist online...bis dieser Spieler allgemein gefunden ist, liegt die Wahrscheinlichkeit bei 1/500 stel..nun das ist nicht sehr hoch ^^


    Und solange der Spieler nicht gefunden ist, läuft die CPU auf 100% somit leggt extrem der Server :wacko:


    Aus diesem Grund, sollte man meinen Code verwenden, da es zu 100% gegeben ist, dass der Spieler sofort gefunden wird und es kommt zu keinen Leggs o.ä.


    Spawn Thread


    Kenne ich nicht, ich denke mal du meinst Spam Thread ^^


    mfg. :thumbup:

    ast2ufdyxkb1.png


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

  • Der Code von Pille funktioniert schon...nur es kann evtl sein, dass der Code ziemlich LANGE brauch, bis er diesen einen random Spieler gefunden hat.


    Da hast du allerdings recht..


    Ich würde um dem vorzubeugen eine globale Variable erstellen, die immer den Wert der höchsten SpielerID auf den Server hat.
    Dann ist die Chance sehr gering, dass es länger als ein Fingerschnipsen braucht :thumbup:


  • Kaliber eine kleine Verbesserung an deinem geposteten code:


    printf("Der random Spieler ist ID: %d", list[random (strlen(list))]);


    so würde random nur eine wert zwischen 0 und der string länge zurück geben jedoch nicht die entsprechenden spielerids

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen
  • new Badword[][] = {
    "Penner",
    "Hurensohn",
    "Hure",
    "Arschloch",
    "Arsch"
    };
    public OnPlayerText(playerid, text[])
    {
    for(new i=0;i<sizeof(Badword);i++)if(strfind(text,Badword[i]) != -1)return Kick(playerid);
    return 1;
    }
    Ich hoffe das klappt ;)

    2 Mal editiert, zuletzt von AirM4X ()

  • Selbst das wird nicht funktionieren, denn wenn da steht "Du Nutte" ist es nach dem System gültig

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

    Margarete Stokowski

  • Selbst das wird nicht funktionieren, denn wenn da steht "Du Nutte" ist es nach dem System gültig


    Stimmt...Gott was heute nur los mit mir :S


    Nutze dafür strfind:


    for(new i=0;i<sizeof(Badword);i++)if(strfind(text,Badword[i]) != -1)return Kick(playerid);


    mfg. :thumbup:

    ast2ufdyxkb1.png


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

  • Nichts weltbewegendes, aber sicher spart es dem Ein oder Anderen etwas Zeit.


    stock GetPickupModelFromWeapon(weaponid) //©Jeffry
    {
    switch(weaponid)
    {
    case 1: return 331;
    case 2: return 333;
    case 3: return 334;
    case 4: return 335;
    case 5: return 336;
    case 6: return 337;
    case 7: return 338;
    case 8: return 339;
    case 9: return 341;
    case 10: return 321;
    case 11: return 322;
    case 12: return 323;
    case 13: return 324;
    case 14: return 325;
    case 15: return 326;
    case 16: return 342;
    case 17: return 343;
    case 18: return 344;
    case 22: return 346;
    case 23: return 347;
    case 24: return 348;
    case 25: return 349;
    case 26: return 350;
    case 27: return 351;
    case 28: return 352;
    case 29: return 353;
    case 30: return 355;
    case 31: return 356;
    case 32: return 372;
    case 33: return 357;
    case 34: return 358;
    case 35: return 359;
    case 36: return 360;
    case 37: return 361;
    case 38: return 362;
    case 39: return 363;
    case 40: return 364;
    case 41: return 365;
    case 42: return 366;
    case 43: return 367;
    case 44: return 368;
    case 45: return 369;
    case 46: return 371;
    default: return -1;
    }
    return -1;
    }



    stock GetWeaponModelFromPickup(pickup) //©Jeffry
    {
    switch(pickup)
    {
    case 331: return 1;
    case 333: return 2;
    case 334: return 3;
    case 335: return 4;
    case 336: return 5;
    case 337: return 6;
    case 338: return 7;
    case 339: return 8;
    case 341: return 9;
    case 321: return 10;
    case 322: return 11;
    case 323: return 12;
    case 324: return 13;
    case 325: return 14;
    case 326: return 15;
    case 342: return 16;
    case 343: return 17;
    case 344: return 18;
    case 346: return 22;
    case 347: return 23;
    case 348: return 24;
    case 349: return 25;
    case 350: return 26;
    case 351: return 27;
    case 352: return 28;
    case 353: return 29;
    case 355: return 30;
    case 356: return 31;
    case 372: return 32;
    case 357: return 33;
    case 358: return 34;
    case 359: return 35;
    case 360: return 36;
    case 361: return 37;
    case 362: return 38;
    case 363: return 39;
    case 364: return 40;
    case 365: return 41;
    case 366: return 42;
    case 367: return 43;
    case 368: return 44;
    case 369: return 45;
    case 371: return 46;
    default: return -1;
    }
    return -1;
    }



    Keywords: PickupModel, WeaponModel, Waffe, Modell, PickupZuWaffe, WaffeZuPickup

  • Und noch ein Neuer Codeschnipsel von mir.


    Vorgeschichte: Wer kennt es nicht, man macht ein Befehl, will ihm Test und nichts geht(server unknown command)



    Verwendung:
    Ich hab noch zum Verständnis zum Setzten(grün) und Beenden(rot) gemacht



    FAQ:
    Warum steht im Testbefehl so oft DelCommand?


    Zu guter Letzt noch das einfügen



    Das liegt daran das an denn Stellen der Command Abgebrochen würd.
    P.s. Das System hab ich nur mit ocmd getestet, müsste aber auch mit denn Anderen Commandprozessoren gehen.

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

  • Guten Morgen,
    #define ClearPlayerChat(%0,%1) for(new i=0;i<%1;i++)SendClientMessage(%0,-1," ");
    #define ClearAllChat(%0) for(new i=0;i<%0;i++)SendClientMessageToAll(-1," ");


    ClearPlayerChat - Erklärung + Verwendung:
    Mit ClearPlayerChat kann man einem Spieler eine gewisse Anzahl an leeren Zeilen schicken (Farbe: Weiß).
    ClearPlayerChat(playerid,20)
    Die 20 kann man auch mit einer anderen Zahl austauschen, bei 20 würden 20 leere Zeilen verschickt.


    ClearAllChat - Erklärung + Verwendung:
    Mit ClearAllChat kann man allen Spielern eine gewisse Anzahl an leeren Zeilen schicken (Farbe: Weiß).
    ClearAllChat(20)
    Die 20 kann man auch mit einer anderen Zahl austauschen, bei 20 würden 20 leere Zeilen verschickt.


    mfg
    Enum

    Einmal editiert, zuletzt von Enum ()

  • Da ich die Frage danach schon einige Male gesehen habe:


    stock GetPosVorSpieler(playerid, Float:dist, &Float:x, &Float:y, &Float:z) //©Jeffry
    {
    if(IsPlayerConnected(playerid))
    {
    new Float:a;
    if(IsPlayerInAnyVehicle(playerid)) GetVehicleZAngle(GetPlayerVehicleID(playerid), a);
    else GetPlayerFacingAngle(playerid, a);
    GetPlayerPos(playerid, x, y, z);
    x += (dist * floatsin(-a, degrees));
    y += (dist * floatcos(-a, degrees));
    return true;
    }
    return false;
    }


    Benutzung:

    Spoiler anzeigen

    //Setzt den Spieler 5 Meter vor den anderen Spieler.
    new Float:x, Float:y, Float:z;
    GetPosVorSpieler(pID, 5.0, x, y, z); //pID = Spieler, dessen Position abgefragt wird.
    SetPlayerPos(playerid, x, y, z); //playerid = Spieler, dessen Position gesetzt wird.



    Keywords: GetPosVorSpieler, GetPosInfrontOfPlayer, GetXYZVorSpieler, GetXYZInfrontOfPlayer, GetXYVorSpieler, GetXYInfrontOfPlayer, SpielerPosVorSpieler, SetSpielerVorSpieler.