Switch 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 hab ein kleines "Switch" Problem (habe schon gesucht, die vorhandenen Threads haben mir aber nicht geholfen).
    Hier habe ich meinen "/spawncar" Befehl:
    ocmd:spawncar(playerid,params[])
    {
    new carID, Colour1, Colour2;
    new string[128];
    switch(carID)
    {
    case 400:{carID="Landstalker";}
    case 401:{carID="Bravura";}
    }
    new Float:x,Float:y,Float:z;
    if(!isPlayerAnAdmin(playerid,1))return SendClientMessage(playerid,Color_DarkRed,"Du bist kein Admin!");
    if(sscanf(params,"iii",carID,Colour1,Colour2))return SendClientMessage(playerid,Color_DarkRed,"/spawncar [CarID] [Colour1] [Colour2]");
    if(carID<400||carID>611)return SendClientMessage(playerid,Color_DarkRed,"Bitte eine gültige Zahl eingeben!");
    if(Colour1>127)return SendClientMessage(playerid,Color_DarkRed,"Bitte eine gültige Zahl eingeben!");
    if(Colour2>127)return SendClientMessage(playerid,Color_DarkRed,"Bitte eine gültige Zahl eingeben!");
    GetPlayerPos(playerid,x,y,z);
    CreateVehicle(carID,x-3.0,y,z,0.0,Colour1,Colour2,300);
    format(string,sizeof(string),"CarSpawn: Du hast das Auto '%s' gespawnt!",carID);
    SendClientMessage(playerid,Color_Orange,string);
    return 1;
    }


    Das Switch hier gibt eine Fehlermeldung aus:


    error 006: must be assigned to an array
    error 006: must be assigned to an array
    Fehler sind bei Zeile 7 und 8.


    Ich hoffe, ihr könnt mir weiterhelfen.^^


    Mfg Maksimo007

  • Den Code bitte mal ordentlich einrücken.


    Wo sind die angegebenen Zeilen?
    Definiere CarId mal als String und nicht als Integer...

    Chief Technology Officer (CTO)


    Interesse an folgenden Domains?

    fivemp.de - planet-zoo.de

    Jetzt anschreiben :)

  • Ein Integer kann ohne formatierung niemals ein string sein :)


    ocmd:spawncar(playerid,params[])
    {
    new carID, Colour1, Colour2,carIDname[30];
    new string[128];
    switch(carID)
    {
    case 400:{carIDname="Landstalker";}
    case 401:{carIDname="Bravura";}
    }
    new Float:x,Float:y,Float:z;
    if(!isPlayerAnAdmin(playerid,1))return SendClientMessage(playerid,Color_DarkRed,"Du bist kein Admin!");
    if(sscanf(params,"iii",carID,Colour1,Colour2))return SendClientMessage(playerid,Color_DarkRed,"/spawncar [CarID] [Colour1] [Colour2]");
    if(carID<400||carID>611)return SendClientMessage(playerid,Color_DarkRed,"Bitte eine gültige Zahl eingeben!");
    if(Colour1>127)return SendClientMessage(playerid,Color_DarkRed,"Bitte eine gültige Zahl eingeben!");
    if(Colour2>127)return SendClientMessage(playerid,Color_DarkRed,"Bitte eine gültige Zahl eingeben!");
    GetPlayerPos(playerid,x,y,z);
    CreateVehicle(carID,x-3.0,y,z,0.0,Colour1,Colour2,300);
    format(string,sizeof(string),"CarSpawn: Du hast das Auto '%s' gespawnt!",carIDname);
    SendClientMessage(playerid,Color_Orange,string);
    return 1;
    }

    Back to the roots!

  • Wenn ich CarID als String definiere, dann kommen folgende Fehlermeldungen:
    error 033: array must be indexed (variable "-unknown-")error 033: array must be indexed (variable "carID")error 035: argument type mismatch (argument 1)


    Die Fehler sind bei Zeilen: 5, 13 und 17

  • Noch als Hinweis:
    sscanf muss VOR die erste Verwendung der dort festgelegten Variablen.
    Also bevor du carID switchen kannst, musst du sscanf aufrufen.
    Und für Vehicle-IDs/Namen kannst du den identifier "k<vehicle>" verwenden - dann ergeben "/vspawn Infernus" und /vspawn 411" das gleiche.

    Ich bin Dittis Signatur.

  • Du machst switch(carID), obwohl diese gar nicht gesetzt ist , die wird erst bei sscanf gesetzt.


    Und als Tipp zu sscanf:
    sscanf(params, "k<vehicle>ii", carID, Color1, Color2)


    Dann kannst du /spawncar Infernus oder /spawncar 411 schreiben und es kommt beides auf's gleiche hinaus.

    Ich bin Dittis Signatur.

  • sry.., aber wo füge ich diesen sscanf-code dann ein?
    Edit: Habs jetzt drin, geht aber iwie nicht (Also wie mache ich das nun mit switch und das mit /spawncar Infernus zum Beispiel?)

    2 Mal editiert, zuletzt von Maksimo007 ()