---
title: "Система переменных для каждого игрока | open.mp"
description: "Система переменных для каждого игрока (в сокращении PVar) - это новый способ создания переменных для каждого игрока индивидуально в глобальном пространстве."
canonical: https://omp.itsneufox.com/ru/docs/tutorials/perplayervariablesystem
language: ru
---

# Система переменных для каждого игрока

Система **переменных для каждого игрока** (в сокращении **PVar**) - это новый способ создания переменных для каждого игрока индивидуально в глобальном пространстве, т.е. к одной переменной можно получить доступ и из игрового мода (gamemode), и из подключаемого сценария (filterscript).

Они работают точно так же, как [SVar](https://omp.itsneufox.com/ru/docs/tutorials/servervariablesystem), но привязаны к конкретному ID игрока.

## Преимущества

Система была представлена в серверном обновлении SA-MP 0.3a R5 а предоставляет некоторые преимущества перед массивами размера MAX\_PLAYERS для работы с игроками.

-   PVar'ы могут быть созданы и считаны во всех запущенных сценариях сервера (игровые режимы, скрипты, инклуды и т.д.), что позволяет легче организовать модульную архитектуру в вашем коде.
    
-   PVar'ы автоматически удаляются, когда игрок покидает сервер (после OnPlayerDisconenct), что значит, что вам не требуется вручную сбрасывать данные для игрока.
    
-   Нет нужды использовать enum и другие структуры для хранения данных.
    
-   Сохраняет память, не выделяя память под ненужные элементы массива игроков, которые, вероятно, даже не будут использованы.
    
-   PVar легко вывести или записать куда-то с помощью перебора. Это делает отладку и хранение данных намного проще.
    
-   Если попытаться получить доступ к ещё не созданной переменной игрока, но всё ещё вернёт значение по умолчанию - 0.
    
-   В PVar можно хранить очень большие строки при помощи динамически выделяемой памяти.
    
-   Можно устанавливать, получать и создавать PVar прямо во время игры.
    

## Недостатки

-   PVar в несколько раз медленнее, чем обычные переменные. Как правило, предпочтительнее пожертвовать памятью, нежели скоростью, но не наоборот.

## Функции

-   [SetPVarInt](https://omp.itsneufox.com/ru/docs/scripting/functions/SetPVarInt): установить целочисленное значение переменной игрока.
-   [GetPVarInt](https://omp.itsneufox.com/ru/docs/scripting/functions/GetPVarInt): получить значение переменной игрока, как целое число.
-   [SetPVarString](https://omp.itsneufox.com/ru/docs/scripting/functions/SetPVarString): установить строчное значение переменной игрока.
-   [GetPVarString](https://omp.itsneufox.com/ru/docs/scripting/functions/GetPVarString): получить значение переменной игрока, как строку.
-   [SetPVarFloat](https://omp.itsneufox.com/ru/docs/scripting/functions/SetPVarFloat): установить переменной игрока значение с плавающей точкой.
-   [GetPVarFloat](https://omp.itsneufox.com/ru/docs/scripting/functions/GetPVarFloat): получить значение переменной игрока, как число с плавающей точкой.
-   [DeletePVar](https://omp.itsneufox.com/ru/docs/scripting/functions/DeletePVar): удалить переменную игрока.

```c
#define PLAYER_VARTYPE_NONE   (0)
#define PLAYER_VARTYPE_INT    (1)
#define PLAYER_VARTYPE_STRING (2)
#define PLAYER_VARTYPE_FLOAT  (3)
```
