Problem mit Kennschild(er)

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 Com,
    Ich hoffe um schnelle Hilfe und zwar ich bekomme folgendes Problem:

    PHP
    C:\Users\tobialvarez\Desktop\Home Server\filterscripts\autohaus.pwn(594) : error 006: must be assigned to an array


    Fehlerzeile habe ich makiert :)

    CMD:kennschild(playerid, params[])
    {
    new kszahlen,kslaenge,str[4],CarID,kspreis,pID;
    if(sInfo[playerid][pFraktion] == 1)return SendClientMessage(playerid,-1,"Du bist nicht im Ordnungsamt");{
    if(sscanf(params,"iiid",CarID,kspreis,kszahlen,pID)) return SendClientMessage(playerid,-1,"Verwende: /kennschild [CarID] [Preis] [KennschildName (max. 4Zahlen)] [playerID]");
    if(pID == playerid) return SendClientMessage(playerid,-1, "Hinweis: Du kannst Dir selber kein Kennschild geben");
    if(IsPlayerInRangeOfPoint(playerid,5.0,919.3960,-1264.7429,15.1719))return SendClientMessage(playerid,-1,"Hinweis: Du bist nicht beim TÜV (Ordnungsamt Base)");
    if(kslaenge > 2) return SendClientMessage(playerid,-1,"Hinweis: Maximal nur 4 Zahlen");
    if(kspreis <= GetPlayerMoney(pID))return SendClientMessage(playerid,-1,"Hinweis: Soviel Geld hat der Spieler nicht!");
    if(kspreis > 100000 || kspreis < 1) return SendClientMessage(playerid,-1,"Hinweis: Maximal nur 100.000$");
    if(sCarInfo[CarID][pKey] != 1){
    if(sCarInfo[CarID][CarSchild] == 0){
    format(str, sizeof(str), "BZZ-%i",kszahlen);
    sCarInfo[CarID][CarSchildName] = str; //fehlerzeile
    SetVehicleNumberPlate(CarID,str);
    }else{SendClientMessage(playerid,-1,"Hinweis: Das Auto besitzt schon ein Kennschild!");}
    }else{SendClientMessage(playerid,-1,"Hinweis: Du besitzt kein Auto auf dem ausgewähltem Autoschlüsel!");}
    GivePlayerMoney(sCarInfo[CarID][sName], -kspreis);
    }
    return 1;
    }

  • sCarInfo[CarID][CarSchildName] = str; //fehlerzeile
    Das klappt nur, wenn CarSchildName und str eine identische Größe haben.
    Da str die Größe 4 von dir zugewiesen bekommen hat, muss CarSchildName auch die Größe 4 haben.
    Allerdings wird dir 4 nicht aussreichen, denn:
    format(str, sizeof(str), "DSZ-%i",kszahlen);
    DSZ- sind bereits 4 Zeichen. Dann kommt da noch eine Zahl hinzu, die per Notiz 4 Zeichen haben darf "[KennschildName (max. 4Zahlen)]" aber im Code nicht mehr als 2 erlaubt "if(kslaenge > 2)".
    Angenommen du lässt maximal einen 4-Stellige Zahl zu,dann muss str die Größe von 9 haben. "DSZ-" + "XXXX" + \0. Somit dann auch 9 für CarSchildName.


    Die Länge berechnen tust du übrigens auch nirgendwo. Geschweige denn eine Zahl für "kszahlen" berechnen ?! Da passt einiges noch nicht so recht zusammen.