Subversion Repository Public Repository

fonline_sdk

This repository has no backups
This repository's network speed is throttled to 100KB/sec

@ 495
Entry Size Revision Updated
Client 495 Tue 28 Apr, 2015 19:58:28 +0000
Docs 405 Mon 27 May, 2013 22:20:36 +0000
Server 495 Tue 28 Apr, 2015 19:58:28 +0000
Tools 495 Tue 28 Apr, 2015 19:58:28 +0000
License.txt 9.4K 468 Tue 06 Jan, 2015 09:50:43 +0000
ReadMe.txt 4.3K 468 Tue 06 Jan, 2015 09:50:43 +0000

Commits for fonline_sdk/

Revision Author Commited Message
495 cvet picture cvet Tue 28 Apr, 2015 19:58:28 +0000

Идентификаторы прототипов переведены с индексированных номеров на строковые.
Имя прототипа это имя файла без расширения.
В файле прототипа содержатся секции с данными для новой копии предмета, для прототипа и тексты локализации.

Добавлена автоматическая концертация старых номеров и имен прототипов в новые при загрузке карт, диалогов и прочих систем, содержащих эти данные.
При конвертации используется файл Server/data/ItemPidsConversion.txt, где можно добавлять данные о своих прототипах.

Методы GetProtoId() и GetType() переименованы в свойства ProtoId и Type.
Добавлено строковое поле в объект маппера MapperObject::ProtoName, где записано имя прототипа.

Флаги предметов Flags разделены на отдельные свойства bool Is...
FLAG_HIDDEN -> bool Item::IsHidden
FLAG_TRAP -> bool Item::IsTrap
и т.д.

Добавлен механизм менеджмента контента в скриптах.
Используется прагама content:
#pragma content Group fileName
где Group может быть Dialog или Item, а fileName имя файла без расширения.
При указании файла его хеш будет помещен в пространство имен Content::Dialog или Content::Item, который можно использовать при работе с файлами диалогов или прототипами.
При загрузке сервера он автоматически провалидирует данные файлы на предмет их щагрузки и, если их нет, то выдаст ошибку загрузки.

494 cvet picture cvet Sun 19 Apr, 2015 17:01:46 +0000

Правки инструментария после ревизии 491.
Исправлена работа редактора диалогов.
Если диалог не будет загружаться, то пересохраните его в версии 2.22.

Правка работы нововой системы свойств для персонажей.
Проведены некоторые правки перенесенных свойств.

493 cvet picture cvet Sun 19 Apr, 2015 11:04:40 +0000

Переконвертированные в актуальный формат диалоги.
Со следующих ревизий редактор дилогов не будет поддерживать старые форматы.

492 cvet picture cvet Sat 18 Apr, 2015 08:31:58 +0000

Правки инструментария псоле ревизии 491.
Исправлена работа маппера.

491 cvet picture cvet Fri 17 Apr, 2015 17:17:42 +0000

Инструментарий временно находится в неработоспособном (или полуработоспособном) состоянии, будет исправляться в последующих ревизиях.
В принципе и движок тоже, т.к. правки слишком объемные.

Для персонажей и прототипов предметов добавлен новый механизм свойств.
Создание свойств вынесено в файл _defines.fos.

В опциях свойств добавлена новая опция Group = name.
Можно группировать свойства по некоторому признаку (перки, трейты), и они будут автоматически помещены в глобальный массив ClassProperty[] ClassPropertyGrpoupName.
Например:
#pragma property Critter Protected MyValue1 Group = Other
#pragma property Critter Protected MyValue2 Group = Other
будет создан массив CritterProperty[] CritterPropertyOther, куда будут помещены эти два свойства MyValue1 и MyValue2.

Добавлен механизм установки дефолтных опций для свойств, что бы сократить количество повторяющегося кода.
Предыдущий пример может переписан так:
#pragma property Critter Defaults Group = Other
#pragma property Critter Protected MyValue1
#pragma property Critter Protected MyValue2
#pragma property Critter Defaults // Эта конструкция сбрасывает умолчания

Для свойств, которые разрешаются для регистрации (AddRegistrationProperty) создан глобальный массив с этими свойствами
CritterProperty[] CritterPropertyRegProperties

Virtual/VirtualClient/VirtualServer свойства переделаны на
VirtualPrivate - приватное свойство для клиента и сервера;
VirtualPrivateClient - приватное свойство только для клиента;
VirtualPrivateServer - приватное свойство только для сервера;
VirtualPublic - публичное свойство, имеют доступ все;
VirtualProtected - защищенное свойство, имеет доступ сервер и клиент.

Исправлен каст reflection::typeof к type.

Команда ~param заменена на ~prop:
~param crid index value
~prop crid prop_name value

490 cvet picture cvet Fri 27 Mar, 2015 22:20:46 +0000

Правка багов в работе новой системы свойств.

489 cvet picture cvet Fri 27 Mar, 2015 20:12:39 +0000

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

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

В свойства добавлена поддержка строк (string) и массивов примитивов (int[], uint64[] и т.п.).
Они синхронизируются по тому же принципу, что и обычные примитивы.

Лексемы предметов перемещены в новые свойства, в строку Lexems
#pragma property "Item Public string Lexems"
void Item::SetLexems
string@ ItemCl::Lexems

Для сохранения текстовых файлов добавлена функция
bool SaveText(string& filePath, string& text)
Для сохранения скриншотов добавлена функция
bool SaveScreenshot(string& filePath)
Удалены функции
bool SaveScreenshot()
bool SaveLogFile()
void filename_logfile( string& filename )
void filename_screenshot( string& filename )

Удален следующий скриптовый функционал:
hash ItemCl::GetScriptId() const
uint GetMessageFilters(int[]@+ filters)
void SetMessageFilters(int[]@+ filters)
int GetScroll(int scrollElement)
void SetScroll(int scrollElement, int value)
bool __ConsoleActive
string@ GetLastError()

В скриптовый GUIObject добавлено свойство
bool IsNotCathcable
что означает, что за этот элемент нельзя перетаскивать панель.

488 cvet picture cvet Thu 19 Mar, 2015 20:57:32 +0000

Добавлена возможность установки колбеков на получение и установку свойств.

Для получения свойства (используется для виртуальных свойств) используется функция
bool SetPropertyGetCallback(const string& className, const string& propertyName, const string& scriptFunc)
сигнатура функции колбека:
type FuncName(classType& obj)
возвращаемое значение должно быть того же типа, что и у свойства;
obj - объект для которого вычисляется значение (пока может быть Item/ItemCl).

Для добавления колбека на изменения свойства используется функция
bool AddPropertySetCallback(const string& className, const string& propertyName, const string& scriptFunc)
сигнатура функции колбека:
void FuncName(classType& obj, type oldValue)
type oldValue это предыдущее значение свойства, тип должен такой же, что и у свойства;
obj - объект для которого вычисляется значение (пока может быть Item/ItemCl).
Внутри данного колбека вы можете менять значение свойства, но колбеки уже не будут вызваны для данного изменения.

Добавлены опции настройки свойств, они указываются после определения свойства.
Сейчас доступны следующие:
Default = integer - стартовое значение по умолчанию;
Min = integer - ограничение на минимальное значение;
Max = integer - ограничение на максимальное значение;
Random = bool - генерация случайного стартового значения.
Пример использования:
#pragma property "Item Public uint MyProp Deafult = 10 Min = 5 Max = 20"
что означает, что при создании предмета данное свойство будет инициализировано значением 10, а по мере работы с ним не сможет быть меньше 5 или больше 20.

Настроены более корректно уровни доступа свойств предметов (см. _defines.fos).
Это повлияло на устранение бага с отсутствующей анимацией открытия двери.

Локальные переменные предметов вынесены в свойства.

Исправлены прочие баги связанные с введением новой системы свойств.

487 cvet picture cvet Tue 17 Mar, 2015 20:30:20 +0000

Корректная сборка библиотек нативных скриптов (баг 477 ревизии).

486 cvet picture cvet Tue 17 Mar, 2015 05:24:06 +0000

Правка компиляции клиентского скрипта.