Carsystem MySQL

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
  • Ich bin gerade dabei mir das alte Tutorial von MrMonat anzuschauen bin bei dem Punkt wo ich die Function saveCarToDB erstelle


    Bekomme leider diese Fehlermeldungen:

    C:\Users\Dustin\Desktop\Samp Scripting\gamemodes\reallife.pwn(917) : warning 202: number of arguments does not match definition

    C:\Users\Dustin\Desktop\Samp Scripting\gamemodes\reallife.pwn(926) : error 017: undefined symbol "playerid"

    C:\Users\Dustin\Desktop\Samp Scripting\gamemodes\reallife.pwn(927) : error 017: undefined symbol "mysql_function_query"

    Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase



    2 Errors.



    Die Codes sehen wie folgt aus:

    Code
    saveCarToDB(carid)
    {
        new query[128];
        format(query,sizeof(query),"INSERT INTO autos (besitzer,model,x,y,z,r) VALUES ('%i','%i','%f','%f','%f','%f')",PlayerInfo[playerid][id], cInfo[carid][model], cInfo[carid][c_x], cInfo[carid][c_y], cInfo[carid][c_z], cInfo[carid][c_r]); //926
        mysql_function_query(dbhandle,query,false,"",""); //927
        return 1;
    }

    dazu die gehörige createPlayerCar Funktion diese sieht wie folgt aus

    hier ist der Befehl mit dem ich das Fahrzeug für Spieler X erstelle:

  • Code
    saveCarToDB(playerid,carid)
    {
        new query[128];
        format(query,sizeof(query),"INSERT INTO autos (besitzer,model,x,y,z,r) VALUES ('%i','%i','%f','%f','%f','%f')",PlayerInfo[playerid][id],cInfo[carid][model],cInfo[carid][c_x],cInfo[carid][c_y],cInfo[carid][c_z],cInfo[carid][c_r]);
        mysql_function_query(dbhandle,query,true,"carSavedToDB","i",carid);
        return 1;
    }

    Versuchs mal so.


    //edit


    GetPlayerName(playerid,cInfo[i][besitzer],MAX_PLAYER_NAME);


    das würde ich am besten mit der sql id machen.

    cInfo[i][besitzer]=PlayerInfo[playerid][id];

    Du willst mich kennenlernen? Kauf mein Buch, Bia*ch!


  • C:\Users\Dustin\Desktop\Samp Scripting\gamemodes\reallife.pwn(926) : error 017: undefined symbol "id"

    C:\Users\Dustin\Desktop\Samp Scripting\gamemodes\reallife.pwn(927) : error 017: undefined symbol "mysql_function_query"

    Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase


    /edit

    Schnalle grade deine Edits nicht wirklich :D

  • wie hast du die sql_id bei dir im PlayerInfo Enum genannt?


    Welche MySQL version nutzt du?

    Du willst mich kennenlernen? Kauf mein Buch, Bia*ch!


  • Ich nutze die Version mysql-R41-4



    Mein PlayerInfoEnum sieht so aus:

    • Hilfreich

    Ich nutze die Version mysql-R41-4

    Dann bringt es dir nix von MrMonat zu kopieren :D Funktionen haben sich geändert hier versuchs mal hiermit.


    Code
    new query[200];
    mysql_format(handle, query, sizeof(query), "INSERT INTO autos SET besitzer=%d, model='%d', x='%f', y='%f', z='%f', r='%f'",PlayerInfo[playerid][p_id],cInfo[carid][model],cInfo[carid][c_x],cInfo[carid][c_y],cInfo[carid][c_z],cInfo[carid][c_r]);
    mysql_tquery(handle, query);

    Du willst mich kennenlernen? Kauf mein Buch, Bia*ch!


  • Maho Genau aus diesem Grund habe ich mal aufgehört... Weil ich einfach leider 0 ahnung habe wie die neuen functionen sind etc. aber er das in den Videos halt immer recht gut erklärt verstehe ich das halt... und wenn neue funktionen sind ist halt wissen = 0 :D


    /edit Maho

    auch mit return 1; oder return einfach weg lassen?

  • Maho


    Hey hab wieder paar Probleme hab aber auch schon die ein oder anderen sachen selbst versucht wirst du wahrscheinlich irgendwo finden wenn nicht schreib ich es noch hinter


    die Errors:

    C:\Users\Dustin\Desktop\Samp Scripting\gamemodes\reallife.pwn(955) : error 017: undefined symbol "carid"

    C:\Users\Dustin\Desktop\Samp Scripting\gamemodes\reallife.pwn(1058) : warning 202: number of arguments does not match definition

    C:\Users\Dustin\Desktop\Samp Scripting\gamemodes\reallife.pwn(1062) : error 025: function heading differs from prototype

    C:\Users\Dustin\Desktop\Samp Scripting\gamemodes\reallife.pwn(1065) : error 017: undefined symbol "cache_get_data"

    C:\Users\Dustin\Desktop\Samp Scripting\gamemodes\reallife.pwn(1067) : error 036: empty statement

    C:\Users\Dustin\Desktop\Samp Scripting\gamemodes\reallife.pwn(1070) : error 017: undefined symbol "cache_get_field_content_int"

    C:\Users\Dustin\Desktop\Samp Scripting\gamemodes\reallife.pwn(1071) : error 017: undefined symbol "cache_get_field_content_int"

    C:\Users\Dustin\Desktop\Samp Scripting\gamemodes\reallife.pwn(1072) : error 017: undefined symbol "cache_get_field_content_int"

    C:\Users\Dustin\Desktop\Samp Scripting\gamemodes\reallife.pwn(1073) : error 017: undefined symbol "cache_get_field_content_int"

    C:\Users\Dustin\Desktop\Samp Scripting\gamemodes\reallife.pwn(1074) : error 017: undefined symbol "cache_get_field_content_int"

    C:\Users\Dustin\Desktop\Samp Scripting\gamemodes\reallife.pwn(1075) : error 017: undefined symbol "cache_get_field_content_int"

    C:\Users\Dustin\Desktop\Samp Scripting\gamemodes\reallife.pwn(1076) : error 017: undefined symbol "cache_get_field_content_int"

    C:\Users\Dustin\Desktop\Samp Scripting\gamemodes\reallife.pwn(1064) : warning 203: symbol is never used: "num_fields"

    Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase



    11 Errors.




    Code
    mysql_format(handle, query, sizeof(query), "INSERT INTO autos SET besitzer=%d, model='%d', x='%f', y='%f', z='%f', r='%f'",PlayerInfo[playerid][p_id],cInfo[carid][model],cInfo[carid][c_x],cInfo[carid][c_y],cInfo[carid][c_z],cInfo[carid][c_r]); //955
    
    mysql_tquery(handle, query);


    Code
    public carSavedToDB(carid)
    {
        cInfo[carid][db_id]= cache_insert_id(handle); //1058
        return 1;
    }


  • Welche MySQL Version nutzt du denn?


    Die cache_get_field_content_int Funktion ist R33, anscheinend nutzt du eine neuere Version (was auch zu empfehlen ist).


    Eigener Versuch hier drunter

    Ja, das ist ja auch evtl ganz richtig...(Zumindest die Funktion, evtl nicht wie du es anwendest).

    ast2ufdyxkb1.png


    Leute, lernt scripten und versucht mal lieber etwas selber zu schreiben, als es aus einem GF zu kopieren. :S

  • Dann war dein Versuch doch schon ganz richtig.


    Darfst nur nicht überall cache_get_value_name_int verwenden, sondern, wenn es sich um floats handelt eben cache_get_value_name_float.


    Und verwende nicht 0 als index, sondern eben einfach i :)

    ast2ufdyxkb1.png


    Leute, lernt scripten und versucht mal lieber etwas selber zu schreiben, als es aus einem GF zu kopieren. :S

  • kommt dann das bei rum nachdem ich das zu float geändert habe bei x y z r bei besitzer bleibt ja int richtig?


    C:\Users\Dustin\Desktop\Samp Scripting\gamemodes\reallife.pwn(569) : error 017: undefined symbol "COLOR_DARK_RED"

    C:\Users\Dustin\Desktop\Samp Scripting\gamemodes\reallife.pwn(570) : error 017: undefined symbol "COLOR_DARK_RED"

    C:\Users\Dustin\Desktop\Samp Scripting\gamemodes\reallife.pwn(966) : error 017: undefined symbol "carid"

    C:\Users\Dustin\Desktop\Samp Scripting\gamemodes\reallife.pwn(1069) : warning 202: number of arguments does not match definition

    C:\Users\Dustin\Desktop\Samp Scripting\gamemodes\reallife.pwn(1073) : error 025: function heading differs from prototype

    C:\Users\Dustin\Desktop\Samp Scripting\gamemodes\reallife.pwn(1076) : error 017: undefined symbol "cache_get_data"

    C:\Users\Dustin\Desktop\Samp Scripting\gamemodes\reallife.pwn(1078) : error 036: empty statement

    C:\Users\Dustin\Desktop\Samp Scripting\gamemodes\reallife.pwn(1081) : error 017: undefined symbol "i"

    C:\Users\Dustin\Desktop\Samp Scripting\gamemodes\reallife.pwn(1082) : error 017: undefined symbol "i"

    C:\Users\Dustin\Desktop\Samp Scripting\gamemodes\reallife.pwn(1083) : error 017: undefined symbol "i"

    C:\Users\Dustin\Desktop\Samp Scripting\gamemodes\reallife.pwn(1084) : error 017: undefined symbol "i"

    C:\Users\Dustin\Desktop\Samp Scripting\gamemodes\reallife.pwn(1085) : error 017: undefined symbol "i"

    C:\Users\Dustin\Desktop\Samp Scripting\gamemodes\reallife.pwn(1086) : error 017: undefined symbol "i"

    C:\Users\Dustin\Desktop\Samp Scripting\gamemodes\reallife.pwn(1086) : error 029: invalid expression, assumed zero

    C:\Users\Dustin\Desktop\Samp Scripting\gamemodes\reallife.pwn(1086 -- 1087) : warning 215: expression has no effect

    C:\Users\Dustin\Desktop\Samp Scripting\gamemodes\reallife.pwn(1075) : warning 203: symbol is never used: "num_fields"

    Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase



    13 Errors.

  • Nein, der Besitzer ist natürlich kein Int, sondern ein String.


    Es sollte dann ungefähr so aussehen:


    ast2ufdyxkb1.png


    Leute, lernt scripten und versucht mal lieber etwas selber zu schreiben, als es aus einem GF zu kopieren. :S

  • Okay jetzt habe ich nur noch 6 Errors



    C:\Users\Dustin\Desktop\Samp Scripting\gamemodes\reallife.pwn(966) : error 017: undefined symbol "carid"

    C:\Users\Dustin\Desktop\Samp Scripting\gamemodes\reallife.pwn(1069) : warning 202: number of arguments does not match definition

    C:\Users\Dustin\Desktop\Samp Scripting\gamemodes\reallife.pwn(1073) : error 025: function heading differs from prototype

    C:\Users\Dustin\Desktop\Samp Scripting\gamemodes\reallife.pwn(1083) : error 017: undefined symbol "x"

    C:\Users\Dustin\Desktop\Samp Scripting\gamemodes\reallife.pwn(1084) : error 017: undefined symbol "y"

    C:\Users\Dustin\Desktop\Samp Scripting\gamemodes\reallife.pwn(1085) : error 017: undefined symbol "z"

    C:\Users\Dustin\Desktop\Samp Scripting\gamemodes\reallife.pwn(1086) : error 017: undefined symbol "r"

    Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase



    6 Errors.


    hier ist auch noch mein Enum falls notwendig:

    Kaliber

  • Achso, ja ich hatte da mich an deinem Code orientiert, muss natürlich c_x, anstatt x heißen:


    C
            cache_get_value_name_float(i, "x", cInfo[id][c_x]);
            cache_get_value_name_float(i, "y", cInfo[id][c_y]);
            cache_get_value_name_float(i, "z", cInfo[id][c_z]);
            cache_get_value_name_float(i, "r", cInfo[id][c_r]);


    Ansonsten zeig uns mal die Zeilen 966 (hier etwas mehr code so + - 5 Zeilen), 1069 und 1073

    ast2ufdyxkb1.png


    Leute, lernt scripten und versucht mal lieber etwas selber zu schreiben, als es aus einem GF zu kopieren. :S

  • Vielen Dank! Größtenteils alle Fehler behoben bis auf:


    C:\Users\Dustin\Desktop\Samp Scripting\gamemodes\reallife.pwn(966) : error 017: undefined symbol "carid"

    C:\Users\Dustin\Desktop\Samp Scripting\gamemodes\reallife.pwn(1069) : warning 202: number of arguments does not match definition

    C:\Users\Dustin\Desktop\Samp Scripting\gamemodes\reallife.pwn(1073) : error 025: function heading differs from prototype

    Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase



    2 Errors.




    Code
    loadPlayerCars(playerid)
    {
        new query[200];
        mysql_format(handle, query, sizeof(query), "INSERT INTO autos SET besitzer=%d, model='%d', x='%f', y='%f', z='%f', r='%f'",PlayerInfo[playerid][p_id],cInfo[carid][model],cInfo[carid][c_x],cInfo[carid][c_y],cInfo[carid][c_z],cInfo[carid][c_r]); //966
        mysql_tquery(handle, query);
        return 1;
    }
    Code
    public carSavedToDB(carid)
    {
        cInfo[carid][db_id]= cache_insert_id(handle); //1068
        return 1;
    }


  • Achso, warte mal, dein besitzer ist ja doch ein int.


    Du referenzierst da also auf den Spieler, achso (verwirrende Bezeichnung).


    Dann bringst du playerid und carid durcheinander.


    Ufff, es ist sehr schwer dir so zu helfen, denn selbst wenn man die Compiler Fehler beseitigt, heißt das ja noch lange nicht, dass das System fehlerfrei funktioniert.


    Bei dir wird es das vermutlich nicht tun, da haufenweise Dinge durcheinander gewürfelt werden.


    Für so komplexe Systeme solltest du evtl Tutorials folgen oder dir spezifisch helfen lassen.


    C
    loadPlayerCars(playerid,carid) //Musst die carid noch mit angeben...oder du machst das in der Funktion...kp wie da dein Code aufgebaut ist
    {
        new query[200];
        mysql_format(handle, query, sizeof(query), "INSERT INTO autos SET besitzer=%d, model='%d', x='%f', y='%f', z='%f', r='%f'",PlayerInfo[playerid][p_id],cInfo[carid][model],cInfo[carid][c_x],cInfo[carid][c_y],cInfo[carid][c_z],cInfo[carid][c_r]); //966
        mysql_tquery(handle, query);
        return 1;
    }
    C
    public carSavedToDB(carid)
    {
        cInfo[carid][db_id]= cache_insert_id(); //Einfach ohne handle
        return 1;
    }



    //Edit:


    Dein Insert INTO Query ist völliger Quatsch, sollte das eventuell ein Update sein?

    ast2ufdyxkb1.png


    Leute, lernt scripten und versucht mal lieber etwas selber zu schreiben, als es aus einem GF zu kopieren. :S

  • Kaliber habe gerade in der Datenbank den besitzer von INT auf VARCHAR geändert und an meinem enum bei besitzer[MAX_PLAYER_NAME] dran gehangen ist das so besser?


    Wäre es trotzdem so wie du es geschrieben hast nutzbar?

  • Kaliber habe gerade in der Datenbank den besitzer von INT auf VARCHAR geändert und an meinem enum bei besitzer[MAX_PLAYER_NAME] dran gehangen ist das so besser?

    Kannst es ruhig so lassen, wie du es hattest, das war schon sauber gelöst.


    Wie gesagt, ich dachte du hattest es anders gelöst.

    ast2ufdyxkb1.png


    Leute, lernt scripten und versucht mal lieber etwas selber zu schreiben, als es aus einem GF zu kopieren. :S

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen