> ## Documentation Index
> Fetch the complete documentation index at: https://cs-lua.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# players — Состояние

> Пишется в `entvars_t` напрямую, ReGameDLL не нужен

# Состояние

Пишется в `entvars_t` напрямую, ReGameDLL не нужен.

<h2 id="model">
  p:model
</h2>

Моделька игрока.

```lua theme={null}
p:model([path])
```

### Аргументы

| # | имя    | тип           |                                              |
| - | ------ | ------------- | -------------------------------------------- |
| 1 | `path` | string \| nil | путь к новой модельке; без него метод читает |

### Возвращает

| тип      |                                                |
| -------- | ---------------------------------------------- |
| `number` | текущую модельку при чтении; при записи ничего |

### Пример

```lua theme={null}
p:model("models/player/urban/urban.mdl")
```

<Warning>
  Попытка выдать модельку, которая не была запрекешена, бросает ошибку.
</Warning>

<h2 id="health">
  p:health
</h2>

Здоровье игрока.

```lua theme={null}
p:health([value])
```

### Аргументы

| # | имя     | тип           |                                       |
| - | ------- | ------------- | ------------------------------------- |
| 1 | `value` | number \| nil | новое значение; без него метод читает |

### Возвращает

| тип      |                                                |
| -------- | ---------------------------------------------- |
| `number` | текущее значение при чтении; при записи ничего |

### Пример

```lua theme={null}
p:health(p:health() + 25)
```

<Warning>
  Обращение к состоянию отключённого игрока бросает ошибку.
  В таймерах и отложенных коллбэках проверяй `p:connected()`.
</Warning>

<h2 id="armor">
  p:armor
</h2>

Броня игрока.

```lua theme={null}
p:armor([value])
```

### Аргументы

| # | имя     | тип           |                                       |
| - | ------- | ------------- | ------------------------------------- |
| 1 | `value` | number \| nil | новое значение; без него метод читает |

### Возвращает

| тип      |                                                |
| -------- | ---------------------------------------------- |
| `number` | текущее значение при чтении; при записи ничего |

<h2 id="frags">
  p:frags
</h2>

Счётчик фрагов.

```lua theme={null}
p:frags([value])
```

### Аргументы

| # | имя     | тип           |                                       |
| - | ------- | ------------- | ------------------------------------- |
| 1 | `value` | number \| nil | новое значение; без него метод читает |

### Возвращает

| тип      |                                                |
| -------- | ---------------------------------------------- |
| `number` | текущее значение при чтении; при записи ничего |

<h2 id="gravity">
  p:gravity
</h2>

Множитель гравитации.

```lua theme={null}
p:gravity([value])
```

### Аргументы

| # | имя     | тип           |                                       |
| - | ------- | ------------- | ------------------------------------- |
| 1 | `value` | number \| nil | новое значение; без него метод читает |

### Возвращает

| тип      |                                                |
| -------- | ---------------------------------------------- |
| `number` | текущее значение при чтении; при записи ничего |

`1.0` — обычная, `0.5` — вдвое слабее.

<Note>
  Спавн сбрасывает значение. Ставь его в
  [`player_spawn`](../hook/gameplay.md#player_spawn), снимай в
  [`plugin.on_unload`](../plugin/index.md#on_unload).
</Note>

<h2 id="maxspeed">
  p:maxspeed
</h2>

Максимальная скорость движения.

```lua theme={null}
p:maxspeed([value])
```

### Аргументы

| # | имя     | тип           |                                       |
| - | ------- | ------------- | ------------------------------------- |
| 1 | `value` | number \| nil | новое значение; без него метод читает |

### Возвращает

| тип      |                                                |
| -------- | ---------------------------------------------- |
| `number` | текущее значение при чтении; при записи ничего |

<h2 id="origin">
  p:origin
</h2>

Позиция игрока в мире.

```lua theme={null}
p:origin([x, y, z])
```

### Аргументы

| # | имя       | тип    |                                        |
| - | --------- | ------ | -------------------------------------- |
| 1 | `x, y, z` | number | новые координаты; без них метод читает |

### Возвращает

| тип                      |                        |
| ------------------------ | ---------------------- |
| `number, number, number` | три компоненты вектора |

<Note>
  Запись телепортирует: проверки столкновений нет, игрока можно
  засунуть в стену.
</Note>

<h2 id="angles">
  p:angles
</h2>

Поворот модели игрока.

```lua theme={null}
p:angles([x, y, z])
```

### Аргументы

| # | имя       | тип    |                                        |
| - | --------- | ------ | -------------------------------------- |
| 1 | `x, y, z` | number | новые координаты; без них метод читает |

### Возвращает

| тип                      |                        |
| ------------------------ | ---------------------- |
| `number, number, number` | три компоненты вектора |

<h2 id="velocity">
  p:velocity
</h2>

Скорость игрока.

```lua theme={null}
p:velocity([x, y, z])
```

### Аргументы

| # | имя       | тип    |                                        |
| - | --------- | ------ | -------------------------------------- |
| 1 | `x, y, z` | number | новые координаты; без них метод читает |

### Возвращает

| тип                      |                        |
| ------------------------ | ---------------------- |
| `number, number, number` | три компоненты вектора |

<h2 id="aim">
  p:aim
</h2>

Направление взгляда, только чтение.

```lua theme={null}
p:aim()
```

### Возвращает

| тип                      |                        |
| ------------------------ | ---------------------- |
| `number, number, number` | три компоненты вектора |

<h2 id="alive">
  p:alive
</h2>

Жив ли игрок.

```lua theme={null}
p:alive()
```

### Возвращает

| тип       |              |
| --------- | ------------ |
| `boolean` | жив ли игрок |

<h2 id="on_ground">
  p:on\_ground
</h2>

Стоит ли игрок на земле.

```lua theme={null}
p:on_ground()
```

### Возвращает

| тип       |                         |
| --------- | ----------------------- |
| `boolean` | стоит ли игрок на земле |

<h2 id="ducking">
  p:ducking
</h2>

Сидит ли игрок.

```lua theme={null}
p:ducking()
```

### Возвращает

| тип       |                |
| --------- | -------------- |
| `boolean` | сидит ли игрок |

<h2 id="freeze">
  p:freeze
</h2>

Заморозка движения (`FL_FROZEN`).

```lua theme={null}
p:freeze([value])
```

### Аргументы

| # | имя     | тип            |                                       |
| - | ------- | -------------- | ------------------------------------- |
| 1 | `value` | boolean \| nil | новое значение; без него метод читает |

### Возвращает

| тип       |                                                |
| --------- | ---------------------------------------------- |
| `boolean` | текущее значение при чтении; при записи ничего |

Движковая заморозка. Обычный обходной путь `p:maxspeed(1)` оставляет клиент предсказывать движение, которого сервер не даёт — отсюда рывки.

<h2 id="godmode">
  p:godmode
</h2>

Неуязвимость.

```lua theme={null}
p:godmode([value])
```

### Аргументы

| # | имя     | тип            |                                       |
| - | ------- | -------------- | ------------------------------------- |
| 1 | `value` | boolean \| nil | новое значение; без него метод читает |

### Возвращает

| тип       |                                                |
| --------- | ---------------------------------------------- |
| `boolean` | текущее значение при чтении; при записи ничего |

<h2 id="noclip">
  p:noclip
</h2>

Полёт сквозь стены.

```lua theme={null}
p:noclip([value])
```

### Аргументы

| # | имя     | тип            |                                       |
| - | ------- | -------------- | ------------------------------------- |
| 1 | `value` | boolean \| nil | новое значение; без него метод читает |

### Возвращает

| тип       |                                                |
| --------- | ---------------------------------------------- |
| `boolean` | текущее значение при чтении; при записи ничего |

<h2 id="pev">
  p:pev
</h2>

Читает или задаёт произвольное поле `entvars_t` по имени — то же, что
`e:pev` у сущностей, только на игроке.

```lua theme={null}
p:pev(name[, v...])
```

### Аргументы

| # | имя    | тип                               |                                                               |
| - | ------ | --------------------------------- | ------------------------------------------------------------- |
| 1 | `name` | string                            | имя поля, как в `entvars_t`: `health`, `v_angle`, `iuser1`, … |
| 2 | `v...` | number \| string \| entity \| nil | новое значение; без него метод читает                         |

### Возвращает

| тип   |                                                           |
| ----- | --------------------------------------------------------- |
| `...` | зависит от типа поля — см. [e:pev](../ents/entity.md#pev) |

### Пример

```lua theme={null}
p:pev("iuser1", 1)                 -- своё поле под нужды плагина
local x, y, z = p:pev("v_angle")   -- то же, что p:aim()
```

Тот же список полей и та же диспетчеризация по типу, что у `e:pev` — оба метода читают ровно один и тот же `entvars_t`.

<Warning>
  Обращение к состоянию отключённого игрока бросает ошибку.
  В таймерах и отложенных коллбэках проверяй `p:connected()`.
</Warning>

### Смотри также

* [e:pev](../ents/entity.md#pev)

<h2 id="trace">
  p:trace
</h2>

Пускает луч из глаз игрока туда, куда он смотрит.

```lua theme={null}
p:trace([distance])
```

### Аргументы

| # | имя        | тип           |                                          |
| - | ---------- | ------------- | ---------------------------------------- |
| 1 | `distance` | number \| nil | длина луча в юнитах, по умолчанию `8192` |

### Возвращает

| тип     |                                                 |
| ------- | ----------------------------------------------- |
| `table` | что попалось, см. [Результат](#trace-результат) |

<h3 id="trace-результат">
  Результат
</h3>

| поле        | тип    |                                          |
| ----------- | ------ | ---------------------------------------- |
| `kind`      | string | `player`, `entity`, `world`, `none`      |
| `player`    | player | только при `kind == "player"`            |
| `classname` | string | classname цели; нет при `none`           |
| `x, y, z`   | number | точка попадания; при `none` — конец луча |
| `distance`  | number | юнитов от глаз до точки                  |
| `hitgroup`  | number | `1` — голова, `0` — тело                 |

### Пример

```lua theme={null}
local t = p:trace()
if t.kind == "player" then
	p:chat(("%s, %d hp, %d юнитов"):format(t.player:name(), t.player:health(), t.distance))
end
```

<h2 id="trace_to">
  p:trace\_to
</h2>

Пускает луч из глаз игрока прямо к другому игроку.

```lua theme={null}
p:trace_to(other)
```

### Аргументы

| # | имя     | тип    |                      |
| - | ------- | ------ | -------------------- |
| 1 | `other` | player | до кого трассировать |

### Возвращает

| тип     |                                                                                          |
| ------- | ---------------------------------------------------------------------------------------- |
| `table` | что попалось, см. [Результат](state.md#trace-результат) — тот же формат, что у `p:trace` |

### Пример

```lua theme={null}
local t = p:trace_to(victim)
if t.kind == "player" and t.player.id == victim.id then
	-- прямая видимость есть, между ними ничего твёрдого
end
```

`p:trace()` отвечает «куда сейчас смотрит `p`»; этот — «есть ли что-то твёрдое между `p` и `other`». Разница важна там, где важна не текущая наводка, а сам факт видимости: разброс дроби или отдача уводят прицел в сторону от точки, куда реально попала пуля, так что трассировка по прицелу в момент попадания может соврать — трассировка прямо на цель нет.

### Смотри также

* [p:trace](state.md#trace)
