Loading Houses from MySQL (5 days later)..
#1

Some fool keeps deleting my threads so I'll make it for the 20th time.

Whenever I /createhouse they all create but when I restart the game mode all the houses pickups show up but only one of them actually works using commands.

/createhouse command:

pawn Код:
CMD:createhouse(playerid, params[])
{
    new string[128], query[1500], Float:x, Float:y, Float:z, Float:a;
    GetPlayerPos(playerid, x, y, z);
    GetPlayerFacingAngle(playerid, a);
    if(isnull(params)) return SendClientMessage(playerid, -1, ""Grey"Syntax"White": /createhouse [address].");
    for(new houseid=1; houseid<MAX_HOUSES; houseid++)
    {
        if(HouseInfo[houseid][hID] != 0) continue;
        HouseInfo[houseid][hID] = houseid;
        format(HouseInfo[houseid][hAddress], 100, "%s", params);
        format(HouseInfo[houseid][hOwner],  MAX_PLAYER_NAME, "None");
        HouseInfo[houseid][hOwned] = 0;
        HouseInfo[houseid][hPrice] = 120000;
        HouseInfo[houseid][hX] = x;
        HouseInfo[houseid][hY] = y;
        HouseInfo[houseid][hZ] = z;
        HouseInfo[houseid][hEnterX] = 2495.8945;
        HouseInfo[houseid][hEnterY] = -1693.3905;
        HouseInfo[houseid][hEnterZ] = 1014.7422;
        HouseInfo[houseid][hEnterA] = 179.3163;
        HouseInfo[houseid][hExitX] = x;
        HouseInfo[houseid][hExitY] = y;
        HouseInfo[houseid][hExitZ] = z;
        HouseInfo[houseid][hExitA] = 0;
        HouseInfo[houseid][hInterior] = 3;
        HouseInfo[houseid][hVirtualWorld] = houseid+1;
        HouseInfo[houseid][hPickUp] = CreateDynamicPickup(1273, 1, x, y, z, 0);
        format(string, sizeof(string), ""Fuschia"Address"White": %s\n"Fuschia"Owner"White": %s\n"Fuschia"Price"White": $%d", HouseInfo[houseid][hAddress], HouseInfo[houseid][hOwner], HouseInfo[houseid][hPrice]);
        HouseInfo[houseid][hText] = CreateDynamic3DTextLabel(string, -1, x, y, z, 20.0);
        format(query, sizeof(query), "INSERT INTO houses (ID, Address, Owner, Owned, Price, X, Y, Z, EnterX, EnterY, EnterZ, EnterA, ExitX, ExitY, ExitZ, ExitA, Interior, VirtualWorld) VALUES (%d, '%s', '%s', %d, %d, %f, %f, %f, %f, %f, %f, %f, %f, %f, %f, %f, %d, %d)", HouseInfo[houseid][hID], HouseInfo[houseid][hAddress], HouseInfo[houseid][hOwner], HouseInfo[houseid][hOwned], HouseInfo[houseid][hPrice], HouseInfo[houseid][hX], HouseInfo[houseid][hY], HouseInfo[houseid][hZ],
        HouseInfo[houseid][hEnterX], HouseInfo[houseid][hEnterY], HouseInfo[houseid][hEnterZ], HouseInfo[houseid][hEnterA], HouseInfo[houseid][hExitX], HouseInfo[houseid][hExitY], HouseInfo[houseid][hExitZ], HouseInfo[houseid][hExitA], HouseInfo[houseid][hInterior], HouseInfo[houseid][hVirtualWorld]);
        mysql_query(query);
        format(string, sizeof(string), ""Green"Notice"White": You have created house ID %d.", HouseInfo[houseid][hID]);
        SendClientMessage(playerid, -1, string);
        break;
    }
    return 1;
}
LoadHouses(); stock:

pawn Код:
stock LoadHouses()
{
    new query[300], savingstring[20], string[256];
    for(new houseid=1; houseid < MAX_HOUSES; houseid++)
    {
        mysql_query("SELECT * FROM houses");
        mysql_store_result();
        while(mysql_fetch_row_format(query,"|"))
        {
            mysql_fetch_field_row(savingstring, "ID"); HouseInfo[houseid][hID] = strval(savingstring);
            mysql_fetch_field_row(savingstring, "Address"); format(HouseInfo[houseid][hAddress], 100, "%s", savingstring);
            mysql_fetch_field_row(savingstring, "Owner"); format(HouseInfo[houseid][hOwner], MAX_PLAYER_NAME, "%s", savingstring);
            mysql_fetch_field_row(savingstring, "Owned"); HouseInfo[houseid][hOwned] = strval(savingstring);
            mysql_fetch_field_row(savingstring, "Price"); HouseInfo[houseid][hPrice] = strval(savingstring);
            mysql_fetch_field_row(savingstring, "X"); HouseInfo[houseid][hX] = floatstr(savingstring);
            mysql_fetch_field_row(savingstring, "Y"); HouseInfo[houseid][hY] = floatstr(savingstring);
            mysql_fetch_field_row(savingstring, "Z"); HouseInfo[houseid][hZ] = floatstr(savingstring);
            mysql_fetch_field_row(savingstring, "EnterX"); HouseInfo[houseid][hEnterX] = floatstr(savingstring);
            mysql_fetch_field_row(savingstring, "EnterY"); HouseInfo[houseid][hEnterY] = floatstr(savingstring);
            mysql_fetch_field_row(savingstring, "EnterZ"); HouseInfo[houseid][hEnterZ] = floatstr(savingstring);
            mysql_fetch_field_row(savingstring, "EnterA"); HouseInfo[houseid][hEnterA] = floatstr(savingstring);
            mysql_fetch_field_row(savingstring, "ExitX"); HouseInfo[houseid][hExitX] = floatstr(savingstring);
            mysql_fetch_field_row(savingstring, "ExitY"); HouseInfo[houseid][hExitY] = floatstr(savingstring);
            mysql_fetch_field_row(savingstring, "ExitZ"); HouseInfo[houseid][hExitZ] = floatstr(savingstring);
            mysql_fetch_field_row(savingstring, "ExitA"); HouseInfo[houseid][hExitA] = floatstr(savingstring);
            mysql_fetch_field_row(savingstring, "Interior"); HouseInfo[houseid][hInterior] = strval(savingstring);
            mysql_fetch_field_row(savingstring, "VirtualWorld"); HouseInfo[houseid][hVirtualWorld] = strval(savingstring);
        }
        HouseInfo[houseid][hPickUp] = CreateDynamicPickup(1273, 1, HouseInfo[houseid][hX], HouseInfo[houseid][hY], HouseInfo[houseid][hZ], 0);
        format(string, sizeof(string), ""Fuschia"Address"White": %s\n"Fuschia"Owner"White": %s\n"Fuschia"Price"White": $%d", HouseInfo[houseid][hAddress], HouseInfo[houseid][hOwner], HouseInfo[houseid][hPrice]);
        HouseInfo[houseid][hText] = CreateDynamic3DTextLabel(string, -1, HouseInfo[houseid][hX], HouseInfo[houseid][hY], HouseInfo[houseid][hZ], 20.0);
        mysql_free_result();
        printf("All houses have been successfully loaded.");
        return 1;
    }
    return 1;
}
Please help me. I have made my script from scratch and done a lot to it, I don't wanna have to give up just because I can't get the houses to work :/
I will +rep.
Reply
#2

You've got problem with saving the players hosues most likely or the cords if your infopickup aren't placed in correct order.
Reply
#3

What do you mean by "but only one of them actually works using commands."?
Reply
#4

Код:
stock LoadHouses()
{
    new query[300], savingstring[20], string[256];
    for(new houseid=1; houseid < MAX_HOUSES; houseid++)
    {
        mysql_query("SELECT * FROM houses");
        mysql_store_result();
        while(mysql_fetch_row_format(query,"|"))
        {
            mysql_fetch_field_row(savingstring, "ID"); HouseInfo[houseid][hID] = strval(savingstring);
            mysql_fetch_field_row(savingstring, "Address"); format(HouseInfo[houseid][hAddress], 100, "%s", savingstring);
            mysql_fetch_field_row(savingstring, "Owner"); format(HouseInfo[houseid][hOwner], MAX_PLAYER_NAME, "%s", savingstring);
            mysql_fetch_field_row(savingstring, "Owned"); HouseInfo[houseid][hOwned] = strval(savingstring);
            mysql_fetch_field_row(savingstring, "Price"); HouseInfo[houseid][hPrice] = strval(savingstring);
            mysql_fetch_field_row(savingstring, "X"); HouseInfo[houseid][hX] = floatstr(savingstring);
            mysql_fetch_field_row(savingstring, "Y"); HouseInfo[houseid][hY] = floatstr(savingstring);
            mysql_fetch_field_row(savingstring, "Z"); HouseInfo[houseid][hZ] = floatstr(savingstring);
            mysql_fetch_field_row(savingstring, "EnterX"); HouseInfo[houseid][hEnterX] = floatstr(savingstring);
            mysql_fetch_field_row(savingstring, "EnterY"); HouseInfo[houseid][hEnterY] = floatstr(savingstring);
            mysql_fetch_field_row(savingstring, "EnterZ"); HouseInfo[houseid][hEnterZ] = floatstr(savingstring);
            mysql_fetch_field_row(savingstring, "EnterA"); HouseInfo[houseid][hEnterA] = floatstr(savingstring);
            mysql_fetch_field_row(savingstring, "ExitX"); HouseInfo[houseid][hExitX] = floatstr(savingstring);
            mysql_fetch_field_row(savingstring, "ExitY"); HouseInfo[houseid][hExitY] = floatstr(savingstring);
            mysql_fetch_field_row(savingstring, "ExitZ"); HouseInfo[houseid][hExitZ] = floatstr(savingstring);
            mysql_fetch_field_row(savingstring, "ExitA"); HouseInfo[houseid][hExitA] = floatstr(savingstring);
            mysql_fetch_field_row(savingstring, "Interior"); HouseInfo[houseid][hInterior] = strval(savingstring);
            mysql_fetch_field_row(savingstring, "VirtualWorld"); HouseInfo[houseid][hVirtualWorld] = strval(savingstring);
HouseInfo[houseid][hPickUp] = CreateDynamicPickup(1273, 1, HouseInfo[houseid][hX], HouseInfo[houseid][hY], HouseInfo[houseid][hZ], 0);
        format(string, sizeof(string), ""Fuschia"Address"White": %s\n"Fuschia"Owner"White": %s\n"Fuschia"Price"White": $%d", HouseInfo[houseid][hAddress], HouseInfo[houseid][hOwner], HouseInfo[houseid][hPrice]);
        HouseInfo[houseid][hText] = CreateDynamic3DTextLabel(string, -1, HouseInfo[houseid][hX], HouseInfo[houseid][hY], HouseInfo[houseid][hZ], 20.0);
        }
        
        mysql_free_result();
        printf("All houses have been successfully loaded.");
        return 1;
    }
    return 1;
}
Reply
#5

Try sscanf witf enum maybe it works now

pawn Код:
stock LoadHouses()
{
    new query[300], savingstring[20], string[256];
    new houseid = 0;
    mysql_query("SELECT * FROM houses");
    mysql_store_result();
    while(mysql_fetch_row_format(query,"|"))
    {
        ++houseid;
        if(sscanf(query,"p<|>e<is[100]s[" #MAX_PLAYER_NAME "]iifffffffffffii>",HouseInfo[houseid]))
        {
            printf("Error HouseID %d",houseid);
            continue;
        }
        HouseInfo[houseid][hPickUp] = CreateDynamicPickup(1273, 1, HouseInfo[houseid][hX], HouseInfo[houseid][hY], HouseInfo[houseid][hZ], 0);
        format(string, sizeof(string), ""Fuschia"Address"White": %s\n"Fuschia"Owner"White": %s\n"Fuschia"Price"White": $%d", HouseInfo[houseid][hAddress], HouseInfo[houseid][hOwner], HouseInfo[houseid][hPrice]);
        HouseInfo[houseid][hText] = CreateDynamic3DTextLabel(string, -1, HouseInfo[houseid][hX], HouseInfo[houseid][hY], HouseInfo[houseid][hZ], 20.0);
    }
    mysql_free_result();
    printf("All %d houses have been successfully loaded.",houseid);
    return 1;
}
Reply
#6

It was only mistake, that the pickup and text creating was not inside while
Reply
#7

I tried that but it only displays the pickup and text3dlabel so I changed the code to this:

pawn Код:
stock LoadHouses()
{
    new query[300], savingstring[20], string[256];
    new houseid = 1;
    mysql_query("SELECT * FROM houses");
    mysql_store_result();
    while(mysql_fetch_row_format(query,"|"))
    {
        mysql_fetch_field_row(savingstring, "ID"); HouseInfo[houseid][hID] = strval(savingstring);
        mysql_fetch_field_row(savingstring, "Address"); format(HouseInfo[houseid][hAddress], 100, "%s", savingstring);
        mysql_fetch_field_row(savingstring, "Owner"); format(HouseInfo[houseid][hOwner], MAX_PLAYER_NAME, "%s", savingstring);
        mysql_fetch_field_row(savingstring, "Owned"); HouseInfo[houseid][hOwned] = strval(savingstring);
        mysql_fetch_field_row(savingstring, "Price"); HouseInfo[houseid][hPrice] = strval(savingstring);
        mysql_fetch_field_row(savingstring, "X"); HouseInfo[houseid][hX] = floatstr(savingstring);
        mysql_fetch_field_row(savingstring, "Y"); HouseInfo[houseid][hY] = floatstr(savingstring);
        mysql_fetch_field_row(savingstring, "Z"); HouseInfo[houseid][hZ] = floatstr(savingstring);
        mysql_fetch_field_row(savingstring, "EnterX"); HouseInfo[houseid][hEnterX] = floatstr(savingstring);
        mysql_fetch_field_row(savingstring, "EnterY"); HouseInfo[houseid][hEnterY] = floatstr(savingstring);
        mysql_fetch_field_row(savingstring, "EnterZ"); HouseInfo[houseid][hEnterZ] = floatstr(savingstring);
        mysql_fetch_field_row(savingstring, "EnterA"); HouseInfo[houseid][hEnterA] = floatstr(savingstring);
        mysql_fetch_field_row(savingstring, "ExitX"); HouseInfo[houseid][hExitX] = floatstr(savingstring);
        mysql_fetch_field_row(savingstring, "ExitY"); HouseInfo[houseid][hExitY] = floatstr(savingstring);
        mysql_fetch_field_row(savingstring, "ExitZ"); HouseInfo[houseid][hExitZ] = floatstr(savingstring);
        mysql_fetch_field_row(savingstring, "ExitA"); HouseInfo[houseid][hExitA] = floatstr(savingstring);
        mysql_fetch_field_row(savingstring, "Interior"); HouseInfo[houseid][hInterior] = strval(savingstring);
        mysql_fetch_field_row(savingstring, "VirtualWorld"); HouseInfo[houseid][hVirtualWorld] = strval(savingstring);
        HouseInfo[houseid][hPickUp] = CreateDynamicPickup(1273, 1, HouseInfo[houseid][hX], HouseInfo[houseid][hY], HouseInfo[houseid][hZ], 0);
        format(string, sizeof(string), "ID: %d\n"Fuschia"Address"White": %s\n"Fuschia"Owner"White": %s\n"Fuschia"Price"White": $%d", HouseInfo[houseid][hID], HouseInfo[houseid][hAddress], HouseInfo[houseid][hOwner], HouseInfo[houseid][hPrice]);
        HouseInfo[houseid][hText] = CreateDynamic3DTextLabel(string, -1, HouseInfo[houseid][hX], HouseInfo[houseid][hY], HouseInfo[houseid][hZ], 20.0);
        houseid++;
    }
    printf("All houses have been successfully loaded.");
    mysql_free_result();
    return 1;
}
Now it works completely, thanks anyway
Reply
#8

Oh, I forgot to add the last line, but good that it works
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)