Fahrzeuge in MySQL Speichern

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
  • Nur noch hier:


    CreateVehicle(VehInfo[i][ModellID],VehInfo[i][PosX],VehInfo[i][PosY],VehInfo[i][PosZ],VehInfo[i][PosR],VehInfo[i][Farbe1],VehInfo[i][Farbe2],-1);//20


    warning 213: tag mismatch



    Die heutigen Noobs, sind die Profis von morgen! :thumbup:


    Danke an Jeffry für seine ständige Hilfsbereitschaft und freundliche Art. 8)

  • perfekt :)


    hier new FrakAutos[][VehEnum] =
    {
    //ModelID, Frak, X,Y,Z,Farbe1,Farbe2
    {597,-1595.8781,693.9594,-5.4741,180.1654, 198, 1},//zeile 123
    {597,-1595.8781,693.9594,-5.4741,179.5844, 198, 1}//zeile 123


    };



    Die heutigen Noobs, sind die Profis von morgen! :thumbup:


    Danke an Jeffry für seine ständige Hilfsbereitschaft und freundliche Art. 8)

  • new FrakAutos[][VehEnum] =
    {
    //ModellID, Frak, X,Y,Z,Farbe1,Farbe2
    {597,-1595.8781,693.9594,-5.4741,180.1654, 198, 1, FRAKTION_HIER},//zeile 123
    {597,-1595.8781,693.9594,-5.4741,179.5844, 198, 1, FRAKTION_HIER}//zeile 123


    };


    stock LoadVehicles()
    {
    new string[3], query[400], bool:added;//02
    for(new i=0; i < sizeof(FrakAutos); i++)
    {
    format(string, sizeof string, "%d", i);
    VehInfo[i][ModellID] = mysql_GetInt("Auto", "ModellID", "ID", string);
    if(VehInfo[i][ModellID] < 400 || VehInfo[i][ModellID] > 611)
    {
    format(query, sizeof(query), "INSERT INTO Auto (ID, ModellID, PosX, PosY, PosZ, PosR, Farbe1, Farbe2, Fraktion) VALUES ('%d', '%d', '%f', '%f', '%f', '%f', '%d', '%d', '%d')", i,
    FrakAutos[i][ModellID],FrakAutos[i][PosX],FrakAutos[i][PosY],FrakAutos[i][PosZ],FrakAutos[i][PosR],FrakAutos[i][Farbe1],FrakAutos[i][Farbe2],FrakAutos[i][Fraktionp]);
    mysql_query(query);
    VehInfo[i][ModellID] = FrakAutos[i][ModellID];
    added = true;
    }
    format(VehInfo[i][Grund], 32, mysql_GetString("Autos", "Grund", "ID", string));
    VehInfo[i][Fraktion] = mysql_GetInt("Auto", "Fraktion", "ID", string);
    VehInfo[i][PosX] = mysql_GetFloat("Auto", "PosX", "ID", string);
    VehInfo[i][PosY] = mysql_GetFloat("Auto", "PosY", "ID", string);
    VehInfo[i][PosZ] = mysql_GetFloat("Auto", "PosZ", "ID", string);
    VehInfo[i][PosR] = mysql_GetFloat("Auto", "PosR", "ID", string);
    VehInfo[i][Abgeschleppt] = mysql_GetInt("Auto", "Abgeschleppt", "ID", string);
    VehInfo[i][inADAC] = mysql_GetInt("Auto", "inADAC", "ID", string);
    VehInfo[i][Preis] = mysql_GetInt("Auto", "Preis", "ID", string);
    VehInfo[i][NewX] = mysql_GetFloat("Auto", "NewX", "ID", string);
    VehInfo[i][NewY] = mysql_GetFloat("Auto", "NewY", "ID", string);
    VehInfo[i][NewZ] = mysql_GetFloat("Auto", "NewZ", "ID", string);
    VehInfo[i][Farbe1] = mysql_GetInt("Auto", "Farbe1", "ID", string);//18
    VehInfo[i][Farbe2] = mysql_GetInt("Auto", "Farbe2", "ID", string);//19
    CreateVehicle(VehInfo[i][ModellID],VehInfo[i][PosX],VehInfo[i][PosY],VehInfo[i][PosZ],VehInfo[i][PosR],VehInfo[i][Farbe1],VehInfo[i][Farbe2],-1);//20

    }
    if(added) SaveVehicles();
    return 1;
    }


    Falls du "PosR" noch nicht in der Datenbank hast, füge das noch hinzu, das hat nämlich noch beim Laden gefehlt.


    Dann kannst du es mal testen.

    3HZXdYd.png

    2 Mal editiert, zuletzt von Jeffry ()

  • Hi Jeffry.
    Es Funktioniert jetzt alles soweit, danke :)(wo soll ich den dein Code austauschen? Bei welcher schleife)


    Nur Manche Fahrzeuge spawnen einfach doppelt aufeinander?
    Liegt es vielleicht daran das bei OneGamemodeinit auch noch mal ein Auto erstellt wird? Aber das ist ja ein muss?
    Und meine Tore, bzw Objecte sind jetzt einfach nicht mehr da? Hab 71 Autos eingefügt brauch ich vielleicht ein Streamer oder so?


    MfG



    //Hier der code von dem CreateVehicle in OnGameModeInit
    for(new g;g<MAX_VEHICLES;g++)
    {
    CreateVehicle(FrakAutos[g][ModellID],FrakAutos[g][PosX],FrakAutos[g][PosY],FrakAutos[g][PosZ],FrakAutos[g][PosR],FrakAutos[g][Farbe1],FrakAutos[g][Farbe2],-1);//250
    }



    Die heutigen Noobs, sind die Profis von morgen! :thumbup:


    Danke an Jeffry für seine ständige Hilfsbereitschaft und freundliche Art. 8)

  • Die Schleife musst du bei LoadVehicles ändern.
    Zu:
    for(new i=0; i < sizeof(FrakAutos); i++)


    Dann sollten auch deine Tore etc wieder da sein.


    Zitat

    //Hier der code von dem CreateVehicle in OnGameModeInit


    Den kannst du weg machen, du hast die Fahrzeuge ja hoffentlich alle in das neue Array (enum) übernommen. Wenn nicht, mach das noch. Am Ende sollen ja alle Fahrzeuge in der Datenbank stehen, oder? Sprich, es soll kein CreateVehicle unter OnGameModeInit mehr stehen, außer das bei LoadVehicles.

  • Ja gut, jetzt ist alles wieder beim alten und alle Fahrzeuge stehen da wo sie sollen :)


    Jetzt nur noch um auf die abfrage zurück zu kommen.


    Wie kann ich definieren das zb Auto 1 von den Cops gefahren wird?



    Die heutigen Noobs, sind die Profis von morgen! :thumbup:


    Danke an Jeffry für seine ständige Hilfsbereitschaft und freundliche Art. 8)

  • Ja gut, jetzt ist alles wieder beim alten und alle Fahrzeuge stehen da wo sie sollen :)


    Jetzt nur noch um auf die abfrage zurück zu kommen.


    Wie kann ich definieren das zb Auto 1 von den Cops gefahren wird?


    Einfach bei OnPlayerStateChange abfragen ob


    VehInfo[GetPlayerVehicleID(playerid)][Fraktion] //schon entsprechend angepasst


    den Wert der Fraktion des Spielers besitzt

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen
  • Okey, und was wenn ich nur fragen will, ob es ein cop car ist ?


    soll ich dann
    new frakid = VehInfo[GetPlayerVehicleID(playerid)][Fraktion]
    if(frakid[playerid] != 1) {
    return RemovePlayerFromVehicle(playerid);
    SendClientMessage(playerid, hinweis1, "Du bist kein Polizist!"); }


    Oder wie?


    if(newstate == PLAYER_STATE_DRIVER)
    {
    if(!VehInfo[GetPlayerVehicleID(playerid)][Fraktion] && isinADAC[playerid] != 1) {
    SendClientMessage(playerid,hinweis1,"Du hast keinen Schlüssel!");
    return RemovePlayerFromVehicle(playerid);
    }
    }


    So funktioniert es nicht, es können alle rein und wenn ich das ! weg mache kann garkeiner rein..



    Die heutigen Noobs, sind die Profis von morgen! :thumbup:


    Danke an Jeffry für seine ständige Hilfsbereitschaft und freundliche Art. 8)

    Einmal editiert, zuletzt von ENEF () aus folgendem Grund: //rechtschreibung xD

  • Nein, das was IPrototypeI dir das gesagt hat ist nicht gut. Das wird nicht zuverlässig unter allen Bedingungen funktionieren.


    new vehid = GetPlayerVehicleID(playerid);
    new idx = -1;
    for(new i=0; i<sizeof(VehInfo); i++)
    {
    if(VehInfo[i][veh_ID] == vehid)
    {
    idx = i;
    break;
    }
    }
    if(idx == -1)
    {
    SendClientMessage(playerid, hinweis1, "Du bist kein Polizist!");
    return RemovePlayerFromVehicle(playerid);
    }
    new frakid = VehInfo[idx][Fraktion]
    if(frakid != 1) //Fraktion 1 == Polizei
    {
    SendClientMessage(playerid, hinweis1, "Du bist kein Polizist!");
    return RemovePlayerFromVehicle(playerid);
    }


    Und ganz wichtig:
    VehInfo[i][veh_ID] = CreateVehicle(VehInfo[i][ModellID],VehInfo[i][PosX],VehInfo[i][PosY],VehInfo[i][PosZ],VehInfo[i][PosR],VehInfo[i][Farbe1],VehInfo[i][Farbe2],-1);//20



    Oder so: (wahrscheinlich leichter für dich)
    Unten im Gamemode (einmalig):
    stock IsPlayerInAllowedFrakVeh(playerid, frak)
    {
    new vehid = GetPlayerVehicleID(playerid);
    new idx = -1;
    for(new i=0; i<sizeof(VehInfo); i++)
    {
    if(VehInfo[i][veh_ID] == vehid)
    {
    idx = i;
    break;
    }
    }
    if(idx == -1) return 0;
    if(VehInfo[idx][Fraktion] != frak) return 0;
    return 1;
    }


    Bei der Abfrage:
    if(IsPlayerInAllowedFrakVeh(playerid, 1) //Fraktion 1 == Polizei
    {
    SendClientMessage(playerid, hinweis1, "Du bist kein Polizist!");
    return RemovePlayerFromVehicle(playerid);
    }



    In beiden Fällen musst du aber VehInfo[i][veh_ID] vor CreateVehicle schreiben, und auch veh_ID in das enum mit aufnehmen.

  • Also jetzt kommt ne Warnin


    VehInfo[i][veh_ID] = CreateVehicle(VehInfo[i][ModellID],VehInfo[i][PosX],VehInfo[i][PosY],VehInfo[i][PosZ],VehInfo[i][PosR],VehInfo[i][Farbe1],VehInfo[i][Farbe2],-1);//20
    warning 213: tag mismatch


    Und auch hier
    stock IsPlayerInAllowedFrakVeh(playerid, frak)
    {
    new vehid = GetPlayerVehicleID(playerid);
    new idx = -1;
    for(new i=0; i<sizeof(VehInfo); i++)
    {
    if(VehInfo[i][veh_ID] == vehid)//hier tag mismatch
    {
    idx = i;
    break;
    }
    }
    if(idx == -1) return 0;
    if(VehInfo[idx][Fraktion] != frak) return 0;
    return 1;
    }


    Sonst kommt nichts :)



    Die heutigen Noobs, sind die Profis von morgen! :thumbup:


    Danke an Jeffry für seine ständige Hilfsbereitschaft und freundliche Art. 8)

  • Jo Errors und Warnings weg.


    Wie erstelle ich jetzt den befehl für das ADAC und für die, wo ihr Auto freikaufen wollen?


    Adac geht in das auto und macht /opark [Grund] [Preis]
    Spieler steigt in ein Auto (zb cop ins copcar)
    Möchtest du das auto freikaufen?
    [grund][prei]



    Die heutigen Noobs, sind die Profis von morgen! :thumbup:


    Danke an Jeffry für seine ständige Hilfsbereitschaft und freundliche Art. 8)

  • Erstelle mal die Befehle so weit wie du kommst. An der Stelle an der du hängst postest du wieder hier, und erklärst Schritt für Schritt was in dem Befehl, wenn ihn der Spieler eingibt, passieren soll.
    Aber die Grundstruktur des Befehls kannst du ja schon machen, und dann eben so weit wie du kommst.

  • Okey also gut, ich hab jetzt mal da "Grundgerüst" erstellt.


    ocmd:opark(playerid, params[])
    {
    new preis, grund[34];
    if(sscanf(params,"is",preis,grund))return SendClientMessage(playerid, Color_Green,"Benutzung: /opark [Preis][Grund]");
    if(SpielerInfo[playerid][pTeam] != 5) return SendClientMessage(playerid, hinweis1,"Du bist kein Mitglied des ADAC's!");
    if(isinADAC[playerid] != 1) return SendClientMessage(playerid, hinweis1, "Du bist nicht in der ADAC Zone!");
    else if(preis < 0 || preis > 1000) return SendClientMessage(playerid, hinweis1,"Du kannst das Bußgeld nicht weniger als 0 und mehr als 1000 kosten lassen!");
    {
    //Hier soll ja dann einfach nur der Preis und den Grund für das jeweilige Auto gespeichert werden
    //abgeschleppt auf 1
    }
    return 1; }


    Und dann halt ich denke mal bei onplayerentervehicle dann eine abfrage ob das auto abgeschleppt ist und dann soll sich ein dialog öffnen, wo der preis und der grund drin ist und wenn man bezahlt soll abgeschleppt auf 0 gestellt werden



    Die heutigen Noobs, sind die Profis von morgen! :thumbup:


    Danke an Jeffry für seine ständige Hilfsbereitschaft und freundliche Art. 8)

  • Der soll in dem Auto sein, da er in seiner Zone ja alle Fahrzeuge fahren darf.
    ich nutze den Stock :)


    Hier
    stock SaveVehicles()
    {
    new string[34];
    for(new i = 0; i < MAX_VEHICLES; i++)
    {
    format(string, sizeof string, "%d", i);
    mysql_SetInt("Auto", "ModellID", VehInfo[i][ModellID], "ID", string);
    mysql_SetInt("Auto", "Fraktion", VehInfo[i][Fraktion], "ID", string);
    mysql_SetFloat("Auto", "PosX", VehInfo[i][PosX], "ID", string);
    mysql_SetFloat("Auto", "PosY", VehInfo[i][PosY], "ID", string);
    mysql_SetFloat("Auto", "PosZ", VehInfo[i][PosZ], "ID", string);
    mysql_SetFloat("Auto", "PosR", VehInfo[i][PosR], "ID", string);
    mysql_SetInt("Auto", "Abgeschleppt", VehInfo[i][Abgeschleppt], "ID", string);
    mysql_SetInt("Auto", "inADAC", VehInfo[i][inADAC], "ID", string);
    mysql_SetInt("Auto", "Preis", VehInfo[i][Preis], "ID", string);
    mysql_SetString("Auto", "Grund", VehInfo[i][Grund], "ID", string);
    mysql_SetFloat("Auto", "NewX", VehInfo[i][NewX], "ID", string);
    mysql_SetFloat("Auto", "NewY", VehInfo[i][NewY], "ID", string);
    mysql_SetFloat("Auto", "NewZ", VehInfo[i][NewZ], "ID", string);
    mysql_SetFloat("Auto", "NewR", VehInfo[i][NewR], "ID", string);
    mysql_SetInt("Auto", "Farbe1", VehInfo[i][Farbe1], "ID", string);
    mysql_SetInt("Auto", "Farbe2", VehInfo[i][Farbe2], "ID", string);


    }
    return 1;
    }



    Die heutigen Noobs, sind die Profis von morgen! :thumbup:


    Danke an Jeffry für seine ständige Hilfsbereitschaft und freundliche Art. 8)

  • Dann kannst du es so machen:
    ocmd:opark(playerid, params[])
    {
    new preis, grund[34];
    if(sscanf(params,"is",preis,grund))return SendClientMessage(playerid, Color_Green,"Benutzung: /opark [Preis][Grund]");
    if(SpielerInfo[playerid][pTeam] != 5) return SendClientMessage(playerid, hinweis1,"Du bist kein Mitglied des ADAC's!");
    if(isinADAC[playerid] != 1) return SendClientMessage(playerid, hinweis1, "Du bist nicht in der ADAC Zone!");
    else if(preis < 0 || preis > 1000) return SendClientMessage(playerid, hinweis1,"Du kannst das Bußgeld nicht weniger als 0 und mehr als 1000 kosten lassen!");
    {
    new i = GetFrakVehicleIdx(GetPlayerVehicleID(playerid));
    if(i == -1) return SendClientMessage(playerid, hinweis1, "Du bist nicht in einem abschleppbaren Auto!");
    format(VehInfo[i][Grund], 32, grund);
    VehInfo[i][Preis] = preis;
    VehInfo[i][Abgeschleppt] = 1;
    SaveVehicle(i);
    //Hier soll ja dann einfach nur der Preis und den Grund für das jeweilige Auto gespeichert werden
    //abgeschleppt auf 1
    }
    return 1;
    }


    stock GetFrakVehicleIdx(vehicleid)
    {
    for(new i=0; i<sizeof(VehInfo); i++)
    {
    if(VehInfo[i][veh_ID] == vehicleid)
    {
    return i;
    }
    }
    return -1;
    }


    stock SaveVehicle(i)
    {
    if(i < 0 || i >= sizeof(VehInfo)) return 1;
    new string[5];
    format(string, sizeof string, "%d", i);
    mysql_SetInt("Auto", "ModellID", VehInfo[i][ModellID], "ID", string);
    mysql_SetInt("Auto", "Fraktion", VehInfo[i][Fraktion], "ID", string);
    mysql_SetFloat("Auto", "PosX", VehInfo[i][PosX], "ID", string);
    mysql_SetFloat("Auto", "PosY", VehInfo[i][PosY], "ID", string);
    mysql_SetFloat("Auto", "PosZ", VehInfo[i][PosZ], "ID", string);
    mysql_SetFloat("Auto", "PosR", VehInfo[i][PosR], "ID", string);
    mysql_SetInt("Auto", "Abgeschleppt", VehInfo[i][Abgeschleppt], "ID", string);
    mysql_SetInt("Auto", "inADAC", VehInfo[i][inADAC], "ID", string);
    mysql_SetInt("Auto", "Preis", VehInfo[i][Preis], "ID", string);
    mysql_SetString("Auto", "Grund", VehInfo[i][Grund], "ID", string);
    mysql_SetFloat("Auto", "NewX", VehInfo[i][NewX], "ID", string);
    mysql_SetFloat("Auto", "NewY", VehInfo[i][NewY], "ID", string);
    mysql_SetFloat("Auto", "NewZ", VehInfo[i][NewZ], "ID", string);
    mysql_SetFloat("Auto", "NewR", VehInfo[i][NewR], "ID", string);
    mysql_SetInt("Auto", "Farbe1", VehInfo[i][Farbe1], "ID", string);
    mysql_SetInt("Auto", "Farbe2", VehInfo[i][Farbe2], "ID", string);
    return 1;
    }