1. 23 May, 2016 1 commit
  2. 06 Jan, 2015 1 commit
  3. 15 Sep, 2013 1 commit
    • cvet's avatar
      Исправлен баг с загрузкой ZIP/BOS файлов, если в пути клиента находятся не... · 0488e1b3
      cvet authored
      Исправлен баг с загрузкой ZIP/BOS файлов, если в пути клиента находятся не ASCII символы. Баг с 400 ревизии.
      
      При формировании креш дампов при Access Violation дополнительно записывается тип операции (write/read) и адрес ошибочного обращения.
      
      В репозитории удалена папка Stable, т.к. архивы недоступны ввиду потери хостинга. Информация о стабильных ревизиях перенесена в ReadMe.txt.
      
      git-svn-id: https://xp-dev.com/svn/fonline_sdk@412 71b6ff52-6597-447a-9a87-58edf7a03249
      0488e1b3
  4. 27 Apr, 2013 1 commit
    • cvet's avatar
      Добавлена поддержка Unicode, кодировка UTF-8. · 7c9de036
      cvet authored
      Все текстовые файлы переведены в кодировку UTF-8 (без BOM).
      
      Обновлен весь инструментарий на предмет совместимости с юникодом.
      В том числе редактор прототипов (ObjectEditor). (by Ghosthack)
      
      Была исправлена работоспособность и модифицирована глобальная функция клиента/маппера
      void KeyboardPress(uint8 key1, uint8 key2, string@+ key1Text = null, string@+ key2Text = null)
      добавлены опциональные параметры key1Text/key2Text, которые будут переданы в обработчики key_up/key_down вместе с переменными key1/key2.
      
      Для обработки ввода была добавлена константа DIK_CLIPBOARD_PASTE, событие которой означает вставку текста с буфера обмена.
      
      Изменен принцип ввода с клавиатуры и работы с языком ввода.
      В зарезервированные функции клиента/маппера key_down/key_up теперь передается параметр string& keyText, в котором будет записан текст на нужном языке, базирующийся на текущем языке ввода ОС.
      Переключение раскладки клавиатуры теперь контролируется ОС, а не программой, ввиду чего была убрана глобальная переменная ChangeLang и соответствующие ей константы. Так же удалена глобальная функция int GetKeybLang().
      Удалена функция перевода текста из одного языка в другой по кнопке Pause (пользуйтесь сторонними программами, например, PuntoSwicher).
      
      Проверки корректности имени перенесена в скрипты, клиент/сервер проверяют только длину, корректность UTF-8 символов и отсутствие знака '*' (которым в некоторых местах потом заменяется пробел).
      В зарезервированную клиентскую функцию 'bool player_data_check( string& name, int[]& data ) добавлен параметр 'string name' для проверки его корректности перед регистрацией.
      
      В скрипты сервера/клиента/маппера добавлены глобальные функции:
      uint DecodeUTF8(const string& text, uint& length) - декодирование символа из текста (const string& text) с возвращением его UCS кода и длинны кода в строке (uint& length). Если символ не распознан, то будет возвращен код 0xFFFD.
      string@ EncodeUTF8(uint ucs) - кодирование UCS кода в строку.
      
      Изменился формат файлов шрифта fofnt, теперь в первую очередь должен присутствовать тег с версией формата (Version).
      - изменился формат тега Letter, c "Letter 65 # 'A'" на "Letter 'A'";
      - добавлен тег LineHeight, который указывает на высоту строки шрифта (если не указан, то высота берется по самому большому символу из всего списка);
      - в имя атласа для шрифта Image можно добавить символ '*', тогда цвет текстуры нормализуется с любого на RGB [128, 128, 128] (только для OpenGL рендера);
      - метка 'End' прекратит парсинг файла (для отладки).
      Эти шрифты теперь кешируются в бинарном виде, их загрузка теперь будет очень быстрой, после первого запуска. Рекеширование идет, если изменилось время записи файла.
      В основной шрифт Default.fofnt добавлены дополнительные символы юникода из шрифта DefaultExt.fnt (хотя сам шрифт нигде не используется), в связи с чем клиент теперь поддерживает не только английский и русский язык, как минимум для шрифта по умолчанию.
      
      
      Обновлена работа со строками.
      
      Индексный оператор теперь возвращает строку содержащую нужный символ, соответственно сравнивать теперь необходимо не с символьными константами ('X'), а со строками ("X"). Пример:
      string s = "abcd"; // s[ 1 ] вернет "b"
      string s = "abcd"; // s[ 4 ] исключение - выход за пределы массива
      При присвоении с индексным оператором идет удаление символа и вставка присваиваемой строки, примеры:
      string s = "abcd"; s[ 1 ] = "g"; // s == "agcd"
      string s = "abcd"; s[ 2 ] = "xyz"; // s == "abxyzd"
      string s = "abcd"; s[ 1 ] = ""; // s == "acd"
      Появилась возможность индексировать строки с помощью отрицательных значений. Это применимо так же к глобальным функциям для работы со строками (substr, findFirst, findLast и т.п.) для параметра 'int start'. Примеры:
      string s = "abcd"; // s[ -1 ] вернет "d"
      string s = "abcs"; // s[ -100 ] исключение - выход за пределы массива
      string s = "abcd"; s[ -3 ] = "X"; // s == "aXcd"
      string s = "abcd"; s[ -1 ] = ""; // s == "abc"
      
      Метод length() теперь возвращает количество символов юникода в строке, а не количество байт, т.е. как метод lengthUTF8(), который сейчас удален (замену старому length() см. ниже).
      
      Обновлены все функции для работы со строками (substr, findFirst, findLast и т.п.), теперь они так же работают с символами юникода, а не байтами.
      
      Переименован метод resize(uint), см. ниже.
      
      Для работы с байтами в строке добавлены следующие методы:
      uint rawLength() const - вместо предыдущего length();
      void rawResize(uint size) - вместо resize(uint);
      uint8 rawGet(uint index) const - вместо старого индексного оператора;
      void rawSet(uint index, uint8 value) - вместо старого индексного оператора.
      
      
      Исправления по трехмерной графике.
      
      Исправлена утечка памяти при работе с эффектами.
      
      В формате fo3d тег Mesh теперь может принимать значение -1, это означает, что установка текстур, эффектов и отключения материалов (теги Texture, Effect, DesableSubset) будут касаться всех мешей в текущей модели. Так же теперь этот тег по умолчанию равен -1, а не 0 (т.е. установка для всех моделей, а не только для первой).
      
      Исправлено использование эффектов в 3д моделях OpenGL ренеринга (до этого они не устанавливались и всегда использовались эффекты по умолчанию).
      
      
      Другое.
      
      Оптимизирована скорость загрузки карт (fomap) и прототипов (fopro) файлов.
      
      git-svn-id: https://xp-dev.com/svn/fonline_sdk@400 71b6ff52-6597-447a-9a87-58edf7a03249
      7c9de036
  5. 23 Apr, 2013 1 commit
  6. 25 Oct, 2010 1 commit
    • cvet's avatar
      Добавлена возможность запуска сервера как сервиса (службы). · 507fd07c
      cvet authored
      Для регистрации/запуска используйте ключ "-service" (ярлык FOServerService.exe.lnk).
      Для удаления используйте ключи "-service -delete" (ярлык FOServerServiceDelete.exe.lnk).
      
      Добавлена возможность логгирования с помощью в функции OutputDebugString.
      Сам лог можно перехватывать (даже удаленно) с помощью программы DebugView
      http://technet.microsoft.com/en-us/sysinternals/bb896647.aspx
      Для включения в конфиги сервера и клиента добавлена опция LoggingDebugOutput.
      
      Сервер/клиент/маппер теперь будут нормально работать при запуске с некорректными активными директориями. При запуске устанавливается текущая директория исполняемого файла.
      
      Исправлен баг с отсутствием замены буквы 'x' на 'ч' во встроенном пунто свитчере.
      
      Исправлено падение при пошаговом режиме и некорректной работе Map::GetCritter(uint critterId).
      
      Translations of commit history you can found here: http://www.xp-dev.com/forum/topic/3220
      
      git-svn-id: https://xp-dev.com/svn/fonline_sdk@63 71b6ff52-6597-447a-9a87-58edf7a03249
      507fd07c
  7. 02 Sep, 2010 1 commit
  8. 31 Aug, 2010 1 commit