Система домов ini от Дим (new.pwn)

Description: Уроки по скриптингу
Moderator: SJplayer

Дим M
Topic author, Администратор
Администратор
Avatar
Дим M
Topic author, Администратор
Администратор
Posts: 1613
Joined: 5 Apr 2013
With us: 11 years 7 months

#1by Дим » 30 Jun 2014, 9:39

Система домов ini от Дим (new.pwn)


1. Каждый игрок может иметь не более 3 домов.
2. Дома можно продавать за любую цену, но не более чем разрешено (10 лимонов).
Продажа идёт не "впустую", а выставляется на продажу. После того как дом выставлен на продажу, пикап меняется с зелёного на синий. Так же и иконки на карте меняют свой цвет.
Можно снять дом с продажи (для назначения новой цены или просто так).
Деньги переводятся только после того, как кто то купит ваш дом.
3. ТП к выбранному дому.
4. Вход в дом.
5. Все действия выполняются через меню (на кнопку Alt)


Скриншоты
система-домов.jpg
система-домов.jpg (90.34 KiB) Viewed 5555 times
система-домов1.jpg
система-домов1.jpg (85.18 KiB) Viewed 5555 times
система-домов2.jpg
система-домов2.jpg (87.49 KiB) Viewed 5555 times
система-домов3.jpg
система-домов3.jpg (80.37 KiB) Viewed 5555 times
система-домов4.jpg
система-домов4.jpg (82.47 KiB) Viewed 5555 times
система-домов5.jpg
система-домов5.jpg (87.2 KiB) Viewed 5555 times

phpBB [media]


Для начала сделаем простую регистрацию - клац. Она была написана специально для данной системы.


Ставим стример:

Code: Select all

#include <streamer>                                        


Под переменными игрока, добавим переменные для домов:
Переменные домов
Для этого под:

Code: Select all

new PlayerInfo[MAX_PLAYERS][pInfo];


добавим:

Code: Select all

#define MAX_HOUSE 11//для 10 домов (если надо больше - увеличивайте на своё кол-во +1)
new hpid[64];//id пикапов
new HouseSale[MAX_HOUSE]; // иконка продающегося дома
new HouseOwn[MAX_HOUSE]; // иконка купленного дома
new HousePickupSale[MAX_HOUSE]; // Pickup продающегося дома
new HousePickupOwn[MAX_HOUSE]; // Pickup купленного дома
new Text3D:    House3DSale[MAX_HOUSE]; // 3D-текст продающегося дома
new Text3D:House3DOwn[MAX_HOUSE]; // 3D-текст купленного дома
enum hHouse
{
    hhouseName[128], //0 имя дома
    hhouseDohod,//запас
    hhousePrice,//цена
    hhouseOwner[MAX_PLAYER_NAME],//имя влад
Float:hhousePosX,// координаты 
Float:hhousePosY,
Float:hhousePosZ,
Float:hhouse1PosX,
Float:hhouse1PosY,
Float:hhouse1PosZ,
    hworld,//вирт. мир интерьера дома
    hClok,//занят или нет
    Exit // 
};
new HouseSystem[MAX_HOUSE][hHouse];

Потом добавим следующие паблики и стоки, которые нам потребуются в дальнейшем. Для этого ко всем форвардам добавляем:

Code: Select all

forward SaveHouse();//сохранение домов
forward LoadHouse();//загрузка домов
forward PlayerToPoint(Float:radi, playerid, Float:x, Float:y, Float:z);//проверка на координаты игрока                                                


И в конец мода ко всем пабликам добавляем:
public LoadHouse()

Code: Select all

public LoadHouse()
{
    print(" загружен - LoadHouse");
    new house = ini_openFile("House/House.ini");
    new hinfo[12][128];//где 12 - число значений в файле после ключа, 128 - максимальный размер значения (?)
    new hid[64];// для строкового типа id дома
    new bstring[256];// для записи полной строки для ключа
    new string[256];
    for(new i = 1; i < MAX_HOUSE; i++)
    {
        if(HouseSystem[i][hClok]== 1)
        {
            Delete3DTextLabel(Text3D:House3DSale[i]);
            format(string, 256, "{FF9900}Дом: {FFFFFF}%s\n{00ff00}Владелец: {FFFFFF}%s\n{f984e5}id %d", HouseSystem[i][hhouseName], HouseSystem[i][hhouseOwner], HouseSystem[i][hworld]);
            House3DSale[i] = Create3DTextLabel(string, 0xFEFEFEFE, HouseSystem[i][hhousePosX], HouseSystem[i][hhousePosY], HouseSystem[i][hhousePosZ], 40.0, 0, 1);
        }
        if(HouseSystem[i][hClok]== 0)
        {
            Delete3DTextLabel(Text3D:House3DOwn[i]);
            format(string, 256, "{FF9900}Дом: {FFFFFF}%s\n{00ff00}Владелец: {FFFFFF}%s\n{0096ff}Продаётся\n{ff0000}Стоимость:  {FFFFFF}$%s\n{f984e5}id %d", HouseSystem[i][hhouseName], HouseSystem[i][hhouseOwner], ConvertNumbers(HouseSystem[i][hhousePrice],"."), HouseSystem[i][hworld]);
            House3DOwn[i] = Create3DTextLabel(string, 0xFEFEFEFE, HouseSystem[i][hhousePosX], HouseSystem[i][hhousePosY], HouseSystem[i][hhousePosZ], 40.0, 0, 1);
        }
        format(hid, 64, "%d", i);// запишем id дома в строку
        ini_getString(house, hid, bstring);// загрузим данные из id дома в строку bstring
        split(bstring, hinfo, '|');// разобьём строку bstring и запишем разбитые данные символом | в массив hinfo
        strmid(HouseSystem[i][hhouseName], hinfo[0], 0, strlen(hinfo[0]), 256);//название дома
        HouseSystem[i][hhouseDohod] = strval(hinfo[1]);// уровень дома
        HouseSystem[i][hhousePrice] = strval(hinfo[2]); // цена дома
        strmid(HouseSystem[i][hhouseOwner], hinfo[3], 0, strlen(hinfo[3]), 256); // владелец  дома
        HouseSystem[i][hhousePosX] = floatstr(hinfo[4]);
        HouseSystem[i][hhousePosY] = floatstr(hinfo[5]);
        HouseSystem[i][hhousePosZ] = floatstr(hinfo[6]);
        HouseSystem[i][hhouse1PosX] = floatstr(hinfo[7]);
        HouseSystem[i][hhouse1PosY] = floatstr(hinfo[8]);
        HouseSystem[i][hhouse1PosZ] = floatstr(hinfo[9]);
        HouseSystem[i][hworld] = strval(hinfo[10]);
        HouseSystem[i][hClok] = strval(hinfo[11]);
        //

    }
    ini_closeFile(house);
    return true;
}
public SaveHouse()

Code: Select all

public SaveHouse()
{
    new string[200];
    new house = ini_openFile("House/House.ini");
    new hid[64];
    for(new i = 1; i < MAX_HOUSE; i++)
    {

        format(string,sizeof(string),"%s|%d|%d|%s|%f|%f|%f|%f|%f|%f|%d|%d",
        HouseSystem[i][hhouseName],
        HouseSystem[i][hhouseDohod],
        HouseSystem[i][hhousePrice],
        HouseSystem[i][hhouseOwner],
        HouseSystem[i][hhousePosX],
        HouseSystem[i][hhousePosY],
        HouseSystem[i][hhousePosZ],
        HouseSystem[i][hhouse1PosX],
        HouseSystem[i][hhouse1PosY],
        HouseSystem[i][hhouse1PosZ],
        HouseSystem[i][hworld],
        HouseSystem[i][hClok]);
        format(hid,64,"%d",i);
        ini_setString(house,hid,string);
    }
    ini_closeFile(house);
}
public PlayerToPoint(Float:radi, playerid, Float:x, Float:y, Float:z)

Code: Select all

public PlayerToPoint(Float:radi, playerid, Float:x, Float:y, Float:z)
{
    if(IsPlayerConnected(playerid))
    {
        new Float:oldposx, Float:oldposy, Float:oldposz;
        new Float:tempposx, Float:tempposy, Float:tempposz;
        GetPlayerPos(playerid, oldposx, oldposy, oldposz);
        tempposx = (oldposx -x);
        tempposy = (oldposy -y);
        tempposz = (oldposz -z);
        if (((tempposx < radi) && (tempposx > -radi)) && ((tempposy < radi) && (tempposy > -radi)) && ((tempposz < radi) && (tempposz > -radi)))
        {
            return true;
        }
    }
    return 0;
... ко всем стокам:
stock split(const strsrc[], strdest[][], delimiter)

Code: Select all

stock split(const strsrc[], strdest[][], delimiter)//разбивка строки в файле с домами
{
    new i, li;
    new aNum;
    new len;
    while(<= strlen(strsrc)){
        if(strsrc[i]==delimiter || i==strlen(strsrc)){
            len = strmid(strdest[aNum], strsrc, li, i, 128);
            strdest[aNum][len] = 0;
            li = i+1;
            aNum++;
        }
        i++;
    }
    return true;
}
stock ConvertNumbers(num,delimeter[2],size = 3)

Code: Select all

stock ConvertNumbers(num,delimeter[2],size = 3)//ставит точки (10.000.000)
{//в принципе сток бесполезный, но так удобнее читать цену домов
    new result[50];
    new x = -1;
    valstr(result,num);
    for(new i = strlen(result); i > 0; i--)
    {
        x++;
        if(== size){ strins(result,delimeter,i); x = 0; }
    }
    return result;
stock GetPlayerID(const Name[])

Code: Select all

//================ узнать  ID  по нику =========================================
stock GetPlayerID(const Name[])
{
    for(new i; i<MAX_PLAYERS; i++)
    {
        if(IsPlayerConnected(i))
        {
            new pName[MAX_PLAYER_NAME];
            GetPlayerName(i, pName, sizeof(pName));
            if(strcmp(Name, pName, true)==0)
            {
                return i;
            }
        }
    }
    return -1;
}

Ну и также как и для регистрации, в папке scriptfiles создаём новую папку House и в неё поместим следующий файлик - House.ini

House.ini

Code: Select all

= Дом|0|1000|Нет|-2075.538818|-60.708999|35.320301|2365.419921|-1131.849975|1050.880004|1|0
= Особняк|0|1000|Нет|-2072.839111|-60.632598|35.320301|2365.419921|-1131.849975|1050.880004|2|0
= Халупа|0|1000|Нет|-2069.288818|-61.103401|35.320301|2365.419921|-1131.849975|1050.880004|3|0
= Квартира|0|1000|Нет|-2064.427246|-60.684299|35.320301|2365.419921|-1131.849975|1050.880004|4|0
= Комната|0|1000|Нет|-2060.573730|-60.851699|35.320301|2365.419921|-1131.849975|1050.880004|5|0
= Коттедж|0|1000|Нет|-2056.655517|-60.809501|35.320301|2365.419921|-1131.849975|1050.880004|6|0
= Избушка|0|1000|Нет|-2051.788818|-60.794300|35.320301|2365.419921|-1131.849975|1050.880004|7|0
= Коммуналка|0|1000|Нет|-2048.279052|-60.857299|35.320301|2365.419921|-1131.849975|1050.880004|8|0
= Развалюха|0|1000|Нет|-2044.111572|-60.738098|35.320301|2365.419921|-1131.849975|1050.880004|9|0
10 
= Изба|0|1000|Нет|-2040.506591|-60.777599|35.320301|2365.419921|-1131.849975|1050.880004|10|0


Разберём его по частям:
1 - ID дома
1 = Дом - название дома
1 = Дом|0 - резервная строка (про запас :smile: )
1 = Дом|0|1000|Нет - владелец
1 = Дом|0|1000|Нет|-2075.5388|-60.7090|35.3203 - следующие 3 - координаты пикапа и текста
1 = Дом|0|1000|Нет|-2075.5388|-60.7090|35.3203|2365.419921|-1131.849975|1050.880004 - следующие 3 - координаты интерьера дома
1 = Дом|0|1000|Нет|-2075.5388|-60.7090|35.3203|2365.419921|-1131.849975|1050.880004|1 - виртуальный мир интерьера (что бы владельцы не пересекались)
1 = Дом|0|1000|Нет|-2075.5388|-60.7090|35.3203|2365.419921|-1131.849975|1050.880004|1|0 - продан или нет 0 - нет, 1 - продан.

В паблик public OnGameModeInit() добавим загрузку пикапов, 3D текста, и иконок.

Загрузка

Code: Select all

    LoadHouse();
    new string[256];
    for(new h = 1; h < MAX_HOUSE; h++)//загрузка пикапов, иконок и текста
    {
        HouseSystem[h][Exit] = CreateDynamicPickup(1318, 23, 2365.098876,-1135.368774,1050.875000, -1);
        if(HouseSystem[h][hClok]== 1)
        {
            format(string, 256, "{FF9900}Дом: {FFFFFF}%s\n{00ff00}Владелец: {FFFFFF}%s\n{f984e5}id %d", HouseSystem[h][hhouseName], HouseSystem[h][hhouseOwner], HouseSystem[h][hworld]);
            House3DSale[h] = Create3DTextLabel(string, 0xFEFEFEFE, HouseSystem[h][hhousePosX], HouseSystem[h][hhousePosY], HouseSystem[h][hhousePosZ], 40.0, 0, 1);
            HouseSale[h] = CreateDynamicMapIcon(HouseSystem[h][hhousePosX], HouseSystem[h][hhousePosY], HouseSystem[h][hhousePosZ],32,0,-1,-1,-1,150);
            HousePickupSale[h] = CreateDynamicPickup(1272, 23, HouseSystem[h][hhousePosX], HouseSystem[h][hhousePosY], HouseSystem[h][hhousePosZ]+0.3, -1);
        }
        if(HouseSystem[h][hClok]== 0)
        {
            format(string, 256, "{FF9900}Дом: {FFFFFF}%s\n{00ff00}Владелец: {FFFFFF}%s\n{0096ff}Продаётся\n{ff0000}Стоимость:  {FFFFFF}$%s\n{f984e5}id %d", HouseSystem[h][hhouseName], HouseSystem[h][hhouseOwner], ConvertNumbers(HouseSystem[h][hhousePrice],"."), HouseSystem[h][hworld]);
            House3DOwn[h] = Create3DTextLabel(string, 0xFEFEFEFE, HouseSystem[h][hhousePosX], HouseSystem[h][hhousePosY], HouseSystem[h][hhousePosZ], 40.0, 0, 1);
            HouseOwn[h] = CreateDynamicMapIcon(HouseSystem[h][hhousePosX], HouseSystem[h][hhousePosY], HouseSystem[h][hhousePosZ],31,0,-1,-1,-1,150);
            HousePickupOwn[h] = CreateDynamicPickup(1273, 23, HouseSystem[h][hhousePosX], HouseSystem[h][hhousePosY], HouseSystem[h][hhousePosZ]+0.3, -1);
        }
    }

Там же сразу изменим спавн игрока. Пусть он будет у АШ, где и расположены дома. Для этого поменяем координаты на:

Code: Select all

AddPlayerClass(0, -2047.7631,-86.3119,35.1641,354.9869, 0, 0, 0, 0, 0, 0);


Пикапы теперь у нас есть но они не работают, давайте сделаем действия для них.

В паблик public OnPlayerPickUpPickup(playerid, pickupid)

Действия для пикапов

Code: Select all

public OnPlayerPickUpPickup(playerid, pickupid)
{
    for(new h = 1; h < MAX_HOUSE; h++)// при заходе на пикап
    {
        if(pickupid == HousePickupOwn[h])
        {
            new PlayerName[MAX_PLAYER_NAME]; 
            GetPlayerName
(playerid,PlayerName,sizeof(PlayerName));// Узнаем ник игрока
            new hid[64];// для строкового типа id дома
            hpid[playerid] = h;// id пикапа
            format(hid, sizeof(hid),"House/%iHouse.ini",h);// если продаётся то меню покупкии (для покупателя) для владельца - вход
            if ((strcmp (HouseSystem[h][hhouseOwner], PlayerName)) && (HouseSystem[h][hClok]== 0)) ShowPlayerDialog(playerid,10,DIALOG_STYLE_MSGBOX,"Покупка дома.","Вы хотите купить этот дом?","Да", "Нет");
            if ((!strcmp (HouseSystem[h][hhouseOwner], PlayerName)) && (HouseSystem[h][hClok]== 0)) ShowPlayerDialog(playerid,20,DIALOG_STYLE_MSGBOX,"Войти в дом.","Вы хотите войти в дом?","Да", "Нет");
        }
    }
    for(new h = 1; h < MAX_HOUSE; h++)
    {
        if(pickupid == HousePickupSale[h])
        {
            new PlayerName[MAX_PLAYER_NAME]; //не продаётся (вход для владельца)
            GetPlayerName(playerid,PlayerName,sizeof(PlayerName));// Узнаем ник игрока
            new hid[64];// для строкового типа id дома
            hpid[playerid] = h;// id пикапа
            format(hid, sizeof(hid),"House/%iHouse.ini",h);
            if (!strcmp (HouseSystem[h][hhouseOwner], PlayerName)) ShowPlayerDialog(playerid,20,DIALOG_STYLE_MSGBOX,"Войти в дом.","Вы хотите войти в дом?","Да", "Нет");
        }
        if(pickupid == HouseSystem[h][Exit])//выход из дома
        {
            SetPlayerVirtualWorld(playerid,0);
            SetPlayerInterior(playerid,0);
            SetPlayerPos(playerid,HouseSystem[hpid[playerid]][hhousePosX],HouseSystem[hpid[playerid]][hhousePosY],HouseSystem[hpid[playerid]][hhousePosZ]);
        }
    }
    return true;

На данном этапе можно скомпилировать мод. Если всё прошло удачно, то продолжаем дальше.


Ну и осталось совсем немного, это сделать вызов меню на кнопу Alt:

меню на кнопу Alt
В паблик public OnPlayerKeyStateChange(playerid, newkeys, oldkeys) добавим:

Code: Select all

public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
{
//если игрок в доме, меню вызвать не получится
    if ((newkeys==1024) && !PlayerToPoint(20.0, playerid,2365.419921,-1131.849975,1050.880004))
    {
        ShowPlayerDialog(playerid,3,DIALOG_STYLE_LIST,"Главное меню","Дома", "Выбрать", "Выход");
    }
    return true;
}

и действия для всех меню:

Действия
Для этого в паблик public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[]), после регистрации добавим:

Code: Select all

    if(dialogid == 3)//главное меню
    {
        if(response)
        {
            if(listitem == 0)// меню домов
            {
                new text[128], text2[128], text3[128], string[128];
                if(PlayerInfo[playerid][pHouse] != 0)//1 дом
                {
                    format(string, sizeof(string), "%s", HouseSystem[PlayerInfo[playerid][pHouse]][hhouseName]);//если дом есть будет написано название
                    text = string;
                }
                else
                
{
                    text = "Пусто";//если дома нет будет написано - Пусто
                }
                if(PlayerInfo[playerid][pHouse1] != 0)//2 дом
                {
                    format(string, sizeof(string), "%s", HouseSystem[PlayerInfo[playerid][pHouse1]][hhouseName]);
                    text2 = string;
                }
                else
                
{
                    text2 = "Пусто";
                }
                if(PlayerInfo[playerid][pHouse2] != 0)//3 дом
                {
                    format(string, sizeof(string), "%s", HouseSystem[PlayerInfo[playerid][pHouse2]][hhouseName]);
                    text3 = string;
                }
                else
                
{
                    text3 = "Пусто";
                }
                new str[128], sctring[256];
                format(str,sizeof(str),"1. %s\n",text);
                strcat(sctring,str);
                format(str,sizeof(str),"2. %s\n",text2);
                strcat(sctring,str);
                format(str,sizeof(str),"3. %s\n",text3);
                strcat(sctring,str);
                ShowPlayerDialog(playerid,30,DIALOG_STYLE_LIST,"Дом",sctring,"Выбрать", "Выход");
                return true;
            }
           }
    }
    //============================ дом купить ==================================
    if(dialogid == 10 && response)
    {
        new string[128];
        new hid[64];
        format(hid, sizeof(hid),"House/%iHouse.ini",hpid[playerid]);
        if(PlayerInfo[playerid][pNHouse]>=3)return SendClientMessage(playerid,0xFF0000AA,"{f984e5}Вы не можете иметь более {ffffff}трёх {ff0000}домов.");
        if(HouseSystem[hpid[playerid]][hhousePrice] > GetPlayerMoney(playerid))return SendClientMessage(playerid,0xFF0000AA,"{f984e5}У Вас недостаточно денег, чтобы купить дом.");
        if(IsPlayerConnected(GetPlayerID(HouseSystem[hpid[playerid]][hhouseOwner])))//если продавец в игре
        {
            GivePlayerMoney(GetPlayerID(HouseSystem[hpid[playerid]][hhouseOwner]), HouseSystem[hpid[playerid]][hhousePrice]);//даём денег
            PlayerInfo[GetPlayerID(HouseSystem[hpid[playerid]][hhouseOwner])][pHouse]-=1;//забираем 1 количество домов у продавца
            if(PlayerInfo[GetPlayerID(HouseSystem[hpid[playerid]][hhouseOwner])][pHouse]== hpid[playerid])PlayerInfo[GetPlayerID(HouseSystem[hpid[playerid]][hhouseOwner])][pHouse]=0;//забираем id 1 у продавца
            if(PlayerInfo[GetPlayerID(HouseSystem[hpid[playerid]][hhouseOwner])][pHouse1]== hpid[playerid])PlayerInfo[GetPlayerID(HouseSystem[hpid[playerid]][hhouseOwner])][pHouse1]=0;//забираем id 2 у продавца
            if(PlayerInfo[GetPlayerID(HouseSystem[hpid[playerid]][hhouseOwner])][pHouse2]== hpid[playerid])PlayerInfo[GetPlayerID(HouseSystem[hpid[playerid]][hhouseOwner])][pHouse2]=0;//забираем id 3 у продавца
        }
        else{//если продавец не в игре
            format(account,sizeof(account),"Users/%s.ini",HouseSystem[hpid[playerid]][hhouseOwner]);//ищем акк продавца
            new iniFile = ini_openFile(account);//открываем файл продавца
            ini_getInteger(iniFile, "Money", PlayerInfo[HouseSystem[hpid[playerid]][hhouseOwner]][pMoney]);//узнаём сколько денег у продавца
            ini_setInteger(iniFile, "Money" , HouseSystem[hpid[playerid]][hhousePrice]+ PlayerInfo[HouseSystem[hpid[playerid]][hhouseOwner]][pMoney]); // Запишем денег продавцу
            ini_getInteger(iniFile, "NHouse" , PlayerInfo[HouseSystem[hpid[playerid]][hhouseOwner]][pNHouse]);//узнаём количество домов у продавца
            ini_setInteger(iniFile, "NHouse" , PlayerInfo[HouseSystem[hpid[playerid]][hhouseOwner]][pNHouse]-1);//забираем 1 количество домов у продавца
            ini_getInteger(iniFile, "House" , PlayerInfo[HouseSystem[hpid[playerid]][hhouseOwner]][pHouse]);//узнаём id 1 биза
            if(PlayerInfo[HouseSystem[hpid[playerid]][hhouseOwner]][pHouse]== hpid[playerid]) ini_setInteger(iniFile, "House" , 0);//забираем id 1 у продавца
            ini_getInteger(iniFile, "House1" , PlayerInfo[HouseSystem[hpid[playerid]][hhouseOwner]][pHouse1]);
            if(PlayerInfo[HouseSystem[hpid[playerid]][hhouseOwner]][pHouse1]== hpid[playerid]) ini_setInteger(iniFile, "House1" , 0);
            ini_getInteger(iniFile, "House2" , PlayerInfo[HouseSystem[hpid[playerid]][hhouseOwner]][pHouse2]);//узнаём id 3 биза
            if(PlayerInfo[HouseSystem[hpid[playerid]][hhouseOwner]][pHouse2]== hpid[playerid]) ini_setInteger(iniFile, "House2" , 0);//забираем id 3 у продавца
            ini_closeFile(iniFile);} // Закроем файл продавца
        GetPlayerName(playerid,PlayerName,sizeof(PlayerName));// Узнаем ник покупателя
        HouseSystem[hpid[playerid]][hClok] = 1;//закрываем дом от продажи
        HouseSystem[hpid[playerid]][hhouseOwner] = PlayerName;//записываем ник покупателя
        PlayerInfo[playerid][pNHouse] += 1;//прибавляем 1 кол во домов
        GivePlayerMoney(playerid, -HouseSystem[hpid[playerid]][hhousePrice]);//забираем деньги у покупателя
        DestroyDynamicPickup(HousePickupOwn[hpid[playerid]]);
        HousePickupSale[hpid[playerid]] = CreateDynamicPickup(1272, 23, HouseSystem[hpid[playerid]][hhousePosX], HouseSystem[hpid[playerid]][hhousePosY], HouseSystem[hpid[playerid]][hhousePosZ]+0.3, -1);
        DestroyDynamicMapIcon(HouseOwn[hpid[playerid]]);
        HouseSale[hpid[playerid]] = CreateDynamicMapIcon(HouseSystem[hpid[playerid]][hhousePosX], HouseSystem[hpid[playerid]][hhousePosY], HouseSystem[hpid[playerid]][hhousePosZ],32,0,-1,-1,-1,150);
        Delete3DTextLabel(Text3D:House3DOwn[hpid[playerid]]);
        format(string, 256, "{FF9900}Дом: {FFFFFF}%s\n{00ff00}Владелец: {FFFFFF}%s\n{f984e5}id %d", HouseSystem[hpid[playerid]][hhouseName], PlayerName, HouseSystem[hpid[playerid]][hworld]);
        House3DSale[hpid[playerid]] = Create3DTextLabel(string, 0xFEFEFEFE, HouseSystem[hpid[playerid]][hhousePosX], HouseSystem[hpid[playerid]][hhousePosY], HouseSystem[hpid[playerid]][hhousePosZ], 40.0, 0, 1);
        SaveHouse();
        LoadHouse();
        if(PlayerInfo[playerid][pHouse]==0&&PlayerInfo[playerid][pHouse1]==0&&PlayerInfo[playerid][pHouse2]==0) return PlayerInfo[playerid][pHouse] = hpid[playerid];//записывает id биз
        if(PlayerInfo[playerid][pHouse]!=0&&PlayerInfo[playerid][pHouse1]==0&&PlayerInfo[playerid][pHouse2]==0) return PlayerInfo[playerid][pHouse1] = hpid[playerid];
        if(PlayerInfo[playerid][pHouse]!=0&&PlayerInfo[playerid][pHouse1]!=0&&PlayerInfo[playerid][pHouse2]==0) return PlayerInfo[playerid][pHouse2] = hpid[playerid];
        if(PlayerInfo[playerid][pHouse]!=0&&PlayerInfo[playerid][pHouse1]==0&&PlayerInfo[playerid][pHouse2]!=0) return PlayerInfo[playerid][pHouse1] = hpid[playerid];
        if(PlayerInfo[playerid][pHouse]==0&&PlayerInfo[playerid][pHouse1]!=0&&PlayerInfo[playerid][pHouse2]!=0) return PlayerInfo[playerid][pHouse] = hpid[playerid];
        if(PlayerInfo[playerid][pHouse]==0&&PlayerInfo[playerid][pHouse1]==0&&PlayerInfo[playerid][pHouse2]!=0) return PlayerInfo[playerid][pHouse] = hpid[playerid];
        if(PlayerInfo[playerid][pHouse]==0&&PlayerInfo[playerid][pHouse1]!=0&&PlayerInfo[playerid][pHouse2]==0) return PlayerInfo[playerid][pHouse] = hpid[playerid];
    }
//========================== вход в дом ========================================
    if(dialogid == 20 && response)// вход в дом
    {
        for(new h = 1; h < MAX_HOUSE; h++)
        {
            {
                SetPlayerVirtualWorld(playerid,HouseSystem[h][hworld]);
                SetPlayerInterior(playerid,8);
                SetPlayerPos(playerid,2365.42,-1131.85,1050.88);
            }
        }
    }
    if(dialogid == 30)// меню домов
    {
        if(response)
        {
            if(listitem == 0)//дом 1
            {
                if(PlayerInfo[playerid][pHouse] == 0) return SendClientMessage(playerid,0xFF0000AA,"{f984e5}Первый слот пока пустой."), ShowPlayerDialog(playerid,3,DIALOG_STYLE_LIST,"Главное меню","Дома", "Выбрать", "Выход");
                new string[128];
                format(string,sizeof(string),"{00ff00}Дом: {ffff00}%s",HouseSystem[PlayerInfo[playerid][pHouse]][hhouseName]);
                new str[128],sctring[128];
                format(str,sizeof(str),"Продать дом\n");
                strcat(sctring,str);
                format(str,sizeof(str),"Снять с продажи\n");
                strcat(sctring,str);
                format(str,sizeof(str),"{42aaff}Телепорт к дому");
                strcat(sctring,str);
                ShowPlayerDialog(playerid, 40, DIALOG_STYLE_LIST, string, sctring, "Выбрать", "Выход");
            }
            if(listitem == 1)//дом 2
            {
                if(PlayerInfo[playerid][pHouse1] == 0) return SendClientMessage(playerid,0xFF0000AA,"{f984e5}Второй слот пока пустой."), ShowPlayerDialog(playerid,3,DIALOG_STYLE_LIST,"Главное меню","Дома", "Выбрать", "Выход");
                new string[128];
                format(string,sizeof(string),"{00ff00}Дом: {ffff00}%s",HouseSystem[PlayerInfo[playerid][pHouse1]][hhouseName]);
                new str[128],sctring[128];
                format(str,sizeof(str),"Продать дом\n");
                strcat(sctring,str);
                format(str,sizeof(str),"Снять с продажи\n");
                strcat(sctring,str);
                format(str,sizeof(str),"{42aaff}Телепорт к дому");
                strcat(sctring,str);
                ShowPlayerDialog(playerid, 41, DIALOG_STYLE_LIST, string, sctring, "Выбрать", "Выход");
            }
            if(listitem == 2)//дом 3
            {
                if(PlayerInfo[playerid][pHouse2] == 0) return SendClientMessage(playerid,0xFF0000AA,"Третий слот пока пустой."), ShowPlayerDialog(playerid,3,DIALOG_STYLE_LIST,"Главное меню","Дома", "Выбрать", "Выход");
                new string[128];
                format(string,sizeof(string),"{00ff00}Дом: {ffff00}%s",HouseSystem[PlayerInfo[playerid][pHouse2]][hhouseName]);
                new str[128],sctring[128];
                format(str,sizeof(str),"Продать дом\n");
                strcat(sctring,str);
                format(str,sizeof(str),"Снять с продажи\n");
                strcat(sctring,str);
                format(str,sizeof(str),"{42aaff}Телепорт к дому");
                strcat(sctring,str);
                ShowPlayerDialog(playerid, 42, DIALOG_STYLE_LIST, string, sctring, "Выбрать", "Выход");
            }
        }
        else ShowPlayerDialog(playerid,3,DIALOG_STYLE_LIST,"Главное меню","Дома", "Выбрать", "Выход");
    }
    if(dialogid == 40)// меню первого дома
    {
        if(response)
        {
            if(listitem == 0)//Продать дом
            {
                if(HouseSystem[PlayerInfo[playerid][pHouse]][hClok] == 0)return SendClientMessage(playerid,0xFF0000AA,"{00ff00}SempleR: {f984e5}Дом уже продаётся.");
                ShowPlayerDialog(playerid,50,DIALOG_STYLE_INPUT,"{ffff00}Продать дом","{ffffff}Введите сумму от {ff0000}1 {ffffff}до {ff0000}10.000.000","Да","Нет");
            }
            if(listitem == 1)//Снять с продажи
            {
                if(HouseSystem[PlayerInfo[playerid][pHouse]][hClok] == 1)return SendClientMessage(playerid,0xFF0000AA,"{f984e5}Дом уже снят с продажи.");
                new string[128];
                HouseSystem[PlayerInfo[playerid][pHouse]][hClok] = 1;
                DestroyDynamicPickup(HousePickupOwn[PlayerInfo[playerid][pHouse]]);
                HousePickupSale[PlayerInfo[playerid][pHouse]] = CreateDynamicPickup(1272, 23, HouseSystem[PlayerInfo[playerid][pHouse]][hhousePosX], HouseSystem[PlayerInfo[playerid][pHouse]][hhousePosY], HouseSystem[PlayerInfo[playerid][pHouse]][hhousePosZ]+0.3, -1);
                DestroyDynamicMapIcon(HouseOwn[PlayerInfo[playerid][pHouse]]);
                HouseSale[PlayerInfo[playerid][pHouse]] = CreateDynamicMapIcon(HouseSystem[PlayerInfo[playerid][pHouse]][hhousePosX], HouseSystem[PlayerInfo[playerid][pHouse]][hhousePosY], HouseSystem[PlayerInfo[playerid][pHouse]][hhousePosZ],32,0,-1,-1,-1,150);
                Delete3DTextLabel(Text3D:House3DOwn[PlayerInfo[playerid][pHouse]]);
                format(string, 256, "{FF9900}Дом: {FFFFFF}%s\n{00ff00}Владелец: {FFFFFF}%s\n{f984e5}id %d", HouseSystem[PlayerInfo[playerid][pHouse]][hhouseName],HouseSystem[PlayerInfo[playerid][pHouse]][hhouseOwner],HouseSystem[PlayerInfo[playerid][pHouse]][hworld]);
                House3DSale[PlayerInfo[playerid][pHouse]] = Create3DTextLabel(string, 0xFEFEFEFE, HouseSystem[PlayerInfo[playerid][pHouse]][hhousePosX], HouseSystem[PlayerInfo[playerid][pHouse]][hhousePosY], HouseSystem[PlayerInfo[playerid][pHouse]][hhousePosZ], 40.0, 0, 1);
                SaveHouse();
                LoadHouse();
            }
            if(listitem == 2)//Телепорт к дому
            {
                SetPlayerPos(playerid,HouseSystem[PlayerInfo[playerid][pHouse]][hhousePosX], HouseSystem[PlayerInfo[playerid][pHouse]][hhousePosY], HouseSystem[PlayerInfo[playerid][pHouse]][hhousePosZ]);// функция изменяет текущую позицию онлайн игрока на карте
            }
        }
        else ShowPlayerDialog(playerid,3,DIALOG_STYLE_LIST,"Главное меню","Дома", "Выбрать", "Выход");
    }
    if(dialogid == 41)// меню второго дома
    {
        if(response)
        {
            if(listitem == 0)//Продать дом
            {
                if(HouseSystem[PlayerInfo[playerid][pHouse1]][hClok] == 0)return SendClientMessage(playerid,0xFF0000AA,"{f984e5}Дом уже продаётся.");
                ShowPlayerDialog(playerid,51,DIALOG_STYLE_INPUT,"Продать дом","{ffffff}Введите сумму от {ff0000}1 {ffffff}до {ff0000}10.000.000","Да","Нет");
            }
            if(listitem == 1)//Снять с продажи
            {
                if(HouseSystem[PlayerInfo[playerid][pHouse1]][hClok] == 1)return SendClientMessage(playerid,0xFF0000AA,"{f984e5}Дом уже снят с продажи.");
                new string[128];
                HouseSystem[PlayerInfo[playerid][pHouse1]][hClok] = 1;
                DestroyDynamicPickup(HousePickupOwn[PlayerInfo[playerid][pHouse1]]);
                HousePickupSale[PlayerInfo[playerid][pHouse1]] = CreateDynamicPickup(1272, 23, HouseSystem[PlayerInfo[playerid][pHouse1]][hhousePosX], HouseSystem[PlayerInfo[playerid][pHouse1]][hhousePosY], HouseSystem[PlayerInfo[playerid][pHouse1]][hhousePosZ]+0.3, -1);
                DestroyDynamicMapIcon(HouseOwn[PlayerInfo[playerid][pHouse1]]);
                HouseSale[PlayerInfo[playerid][pHouse1]] = CreateDynamicMapIcon(HouseSystem[PlayerInfo[playerid][pHouse1]][hhousePosX], HouseSystem[PlayerInfo[playerid][pHouse1]][hhousePosY], HouseSystem[PlayerInfo[playerid][pHouse1]][hhousePosZ],32,0,-1,-1,-1,150);
                Delete3DTextLabel(Text3D:House3DOwn[PlayerInfo[playerid][pHouse1]]);
                format(string, 256, "{FF9900}Дом: {FFFFFF}%s\n{00ff00}Владелец: {FFFFFF}%s\n{f984e5}id %d", HouseSystem[PlayerInfo[playerid][pHouse1]][hhouseName],HouseSystem[PlayerInfo[playerid][pHouse1]][hhouseOwner],HouseSystem[PlayerInfo[playerid][pHouse1]][hworld]);
                House3DSale[PlayerInfo[playerid][pHouse1]] = Create3DTextLabel(string, 0xFEFEFEFE, HouseSystem[PlayerInfo[playerid][pHouse1]][hhousePosX], HouseSystem[PlayerInfo[playerid][pHouse1]][hhousePosY], HouseSystem[PlayerInfo[playerid][pHouse1]][hhousePosZ], 40.0, 0, 1);
                SaveHouse();
                LoadHouse();
            }
            if(listitem == 2)//Телепорт к дому
            {
                SetPlayerPos(playerid,HouseSystem[PlayerInfo[playerid][pHouse1]][hhousePosX], HouseSystem[PlayerInfo[playerid][pHouse1]][hhousePosY], HouseSystem[PlayerInfo[playerid][pHouse1]][hhousePosZ]);// функция изменяет текущую позицию онлайн игрока на карте
            }
        }
        else ShowPlayerDialog(playerid,3,DIALOG_STYLE_LIST,"Главное меню","Дома", "Выбрать", "Выход");
    }
    if(dialogid == 42)// меню третьего дома
    {
        if(response)
        {
            if(listitem == 0)//Продать дом
            {
                if(HouseSystem[PlayerInfo[playerid][pHouse2]][hClok] == 0)return SendClientMessage(playerid,0xFF0000AA,"{f984e5}Дом уже продаётся.");
                ShowPlayerDialog(playerid,52,DIALOG_STYLE_INPUT,"{ffff00}Продать дом","{ffffff}Введите сумму от {ff0000}1 {ffffff}до {ff0000}10.000.000","Да","Нет");
            }
            if(listitem == 1)//Снять с продажи
            {
                if(HouseSystem[PlayerInfo[playerid][pHouse2]][hClok] == 1)return SendClientMessage(playerid,0xFF0000AA,"{f984e5}Дом уже снят с продажи.");
                new string[128];
                HouseSystem[PlayerInfo[playerid][pHouse2]][hClok] = 1;
                DestroyDynamicPickup(HousePickupOwn[PlayerInfo[playerid][pHouse2]]);
                HousePickupSale[PlayerInfo[playerid][pHouse2]] = CreateDynamicPickup(1272, 23, HouseSystem[PlayerInfo[playerid][pHouse2]][hhousePosX], HouseSystem[PlayerInfo[playerid][pHouse2]][hhousePosY], HouseSystem[PlayerInfo[playerid][pHouse2]][hhousePosZ]+0.3, -1);
                DestroyDynamicMapIcon(HouseOwn[PlayerInfo[playerid][pHouse2]]);
                HouseSale[PlayerInfo[playerid][pHouse2]] = CreateDynamicMapIcon(HouseSystem[PlayerInfo[playerid][pHouse2]][hhousePosX], HouseSystem[PlayerInfo[playerid][pHouse2]][hhousePosY], HouseSystem[PlayerInfo[playerid][pHouse2]][hhousePosZ],32,0,-1,-1,-1,150);
                Delete3DTextLabel(Text3D:House3DOwn[PlayerInfo[playerid][pHouse2]]);
                format(string, 256, "{FF9900}Дом: {FFFFFF}%s\n{00ff00}Владелец: {FFFFFF}%s\n{f984e5}id %d", HouseSystem[PlayerInfo[playerid][pHouse2]][hhouseName],HouseSystem[PlayerInfo[playerid][pHouse2]][hhouseOwner],HouseSystem[PlayerInfo[playerid][pHouse2]][hworld]);
                House3DSale[PlayerInfo[playerid][pHouse2]] = Create3DTextLabel(string, 0xFEFEFEFE, HouseSystem[PlayerInfo[playerid][pHouse2]][hhousePosX], HouseSystem[PlayerInfo[playerid][pHouse2]][hhousePosY], HouseSystem[PlayerInfo[playerid][pHouse2]][hhousePosZ], 40.0, 0, 1);
                SaveHouse();
                LoadHouse();
            }
            if(listitem == 2)//Телепорт к дому
            {
                SetPlayerPos(playerid,HouseSystem[PlayerInfo[playerid][pHouse2]][hhousePosX], HouseSystem[PlayerInfo[playerid][pHouse2]][hhousePosY], HouseSystem[PlayerInfo[playerid][pHouse2]][hhousePosZ]);// функция изменяет текущую позицию онлайн игрока на карте
            }
        }
        else ShowPlayerDialog(playerid,3,DIALOG_STYLE_LIST,"Главное меню","Дома", "Выбрать", "Выход");
    }
//===================== продажа дома ===========================================
    if(dialogid == 50)// Продажа дом 1
    {
        if(response) //Если была нажата 1 кнопка
        {
            if(!strlen(inputtext))SendClientMessage(playerid, 0xFF0000AA,"{f984e5}Введите сумму от {ffffff}1 {ff0000}до {ffffff}10.000.000"),ShowPlayerDialog(playerid,41,DIALOG_STYLE_INPUT,"{ffff00}Продать дом","{ffffff}Введите сумму от {ff0000}1 {ffffff}до {ff0000}10.000.000","Да","Нет");
            else{
                new string[128];
                new hid[64];
                new houseprod = strval(inputtext);
                if(houseprod < 1 || houseprod > 10000000){
                    SendClientMessage(playerid, 0xFF0000AA,"{f984e5}Введите сумму от {ffffff}1 {ff0000}до {ffffff}10.000.000");
                    ShowPlayerDialog(playerid,41,DIALOG_STYLE_INPUT,"{ffff00}Продать дом","{ffffff}Введите сумму от {ff0000}1 {ffffff}до {ff0000}10.000.000","Да","Нет");
                    return true;}
                format(hid, sizeof(hid),"House/%iHouse.ini",hpid[playerid]);
                GetPlayerName(playerid,PlayerName,sizeof(PlayerName));// Узнаем ник игрока (можно и не делать)
                if (strcmp (HouseSystem[hpid[playerid]][hhouseOwner], PlayerName, true)) return SendClientMessage(playerid,0xFF0000AA,"{f984e5}Это не Ваш дом.");
                {
                    HouseSystem[PlayerInfo[playerid][pHouse]][hhousePrice]= houseprod;
                    HouseSystem[PlayerInfo[playerid][pHouse]][hClok] = 0;
                    DestroyDynamicPickup(HousePickupSale[PlayerInfo[playerid][pHouse]]);
                    HousePickupOwn[PlayerInfo[playerid][pHouse]] = CreateDynamicPickup(1273, 23, HouseSystem[PlayerInfo[playerid][pHouse]][hhousePosX], HouseSystem[PlayerInfo[playerid][pHouse]][hhousePosY], HouseSystem[PlayerInfo[playerid][pHouse]][hhousePosZ]+0.3, -1);
                    DestroyDynamicMapIcon(HouseSale[PlayerInfo[playerid][pHouse]]);
                    HouseOwn[PlayerInfo[playerid][pHouse]] = CreateDynamicMapIcon(HouseSystem[PlayerInfo[playerid][pHouse]][hhousePosX], HouseSystem[PlayerInfo[playerid][pHouse]][hhousePosY], HouseSystem[PlayerInfo[playerid][pHouse]][hhousePosZ],31,0,-1,-1,-1,150);
                    Delete3DTextLabel(Text3D:House3DSale[PlayerInfo[playerid][pHouse]]);
                    format(string, 256, "{FF9900}Дом: {FFFFFF}%s\n{00ff00}Владелец: {FFFFFF}%s\n{0096ff}Продаётся\n{ff0000}Стоимость:  {FFFFFF}$%s\n{f984e5}id %d", HouseSystem[PlayerInfo[playerid][pHouse]][hhouseName], PlayerName, ConvertNumbers(HouseSystem[PlayerInfo[playerid][pHouse]][hhousePrice],"."), HouseSystem[PlayerInfo[playerid][pHouse]][hworld]);
                    House3DOwn[PlayerInfo[playerid][pHouse]] = Create3DTextLabel(string, 0xFEFEFEFE, HouseSystem[PlayerInfo[playerid][pHouse]][hhousePosX], HouseSystem[PlayerInfo[playerid][pHouse]][hhousePosY], HouseSystem[PlayerInfo[playerid][pHouse]][hhousePosZ], 40.0, 0, 1);
                    SaveHouse();
                    LoadHouse();
                }
            }
        }
    }
    if(dialogid == 51)// Продажа дом 2
    {
        if(response) //Если была нажата 1 кнопка
        {
            if(!strlen(inputtext))SendClientMessage(playerid, 0xFF0000AA,"{f984e5}Введите сумму от {ffffff}1 {ff0000}до {ffffff}10.000.000"),ShowPlayerDialog(playerid,42,DIALOG_STYLE_INPUT,"{ffff00}Продать дом","{ffffff}Введите сумму от {ff0000}1 {ffffff}до {ff0000}10.000.000","Да","Нет");
            else{
                new string[128];
                new hid[64];
                new houseprod1 = strval(inputtext);
                if(houseprod1 < 1 || houseprod1 > 10000000){
                    SendClientMessage(playerid, 0xFF0000AA,"{f984e5}Введите сумму от {ffffff}1 {ff0000}до {ffffff}10.000.000");
                    ShowPlayerDialog(playerid,42,DIALOG_STYLE_INPUT,"{ffff00}Продать дом","{ffffff}Введите сумму от {ff0000}1 {ffffff}до {ff0000}10.000.000","Да","Нет");
                    return true;}
                format(hid, sizeof(hid),"House/%iHouse.ini",hpid[playerid]);
                GetPlayerName(playerid,PlayerName,sizeof(PlayerName));// Узнаем ник игрока (можно и не делать)
                if (strcmp (HouseSystem[hpid[playerid]][hhouseOwner], PlayerName, true)) return SendClientMessage(playerid,0xFF0000AA,"{f984e5}Это не Ваш дом.");
                {
                    HouseSystem[PlayerInfo[playerid][pHouse1]][hhousePrice]= houseprod1;
                    HouseSystem[PlayerInfo[playerid][pHouse1]][hClok] = 0;
                    DestroyDynamicPickup(HousePickupSale[PlayerInfo[playerid][pHouse1]]);
                    HousePickupOwn[PlayerInfo[playerid][pHouse1]] = CreateDynamicPickup(1273, 23, HouseSystem[PlayerInfo[playerid][pHouse1]][hhousePosX], HouseSystem[PlayerInfo[playerid][pHouse1]][hhousePosY], HouseSystem[PlayerInfo[playerid][pHouse1]][hhousePosZ]+0.3, -1);
                    DestroyDynamicMapIcon(HouseSale[PlayerInfo[playerid][pHouse1]]);
                    HouseOwn[PlayerInfo[playerid][pHouse1]] = CreateDynamicMapIcon(HouseSystem[PlayerInfo[playerid][pHouse1]][hhousePosX], HouseSystem[PlayerInfo[playerid][pHouse1]][hhousePosY], HouseSystem[PlayerInfo[playerid][pHouse1]][hhousePosZ],31,0,-1,-1,-1,150);
                    Delete3DTextLabel(Text3D:House3DSale[PlayerInfo[playerid][pHouse1]]);
                    format(string, 256, "{FF9900}Дом: {FFFFFF}%s\n{00ff00}Владелец: {FFFFFF}%s\n{0096ff}Продаётся\n{ff0000}Стоимость:  {FFFFFF}$%s\n{f984e5}id %d", HouseSystem[PlayerInfo[playerid][pHouse1]][hhouseName], PlayerName, ConvertNumbers(HouseSystem[PlayerInfo[playerid][pHouse1]][hhousePrice],"."), HouseSystem[PlayerInfo[playerid][pHouse1]][hworld]);
                    House3DOwn[PlayerInfo[playerid][pHouse1]] = Create3DTextLabel(string, 0xFEFEFEFE, HouseSystem[PlayerInfo[playerid][pHouse1]][hhousePosX], HouseSystem[PlayerInfo[playerid][pHouse1]][hhousePosY], HouseSystem[PlayerInfo[playerid][pHouse1]][hhousePosZ], 40.0, 0, 1);
                    SaveHouse();
                    LoadHouse();
                }
            }
        }
    }
    if(dialogid == 52)// Продажа дом 3
    {
        if(response) //Если была нажата 1 кнопка
        {
            if(!strlen(inputtext))SendClientMessage(playerid, 0xFF0000AA,"{f984e5}Введите сумму от {ffffff}1 {ff0000}до {ffffff}10.000.000"),ShowPlayerDialog(playerid,43,DIALOG_STYLE_INPUT,"{ffff00}Продать дом","{ffffff}Введите сумму от {ff0000}1 {ffffff}до {ff0000}10.000.000","Да","Нет");
            else{
                new string[128];
                new hid[64];
                new houseprod2 = strval(inputtext);
                if(houseprod2 < 1 || houseprod2 > 10000000){
                    SendClientMessage(playerid, 0xFF0000AA,"{f984e5}Введите сумму от {ffffff}1 {ff0000}до {ffffff}10.000.000");
                    ShowPlayerDialog(playerid,43,DIALOG_STYLE_INPUT,"{ffff00}Продать дом","{ffffff}Введите сумму от {ff0000}1 {ffffff}до {ff0000}10.000.000","Да","Нет");
                    return true;}
                format(hid, sizeof(hid),"House/%iHouse.ini",hpid[playerid]);
                GetPlayerName(playerid,PlayerName,sizeof(PlayerName));// Узнаем ник игрока (можно и не делать)
                if (strcmp (HouseSystem[hpid[playerid]][hhouseOwner], PlayerName, true)) return SendClientMessage(playerid,0xFF0000AA,"{f984e5}Это не Ваш дом.");
                {
                    HouseSystem[PlayerInfo[playerid][pHouse2]][hhousePrice]= houseprod2;
                    HouseSystem[PlayerInfo[playerid][pHouse2]][hClok] = 0;
                    DestroyDynamicPickup(HousePickupSale[PlayerInfo[playerid][pHouse2]]);
                    HousePickupOwn[PlayerInfo[playerid][pHouse2]] = CreateDynamicPickup(1273, 23, HouseSystem[PlayerInfo[playerid][pHouse2]][hhousePosX], HouseSystem[PlayerInfo[playerid][pHouse2]][hhousePosY], HouseSystem[PlayerInfo[playerid][pHouse2]][hhousePosZ]+0.3, -1);
                    DestroyDynamicMapIcon(HouseSale[PlayerInfo[playerid][pHouse2]]);
                    HouseOwn[PlayerInfo[playerid][pHouse2]] = CreateDynamicMapIcon(HouseSystem[PlayerInfo[playerid][pHouse2]][hhousePosX], HouseSystem[PlayerInfo[playerid][pHouse2]][hhousePosY], HouseSystem[PlayerInfo[playerid][pHouse2]][hhousePosZ],31,0,-1,-1,-1,150);
                    Delete3DTextLabel(Text3D:House3DSale[PlayerInfo[playerid][pHouse2]]);
                    format(string, 256, "{FF9900}Дом: {FFFFFF}%s\n{00ff00}Владелец: {FFFFFF}%s\n{0096ff}Продаётся\n{ff0000}Стоимость:  {FFFFFF}$%s\n{f984e5}id %d", HouseSystem[PlayerInfo[playerid][pHouse2]][hhouseName], PlayerName, ConvertNumbers(HouseSystem[PlayerInfo[playerid][pHouse2]][hhousePrice],"."), HouseSystem[PlayerInfo[playerid][pHouse2]][hworld]);
                    House3DOwn[PlayerInfo[playerid][pHouse2]] = Create3DTextLabel(string, 0xFEFEFEFE, HouseSystem[PlayerInfo[playerid][pHouse2]][hhousePosX], HouseSystem[PlayerInfo[playerid][pHouse2]][hhousePosY], HouseSystem[PlayerInfo[playerid][pHouse2]][hhousePosZ], 40.0, 0, 1);
                    SaveHouse();
                    LoadHouse();
                }
            }
        }
    }

Вот и всё! Прошу сильно не пинать, это моя первая глобальная работа :oops:

Внимание: Размещение данной системы на сторонних порталах, только с разрешения автора.
[center]i love you [s]mxIni[/s] Mysql[/center]


Last bumped by Дим on 30 Jun 2014, 9:39.

  • Similar Topics
    Replies
    Views
    Last post

Return to “Уроки”

Who is online (over the past 5 minutes)

Users browsing this forum: 1 guest