Перейти к содержанию

CE Lua Сохранение параметров в файл


MasterGH

Рекомендуемые сообщения

Скрытый текст

    ClassSettings = {}
    ClassSettings.__index = ClassSettings
    function ClassSettings:New(_fileName, _maskFile)
	
		local obj = {}
		obj.stringList = createStringlist()
		obj.fileName = _fileName
		obj.maskFile = _maskFile
		
		obj.directoryPath = getCheatEngineDir()..'autorun'
		obj.filePath = obj.directoryPath..'\\'..obj.fileName
		
		-- Есть ли такой ключ
		function obj:HasKey(keyString)
			local stringCount = self.stringList.Count
			for i=0,stringCount-1 do
				local items = self:Split(self.stringList[i])
				if(keyString == items[1]) then
					return true 
				end
			end
		end
		
		-- Получить значение ключа
		function obj:Get(keyString)
			local stringCount = self.stringList.Count
			for i=0,stringCount-1 do
				local items = self:Split(self.stringList[i])
				if(keyString == items[1]) then
					return  items[2]
				end
			end
		end
		
		-- Записать ключ
		function obj:Set(keyString, stringOrDigitalValue)
			-- Искать номер строки
			local stringCount = self.stringList.Count
			for i=0,stringCount-1 do
				local items = self:Split(self.stringList[i])
				if(keyString == items[1]) then
					items[2] = stringOrDigitalValue
					self.stringList.remove(self.stringList[i])
					break
				end
			end
			
			self.stringList.add (keyString..' '..stringOrDigitalValue)
		end
		
	
		-- Возвращает числовой вариант
		function obj:GetDigital(keyString)
			return tonumber(obj:Get(keyString))
		end

		-- Сохранить все ключи
		function obj:Save()
			self.stringList.saveToFile(obj.filePath)
		end

		function obj:FileExist(directoryPath, pathToFile, mask)
			local paths = getFileList(directoryPath, mask, false)
			for i=1,#paths do
				if(paths[i] == pathToFile) then
					return true
				end
			end
			return false
		end
		
		function obj:Split(argString)
			local resultTable = {}
			for i in string.gmatch(argString, "%S+") do
				table.insert(resultTable, i)
			end
			return resultTable
		end

		
		-- Загрузка ключей в память
		if(obj:FileExist(obj.directoryPath, obj.filePath, obj.maskFile)) then
			obj.stringList.loadFromFile(obj.filePath)
		end	
		setmetatable(obj, self)
		return obj
	end
	

 

 

Использование. Код выше  вставляем в редактор Lua кода, а ниже пишем

-- Инициализация (файл ищем в папке "autorun")
classSettings = ClassSettings:New('userdata.txt', '*.txt')

-- Пример сохранения параметров "Ключ - Значение"
classSettings:Set('Name', 'MasterGH')
classSettings:Set('Name2','Xipho')
classSettings:Set('Color', 0xFFFFFF)
-- Сохраняется так
classSettings:Save()

-- Пример загрузки
print(classSettings:Get('Name'))
print(classSettings:Get('Name2'))
print(classSettings:Get('Color'))

И запускаем.

 

Данные в файле после сохранения

Name MasterGH
Name2 Xipho
Color 16777215

Сохранение по паре "Ключ — Значение", где Ключ должен быть уникальным.

Для трейнеров на CE скрипт надо переписать, чтобы путь был не в папке autoruns, а по пути, который выберите. Это может быть директория трейнера или временная папка Windows.

 

-------------

Это пригодится для сохранения таких параметров как цвет, шрифт, чекбоксы, слайдеры, положение и размер элементов. Например, положение формы или другие настройки

Ссылка на комментарий
Поделиться на другие сайты

×
×
  • Создать...

Важная информация

Находясь на нашем сайте, Вы автоматически соглашаетесь соблюдать наши Условия использования.