Перейти к содержанию
Авторизация  
Flaymeek

Система личного транспорта Gamenix

Рекомендуемые сообщения

Flaymeek

Доброго времени суток, форумчане!)

 

Спустя 3 года я решил снова вернуться к CRMP. Взял под основу мод Gamenix, но столкнулся с такой проблемой , что не могу сделать так что бы личный транспорт игрока оставался при выходе из сервера, а не удалялся и создавался снова при коннекте.

 

Ну в общем, перейдем к делу.

В OnPlayerLogin находится загрузка транспорта:

LoadMyCar(playerid); 

Сам собственно stock:

stock LoadMyCar(playerid)
{
	if(PlayerInfo[playerid][cModel] == 0) return true;
	new carid;
	if(PlayerInfo[playerid][cX] == 0 && PlayerInfo[playerid][cY] == 0 && PlayerInfo[playerid][cZ] == 0)
	{
	    new r = random(11);
   		carid = CreateVehicle(PlayerInfo[playerid][cModel], SalonRandSpawn[r][0], SalonRandSpawn[r][1], SalonRandSpawn[r][2], SalonRandSpawn[r][3], PlayerInfo[playerid][cColor][0], PlayerInfo[playerid][cColor][1], 90000);
		ShowPlayerDialog(playerid, D_NULL, 0, "# Автосалон | {FFD700}FAQ", "{FFFFFF}Вы не припарковали ваш автомобиль перед выходом.\n\
		{FFFFFF}Забрать ващ автомобиль вы можете на парковке автосалона {FFD700}''Анашан''.\n\
		{CD5C5C}Постарайтесь не забыть припарковать ваш автомобиль в этот раз.", "Закрыть", "");
	}
	else
	{
    carid = CreateVehicle(PlayerInfo[playerid][cModel], PlayerInfo[playerid][cX], PlayerInfo[playerid][cY], PlayerInfo[playerid][cZ], PlayerInfo[playerid][cFa], PlayerInfo[playerid][cColor][0], PlayerInfo[playerid][cColor][1], 90000);
	}
	PlayerInfo[playerid][cLock] = 1;
	CarDoors(carid, PlayerInfo[playerid][cLock]);
	Fuel[carid] = PlayerInfo[playerid][cFuel];
	SetVehicleHealth(carid, 1000);
	Engine[carid] = false;
	Lights[carid] = false;
	SetVehicleNumberPlate(carid, "TEST SERVER");
	switch(PlayerInfo[playerid][cLock])
	{
		case 0: IsLocked[carid] = false;
		case 1: IsLocked[carid] = true;
	}
	new labeltext[40];
   	format(labeltext, sizeof(labeltext), "%s", PlayerInfo[playerid][cNumber]);
	VehicleLabel[carid] = Create3DTextLabel(labeltext, 0xFFFFFFFF, 0, 0, 0, 10.0, 0);
	Attach3DTextLabelToVehicle(VehicleLabel[carid], carid, 0, 0, 1.2);
	return true;
} 

В OnPlayerDisconnect

	if(GetPlayerCar(playerid))
	{
		Delete3DTextLabel(VehicleLabel[GetPVarInt(playerid,"PlayerCar")]);
		DestroyVehicle(GetPVarInt(playerid,"PlayerCar"));
		DeletePVar(playerid,"PlayerCar");
	}

Если что-то еще потребуется, скину.

Большое спасибо за помощь. :D83DDE0A:

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
16Shadows

Вообще, не лучшая идея - сохранят транспорт игроков оффлайн из-за лимита машин, но это Вам решать.

А вообще предлагаю Вам такое решение.

 

К переменным:

new owner[MAX_VEHICLES];

В OnGameModeInit()

for(new i; i < MAX_VEHICLES; i++) owner[i] = INVALID_PLAYER_ID;

В LoadMyCar вместо

[spoiler=Код]

new carid;
if(PlayerInfo[playerid][cX] == 0 && PlayerInfo[playerid][cY] == 0 && PlayerInfo[playerid][cZ] == 0)
	{
	    new r = random(11);
   		carid = CreateVehicle(PlayerInfo[playerid][cModel], SalonRandSpawn[r][0], SalonRandSpawn[r][1], SalonRandSpawn[r][2], SalonRandSpawn[r][3], PlayerInfo[playerid][cColor][0], PlayerInfo[playerid][cColor][1], 90000);
		ShowPlayerDialog(playerid, D_NULL, 0, "# Автосалон | {FFD700}FAQ", "{FFFFFF}Вы не припарковали ваш автомобиль перед выходом.\n\
		{FFFFFF}Забрать ващ автомобиль вы можете на парковке автосалона {FFD700}''Анашан''.\n\
		{CD5C5C}Постарайтесь не забыть припарковать ваш автомобиль в этот раз.", "Закрыть", "");
	}
	else
	{
    carid = CreateVehicle(PlayerInfo[playerid][cModel], PlayerInfo[playerid][cX], PlayerInfo[playerid][cY], PlayerInfo[playerid][cZ], PlayerInfo[playerid][cFa], PlayerInfo[playerid][cColor][0], PlayerInfo[playerid][cColor][1], 90000);
	}

 

 

Добавить

[spoiler=Код]

new carid = -1;
for(new i; i < MAX_VEHICLES; i++)
{
    if(owner[i] != playerid) continue;
    carid = i;
    break;
}
if(carid == -1)
{
if(PlayerInfo[playerid][cX] == 0 && PlayerInfo[playerid][cY] == 0 && PlayerInfo[playerid][cZ] == 0)
	{
	    new r = random(11);
   		carid = CreateVehicle(PlayerInfo[playerid][cModel], SalonRandSpawn[r][0], SalonRandSpawn[r][1], SalonRandSpawn[r][2], SalonRandSpawn[r][3], PlayerInfo[playerid][cColor][0], PlayerInfo[playerid][cColor][1], 90000);
		ShowPlayerDialog(playerid, D_NULL, 0, "# Автосалон | {FFD700}FAQ", "{FFFFFF}Вы не припарковали ваш автомобиль перед выходом.\n\
		{FFFFFF}Забрать ващ автомобиль вы можете на парковке автосалона {FFD700}''Анашан''.\n\
		{CD5C5C}Постарайтесь не забыть припарковать ваш автомобиль в этот раз.", "Закрыть", "");
	}
	else
	{
    carid = CreateVehicle(PlayerInfo[playerid][cModel], PlayerInfo[playerid][cX], PlayerInfo[playerid][cY], PlayerInfo[playerid][cZ], PlayerInfo[playerid][cFa], PlayerInfo[playerid][cColor][0], PlayerInfo[playerid][cColor][1], 90000);
	}
        owner[carid] = playerid;
}
SetPVarInt(playerid, "PlayerCar", carid);

 

 

 

В OnPlayerDisconnect убрать

if(GetPlayerCar(playerid))
	{
		Delete3DTextLabel(VehicleLabel[GetPVarInt(playerid,"PlayerCar")]);
		DestroyVehicle(GetPVarInt(playerid,"PlayerCar"));
		DeletePVar(playerid,"PlayerCar");
	}
Изменено пользователем 16Shadows
  • Like 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Flaymeek

Возвращает Т/С возле автосалона, то есть где припарковал - там ее нет 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
16Shadows

Если именно возвращает к автосалону, а не создаёт новую, можете попробовать заменить в LoadMyCar 90000 в CreateVehicle на -1 и поискать ещё код с использованием SalonRandSpawn.

Если машина остаётся на том месте, где Вы её бросили, и при этом спавнится у автосалона, то, вероятно, Вы что-то не так вставили (или я не вижу своей ошибки).

  • Like 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Flaymeek

Да, вы были правы. Надо было всего лишь изменить значение 9000 на -1
 

Изменено пользователем Flaymeek

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти
Авторизация  

  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

×

Важная информация

Мы разместили cookie-файлы на ваше устройство, чтобы помочь сделать этот сайт лучше. Вы можете изменить свои настройки cookie-файлов, или продолжить без изменения настроек.