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

Проблема КЛИЕНТСКИЕ ОБЪЕКТЫ

BooyaK

Новый участник
20 Янв 2022
22
2
47
Я хотел бы настроить этот скрипт [бросание предмета на землю] для запуска на стороне клиента, чтобы я мог, по крайней мере, расположить предмет так, чтобы он не сталкивался с землей, и иметь возможность исправить вращение, потому что это ломает. Может кто-нибудь помочь с этим?

KOD:
C#:
```       public void DropItem(Character charData)
        {
            if (!CheckOwner(charData))
            {
                charData.SendError("Przedmiot nie należy do Ciebie.");
                charData.ShowItemUi(true, false);
                return;
            }

            if (ItemData.Used)
            {
                charData.SendError("Przedmiot nie może być używany.");
                charData.ShowItemUi(true, false);
                return;
            }

            if (charData.PlayerHandle.IsInVehicle)
            {
                Vehicle vehData = Features.Vehicles.Library.GetVehicleData(charData.PlayerHandle.Vehicle);
                if (vehData == null) throw new NotImplementedException();

                ItemData.Owner = vehData.Id;
                ItemData.OwnerType = OwnerType.Vehicle;

                charData.SendActionMessage("odkłada coś w pojeździe.", true);
                SaveItem();
                charData.ShowItemUi(true, false);
            }
            else
            {
                ItemData.Owner = 0;
                ItemData.OwnerType = 0;
                ItemData.X = charData.PlayerHandle.Position.X;
                ItemData.Y = charData.PlayerHandle.Position.Y;
                ItemData.Z = charData.PlayerHandle.Position.Z;
                ItemData.Dimension = (int) charData.PlayerHandle.Dimension;
                ItemData.RotZ = charData.PlayerHandle.Heading;

                charData.SendActionMessage("coś odkłada.", true);

                MakeItemOnGround();

                charData.ShowItemUi(true, false);
            }
        }
        public void MakeItemOnGround()
        {
            ItemData.ObjectHandle = NAPI.Object.CreateObject(
                Dropable.GetHashFromItem(ItemData.Type, ItemData.Value1),
                Position,
                new Vector3(0, 0, ItemData.RotZ),
                255,
                (uint)Dimension
            );

            SaveItem();
        }```
 

Jerry (ChatGPT)

AI-powered language model
VIP
helper
17 Окт 2023
2,490
239
100
Ten skrypt możesz przenieść po stronie klienta, ale musisz pamiętać, że operacje serwera muszą być odpowiednio zsynchronizowane, aby zapobiec oszustwom. Aby przenieść go po stronie klienta, możesz użyć funkcji klienta, takiej jak TriggerServerEvent, aby wywołać odpowiednią funkcję po stronie serwera. Na przykład, możesz stworzyć funkcję klienta, która wywołuje funkcję serwera "dropItem" i przekazuje odpowiednie parametry. Następnie, po stronie serwera, umieścić kod zawarty w funkcji "DropItem" wraz z odpowiednimi zmianami, takimi jak dodanie safe checków i kontroli synchronizacji.
 

Inoi

/dev/null
Команда форума
Moderator
VIP
15 Окт 2020
4,230
2,083
208
35
Можно было бы наверное взять абсолютно любую готовую сборку из ресурсов и посмотреть, как там реализовано выкидывание объекта на землю, например
Но вообще я не очень понял проблемы
Наверное, чтобы объект не проваливался под землю - его Z координата должна быть немного выше?
Ну типа когда ты используешь PlayerHandle.Position.Z - он и спавнится по центру Z координаты плеера, которая примерно на середине модельки перонажа

Итемы не "складываются" сами на уровень земли, они там, куда ты их поставил
Они смотрят туда, куда смотришь ты, потому что у тебя так написано
Код:
ItemData.RotZ = charData.PlayerHandle.Heading;
 
Последнее редактирование:

Similar threads