Доступ к архиву

Переход в группу "Пользователь"

300.00 ₽
Одноразовый платёж
Быстрый переход в группу "Пользователи", без надобности написания постов и ожидания.

Покупка дает возможность:
Быть полноправным участником форума
Нормальное копирование кода
Создавать темы
Скачивать файлы
Доступ к архиву Pawno-Info

Система бизнесов (написан только один тип "Отели 3х-звездочные") - MySQL R8 r32

Статус
В этой теме нельзя размещать новые ответы.

Jeff_Hardy

Компетентный
Система бизнесов (написан только один тип "Отели 3х-звездочные") - MySQL R8 r32

Автор кода: 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 ;
define s
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 // макс. кол-во часов, на сколько можно заселится в отель
new s
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];
OnGameModeInit
PHP:
 new query[35+1];
        format(query, sizeof query, "SELECT * FROM `"table_business"`"), mysql_function_query(cmID, query, true, "mysqlquery_loadBusiness", "");
OnPlayerPickUpDynamicPickup
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;
            }
        }
OnPlayerKeyStateChange
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);
            }
        }
    }
OnDialogResponse
PHP:
http://pastebin.com/6aaRe7v1
loadBusiness
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;
}
stock s
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;
}
timer 1sek
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"Время проживания в отеле вышло. Вас выселили из отеля.");
                }
command s
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;
}

Усёё
 
Статус
В этой теме нельзя размещать новые ответы.
Сверху Снизу