INSERT INTO klappt nicht

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



    ich habe ein Problem mit meinem MYSQL SYSTEM


    unter anderem sagt er mir in "JEDER" Zeile


    Tag Mismatch


    Hier die betroffenen Zeilen


    format(query,sizeof(query),"INSERT INTO ZollLV (id,preis,x_z,z_y,z_z,name,rang) VALUES ('%i','%i','%f','%f','%f','%s','%s')",
    zInfo[playerid][z_id],zInfo[playerid][z_preis],zInfo[playerid][z_x],zInfo[playerid][z_y],cInfo[playerid][z_z],getPlayerName(playerid),GetPlayerAdminName(playerid));



    und


    format(query,sizeof(query),"INSERT INTO ZollLV (preis,z_x,z_y,z_z,name,rang) VALUES ('%i','%f','%f','%f','%s','%s')",zInfo[playerid][z_preis],zInfo[playerid][z_x],zInfo[playerid][z_y],cInfo[playerid][z_z],getPlayerName(playerid),GetPlayerAdminName(playerid));



    Danke für jede Hilfe

  • das Enum


    Spoiler anzeigen
    enum zollEnum{
    Float:z_x,
    Float:z_y,
    Float:z_z,
    z_preis,
    z_id,
    }

    Spoiler anzeigen
    new zInfo[50][zollEnum];


    getPlayerName


    Spoiler anzeigen
    getPlayerName(playerid)
    {
    new name[MAX_PLAYER_NAME];
    GetPlayerName(playerid, name,sizeof(name));
    return name;
    }


    und getPlayerAdminName


    Spoiler anzeigen
    stock GetPlayerAdminName(playerid)
    {
    new aName[]="Stellv. Projektleiter";
    switch(sInfo[playerid][alevel])
    {
    case 0: aName="User";
    case 1: aName="V.I.P";
    case 2: aName="Supporter";
    case 3: aName="Moderator";
    case 4: aName="Chef -Moderator";
    case 5: aName="Administrator";
    case 6: aName="Chef -Administrator";
    case 7: aName="Server-Manager";
    case 8: aName="Development";
    case 9: aName="Projektleiter";
    default: aName="ERROR";
    }
    return aName;
    }

  • danke hat soweit geklappt.



    Ein anliegen habe ich aber dann doch noch.


    Jetzt habe ich ja dass der Spieler an der jeweiligen Zollstation X Euro bezahlen muss


    wie definiere ich denn die Schranke auf die jeweilige Positon (x,y,z) und die ID


    Brauchst du dazu nen Code von mir?


    MFG

  • Dass du die Schranke nur an der speziellen Position öffnen kannst, oder was genau meinst du?

    also ich habe ja jetzt eine doppelseite schranke. 1 Richtung LS 1 Richtung LV


    So die habe ich jetzt als je 1 Station definiert also ID 1 (Richtung LS ) und 2 (Richtung LV)


    So jetzt möchte ich, dass wenn der Spieler davor steht, dass der Preis von der jeweiligen Schranke (Pos) geladen wird.


    Dafür muss ich ja irgendwie die Schranke auf die Pos definieren



    Wie geht das?



    momentan habe ich ja das buyzollticket system nur so


    Spoiler anzeigen
    ocmd:buyzollticket(playerid,params[])
    {
    new string[128];

    if(IsPlayerInRangeOfPoint(playerid,5,1648.6, -42.1, 36.4)) //Links in Fahrtrichtung nach LV
    {

    format(string,sizeof(string),"Möchtest du ein Zollticket im Preis von %i Euro kaufen?",zInfo[playerid][z_preis]);
    ShowPlayerDialog(playerid,DIALOG_ZOLL_LV,DIALOG_STYLE_MSGBOX,"Zoll - Ticket",string,"Ja","Nein, Abbruch");
    }
    else{}

    }



    E1:



    Dazu den DIALOG


    Spoiler anzeigen
    if(dialogid == DIALOG_ZOLL_LV)
    {
    if(response)
    {
    //Zollticketprozess (kaufen)

    if(GetPlayerMoney(playerid)<zInfo[playerid][z_preis])
    {
    SendClientMessage(playerid,RED,"Du hast nicht genügend Geld um dir ein Zollticket zu kaufen");

    return 1;
    }
    GivePlayerMoney(playerid,-zInfo[playerid][z_preis]);
    //Schranke Bewegen
    /*
    ZLV1L/auf CreateObject(968, 1648.6, -42.1, 36.4, 0, 0, 31.5);
    ZLV1L/zu CreateObject(968, 1648.5996, -42.09961, 36.4, 0, 268.25, 22.998);
    */
    MoveObject(ZLV1L,1648.6, -42.1, 36.4,3);
    SetObjectRot(ZLV1L,0, 0, 31.5);
    SetTimerEx("ZLVL1",7000,false,"i",playerid);
    SendClientMessage(playerid,CLGREEN,"Du hast dir erfolgreich ein Zollticket gekauft! Gute Fahrt!");
    SendClientMessage(playerid,CL_ORANGE,"Du kannst nun weiterfahren");

    return 1;
    }
    else
    {

    SendClientMessage(playerid,RED,"Du hast den Kauf des Zolltickets abgebrochen");
    return 1;
    }
    }

  • Das musst du dann mit else if machen.


    ocmd:buyzollticket(playerid,params[])
    {
    new string[128];

    if(IsPlayerInRangeOfPoint(playerid,5,1648.6, -42.1, 36.4)) //Links in Fahrtrichtung nach LV
    {

    format(string,sizeof(string),"Möchtest du ein Zollticket im Preis von %i Euro kaufen?",zInfo[playerid][z_preis]);
    ShowPlayerDialog(playerid,DIALOG_ZOLL_LV,DIALOG_STYLE_MSGBOX,"Zoll - Ticket",string,"Ja","Nein, Abbruch");
    }
    else if(IsPlayerInRangeOfPoint(playerid,5, /*andere Position*/))
    {


    }
    return 1;
    }

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen
  • Kein Problem, deswegen sind wir ja hier. :)
    Jetzt müsste ich nur wissen, wie du die Dialoge an den unterschiedlichen Positionen anzeigst.


    Nämlich je nach dem wie du das machst, musst du auch das Geld anziehen.


    Ich nehme mal an, du zeigst unterschiedliche Dialoge an:
    if(dialogid == DIALOG_ZOLL_LV)
    {
    //...
    GivePlayerMoney(playerid, -300);
    }
    if(dialogid == DIALOG_ZOLL_LS)
    {
    //...
    GivePlayerMoney(playerid, -500);
    }


    Ist dir das soweit genug?
    Wenn nicht, kein Problem, dann poste nochmal den Code den du bis dahin hast, mit den zwei Schranken.

  • Okay. Ich versuche das nochmals intensiv zu erklären



    Also:


    Spieler X fährt zur Zollschranke zwischen LS und LV


    Diese durchquerung kostet 500 € (festgesetzter Preis für diese Station)


    Er fährt weiter und kommt auf dem Weg zur Army base wieder an eine Station


    Diese kostet 250 €




    Mein Wunsch ist es nun


    die Koordinaten der Schranken (sind ja je 2 ) mit den Koordinaten aus der DB (die erstellt werden mit createzoll)
    zu verbinden, heißt z.B.


    Wenn DBKOORD im Radius X von SCHRANKE 1 und/oder 2 sind wird der Preis beim DIALOG abgerufen




    Weißt du nun was ich meine?

    Einmal editiert, zuletzt von Silbermond ()

  • Spoiler anzeigen
    ocmd:buyzollticket(playerid,params[])
    {
    new string[128];
    /*
    ZLV1L/auf CreateObject(968, 1648.6, -42.1, 36.4, 0, 0, 31.5);
    ZLV1L/zu CreateObject(968, 1648.5996, -42.09961, 36.4, 0, 268.25, 22.998);
    */
    if(IsPlayerInRangeOfPoint(playerid,5,1648.6, -42.1, 36.4)) //Links in Fahrtrichtung nach LV
    {

    format(string,sizeof(string),"Möchtest du ein Zollticket im Preis von %i Euro kaufen?",zInfo[playerid][z_preis]);
    ShowPlayerDialog(playerid,DIALOG_ZOLL_LS_LV,DIALOG_STYLE_MSGBOX,"Zoll - Ticket",string,"Ja","Nein, Abbruch");
    }
    else if(IsPlayerInRangeOfPoint(playerid,5,1656.6, -35.6, 36.5)) //Rechts in Fahrtrichtung nach LS
    {

    format(string,sizeof(string),"Möchtest du ein Zollticket im Preis von %i Euro kaufen?",zInfo[playerid][z_preis]);
    ShowPlayerDialog(playerid,DIALOG_ZOLL_LV_LS,DIALOG_STYLE_MSGBOX,"Zoll - Ticket",string,"Ja","Nein, Abbruch");
    }

    }



    der Ticketkauf befehl




    und hier der Close Timer


    Spoiler anzeigen
    forward ZLVL1(playerid);
    public ZLVL1(playerid)
    {

    MoveObject(ZLV1L,1648.5996, -42.09961, 36.4,10);
    SetObjectRot(ZLV1L,0, 268.25, 22.998);
    SendClientMessage(playerid,-1,"Die Schranke wird geschlossen");
    return 1;
    }

    Spoiler anzeigen
    //1656.6, -35.5, 36.5, 0, 267.747, 26.491

    Spoiler anzeigen
    forward ZLVR1(playerid);
    public ZLVR1(playerid)
    {

    MoveObject(ZLV1R,1656.6, -35.5, 36.5,10);
    SetObjectRot(ZLV1R, 0, 267.747, 26.491);
    SendClientMessage(playerid,-1,"Die Schranke wird geschlossen");
    return 1;
    }



    Die schranken erstelle ich mit CreateObject