VehicleID setzen - Möglich?

In 10 Minuten startet der nächtliche Backupvorgang! Es kann währenddessen (ca. 10 Minuten) zu Einschränkungen bei der Nutzung des Forums kommen
Weitere Infos findet ihr im Thema Backup des Forums
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
  • Wo mein problem liegt.. das ich erst 2 wochen in pawno scripte und das nicht verstehe :wacko: ...


    Das..
    Cars[vehicleid][vID] = AddStaticVehicle(dModel, VX, VY, VZ, VA, -1, -1);


    bzw. das


    Cars[vehicleid][vID]


    kannte ich vorher nicht wirklich.. ich dachte darunter etwas anderes.. und das verstehe ich nicht.. ebenso wenig.. diese funktion die angesprochen wird um ein car zu erstellen.. meine funktion sieht so aus..


    Zum erstellen:
    dcmd_car(playerid,params[])
    {
    new cID;
    if (sscanf(params, "i", cID)){
    return SendClientMessage(playerid, COLOR_GREY,"[SYSTEM] /car [CarID]");
    }
    new Float:x, Float:y, Float:z, Float:o;
    GetPlayerPos(playerid, x, y, z);
    GetPlayerFacingAngle(playerid, o);
    CreateVehicle(cID, x+3, y, z, o, -1, -1, 0);
    return 1;
    }


    Zum abspeichern:
    dcmd_addvehicle(playerid, params[])
    {
    if(sscanf(params,"")){
    return SendClientMessage(playerid,COLOR_GREY,"[SYSTEM] /addvehicle");
    }
    new vID, cID, dModel, Float:VX, Float:VY, Float:VZ, Float:VA, Query[1024];
    if(IsPlayerInAnyVehicle(playerid))
    {
    GetPlayerPos(playerid, VX, VY, VZ);
    GetVehicleZAngle(GetPlayerVehicleID(playerid), VA);
    dModel = GetVehicleModel(GetPlayerVehicleID(playerid));
    cID = GetPlayerVehicleID(playerid);


    format(Query, sizeof(Query),"SELECT * FROM `cars` WHERE VehicleID=%d",cID);
    mysql_query(Query);
    mysql_store_result();
    vID = mysql_num_rows()+1;

    format(Query, sizeof(Query), "INSERT INTO `cars` (VehicleID, VehicleModel, VehicleX, VehicleY, VehicleZ, VehicleAngle) VALUES(%d, %d, %f, %f, %f, %f)",
    vID, dModel, VX, VY, VZ, VA);
    mysql_query(Query);


    format(Msg, sizeof(Msg), "[SYSTEM] Fahrzeug wurde gespeichert. Model: (%d).",dModel);
    return SendClientMessage(playerid, COLOR_INDIGO, Msg);
    }
    else return SendClientMessage(playerid, COLOR_RED, "[SYSTEM] Du bist in keinem Fahrzeug!");
    }

  • stock BlaFunktion()
    {
    new id;
    for(new i; i < MAX_VEHICLES; i++)
    {
    if(Cars[i][vID] == 0 && i != 0)
    {
    id = i+1;
    break;
    }
    }
    return id;
    }


    Das wär sone funktion um eine ID zu erstellen, die noch nicht verwendet wird. (für 8D´s vorschlag)
    Sollte richtig sein, is nur so runtergerattert. Returnt halt die freie ID die du dann verwenden kannst. Kannst anstatt vID oben in der abfrage auch nen anderen parameter sein, muss halt auf jeden fall einer sein, der 0 ist (oder eine andere bedingung) wenn das car noch NICHT besteht.


    Ich hoffe ich konnte dir damit ein stücken auf dem langen weg weiterhelfen :)


    MFG, Robdeflop®

  • Ich muss zugeben.. das ich die ein wenig überfordert bin >.<....
    Hoffe das ist soweit korrekt..


    dcmd_addvehicle(playerid, params[])
    {
    if(sscanf(params,"")){
    return SendClientMessage(playerid,COLOR_GREY,"[SYSTEM] /addvehicle");
    }
    new vID, cID, dModel, Float:VX, Float:VY, Float:VZ, Float:VA, Query[1024];
    if(IsPlayerInAnyVehicle(playerid))
    {
    GetPlayerPos(playerid, VX, VY, VZ);
    GetVehicleZAngle(GetPlayerVehicleID(playerid), VA);
    dModel = GetVehicleModel(GetPlayerVehicleID(playerid));
    for(new i; i < MAX_VEHICLES; i++)
    {
    if(Cars[vID] == 0 && i != 0)
    {
    cID = i+1;
    break;
    }
    }
    format(Query, sizeof(Query), "INSERT INTO `cars` (VehicleID, VehicleModel, VehicleX, VehicleY, VehicleZ, VehicleAngle) VALUES(%d, %d, %f, %f, %f, %f)",
    cID, dModel, VX, VY, VZ, VA);
    mysql_query(Query);


    format(Msg, sizeof(Msg), "[SYSTEM] Fahrzeug wurde gespeichert. Model: (%d).",dModel);
    return SendClientMessage(playerid, COLOR_INDIGO, Msg);
    }
    else return SendClientMessage(playerid, COLOR_RED, "[SYSTEM] Du bist in keinem Fahrzeug!");
    }

  • Hups, zwei fehler von mir^^
    Den wert der Schleife nicht um 1 addieren :D
    Der andere fehler kommt von wbb xD


    Also oben im Beitrag steht Car[vID], soll aber
    Car[i][vID]
    heißen.
    WBB macht aus
    [i]
    ein Kursivdruck ^^


    Also so:


    stock AutoID()
    {
    new id;
    for(new i; i < MAX_VEHICLES; i++)
    {
    if(Car[i][vID] == 0 && i != 0)
    {
    id = i;
    break;
    }
    }
    return id;
    }


    Bei dir fehlt aber noch einiges :/


    Also du musst nen Stock oder Callback machen, wo schon die ganzen parameter gegeben sind. Ich zeig dir gleich ein Beispiel :)


    MFG, Robdeflop®


    EDIT: Zu 8D:


    Da hast du schon recht, aber beim nächsten car das erstellt wird, wird diese lücke wieder gefüllt ;)
    Aber man kann ja eine Funktion erstellen, bei der keine Lücke entsteht. Dass sozusagen die Letzte ID (die man selber vom script aus gegeben hat) duch die ID mit dem gelöschten car ersetzt. Die Funktion dazu wird ja nicht allzu schwer sein xD

    Einmal editiert, zuletzt von Robdeflop ()

  • Ohje, ohje, ohje.. ich sehe es schon kommen.. :P
    Viel Arbeit.. :P.. :thumbup:


    Gott sei dank das ich optimist bin.. :thumbup:


    Ich fummel nun auch die ganze zeit an meinem script rum.. aber ich rall das nicht.. mit deinem stock Robdeflop.. :S..

  • Hi


    Naja, meine funktion dient lediglich dazu eine ID "rauszusuchen" die noch nicht verwendet wird.


    Ich denke du verstehst den Sinn von Enums oda/und Array´s nicht.


    Es gibt gute, auch bildliche erklärungen dazu :)
    Kanns dir zur not auch bestimmt irgendwie erklären xD (obwohl mein Vokabular nicht so groß ist, verstehen tuh ich aber alles ^^)


    Aber du schaffst das schon ^^


    MFG, Robdeflop®

  • Da hast du recht.. :)
    Enum verstehe ich nicht wirklich.. ..


    Icq oder so? Dann könntest mir evtl. eine kleine Erklärung mitteilen :)?


    (My icq number? Visit my profile :)!)



    Lg
    Radanua