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

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

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

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

Мануал Система гаражей Diamond RP

#Rips

Эксперт
Пользователь
Регистрация
16 Дек 2015
Сообщения
1,737
Лучшие ответы
0
Репутация
499
Доброе время суток, пользователи Pawno-Info.Ru
Автор данной копии: #Salev | #Rips

Версия MYSQL: 39-2



Что отсутствует в данной системе:
- Оплата за гараж - P.S Вы должны ее написать сами так как у всех код разный
- Респавн автомобиля - P.S Вы тоже должны написать сами так как у всех код разный

Дефайны использующийся в коде:
PHP:
#define     SPD         ShowPlayerDialog
#define  PRESSED(%0) (((newkeys & (%0)) == (%0)) && ((oldkeys & (%0)) != (%0)))
Создаем ENUM

PHP:
#define MAX_GARAGE      200
enum gInfo
{
	gID, // Индивидуальный ID
	gOwner[MAX_PLAYER_NAME], // Хозяин гаража
	Float:gCar[4],Float:gPEnter[3], // Координаты респавна автомобиля | Координаты для пикапа
	gCost, // Цена гаража
	gPrice, // Последняя цена с покупки 
	gPickupC // Сам пикап
}
new GarageInfo[MAX_GARAGE][gInfo], total_garage = 0;
new Text3D:LabelGarage[60]; // 3DText пикапа
В OnPlayerKeyStateChange
PHP:
    if(PRESSED(KEY_WALK))
    {
		for(new idx = 1; idx <= total_garage; idx++)
		{
		    if(IsPlayerInRangeOfPoint(playerid, 4,GarageInfo[idx][gPEnter][0], GarageInfo[idx][gPEnter][1], GarageInfo[idx][gPEnter][2]))
		    {
			    new strings[350];
	            if(!strcmp(GarageInfo[idx][gOwner],"None",true))
	            {
                	format(strings,sizeof(strings), "{FF9900}\n\nЭтот гараж свободен.{FFFFFF}\nВы хотите купить этот гараж за {FF9900}%i рублей{FFFFFF}\
					\n\n{FF9900}Информация{FFFFFF}: Гаражи предназначены только для тех, кто арендует комнаты в частных домах или не имеет дома",GarageInfo[idx][gCost]);
	                SPD(playerid, 63, DIALOG_STYLE_MSGBOX, "{FF9900}Гараж", strings, "Купить", "Закрыть");
				}
				else
				{
	                format(strings,sizeof(strings), "{FF9900}\n\nЭтот гараж занят.{FFFFFF}\nВладелец: {FF9900}%s{FFFFFF}\nДней оплачено: {FF9900}30{FFFFFF}\n\
					Нажмите {FF9900}'Респавн'{FFFFFF} чтобы возратить автомобиль к гаражу. Стоимость: {FF9900}600 рублей.\n\n\
					Информация{FFFFFF}: Гаражи предназначены только для тех, кто арендует комнаты в частных домах или не имеет дома",GarageInfo[idx][gOwner]);
	                SPD(playerid, 64, DIALOG_STYLE_MSGBOX, "{FF9900}Гараж", strings, "Респавн", "Закрыть");
				}
			}
		}
	}

Диалог покупки:

PHP:
		case 63:
		{
		    if(response)
		    {
		    	if(!response) return true;
		    	if(strcmp(GarageInfo[total_garage][gOwner],"None",true) != 0) return SendClientMessage(playerid,-1,"У гаража уже есть владелец!");
		    	PlayerInfo[playerid][pCash] -= GarageInfo[total_garage][gPrice];
				GarageInfo[total_garage][gPrice] = GarageInfo[total_garage][gPrice];
				SendClientMessage(playerid, 0xFF9900FF, "Поздравляем с покупкой гаража!");
				strmid(GarageInfo[total_garage][gOwner],PlayerInfo[playerid][pName], 0, strlen(PlayerInfo[playerid][pName]), MAX_PLAYER_NAME);
				new string[128];
				format(string,sizeof(string), "UPDATE `garage` SET `gOwner` = '%s', `gPrice` = '%d' WHERE `gID` = '%d'",PlayerInfo[playerid][pName],GarageInfo[total_garage][gPrice]);
				mysql_function_query(connects, string, false, "", "");
				UpDataGarageInfo(total_garage);
			}
		}
Делаем загрузку гаражей:

PHP:
forward LoadGaragePlayer();
public LoadGaragePlayer()
{
	new rows, fields, stringers[84];
	cache_get_data(rows, fields);
	if(!rows) return printf("[SYSTEM-GARAGE]: Гаражи не загружены!");
	new idx;
    for(idx = 1; idx <= rows; idx++)
    {
        GarageInfo[idx][gID] = cache_get_field_content_int(idx-1, "gID");
        cache_get_field_content(idx-1, "gOwner", GarageInfo[idx][gOwner], connects, 26);
        GarageInfo[idx][gCar][0] = cache_get_field_content_float(idx-1, "gCarX", connects);
        GarageInfo[idx][gCar][1] = cache_get_field_content_float(idx-1, "gCarY", connects);
        GarageInfo[idx][gCar][2] = cache_get_field_content_float(idx-1, "gCarZ", connects);
        GarageInfo[idx][gCar][3] = cache_get_field_content_float(idx-1, "gCarA", connects);
        GarageInfo[idx][gPEnter][0] = cache_get_field_content_float(idx-1, "gPEnterX", connects);
        GarageInfo[idx][gPEnter][1] = cache_get_field_content_float(idx-1, "gPEnterY", connects);
        GarageInfo[idx][gPEnter][2] = cache_get_field_content_float(idx-1, "gPEnterZ", connects);
        GarageInfo[idx][gCost] = cache_get_field_content_int(idx-1, "gCost");
        GarageInfo[idx][gPrice] = cache_get_field_content_int(idx-1, "gPrice");
        
        GarageInfo[idx][gPickupC] = CreateDynamicPickup(1080,23, GarageInfo[idx][gPEnter][0],GarageInfo[idx][gPEnter][1],GarageInfo[idx][gPEnter][2]);
        if(!strcmp(GarageInfo[idx][gOwner],"None",true))
		{
		    format(stringers,sizeof(stringers), "Номер гаража: {FF9900}%i{FFFFFF}\nВладелец: {FF9900}Отсутствует", GarageInfo[idx][gID]);
		    LabelGarage[idx] =  CreateDynamic3DTextLabel(stringers,0xFFFFFFFF,GarageInfo[idx][gPEnter][0],GarageInfo[idx][gPEnter][1],GarageInfo[idx][gPEnter][2],15.0,INVALID_PLAYER_ID,INVALID_VEHICLE_ID,1,0);
		}
		else
		{
		    format(stringers,sizeof(stringers), "Номер гаража: {FF9900}%i{FFFFFF}\nВладелец: {FF9900}%s", GarageInfo[idx][gID], GarageInfo[idx][gOwner]);
		    LabelGarage[idx] = CreateDynamic3DTextLabel(stringers,0xFFFFFFFF,GarageInfo[idx][gPEnter][0],GarageInfo[idx][gPEnter][1],GarageInfo[idx][gPEnter][2],15.0,INVALID_PLAYER_ID,INVALID_VEHICLE_ID,1,0);
		}
        total_garage++;
	}
	printf("[SYSTEM-GARAGE]: Гаражи успешно загружены! Количество гаражей: %i", total_garage);
	return 1;
}
Делаем сток обновления 3D Text'a:
PHP:
stock UpDataGarageInfo(idx)
{
	new stringers[84];
	if(!strcmp(GarageInfo[idx][gOwner],"None",true)) { format(stringers,sizeof(stringers), "Номер гаража: {FF9900}%i{FFFFFF}\nВладелец: {FF9900}Отсутствует", GarageInfo[idx][gID]); }
	else { format(stringers,sizeof(stringers), "Номер гаража: {FF9900}%i{FFFFFF}\nВладелец: {FF9900}%s", GarageInfo[idx][gID], GarageInfo[idx][gOwner]); }
	UpdateDynamic3DTextLabelText(LabelGarage[idx], -1, stringers);
	return 1;
}
Команды на создание и выставление координат кара:
PHP:
CMD:addg(playerid, params[])
{
    new Float:GaragePos[4];
    if(sscanf(params, "d", params[0])) return SCM(playerid, -1, "{FF9900}• [Подсказка]{FFFFFF}: Используйте /addg [цена]");
    GetPlayerPos(playerid, GaragePos[0], GaragePos[1], GaragePos[2]);
	GetPlayerFacingAngle(playerid, GaragePos[3]);
	
	GarageInfo[total_garage][gPEnter][0] = GaragePos[0];
	GarageInfo[total_garage][gPEnter][1] = GaragePos[1];
	GarageInfo[total_garage][gPEnter][2] = GaragePos[2];

	GarageInfo[total_garage][gCost] = params[0];
	GarageInfo[total_garage][gPickupC] = CreateDynamicPickup(1080,23, GarageInfo[total_garage][gPEnter][0],GarageInfo[total_garage][gPEnter][1],GarageInfo[total_garage][gPEnter][2]);
	new string[128];
	format(string,sizeof(string), "INSERT INTO `garage` (`gPEnterX`,`gPEnterY`,`gPEnterZ`,`gCost`) VALUES ('%f','%f','%f','%i')",GarageInfo[total_garage][gPEnter][0],GarageInfo[total_garage][gPEnter][1],GarageInfo[total_garage][gPEnter][2],
	params[0]);
	mysql_function_query(connects, string, true, "", "d", playerid);
	SCM(playerid, -1, "Создайте кар и встаньте как будет респавниться авто в гараже и пропишите /poscar [id гаража]!");

	return 1;
}
CMD:poscar(playerid, params[])
{
	if(sscanf(params, "d", params[0])) return SendClientMessage(playerid, -1, "{FF9900}• [Подсказка]{FFFFFF}: Используйте /setposcar [id гаража]");
	if(params[0] < 0 || params[0] > 200) return 1;
	new Float:X,Float:Y,Float:Z,Float:Angle; GetPlayerPos(playerid,X,Y,Z); GetPlayerFacingAngle(playerid,Angle);
	GarageInfo[params[0]][gCar][0] = X;
	GarageInfo[params[0]][gCar][1]= Y;
	GarageInfo[params[0]][gCar][2] = Z;
	GarageInfo[params[0]][gCar][3] = Angle;
	SendClientMessage(playerid, -1, "Координаты машины установлены");
	new string[258];
	format(string, sizeof(string), "UPDATE `garage` SET `gCarX` = '%f', `gCarY` = '%f', `gCarZ` = '%f', `gCarA` = '%f' WHERE gID = '%i'",X,Y,Z,Angle,params[0]);
	mysql_function_query(connects, string, false, "", "");
	return true;
}
Где происходит подключение к базе данных:
PHP:
mysql_function_query(connects,"SELECT * FROM `garage`", true, "LoadGaragePlayer", "");
Создаем таблицу:
PHP:
CREATE TABLE IF NOT EXISTS `garage` (
  `gID` int(11) NOT NULL AUTO_INCREMENT,
  `gOwner` varchar(26) NOT NULL,
  `gCarX` float NOT NULL,
  `gCarY` float NOT NULL,
  `gCarZ` float NOT NULL,
  `gCarA` float NOT NULL,
  `gCost` int(11) NOT NULL,
  `gPrice` int(11) NOT NULL,
  `gPEnterX` float NOT NULL,
  `gPEnterY` float NOT NULL,
  `gPEnterZ` float NOT NULL,
  PRIMARY KEY (`gID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
 
Последнее редактирование:
Сверху Снизу