Доброго времени суток. Данная статья для меня первая и она направлена на сохранение параметров в файл используя ридер\райтер y_ini из библиотеки YSI. В данном уроке я расскажу о записи в файл для людей, которые только столкнулись с y_ini и YSI библиотекой в частности.
В данной статье будет дана минимальная(!) информация по сохранению\записи, для понятия основ. Разбираться будет загрузка в файл и запись из файла простой информации, не присущей игроку.
Для начала нам потребуется сама библиотека:
YSI (оригинальная тема)
Создание файла и запись
И так - как же записать данные в файл? К примеру у нас имеется переменная a имеющая значение 1
Наша задача записать её при выключении мода, и установить при включении.
Для начала подключим инклуд y_ini.
PHP код:
#include <YSI\y_ini>
Теперь нам нужно создать файл для будущей записи. Создадим переменную с названием нашего файла:
PHP код:
new WriteTest[] = "myfile.ini";//Создаем переменную для будущего файла mytest
Если требуется создать файл в определенной папке используем слэш.
PHP код:
new WriteTest[] = "/Test/myfile.ini";//Создаем переменную для будущего файла mytest
Теперь, когда Ваш будущий файл получил название и переменную, будем сохранять значение в него.
Проще всего использовать сток для сохранения,как мы и поступим.
Создадим сток для сохранения параметра a в файл myfile.
PHP код:
stock SaveParams()
{
new INI:iniFile = INI_Open(WriteTest);//Открываем файл myfile
INI_SetTag(iniFile, "MySave");//Устанавливаем тэг файла
INI_WriteInt(iniFile,"CountA", a);//Сохраняем значение переменной a в ячейку CountA
INI_Close(iniFile);//Закрываем файл
return 0;//Лучше вообще не ставить return при сохранении файла
}
Использование возвращения в данном случае (return 1;) может привести к потере информации в файле и выставлении их на дефолтные позиции ( 0 по ум.).
Файл создается автоматически. Если путь к файлу идет через папку, которая не создана система даст сбой:
Код:
*** YSI Error: INI_Open could not find or create file /Test/myfile.ini
Под конец добавим наш сток при выключении мода для сохранения.
PHP код:
public OnGameModeExit()
{
SaveParams();//Сохраняем параметры в файл при выключении мода\скрипта
return 1;
}
* О других типах записи в файл можно прочитать внизу
Загрузка из файла \ Типы записи и загрузки
Теперь при выключении мода\скрипта информация успешно записывается в файл. Далее нам нужно вывести её в мод\скрипт при запуске.
Для этого мы создаем специальную функцию для загрузки нашего мода:
PHP код:
INI:myfile[MySave](name[], value[])
{
INI_Int("CountA", a);//Загружаем данные из ячейки CountA в переменную a
return 1;
}
/*
Где INI:myfile[MySave] :
myfile - название файла который мы загружаем
MySave - Тэг файла (если был указан при сохранении)
*/
Данную функцию можно расценивать как сток, поэтому ставить её можно в любое свободное место.
Кстати открывать файл (INI_Open) в данной функции не нужно, так как система сама откроет файл если найдет его (если название и тэг правильные).
Так-же не требуется и закрывать файл после загрузки.
И наконец в колбэк старта мода (OnGameModeInit) нам нужно сделать загрузку нашего файла:
PHP код:
public OnGameModeInit()
{
INI_Load(WriteTest);//Загружаем наш файл (его информацию)
return 1;
}
Вот и все!
Теперь сохранение и загрузка файла будут работать, а Вы сможете сохранять любые значения для Ваших систем.
Пример информации в файле:
*Теоретически использовать переменную для файла необязательно, но как минимум проще, ведь если Вам будет нужно изменить название файла или его место дислокации, Вам нужно будет всего лишь поменять имя в переменной и в загрузке.
О типах записи
Записывать можно не только цельные числа, но так-же Float числа (число с плав. точкой) или например текст (string) или даже переменные логического типа (bool).
Float
PHP код:
new Float: testf = 1.0;//Переменная типа Float, имеющая значение 1.0
INI_WriteFloat(File,"TestFloat",testf);//Записываем число с плав. точкой (Сохранение)
INI_Float("TestFloat",testf);//Загружаем число с плав. точкой (Загрузка)
String
PHP код:
new InfoString[24];//Переменная InfoString на 24 символа
INI_WriteString(iniFile,"TestString", InfoString);//Записываем слово или информацию (Сохранение)
// Загрузка | Вариант 1 (рек.)
INI_String("TestString", InfoString,24);//Загружаем слово или информацию (Загрузка)
// Загрузка | Вариант 2
INI_String("TestString", InfoString,sizeof(InfoString));//Загружаем слово или информацию (Загрузка)
Bool
PHP код:
new bool:btest = true;//логическая переменная, имеющая значение true
INI_WriteBool(File,"TestBool",btest);//Записываем лог. переменную (Сохранение)
INI_Bool("TestBool",btest);//Загружаем лог. переменную (Загрузка)
На этом все! Надеюсь теперь Вас будут понятны основы записи в файл на y_ini.
Это мой первый туториал, прошу не кидаться камнями, если что не так, а адекватно пояснить ошибки.
Автор: Spiritser.
Информация частично бралась и подгонялась у: Y_Less`а (официальная тема)