Subversion Repository Public Repository

fonline_sdk

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

Commits for fonline_sdk/Modules/Core/Sprite.fos

Diff revisions: vs.
Revision Author Commited Message
805 Diff Diff cvet picture cvet Tue 18 Sep, 2018 09:10:47 +0000

Data base data now stored in its types not all in strings
Fixed mapper startup

694 Diff Diff cvet picture cvet Sat 12 Nov, 2016 14:24:27 +0000

From script language excluded pointer to object ‘@’.
Now all types separated on Value and Reference types.
Value types:
- primitives like int/float/etc;
- string.
Reference types (all other):
- built-in types array/dict/etc;
- funcdef;
- script types (class MyClass);
- engine types like Entity/Critter/Map/etc.
Value types can’t be null and new instance created when it assigned.
Reference types null by default and new instance not created when it assigned.
Reference operator ‘&’ can be used for both.

646 Diff Diff cvet picture cvet Mon 04 Jul, 2016 14:40:54 +0000

Improved namespaces for scripts.
Now each script module treated as namespace (Gui::Object, Entire::GetEntire).
And now you can access from any module to any module by specifying it namespace.
Disabled features: #include, shared, import.
Script addressation changed from module@func to module::func.

631 Diff Diff cvet picture cvet Wed 08 Jun, 2016 13:02:47 +0000

Правка загрузки анимаций фаллаута.
Убраны константы предопределенных путей.

610 Diff Diff cvet picture cvet Mon 23 May, 2016 16:22:23 +0000

Реорганизация движка.

606 Diff Diff cvet picture cvet Mon 23 May, 2016 15:41:24 +0000

Реорганизация движка.

571 Diff Diff cvet picture cvet Sat 24 Oct, 2015 10:17:44 +0000

Реорганизация контента.
Настройка Core скриптов.

570 Diff Diff cvet picture cvet Sat 24 Oct, 2015 10:12:43 +0000

Реорганизация контента.
Настройка Core скриптов.

566 Diff Diff cvet picture cvet Sat 24 Oct, 2015 10:08:47 +0000

Реорганизация контента.
Перемещение Core скриптов.

565 Diff Diff cvet picture cvet Sat 24 Oct, 2015 09:57:00 +0000

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

537 Diff Diff cvet picture cvet Mon 21 Sep, 2015 15:06:06 +0000

Введено некое подобие модульной системы организации контента.
Теперь все будет лежать не по отдельным папакам. т.е. скрипты в scripts, диалоги в dialogs и т.п., а в общей папке Modules, в которой можно группировать файлы как удобно.
Предполагается, что папки верхнего уровня это наименование отдельного модуля.
Любые папки в Modules (включая подпапки) начинающиеся с подчеркивания ‘_’ не будут обрабатываться.
Папки с именем ‘Resources’ будут паковаться в ресурсы клиента.
А в папках ‘Texts’ сервер будет искать файлы локализации текстов.
Пока есть только один модуль ‘TLA’, но в будущем он будет разделен на отдельные, например: Core, Traders, Combat и т.п.
Но нужно помнить, что пространство имен у всех контентных файлов (диалоги, прототипы и т.п.) одно и наличие двух одинаковых в разных папках не допускается.

525 Diff Diff cvet picture cvet Fri 24 Jul, 2015 19:36:13 +0000

Добавлена поддержка работы с вебом.
Для работы используется библиотека cURL
http://curl.haxx.se/
Добавлена глобальная функция
void YieldWebRequest(const string& url, const dict< string, string >@+ post, bool& success, string& result)
const string& url - ссылка запроса;
const dict< string, string >@+ post – POST данные (может быть null);
bool& success - успешно ли прошла операция;
string& result - текст ответа при успешном результате или текст ошибки при провале.
Как видно из названия (Yield) функция прерывает работу скрипта, т.к. взаимодействие с вебом требует некоторого времени.

Добавлены глобальные функции для вычисления хеша
string@ SHA1(const string& text)
string@ SHA2(const string& text)

Добавлена глобальная функция для открытия ссылки в браузере из программы
void OpenLink(const string& link)

Проведены работы в системе интерфейса.

Различные правки багов.

503 Diff Diff cvet picture cvet Sat 16 May, 2015 07:33:53 +0000

Сигнатура скриптов изменена с первых трех символов ‘//$’ на наличие в первой строке символов ‘FOS’.

500 Diff Diff cvet picture cvet Mon 11 May, 2015 14:15:04 +0000

Изменен принцип загрузки скриптов.
Теперь в каждом файле скрипта, первой строкой, должна присутствовать сигнатура ‘//$’ после которой перечисляются следующие идентификаторы:
Server - серверный скрипт;
Client - клиентский скрипт;
Mapper - скрипт маппера;
Common - серверный, клиентский и скрипт маппера;
Header - заголовочный файл, не загружается как модуль, без этого скрипт будет загружен как модуль.
Идентификаторов можут быть несколько и перечисляться через пробел.
Пример:
//$ Server Client Header
означает, что это заголовочный файл для сервера и клиента.
Все скрипты загружаются автоматически из папки Server/scripts, необходимости в scripts.cfg больше нет.

472 Diff Diff cvet picture cvet Tue 27 Jan, 2015 20:51:51 +0000

С данной ревизии в сервере устранена критическая уязвимость, которая позволяла злоумышленнику влиять на свои параметры при регистрации персонажа.
Ошибка заключалась в том, что при разрешении пересылки параметров при регистрации (SetRegistrationParam) присланные клиентом параметры не проверялись на сервере.

Интерфейс инвентаря перенесен в скрипты.
Для отрисовки курсора заведен специальный экран CLIENT_SCREEN_CURSOR.
Создана механика перетаскивания предметов в скрипты.

Правки по скриптовому гуи:
- колбэк на отрисовку OnDraw теперь вызывается непосредственно перед отрисовкой элемента;
- переименована функция GUI_EngineCallback_Render(...) -> GUI_EngineCallback_Draw(...);
- добавлена функция для отрисовки курсора GUI_EngineCallback_DrawCursor();
- добавлена функция для добавления глобального обработчика перетаскивания GUI_AddDragAndDropHandler( DragAndDropHandler@ handler );
- добавлен колбэк на изменение состояния перетаскивания void GUIObject::OnDragChanged();
- добавлен колбэк на изменение значения скрола void ItemView::OnScrollChanged();
- добавлена индикация возможности перетаскивания объекта bool GUIObject::IsDraggable;
- добавлена индикация того, перетаскивается ли объект в данный момент bool GUIObject::IsDragged;
- добавлено поле в котором находится указатель грида, который породил данный объект GUIGrid@ GUIObject::Grid;
- добавлен метод для установки возможности перетаскивания объекта void GUIObject::SetDraggable( bool enabled );
- добавлен метод для определения центра и размеров объекта вместе с его подобъектами void GUIObject::GetWholeSize( int& centerX, int& centerY, int& wholeWidth, int& wholeHeight )
- добавлен метод для отрисовки элемента в заданной позиции void GUIObject::Draw( int x, int y );
- в метод GUIObject::Find теперь есть возможность передать параметр для поиска только у своих потомков или всех рекурсивно GUIObject@ GUIObject::Find( string& name, bool deepFind = true );
- в экране можно указывать список возможных курсоров, переключаться они будут по правому клику мыши int[] GUIScreen::AvailableCursors, void GUIScreen::SetAvailableCursors( int[] cursors );
- добавлен список ячеек GUIObject@[]@ GUIGrid::Cells;
- функционал IsCanMove, IsMoveIgnoreBorders перемещен из GUIPanel в GUIScreen;
- при указании имени прототипа для GUIGrid можно указать точку перед именем, в таком случае поиск прототипа ячейки будет производиться не в потомках, а у соседей;
- доработан функционал GUIItemView.

Редактор интерфейса теперь использует более мощный редактор кода
http://www.codeproject.com/Articles/161871/Fast-Colored-TextBox-for-syntax-highlighting

Добавлен клиентский метод
ItemCl@+ CritterCl::GetItemById(uint itemId) const
Для HideScreen добавлен параметр по умолчанию 0, что означает закрыть текущий активный экран
void HideScreen(int screen = 0)

Настройки освещения персонажа игрока вынесены в скрипты.
Добавлены глобальные переменные:
uint __ChosenLightColor - цвет света;
uint8 __ChosenLightDistance - дистанция света;
int __ChosenLightIntensity - интенсивность света;
uint8 __ChosenLightFlags - флаги (см. _defines.fos).
Настройка происходит в config.fos.
Так же смотрите константы Client lighting, Flags в скрипте _defines.fos.

463 Diff Diff cvet picture cvet Fri 31 Oct, 2014 22:01:41 +0000

Основной интерфейс игры перенесен в скрипты.
В связи с этим были произведены следующие правки.

Расширен функционал скриптового гуи:
- закончен функционал класса GUIConsole для работы с консолью;
- в GUIObject добавлен функционал для проверки попадания с учетом прозрачных пикселей (CheckTransparentOnHit);
- начата реализация класса для отображения предметов игрока (GUIItemView, OnCheckItem, OnDrawItem);
- добавлены колбеки на переход окна на передний план и наоборот (OnAppear, OnDisappear);
- SetXXXImage теперь принимает также хеш названия, помимо строки с именем файла;
- в GUITextInput добавлена возможность вкулчения каретки (SetCarriage), по умолчанию она выключена, но для консоли включается автоматически;
- параметры GUIScreen IsAutoCursor и AutoCursorType заменены на int Cursor, где находится тот курсор, который будет включаться при переходе окна на передний план.

Добавлены глобальные клиентские функции
uint GetSpriteTicks(uint sprId) - возвращает длину анимации в тиках;
uint GetPixelColor(uint sprId, int frameIndex, int x, int y) - возвращает цвет пикселя для спрайта; при выходе за пределы его границ возвращается ноль.

Добавлены зарезервированные скриптовые функции клиента
void item_inv_changed( ItemCl& itemNow, ItemCl& itemBefore ) - уведомление об изменении предмета в инвентаре; на данный момент itemNow и itemBefore равны, будет исправлено в будущем;
bool check_interface_hit( int x, int y ) - проверка попадает ли курсор на интерфейс.

429 Diff Diff cvet picture cvet Sat 21 Jun, 2014 20:34:17 +0000

С данной ревизии сдк начинается перевод хардкод гуи в скрипты.
На данный момент создана базовая архитектура новой системы, которая состоит из
- редактора интерфейса Tools/InterfaceEditor;
- gui.fos - ядро системы, которое осуществляет работу интерфейса;
- gui_h.fos - базовые классы и пользовательский функционал для работы с интерфейсом;
- gui_screens.fos - автоматически сгенерированный скрипт в InterfaceEditor, где находится логика работы окон.
- gui_screens_stuff.fos - скрипт, который включается в gui_screens.fos, для внесения функционала вручную, который будет там использоваться.
Постепенно интерфейс будет замещаться, а по окончании хардкод будет исключен из клиента.
Соответственно произошли правки в скриптах, связанные с удалением старой системы и вводом новой.
Еще раз подчеркну, что текущая версия только начало работы над новым гуи, и в течении нескольких месяцев система и редактор будут дорабатываться.

API нового гуи находится в начале скрипта gui_h.fos.
Примеры использования новой системы находятся в обновленных скриптах client_screen_test.fos и radio.fos. А так же в автоматически сгенерированном скрипте gui_screens.fos.
Несколько советов:
- помечайте колбеки событий объектов гуи (начинаются с ‘On’) как override, на случай, если допустите ошибку в имени или параметрах, что бы компилятор вас предупредил об этом;
- не используйте методы и параметры начинающиеся с подчеркивания в базовых классах gui, они для внутренней работы системы и их поведение может меняться со временем.

Редактор интерфейса состоит из программы InterfaceEditor.exe и файлов для хранения информации о интерфейсе.
Расширение .fogui - отдельное окно;
Расширение .foguischeme - схема набора окон, нужно будет для моддинга стандартного интерфейса.
На данный момент взаимодействие с гуи осуществляется посредством контекстного меню вызываемого правой кнопкой мыши на панели GUI.

В этой ревизии уже замещен экран логина в игру.
Перемещено рисование информации по F1 в скрипты.

AngelScript обновлен до ревизии 1959, версия 2.29.0.
По скриптам произошло много правок, в связи с новыми ворнингами при компиляции.
В скрипты включен аддон AngelScript weakref.

Для обработки хардкод ввода добавлены функции
void HandleHardcodedScreenMouse(int screen, int button, bool down, bool move)
void HandleHardcodedScreenKey(int screen, uint8 key, string@ text, bool down)
они будут использоваться для работы с хардкод гуи на время его переноса.

На время миграции интерфейса в скрипты добавлена функция
string@ CustomCall(string& command, string& separator = “ ”)
нужна для работы с движком, вызова некоторых его функций, которые не нужно выносить в скрипты, но необходимость в вызове существует.

Добавлена глобальная функция
void CloneObject(?&in, ?&out, bool copy)
с помощью которой можно создавать копии объектов не

Переработаны функции DrawSprite, теперь они имеют следующие сигнатуры
void DrawSprite(uint sprId, int frameIndex, int x, int y, uint color = 0, bool applyOffsets = false)
void DrawSprite(uint sprId, int frameIndex, int x, int y, int w, int h, bool zoom = false, uint color = 0, bool applyOffsets = false)
void DrawSpritePattern(uint sprId, int frameIndex, int x, int y, int w, int h, int sprWidth, int sprHeight, uint color = 0)
bool zoom - если true, то изображение сохраняет пропорции, если false, то растягивается.

В функции GetTextInfo теперь вместо ссылки для текста используется указатель
void GetTextInfo(string& text...
void GetTextInfo(string@ text...
теперь при передаче null будет рассчитываться максимальное количество строк, которое может вместиться в заданную область.

В функцию HideScreen теперь не передаются какие-либо параметры, а в функцию ShowScreen теперь вместо int p0, p1, p2 можно опционально передать dictionary, который потом уже можно будет использовать в GUIObject::OnInit
void ShowScreen(int screen, dictionary@ params = null)

При передаче в функцию MouseClick значения -1 в параметр cursor, то смены курсора не будет.

Исправлена работа функции GetMonitorHex, когда не учитывались параметры x и y.

Для обработки пользовательского ввода создан скрипт input.fos.
Туда перемещена из движка обработка всех горячих клавиш.

Добавлены глобальные переменные
int __SoundVolume - регулировка громкости звуков (0..100);
int __MusicVolume - регулировка громкости музыки (0..100);
bool __DebugInfo - отладочная информация по F1.

Переделано обозначение версий сервера, клиента и маппера, теперь оно будет обозначать номер ревизии сдк.

Добавлена зарезервированная функция для скриптов клиента и маппера
void finish()
которая вызывается в момент выхода из программы.
Нужно учитывать, что функция может не вызваться, если произошло падение клиента или он был закрыт по Alt+F4. ????

Добавлена зарезервированная функция для скриптов клиента, которая вызывается при добавлении игрового сообщения
void message_box( string& messageText, int messageType, bool scriptCall )
string& messageText - текст сообщения, можно модифицировать для движка;
int messageType - тип сообщения;
bool scriptCall - был ли вызов инициирован со скриптов функцией Message или движком.

Изменены сигнатуры функций mouse_down, mouse_up, mouse_move, key_down, key_up.

Для работы с кешем на строне клиента добавлены функции
void SetCacheData(const string& name, const uint8[]& data)
void SetCacheData(const string& name, const uint8[]& data, uint dataSize)
bool GetCacheData(const string& name, uint8[]& data)
void SetCacheDataStr(const string& name, const string& data)
string@ GetCacheDataStr(const string& name)
bool IsCacheData(const string& name)
void EraseCacheData(const string& name)
const string& name - имя данных;
const uint8[]& data - данные;
uint dataSize - длинна данных;
const string& data - данные.
Теперь класс serializator.fos может работать и в клиенте.

Исправлен баг с перегенерацией клиентских скриптов, баг с 428 ревизии.

Вычисление смещение текстуры в аталсе теперь происходит в шейдере
TexCoord.x = ( InTexCoord.x * ColorMapAtlasOffset.z ) + ColorMapAtlasOffset.x;
TexCoord.y = ( InTexCoord.y * ColorMapAtlasOffset.w ) + ColorMapAtlasOffset.y;
соответсвенно добавлена переменная ColorMapAtlasOffset.
Вместо атрибута InTexCoordBase теперь передается вторая текстурная координата TexCoord2.
См. файл Client/data/effects/ReadMe.txt

В статистике памяти сервера добавлен учет памяти массивов.

Для строк добавлены методы
bool startsWith(const string &in) const - начинается ли строка с переданной;
bool endsWith(const string &in) const - кончается ли строка переданной.
Так же все глоабльные функции для работы со строками получили соответствующие методы в самом классе
string@ substring(int start, int count = -1)
int findFirst(const string &in, int start = 0)
int findLast(const string &in, int start = 0)
int findFirstOf(const string &in, int start = 0)
int findFirstNotOf(const string &in, int start = 0)
int findLastOf(const string &in, int start = 0)
int findLastNotOf(const string &in, int start = 0)
array<string@>@ split(const string &in)
string@ toLower()
string@ toUpper()

413 Diff Diff cvet picture cvet Fri 10 Jan, 2014 16:59:40 +0000

Доработан и оптимизирован OpenGL рендеринг.
Direct3D версия исключена из SDK и больше не поддерживается.

Оптимизирован рендеринг 3д моделей.
Теперь каждый персонаж рисуется в один draw call (плюс один для тени). Движок автоматически батчит тело, надетую одежду и оружие по материалу (учитывается шейдер и активные текстуры).
Убрана система рендеринга не скиненных мешей, теперь они будут скиниться автоматически при загрузке (на все вершины будет влиять одна кость).
Добавлена прозрачность для 3д персонажей.

Изменения формата FO3D.
Система подмешей (Subsets) теперь не используется, остались только меши.
Если меш 3д модели (не FBX) содержит несколько материалов в одном меше, то он автоматически будет разделен на разные меши с одним материалом. Для FBX модели будет взят первый материал у меша и использован для всего меша.
В связи с этим DisableSubset теперь не используется, введен новый тег DisableMesh вместо него. Принцип работы тот же, только именование производится не по индексу, а по имени меша. Так же введена специальная константа для выключения всех мешей ‘All’.
Тег Subset так же теперь не используется, вместо него теперь Mesh (так же можно использовать ‘All’, что и установлено по умолчанию).
Добавлен тег AnimExt, где добавлена возможность установки дополнительной анимации. Движок будет пытаться проигрывать любую из них, только при боевом режиме сначала вторую, потом первую, а при не боевом режиме сначала первую, потом вторую. Эта система добавлена для реализации полноценного боевого режима. Так же добавлен дополнительный тег AnimSpeedExt для указанися скоростей. Формат для примера ‘Anim anim_file_name anim_name’ ‘AnimExt anim_file_name anim_name anim_file_name2 anim_name2’.
Для указания имени анимации (что идет после указания файла анимации) добавлено ключевое слово ‘Base’, это означает, что будет взята первая анимация в файле.
Исправлено использование тега Include более одного раза.

Изменения в эффектах.
Исключены атрибуты InColor, InTexCoord2, InTexCoord3.
Т.к. все текстуры пакуются в один большой атлас (для отрисовки в один вызов) текстурные координаты автоматически смещаются. Актуальные координаты хранятся в InTexCoord, а исходные в InTexCoordBase.
Перенесены в константы цвета материалов MaterialAmbient MaterialDiffuse.
Добавлен цвет освещения, на гексе, где находится персонаж, и его прозрачность в LightColor.
Для текстур добавлены параметры TextureXAtlasOffset (X номер текстуры), где хранятся их смещения в атласе (xy смещение, zw ширина и высота).

Изменения связанные с портированием игры на новые платформы.
При сборке теперь используются:
SDL2 http://www.libsdl.org/ для инициализации окна, работы со звуком и вводом;
FBX SDK http://www.autodesk.com/products/fbx для загрузки 3д графики в формате FBX;
libpng http://www.libpng.org/pub/png/libpng.html для загрузки изображений PNG.
При сборке движка больше не используются:
STLport http://www.stlport.org/ теперь для сборки используется стандартный STL компилятора на котором он собирается, имейте ввиду при сборке своих нативных библиотек к игре;
DevIL http://openil.sourceforge.net/ теперь, кроме стандартных форматов Fallout, Tactics, Arcanum и т.п., поддерживаются только форматы PNG и TGA;
PortAudio http://www.portaudio.com/ для звука теперь используется SDL2;
FLTK http://www.fltk.org/ теперь не используется для клиента и маппера, а используется только для сервера.

Добавлено кеширование загруженных 3д моделей и анимаций в подготовленный формат для быстрой загрузки.
Т.е. при первой загрузке будет загружаться дольше, чем при повторных.
Кешированные файлы хранятся в папке data/cache.

Движок больше не заменяет синий цвет прозрачностью при загрузке изображений.

Изменения в работе ввода.
Теперь при вводе, в функциях key_down и key_up, с клавишами не передается текст, он идет отдельным сообщением DIK_TEXT.

Из нативных скриптов исключены функции обратных вызовов
GetUseApCost GetAttackDistantion GetRainOffset
вместо первых двух добавлены зарезервированные серверные и клиентские функции
uint get_use_ap_cost(CritterCl& cr, ItemCl& item, uint8 mode)
uint get_attack_distantion(CritterCl& cr, ItemCl& item, uint8 mode)

Для разрешения использования сервером или клиентом нативных библиотек добавлены оцпии сервера
AllowServerNativeCalls - разрешение серверных библиотек (включено по умолчанию);
AllowClientNativeCalls - разрешение клиентских библиотек (выключено по умолчанию).
Если вы разрешаете библиотеки для сервера (AllowClientNativeCalls), то должны собрать библиотеки для всех платформ на которых будет возможна игра на данном сервере.
Т.к. СДК несет в себе более общий функционал и планируется поддержка еще нескольких платформ, то данная опция была выключена, а все клиентские нативные вызовы были перенесены в серипты.

В конфигурации клиента (FOnline.cfg) были исключены опции
FlushVal и BaseTexture
движок подбирает оптимальные значения самостоятельно.

Добавлена серверная функция
bool Critter::SetAccess( int access )
для установки доступа для игрока.
Данная функция вызывает player_getaccess для проверки возможности установки доступа.

Для предметов больше не используется параметр направления (Dir).

Исправлено падение клиента при перезагрузке скриптов.

Исправлен баг с командой бана (~ban) для имен размером более четырех символов.

В сборках включена полная отладочная информация для бинарников (PDB файлы).

Added for finding coordinates of critter name / dialog floaters / chat messages on screen (by Wipe)
void CritterCl::GetNameTextInfo( bool& nameVisible, int& x, int& y, int& w, int& h, int& lines )

329 Diff Diff cvet picture cvet Sun 18 Dec, 2011 04:50:56 +0000

Проведена работа по унификации стиля программирования для скриптов.
С помощью программы Uncrustify (http://uncrustify.sourceforge.net/) отформатированы все исходники скриптов (fos, h, cpp).
Автоматическое форматирование осуществляется запуском батника FormatSource.bat.
В дальнейшем форматирование (запуск батника) будет производиться при каждом изменении скриптов.
Заголовочный файл angelscript.h перенесен в отдельную папку, что бы форматирование влияло только на код Фонлайна.
Результат автоформатирования не везде удовлетворительный, необходима будет ручная доводка.

Добавлена программа для подсчета строк кода CLOC (http://cloc.sourceforge.net/).
Запуск осуществляется посредством батника CountSource.bat (считает fos, h, cpp).

Препроцессор скриптов теперь нормально воспринимает директивы между знаком ‘#’ и именем которых стоят пробелы (#define == # define).
Поправлен парсинг препроцессором макросов параметры которых находятся на следующей строке (с применением обратного слеша):
#define AAA \
#(a, b) ...

73 Diff Diff cvet picture cvet Fri 12 Nov, 2010 03:12:28 +0000

Расчеты SPECIAL перемещены в нативные скрипты - fonline_tla.dll для сервера и fonline_tla_client.dll для клиента (должен быть расположен в data\scripts).
Оставшиеся используемые в движке параметры нужны в основном для корректной отрисовки интерфейса, но будут в будущем перемещены в скрипты.
Файлы нативных скриптов перемещены из папки data в папку scripts. Добавлен батник make_tla.bat для их компиляции (необходима установленная MSVS8).
Для примера использования добавлены новые методы для классов криттера (IsInjured, IsDmgArm...), предметов (IsHtHAttack, IsGunAttack...) с помощью прагмы bindfunc.
Добавлен пример связывания глобальных переменных обычных и нативных скриптов (__HitAimEyes, __HitAimHead..., эти глобальные переменные перемещены в скрипты).
Добавлены функции коллбэки (в GameOptions) для определения стоимости действия использования предмета - GetUseApCost. Для определения максимальной дистанции атаки - GetAttackDistantion. В дальнейшем подобные функции будут вытеснять использование параметров криттеров в движке. Данные функции привязываются на этапе подключения библиотеки к движку (DllMainEx).
Для работы с движком добавлены следующие данные (в GameOptions). CritterChangeParameter для корректной смены параметра криттера нужно вызвать сначало эту функцию, потом менять значение. CritterTypes - указатель на структуры CritterType, в которых хранится информация из CritterTypes.cfg.

Клиентским криттерам добавлен метод для определения его ли сейчас ход в пошаговом бою
bool CritterCl::IsTurnBasedTurn() const
В клиентских скриптах добавлена функция для определения времени до окончания хода (в миллисекундах)
uint GetTurnBasedTime()
Некоторая логика работы с пошаговым боем из движка перемещена в скрипты, см. turn_based_process main.fos.

Изменены некоторые рекомендуемые спецификации для зарезервированных функций, см. templates.fos.

Минимальное время диалога или бартера с Нпц теперь регулируется глобальными переменными __DlgTalkMinTime (теперь по-умолчанию 100 секунд) и __DlgBarterMinTime (теперь по-умолчанию 50 секунд).

Таблички состояний (скрытность, перегруз и т.п.) перемещены в скрипты, см. chosen_tabs.fos.

Расширены диапазоны для всех прототипов - карт, локаций, предметов - до 30000.

Исправлен баг с глюками отрисовки при просмотре миникарт в пип-бое.

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

Правки спешиал энкаунтера от Зергов.

6 cvet picture cvet Tue 31 Aug, 2010 18:12:39 +0000

Исходное состояние.