проблема с сохранением sql
#1

Всем привет.
У меня проблема вот есть у меня система отелей когда я арендую комнату дней на пару дней то все нормально спавнюсь в отели даже когда пере зайду на сервер, но стоит мне отключить сервер и потом включить, я появляюсь с нова в отели но уже как бы я его не арендую
вот код аренды
Код:
                case dHotelRent2:
		{
			if(!response) return 1;
			new time = GetPVarInt(playerid,"selectedhoteltime");
			new price = time*400;
			if(GetPlayerMoneyEx(playerid) < price) return SendClientMessage(playerid,CGRAY,"У Вас не достаточно денег");
			new room = GetPVarInt(playerid,"selectedroom");
			new hotelid = GetPVarInt(playerid,"selectedhotel");
			if(gHotelResidents[hotelid][room]) return SendClientMessage(playerid,CGRAY,"Вы не успели. Этот номер уже занят.");
		       gHotelResidents[hotelid][room] = pData[playerid][pMysqlID];
   			gHotelEndurance[hotelid][room] = gCurDay + time;
			UpdateHotelResidents(hotelid);
			AddHotelBank(hotelid, floatround(price/2));
			new query[128];
			format(query,sizeof(query),"UPDATE `accounts` SET `hotel` = '%d', hotelroom = '%d' WHERE `id` = '%d'",hotelid+1,room,pData[playerid][pMysqlID]);
   			sql_query(zConn, query, QUERY_THREADED);
			pData[playerid][pHotel] = hotelid+1;
			pData[playerid][pHotelRoom] = room;
			format(gHotelName[hotelid][room],MAX_PLAYER_NAME,"%s",pData[playerid][pNickname]);
			format(query,sizeof(query),"UPDATE `hotels` SET `name%d`='%s' WHERE `id`='%d'",room,pData[playerid][pNickname],hotelid+1);
			sql_query(zConn, query);
			TransferMoney(playerid,-1,price,"hotelrent");
			SendClientMessage(playerid,CGREEN,"Поздравляем! Вы арендовали номер в отеле. У вас появилась возможность приобрести транспорт.");
			UpdateHotel3D(hotelid);
		}
а вот код загрузки отеля:
Код:
stock LoadHotels() {
	new Result:hotels = sql_query(zConn, "SELECT * FROM `hotels` ORDER BY `id`", QUERY_CACHED);
	if(sql_num_rows(hotels) != HOTEL_COUNT) print("Ê-âî îòåëåé íå ñîâïàäàåò ñ ïðåäîïðåäåëåííûì êîëè÷åñòâîì");
	else
	{
	    new zRes[256], name[24];
 		for(new i;i<sql_num_rows(hotels);i++)
		{
      		sql_fetch_row(hotels,"|",zRes);
			sql_next_row(hotels);
			sscanf(zRes,"p<|>e<iis[24]iii>a<i>[8]a<i>[8]",gHotelData[i],gHotelResidents[i],gHotelEndurance[i]);
   			for(new k; k<8; k++) {
          	    if(gHotelResidents[i][k]) {
          	    	new id = gHotelResidents[i][k];
          	    	GetPlayerNameByID(id,name);
	   			    format(gHotelName[i][k], 24, "%s", name);
	            	if(gHotelEndurance[i][k]-gCurDay < 0) {
                 		format(zRes, sizeof(zRes), "SELECT `car` FROM `accounts` WHERE `id` = '%d'",id);
						new Result:carfind = sql_query(zConn, zRes, QUERY_CACHED);
						if(sql_num_rows(carfind)) {
							new car = sql_get_field_int(carfind, 0);
                                                        new carID = GetCarSlot(car);
							if(carID != -1) {
								new vehicleid = gCars[carID][carVid];
								new modelid = GetVehicleModel(vehicleid) - 400;
								format(zRes,sizeof(zRes),"DELETE FROM `cars` WHERE `id` = '%d'",car);
								sql_query(zConn, zRes);
								format(zRes,sizeof(zRes),"UPDATE `accounts` SET `car` = '0',`bank` = 'bank+%d' WHERE `id` = '%d'",floatround(gTransport[modelid][trPrice]*0.8),id);
                                                               DestroyVehicle(vehicleid);
								gCars[carID][carOwnerid] = 0;
								gCars[carID][carMysqlID] = 0;
								gCars[carID][carModelid] = 0;
								gCars[carID][carFuel] = 0.0;
								gCars[carID][carDrived] = 0.0;
								gCars[carID][carHealth] = 0.0;
								gCars[carID][carColor1] = 0;
								gCars[carID][carColor2] = 0;
								gCars[carID][carVid] = INVALID_VEHICLE_ID;
								strdel(gCars[carID][carPlate],0,12);
							}
						}

				  		gHotelResidents[i][k] = 0;
						gHotelEndurance[i][k] = 0;
						UpdateHotelResidents(i);
		           	}
				}
          	}
			CreateDynamicPickup(19132,1,gHotels[i][0], gHotels[i][1], gHotels[i][2]);
		 	gHotelArea[i] = CreateDynamicSphere(gHotels[i][0],gHotels[i][1],gHotels[i][2],1.0);
            UpdateHotel3D(i);
		}
	}
	sql_free_result(hotels);
	return 1;
}
и вот вроде сохранения )
Код:
stock UpdateHotelResidents(hotelid)
{
	new query[320],data[128];
	for(new i;i<8;i++)
	{
		if(i)
		{
			format(data,sizeof(data),"%s|%d",data,gHotelResidents[hotelid][i]);
			format(query,sizeof(query),"%s|%d",query,gHotelEndurance[hotelid][i]);
		}
		else
		{
			format(data,sizeof(data),"%d",gHotelResidents[hotelid][i]);
			format(query,sizeof(query),"%d",gHotelEndurance[hotelid][i]);
		}
	}
	format(query,sizeof(query),"UPDATE `hotels` SET `residents` = '%s', `endurance` = '%s' WHERE `id` = '%d'",data,query,hotelid+1);
	sql_query(zConn, query, QUERY_THREADED);
	return 1;
}
кто не будь подскажите.
Reply
#2

Quote:
Originally Posted by grod
Посмотреть сообщение
Всем привет.
я появляюсь с нова в отели но уже как бы я его не арендую
Жесть конечно, но стоило бы уточнить, после перезапуска сервера игрок все-таки является владельцем отеля или просто спавнится в нем?
Очевидно проблема с загрузке/сохранении.
Reply
#3

просто спавнится в нем
Reply
#4

Quote:
Originally Posted by grod
Посмотреть сообщение
просто спавнится в нем
А в БД инфа о владельце остается? Логи мускула есть?
Reply
#5

вот дебуг
Код:
[22:24:16][debug] Natives::sql_query: Executing statement (stmt->id = 3, stmt->query = SELECT * FROM `hotels` ORDER BY `id`)...
[22:24:16][debug] Natives::sql_query: Statement executed (stmt->id = 3, stmt->error = 0). No callback found!
А вот как записано в таблице
Код:
CREATE TABLE `hotels` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `ownerid` int(9) NOT NULL,
  `owner` varchar(24) COLLATE cp1251_bin NOT NULL,
  `price` int(5) NOT NULL,
  `bank` int(5) NOT NULL,
  `residents` varchar(128) COLLATE cp1251_bin NOT NULL DEFAULT '0|0|0|0|0|0|0|0',
  `endurance` varchar(128) COLLATE cp1251_bin NOT NULL DEFAULT '0|0|0|0|0|0|0|0',
  PRIMARY KEY (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=cp1251 COLLATE=cp1251_bin AUTO_INCREMENT=4 ;
Reply
#6

Quote:
Originally Posted by grod
Посмотреть сообщение
вот дебуг
Код:
[22:24:16][debug] Natives::sql_query: Executing statement (stmt->id = 3, stmt->query = SELECT * FROM `hotels` ORDER BY `id`)...
[22:24:16][debug] Natives::sql_query: Statement executed (stmt->id = 3, stmt->error = 0). No callback found!
Ну вот же ошибка, честно говоря не работал с этим плагином, но очевидно запрос должен вызывать колбэк (а может и нет ). В функции загрузки сей косяк вроде.
Reply
#7

ок спс проверю все еще раз
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)