Post by CrowScout on Apr 23, 2021 20:02:51 GMT
Название: read_CFG_File Script
Версия: 3.0
Описание: Скрипт для Записи-чтения значений переменных в файл - из файла
Надеюсь, кому-то пригодится, при написании собственных ботов.
От CrowScout - для всех желающих
Тема этого скрипта на 4pda.ru (там же более подробно и с обновлениями.)
Подробнее:
Распакуйте в отдельную папку и запустите файл - Demo_CFG_File_Reading.lua, что бы поcмотреть как это работает.
для использования в качестве библиотеки необходим только read_CFG_File.lua
Пример использования:
Скриншот:
Изменения: сделал так, что имя файла выбирать не нужно. Всегда будет использоваться 'ini.cfg'
Сделал более похоже на объекты, (как я их понимаю)
💾СКАЧАТЬ: MEGA
PS не стреляйте в пианиста, он играет как умеет.
Версия: 3.0
Описание: Скрипт для Записи-чтения значений переменных в файл - из файла
Надеюсь, кому-то пригодится, при написании собственных ботов.
От CrowScout - для всех желающих
Тема этого скрипта на 4pda.ru (там же более подробно и с обновлениями.)
Подробнее:
включите в начале вашего скрипта такую строку
dofile(scriptPath() .."read_CFG_File.lua") -- Запустить внешний скрипт
после этого вы сможете извлекать из файла значения прописанных в нём переменных
или записывать их в файл. (имя файла статично - 'ini.cfg')
вот так:
cfgFile:fRead() -- прочитаем данные из файла 'ini.cfg' в буфер
myVal = cfgFile:PropertyGet(varName, defValue) -- прочитали переменную из файла ini.cfg
-- читаем другие переменные ...
varName - имя_переменной, напр 'громкость_звука' (без_пробелов, соблюдая ЗаглавныЕ)
defValue - если значение переменной в файле равно пробелам или пусто, то оно будет заменено на значение по_умолчанию,
если название переменной не найдено в файле, вернёт nil
но, если при этом будет задано значение_по_умолчанию, то переменная будет создана с этим значением и добавлена в файл
--записываем переменные в буфер файла
cfgFile:PropertySet('груша', 'жёлтая') -- записали в буфер файла переменную
-- записываем другие переменные в буфер файла
cfgFile:fWrite() -- освежим данные в файле (сбросим из буфера в файл) - сохраним файл с новыми данными
-- если этого не сделать, данные в файле не обновятся!!!
-- =====================
файл ini.cfg должен иметь вид -
-- =====================
-- =====================
строки не содержащие знака равно "=" игнорируются
лишние пробелы уничтожаются
если значение переменной заключено в'{ }' кавычки, то в переменную заносится массив данных
в таблице t1 будут храниться имена переменных,
в таблице t2 - их значения
в таблице arrStrings - все считанные из файла строки
если требуется, то можно преобразовать полученные цифры из строкового формата в число, вот так -
a = tonumber(a) -- преобразовать переменную 'a' в число
Помните: Регистр букв в имени переменных - имеет значение ! )
Var, var, VAR - это три разные переменные !!!
dofile(scriptPath() .."read_CFG_File.lua") -- Запустить внешний скрипт
после этого вы сможете извлекать из файла значения прописанных в нём переменных
или записывать их в файл. (имя файла статично - 'ini.cfg')
вот так:
cfgFile:fRead() -- прочитаем данные из файла 'ini.cfg' в буфер
myVal = cfgFile:PropertyGet(varName, defValue) -- прочитали переменную из файла ini.cfg
-- читаем другие переменные ...
varName - имя_переменной, напр 'громкость_звука' (без_пробелов, соблюдая ЗаглавныЕ)
defValue - если значение переменной в файле равно пробелам или пусто, то оно будет заменено на значение по_умолчанию,
если название переменной не найдено в файле, вернёт nil
но, если при этом будет задано значение_по_умолчанию, то переменная будет создана с этим значением и добавлена в файл
--записываем переменные в буфер файла
cfgFile:PropertySet('груша', 'жёлтая') -- записали в буфер файла переменную
-- записываем другие переменные в буфер файла
cfgFile:fWrite() -- освежим данные в файле (сбросим из буфера в файл) - сохраним файл с новыми данными
-- если этого не сделать, данные в файле не обновятся!!!
-- =====================
файл ini.cfg должен иметь вид -
-- =====================
Количество = 555
Цвет = жёлтый
Язык = Русский
погода = ясная
пусто = полно
arr1 = {11,22,33,44,5.1,6.2, 'стр_без_пробелов', 'Была С Пробелами'}
boolen = true
BOOLEN = TRUE
boolen_2 = false
BOOLEN_2 = FALSE
-- =====================
строки не содержащие знака равно "=" игнорируются
лишние пробелы уничтожаются
если значение переменной заключено в'{ }' кавычки, то в переменную заносится массив данных
в таблице t1 будут храниться имена переменных,
в таблице t2 - их значения
в таблице arrStrings - все считанные из файла строки
если требуется, то можно преобразовать полученные цифры из строкового формата в число, вот так -
a = tonumber(a) -- преобразовать переменную 'a' в число
Помните: Регистр букв в имени переменных - имеет значение ! )
Var, var, VAR - это три разные переменные !!!
Распакуйте в отдельную папку и запустите файл - Demo_CFG_File_Reading.lua, что бы поcмотреть как это работает.
для использования в качестве библиотеки необходим только read_CFG_File.lua
Пример использования:
-- ========== Settings ================
--screen = getRealScreenSize()
--Settings:setScriptDimension(true, 1920) -- Разрешение по ширине Х устройства, на котором был НАПИСАН скрипт
--Settings:setCompareDimension(true, screen:getX()) -- Разрешение по ширине Х устройства, на котором будет ВЫПОЛНЯТЬСЯ скрипт
-- Минимальный уровень совпадения изображений
--Settings:set("MinSimilarity", 0.8)
-- ===================================
-- запустим этот самый файл который вы сейчас читаете
dofile(scriptPath() .."read_CFG_File.lua") -- Запустить внешний скрипт
--начинаем с чтения файла с переменными в буфер
cfgFile:fRead() -- прочитаем данные из файла 'ini.cfg' в буфер
--cfgFile:PropertySet(varName, varValue) --записывает в буфер файла переменную
cfgFile:PropertySet('груша', 'жёлтая') --записывает в буфер файла переменную
--записывает в буфер файла, в переменную arr2 - массив данных
cfgFile:PropertySet('arr2', {'33_коровы','30_разбойников',777,666,5,44,77} )
cfgFile:fWrite()-- освежим данные в файле (сбросим из буфера в файл) - сохраним файл с новыми данными
-- если этого не сделать, данные в файле не обновятся!!!
--cfgFile:PropertyGet(varName,defVal) -- прочитаем переменную
v1 = cfgFile:PropertyGet('погода','нормальная') -- прочитаем переменную, оно есть в файле = 'ясная'
print('погода - ' .. v1)
v2 = cfgFile:PropertyGet('яблоко','красное') -- прочитаем переменную, его нету в файле
- но т.к. мы задали значение_по умолчанию - 'красное', то переменная будет создана
print( v2) -- иначе функция вернёт - nil
v3 = cfgFile:PropertyGet('пусто', 'просто космос') -- прочитаем переменную, оно есть в файле = 'полно'
print( 'пусто - ' .. v3 )
v4 = cfgFile:PropertyGet('Количество') -- прочитаем переменную, оно есть в файле = '555'
print( 'Количество - ' .. v4 )
-- можно считать в переменную массив
myArr = cfgFile:PropertyGet('arr1') -- теперь myArr содержит массив данных считанный из файла
print('typeOf - '.. typeOf(myArr) ) -- считанная строка, содеращая массив
--typeOf(var) вернёт -- 'string' -- 'table'
print('myArr = {'.. table.concat(myArr,", ") .. '}') -- вывести на печать всю строку массива
print('myArr='..myArr) -- вывести на печать 3ю ячейку = цифры
print('myArr='..myArr) -- вывести на печать 8ю ячейку = строка, пробелы уничтожились !!!
print ('')
print('--- вывести на печать всё ---')
cfgFile:printAll()-- выведем на печать все переменные из файла
print('end')
Скриншот:
Изменения: сделал так, что имя файла выбирать не нужно. Всегда будет использоваться 'ini.cfg'
Сделал более похоже на объекты, (как я их понимаю)
💾СКАЧАТЬ: MEGA
PS не стреляйте в пианиста, он играет как умеет.