00057. Работа с INI-файлами ( запись и считывание )
Last updated
Last updated
Работа с INI-файлами ( запись и считывание )|В этом укроке мы напишем два скрипта, которые будут использовать ini-файл. Первый будет записывать данные в файл, другой - считывать.|wmysterio|wmysterio||||Очень часто скриптеры хранят какие-то данные в файле. Например: я в моде NFS GTA RACE хранил стартера для миссий, а также текущую модель, уважение в ini-файле.
Рассмотрим основные опкоды. Сначала, обычно, проверяют на существование файла опкодом:
Здесь: "CLEO\temp.ini" - путь к нужному файлу
Дальше, обычно, если файла не найден, то скриптеры завершают поток, чтобы скрипт без файла не работал. Если файл найден - то можно.
Первый наш скрипт будет записывать данные. Давайте в файле будет хранится состояние жизни и брони CЖ. Другой скрипт будет считывать с того же самого файла данные и выводить их на экран.
Но сначала рассмотрим структуру ini-файла. Обычно он делится на секции - текст, написанный в квадратных скобках:
Количество секций неограниченно; а могут и вовсе отсутствовать.
В каждой секции имеются ключевые слова, которым заданы значения типа "int", "float", "string" ( целое, дробное, строка ). Сначала пишем ключевое слово, затем символ =, а потом само значение. Каждое ключевое слово пишется с новой строки.
Сложив всё вместе, мы получим полную структуру ini-файла:
Примеры INI-файлов: | |
---|---|
Пример 1
Пример 2
```
ini [SECTION] key_int = 25 key_float = 1.83 key_string = WMYSTERIO
ini ; Основные данные об актёре [Coord_Actor] position_x = -190.35 position_y = 2004.2345 position_z = 39.0 actor_angle = 180.0
[Data_Actor] Health = 50 Armor = 100 Name = Smoke
0AF1: write_int 25 to_ini_file "CLEO\temp.ini" section "SECTION" key "key_int" 0AF3: write_float 1.85 to_ini_file "CLEO\temp.ini" section "SECTION" key "key_float" 0AF5: write_string "MY NAME - WMYSTERIO" to_ini_file "CLEO\temp.ini" section "SECTION" key "key_string"
0AF0: 0@ = get_int_from_ini_file "CLEO\temp.ini" section "SECTION" key "key_int" 0AF2: 1@ = get_float_from_ini_file "CLEO\temp.ini" section "SECTION" key "key_float" 0AF4: 2@v = read_string_from_ini_file "CLEO\temp.ini" section "SECTION" key "key_string"
{$CLEO} 0000:
:WRITE thread 'WRITE' wait 0 if 0AAB: file_exists "CLEO\TEMP.ini" // если файл не найден, то завершаем скрипт jf @WRITE_END
:WRITE_1 wait 0 0@ = actor.Health($PLAYER_ACTOR) 04DD: 1@ = actor $PLAYER_ACTOR armour 0AF1: write_int 0@ to_ini_file "CLEO\TEMP.ini" section "CJ" key "Health" // запишем данные в файл 0AF1: write_int 1@ to_ini_file "CLEO\TEMP.ini" section "CJ" key "Armour" jump @WRITE_1
:WRITE_END wait 0 0A93: end_custom_thread
{$CLEO} 0000:
:READ thread 'READ' wait 0 if 0AAB: file_exists "CLEO\TEMP.ini" // Если файл не найден - завершаем скрипт jf @READ_END
:READ_1 wait 0 03F0: enable_text_draw 1 // Включаем возможность рисования на экране 0AF0: 0@ = get_int_from_ini_file "CLEO\TEMP.ini" section "CJ" key "Health" // Считываем данные из файла 0AF0: 1@ = get_int_from_ini_file "CLEO\TEMP.ini" section "CJ" key "Armour" {-- Выводим данные на экран --} 045A: draw_text_1number 20.0 20.0 GXT 'HEA_1' number 0@ // text: health 1 045A: draw_text_1number 20.0 30.0 GXT 'BRO_1' number 1@ // text: armour 1 jump @READ_1
:READ_END wait 0 0A93: end_custom_thread
`||rabota_s_ini_fajlami_zapis_i_schityvanie|1499595834