Привет! Если вы читаете это - вы еще не зарегистрированы. Это займет не больше минуты. Нажмите здесь, чтобы пройти регистрацию в несколько простых шагов, чтобы получить доступ ко всем разделам нашего форума. Удачи!
Показано с 1 по 10 из 10

Тема: Загрузка\сохранение информации(YSI \ y_ini)

  1. #1
    Активный пользователь Аватар для Resonance
    Регистрация
    26.10.2010
    Адрес
    Санкт-Петербург
    Возраст
    31
    Сообщений
    723
    Репутация: 71

    Звание: скоро придёт к известности

    Загрузка\сохранение информации(YSI \ y_ini)

    Доброго времени суток. Данная статья для меня первая и она направлена на сохранение параметров в файл используя ридер\райтер y_ini из библиотеки YSI. В данном уроке я расскажу о записи в файл для людей, которые только столкнулись с y_ini и YSI библиотекой в частности.

    В данной статье будет дана минимальная(!) информация по сохранению\записи, для понятия основ. Разбираться будет загрузка в файл и запись из файла простой информации, не присущей игроку.

    Для начала нам потребуется сама библиотека:

    YSI (оригинальная тема)

    Создание файла и запись

    И так - как же записать данные в файл? К примеру у нас имеется переменная a имеющая значение 1

    PHP код:
    new 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;

    Вот и все!
    Теперь сохранение и загрузка файла будут работать, а Вы сможете сохранять любые значения для Ваших систем.

    Пример информации в файле:
    Код:
    [MySave]
    CountA = 1

    *Теоретически использовать переменную для файла необязательно, но как минимум проще, ведь если Вам будет нужно изменить название файла или его место дислокации, Вам нужно будет всего лишь поменять имя в переменной и в загрузке.

    О типах записи
    Записывать можно не только цельные числа, но так-же Float числа (число с плав. точкой) или например текст (string) или даже переменные логического типа (bool).

    Float

    PHP код:
    new Floattestf 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`а (официальная тема)
    Since 2009


  2. #2
    ыыыыы Аватар для Mexanizm
    Регистрация
    16.01.2012
    Адрес
    Россия. Воронеж
    Возраст
    31
    Сообщений
    2,450
    Репутация: 287

    Звание: как роза среди колючек

    Re: Загрузка\сохранение информации(YSI \ y_ini)

    Красиво и понятно оформлено.
    Такие статьи писать большой труд и молодец, что написал, так как кому нибудь я уверен пригодится.
    :bf:
    ps: А, что быстрее, y_ini или mxini ?
    Modern RP





  3. #3
    Активный пользователь Аватар для Resonance
    Регистрация
    26.10.2010
    Адрес
    Санкт-Петербург
    Возраст
    31
    Сообщений
    723
    Репутация: 71

    Звание: скоро придёт к известности

    Re: Загрузка\сохранение информации(YSI \ y_ini)

    Цитата Сообщение от Mexanizm93 Посмотреть сообщение
    Красиво и понятно оформлено.
    Такие статьи писать большой труд и молодец, что написал, так как кому нибудь я уверен пригодится.
    :bf:
    ps: А, что быстрее, y_ini или mxini ?
    Благодарю.
    По идее Y_ini быстрее. По крайней мере так пишут на офф форуме. Да и MXini уже давно не обновлялась насколько я знаю, а вот Y_Less за своей библиотекой следит.
    Один из тестов Y_ini (насколько я понял). Сравнивание с другими ридер\райтерами при прогрузке 40000 записей из файла:
    Код:
    yini: 1564
    dini: 63810
    emu : 27297
    SII: 52807
    Since 2009


  4. #4
    ыыыыы Аватар для Mexanizm
    Регистрация
    16.01.2012
    Адрес
    Россия. Воронеж
    Возраст
    31
    Сообщений
    2,450
    Репутация: 287

    Звание: как роза среди колючек

    Re: Загрузка\сохранение информации(YSI \ y_ini)

    dini самая тормозная.
    Постарался Y_less над своим ридером/райтером
    Modern RP





  5. #5
    Активный пользователь Аватар для Resonance
    Регистрация
    26.10.2010
    Адрес
    Санкт-Петербург
    Возраст
    31
    Сообщений
    723
    Репутация: 71

    Звание: скоро придёт к известности

    Re: Загрузка\сохранение информации(YSI \ y_ini)

    Цитата Сообщение от Mexanizm93 Посмотреть сообщение
    dini самая тормозная.
    Постарался Y_less над своим ридером/райтером
    Да это точно
    __
    Добавил ещё один тип записи\загрузки.
    Since 2009


  6. #6
    Активный пользователь Аватар для Resonance
    Регистрация
    26.10.2010
    Адрес
    Санкт-Петербург
    Возраст
    31
    Сообщений
    723
    Репутация: 71

    Звание: скоро придёт к известности

    Re: Загрузка\сохранение информации(YSI \ y_ini)

    Подниму пожалуй.
    Since 2009


  7. #7
    Активный пользователь
    Регистрация
    21.08.2011
    Адрес
    Россия
    Сообщений
    294
    Репутация: 33

    Звание: на пути к лучшему

    Re: Загрузка\сохранение информации(YSI \ y_ini)

    Всё таки хотелось бы увидеть в сравнении с mxini

  8. #8
    Активный пользователь Аватар для Resonance
    Регистрация
    26.10.2010
    Адрес
    Санкт-Петербург
    Возраст
    31
    Сообщений
    723
    Репутация: 71

    Звание: скоро придёт к известности

    Re: Загрузка\сохранение информации(YSI \ y_ini)

    Цитата Сообщение от Proff116 Посмотреть сообщение
    Всё таки хотелось бы увидеть в сравнении с mxini
    К сожалению не нашел тестов с mxini, но полазив по темам, увидел, что больше отзывов (фактически все) было в сторону Y_ini.
    Since 2009


  9. #9
    Вежливые Люди Аватар для Roka_Kuroki
    Регистрация
    28.03.2011
    Адрес
    москва
    Возраст
    29
    Сообщений
    2,434
    Репутация: 185

    Звание: - весьма и весьма положительная личность

    Re: Загрузка\сохранение информации(YSI \ y_ini)

    Стандартные функции чем не угодили?

  10. #10
    Активный пользователь Аватар для Resonance
    Регистрация
    26.10.2010
    Адрес
    Санкт-Петербург
    Возраст
    31
    Сообщений
    723
    Репутация: 71

    Звание: скоро придёт к известности

    Re: Загрузка\сохранение информации(YSI \ y_ini)

    Цитата Сообщение от Roka_Kuroki Посмотреть сообщение
    Стандартные функции чем не угодили?
    Это вопрос из разряда: "Чем не угодил стандартный командный процессор, почему юзаете ZCMD \ YCMD etc ?"

    Вопрос будет логичным, мол они быстрее, удобнее и т.д.
    Тут ответ вообщем-то такой-же.
    Since 2009


Похожие темы

  1. Сохранение и загрузка авто !
    от hImIkAt в разделе Вопросы по скриптингу
    Ответов: 17
    Последнее сообщение: 07.05.2012, 13:02
  2. [Урок] Загрузка/Сохранение с помощью file.inc
    от Essle в разделе Pawn WIKI
    Ответов: 8
    Последнее сообщение: 22.02.2012, 13:20
  3. Загрузка / Сохранение MySQL
    от Vovanm93 в разделе Вопросы по скриптингу
    Ответов: 9
    Последнее сообщение: 17.09.2011, 22:25
  4. сохранение загрузка тюнинга
    от gamerX в разделе Вопросы по скриптингу
    Ответов: 1
    Последнее сообщение: 27.02.2011, 21:02
  5. Сохранение и загрузка позиции игрока
    от [miami]Ra[z]or2011 в разделе Вопросы по скриптингу
    Ответов: 4
    Последнее сообщение: 24.12.2010, 18:10

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •