must be assigned to an array ?

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
  • Hallo ich habe was gemacht und wollte das der Server ein text speichert.


    if(strcmp(cmd, "/changeplate", true) == 0)
    {
    new vehiclefid = GetPlayerVehicleID(playerid);
    if(GetPlayerState(playerid) != PLAYER_STATE_DRIVER) return 0;
    if(!cmdtext[13])return SendClientMessage(playerid,COLOR_YELLOW,"Du musst mindestens eine Zahl, oder einen Buchstaben eingeben!(Z.b /changeplate Text)");
    if(IsPlayerInAnyVehicle(playerid) == 1)
    {
    new string5[9];
    format(string5,sizeof(string5),"%s",cmdtext[13]);
    SetVehicleNumberPlate(vehiclefid, string5);
    Carlist[playerid][Schild] = cmdtext[13];
    SetVehicleToRespawn(vehiclefid);
    /*GetPlayerPos(playerid,X,Y,Z);
    SetVehiclePos(vehiclefid,X,Y,Z);*/
    PutPlayerInVehicle(playerid,vehiclefid,0);
    }
    else
    {
    SendClientMessage(playerid,COLOR_GREEN,"Du musst dafür in einem Auto sitzen.");
    }
    return 1;
    }


    so hab ich das gemacht doch es geht nicht.


    Und diese Methode auch nicht bekomme da ein error.


    format(string5,sizeof(string5),"%s",cmdtext[13]);
    SetVehicleNumberPlate(vehiclefid, string5);
    Carlist[playerid][Schild] = string5;



    //E:Titel geändert.

    Einmal editiert, zuletzt von Tonimakaroni ()

  • Du fügst in deinem format-Befehl nur die 13. Zelle des Strings ein, den ganzen Rest nicht. Es wird also nur der 1. Buchstabe deines neuen Plates gespeichert.
    Du kannst Strings nicht gleichsetzen, du musst sie mit dem Format-Befehl verändern.
    Bist du dir sicher, dass in deinem Carlist-Array die Schild-Variable ein String ist?
    Wenn nein, wäre das eine Erklärung für den Error, die Meldung würde uns allerdings helfen.

  • Die Meldung ist diese,


    C:\Users\Lila\Desktop\samp\gamemodes\script.pwn(19069) : error 006: must be assigned to an array
    Carlist[playerid][Schild] = string5;//die Zeile :)


    Danke schon mal in Vorraus :D

  • Steht doch oben alles wie groß was ist etc :)


    aber hier nochmal
    new string5[9];
    Mehr wird ja normal nicht benötigt oder ?

  • 13 Mehr sollte es nicht sein ich habe jetzt mal den String auf 15 Gemacht aber immer noch Error

  • Immer noch Error :(
    Habe es nun auf 20 Stehen weil 128 oder 16 Nicht geht aber 20 Ist genau so Fehler haft :|



    //E:Zahl verändert.

  • ich bin mir grad zwar net ganz sicher versuchs mal so:


    Carlist[playerid][Schild] = string5;


    //edit so kommt ja der error eben erst gesehen haben mir die zeile von oben kopiert
    hmm habe auch grad keine ahnung mehr weiß auch nicht alles ^^ sry

  • ich bin mir grad zwar net ganz sicher versuchs mal so:


    Carlist[playerid][Schild] = string5;


    //edit so kommt ja der error eben erst gesehen haben mir die zeile von oben kopiert
    hmm habe auch grad keine ahnung mehr weiß auch nicht alles ^^ sry


    Und ich dachte Schon warum ich das Gleiche nochmal einfügen soll :D:D:D
    naja Danke dir :)

  • Auch nicht :/ Scripten kann schon schwer sein :|



    //E: Carlist[playerid][Schild] = vehiclefid; Das geht mal schauen ob er es auch Speichert :D
    //E2:Leider nicht das Steht in der Datei dann( Schild=„ )
    //E3:Änderung :)
    //E4:Habe es nun mit Dialog versucht aber immer noch - . - Der Fehler.
    //E5:Er speichert ab aber es geht halt nur wenn ich mit cmdtext mache doch da Speichert er nur den Anfang Bustabe ab.

    4 Mal editiert, zuletzt von Tonimakaroni ()

  • Du weisst aber schon,dass
    Carlist[playerid][Schild]
    ein Array bzw String sein muss?


    Carlist[playerid][Schild][ SIZE ] musst genau so groß sein,wie das Array, das ihm zugewiesen wird.
    Angenommen es ist bei dir 10 Zellen groß, dann müsste der Code so aussehen:
    new sStr[10];
    format(sStr,sizeof(sStr),"%s",cmdtext[13]);
    SetVehicleNumberPlate(vehiclefid, sStr);
    Carlist[playerid][Schild] = sStr; // nicht cmdtext, denn damit wird es niemals funk. da die größe unbekannt ist
    SetVehicleToRespawn(vehiclefid);

  • Kann ja nichts dafür das ich alles auf den ersten mal kann :|


    also so ?


    enum ahCar
    {
    Typ,
    Float:X,
    Float:Y,
    Float:Z,
    Float:Rotation,
    Status,
    Lock,
    Carid,
    Paintjob,
    Farbe1,
    Farbe2,
    mod1,
    mod2,
    mod3,
    mod4,
    mod5,
    mod6,
    mod7,
    mod8,
    mod9,
    mod10,
    mod11,
    mod12,
    mod13,
    mod14,
    mod15,
    mod16,
    mod17,
    Autohaus,
    Schild[10]
    };]



    //E: Habe nun keine Errors etc Ebend testen
    //E2:Es geht nun so weit doch Ich speicher es so
     format(var, 256, "Schild=%i\n", Carlist[playerid][Schild]); fwrite(CarFile, var);
    Weil es anders nicht geh , doch so lädt er noch ein Bustabe/Zahl aber wenn ich es so
    format(var, 256, "Schild=%d\n", Carlist[playerid][Schild]); fwrite(CarFile, var);
    oder so
    format(var, 256, "Schild=%s\n", Carlist[playerid][Schild]); fwrite(CarFile, var);
    Lädt er die Schilder nicht und macht sie nicht an das Auto.

    2 Mal editiert, zuletzt von Tonimakaroni ()

  • Wenn überhaupt dann die letzte Methode.
    %i ist der Platzhalter für Integers, %s für Strings.
    format(var, 256, "Schild=%s\r\n", Carlist[playerid][Schild]); fwrite(CarFile, var);


    Wieso es nicht zu laden geht,weiss Ich nicht.Du hast ja nirgendwo gezeigt wie du den Kram aus der Datei ausließt.

  • Also so lädt er aus der Datei.


    if(Carlist[playerid][Schild]!=-1) { SetVehicleNumberPlate(carid,Carlist[playerid][Schild]); }
    oder so
    SetVehicleNumberPlate(carid,Carlist[playerid][Schild]);



    //E:So sieht das wenn mann sich einloggt aus


    else if(strcmp(key,"Schild",true)==0) { Carlist[playerid][Schild]=strval(ini_GetValue(Data)); }

    Einmal editiert, zuletzt von Tonimakaroni ()

  • Du solltest dir vielleicht mal deinen Code anschauen und definitiv die Grundlagen lernen.


    else if(strcmp(key,"Schild",true)==0) { Carlist[playerid][Schild]=strval(ini_GetValue(Data)); }
    strval() hat da nichts zu suchen.Denn du willst nicht eine Zahl sondern einen String.