[SAMMELTHREAD] Kleine Scripting Fragen

Dein Problem konnte durch einen User gelöst werden? Bedank dich bei ihm indem du seinen Beitrag als Hilfreich markierst sowie einen Daumen oben dalässt
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
    • Offizieller Beitrag

    Geht es denn auf einem Blank script?



    // @Dj-BoMa


    Hast du die Variable blankTD definiert?


    Würde dir eine weitere Änderung vorschlage, da es ja anscheinend für einen bestimmten Spieler sein soll, kannst du das ganze als PlayerTextDraw gestalten.
    Oben im Script:

    new PlayerText:blackTD[MAX_PLAYERS];

    Theoretisch könntest du das ganze denn auch unter OnPlayerConnect laden lassen und es nur Updaten und anzeigen lassen.

    ocmd:schwarz(playerid)
    {
    blackTD[playerid] = CreatePlayerTextDraw(playerid, -20.000000,2.000000,"|");
    PlayerTextDrawUseBox(playerid, blackTD[playerid] ,1);
    PlayerTextDrawBoxColor(playerid, blackTD[playerid] ,0x000000ff);
    PlayerTextDrawTextSize(playerid, blackTD[playerid] ,660.000000,22.000000);
    PlayerTextDrawAlignment(playerid, blackTD[playerid] ,0);
    PlayerTextDrawBackgroundColor(playerid, blackTD[playerid] ,0x000000ff);
    PlayerTextDrawFont(playerid, blackTD[playerid] ,3);
    PlayerTextDrawLetterSize(playerid, blackTD[playerid] ,1.000000,52.200000);
    PlayerTextDrawColor(playerid, blackTD[playerid], 0x000000ff);
    PlayerTextDrawSetOutline(playerid, blackTD[playerid], 1);
    PlayerTextDrawSetProportional(playerid, blackTD[playerid], 1);
    PlayerTextDrawSetShadow(playerid, blackTD[playerid], 1);
    PlayerTextDrawShow(playerid, blankTD[playerid], 1);
    return 1;
    }

  • Habe ich beides getan, Ordner neu Geladen, TXD Datei ins Richtiges Verzeichnis Kopiert.


    Bin langsam Ratlos ...


    @malE Kannst du mir dein Ordner mit dem Editor per Private Nachricht zukommen lassen? So wie es bei dir Funktionert. (Am besten mit der TXD Datei noch mal)

    Mit freundlichen Grüßen, BlvckAir :thumbup:

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen
  • Wie kann ich eine bestimmte Zahl an Zeichen zu einem String hinzufügen?


    Beispiel:

    Code
    new zeichen = strlen(PlayerInfo[playerid][p_Name]), str[145], format[56];
    format(format, sizeof(format), "--------------------------------", ); // In dem format soll z.B. 7x '-' eingesetzt werden.
    // strins(str, format, 0); // Wird wahrscheinlich sogar nicht benötigt.
    SendClientMessage(playerid, -1, format);

    Ich hoffe Ihr konnten mich verstehen.



    Mit freundlichen Grüßen
    malE

  • Ich möchte das die Striche die selbe Länge wie folgender String haben: 'Folgende Statistiken liegen PlayerName(%s) vor'.
    Man muss aber beachten das der PlayerName immer unterschiedlich lang ist. Deswegen will ich so viele Striche dazu addieren, wie der PlayerName lang ist.

  • Du machst es dann z.b so

    Code
    switch(strlen(GetPlayerName(playerid))
    {
       Case 1: hier ist der Name 1 zeichen lang
       Case 2:hier ist der Name 2 zeichen lang
       Case 3: hier ist der Name 3 zeichen lang
    
    
    }

    so kannst machst du es und da wo steht
    hier ist der Name 1 zeichen lang
    Formatierst du es mit 1 bei 2 mit 2 und immer so weiter

  • @malE
    Du kannst das eigentlich ziemlich einfach erreichen:


    Code
    new langerText[] = "ICH BIN DER STRING";
    new striche[256];
    printf("%s",langerText);
    for(new i = 0; i < strlen(langerText); i++)
    {
        strcat(striche, "-"); //Strich Hinzufügen
    }
    printf("%s",striche);

    Habs probiert sollte passen. Musst es nurnoch auf deine Variablen anpassen.

    seekrass approved
    4x vom Discord geflogen


    shoxinat0r 4
    dennismitzwein 2
    Trooper[Y] 2
    maddin 1
    Unbekannter Discord Kick 2
  • Hi, kann mir jemand mein Befehl korrigieren? Habe zuvor noch nie mit der Funktion gearbeitet und die scheint mir kompliziert zu sein obwohl ich mir ziemlich sicher bin das es simple ist.
    Habe vor per Befehl alle Spieler IDs durchzugehen und möchte auflisten wer alles eine Sniper besitzt.

    CMD:sniper(playerid,params[])
    {
    new weapons[34][2];
    new string[128];
    for (new i = 0; i <= 25; i++)
    {
    GetPlayerWeaponData(i, 6, weapons[i][0], weapons[i][1]);
    format(string, sizeof(string), "%s hat eine Sniper", weapons); //Was soll ich statt weapons einfügen :D?
    SendClientMessage(playerid, -1, string);
    }
    return 1;
    }


    Mit freundlichen Grüßen
    JustMe.77 8)

  • Hi, kann mir jemand mein Befehl korrigieren? Habe zuvor noch nie mit der Funktion gearbeitet und die scheint mir kompliziert zu sein obwohl ich mir ziemlich sicher bin das es simple ist.
    Habe vor per Befehl alle Spieler IDs durchzugehen und möchte auflisten wer alles eine Sniper besitzt.
    CMD:sniper(playerid,params[]){ new weapons[34][2]; new string[128]; for (new i = 0; i <= 25; i++) { GetPlayerWeaponData(i, 6, weapons[i][0], weapons[i][1]); format(string, sizeof(string), "%s hat eine Sniper", weapons); //Was soll ich statt weapons einfügen :D? SendClientMessage(playerid, -1, string); } return 1;}




    CMD:sniper(playerid,params[])
    {
    new weapons[34][2];
    new string[128];
    for (new i = 0; i < MAX_PLAYERS; i++)
    {
    GetPlayerWeaponData(i, 6, weapons[i][0], weapons[i][1]);


    if(weapons[i][0] == 34)
    {
    format(string, sizeof(string), "%s hat eine Sniper", SpielerName(i));
    SendClientMessage(playerid, -1, string);
    }
    }
    return 1;
    }


    stock SpielerName(playerid)
    {
    new getspName[MAX_PLAYER_NAME];
    GetPlayerName(playerid, getspName, sizeof(getspName));
    return getspName;
    }


    //ungetestet

  • Funktioniert schon um einiges besser aber noch nicht perfekt. Mir wird nur von einem Spieler angezeigt das er eine Sniper besitzt vom zweiten nicht.
    Außerdem habe ich das bisschen erweitert und es soll nur angezeigt werden wenn man eine Sniper UND eine Shotgun besitzt, doch das scheint auch nicht zu funktionieren, was ist falsch?



    CMD:sniper(playerid,params[])
    {
    new weapons[34][2];
    new string[128];
    if(!CheckAdminName(playerid)) return 0;
    for (new i = 0; i < MAX_PLAYERS; i++)
    {
    GetPlayerWeaponData(i, 6, weapons[i][0], weapons[i][1]);
    if(weapons[i][0] == 34 && 25)
    {
    format(string, sizeof(string), "{%06x}%s {00FF00}hat eine Sniper und eine Shotgun.", GetPlayerColor(i) >>> 8, SpielerName(i));
    SendClientMessage(playerid, -1, string);
    return 1;
    }
    else
    {
    SendClientMessage(playerid,-1,"{00FF00}Niemand besitzt eine Sniper und eine Shotgun.");
    return 1;
    }




    }
    return 1;
    }


    Mit freundlichen Grüßen
    JustMe.77 8)

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