Nummernschild ans auto anbringen

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
  • Wie soll ich denn nur das machen ?


    Also bei der eingabe /anbringen soll man hinter seinem Auto stehen können und der bring dann das gekaufte Schild bei seinem auto an..


    Nur wie ich das gemacht werden soll kp
    Das das schild dann erstellt wird hab ich ja
    Aber er will mir das nicht in der Playerinfo Speichern...
    Und wie mach ich den rest ?
    habs jetzt erstmal so

    if(strcmp(cmdtext, "/anbringen", true) == 0)
    {
    if(PlayerInfo[playerid][pOwnSign] == 0) {
    new kz[25];
    new vehicid = GetPlayerVehicleID(playerid);
    new rand = random(9999);
    format(kz, sizeof(kz), "SF-%d",rand);
    SetVehicleNumberPlate(vehicid, kz);
    SetVehicleToRespawn(vehicid);
    PlayerInfo[playerid][pOwnSign] = kz;


    }
    else {
    SendClientMessage(playerid, 0x00032, "Du hast Schon ein Nummernschild an dein Auto Angebracht");
    }
    return 1;
    }


    und da sagt er dieses :


    Code
    D:\gta\gamemodes\YVL.pwn(31244) : error 006: must be assigned to an array
    Pawn compiler 3.2.3664	 	 	Copyright (c) 1997-2006, ITB CompuPhase
    
    
    
    
    1 Error.


    Zeile 31244 = PlayerInfo[playerid][pOwnSign] = kz;

  • Wie meinst du das hab pOwnSign in der enum eingefügt und auch alle restlichen werte...


    sprich bei enum pInfo


    pOwnSign,
    //rest


    Dann halt bei onPlayer Connect
    PlayerInfo[playerid][pOwnSign] = 0;


    usw..


    oder was meinst du?

  • Schreibe mal deinen Befehl so:


    if(strcmp(cmdtext, "/anbringen", true) == 0)
    {
    if(strlen(PlayerInfo[playerid][pOwnSign]) == 0)
    {
    new kz[25], vehicid = GetPlayerVehicleID(playerid), rand = random(9999);
    format(kz, sizeof(kz), "SF-%d",rand);
    SetVehicleNumberPlate(vehicid, kz);
    SetVehicleToRespawn(vehicid);
    format(PlayerInfo[playerid][pOwnSign], 25, "%s",kz);
    }
    else return SendClientMessage(playerid, 0x00032, "Du hast Schon ein Nummernschild an dein Auto Angebracht");
    }


    und in deinem enum ändere "pOwnSign," zu "pOwnSign[25],"


    und Lösche das unter OnPlayerConnect...


    mfg. :thumbup:

    ast2ufdyxkb1.png


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

  • Würdest du mir auch erklären warum da jetzt ne [25] dahin soll ?


    Folgendes Beim Connecten soll ja gesetzt werden das er Kein Schild hat also pOwnSign = 0;


    Dies wird auch in der Ini dan gesavet


    Blos wenn man sich jetzt beim Zollamt nen Schild kauft und dann Anbringen schreibt..


    Soll aus der 0 i der ini das Kennzeichen werden du Verstehen ?

  • Würdest du mir auch erklären warum da jetzt ne [25] dahin soll ?


    Der Text auf dem Nummernschild ist kein Integer, sondern ein String und diesen String musst du in einem Array speichern und deshalb die [25].

    Folgendes Beim Connecten soll ja gesetzt werden das er Kein Schild hat also pOwnSign = 0;


    Wenn du nix in das Array einträgst und die Länge mit strlen Abfragst bekommst du schon null.


    Dies wird auch in der Ini dan gesavet


    Da musst du aber jetzt aufpassen, du darfst das nicht als Integer Saven, sondern als String !


    Kann das Nummernschild nicht sogar 32 Zeichen lang sein ?


    Aber "sein" Nummernschild wird nicht solang, also muss der Array ja auch nicht so lang sein ^^


    mfg. :thumbup:

    ast2ufdyxkb1.png


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

  • Also soll ich sozusagen alle pOwnSign zu pOwnSign[25] Machen


    Vom Logischen her Kann er doch die Länge eines wertes erst überpfrüfen wenn der wert gesetzt ist...


    Also wenn unter OnPlayerConnect


    Kein pOwnSign[25] = 0;


    Existiert kann er auch keins in der PlayerInfo speichern und so die Länge gar nicht Überprüfen oder vermehr ich was?


  • Also wenn unter OnPlayerConnect


    Kein pOwnSign[25] = 0;


    Richtig, sowas ist absolut falsch !


    Existiert kann er auch keins in der PlayerInfo speichern und so die Länge gar nicht Überprüfen oder vermehr ich was?


    Wenn in einem Array nichts drinnen steht, ist die Lange 0 ^^


    mfg. :thumbup:

    ast2ufdyxkb1.png


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

  • die 0 steht nicht für die länge sonder für den wert hat der Player schon ein Schild


    0 = kein schild,


    dann erstelle eins,


    und speicher es mit PlayerInfo[playerid][pOwnSign] = kz;


    Aber wenn die 0 nicht in der ini steht... sprich ...


    Key=??????
    Level=2
    AdminLevel=1339
    Supporter=0
    DonateRank=0
    UpgradePoints=2
    OwnSign=0


    Wenn dieser wert nicht in der Ini Steht wie soll dann die if Abfrage gehen ?


    OwnSign=0 wird ja beim Connecten mit PlayerInfo[playeerid][pOwnSign] = 0;


    Gesetzt.. das heist SPieler hat kein Schild die 0 steht nicht für die Länge ..


    Weist was ich mein?

  • Wenn dieser wert nicht in der Ini Steht wie soll dann die if Abfrage gehen ?


    Sag mal, liest du eigentlich dir durch was ich dir schreibe :huh:


    Habe dir doch oben schon deinen fertigen Command geschrieben...


    Lese dir das nocheinmal in Ruhe durch und überleg ein bisschen :rolleyes:

    ast2ufdyxkb1.png


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