Jeff_Hardy
Компетентный
Система бизнесов (написан только один тип "Отели 3х-звездочные") - MySQL R8 r32
Автор кода: McLuhan
Используется MySQL R8 r32, sscanf, foreach, YCMD, zonenames, streamer(от Incognito).
.sql
define s
new s
OnGameModeInit
OnPlayerPickUpDynamicPickup
OnPlayerKeyStateChange
OnDialogResponse
loadBusiness
stock s
timer 1sek
command s
Усёё
Автор кода: McLuhan
Используется MySQL R8 r32, sscanf, foreach, YCMD, zonenames, streamer(от Incognito).
.sql
PHP:
// Таблица business, вставляем этот код в phpmyadmin
CREATE TABLE IF NOT EXISTS `business` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`owned` tinyint(1) NOT NULL DEFAULT '0', // куплен или нет
`type` tinyint(2) NOT NULL, // тип бизнеса (0 - помещение, 1 - отель)
`mode` int(1) NOT NULL, // режим бизнеса (по задумке это было режимом бизнеса, то есть могут ли в бизнесе быть рабочие, есть ли у бизнеса интерьер и тому подобное)
`lock` tinyint(1) NOT NULL, // закрыт или открыт
`owner` varchar(24) COLLATE cp1251_bin NOT NULL, // имя владельца
`price` int(11) NOT NULL, // цена бизнеса
`enPos` varchar(44) COLLATE cp1251_bin NOT NULL, // координаты входа в бизнес
`name` varchar(29) COLLATE cp1251_bin NOT NULL, // название бизнеса
`address` varchar(30) COLLATE cp1251_bin NOT NULL, // адрес бизнеса
`safe` int(11) NOT NULL DEFAULT '0', // кол-во денег на счету бизнеса
`prod` int(11) NOT NULL DEFAULT '0', // кол-во продуктов на счету бизнеса (в отелях продуктов нет, поэтому именно в отелях это не используется)
`motel` varchar(385) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL, // данные отеля (если тип бизнеса - отель)
`motelLockRooms` varchar(28) COLLATE cp1251_bin NOT NULL, // данные о номерах в отеле (владельцы и статус дверей в отеле) (если тип бизнеса - отель)
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=cp1251 COLLATE=cp1251_bin AUTO_INCREMENT=1 ;
PHP:
// Вначало мода, ко всем дефайнам
#define table_business "business"
#define MAX_BUSINESS 20 // макс. кол-во бизнесов
#define did_makeplace 11
#define did_buyplace 12
#define did_editbuss 13
#define did_editbuss_setType 14
#define did_editbuss_setProds 15
#define did_editbuss_setSafe 16
#define did_controlplace 17
#define did_controlplaceUsedPlace 18
#define did_controlplaceGiveBuss 19
#define did_controlplaceMotelZV 20
#define did_controlbuss 21
#define did_controlbuss_setName 22
#define did_controlbuss_setPriceNumber 23
#define did_controlbuss_putSafe 24
#define did_controlbuss_takeSafe 25
#define did_motelRoom 26
#define did_motelResepshn 27
#define did_motelResepshn_1 28
#define did_motelResepshn_2 29
#define did_motelResepshn_3 30
#define motel2_maxRooms 14 // кол-во номеров в отеле с этой *зв*
#define motel3_maxRooms 14
#define motel4_maxRooms 14
#define motel5_maxRooms 14
#define motel_maxHourRoom 168 // макс. кол-во часов, на сколько можно заселится в отель
PHP:
// ко всем NEW
new modeBusiness[2] = { 0, 0 }; // режимы типа бизнеса, по его типу
new intIdBusiness[2] = { 1, 1 }; // ID-интерьера внутри бизнеса, по его типу
new typeBusiness[2] = { 40, 44 }; // ID-иконки бизнеса на карте, по его типу
new titleTypeBusiness[2][10] = { "Помещение", "Отель" }; // название типа бизнеса, по его типу
new Float: pickupIntExBusiness[2][4] = { // координата пикапа в интерьере бизнеса, по его типу
{-2079.9814,159.0010,1259.1649,269.6918}, // помещение
{0.0,0.0,0.0,0.0} // отель
};
new Float: MotelPickupIntExBusiness[4][4] = { // координаты выхода и отеля
{0.0,0.0,0.0,0.0}, // **
{-39.0173,-1.7115,1028.9629,0.2863}, // ***
{0.0,0.0,0.0,0.0}, // ****
{0.0,0.0,0.0,0.0} // *****
};
new Float: MotelPickupRecepshn[4][3] = { // координаты ресепшена
{0.0,0.0,0.0}, // **
{-38.3504,2.5577,1028.9629}, // ***
{0.0,0.0,0.0}, // ****
{0.0,0.0,0.0} // *****
};
enum businessEnum { bID, bOwned, bType, bMode, bLock, bOwner[MAX_PLAYER_NAME], bPrice, Float: bPos[4], bName[20], bAddress[MAX_ZONE_NAME+8], bSafe, bProd, bMotelInfo[385], bMotelLockRooms[28], bPickup[2], Text3D: bText3D[2], bMapIcon };
new bInfo[MAX_BUSINESS][businessEnum]; // 100
new allbusiness = 0;
new Text3D: pickupBusinessControl3DText[MAX_PLAYERS];
new Text3D: pickupMotelMyRoom3DText[MAX_PLAYERS];
new Text3D: pickupMotelRoom3DText2[motel3_maxRooms];
// motels:
new Float: motel3_posRooms[14][4] = { // 3х звездочный отель
{-47.1381,6.4441,1032.5859,0.7831}, // room 1
{-48.9349,7.4422,1032.5859,301.1235},
{-48.9346,10.1904,1032.5859,242.7332},
{-47.3524,11.4909,1032.5859,175.2036},
{-44.1080,11.4489,1032.5859,188.1510}, // room 5
{-31.2870,11.4478,1035.9760,187.3893},
{-29.3420,10.2700,1035.9760,110.9740},
{-28.5794,7.4942,1035.9760,84.0636},
{-28.6053,4.2945,1035.9760,87.1101},
{-28.6051,1.1944,1035.9760,78.4786}, // room 10
{-28.5555,-1.9950,1035.9760,96.7572},
{-28.5771,-5.3141,1035.9760,85.3330},
{-35.9473,-5.4557,1035.9760,266.3539},
{-35.8998,-2.2778,1035.9760,270.9236} // room 14
};
new Text3D: motel_Text3DRooms[MAX_BUSINESS][motel3_maxRooms+1];
new motel_pickupRecepshn[MAX_BUSINESS];
PHP:
new query[35+1];
format(query, sizeof query, "SELECT * FROM `"table_business"`"), mysql_function_query(cmID, query, true, "mysqlquery_loadBusiness", "");
PHP:
// В OnPlayerPickUpDynamicPickup
for(new i; i < allbusiness; i++)
{
if(pickupid == motel_pickupRecepshn[i])
{
new dialogInfo[1+80+4+30+1+10];
if(GPVI(playerid, "pld_motel_rent") == -1) format(dialogInfo, sizeof dialogInfo, "Вы хотите снять комнату в нашем отеле?"), SPVI(playerid, "motelResepshn_bussID", i);
else if(GPVI(playerid, "pld_motel_rent") == 1)
{
if(GPVI(playerid, "pld_motel_idmotel") == bInfo[i][bID])
{
new d[6];
timestampToDate(GPVI(playerid, "pld_motel_timeOutUnix"), d[0], d[1], d[2], d[3], d[4], d[5]);
new strDateTimeOutMotel[30];
format(strDateTimeOutMotel, sizeof strDateTimeOutMotel, "%i/%i/%i %i:%i:%i", d[0], d[1], d[2], d[3], d[4], d[5]);
format(dialogInfo, sizeof dialogInfo, "Вы проживаете в нашем отеле.\n\n"ccWhite"Ваша комната: №%i.\nДата выселения: %s.\n\nХотите выселится сейчас?", GPVI(playerid, "pld_motel_room"), strDateTimeOutMotel);
SPVI(playerid, "motelResepshn_bussID", i);
}
else return SCM(playerid, -1, ""MSGERROR"Вы уже снимаете комнату в другом отеле.");
}
ShowPlayerDialog(playerid, did_motelResepshn, DIALOG_STYLE_MSGBOX, "Отель - Ресепшн", dialogInfo, "Да", "Нет");
SPVI(playerid, "pickupRetry", true);
break;
}
}
PHP:
// В OnPlayerKeyStateChange
if(newkeys == KEY_WALK) // L.ALT
{
for(new i = 0; i < allbusiness; i++)
{
// вход в бизнес
if(IsPlayerInRangeOfPoint(playerid, 2.0, bInfo[i][bPos][0], bInfo[i][bPos][1], bInfo[i][bPos][2]))
{
if(bInfo[i][bOwned])
{
if(bInfo[i][bType] == 1)
{
if(GPVI(playerid, "pld_motel_idmotel") == bInfo[i][bID])
{
pickupMotelMyRoom3DText[playerid] = CreateDynamic3DTextLabel("ваш номер", cBlue, motel3_posRooms[GPVI(playerid, "pld_motel_room")-1][0], motel3_posRooms[GPVI(playerid, "pld_motel_room")-1][1], motel3_posRooms[GPVI(playerid, "pld_motel_room")-1][2]+0.15, 7.5, INVALID_PLAYER_ID, INVALID_VEHICLE_ID, 1, bInfo[i][bID], intIdBusiness[bInfo[i][bType]], playerid);
}
}
if(GPVI(playerid, "pld_businessID") == bInfo[i][bID])
{
if(bInfo[i][bType] == 0) pickupBusinessControl3DText[playerid] = CreateDynamic3DTextLabel("/controlplace - управление помещением", 0xa8d926AA, -2079.6685,152.3821,1259.1649, 20.0, INVALID_PLAYER_ID, INVALID_VEHICLE_ID, 1, bInfo[i][bID], intIdBusiness[bInfo[i][bType]], playerid);
if(bInfo[i][bType] == 1)
{
new zv;
sscanf(bInfo[i][bMotelInfo], "p<|>i", zv);
pickupBusinessControl3DText[playerid] = CreateDynamic3DTextLabel("/controlbuss - управление отелем", 0xa8d926AA, MotelPickupRecepshn[zv-2][0], MotelPickupRecepshn[zv-2][1], MotelPickupRecepshn[zv-2][2], 20.0, INVALID_PLAYER_ID, INVALID_VEHICLE_ID, 1, bInfo[i][bID], intIdBusiness[bInfo[i][bType]], playerid);
}
}
else { if(bInfo[i][bLock]) return SCM(playerid, -1, ""MSGERROR"Дверь закрыта."); }
if(bInfo[i][bType] != 1)
{
SPPF(playerid, pickupIntExBusiness[bInfo[i][bType]][0], pickupIntExBusiness[bInfo[i][bType]][1], pickupIntExBusiness[bInfo[i][bType]][2]);
SetPlayerFacingAngle(playerid, pickupIntExBusiness[bInfo[i][bType]][3]);
SetPlayerVirtualWorld(playerid, bInfo[i][bID]), SetPlayerInterior(playerid, intIdBusiness[bInfo[i][bType]]);
SetCameraBehindPlayer(playerid);
}
if(bInfo[i][bType] == 1)
{
new zv;
sscanf(bInfo[i][bMotelInfo], "p<|>i", zv);
SPPF(playerid, MotelPickupIntExBusiness[zv-2][0], MotelPickupIntExBusiness[zv-2][1], MotelPickupIntExBusiness[zv-2][2]);
SetPlayerFacingAngle(playerid, MotelPickupIntExBusiness[zv-2][3]);
SetPlayerVirtualWorld(playerid, bInfo[i][bID]), SetPlayerInterior(playerid, intIdBusiness[bInfo[i][bType]]);
SetCameraBehindPlayer(playerid);
SPVI(playerid, "businessMotel_zv", zv-2);
}
}
else
{
if(GPVI(playerid, "pld_businessID") != -1) return SCM(playerid, -1, ""MSGERROR"У вас уже есть помещение / бизнес.");
if(bInfo[i][bType] != 0) return 1;
new string[1+71+11];
format(string, sizeof string, ""ccWhite"Вы хотите выкупить это помещение?\n\n"ccGrey"Стоимость: $%d.", bInfo[i][bPrice]);
ShowPlayerDialog(playerid, did_buyplace, DIALOG_STYLE_MSGBOX, "Покупка помещения", string, "Да", "Нет");
SPVI(playerid, "buyplace_bussID", i);
}
break;
}
// выход из бизнеса
if((IsPlayerInRangeOfPoint(playerid, 2.0, MotelPickupIntExBusiness[GPVI(playerid, "businessMotel_zv")][0], MotelPickupIntExBusiness[GPVI(playerid, "businessMotel_zv")][1], MotelPickupIntExBusiness[GPVI(playerid, "businessMotel_zv")][2]) || (IsPlayerInRangeOfPoint(playerid, 2.0, pickupIntExBusiness[bInfo[i][bType]][0], pickupIntExBusiness[bInfo[i][bType]][1], pickupIntExBusiness[bInfo[i][bType]][2]))) && (GetPlayerVirtualWorld(playerid) == bInfo[i][bID]))
{
DeletePVar(playerid, "businessMotel_zv");
if((GPVI(playerid, "pld_businessID") == bInfo[i][bID]) && (IsValidDynamic3DTextLabel(pickupBusinessControl3DText[playerid]))) DestroyDynamic3DTextLabel(pickupBusinessControl3DText[playerid]);
if((GPVI(playerid, "pld_motel_idmotel") == bInfo[i][bID]) && (IsValidDynamic3DTextLabel(pickupMotelMyRoom3DText[playerid]))) DestroyDynamic3DTextLabel(pickupMotelMyRoom3DText[playerid]);
SPPF(playerid, bInfo[i][bPos][0], bInfo[i][bPos][1], bInfo[i][bPos][2]);
SetPlayerFacingAngle(playerid, bInfo[i][bPos][3]);
SetPlayerVirtualWorld(playerid, 0), SetPlayerInterior(playerid, 0);
SetCameraBehindPlayer(playerid);
break;
}
// вход в комнату отеля
if((bInfo[i][bID] == GetPlayerVirtualWorld(playerid)) && (bInfo[i][bType] == 1))
{
new lockRooms[motel3_maxRooms];
sscanf(bInfo[i][bMotelLockRooms], "p<|>iiiiiiiiiiiiii", lockRooms[0], lockRooms[1], lockRooms[2], lockRooms[3], lockRooms[4], lockRooms[5], lockRooms[6], lockRooms[7], lockRooms[8], lockRooms[9], lockRooms[10], lockRooms[11], lockRooms[12], lockRooms[13]);
for(new room = 0; room < motel3_maxRooms; room++)
{
if(IsPlayerInRangeOfPoint(playerid, 2.0, motel3_posRooms[room][0], motel3_posRooms[room][1], motel3_posRooms[room][2]))
{
new world = 10000 + ((bInfo[i][bID] * 1000) + room);
if(GPVI(playerid, "pld_businessID") == bInfo[i][bID] || ((GPVI(playerid, "pld_motel_idmotel") == bInfo[i][bID]) && (GPVI(playerid, "pld_motel_room") == room+1)))
{
SPVI(playerid, "motelEnterRoom_world", world);
SPVI(playerid, "motelEnterRoom_bussID", i);
SPVI(playerid, "motelEnterRoom_room", room);
new dialogInfo[1+60], dialogTitle[40];
format(dialogInfo, sizeof dialogInfo, "[1] %s "ccWhite"дверь%s", (lockRooms[room] == 1) ? (""ccGreen"Открыть") : (""ccRed"Закрыть"), (!lockRooms[room]) ? ("\n[2] Войти в комнату") : (""));
format(dialogTitle, sizeof dialogTitle, "Отель - Комната №%i", room+1);
ShowPlayerDialog(playerid, did_motelRoom, DIALOG_STYLE_LIST, dialogTitle, dialogInfo, "Выбрать", "Отмена");
}
else
{
if(lockRooms[room])
{
new errorMsg[60];
format(errorMsg, sizeof errorMsg, ""MSGERROR"Дверь от комнаты №%i закрыта.", room+1), SCM(playerid, -1, errorMsg);
return 1;
}
SetPlayerPos(playerid, -37.0617,29.1247,1032.5859), SetPlayerFacingAngle(playerid, 85.2234);
SetPlayerVirtualWorld(playerid, world);
SetCameraBehindPlayer(playerid);
SPVI(playerid, "motelEnterRoom_world", world);
SPVI(playerid, "motelEnterRoom_bussID", i);
SPVI(playerid, "motelEnterRoom_room", room);
}
break;
}
}
break;
}
}
// выход из комнаты отеля
if((IsPlayerInRangeOfPoint(playerid, 2.0, -37.0617,29.1247,1032.5859)) && (GetPlayerVirtualWorld(playerid) == GPVI(playerid, "motelEnterRoom_world")))
{
new room = GPVI(playerid, "motelEnterRoom_room");
new bussID = GPVI(playerid, "motelEnterRoom_bussID");
new lockRooms[motel3_maxRooms];
sscanf(bInfo[bussID][bMotelLockRooms], "p<|>iiiiiiiiiiiiii", lockRooms[0], lockRooms[1], lockRooms[2], lockRooms[3], lockRooms[4], lockRooms[5], lockRooms[6], lockRooms[7], lockRooms[8], lockRooms[9], lockRooms[10], lockRooms[11], lockRooms[12], lockRooms[13]);
if(GPVI(playerid, "pld_businessID") == bInfo[bussID][bID] || ((GPVI(playerid, "pld_motel_idmotel") == bInfo[bussID][bID]) && (GPVI(playerid, "pld_motel_room") == room+1)))
{
new dialogInfo[1+60], dialogTitle[40];
format(dialogInfo, sizeof dialogInfo, "[1] %s "ccWhite"дверь%s", (lockRooms[room]) ? (""ccGreen"Открыть") : (""ccRed"Закрыть"), (!lockRooms[room]) ? ("\n[2] Выйти из комнаты") : (""));
format(dialogTitle, sizeof dialogTitle, "Отель - Комната №%i", room+1);
ShowPlayerDialog(playerid, did_motelRoom, DIALOG_STYLE_LIST, dialogTitle, dialogInfo, "Выбрать", "Отмена");
}
else
{
if(lockRooms[room])
{
new errorMsg[60];
format(errorMsg, sizeof errorMsg, ""MSGERROR"Дверь от комнаты №%i закрыта.", room+1), SCM(playerid, -1, errorMsg);
return 1;
}
DeletePVar(playerid, "motelEnterRoom_room"), DeletePVar(playerid, "motelEnterRoom_world"), DeletePVar(playerid, "motelEnterRoom_bussID");
SetPlayerVirtualWorld(playerid, bInfo[GPVI(playerid, "motelEnterRoom_bussID")][bID]);
SetPlayerPos(playerid, motel3_posRooms[room][0], motel3_posRooms[room][1], motel3_posRooms[room][2]);
SetPlayerFacingAngle(playerid, motel3_posRooms[room][3]);
SetCameraBehindPlayer(playerid);
}
}
}
PHP:
http://pastebin.com/6aaRe7v1
PHP:
forward mysqlquery_loadBusiness();
public mysqlquery_loadBusiness()
{
new rowsfield[2];
cache_get_data(rowsfield[0], rowsfield[1]);
if(rowsfield[0])
{
for(new i = 0; i < rowsfield[0]; i++)
{
bInfo[allbusiness][bID] = cache_get_field_content_int(i, "id", cmID);
bInfo[allbusiness][bType] = cache_get_field_content_int(i, "type", cmID);
bInfo[allbusiness][bMode] = cache_get_field_content_int(i, "mode", cmID);
bInfo[allbusiness][bLock] = cache_get_field_content_int(i, "lock", cmID);
bInfo[allbusiness][bOwned] = cache_get_field_content_int(i, "owned", cmID);
cache_get_field_content(i, "owner", bInfo[allbusiness][bOwner], cmID, MAX_PLAYER_NAME);
bInfo[allbusiness][bPrice] = cache_get_field_content_int(i, "price", cmID);
new enPos[44];
cache_get_field_content(i, "enPos", enPos, cmID);
sscanf(enPos, "p<,>ffff", bInfo[allbusiness][bPos][0], bInfo[allbusiness][bPos][1], bInfo[allbusiness][bPos][2], bInfo[allbusiness][bPos][3]);
cache_get_field_content(i, "name", bInfo[allbusiness][bName], cmID, 24);
cache_get_field_content(i, "address", bInfo[allbusiness][bAddress], cmID, MAX_ZONE_NAME+8);
bInfo[allbusiness][bSafe] = cache_get_field_content_int(i, "safe", cmID);
bInfo[allbusiness][bProd] = cache_get_field_content_int(i, "prod", cmID);
bInfo[allbusiness][bMapIcon] = CreateDynamicMapIcon(bInfo[allbusiness][bPos][0], bInfo[allbusiness][bPos][1], bInfo[allbusiness][bPos][2], typeBusiness[bInfo[allbusiness][bType]], 0);
bInfo[allbusiness][bPickup][0] = CreateDynamicPickup(1274, 23, bInfo[allbusiness][bPos][0], bInfo[allbusiness][bPos][1], bInfo[allbusiness][bPos][2], 0, 0, -1, 40.0);
bInfo[allbusiness][bPickup][1] = CreateDynamicPickup(19134, 23, pickupIntExBusiness[bInfo[allbusiness][bType]][0], pickupIntExBusiness[bInfo[allbusiness][bType]][1], pickupIntExBusiness[bInfo[allbusiness][bType]][2], bInfo[allbusiness][bID], intIdBusiness[bInfo[allbusiness][bType]], -1, 40.0);
bInfo[allbusiness][bText3D][1] = CreateDynamic3DTextLabel("[ Выход ]", cWhite, pickupIntExBusiness[bInfo[allbusiness][bType]][0], pickupIntExBusiness[bInfo[allbusiness][bType]][1], pickupIntExBusiness[bInfo[allbusiness][bType]][2], 15.0, INVALID_PLAYER_ID, INVALID_VEHICLE_ID, 1, bInfo[allbusiness][bID], intIdBusiness[bInfo[allbusiness][bType]]);
new _text[180+9+20+2+20+30];
if(!bInfo[allbusiness][bOwned]) format(_text, sizeof _text, "[ "ccOrange"%s "ccWhite"]\n"ccYellow"Стоимость: "ccWhite"$%d\n"ccYellow"Улица: "ccWhite"%s", titleTypeBusiness[0], bInfo[allbusiness][bPrice], bInfo[allbusiness][bAddress]);
else
{
new index[20];
index = "_";
for(new len = 0; len < strlen(bInfo[allbusiness][bName])+2; len++) strcat(index, "_");
format(_text, sizeof _text, "%s\n"ccGrey"%s\n"ccWhite"[ "ccOrange"%s "ccWhite"]\n"ccYellow"Владелец: "ccWhite"%s\n"ccYellow"Улица: "ccWhite"%s"ccWhite"%s", bInfo[allbusiness][bName], index, titleTypeBusiness[bInfo[allbusiness][bType]], bInfo[allbusiness][bOwner], bInfo[allbusiness][bAddress]);
}
bInfo[allbusiness][bText3D][0] = CreateDynamic3DTextLabel(_text, cOoc, bInfo[allbusiness][bPos][0], bInfo[allbusiness][bPos][1], bInfo[allbusiness][bPos][2], 15.0, INVALID_PLAYER_ID, INVALID_VEHICLE_ID, 1, 0, 0);
if(bInfo[allbusiness][bType] == 1)
{
cache_get_field_content(i, "motel", bInfo[allbusiness][bMotelInfo], cmID, 385);
cache_get_field_content(i, "motelLockRooms", bInfo[allbusiness][bMotelLockRooms], cmID, 28);
new zv, priceRoom, sRoom, zRoom, IdOwnerRoom[motel3_maxRooms];
sscanf(bInfo[allbusiness][bMotelInfo], "p<|>iiiidddddddddddddd", zv, priceRoom, sRoom, zRoom, IdOwnerRoom[0], IdOwnerRoom[1], IdOwnerRoom[2], IdOwnerRoom[3], IdOwnerRoom[4], IdOwnerRoom[5], IdOwnerRoom[6], IdOwnerRoom[7], IdOwnerRoom[8], IdOwnerRoom[9], IdOwnerRoom[10], IdOwnerRoom[11], IdOwnerRoom[12], IdOwnerRoom[13]);
new lockRooms[motel3_maxRooms];
sscanf(bInfo[allbusiness][bMotelLockRooms], "p<|>iiiiiiiiiiiiii", lockRooms[0], lockRooms[1], lockRooms[2], lockRooms[3], lockRooms[4], lockRooms[5], lockRooms[6], lockRooms[7], lockRooms[8], lockRooms[9], lockRooms[10], lockRooms[11], lockRooms[12], lockRooms[13]);
for(new room = 0; room < motel3_maxRooms; room++)
{
format(_text, sizeof _text, "№%i - "ccWhite"%s\n%s", room+1, (IdOwnerRoom[room] < 1) ? ("комната свободна") : ("комната занята"), (lockRooms[room]) ? (""ccRed"( дверь закрыта )") : (""ccGreen"( дверь открыта )"));
motel_Text3DRooms[allbusiness][room] = CreateDynamic3DTextLabel(_text, cOoc, motel3_posRooms[room][0], motel3_posRooms[room][1], motel3_posRooms[room][2], 15.0, INVALID_PLAYER_ID, INVALID_VEHICLE_ID, 1, bInfo[allbusiness][bID], intIdBusiness[bInfo[allbusiness][bType]]);
new doorStr[40];
format(doorStr, sizeof doorStr, "%s", (!lockRooms[room]) ? (""ccGreen"( дверь открыта )") : (""ccRed"( дверь закрыта )"));
pickupMotelRoom3DText2[room] = CreateDynamic3DTextLabel(doorStr, -1, -37.0617,29.1247,1032.5859, 15.0, INVALID_PLAYER_ID, INVALID_VEHICLE_ID, 1, 10000 + ((bInfo[allbusiness][bID] * 1000) + room), intIdBusiness[bInfo[i][bType]]);
}
DestroyDynamicPickup(bInfo[allbusiness][bPickup][1]);
bInfo[allbusiness][bPickup][1] = CreateDynamicPickup(19134, 23, MotelPickupIntExBusiness[zv-2][0], MotelPickupIntExBusiness[zv-2][1], MotelPickupIntExBusiness[zv-2][2], bInfo[allbusiness][bID], intIdBusiness[bInfo[allbusiness][bType]], -1, 40.0);
DestroyDynamic3DTextLabel(bInfo[allbusiness][bText3D][1]);
bInfo[allbusiness][bText3D][1] = CreateDynamic3DTextLabel("[ Выход ]", cWhite, MotelPickupIntExBusiness[zv-2][0], MotelPickupIntExBusiness[zv-2][1], MotelPickupIntExBusiness[zv-2][2], 15.0, INVALID_PLAYER_ID, INVALID_VEHICLE_ID, 1, bInfo[allbusiness][bID], intIdBusiness[bInfo[allbusiness][bType]]);
motel_pickupRecepshn[allbusiness] = CreateDynamicPickup(19131, 23, MotelPickupRecepshn[zv-2][0], MotelPickupRecepshn[zv-2][1], MotelPickupRecepshn[zv-2][2], bInfo[allbusiness][bID], intIdBusiness[bInfo[allbusiness][bType]], -1, 40.0);
motel_Text3DRooms[allbusiness][motel3_maxRooms] = CreateDynamic3DTextLabel("[ "ccPink"Ресепшн "ccWhite"]", cWhite, MotelPickupRecepshn[zv-2][0], MotelPickupRecepshn[zv-2][1], MotelPickupRecepshn[zv-2][2]+1, 15, INVALID_PLAYER_ID, INVALID_VEHICLE_ID, 1, bInfo[allbusiness][bID], intIdBusiness[bInfo[allbusiness][bType]]);
}
allbusiness++;
}
}
printf("~ Load Business [ %i ]: загрузка завершена успешно.", allbusiness);
return 1;
}
PHP:
// функции
stock getFreeRoomMotel(bussID)
{
new IdOwnerRoom[motel3_maxRooms];
sscanf(bInfo[bussID][bMotelInfo], "p<|>iiiidddddddddddddd", IdOwnerRoom[0], IdOwnerRoom[0], IdOwnerRoom[0], IdOwnerRoom[0], IdOwnerRoom[0], IdOwnerRoom[1], IdOwnerRoom[2], IdOwnerRoom[3], IdOwnerRoom[4], IdOwnerRoom[5], IdOwnerRoom[6], IdOwnerRoom[7], IdOwnerRoom[8], IdOwnerRoom[9], IdOwnerRoom[10], IdOwnerRoom[11], IdOwnerRoom[12], IdOwnerRoom[13]);
for(new i = 0; i < motel3_maxRooms; i++) if(IdOwnerRoom[i] == 0) return i;
return -1;
}
stock getControlBussTitle(bussID)
{
new title[40];
if(bInfo[bussID][bType] == 1)
{
new zv, zvStr[6];
sscanf(bInfo[bussID][bMotelInfo], "p<|>i", zv);
if(zv == 2) zvStr = "**";
else if(zv == 3) zvStr = "***";
else if(zv == 4) zvStr = "****";
else if(zv == 5) zvStr = "*****";
format(title, sizeof title, "Управление отелем [ %s ]", zvStr);
}
else title = "Управление неизвестным";
return title;
}
stock isBusinessIfProd(bussID)
{
if(modeBusiness[bInfo[bussID][bType]] == 1) return 1;
return 0;
}
stock updInt(table[], basefield[], value, _1if[], _2if)
{
new query[1+62+25+144+11];
format(query, sizeof query, "UPDATE `%s` SET `%s` = '%i' WHERE `%s` = '%d'", table, basefield, value, _1if, _2if);
mysql_function_query(cmID, query, false, "", "");
return 1;
}
stock updString(table[], basefield[], value[], _1if[], _2if)
{
new query[1+62+25+144+11];
format(query, sizeof query, "UPDATE `%s` SET `%s` = '%s' WHERE `%s` = '%d'", table, basefield, value, _1if, _2if);
mysql_function_query(cmID, query, false, "", "");
return 1;
}
stock giveCash(playerid, cash)
{
if(cash == 0) return 1;
new gtfp[12];
format(gtfp, sizeof gtfp, "$%s%d", (cash > 0) ? ("~g~+") : ("~r~"), cash);
GivePlayerMoney(playerid, cash);
SPVI(playerid, "pld_cash", GetPlayerMoney(playerid));
GameTextForPlayer(playerid, gtfp, 1000, 1);
return 1;
}
PHP:
// проверка на авторизирован ли игрок и не афк ли он
if((GPVI(i, "pld_motel_rent") == 1) && (GPVI(i, "pld_motel_timeOut") >= 1)) SPVI(i, "pld_motel_timeOut", GPVI(i, "pld_motel_timeOut")-1);
else if((GPVI(i, "pld_motel_rent") == 1) && (GPVI(i, "pld_motel_timeOut") == 0))
{
new bussID, room = GPVI(i, "pld_motel_room");
for(new j = 0; j < allbusiness; j++) if(GPVI(i, "pld_motel_idmotel") == j) bussID = j;
SPVI(i, "pld_motel_rent", -1), SPVI(i, "pld_motel_idmotel", -1), SPVI(i, "pld_motel_room", -1), SPVI(i, "pld_motel_timeOut", -1), SPVI(i, "pld_motel_timeOutUnix", -1);
updAccString(i, "motel", "-1,-1,-1,-1,-1");
new zv, priceRoom, sRoom, zRoom, IdOwnerRoom[motel3_maxRooms], lockRooms[motel3_maxRooms], _text[385];
sscanf(bInfo[bussID][bMotelInfo], "p<|>iiiidddddddddddddd", zv, priceRoom, sRoom, zRoom, IdOwnerRoom[0], IdOwnerRoom[1], IdOwnerRoom[2], IdOwnerRoom[3], IdOwnerRoom[4], IdOwnerRoom[5], IdOwnerRoom[6], IdOwnerRoom[7], IdOwnerRoom[8], IdOwnerRoom[9], IdOwnerRoom[10], IdOwnerRoom[11], IdOwnerRoom[12], IdOwnerRoom[13]);
sscanf(bInfo[bussID][bMotelLockRooms], "p<|>iiiiiiiiiiiiii", lockRooms[0], lockRooms[1], lockRooms[2], lockRooms[3], lockRooms[4], lockRooms[5], lockRooms[6], lockRooms[7], lockRooms[8], lockRooms[9], lockRooms[10], lockRooms[11], lockRooms[12], lockRooms[13]);
IdOwnerRoom[room-1] = 0, lockRooms[room-1] = 1, sRoom += 1, zRoom -= 1;
format(_text, sizeof _text, "№%i - "ccWhite"комната свободна\n"ccRed"( дверь закрыта )", room+1), UpdateDynamic3DTextLabelText(motel_Text3DRooms[bussID][room-1], cOoc, _text);
format(_text, sizeof _text, "%i|%i|%i|%i|%d|%d|%d|%d|%d|%d|%d|%d|%d|%d|%d|%d|%d|%d", zv, priceRoom, sRoom, zRoom, IdOwnerRoom[0], IdOwnerRoom[1], IdOwnerRoom[2], IdOwnerRoom[3], IdOwnerRoom[4], IdOwnerRoom[5], IdOwnerRoom[6], IdOwnerRoom[7], IdOwnerRoom[8], IdOwnerRoom[9], IdOwnerRoom[10], IdOwnerRoom[11], IdOwnerRoom[12], IdOwnerRoom[13]);
strmid(bInfo[bussID][bMotelInfo], _text, 0, strlen(_text), 385), updString(""table_business"", "motel", _text, "id", bInfo[bussID][bID]);
format(_text, sizeof _text, "%i|%i|%i|%i|%i|%i|%i|%i|%i|%i|%i|%i|%i|%i", lockRooms[0], lockRooms[1], lockRooms[2], lockRooms[3], lockRooms[4], lockRooms[5], lockRooms[6], lockRooms[7], lockRooms[8], lockRooms[9], lockRooms[10], lockRooms[11], lockRooms[12], lockRooms[13]);
strmid(bInfo[bussID][bMotelLockRooms], _text, 0, strlen(_text), 28), updString(""table_business"", "motelLockRooms", _text, "id", bInfo[bussID][bID]);
DestroyDynamic3DTextLabel(pickupMotelMyRoom3DText[i]);
SCM(i, -1, ""ccLightred"Время проживания в отеле вышло. Вас выселили из отеля.");
}
PHP:
YCMD:controlplace(playerid, params[], help)
{
for(new b = 0; b < MAX_BUSINESS; b++)
{
if((GPVI(playerid, "pld_businessID") == bInfo[b][bID]) && (bInfo[b][bType] == 0))
{
if(!IsPlayerInRangeOfPoint(playerid, 2.75, -2079.6685,152.3821,1259.1649)) return SCM(playerid, -1, ""MSGERROR"Для управления помещением, нужно находится у компьютера в своем помещении.");
ShowPlayerDialog(playerid, did_controlplace, DIALOG_STYLE_LIST, "Управление помещением", "Использовать помещение\nПродать помещение\nПодарить помещение", "Выбрать", "Закрыть");
SPVI(playerid, "controlPlaceBussID", b);
break;
}
else if(b == MAX_BUSINESS-1) SCM(playerid, -1, ""MSGERROR"Вы не имеете свободного помещения.");
}
return 1;
}
YCMD:controlbuss(playerid, params[], help)
{
for(new b = 0; b < MAX_BUSINESS; b++)
{
if(GPVI(playerid, "pld_businessID") == bInfo[b][bID])
{
new controlInfo[1+163+11+11+2+13+30];
if(bInfo[b][bType] == 1)
{
new zv, priceN;
sscanf(bInfo[b][bMotelInfo], "p<|>ii", zv, priceN);
if(!IsPlayerInRangeOfPoint(playerid, 4.5, MotelPickupRecepshn[zv-2][0], MotelPickupRecepshn[zv-2][1], MotelPickupRecepshn[zv-2][2])) return SCM(playerid, -1, ""MSGERROR"Для управления отелем, нужно находится у ресепшна.");
format(controlInfo, sizeof controlInfo, "[1] Изменить название отеля\n[2] %s "ccWhite"отель\n[3] Установить цену номера в час [ $%d ]\n[4] Положить деньги в сейф [ $%d ]\n[5] Взять деньги из сейфа [ $%d ]\n[6] Статистика бизнеса", (bInfo[b][bLock] == 1) ? (""ccGreen"Открыть") : (""ccRed"Закрыть"), priceN, bInfo[b][bSafe], bInfo[b][bSafe]);
}
ShowPlayerDialog(playerid, did_controlbuss, DIALOG_STYLE_LIST, getControlBussTitle(b), controlInfo, "Выбрать", "Закрыть");
SPVI(playerid, "controlBussBussID", b);
break;
}
else if(b == MAX_BUSINESS-1) SCM(playerid, -1, ""MSGERROR"Вы не имеете своего бизнеса.");
}
return 1;
}
YCMD:makeplace(playerid, params[], help)
{
isAdmin(3);
ShowPlayerDialog(playerid, did_makeplace, DIALOG_STYLE_INPUT, "[A] "ccOrange"Создание помещения", ""ccWhite"Введите цену за помещение:\n"ccGrey"Допустимый предел: 50 000 - 10 000 000", "Далее", "Отмена");
return 1;
}
YCMD:editbuss(playerid, params[], help)
{
isAdmin(3);
new i, cout = 0;
for(i = 0; i < allbusiness; i++) if(IsPlayerInRangeOfPoint(playerid, 2.0, bInfo[i][bPos][0], bInfo[i][bPos][1], bInfo[i][bPos][2]))
{
if(bInfo[i][bType] == 0) { SCM(playerid, -1, ""MSGERROR"Эта команда для редактирования параметров бизнеса, а вы стоите у помещения."); break; }
cout++, SPVI(playerid, "editbus_bussID", i); break;
}
if(cout == 0) return SCM(playerid, -1, ""MSGERROR"Бизнесов не найдено в радиусе 2 (и.м.)");
new dialogInfo[1+220+4+24+MAX_PLAYER_NAME+60];
format(dialogInfo, sizeof dialogInfo, ""ccGreen"[bID: %i] %s\nOwner: %s\n"ccLightblue"________________\n"ccWhite"- изменить тип бизнеса\n- %s "ccWhite"бизнес\n- установить баланс бизнеса%s", bInfo[i][bID], titleTypeBusiness[bInfo[i][bType]], bInfo[i][bOwner], (bInfo[i][bLock] == 1) ? (""ccGreen"открыть") : (""ccLightred"закрыть"), (isBusinessIfProd(i) == 1) ? ("\n- установить кол-во продуктов") : (""));
ShowPlayerDialog(playerid, did_editbuss, DIALOG_STYLE_LIST, "[A] "ccOrange"Редактирование бизнеса", dialogInfo, "Выбрать", "Закрыть");
return 1;
}
Усёё
