Активный
- Тема Автор
- #1
Транспорт - важная часть любого сервера. Разберем работу с автомобилями.
Создание транспорта
Модели транспорта:
- 411 - Infernus
- 415 - Cheetah
- 429 - Banshee
- 451 - Turismo
- 506 - Super GT
- 560 - Sultan
Управление транспортом
Колбэки транспорта
Свойства транспорта
Система владения транспортом
Тюнинг транспорта
Важные моменты:
- Максимум 2000 транспортов на сервере
- Используйте SetVehicleToRespawn для респавна
- Сохраняйте данные транспорта при выходе
- Проверяйте владельца перед доступом
Транспорт делает сервер динамичным и интересным!
Создание транспорта
Код:
CreateVehicle(modelid, Float:x, Float:y, Float:z, Float:angle, color1, color2, respawn_delay);
// Пример:
new vehicleid = CreateVehicle(411, 1958.3783, 1343.1572, 15.3746, 90.0, 0, 1, -1);
Модели транспорта:
- 411 - Infernus
- 415 - Cheetah
- 429 - Banshee
- 451 - Turismo
- 506 - Super GT
- 560 - Sultan
Управление транспортом
Код:
// Поместить игрока в транспорт
PutPlayerInVehicle(playerid, vehicleid, seatid);
// Удалить игрока из транспорта
RemovePlayerFromVehicle(playerid);
// Получить ID транспорта игрока
GetPlayerVehicleID(playerid);
// Получить модель транспорта
GetVehicleModel(vehicleid);
Колбэки транспорта
Код:
public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)
{
new model = GetVehicleModel(vehicleid);
new string[128];
format(string, sizeof(string), "Вы сели в транспорт модели %d", model);
SendClientMessage(playerid, -1, string);
return 1;
}
public OnPlayerExitVehicle(playerid, vehicleid)
{
SendClientMessage(playerid, -1, "Вы вышли из транспорта");
return 1;
}
public OnVehicleSpawn(vehicleid)
{
// Транспорт заспавнился
return 1;
}
public OnVehicleDeath(vehicleid, killerid)
{
// Транспорт уничтожен
SetTimerEx("RespawnVehicle", 30000, false, "i", vehicleid);
return 1;
}
forward RespawnVehicle(vehicleid);
public RespawnVehicle(vehicleid)
{
SetVehicleToRespawn(vehicleid);
}
Свойства транспорта
Код:
// Установить здоровье транспорта
SetVehicleHealth(vehicleid, 1000.0);
// Получить здоровье транспорта
new Float:health;
GetVehicleHealth(vehicleid, health);
// Установить цвет
ChangeVehicleColor(vehicleid, color1, color2);
// Установить номер
SetVehicleNumberPlate(vehicleid, "ABC-123");
// Заблокировать транспорт
SetVehicleParamsEx(vehicleid, engine, lights, alarm, doors, bonnet, boot, objective);
Система владения транспортом
Код:
enum VehicleInfo
{
vOwner[MAX_PLAYER_NAME],
vModel,
Float:vX,
Float:vY,
Float:vZ,
Float:vAngle,
vLocked
}
new VehicleData[MAX_VEHICLES][VehicleInfo];
CreatePlayerVehicle(playerid, modelid)
{
new Float:x, Float:y, Float:z, Float:angle;
GetPlayerPos(playerid, x, y, z);
GetPlayerFacingAngle(playerid, angle);
new vehicleid = CreateVehicle(modelid, x+3, y, z, angle, 0, 1, -1);
GetPlayerName(playerid, VehicleData[vehicleid][vOwner], MAX_PLAYER_NAME);
VehicleData[vehicleid][vModel] = modelid;
VehicleData[vehicleid][vX] = x+3;
VehicleData[vehicleid][vY] = y;
VehicleData[vehicleid][vZ] = z;
VehicleData[vehicleid][vAngle] = angle;
VehicleData[vehicleid][vLocked] = 0;
return vehicleid;
}
public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)
{
if(VehicleData[vehicleid][vLocked] == 1)
{
new owner[MAX_PLAYER_NAME];
strcpy(owner, VehicleData[vehicleid][vOwner], MAX_PLAYER_NAME);
if(strcmp(GetPlayerName(playerid), owner, true))
{
SendClientMessage(playerid, -1, "Транспорт заблокирован!");
RemovePlayerFromVehicle(playerid);
return 0;
}
}
return 1;
}
Тюнинг транспорта
Код:
// Добавить компонент
AddVehicleComponent(vehicleid, componentid);
// Удалить компонент
RemoveVehicleComponent(vehicleid, componentid);
// Примеры компонентов:
// 1000 - Spoiler
// 1001 - Hood
// 1002 - Roof
// 1003 - Side Skirt
// 1004 - Lamps
// 1005 - Nitro
// 1006 - Exhaust
// 1007 - Wheels
// 1008 - Stereo
// 1009 - Hydraulics
// 1010 - Front Bumper
// 1011 - Rear Bumper
// 1012 - Right Vent
// 1013 - Left Vent
Важные моменты:
- Максимум 2000 транспортов на сервере
- Используйте SetVehicleToRespawn для респавна
- Сохраняйте данные транспорта при выходе
- Проверяйте владельца перед доступом
Транспорт делает сервер динамичным и интересным!