Доступ к готовым решениям

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

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

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

Мануал Новая Динамическая система домов [MySQL R8]

Mentos

Компетентный
Хай пипл. В прошлой своей системе домов я там намудрил, криво все сделал. В этой же системе все менее криво xD
Самого начала вводим /addhouse, и у нас появляется машинка, дальше читаем чат
Когда поставили бибику куда нам надо и ввели /createv, бежим к месту нашего будущего дома и вводим...

После этого нас переносит в выбор интерьера. Читайте чат короч.

После нажатия кнопки Y нас перенесет в то место, где мы стояли и создаться вот такой пикап:

P.S: не обращайте внимания что там с классом дома какие то закарючки, это уже исправлено
А и кстати, тут покупка\продажа чутка другая. Если вам не понравится моя система купли\продажи, пишите свою :)




Все по старинке:
Командный процессор: ZCMD (DC_CMD)
sscanf2.

А теперь кооод:
Ко всем new:
PHP:
forward HouseLoad();
new RedHouse[MAX_PLAYERS], tempINT[MAX_PLAYERS] = 0, inet[MAX_PLAYERS], carhouse[MAX_PLAYERS];//Переменные для домов. Создание
new PlayerIDS[MAX_PLAYERS], TWOPlayer[MAX_PLAYERS];//Переменные для хранения ИД игрока
new playercar[MAX_PLAYERS];//Личная машина игрока
PHP:
//Координаты интерьеров домов
new Float:TPtoINT[10][4] = {
{223.08000183105, 1287.4799804688, 1081.6390380859, 1.0},
{2365.2189941406, -1135.3070068359, 1050.3740234375, 8.0},
{2196.4260253906, -1204.2110595703, 1048.5219726563, 6.0},
{2270.1569824219, -1210.5240478516, 1047.0610351563, 10.0},
{2237.5061035156, -1081.1059570313, 1048.5219726563, 2.0},
{2317.79296875, -1026.458984375, 1049.7159423828, 9.0},
{261.03601074219, 1284.8260498047, 1079.7559814453, 4.0},
{140.28100585938, 1366.4649658203, 1083.3580322266, 5.0},
{83.00700378418, 1322.7110595703, 1083.3649902344, 9.0},
{-260.75500488281, 1456.6889648438, 1083.8659667969, 4.0}
};
Предупреждаю сразу, что тут не все интерьеры домов. Так что вам еще надо будет добавить интерьеры.
PHP:
enum HouseInfo
{
	hID,
	hName[24],
	hCuplen,
	Float:hPosV[3],
	Float:hPosE[3],
	Float:hPosVe[4],
	hCena,
	hLock,
	hClass,
	hInt,
	hIcons,
	hPicka,
	Text3D:hText
};
new hInfo[500][HouseInfo];
new LoadAllHouse;
В OnGameModeInit:
PHP:
mysql_function_query(connect_MYSQL,"SELECT * FROM `house`",true,"HouseLoad","");
Теперь команды:
PHP:
CMD:addhouse(playerid, params[])
{
SetPVarInt(playerid, "houseid", LoadAllHouse++);
GetPlayerPos(playerid, hInfo[GetPVarInt(playerid, "houseid")][hPosVe][0], hInfo[GetPVarInt(playerid, "houseid")][hPosVe][1], hInfo[GetPVarInt(playerid, "houseid")][hPosVe][2]), GetPlayerFacingAngle(playerid, hInfo[GetPVarInt(playerid, "houseid")][hPosVe][3]);
carhouse[playerid] = CreateVehicle(426, hInfo[GetPVarInt(playerid, "houseid")][hPosVe][0], hInfo[GetPVarInt(playerid, "houseid")][hPosVe][1], hInfo[GetPVarInt(playerid, "houseid")][hPosVe][2], hInfo[GetPVarInt(playerid, "houseid")][hPosVe][3], 0, 1, 60);
PutPlayerInVehicle(playerid, carhouse[playerid], 0);
SendClientMessage(playerid, -1, "Выберете место где будет спавнится авто для этого дома.");
SendClientMessage(playerid, -1, "Когда найдете место введите /createv");
return 1;
}

CMD:createv(playerid, params[])
{
GetVehiclePos(carhouse[playerid], hInfo[GetPVarInt(playerid, "houseid")][hPosVe][0], hInfo[GetPVarInt(playerid, "houseid")][hPosVe][1], hInfo[GetPVarInt(playerid, "houseid")][hPosVe][2]), GetVehicleZAngle(carhouse[playerid], hInfo[GetPVarInt(playerid, "houseid")][hPosVe][3]);
DestroyVehicle(carhouse[playerid]);
SendClientMessage(playerid, -1, "Теперь подойдите к месту где будет сам дом.");
SendClientMessage(playerid, -1, "А там используйте /createh [Цена][Класс]");
return 1;
}

CMD:createh(playerid, params[])
{
GetPlayerPos(playerid, hInfo[GetPVarInt(playerid, "houseid")][hPosV][0], hInfo[GetPVarInt(playerid, "houseid")][hPosV][1], hInfo[GetPVarInt(playerid, "houseid")][hPosV][2]);
if(sscanf(params, "dd", hInfo[GetPVarInt(playerid, "houseid")][hCena], hInfo[GetPVarInt(playerid, "houseid")][hClass]))return SendClientMessage(playerid, -1, "Используйте: /addhouse [Цена][Класс]");
RedHouse[playerid] = 1;
inet[playerid] = floatround(TPtoINT[tempINT[playerid]][3]);
SetPlayerPos(playerid, TPtoINT[tempINT[playerid]][0], TPtoINT[tempINT[playerid]][1], TPtoINT[tempINT[playerid]][2]);
SetPlayerInterior(playerid, inet[playerid]);
SetPlayerVirtualWorld(playerid, GetPVarInt(playerid, "houseid"));
SendClientMessage(playerid, -1, "Используйте Левый Shift и Левый Ctrl для выбора интерьера.");
SendClientMessage(playerid, -1, "Используйте Y что бы сохранить выбранный интерьер.");
return 1;
}
CMD:hlock(playerid, params[])
{
if(pInfo[playerid][pHouseKey] == -1) SendClientMessage(playerid, -1, "У вас нету дома!");
if(IsPlayerInRangeOfPoint(playerid,2.0,hInfo[pInfo[playerid][pHouseKey]][hPosV][0],hInfo[pInfo[playerid][pHouseKey]][hPosV][1],hInfo[pInfo[playerid][pHouseKey]][hPosV][2]) || IsPlayerInRangeOfPoint(playerid,2.0,hInfo[pInfo[playerid][pHouseKey]][hPosE][0],hInfo[pInfo[playerid][pHouseKey]][hPosE][1],hInfo[pInfo[playerid][pHouseKey]][hPosE][2]))
{
	switch(hInfo[pInfo[playerid][pHouseKey]][hLock])
	{
	    case 0: hInfo[pInfo[playerid][pHouseKey]][hLock] = 1, SendClientMessage(playerid, -1, "Вы закрыли свой дом.");
	    case 1: hInfo[pInfo[playerid][pHouseKey]][hLock] = 0, SendClientMessage(playerid, -1, "Вы открыли свой дом.");
	}
}
else SendClientMessage(playerid, -1, "Вы должны стоять рядом со своим домом!");
return 1;
}
Теперь в OnPlayerKeyStateChange:
PHP:
if(newkeys == KEY_YES)
    {
        if(RedHouse[playerid] == 1)
        {
            SetPlayerPos(playerid, hInfo[GetPVarInt(playerid, "houseid")][hPosV][0], hInfo[GetPVarInt(playerid, "houseid")][hPosV][1], hInfo[GetPVarInt(playerid, "houseid")][hPosV][2]);
            SetPlayerInterior(playerid, 0);
            SetPlayerVirtualWorld(playerid, 0);
            RedHouse[playerid] = 0;
            
            mysql_format(connect_MYSQL, zapros, sizeof(zapros), "INSERT INTO `house` (`name`, `pos1`, `pos2`, `pos3`, `pose1`, `pose2`, `pose3`, `poscar1`, `poscar2`, `poscar3`, `poscar4`, `cena`, `class`, `int`) VALUES ('The State', '%f', '%f', '%f', '%f', '%f', '%f', '%f', '%f', '%f', '%f', '%i', '%i', '%i')",
            hInfo[GetPVarInt(playerid, "houseid")][hPosV][0],
            hInfo[GetPVarInt(playerid, "houseid")][hPosV][1],
            hInfo[GetPVarInt(playerid, "houseid")][hPosV][2],
            TPtoINT[tempINT[playerid]][0],
            TPtoINT[tempINT[playerid]][1],
            TPtoINT[tempINT[playerid]][2],
            hInfo[GetPVarInt(playerid, "houseid")][hPosVe][0],
            hInfo[GetPVarInt(playerid, "houseid")][hPosVe][1],
            hInfo[GetPVarInt(playerid, "houseid")][hPosVe][2],
            hInfo[GetPVarInt(playerid, "houseid")][hPosVe][3],
            hInfo[GetPVarInt(playerid, "houseid")][hCena],
            hInfo[GetPVarInt(playerid, "houseid")][hClass],
            inet[playerid]
			);
    		mysql_function_query(connect_MYSQL, zapros, false, "", "");
    		mysql_function_query(connect_MYSQL,"SELECT * FROM `house`",true,"HouseLoad","");
        }
    }
    if(newkeys == 4)
	{
	    if(RedHouse[playerid] == 1)
	    {
	        if(tempINT[playerid] >= 9) tempINT[playerid] = 0;
	        tempINT[playerid]++;
	        inet[playerid] = floatround(TPtoINT[tempINT[playerid]][3]);
	        SetPlayerPos(playerid, TPtoINT[tempINT[playerid]][0], TPtoINT[tempINT[playerid]][1], TPtoINT[tempINT[playerid]][2]);
			SetPlayerInterior(playerid, inet[playerid]);
	    }
	}
    if(newkeys == KEY_JUMP)
	{
	    if(RedHouse[playerid] == 1)
	    {
	        if(tempINT[playerid] < 0) tempINT[playerid] = 10;
	        tempINT[playerid]--;
	        inet[playerid] = floatround(TPtoINT[tempINT[playerid]][3]);
	        SetPlayerPos(playerid, TPtoINT[tempINT[playerid]][0], TPtoINT[tempINT[playerid]][1], TPtoINT[tempINT[playerid]][2]);
			SetPlayerInterior(playerid, inet[playerid]);
	    }
	}
    if(newkeys == KEY_WALK)
    {
        for(new i; i <= LoadAllHouse; i++)
        {
            if(IsPlayerInRangeOfPoint(playerid,2.0,hInfo[i][hPosV][0],hInfo[i][hPosV][1],hInfo[i][hPosV][2]))
            {
                if(hInfo[i][hLock] != 0) return SendClientMessage(playerid, -1, "Дом закрыт! (/hinfo что бы узнать информацию о доме)");
				SetPlayerPos(playerid, hInfo[i][hPosE][0],hInfo[i][hPosE][1],hInfo[i][hPosE][2]);
				SetPlayerInterior(playerid, hInfo[i][hInt]);
				SetPlayerVirtualWorld(playerid, hInfo[i][hID]);
            }
            else if(IsPlayerInRangeOfPoint(playerid,2.0,hInfo[i][hPosE][0],hInfo[i][hPosE][1],hInfo[i][hPosE][2]))
            {
                if(hInfo[i][hLock] != 0) return SendClientMessage(playerid, -1, "Дом закрыт!");
				SetPlayerPos(playerid, hInfo[i][hPosV][0],hInfo[i][hPosV][1],hInfo[i][hPosV][2]);
				SetPlayerInterior(playerid, 0);
				SetPlayerVirtualWorld(playerid, 0);
            }
        }
        if(IsPlayerInRangeOfPoint(playerid,2.0,1490.3805,1305.9698,1093.2964)) ShowPlayerDialog(playerid, 4, DIALOG_STYLE_INPUT, "Покупка дома", "Здравствуйте! У нас вы можете купить себе недвижемость.\nМы надеемся вы уже присмотрели себе домик?\nЕсли да тогда введите его номер:", "Ввод","Отмена");
        else if(IsPlayerInRangeOfPoint(playerid,2.0,1492.7085,1308.1033,1093.2930))
		{
		if(pInfo[playerid][pHouseKey] == -1)return SendClientMessage(playerid, -1, "Вам нечего продавать.");
		ShowPlayerDialog(playerid, 7, DIALOG_STYLE_LIST, "Продажа дома", "1. Продать дом Государству\n2. Продать дом игроку","Выбрать","Отмена");
		}
}
Теперь в OnDialogResponse:
PHP:
case 4:
		{
		    if(response)
		    {
		        SetPVarInt(playerid, "houseid", strval(inputtext));
		        if(GetPVarInt(playerid, "houseid") >= LoadAllHouse) return SendClientMessage(playerid, -1, "Такого дома не существует!");
				new string[140], cuple[23], stat[26], clas[8];
				if(hInfo[GetPVarInt(playerid, "houseid")][hLock] == 0) cuple = "{008000}Открыт{FFFFFF}";
				else cuple = "{FF0000}Закрыт{FFFFFF}";
				if(hInfo[GetPVarInt(playerid, "houseid")][hCuplen] == 0) stat = "{008000}Продается{FFFFFF}";
				else stat = "{FF0000}Куплен{FFFFFF}";
				switch(hInfo[GetPVarInt(playerid, "houseid")][hClass])
				{
				    case 1: clas = "Эконом";
				    case 2: clas = "Комфорт";
				    case 3: clas = "Бизнес";
				}
				format(string, 140, "{FFFFFF}Номер дома: %d\nСтатус дома: %s\nСостояние дома: %s\nКласс дома: %s\n\nЦена дома: %d", GetPVarInt(playerid, "houseid"), stat, cuple, clas, hInfo[GetPVarInt(playerid, "houseid")][hCena]);
				ShowPlayerDialog(playerid, 5, DIALOG_STYLE_LIST, "Информация о доме", string, "Купить", "Отмена");
			}
		}
		case 5:
		{
		    if(response)
		    {
		        if(pInfo[playerid][pHouseKey] != -1) return SendClientMessage(playerid, -1, "У вас уже есть дом!");
		        if(pInfo[playerid][pMoney] < hInfo[GetPVarInt(playerid, "houseid")][hCena]) return SendClientMessage(playerid, -1, "У вас недостаточно денег для покупки дома!");
		        if(hInfo[GetPVarInt(playerid, "houseid")][hCuplen] != 0) return SendClientMessage(playerid, -1, "Этот дом уже куплен!");
		        pInfo[playerid][pHouseKey] = GetPVarInt(playerid, "houseid");
		        pInfo[playerid][pMoney] -= hInfo[GetPVarInt(playerid, "houseid")][hCena];
		        hInfo[GetPVarInt(playerid, "houseid")][hCuplen] = 1;
		        strmid(hInfo[GetPVarInt(playerid, "houseid")][hName], pInfo[playerid][pName], 0, strlen(pInfo[playerid][pName]), 255);
		        SendClientMessage(playerid, -1, "Поздравляем вас с покупкой дома!");
		        SaveHouse(GetPVarInt(playerid, "houseid"));
		        UpdateHouse();
		    }
		}
case 7:
		{
		    if(response)
		    {
		        switch(listitem)
		        {
		            case 0:
		            {
		                new string[180], cena;
						cena = (hInfo[pInfo[playerid][pHouseKey]][hCena]/100)*30;
						format(string, 180, "Государство может купить у вас ваш дом.\nОднако на 30 процентов дешевле от гос. цены\nГос. цена вашего дома: %d\n\nГосударство купит у вас дом за: %d долларов.\nВы согласны?",hInfo[pInfo[playerid][pHouseKey]][hCena], hInfo[pInfo[playerid][pHouseKey]][hCena] - cena);
						ShowPlayerDialog(playerid, 8, DIALOG_STYLE_MSGBOX, "Продажа дома", string, "Согласен","Отмена");
		            }
		            case 1:
		            {
		                ShowPlayerDialog(playerid, 9, DIALOG_STYLE_INPUT, "Продажа дома","Введите id игрока которому хотите продать дом:","Ввод","Отмена");
		            }
		        }
		    }
		}
		case 8:
		{
		    if(response)
		    {
		        new cena = (hInfo[pInfo[playerid][pHouseKey]][hCena]/100)*30;
		        strmid(hInfo[pInfo[playerid][pHouseKey]][hName], "The State", 0, 10, 255);
		        hInfo[pInfo[playerid][pHouseKey]][hCuplen] = 0;
		        pInfo[playerid][pMoney] += hInfo[pInfo[playerid][pHouseKey]][hCena] - cena;
				pInfo[playerid][pSpawnChange] = 0;
		        SendClientMessage(playerid, -1, "Вы успешно продали свой дом!");
		        SaveHouse(pInfo[playerid][pHouseKey]);
		        UpdateHouse();
		        pInfo[playerid][pHouseKey] = -1;
		    }
		}
		case 9:
		{
		    if(response)
		    {
		        if(!strlen(inputtext)) return SendClientMessage(playerid, -1, "Вы ничего не ввели!");
		        PlayerIDS[playerid] = strval(inputtext);
		        ShowPlayerDialog(playerid, 10, DIALOG_STYLE_INPUT, "Продажа дома","Введите за какую цену вы готовы продать дом:","Ввод","Отмена");
		    }
		}
		case 10:
		{
		    if(response)
		    {
		        new st[120];
		        SetPVarInt(playerid, "CenaH",strval(inputtext));
				TWOPlayer[PlayerIDS[playerid]] = playerid;
		        if(GetPVarInt(playerid, "CenaH") > pInfo[PlayerIDS[playerid]][pMoney]) SendClientMessage(playerid, -1, "У покупателя нет такой суммы.");
		        if(pInfo[PlayerIDS[playerid]][pHouseKey] != -1) SendClientMessage(playerid, -1, "У покупателя уже есть дом.");
				format(st, 120, "%s предлогает вам купить дом.\nЗа %d долларов. Вы согласны?", pInfo[playerid][pName], GetPVarInt(playerid, "CenaH"));
				ShowPlayerDialog(PlayerIDS[playerid], 11, DIALOG_STYLE_MSGBOX, "Покупка дома", st, "Купить","Отказ");
		    }
		}
		case 11:
		{
		    if(response)
		    {
		        pInfo[playerid][pHouseKey] = pInfo[TWOPlayer[playerid]][pHouseKey], pInfo[TWOPlayer[playerid]][pHouseKey] = -1;
		        pInfo[playerid][pMoney] -= GetPVarInt(TWOPlayer[playerid], "CenaH"), pInfo[TWOPlayer[playerid]][pMoney] += GetPVarInt(TWOPlayer[playerid], "CenaH");
		        pInfo[TWOPlayer[playerid]][pSpawnChange] = 0;
		        SendClientMessage(TWOPlayer[playerid], -1, "Вы успешно продали дом!");
		        SendClientMessage(playerid, -1, "Вы успешно купили дом!");
		        UpdateHouse();
		    }
		    else SendClientMessage(TWOPlayer[playerid], -1, "Покупатель отказался от покупки!") ,SendClientMessage(playerid, -1, "Вы отказались от покупки!");
		}
Еще забыл, в PlayerInfo, или что у вас там добавьте:
PHP:
pHouseKey,
В загрузку аккаунта:
PHP:
if(pInfo[playerid][pHouseKey] != -1)
	{
	    playercar[playerid] = CreateVehicle(pInfo[playerid][pCar], hInfo[pInfo[playerid][pHouseKey]][hPosVe][0],hInfo[pInfo[playerid][pHouseKey]][hPosVe][1],hInfo[pInfo[playerid][pHouseKey]][hPosVe][2],hInfo[pInfo[playerid][pHouseKey]][hPosVe][3], -1, -1, 500000);
	}
Вот это вот в конец:
PHP:
public HouseLoad()
{
	LoadAllHouse = 0;
	new rows, fields, time = GetTickCount();
	cache_get_data(rows, fields);
	for(new i = 0; i < rows; i++)
	{
	    hInfo[i][hID] = cache_get_field_content_int(i, "id", connect_MYSQL);
	    cache_get_field_content(i, "name", hInfo[i][hName], connect_MYSQL, 24);
	    hInfo[i][hCuplen] = cache_get_field_content_int(i, "cuplen", connect_MYSQL);
	    hInfo[i][hPosV][0] = cache_get_field_content_float(i, "pos1", connect_MYSQL);
	    hInfo[i][hPosV][1] = cache_get_field_content_float(i, "pos2", connect_MYSQL);
	    hInfo[i][hPosV][2] = cache_get_field_content_float(i, "pos3", connect_MYSQL);
	    hInfo[i][hPosE][0] = cache_get_field_content_float(i, "pose1", connect_MYSQL);
	    hInfo[i][hPosE][1] = cache_get_field_content_float(i, "pose2", connect_MYSQL);
	    hInfo[i][hPosE][2] = cache_get_field_content_float(i, "pose3", connect_MYSQL);
	    hInfo[i][hPosVe][0] = cache_get_field_content_float(i, "poscar1", connect_MYSQL);
	    hInfo[i][hPosVe][1] = cache_get_field_content_float(i, "poscar2", connect_MYSQL);
	    hInfo[i][hPosVe][2] = cache_get_field_content_float(i, "poscar3", connect_MYSQL);
	    hInfo[i][hPosVe][3] = cache_get_field_content_float(i, "poscar4", connect_MYSQL);
	    hInfo[i][hCena] = cache_get_field_content_int(i, "cena", connect_MYSQL);
	    hInfo[i][hLock] = cache_get_field_content_int(i, "lock", connect_MYSQL);
	    hInfo[i][hClass] = cache_get_field_content_int(i, "class", connect_MYSQL);
	    hInfo[i][hInt] = cache_get_field_content_int(i, "int", connect_MYSQL);
	    LoadAllHouse++;
	    
	    new string[150], clas[8];
		switch(hInfo[i][hClass])
		{
		    case 0: clas = "Эконом";
		    case 1: clas = "Комфорт";
		    case 2: clas = "Бизнес";
		}
	    format(string, 150, "Номер дома: %d\nКласс дома: %s\nЦена дома: %d", i, hInfo[i][hClass], hInfo[i][hCena]);
	    
	    if(hInfo[i][hCuplen] == 0)
		{
		hInfo[i][hPicka] = CreatePickup(19471, 1, hInfo[i][hPosV][0], hInfo[i][hPosV][1], hInfo[i][hPosV][2], -1);
        hInfo[i][hText] = Create3DTextLabel(string,0xFFFFFF,hInfo[i][hPosV][0], hInfo[i][hPosV][1], hInfo[i][hPosV][2],10.0,0);
		}
		else
		{
	    hInfo[i][hPicka] = CreatePickup(1272, 1, hInfo[i][hPosV][0], hInfo[i][hPosV][1], hInfo[i][hPosV][2], -1);
        hInfo[i][hText] = Create3DTextLabel(string,0xFFFFFF,hInfo[i][hPosV][0], hInfo[i][hPosV][1], hInfo[i][hPosV][2],10.0,0);
		}
	}
	printf("[Загружено домов]: <%i>. Время загрузки: <%i мс>",LoadAllHouse,GetTickCount()-time);
	return 1;
}

stock SaveHouse(h)
{
	mysql_format(connect_MYSQL, zapros, sizeof(zapros),"UPDATE `house` SET `name` = '%s', `cuplen` = '%d', `cena` = '%d', `lock` = '%d', `class` = '%d', `int` = '%d' WHERE `id` = '%d'", hInfo[h][hName], hInfo[h][hCuplen], hInfo[h][hCena], hInfo[h][hLock], hInfo[h][hClass], hInfo[h][hInt], hInfo[h][hID]);
    mysql_function_query(connect_MYSQL, zapros, false, "", "");
}

stock UpdateHouse()
{
	for(new i; i <= LoadAllHouse; i++)
	{
	    DestroyPickup(hInfo[i][hPicka]);
	    Delete3DTextLabel(hInfo[i][hText]);
	    
	    new string[150], clas[8];
		switch(hInfo[i][hClass])
		{
		    case 0: clas = "Эконом";
		    case 1: clas = "Комфорт";
		    case 2: clas = "Бизнес";
		}
	    format(string, 150, "Номер дома: %d\nКласс дома: %s\nЦена дома: %d", i, hInfo[i][hClass], hInfo[i][hCena]);

	    if(hInfo[i][hCuplen] == 0)
		{
		hInfo[i][hPicka] = CreatePickup(19471, 1, hInfo[i][hPosV][0], hInfo[i][hPosV][1], hInfo[i][hPosV][2], -1);
        hInfo[i][hText] = Create3DTextLabel(string,0xFFFFFF,hInfo[i][hPosV][0], hInfo[i][hPosV][1], hInfo[i][hPosV][2],10.0,0);
		}
		else
		{
	    hInfo[i][hPicka] = CreatePickup(1272, 1, hInfo[i][hPosV][0], hInfo[i][hPosV][1], hInfo[i][hPosV][2], -1);
        hInfo[i][hText] = Create3DTextLabel(string,0xFFFFFF,hInfo[i][hPosV][0], hInfo[i][hPosV][1], hInfo[i][hPosV][2],10.0,0);
		}
	}
}
В OnPlayerConnect:
PHP:
pInfo[playerid][pHouseKey] = -1;
В OnPlayerSpawn:
PHP:
if(pInfo[plaerid][pHouseKey] != -1)
{
SetPlayerPos(playerid, hInfo[pInfo[playerid][pHouseKey]][hPosE][0], hInfo[pInfo[playerid][pHouseKey]][hPosE][1], hInfo[pInfo[playerid][pHouseKey]][hPosE][2]);
		SetPlayerInterior(playerid, hInfo[pInfo[playerid][pHouseKey]][hInt]);
		SetPlayerVirtualWorld(playerid, pInfo[playerid][pHouseKey]);
}
Таблица House:

Так, теперь. Экспертам сразу говорю, да код быдло, душу я не влаживал в эту систему.
Новичкам говорю, тут есть баги. Вы же не хотели все готовенькое? Так что включаем голову, ищем их и сами исправляем. Ну может быть я чем нибудь помогу. В основном баги тут будут из-за отсутствия проверок. Я просто жирный лентяй и у меня нету друзей которые помогли бы мне тестировать систему, так что я не знаю работает ли продажа дома игроку или нет. Потому что я одинок :df:
Вроде бы ничего не забыл. Удачи в разборе кода. И я надеюсь вы догадаитесь обьявить переменную отправки запроса :)
Автор системы: Mentos
 
Сверху Снизу