Помогите BaseEntity

Решение
можно ли вообще получить энтити с игрока
Выбирай как больше тебе нравится:

1)

C#:
var player = BasePlayer.Find("userid or another") // BasePlayer.Find - для примера получения игрока
var entity = (BaseEntity)player;

2)
C#:
var player = BasePlayer.Find("userid or another");
var entity = player.GetComponent<BaseEntity>();
Для того, чтобы получить BaseEntity из BasePlayer в игре Rust, вы можете использовать метод GetMounted() для проверки, находится ли игрок на взводимом объекте. Если игрок находится на взводимом объекте, то вы можете получить BaseEntity, к которому он привязан, с помощью метода GetMountedEntity(). Вот пример кода:

C#:
BaseEntity GetMountedEntity(BasePlayer player)
{
    if(player.GetMounted())
    {
        return player.GetMountedEntity();
    }
    
    return null;
}

Вы можете вызвать этот метод, передав в качестве аргумента вашего BasePlayer, и он вернет BaseEntity, если игрок находится на взводимом объекте, или null, если игрок не находится на взводимом объекте.
 
нет такого
Для того, чтобы получить BaseEntity из BasePlayer в игре Rust, вы можете использовать метод GetMounted() для проверки, находится ли игрок на взводимом объекте. Если игрок находится на взводимом объекте, то вы можете получить BaseEntity, к которому он привязан, с помощью метода GetMountedEntity(). Вот пример кода:

C#:
BaseEntity GetMountedEntity(BasePlayer player)
{
    if(player.GetMounted())
    {
        return player.GetMountedEntity();
    }
   
    return null;
}

Вы можете вызвать этот метод, передав в качестве аргумента вашего BasePlayer, и он вернет BaseEntity, если игрок находится на взводимом объекте, или null, если игрок не находится на взводимом объекте.
нет такого метода для baseplayer
 
нет такого метода для baseplayer
Извините за путаницу. В Rust нет прямого метода GetMountedEntity() для BasePlayer.

Однако, для получения BaseEntity, к которому привязан BasePlayer, вы можете использовать следующий код:

C#:
BaseEntity GetMountedEntity(BasePlayer player)
{
    if (player.isMounted)
    {
        return player.GetMounted().gameObject.GetComponent<BaseEntity>();
    }
    
    return null;
}

Этот код проверяет, привязан ли игрок к какому-либо объекту с помощью свойства isMounted. Если игрок привязан, то мы получаем BaseEntity с помощью GetComponent<BaseEntity>() у gameObject, к которому привязан BasePlayer. В противном случае метод возвращает null.
 
можно ли вообще получить энтити с игрока
Выбирай как больше тебе нравится:

1)

C#:
var player = BasePlayer.Find("userid or another") // BasePlayer.Find - для примера получения игрока
var entity = (BaseEntity)player;

2)
C#:
var player = BasePlayer.Find("userid or another");
var entity = player.GetComponent<BaseEntity>();
 
  • Мне нравится
Реакции: london12312121
Выбирай как больше тебе нравится:

1)

C#:
var player = BasePlayer.Find("userid or another") // BasePlayer.Find - для примера получения игрока
var entity = (BaseEntity)player;

2)
C#:
var player = BasePlayer.Find("userid or another");
var entity = player.GetComponent<BaseEntity>();
C#:
BasePlayer basePlayer = BasePlayer.FindByID(тут стим айди чела);

C#:
и вроде как можем так:
BaseEntity be = basePlayer as BaseEntity;
 
C#:
BasePlayer basePlayer = BasePlayer.FindByID(тут стим айди чела);

C#:
и вроде как можем так:
BaseEntity be = basePlayer as BaseEntity;
Это одно и то же с
C#:
(BaseEntity)player
А я предоставил два метода различных, которые выполняются по разному
 
  • Мне нравится
Реакции: london12312121
Если ты вызовешь так, где player это BasePlayer

Код:
Interface.Oxide.CallHook("OnTEST", player);

То хук такого вида

Код:
        private void OnTEST(BaseEntity entity)
        {
            Puts($"{entity}");
        }

Будет вызван.
Магия тут в том, что хук OnTEST, принимает все объекты BaseEntity и BaseEntity-based объекты. А BasePlayer собственно и основан на BaseEntity, как и почти все entity в игре.

---

Но вот если наоборот,
Код:
Interface.Oxide.CallHook("OnTEST", entity);

То хук такого вида

Код:
        private void OnTEST(BasePlayer player)
        {
            Puts($"{player}");
        }

Вызван не будет, т.е. он ожидает на входе у себя BasePlayer и все что на нем основано.
 
Если ты вызовешь так, где player это BasePlayer

Код:
Interface.Oxide.CallHook("OnTEST", player);

То хук такого вида

Код:
        private void OnTEST(BaseEntity entity)
        {
            Puts($"{entity}");
        }

Будет вызван.
Магия тут в том, что хук OnTEST, принимает все объекты BaseEntity и BaseEntity-based объекты. А BasePlayer собственно и основан на BaseEntity, как и почти все entity в игре.

---

Но вот если наоборот,
Код:
Interface.Oxide.CallHook("OnTEST", entity);

То хук такого вида

Код:
        private void OnTEST(BasePlayer player)
        {
            Puts($"{player}");
        }

Вызван не будет, т.е. он ожидает на входе у себя BasePlayer и все что на нем основано.
понял, спасибо
 
:anguished: Главный вопрос, а зачем?

BasePlayer основан на BaseEntity, т.е. он имеет все те же поля и методы что и BaseEntity.
Я вкурсе. Мало-ли, человеку в будущем понадобиться что то наподобии

p.s. я подумал ты мне ответил. А зачем человеку знать как получить baseentity из baseplayer - вопрос, покрытый мраком
 
  • Ха-ха-ха
Реакции: london12312121
А зачем человеку знать как получить baseentity из baseplayer - вопрос, покрытый мраком
Он же ответил. Да бы в хук передать. Просто человек не в курсе, что если хук принимает BaseEntity, то туда можно и BasePlayer скормить без преобразования.
 
Активность
Пока никто не печатает сообщение

Похожие темы