Subversion Repository Public Repository

fonline_sdk

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

Entry Size Revision Updated
critters 491 Fri 17 Apr, 2015 17:17:42 +0000
items 495 Tue 28 Apr, 2015 19:58:28 +0000

Commits for fonline_sdk/Server/proto

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, который можно использовать при работе с файлами диалогов или прототипами.
При загрузке сервера он автоматически провалидирует данные файлы на предмет их щагрузки и, если их нет, то выдаст ошибку загрузки.

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

413 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 )

375 rifleman17 picture rifleman17 Tue 12 Jun, 2012 10:02:32 +0000

Исправлен торговец в Чистилище.
Добавлен квест “Колония разумных кротокрысов” в цепочку “Лучший охотник”.
Ходсон в Арройо и Хоффи в Реддинге могут рассказать, где находится тот или иной караванщик в данный момент времени.
Охранники карванов теперь при смерти удаляются, и энкаунтеры с ними не будут висеть в памяти.
Исправлено завершение события “Авария на станции репликации”
Исправлены износ и объем бака у мотоцикла.
В тайниках, карты которых можно купить у охранников караванов в пустоши теперь встречается условно случайный лут.
Исправлены ЕМП - ракеты, их можно теперь поднимать с земли.

373 rifleman17 picture rifleman17 Wed 16 May, 2012 22:27:35 +0000

Добавлен квест “Завтрак для флоатера” в линейку “Лучший охотник”.
В Нью-Рено, возле магазина Ренеско добавлен Сальвадор, продавец плакатов. Плакаты можно вешать на стены на квестовых складах.
Добавлена возможность установки персонального репликатора в город из ГЕКК.
На карту города из ГЕКК добавлена печь для крафта хитиновой брони.
Исправлен диалог панков в квесте “Нэнси и Сид” - теперь все панки при разговоре дают опыт.
Добавлен мотоцикл (пока получить игровыми методами нельзя).
Увеличено время, в течении которого остаются сообщения на доске в Кламате.
Исправлено расписание события “Авария на репликаторе”. Исправлена ошибка с именами гулей, появляющихся во время эвента.
Призрак в Яме исключен из списков НПЦ с неуязвимостью при включении NoPvp на картах

368 rifleman17 picture rifleman17 Sun 29 Apr, 2012 21:51:14 +0000

В Модоке добавлены квестовые НПЦ Хьюз и Лоуренс (квестовая линейка “Лучший Охотник”)
Добавлены квестовые предметы для линейки “Лучший Охотник”: метательные крысы(графика Lancelot), изолента, флейта (Dagnir).
На карте Чистилища расширена зона выхода с локации и прописаны диалоги нпц за внешней стеной.
Добавлен музыкальный автомат, который можно установить на личную базу. Продавец - Элдридж в Нью-Рено.(графика: ntw, TRaider)
Для автомата добавлено несколько композиций.
Исправлена ошибка на карте интро, из-за которой персонаж мог застрять в коридоре.
Горчичные гранаты не действуют на персонажей с флагом НоПвП

365 rifleman17 picture rifleman17 Sat 21 Apr, 2012 22:00:08 +0000

Доработано игровое событие “Авария на 4ой станции репликации”.
Добавлены небоевые спутники для игроков. У профессора в Брокен-Хиллс можно купить коробку со спутником мантиссом.
Исправлен диалог между посетителями бара в пригороде ГУ. Добавлено несколько мини-диалогов между НПЦ в Яме.

363 rifleman17 picture rifleman17 Thu 19 Apr, 2012 19:22:04 +0000

Добавлены ЕМП-ракеты, рецепт крафта можно получить через квест в Наварро.
При взятии перка Терминатор, персонаж теряет резист от ЕМП повреждений.
Исправлена ошибка в квесте “Смертельные гонки” из-за которой квест невозможно было сдать.
Доработан скрипт доски сообщений в кламате. Теперь не нужно говорить текст шепотом, также можно говорить несколько фраз подряд.
Исправлен квест “Заложник”.
Добавлено игровое событие “Авария на 4ой станции репликации”.
На карте Чистилища заблокирован переход от участников к зрителям.
Исправлено событие “карта сокровищ”, теперь оно повторяется периодически, а не выполняется только один раз за сессию.
Исправлена частота генерации редких предметов у торговца на Атолле.
Исправлена ошибка в респауняшихся итемах, в результате которой они вопроизводились многократно. (thx Ярослав)
Персонажи на картах с флагом NoLogOff больше не будут получать зарплату гвардейца ГУ.

258 rifleman17 picture rifleman17 Wed 05 Oct, 2011 21:03:12 +0000

Добавлены новые предметы: дымовая шашка, граната с горчичным газом, сигнальный пистолет. (Изображения для инвентаря by xeilz)
Добавлено игровое событие “Испытание” - раз в два игровых месяца хабологи организуют командное сражение в Чистилище.(Автор карт локации Чистилище - xeilz)
Введена зависимость стоимости предметов от их износа.
Исправлена работа лексем в квесте “Эрнст Тельман”, теперь имя нужного нпц должно отображаться без проблем.

240 rifleman17 picture rifleman17 Tue 30 Aug, 2011 21:28:43 +0000

Исправление ошибки в диалоге Фарелла, из-за которой не забирался квеститем.
Магический шар теперь можно поднять с земли.
Исправлен диалог Туко в квесте “Рискованное дельце”.