Объясню на примере фракции MerryweatherОбъясните , как создать телепорт с точки A в точку B (подобие входа в здание с закрытым интерьером). Заранее благодарен за вашу помощь!
case 82:
case 83:
case 84:
case 85:
Fractions.Merryweather.interactPressed(player, id);
case 82:
case 83:
case 84:
case 85:
case 572:
case 573:
Fractions.Merryweather.interactPressed(player, id);
new Vector3(1571.831, 2240.648, 78.40011), // 0
new Vector3(2154.641, 2921.034, -62.82243), // 1
new Vector3(2033.842, 2942.104, -62.82434), // 2
new Vector3(2155.425, 2921.066, -81.99551), // 3
new Vector3(Твои координаты точки A), // 4
new Vector3(Твои координаты точки B), // 5
Cols.Add(4, NAPI.ColShape.CreateCylinderColShape(Coords[4], 1f, 2, 0)); //4 == порядку координат в public static List
Cols[4].OnEntityEnterColShape += mws_OnEntityEnterColShape;
Cols[4].OnEntityExitColShape += mws_OnEntityExitColShape;
Cols[4].SetData("INTERACT", 572); //572 кейс выполняемый при нажатии
NAPI.Marker.CreateMarker(1, Coords[4] - new Vector3(0, 0, 0.7), new Vector3(), new Vector3(), 1, new Color(0, 116, 194, 220)); //создание маркера
Cols.Add(5, NAPI.ColShape.CreateCylinderColShape(Coords[5], 1f, 2, 0));
Cols[5].OnEntityEnterColShape += mws_OnEntityEnterColShape;
Cols[5].OnEntityExitColShape += mws_OnEntityExitColShape;
Cols[5].SetData("INTERACT", 573);
NAPI.Marker.CreateMarker(1, Coords[5] - new Vector3(0, 0, 0.7), new Vector3(), new Vector3(), 1, new Color(0, 116, 194, 220));
case 572:
case 573:
if (player.IsInVehicle) return; //проверка, в машине ли игрок
if (player.HasData("FOLLOWING")) // проверка, тащит ли игрока мент
{
Notify.Send(player, NotifyType.Error, NotifyPosition.BottomCenter, $"Вас кто-то тащит за собой", 3000);
return;
}
if(Main.Players[player].FractionID != 17) //прооверка на фракцию
{
Notify.Send(player, NotifyType.Error, NotifyPosition.BottomCenter, "Вы не состоите в Merryweather", 3000);
return;
}
if (interact == 572) NAPI.Entity.SetEntityPosition(player, Coords[5] + new Vector3(0, 0, 1.12)); //тп из координаты 4 в координату 5
else if (interact == 573) NAPI.Entity.SetEntityPosition(player, Coords[4] + new Vector3(0, 0, 1.12)); // и наоборот
return;
Объясните , как создать телепорт с точки A в точку B (подобие входа в здание с закрытым интерьером). Заранее благодарен за вашу помощь!
/*Создадим колшейп по координатам, допустим это вход в дом.*/
let colshape = mp.colshapes.newCuboid(`Ваши координаты входа - x`, `Ваши координаты входа - y`, `Ваши координаты входа - z`, 2/*ширина*/, 2/*глубина*/, 2/*высота*/);
/*Зададим ему имя чтобы была возможность определить именно этот колшейп*/
colshape.name = 'enter';
/*Зарегистрируем событие входа в колшейп*/
mp.events.add("playerEnterColshape", (player, shape) => {
/*Проверим, в тот ли мы колшейп попали*/
if(shape.name === 'enter'){
/*Есл попали в нужный колшейп, устанавливаем необходимые координаты игроку(телепортируем в интерьер)*/
player.position = new mp.Vector3(`координата x - интерьера`,`координата y - интерьера`,`координата z - интерьера`)
}
});
JavaScript:/*Создадим колшейп по координатам, допустим это вход в дом.*/ let colshape = mp.colshapes.newCuboid(`Ваши координаты входа - x`, `Ваши координаты входа - y`, `Ваши координаты входа - z`, 2/*ширина*/, 2/*глубина*/, 2/*высота*/); /*Зададим ему имя чтобы была возможность определить именно этот колшейп*/ colshape.name = 'enter'; /*Зарегистрируем событие входа в колшейп*/ mp.events.add("playerEnterColshape", (player, shape) => { /*Проверим, в тот ли мы колшейп попали*/ if(shape.name === 'enter'){ /*Есл попали в нужный колшейп, устанавливаем необходимые координаты игроку(телепортируем в интерьер)*/ player.position = new mp.Vector3(`координата x - интерьера`,`координата y - интерьера`,`координата z - интерьера`) } }
Имя coords не существует в данном контексте..Объясню на примере фракции Merryweather
1) Заходишь в main.cs и в public void ClientEvent_interactionPressed(Player player, params object[] arguments)
ищешь
Добавляешь свободные кейсы, к примеру 572 и 573C#:case 82: case 83: case 84: case 85: Fractions.Merryweather.interactPressed(player, id);
получается так:
2) Переходим к самой фракции, в Merryweather.csC#:case 82: case 83: case 84: case 85: case 572: case 573: Fractions.Merryweather.interactPressed(player, id);
Ищешь public static List<Vector3> Coords = new List<Vector3>
и добавляешь свои координаты к ним, и они получат id считая от 0, к примеру 4 и 5
Получается так:
3) Создаём колшейнC#:new Vector3(1571.831, 2240.648, 78.40011), // 0 new Vector3(2154.641, 2921.034, -62.82243), // 1 new Vector3(2033.842, 2942.104, -62.82434), // 2 new Vector3(2155.425, 2921.066, -81.99551), // 3 new Vector3(Твои координаты точки A), // 4 new Vector3(Твои координаты точки B), // 5
в public void OnResourceStartHandler() ко всем колшейнам добавляешь
4) Добавляем действие после нажатия, в Merryweather.csC#:Cols.Add(4, NAPI.ColShape.CreateCylinderColShape(Coords[4], 1f, 2, 0)); //4 == порядку координат в public static List Cols[4].OnEntityEnterColShape += mws_OnEntityEnterColShape; Cols[4].OnEntityExitColShape += mws_OnEntityExitColShape; Cols[4].SetData("INTERACT", 572); //572 кейс выполняемый при нажатии NAPI.Marker.CreateMarker(1, Coords[4] - new Vector3(0, 0, 0.7), new Vector3(), new Vector3(), 1, new Color(0, 116, 194, 220)); //создание маркера Cols.Add(5, NAPI.ColShape.CreateCylinderColShape(Coords[5], 1f, 2, 0)); Cols[5].OnEntityEnterColShape += mws_OnEntityEnterColShape; Cols[5].OnEntityExitColShape += mws_OnEntityExitColShape; Cols[5].SetData("INTERACT", 573); NAPI.Marker.CreateMarker(1, Coords[5] - new Vector3(0, 0, 0.7), new Vector3(), new Vector3(), 1, new Color(0, 116, 194, 220));
в public static void interactPressed(Player player, int interact)
Добавляем это
C#:case 572: case 573: if (player.IsInVehicle) return; //проверка, в машине ли игрок if (player.HasData("FOLLOWING")) // проверка, тащит ли игрока мент { Notify.Send(player, NotifyType.Error, NotifyPosition.BottomCenter, $"Вас кто-то тащит за собой", 3000); return; } if(Main.Players[player].FractionID != 17) //прооверка на фракцию { Notify.Send(player, NotifyType.Error, NotifyPosition.BottomCenter, "Вы не состоите в Merryweather", 3000); return; } if (interact == 572) NAPI.Entity.SetEntityPosition(player, Coords[5] + new Vector3(0, 0, 1.12)); //тп из координаты 4 в координату 5 else if (interact == 573) NAPI.Entity.SetEntityPosition(player, Coords[4] + new Vector3(0, 0, 1.12)); // и наоборот return;
Аналогично с другими фракциями, работами или чем-нибудь ещё