House System - Loading Houses (Help)
#1

Hi guys! Is this a good way to load about 1.200 Houses from database? Can somebody help me to speed up this thing?


pawn Код:
stock LoadHouses()
{
    for(new i=0; i<MAX_HOUSES;i++)
    {
        format(HQuery, sizeof(HQuery), "SELECT * FROM `houses` WHERE `HouseID` = %d", HouseID);
        mysql_query(HQuery);
        mysql_store_result();

        if(mysql_fetch_row_format(HQuery, "|"))
        {
            mysql_fetch_field_row(hsavingstring, "User"); format(HouseInfo[HouseID][hOwner], 24, "%s", hsavingstring);
            mysql_fetch_field_row(hsavingstring, "EnterX"); HouseInfo[HouseID][hEnterX] = floatstr(hsavingstring);
            mysql_fetch_field_row(hsavingstring, "EnterY"); HouseInfo[HouseID][hEnterY] = floatstr(hsavingstring);
            mysql_fetch_field_row(hsavingstring, "EnterZ"); HouseInfo[HouseID][hEnterZ] = floatstr(hsavingstring);
            mysql_fetch_field_row(hsavingstring, "ExitX"); HouseInfo[HouseID][hExitX] = floatstr(hsavingstring);
            mysql_fetch_field_row(hsavingstring, "ExitY"); HouseInfo[HouseID][hExitY] = floatstr(hsavingstring);
            mysql_fetch_field_row(hsavingstring, "ExitZ"); HouseInfo[HouseID][hExitZ] = floatstr(hsavingstring);
            mysql_fetch_field_row(hsavingstring, "Interior"); HouseInfo[HouseID][hInterior] = strval(hsavingstring);
            mysql_fetch_field_row(hsavingstring, "Price"); HouseInfo[HouseID][hPrice] = strval(hsavingstring);
            mysql_fetch_field_row(hsavingstring, "VirtualWorld"); HouseInfo[HouseID][hVirtualWorld] = strval(hsavingstring);
            mysql_fetch_field_row(hsavingstring, "Owned"); HouseInfo[HouseID][hOwned] = strval(hsavingstring);
            mysql_fetch_field_row(hsavingstring, "Locked"); HouseInfo[HouseID][hLocked] = strval(hsavingstring);
            mysql_fetch_field_row(hsavingstring, "Weapon ID 1"); HouseInfo[HouseID][hWeaponID1] = strval(hsavingstring);
            mysql_fetch_field_row(hsavingstring, "Weapon ID 2"); HouseInfo[HouseID][hWeaponID2] = strval(hsavingstring);
            mysql_fetch_field_row(hsavingstring, "Weapon ID 3"); HouseInfo[HouseID][hWeaponID3] = strval(hsavingstring);
            mysql_fetch_field_row(hsavingstring, "Weapon ID 1 Ammo"); HouseInfo[HouseID][hWeaponID1Ammo] = strval(hsavingstring);
            mysql_fetch_field_row(hsavingstring, "Weapon ID 2 Ammo"); HouseInfo[HouseID][hWeaponID2Ammo] = strval(hsavingstring);
            mysql_fetch_field_row(hsavingstring, "Weapon ID 3 Ammo"); HouseInfo[HouseID][hWeaponID3Ammo] = strval(hsavingstring);
            mysql_fetch_field_row(hsavingstring, "Money"); HouseInfo[HouseID][hMoney] = strval(hsavingstring);
            mysql_fetch_field_row(hsavingstring, "Rent User"); format(HouseInfo[HouseID][hRentUser], 24, "%s", hsavingstring);
            mysql_fetch_field_row(hsavingstring, "Rent Price"); HouseInfo[HouseID][hRentPrice] = strval(hsavingstring);
            mysql_fetch_field_row(hsavingstring, "Rented"); HouseInfo[HouseID][hRented] = strval(hsavingstring);
            mysql_fetch_field_row(hsavingstring, "Rent Disabled"); HouseInfo[HouseID][hRentDisabled] = strval(hsavingstring);
            mysql_fetch_field_row(hsavingstring, "Alarm"); HouseInfo[HouseID][hAlarm] = strval(hsavingstring);
            mysql_fetch_field_row(hsavingstring, "VehicleID"); HouseInfo[HouseID][hVehicleID] = strval(hsavingstring);
            mysql_fetch_field_row(hsavingstring, "CarX"); HouseInfo[HouseID][hCarX] = floatstr(hsavingstring);
            mysql_fetch_field_row(hsavingstring, "CarY"); HouseInfo[HouseID][hCarY] = floatstr(hsavingstring);
            mysql_fetch_field_row(hsavingstring, "CarZ"); HouseInfo[HouseID][hCarZ] = floatstr(hsavingstring);
            mysql_fetch_field_row(hsavingstring, "CarA"); HouseInfo[HouseID][hCarA] = floatstr(hsavingstring);
            mysql_fetch_field_row(hsavingstring, "Color1"); HouseInfo[HouseID][hCarColor1] = strval(hsavingstring);
            mysql_fetch_field_row(hsavingstring, "Color2"); HouseInfo[HouseID][hCarColor2] = strval(hsavingstring);
            mysql_fetch_field_row(hsavingstring, "Car Locked"); HouseInfo[HouseID][hCarLocked] = strval(hsavingstring);
            mysql_fetch_field_row(hsavingstring, "Car Owner"); format(HouseInfo[HouseID][hCarOwner], 24, "%s", hsavingstring);
            mysql_fetch_field_row(hsavingstring, "Car Weapon ID 1"); HouseInfo[HouseID][hCarWeaponID1] = strval(hsavingstring);
            mysql_fetch_field_row(hsavingstring, "Car Weapon ID 2"); HouseInfo[HouseID][hCarWeaponID2] = strval(hsavingstring);
            mysql_fetch_field_row(hsavingstring, "Car Weapon ID 1 Ammo"); HouseInfo[HouseID][hCarWeaponID1Ammo] = strval(hsavingstring);
            mysql_fetch_field_row(hsavingstring, "Car Weapon ID 2 Ammo"); HouseInfo[HouseID][hCarWeaponID2Ammo] = strval(hsavingstring);
            mysql_fetch_field_row(hsavingstring, "Car Money"); HouseInfo[HouseID][hCarMoney] = strval(hsavingstring);
            if(HouseInfo[HouseID][hOwned] == 1)
            {
                if(HouseInfo[HouseID][hRentDisabled] == 0)
                {
                    format(hstring, sizeof(hstring), "Owner: %s\nHouse ID: %d\nRent User: %s\nRent Price: %d", HouseInfo[HouseID][hOwner], HouseID, HouseInfo[HouseID][hRentUser], HouseInfo[HouseID][hRentPrice]);
                    HouseInfo[HouseID][hLabel] = Create3DTextLabel(hstring, 0x21DD00FF, HouseInfo[HouseID][hEnterX], HouseInfo[HouseID][hEnterY], HouseInfo[HouseID][hEnterZ], 40.0, 0);
                    HouseInfo[HouseID][hPickup] = CreatePickup(1239, 23, HouseInfo[HouseID][hEnterX], HouseInfo[HouseID][hEnterY], HouseInfo[HouseID][hEnterZ], 0);
                }
                else
                {
                    format(hstring, sizeof(hstring), "Owner: %s\nHouse ID: %d\nRent Disabled", HouseInfo[HouseID][hOwner], HouseID);
                    HouseInfo[HouseID][hLabel] = Create3DTextLabel(hstring, 0x21DD00FF, HouseInfo[HouseID][hEnterX], HouseInfo[HouseID][hEnterY], HouseInfo[HouseID][hEnterZ], 40.0, 0);
                    HouseInfo[HouseID][hPickup] = CreatePickup(1239, 23, HouseInfo[HouseID][hEnterX], HouseInfo[HouseID][hEnterY], HouseInfo[HouseID][hEnterZ], 0);
                }
            }
            else
            {
                format(hstring, sizeof(hstring), "For sale!\nPrice: %d\nHouse ID: %d\nType /buyhouse to buy house!", HouseInfo[HouseID][hPrice], HouseID);
                HouseInfo[HouseID][hLabel] = Create3DTextLabel(hstring, 0x21DD00FF, HouseInfo[HouseID][hEnterX], HouseInfo[HouseID][hEnterY], HouseInfo[HouseID][hEnterZ], 40.0, 0);
                HouseInfo[HouseID][hPickup] = CreatePickup(1273, 23, HouseInfo[HouseID][hEnterX], HouseInfo[HouseID][hEnterY], HouseInfo[HouseID][hEnterZ], 0);
            }
        }
        if(HouseInfo[HouseID][hVehicleID] != 0 && HouseInfo[HouseID][hCarX] != 0.0 && HouseInfo[HouseID][hCarY] != 0.0 && HouseInfo[HouseID][hCarZ] != 0.0 && HouseInfo[HouseID][hCarA] > 0.0)
        {
            HouseInfo[HouseID][hCar] = AddStaticVehicle(HouseInfo[HouseID][hVehicleID], HouseInfo[HouseID][hCarX], HouseInfo[HouseID][hCarY], HouseInfo[HouseID][hCarZ], HouseInfo[HouseID][hCarA], HouseInfo[HouseID][hCarColor1], HouseInfo[HouseID][hCarColor2]);
        }
        mysql_free_result();
        Iter_Add(Houses, HouseID);
        HouseID++;
        if(HouseID > MAX_HOUSES)
        {
            print("You reached maximum number of houses! Please enlarge the #define MAX_HOUSES\nin S32_House.inc! If you don't enlarge it, some houses won't work properly!");
        }
    }
    return 1;
}
Reply
#2

I do it the same way, if there is a more efficient way, I'd like to see a reply.

The only thing that I am wondering is, why do you need to speed it up? You should only do this on gamemode start up, so unless you use it every time you delete/reload the houses, I think this would be fine.
Reply
#3

I forget to say: My houses don't appear
Reply
#4

Quote:
Originally Posted by Anonym2009
Посмотреть сообщение
I forget to say: My houses don't appear
3D texts does?
Reply
#5

You can use the latest mysql plugin which allows you to cache data and supports threading. It will speed up your loading for like 20x and it's easy to manage aswell.
Reply
#6

It's my fault ) I mixed up Enter Pos with Exit Pos ... So... any faster way to load this? Nope?
Reply
#7

I think y_ini or dini is faster,please correnct me if I am wrong
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)