strmid Problem

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
  • Hey,
    ich arbeite momentan an einem Kofferraum System, welches Pizza´s speichern kann. In dem String TrunkInvGetRowItem[playerid][r] den ich ganz oben im Script so deklariert habe:


    Code
    #define MAX_ROWS 10 //Kofferraum
    new TrunkInvGetRowItem[128][MAX_PLAYERS][MAX_ROWS];

    speicher ich die Namen der Items, um bei OnPlayerClickPlayerTextDraw herauszufinden welches Item er momentan angeklickt hat:i


    Code
    if(strcmp(TrunkInvGetRowItem[playerid][InvRow], "Margherita", true) == 0)

    Wenn ein Spieler den Kofferraum öffnet wird folgende Funktion ausgeführt: https://pastebin.com/Hmv1HYRy


    Mein Problem ist, das wenn eine Margherita Pizza im Kofferraum ist & darunter eine Salami Pizza, der Name der Margherita Pizza (sprich TrunkInvGetRowItem[playerid][0]) aufeinmal zu "MargheritaSalami" wird. Genauso ist es auch wenn keine Salami Pizza vorhanden ist und darunter z.B. eine Hawaii Pizza ist, dann ändert sich der String zu "MargheritaHawaii". Wie ihr im pastebin seht hab ich schon einige printf´s geschrieben um zu testen wo der Fehler liegt. Der String wird in Zeile 28 zu "MargheritaSalami". Ich kann es mir wirklich nicht erklären. Ist es falsch strmid zu nutzen? Ich hatte es auch mit format(TrunkInvGetRowItem[playerid][r], sizeof(TrunkInvGetRowItem[playerid][r]), "Margherita"); probiert, das funktioniert jedoch nicht.

  • Beitrag von Fabi.StaR ()

    Dieser Beitrag wurde vom Autor gelöscht ().
  • Also mal vorne weg, schau mal deine Deklaration an:



    new TrunkInvGetRowItem[128][MAX_PLAYERS][MAX_ROWS];


    und nutzen tust du sie so:


    TrunkInvGetRowItem[playerid][r]


    Naa fällt dir ein Fehler auf? :)


    Du nutzt dein Array, als ob du es so deklariert hättest:


    new TrunkInvGetRowItem[MAX_PLAYERS][MAX_ROWS][128];

    Ist es falsch strmid zu nutzen?

    Sagen wir mal nicht falsch, aber ungünstig.


    Besser wäre hier, wie du schon erwähnt hast format oder noch besser, da dein String hier konstant ist einfach direkt setzen lassen.


    Der Grund, warum dein Format nicht funktioniert ist, dass du sizeof so verwenden musst, wenn du die 3te Dimension abfragst: sizeof(TrunkInvGetRowItem[][])


    Aber wie schon gesagt, einfach direkt setzen ist ja kein Problem:


    TrunkInvGetRowItem[playerid][r] = "Margherita";

    ast2ufdyxkb1.png


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