This is a mobile optimized page that loads fast, if you want to load the real page, click this text.

Вопрос Как создать точку телепорта?

bantly56

Начинающий специалист
Автор темы
15 Сен 2020
31
8
52
Объясните , как создать телепорт с точки A в точку B (подобие входа в здание с закрытым интерьером). Заранее благодарен за вашу помощь!
 

UberDron

Участник портала
15 Сен 2020
13
10
22
Заходишь в Fabrication.cs там прописан код перехода в интерьер клубов, тебе нужен будет найти координаты EnterAlcoShop and ExitAlcoShop, то есть координаты входа и выхода, прописываешь туда свои координаты, которые есть на вход и выход и значение которое там есть перед координатами, айди фракции ставишь 0, если нужна будет помощь пиши мне в дискорд AnDrey#8756
 
Последнее редактирование:
Реакции: Baklan

VadimMan

Начинающий специалист
17 Дек 2020
48
11
65
Разве ты таком случае телепорт исходный не будет утерян? Как создать абсолютно новый телепорт из а точки в б ?
 

Evbej

Начинающий специалист
high coder
15 Сен 2020
103
43
60
Объясню на примере фракции Merryweather
1) Заходишь в main.cs и в public void ClientEvent_interactionPressed(Player player, params object[] arguments)
ищешь
C#:
                    case 82:
                    case 83:
                    case 84:
                    case 85:
                        Fractions.Merryweather.interactPressed(player, id);
Добавляешь свободные кейсы, к примеру 572 и 573
получается так:
C#:
                    case 82:
                    case 83:
                    case 84:
                    case 85:
                    case 572:
                    case 573:
                        Fractions.Merryweather.interactPressed(player, id);
2) Переходим к самой фракции, в Merryweather.cs
Ищешь public static List<Vector3> Coords = new List<Vector3>
и добавляешь свои координаты к ним, и они получат id считая от 0, к примеру 4 и 5
Получается так:

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
3) Создаём колшейн
в public void OnResourceStartHandler() ко всем колшейнам добавляешь

C#:
                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));
4) Добавляем действие после нажатия, в Merryweather.cs
в 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;

Аналогично с другими фракциями, работами или чем-нибудь ещё
 
Реакции: nettkom и Baklan

Deja-vu

Специалист
29 Сен 2020
403
51
95
можно на js?
 

X-Clusiv

Модератор
Команда форума
high coder
4 Окт 2020
582
274
161
29
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 - интерьера`)
    }
});
 
Последнее редактирование:

Deja-vu

Специалист
29 Сен 2020
403
51
95

Что делать?
 

djuvi

Активный участник
15 Фев 2022
3
0
38