X,Y,Z - Fraktionsautos werden nicht eingetragen.

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 Community,


    ich habe versucht einen Befehl zu machen der mir ermöglich Ingame Fraktions-Autos zu erstellen.
    So sieht der Befehl aus:


    ocmd:cfc(playerid,params[])
    {
    #pragma unused params
    new carid, color1, color2, frakid;
    new Float: X, Float: Y, Float: Z, Float: Angle;
    new Float: vX, Float: vY, Float: vZ, Float: vAngle;
    if(!IsPlayerConnected(playerid)) return SendClientMessage(playerid,COLOR_HELLGRAU,"Nicht Online!");
    if(SpielerInfo[playerid][pAdmin] < 3) return SendClientMessage(playerid,COLOR_BESCH,"Du darfst diesen Befehl nicht benutzen!");
    if(sscanf(params,"diid",carid,color1,color2,frakid)) return SendClientMessage(playerid,COLOR_HELLGRAU,"Benutze: /cfc [VehicleID] [Farbe 1] [Farbe 2] [FraktionID]");
    GetPlayerPos(playerid,X,Y,Z);
    GetVehiclePos(carid,vX,vY,vZ);
    CreateVehicle(carid,X,Y,Z,Angle,color1,color2,-1);
    fCarID[playerid] = carid;
    CreateFraktionAuto(carid,frakid);
    FCarInfo[cFarbe1] = color1;
    FCarInfo[cFarbe2] = color2;
    FCarInfo[cPosX] = vX;
    FCarInfo[cPosY] = vY;
    FCarInfo[cPosZ] = vZ;
    FCarInfo[cPosAngle] = vAngle;
    SaveFCar(carid);
    return 1;
    }


    So mein Enum
    enum FCarDaten {
    cCarID,
    cFarbe1,
    cFarbe2,
    cFraktionID,
    Float: cPosX,
    Float: cPosY,
    Float: cPosZ,
    Float: cPosAngle
    }
    new FCarInfo[FCarDaten];


    Save & Load & Create
    stock SaveFCar(carid)
    {
    new Float:Posi[4];
    GetVehiclePos(carid,Posi[0],Posi[1],Posi[2]);
    mysql_SetInt("FraktionAutos", "FraktionID", FCarInfo[cFraktionID], "CarID", FCarInfo[cCarID]);
    mysql_SetInt("FraktionAutos", "CarID", FCarInfo[cCarID], "CarID", FCarInfo[cCarID]);
    mysql_SetInt("FraktionAutos", "pFarbe1", FCarInfo[cFarbe1], "CarID", FCarInfo[cCarID]);
    mysql_SetInt("FraktionAutos", "pFarbe2", FCarInfo[cFarbe2], "CarID", FCarInfo[cCarID]);
    mysql_SetFloat("FraktionAutos", "PosX", Posi[0], "CarID", FCarInfo[cCarID]);
    mysql_SetFloat("FraktionAutos", "PosY", Posi[1], "CarID", FCarInfo[cCarID]);
    mysql_SetFloat("FraktionAutos", "PosZ", Posi[2], "CarID", FCarInfo[cCarID]);
    mysql_SetFloat("FraktionAutos", "PosAngle", Posi[3], "CarID", FCarInfo[cCarID]);
    }



    stock CreateFraktionAuto(fCarID123, frakid)
    {
    new query[256];
    format(query, sizeof(query), "INSERT INTO `FraktionAutos` (`CarID`, `FraktionID`) VALUES ('%d', '%d')", fCarID123, frakid);
    mysql_query(query);
    return true;
    }


    stock LoadFCar(carid)
    {
    new Float:Posi[4];
    GetVehiclePos(carid,Posi[0],Posi[1],Posi[2],Posi[3]);
    FCarInfo[cFraktionID] = mysql_SetInt("FraktionAutos", "FraktionID", "CarID", FCarInfo[cCarID]);
    FCarInfo[cPosX] = mysql_SetInt("FraktionAutos", "CarID", "CarID", FCarInfo[cCarID]);
    FCarInfo[cFarbe1] = mysql_SetInt("FraktionAutos", "Farbe1", "CarID", FCarInfo[cCarID]);
    FCarInfo[cFarbe2] = mysql_SetInt("FraktionAutos", "Farbe2", "CarID", FCarInfo[cCarID]);
    FCarInfo[cPosX] = mysql_GetFloat("FraktionAutos", "PosX", "CarID", FCarInfo[cCarID]);
    FCarInfo[cPosY] = mysql_GetFloat("FraktionAutos", "PosY", "CarID", FCarInfo[cCarID]);
    FCarInfo[cPosZ] = mysql_GetFloat("FraktionAutos", "PosZ", "CarID", FCarInfo[cCarID]);
    FCarInfo[cPosAngle] = mysql_GetFloat("FraktionAutos", "PosAngle", "CarID", FCarInfo[cCarID]);
    }


    Es wird in die Tabelle nur die Fraktions-ID sowie die Vehicle ID eingetragen..
    Farben sowie x,y,z,angle bleiben weiterhin auf 0....
    In der Tabelle sind auch die x,y,z und angle auf "Float" gesetzt...


    Ich hoffe mir kann da jemand weiterhelfen.

    Einmal editiert, zuletzt von [Markus] ()

  • Du gehst das falsch an. So wie du bereits dein Array aufgebaut hast, wird das leider nichts. Du benötigst ein Multidimensionales Array. So, wie du es jetzt hast, könntest du dir höchsten ein Auto erstellen (andernfalls werden die Variablen überschrieben).
    Also dann statt


    new FCarInfo[FCarDaten];


    dies hier


    new FCarInfo[MAX_VEHICLES][FCarDaten];


    Demnach müsstest du dann das Erstellen/Laden/Speichern anpassen (Probier es erstmal nochmal selber). Falls du dabei Hilfe benötigst, schreib einfach nochmal. :thumbup:


    Edit:
    Außerdem noch folgendes:



    if(sscanf(params,"diid",carid,color1,color2,frakid)) return SendClientMessage(playerid,COLOR_HELLGRAU,"Benutze: /cfc [VehicleID] [Farbe 1] [Farbe 2] [FraktionID]"); //carid ist wahrscheinlich die Model ID
    GetPlayerPos(playerid,X,Y,Z);
    GetVehiclePos(carid,vX,vY,vZ);//?? Von der Model ID brauchst du nicht die Pos. Falls die Model ID zufällig ein vorhandenes Vehicle ist..Kriegst du die Pos davon
    CreateVehicle(carid,X,Y,Z,Angle,color1,color2,-1);
    fCarID[playerid] = carid;//Wenn müsstest du die tatsächliche vehicleid, nicht das Model setzen, bringt so nichts
    CreateFraktionAuto(carid,frakid);//siehe oben
    FCarInfo[cFarbe1] = color1;
    FCarInfo[cFarbe2] = color2;
    FCarInfo[cPosX] = vX;//falsche pos
    FCarInfo[cPosY] = vY;//falsche pos
    FCarInfo[cPosZ] = vZ;//falsche pos
    FCarInfo[cPosAngle] = vAngle;//nirgendwo gesetzt

    Einmal editiert, zuletzt von UncleSub ()

  • Danke erstmal :)
    Und was soll ich aus FCarInfo[cFarbe1] = color1; dann machen?

  • Mir ist außerdem aufgefallen, dass du Model ID's und vehicleid's verwechselst. Du musst beim erstellen des Fahrzeuges die carid in einer Variable speichern und dann die anderen Variablen unter diesem Index speichern.
    Bsp.:

    new carid = CreateVehicle(...);
    FCarInfo[carid][cFarbe1] = color1;

  • Okay, ich habe alles umgestellt dennoch wird X,Y,Z und die Farben nicht gespeichert..


    Also X,Y,Z wird nun gespeichert :)
    Nur noch paar Bugs^^
    Aber die Farben werden nicht gespeichert...


    Also jetzt wird die CarID auch nicht richtig eingefügt statt 522 (NRG) wird eine 8 oder 9 eingefügt..
    X,Y,Z,Angle und Farben sowieso nicht mehr..


    Code:
    ocmd:cfc(playerid,params[])
    {
    #pragma unused params
    new carid, color1, color2, frakid;
    new Float: X, Float: Y, Float: Z, Float: Angle;
    new Float: vX, Float: vY, Float: vZ, Float: vAngle;
    if(!IsPlayerConnected(playerid)) return SendClientMessage(playerid,COLOR_HELLGRAU,"Nicht Online!");
    if(SpielerInfo[playerid][pAdmin] < 3) return SendClientMessage(playerid,COLOR_BESCH,"Du darfst diesen Befehl nicht benutzen!");
    if(sscanf(params,"iiii",carid,color1,color2,frakid)) return SendClientMessage(playerid,COLOR_HELLGRAU,"Benutze: /cfc [VehicleID] [Farbe 1] [Farbe 2] [FraktionID]");
    GetPlayerPos(playerid,X,Y,Z);
    GetVehiclePos(carid,vX,vY,vZ);
    carid = CreateVehicle(carid,X,Y,Z,Angle,color1,color2,-1);
    CreateFraktionAuto(carid,frakid);
    FCarInfo[carid][cCarID] = carid;
    FCarInfo[carid][cFarbe1] = color1;
    FCarInfo[carid][cFarbe2] = color2;
    FCarInfo[carid][cPosX] = vX;
    FCarInfo[carid][cPosY] = vY;
    FCarInfo[carid][cPosZ] = vZ;
    FCarInfo[carid][cPosAngle] = vAngle;
    SaveFCar(carid);
    return 1;
    }


    stock SaveFCar(carid)
    {
    new Float:Posi[4];
    GetVehiclePos(carid,Posi[0],Posi[1],Posi[2]);
    mysql_SetInt("FraktionAutos", "FraktionID", FCarInfo[carid][cFraktionID], "CarID", FCarInfo[carid][cCarID]);
    mysql_SetInt("FraktionAutos", "CarID", FCarInfo[carid][cCarID], "CarID", FCarInfo[carid][cCarID]);
    mysql_SetInt("FraktionAutos", "pFarbe1", FCarInfo[carid][cFarbe1], "CarID", FCarInfo[carid][cCarID]);
    mysql_SetInt("FraktionAutos", "pFarbe2", FCarInfo[carid][cFarbe2], "CarID", FCarInfo[carid][cCarID]);
    mysql_SetFloat("FraktionAutos", "PosX", Posi[0], "CarID", FCarInfo[carid][cCarID]);
    mysql_SetFloat("FraktionAutos", "PosY", Posi[1], "CarID", FCarInfo[carid][cCarID]);
    mysql_SetFloat("FraktionAutos", "PosZ", Posi[2], "CarID", FCarInfo[carid][cCarID]);
    mysql_SetFloat("FraktionAutos", "PosAngle", Posi[3], "CarID", FCarInfo[carid][cCarID]);
    }



    stock CreateFraktionAuto(carid, frakid)
    {
    new query[256];
    format(query, sizeof(query), "INSERT INTO `FraktionAutos` (`CarID`, `FraktionID`) VALUES ('%d', '%d')", carid, frakid);
    mysql_query(query);
    return true;
    }


    stock LoadFCar(carid)
    {
    new Float:Posi[4];
    GetVehiclePos(carid,Posi[0],Posi[1],Posi[2],Posi[3]);
    FCarInfo[carid][cFraktionID] = mysql_SetInt("FraktionAutos", "FraktionID", "CarID", FCarInfo[carid][cCarID]);
    FCarInfo[carid][cPosX] = mysql_SetInt("FraktionAutos", "CarID", "CarID", FCarInfo[carid][cCarID]);
    FCarInfo[carid][cFarbe1] = mysql_SetInt("FraktionAutos", "Farbe1", "CarID", FCarInfo[carid][cCarID]);
    FCarInfo[carid][cFarbe2] = mysql_SetInt("FraktionAutos", "Farbe2", "CarID", FCarInfo[carid][cCarID]);
    FCarInfo[carid][cPosX] = mysql_GetFloat("FraktionAutos", "PosX", "CarID", FCarInfo[carid][cCarID]);
    FCarInfo[carid][cPosY] = mysql_GetFloat("FraktionAutos", "PosY", "CarID", FCarInfo[carid][cCarID]);
    FCarInfo[carid][cPosZ] = mysql_GetFloat("FraktionAutos", "PosZ", "CarID", FCarInfo[carid][cCarID]);
    FCarInfo[carid][cPosAngle] = mysql_GetFloat("FraktionAutos", "PosAngle", "CarID", FCarInfo[carid][cCarID]);
    }

    2 Mal editiert, zuletzt von [Markus] ()