25.12.2013, 19:19
So my houses that i create won't save in my database, This is the line of Load And Saving houses...
And this is my database SQL
Код:
stock SaveHouse(houseid) { new string[2048]; format(string, sizeof(string), "UPDATE `houses` SET \ `Owned`=%d, \ `Level`=%d, \ `HInteriorWorld`=%d, \ `Description`='%s', \ `Owner`='%s', \ `ExteriorX`=%f, \ `ExteriorY`=%f, \ `ExteriorZ`=%f, \ `ExteriorR`=%f, \ `InteriorX`=%f, \ `InteriorY`=%f, \ `InteriorZ`=%f, \ `InteriorR`=%f,", HouseInfo[houseid][hOwned], HouseInfo[houseid][hLevel], HouseInfo[houseid][hHInteriorWorld], HouseInfo[houseid][hDescription], HouseInfo[houseid][hOwner], HouseInfo[houseid][hExteriorX], HouseInfo[houseid][hExteriorY], HouseInfo[houseid][hExteriorZ], HouseInfo[houseid][hExteriorR], HouseInfo[houseid][hInteriorX], HouseInfo[houseid][hInteriorY], HouseInfo[houseid][hInteriorZ], HouseInfo[houseid][hInteriorR] ); format(string, sizeof(string), "%s \ `Lock`=%d, \ `Rentable`=%d, \ `RentFee`=%d, \ `Value`=%d, \ `SafeMoney`=%d, \ `Pot`=%d, \ `Crack`=%d, \ `Materials`=%d, \ `Weapons0`=%d, \ `Weapons1`=%d, \ `Weapons2`=%d, \ `Weapons3`=%d, \ `Weapons4`=%d, \ `GLUpgrade`=%d, \ `CustomInterior`=%d, \ `CustomExterior`=%d, \ `ExteriorA`=%f, \ `InteriorA`=%f WHERE `id`=%d", string, HouseInfo[houseid][hLock], HouseInfo[houseid][hRentable], HouseInfo[houseid][hRentFee], HouseInfo[houseid][hValue], HouseInfo[houseid][hSafeMoney], HouseInfo[houseid][hPot], HouseInfo[houseid][hCrack], HouseInfo[houseid][hMaterials], HouseInfo[houseid][hWeapons][0], HouseInfo[houseid][hWeapons][1], HouseInfo[houseid][hWeapons][2], HouseInfo[houseid][hWeapons][3], HouseInfo[houseid][hWeapons][4], HouseInfo[houseid][hGLUpgrade], HouseInfo[houseid][hCustomInterior], HouseInfo[houseid][hCustomExterior], HouseInfo[houseid][hExteriorA], HouseInfo[houseid][hInteriorA], houseid+1 ); // Array starts from zero, MySQL starts at 1 (this is why we are adding one). mysql_function_query(MainPipeline, string, false, "OnQueryFinish", "i", SENDDATA_THREAD); } stock CreateHouse(houseid) { new string[2048]; format(string, sizeof(string), "INSERT INTO `houses` VALUES \ `Owned`=%d, \ `Level`=%d, \ `HInteriorWorld`=%d, \ `Description`='%s', \ `Owner`='%s', \ `ExteriorX`=%f, \ `ExteriorY`=%f, \ `ExteriorZ`=%f, \ `ExteriorR`=%f, \ `InteriorX`=%f, \ `InteriorY`=%f, \ `InteriorZ`=%f, \ `InteriorR`=%f,", HouseInfo[houseid][hOwned], HouseInfo[houseid][hLevel], HouseInfo[houseid][hHInteriorWorld], HouseInfo[houseid][hDescription], HouseInfo[houseid][hOwner], HouseInfo[houseid][hExteriorX], HouseInfo[houseid][hExteriorY], HouseInfo[houseid][hExteriorZ], HouseInfo[houseid][hExteriorR], HouseInfo[houseid][hInteriorX], HouseInfo[houseid][hInteriorY], HouseInfo[houseid][hInteriorZ], HouseInfo[houseid][hInteriorR] ); format(string, sizeof(string), "%s \ `Lock`=%d, \ `Rentable`=%d, \ `RentFee`=%d, \ `Value`=%d, \ `SafeMoney`=%d, \ `Pot`=%d, \ `Crack`=%d, \ `Materials`=%d, \ `Weapons0`=%d, \ `Weapons1`=%d, \ `Weapons2`=%d, \ `Weapons3`=%d, \ `Weapons4`=%d, \ `GLUpgrade`=%d, \ `CustomInterior`=%d, \ `CustomExterior`=%d, \ `ExteriorA`=%f, \ `InteriorA`=%f WHERE `id`=%d", string, HouseInfo[houseid][hLock], HouseInfo[houseid][hRentable], HouseInfo[houseid][hRentFee], HouseInfo[houseid][hValue], HouseInfo[houseid][hSafeMoney], HouseInfo[houseid][hPot], HouseInfo[houseid][hCrack], HouseInfo[houseid][hMaterials], HouseInfo[houseid][hWeapons][0], HouseInfo[houseid][hWeapons][1], HouseInfo[houseid][hWeapons][2], HouseInfo[houseid][hWeapons][3], HouseInfo[houseid][hWeapons][4], HouseInfo[houseid][hGLUpgrade], HouseInfo[houseid][hCustomInterior], HouseInfo[houseid][hCustomExterior], HouseInfo[houseid][hExteriorA], HouseInfo[houseid][hInteriorA], houseid+1 ); // Array starts from zero, MySQL starts at 1 (this is why we are adding one). mysql_function_query(MainPipeline, string, false, "OnQueryFinish", "i", SENDDATA_THREAD); } stock SaveHouses() { for(new i = 0; i < MAX_HOUSES; i++) { SaveHouse(i); } return 1; } stock LoadHouse(houseid) { new string[128]; printf("[LoadHouse] Loading HouseID %d's data from database...", houseid); format(string, sizeof(string), "SELECT * FROM `houses` WHERE `id`=%d",houseid+1); // Array starts at zero, MySQL starts at one. mysql_function_query(MainPipeline, string, true, "OnLoadHouse", "i", houseid); } forward OnLoadHouse(index); public OnLoadHouse(index) { new string[64]; new rows, fields; cache_get_data(rows, fields, MainPipeline); for(new field;field<fields;field++) { cache_get_row(index, field, string, MainPipeline); switch(field) { case 0: HouseInfo[index][hSQLId] = strval(string); case 1: HouseInfo[index][hOwned] = strval(string); case 2: HouseInfo[index][hLevel] = strval(string); case 3: HouseInfo[index][hHInteriorWorld] = strval(string); case 4: format(HouseInfo[index][hDescription], 16, "%s", string); case 5: format(HouseInfo[index][hOwner], 24, "%s", string); case 6: HouseInfo[index][hExteriorX] = floatstr(string); case 7: HouseInfo[index][hExteriorY] = floatstr(string); case 8: HouseInfo[index][hExteriorZ] = floatstr(string); case 9: HouseInfo[index][hExteriorR] = floatstr(string); case 10: HouseInfo[index][hInteriorX] = floatstr(string); case 11: HouseInfo[index][hInteriorY] = floatstr(string); case 12: HouseInfo[index][hInteriorZ] = floatstr(string); case 13: HouseInfo[index][hInteriorR] = floatstr(string); case 14: HouseInfo[index][hLock] = strval(string); case 15: HouseInfo[index][hRentable] = strval(string); case 16: HouseInfo[index][hRentFee] = strval(string); case 17: HouseInfo[index][hValue] = strval(string); case 18: HouseInfo[index][hSafeMoney] = strval(string); case 19: HouseInfo[index][hPot] = strval(string); case 20: HouseInfo[index][hCrack] = strval(string); case 21: HouseInfo[index][hMaterials] = strval(string); case 22: HouseInfo[index][hWeapons][0] = strval(string); case 23: HouseInfo[index][hWeapons][1] = strval(string); case 24: HouseInfo[index][hWeapons][2] = strval(string); case 25: HouseInfo[index][hWeapons][3] = strval(string); case 26: HouseInfo[index][hWeapons][4] = strval(string); case 27: HouseInfo[index][hGLUpgrade] = strval(string); case 28: HouseInfo[index][hPickupID] = strval(string); case 29: HouseInfo[index][hCustomInterior] = strval(string); case 30: HouseInfo[index][hCustomExterior] = strval(string); case 31: HouseInfo[index][hExteriorA] = floatstr(string); case 32: HouseInfo[index][hInteriorA] = floatstr(string); } } if(HouseInfo[index][hOwned]) { if(!HouseInfo[index][hRentable]) format(string, sizeof(string), "This house is owned by\n%s\nLevel: %d\nID: %d",HouseInfo[index][hOwner], HouseInfo[index][hLevel], index); else format(string, sizeof(string), "This house is owned by\n%s\nRent: $%d\nLevel: %d\nID: %d\nType /rentroom to rent a room", HouseInfo[index][hOwner], HouseInfo[index][hRentFee], HouseInfo[index][hLevel], index); } else format(string, sizeof(string), "This house is\n for sale!\n Description: %s\nCost: $%d\n Level: %d\nID: %d\nTo buy this house type /buyhouse",HouseInfo[index][hDescription],HouseInfo[index][hValue],HouseInfo[index][hLevel],index); HouseInfo[index][hPickupID] = CreatePickupEx(1273, 23, HouseInfo[index][hExteriorX], HouseInfo[index][hExteriorY], HouseInfo[index][hExteriorZ]); HouseInfo[index][hTextID] = CreateDynamic3DTextLabel(string, COLOR_GREEN, HouseInfo[index][hExteriorX], HouseInfo[index][hExteriorY], HouseInfo[index][hExteriorZ]+0.5,10.0, .testlos = 1, .streamdistance = 10.0); return 1; } stock LoadHouses() { printf("[LoadHouses] Loading data from database..."); mysql_function_query(MainPipeline, "SELECT * FROM `houses`", true, "OnLoadHouses", ""); } forward OnLoadHouses(); public OnLoadHouses() { new string[512], iIndex; new rows, fields; cache_get_data(rows, fields, MainPipeline); while(iIndex<rows) { for(new field;field<fields;field++) { cache_get_row(iIndex, field, string, MainPipeline); switch(field) { case 0: HouseInfo[iIndex][hSQLId] = strval(string); case 1: HouseInfo[iIndex][hOwned] = strval(string); case 2: HouseInfo[iIndex][hLevel] = strval(string); case 3: HouseInfo[iIndex][hHInteriorWorld] = strval(string); case 4: format(HouseInfo[iIndex][hDescription], 16, "%s", string); case 5: format(HouseInfo[iIndex][hOwner], 24, "%s", string); case 6: HouseInfo[iIndex][hExteriorX] = floatstr(string); case 7: HouseInfo[iIndex][hExteriorY] = floatstr(string); case 8: HouseInfo[iIndex][hExteriorZ] = floatstr(string); case 9: HouseInfo[iIndex][hExteriorR] = floatstr(string); case 10: HouseInfo[iIndex][hInteriorX] = floatstr(string); case 11: HouseInfo[iIndex][hInteriorY] = floatstr(string); case 12: HouseInfo[iIndex][hInteriorZ] = floatstr(string); case 13: HouseInfo[iIndex][hInteriorR] = floatstr(string); case 14: HouseInfo[iIndex][hLock] = strval(string); case 15: HouseInfo[iIndex][hRentable] = strval(string); case 16: HouseInfo[iIndex][hRentFee] = strval(string); case 17: HouseInfo[iIndex][hValue] = strval(string); case 18: HouseInfo[iIndex][hSafeMoney] = strval(string); case 19: HouseInfo[iIndex][hPot] = strval(string); case 20: HouseInfo[iIndex][hCrack] = strval(string); case 21: HouseInfo[iIndex][hMaterials] = strval(string); case 22: HouseInfo[iIndex][hWeapons][0] = strval(string); case 23: HouseInfo[iIndex][hWeapons][1] = strval(string); case 24: HouseInfo[iIndex][hWeapons][2] = strval(string); case 25: HouseInfo[iIndex][hWeapons][3] = strval(string); case 26: HouseInfo[iIndex][hWeapons][4] = strval(string); case 27: HouseInfo[iIndex][hGLUpgrade] = strval(string); case 28: HouseInfo[iIndex][hPickupID] = strval(string); case 29: HouseInfo[iIndex][hCustomInterior] = strval(string); case 30: HouseInfo[iIndex][hCustomExterior] = strval(string); case 31: HouseInfo[iIndex][hExteriorA] = floatstr(string); case 32: HouseInfo[iIndex][hInteriorA] = floatstr(string); } } if(HouseInfo[iIndex][hOwned]) { if(!HouseInfo[iIndex][hRentable]) format(string, sizeof(string), "This house is owned by\n%s\nLevel: %d\nID: %d",HouseInfo[iIndex][hOwner], HouseInfo[iIndex][hLevel], iIndex); else format(string, sizeof(string), "This house is owned by\n%s\nRent: $%d\nLevel: %d\nID: %d\nType /rentroom to rent a room", HouseInfo[iIndex][hOwner], HouseInfo[iIndex][hRentFee], HouseInfo[iIndex][hLevel], iIndex); } else format(string, sizeof(string), "This house is\n for sale!\n Description: %s\nCost: $%d\n Level: %d\nID: %d\nTo buy this house type /buyhouse",HouseInfo[iIndex][hDescription],HouseInfo[iIndex][hValue],HouseInfo[iIndex][hLevel],iIndex); HouseInfo[iIndex][hPickupID] = CreatePickupEx(1273, 23, HouseInfo[iIndex][hExteriorX], HouseInfo[iIndex][hExteriorY], HouseInfo[iIndex][hExteriorZ]); HouseInfo[iIndex][hTextID] = CreateDynamic3DTextLabel(string, COLOR_GREEN, HouseInfo[iIndex][hExteriorX], HouseInfo[iIndex][hExteriorY], HouseInfo[iIndex][hExteriorZ]+0.5,10.0, .testlos = 1, .streamdistance = 10.0); iIndex++; } if(iIndex > 0) printf("[LoadHouses] %d houses rehashed/loaded.", iIndex); else printf("[LoadHouses] Failed to load any houses."); return 1; }
Код:
-- ---------------------------- -- Table structure for `houses` -- ---------------------------- DROP TABLE IF EXISTS `houses`; CREATE TABLE `houses` ( `id` int(11) NOT NULL AUTO_INCREMENT, `Owned` int(11) NOT NULL DEFAULT '0', `Level` int(11) NOT NULL DEFAULT '999', `HInteriorWorld` int(11) NOT NULL DEFAULT '9', `Description` varchar(16) NOT NULL DEFAULT 'High', `Owner` varchar(24) NOT NULL DEFAULT 'No-Owner', `ExteriorX` float(10,5) NOT NULL DEFAULT '0.00000', `ExteriorY` float(10,5) NOT NULL DEFAULT '0.00000', `ExteriorZ` float(10,5) NOT NULL DEFAULT '0.00000', `ExteriorR` float(10,5) NOT NULL DEFAULT '0.00000', `InteriorX` float(10,5) NOT NULL DEFAULT '0.00000', `InteriorY` float(10,5) NOT NULL DEFAULT '0.00000', `InteriorZ` float(10,5) NOT NULL DEFAULT '0.00000', `InteriorR` float(10,5) NOT NULL DEFAULT '0.00000', `Lock` int(11) NOT NULL DEFAULT '0', `Rentable` int(11) NOT NULL DEFAULT '0', `RentFee` int(11) NOT NULL DEFAULT '0', `Value` int(11) NOT NULL DEFAULT '0', `SafeMoney` int(11) NOT NULL DEFAULT '0', `Pot` int(11) NOT NULL DEFAULT '0', `Crack` int(11) NOT NULL DEFAULT '0', `Materials` int(11) NOT NULL DEFAULT '0', `Weapons0` int(11) NOT NULL DEFAULT '0', `Weapons1` int(11) NOT NULL DEFAULT '0', `Weapons2` int(11) NOT NULL DEFAULT '0', `Weapons3` int(11) NOT NULL DEFAULT '0', `Weapons4` int(11) NOT NULL DEFAULT '0', `GLUpgrade` int(11) NOT NULL DEFAULT '0', `PickupID` int(11) NOT NULL DEFAULT '0', `CustomInterior` int(11) NOT NULL DEFAULT '0', `CustomExterior` int(11) NOT NULL DEFAULT '0', `ExteriorA` float(10,5) NOT NULL DEFAULT '0.00000', `InteriorA` float(10,5) NOT NULL DEFAULT '0.00000', PRIMARY KEY (`id`), KEY `id` (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; -- ---------------------------- -- Records of houses -- ----------------------------