HouseOwner MySQL und Pickup Problem

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
  • hai leute,


    ich hab ein grosses problem und zwar ich find definitiv den fehler nicht warum er dies

    Code
    An error has occured. (Error ID: 2014, Commands out of sync; you can't run this command now)


    immer anzeigt
    hier mal code
    new sql[256];
    format(sql,sizeof(sql),"SELECT `Level` FROM `house` WHERE `ID` = '%d'", HouseInfo[i][ID]);
    mysql_query(sql);
    format(sql,sizeof(sql),"SELECT `Kosten` FROM `house` WHERE `ID` = '%d'", HouseInfo[i][ID]);
    mysql_query(sql);
    format(sql,sizeof(sql),"SELECT `HausKey` FROM `house` WHERE `ID` = '%d'", HouseInfo[i][ID]);
    mysql_query(sql);
    format(sql,sizeof(sql),"SELECT `Verkauft` FROM `house` WHERE `ID` = '%d'", HouseInfo[i][ID]);
    mysql_query(sql);
    format(sql,sizeof(sql),"SELECT `Interior` FROM `house` WHERE `ID` = '%d'", HouseInfo[i][ID]);
    mysql_query(sql);
    format(sql,sizeof(sql),"SELECT `Local` FROM `house` WHERE `ID` = '%d'",HouseInfo[i][ID]);
    mysql_query(sql);
    format(sql,sizeof(sql),"SELECT `PickID` FROM `house` WHERE `ID` = '%d'",HouseInfo[i][ID]);
    mysql_query(sql);
    format(sql,sizeof(sql),"SELECT `EnPos_X` FROM `house` WHERE `ID` = '%f'", HouseInfo[i][ID]);
    mysql_query(sql);
    format(sql,sizeof(sql),"SELECT `EnPos_Y` FROM `house` WHERE `ID` = '%f'", HouseInfo[i][ID]);
    mysql_query(sql);
    format(sql,sizeof(sql),"SELECT `EnPos_Z` FROM `house` WHERE `ID` = '%f'", HouseInfo[i][ID]);
    mysql_query(sql);
    format(sql,sizeof(sql),"SELECT `ExPos_X` FROM `house` WHERE `ID` = '%f'", HouseInfo[i][ID]);
    mysql_query(sql);
    format(sql,sizeof(sql),"SELECT `ExPos_Y` FROM `house` WHERE `ID` = '%f'", HouseInfo[i][ID]);
    mysql_query(sql);
    format(sql,sizeof(sql),"SELECT `ExPos_Z` FROM `house` WHERE `ID` = '%f'", HouseInfo[i][ID]);
    mysql_query(sql);
    den error in der log zeigt er bei ALLEN an -.- auser bei level da kann er es laden den rest nicht.
    dan mein zweites problem
    ich habe versucht wo er das HouseOwner ladet ein CreatePickup rein zu hauen er läd nix. Denk ich mir Ok tun wirs in OnPlayerConnect.
    So rein getan erstellt immer noch nicht
    hier code
    if(HouseInfo[i][Verkauft] == 0)
    {
    CreatePickup(1273,2,HouseInfo[i][EnterPos_X],HouseInfo[i][EnterPos_Y],HouseInfo[i][EnterPos_Z],0);
    }
    else if(HouseInfo[i][Verkauft] == 1)
    {
    CreatePickup(1274,2,HouseInfo[i][EnterPos_X],HouseInfo[i][EnterPos_Y],HouseInfo[i][EnterPos_Z],0);
    }
    hoffe ihr könnt mir helfen..


    //edit hat den keiner ne ahnung was da los is?

    Der Server: [GRG]Grand Racing Game wurde 2014 Eingestampft.
    Weitere Infos: Klick Mich

    Einmal editiert, zuletzt von [GRG]Linux ()

  • Also ersteinmal fragst du was per MySQL ab und gibts es nicht aus (mysql_store_result() fehlt).
    Desweiteren kann man das einfacher machen.


    Hier mal ein Beispiel:


    format(query, sizeof(query), "SELECT * FROM `tabelle`");
    mysql_query(query);
    mysql_store_result();


    und dann ziehst du dir die daten so:
    mysql_fetch_field("Level", data);
    Haus[id][level] = strval(data);


    natürlich musst du dann data definieren unzwar so:
    new data[128];


    LG, Zunno


  • em ja das is das mit dem
    mysql_fetch_field("",data); ^^

    Der Server: [GRG]Grand Racing Game wurde 2014 Eingestampft.
    Weitere Infos: Klick Mich

  • mysql_fetch_field("Level", data);
    HouseInfo[i][Level] = strval(data);
    mysql_fetch_field("Kosten", data1);
    HouseInfo[i][Kosten] = strval(data1);
    mysql_fetch_field("HausKey", data2);
    HouseInfo[i][Housekey] = strval(data2);
    mysql_fetch_field("Verkauft", data3);
    HouseInfo[i][Verkauft] = strval(data3);
    mysql_fetch_field("Interior", data4);
    HouseInfo[i][Interior] = strval(data4);
    mysql_fetch_field("Local", data5);
    HouseInfo[i][Local] = strval(data5);
    mysql_fetch_field("PickID", data6);
    HouseInfo[i][PickID] = strval(data6);
    mysql_fetch_field("EnPos_X", data7);
    HouseInfo[i][EnterPos_X] = strval(data7);
    mysql_fetch_field("EnPos_Y", data8);
    HouseInfo[i][EnterPos_Y] = strval(data8);
    mysql_fetch_field("EnPos_Z", data9);
    HouseInfo[i][EnterPos_Z] = strval(data9);
    mysql_fetch_field("ExPos_X", data10);
    HouseInfo[i][ExitPos_X] = strval(data10);
    mysql_fetch_field("ExPos_Y", data11);
    HouseInfo[i][ExitPos_Y] = strval(data11);
    mysql_fetch_field("ExPos_Z", data12);
    HouseInfo[i][ExitPos_Z] = strval(data12);
    hab jede variable einzeln definiert und dekladirt da ich sonst keine übersicht mehr habe ^^


    //edit siehe hier mal
    mysql_fetch_field(const fieldname[], dest[], MySQL:handle = (MySQL:0));
    das ist die native von meinem fetch_field so zu sagen fehlt mysq:handle^^ also conneciton ^^

    Der Server: [GRG]Grand Racing Game wurde 2014 Eingestampft.
    Weitere Infos: Klick Mich

  • Hier bitte schön:
    mysql_fetch_field("Level", data);
    HouseInfo[i][Level] = strval(data);
    mysql_fetch_field("Kosten", data);
    HouseInfo[i][Kosten] = strval(data);
    mysql_fetch_field("HausKey", data);
    HouseInfo[i][Housekey] = strval(data);
    mysql_fetch_field("Verkauft", data);
    HouseInfo[i][Verkauft] = strval(data);
    mysql_fetch_field("Interior", data);
    HouseInfo[i][Interior] = strval(data);
    mysql_fetch_field("Local", data);
    HouseInfo[i][Local] = strval(data);
    mysql_fetch_field("PickID", data);
    HouseInfo[i][PickID] = strval(data);
    mysql_fetch_field("EnPos_X", data);
    HouseInfo[i][EnterPos_X] = floatstr(data);
    mysql_fetch_field("EnPos_Y", data);
    HouseInfo[i][EnterPos_Y] = floatstr(data);
    mysql_fetch_field("EnPos_Z", data);
    HouseInfo[i][EnterPos_Z] = floatstr(data);
    mysql_fetch_field("ExPos_X", data);
    HouseInfo[i][ExitPos_X] = floatstr(data);
    mysql_fetch_field("ExPos_Y", data);
    HouseInfo[i][ExitPos_Y] = floatstr(data);
    mysql_fetch_field("ExPos_Z", data);
    HouseInfo[i][ExitPos_Z] = floatstr(data);


    bei Floats musst du nachtürlich floatstr(data); benutzen ;)


    /EDIT:
    mysql_fetch_field(const fieldname[], dest[], MySQL:handle = (MySQL:0));
    Ja das brauchst du nur wenn du z.B. 2 Verbindungen in deinem Script aufbaust.
    Standart mäßig wird das nemlich gesetzt deswegen is auch ein = da ;)


  • E:\Programme\SAMP\filterscripts\GRG_HouseOwner.pwn(955) : error 035: argument type mismatch (argument 1)
    E:\Programme\SAMP\filterscripts\GRG_HouseOwner.pwn(957) : error 035: argument type mismatch (argument 1)
    E:\Programme\SAMP\filterscripts\GRG_HouseOwner.pwn(959) : error 035: argument type mismatch (argument 1)
    E:\Programme\SAMP\filterscripts\GRG_HouseOwner.pwn(961) : error 035: argument type mismatch (argument 1)
    E:\Programme\SAMP\filterscripts\GRG_HouseOwner.pwn(963) : error 035: argument type mismatch (argument 1)
    E:\Programme\SAMP\filterscripts\GRG_HouseOwner.pwn(965) : error 035: argument type mismatch (argument 1)
    E:\Programme\SAMP\filterscripts\GRG_HouseOwner.pwn(967) : error 035: argument type mismatch (argument 1)
    E:\Programme\SAMP\filterscripts\GRG_HouseOwner.pwn(969) : error 035: argument type mismatch (argument 1)
    E:\Programme\SAMP\filterscripts\GRG_HouseOwner.pwn(971) : error 035: argument type mismatch (argument 1)
    E:\Programme\SAMP\filterscripts\GRG_HouseOwner.pwn(973) : error 035: argument type mismatch (argument 1)
    E:\Programme\SAMP\filterscripts\GRG_HouseOwner.pwn(975) : error 035: argument type mismatch (argument 1)
    E:\Programme\SAMP\filterscripts\GRG_HouseOwner.pwn(977) : error 035: argument type mismatch (argument 1)
    E:\Programme\SAMP\filterscripts\GRG_HouseOwner.pwn(979) : error 035: argument type mismatch (argument 1)
    Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase



    13 Errors.


    immer noch die gleichen errors an der gleichen stelle


    //edit ein error beseitigt


    //edit Code mit eingefügt


    mysql_fetch_field("Level", data);
    HouseInfo[i][Level] = strval(data);
    mysql_fetch_field("Kosten", data);
    HouseInfo[i][Kosten] = strval(data);
    mysql_fetch_field("HausKey", data);
    HouseInfo[i][Housekey] = strval(data);
    mysql_fetch_field("Verkauft", data);
    HouseInfo[i][Verkauft] = strval(data);
    mysql_fetch_field("Interior", data);
    HouseInfo[i][Interior] = strval(data);
    mysql_fetch_field("Local", data);
    HouseInfo[i][Local] = strval(data);
    mysql_fetch_field("PickID", data);
    HouseInfo[i][PickID] = strval(data);
    mysql_fetch_field("EnPos_X", data);
    HouseInfo[i][EnterPos_X] = floatstr(data);
    mysql_fetch_field("EnPos_Y", data);
    HouseInfo[i][EnterPos_Y] = floatstr(data);
    mysql_fetch_field("EnPos_Z", data);
    HouseInfo[i][EnterPos_Z] = floatstr(data);
    mysql_fetch_field("ExPos_X", data);
    HouseInfo[i][ExitPos_X] = floatstr(data);
    mysql_fetch_field("ExPos_Y", data);
    HouseInfo[i][ExitPos_Y] = floatstr(data);
    mysql_fetch_field("ExPos_Z", data);
    HouseInfo[i][ExitPos_Z] = floatstr(data);


    //edit weis den niemand wie ich die errors weg bekomme?
    Ich habe mit mysql_fetch_field nie gearbeitet.

    Der Server: [GRG]Grand Racing Game wurde 2014 Eingestampft.
    Weitere Infos: Klick Mich

    2 Mal editiert, zuletzt von [GRG]Linux ()

  • http://wiki.sa-mp.com/wiki/MySQL#mysql_fetch_field


    SO mal davonb abgesehen, rate ich davon ab mit fetch_field zu arbeiten. Nachdem du mit dem ersten query die Mysql Tabelle ausgelesen hast,
    kannst du recht simpel mit sscanf den String den du bekommst auslesen.


    Wenn du Beispiele haben möchtest say so. Wenn das reicht mach ich mir nicht die Arbeit :D

  • Hierfür benötigst du das sscanf Plugin von Y_Less.



    enum info {
    Level,
    owner,
    housekey,
    bla1,
    bla2,
    bla3,
    bla4,
    Float: 1,
    Float: 2,
    Floar: 3,
    Float 4,


    }




    new sql[256]; //WIe groß der String sein muss hängt vom Output ab. Ich persönlich hab brauche nen 1000 Zellen großen :S(riesen Tabelle)
    format(sql,sizeof(sql),"SELECT * FROM `house` WHERE `ID` = '%d' ", HouseInfo[i][ID]);
    mysql_query(sql);
    mysql_store_result();
    mysql_fetch_row_format(sql,"|");
    if(sscanf(sql,"p<|>e<dddddddffffff>", HouseInfo[i])){ //Achtung dein Enum muss genau in der Reihenfolge wie mysql deklariert sein!
    print("Error: Could Not Read from Mysql Database");
    }


    Enum und Mysql Tabelle sollten also gleich aufgebaut sein(was zur übersicht ja auch nicht schlecht ist)


    mfg
    Hold


    //edit 1: Unvollständig