> For the complete documentation index, see [llms.txt](https://lessons.sannybuilder.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://lessons.sannybuilder.com/00100/00200/00076.-statistika-igroka.md).

# 00076. Статистика игрока

Статистика игрока|Сегодня мы рассмотрим опкоды для изменения статистики игрока.|wmysterio|wmysterio||||Всем привет! Статистика - это то, чего достиг игрок за игровое время. Например: уровень стрельбы с АК-47, насколько от сыт и т.п. Для изменения какой то статистики, обычно используют 2 опкода:

```
0629: change_integer_stat 181 to 0
062A: change_float_stat 21 to 800.0
```

Опкоды устанавливают значения для ID статистики игрока.

Здесь:\
21 и 181 - ID статистики ( см. [Статистика игрока](https://github.com/wmysterio/scm-scripting-lessons/blob/main/dir/gta_sa/statistika_igroka_staty/1-1-0-32/README.md) )\
0 и 800.0 - соответственно значения, которые принимает статистика

Давайте напишем скрипт, который стразу даёт максимальные навыки оружия, максимальная жизнь - 1450.0 ( в такой настройке полоска выход даже за пределы обычного ):

```
{$CLEO}
0000:

:STAT_PL
thread 'STAT_PL'
wait 0
062A: change_float_stat 165 to 2000.0
062A: change_float_stat 23 to 1000.0
062A: change_float_stat 21 to 0.0
0629: change_float_stat 22 to 1000
062A: change_float_stat 80 to 2000.0
062A: change_float_stat 225 to 2000.0
062A: change_float_stat 223 to 1000.0
062A: change_float_stat 229 to 1000.0
062A: change_float_stat 230 to 2000.0
062A: change_float_stat 24 to 1450.0
062A: change_float_stat 69 to 1000.0
062A: change_float_stat 70 to 1000.0
062A: change_float_stat 71 to 1000.0
062A: change_float_stat 72 to 1000.0
062A: change_float_stat 73 to 1000.0
062A: change_float_stat 74 to 1000.0
062A: change_float_stat 75 to 1000.0
062A: change_float_stat 76 to 1000.0
062A: change_float_stat 77 to 1000.0
062A: change_float_stat 78 to 1000.0
062A: change_float_stat 160 to 1000.0
0A93: end_custom_thread
```

В результате игрок станет "прокачанным" в любой момент. Обратите внимание на полоску жизни:

![](https://github.com/wmysterio/scm-scripting-lessons/raw/resources/_pu/1/63682838.png)

Так же мы можем узнать текущее значение статистики, используя опкоды:

```
0653: 0@ = float_stat 21
0652: 0@ = integer_stat 181
```

Здесь:\
0@ - переменная, в которую будет записано значение\
21 - ID статистики ( дробное )\
181 - ID статистики ( целое )

Полученный результат можно использовать в проверках:

```
0653: 0@ = float_stat 21
if
0@ > 300.0
then
 // выполнять какие то действие, например написать "Нужно есть больше или меньше"
end
```

Статистика 181: при установке следующих значений будут "открыты" такие территории ( города ):

| ID | Местность                                                     |
| -- | ------------------------------------------------------------- |
| 0  | Лос Сантос                                                    |
| 1  | Сельская местность возле Лос Сантос                           |
| 2  | Сан Фиеро и всё вышеперечисленное                             |
| 3  | Сельская местность возле Лас Вентурас и всё вышеперечисленное |
| 4  | Лас Вентурас и всё вышеперечисленное                          |

Если установить значение 0, то при попадании за территории Лос Сантоса Вы получите 5 звёзд.

Можно так же выполнять прямые записи к существующему значению статистики:

```
0623: add 1 to_integer_stat 214
0624: add 1.0 to_float_stat 160
0628: add 1@ to_float_stat 2
0625: decrease_integer_stat 184 by 1
0626: decrease_float_stat 21 by 1.0
0627: update_integer_stat 215 to $1922
0A10: increase_integer_stat 161 by 1
0A1F: increase_float_stat 24 by 196@
042E: downdate_integer_stat 212 to 448@
0582: downdate_integer_stat 175@($RACE_INDEX,30i) to 450@
```

Тоесть, чтобы не писать такой код:

```
0653: 0@ = float_stat 21
0@ += 100.0
062A: change_float_stat 21 to 0@
```

можно сразу прибавить к значению статистики своё число: "0624: add 100.0 to\_float\_stat 21". С остальными уже поэкспериментируйте, там можно сложить, вычитать делить и умножать значения статов.

Мимо этого существуют опкоды для узнавания значений некоторых ID статистики:

```
08E1: 0@ = total_tags_sprayed // Целое число
```

В переменную "0@" будет записано к-во закрашенных граффити.

```
08E2: 0@ = territories_controlled_percentage // Целое число
```

В переменную"0@" будет записано процент владения территориями. Если все территории принадлежат вам, то в переменную будет занесено 100.

Так же есть возможность отключить функцию показа статистики. Когда нажимаем "Действие" ( по-умолчанию кнопка TAB\` ) статистика не будет показана:

```
0960: enable_player $PLAYER_CHAR stats_box 0 // если поставить 1 - то будет
```

Этот опкод рекомендовано использовать в цикле.

× \*\*Примечание:\*\* Если изменить мышцы игрока или полноту, то визуально результат ничего не покажет. Что бы изменения были видны нужно зайти в какой то интерьер.|2653|1|0|63682838\`png\`500\`300\`400\`240\`\`\\||statistika\_igroka|1499752446
