Subversion Repository Public Repository

fonline_sdk

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

Changeset 484

Committed by cvet on Mon 16 Mar, 2015 18:09:54 +0000

Commit Message:

Начата реализация новой системы свойств сущностей.
Сейчас для сущностей используются различные системы работы с их данными:
- хардкод свойства (Id, Access);
- индексированные параметры персонажей (ST_LUCK, SK_SNEAK);
- общие расшаренные поля (Item::Val0..9);
- пользовательские поля bindfield;
- локальные и уникальные переменные (LVAR_xxx, UVAR_zzz).
Новая реализация заменит все эти подходы на один унифицированный для всех сущностей - карт, локаций, предметов, персонажей.

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

Свойство (Property) будет декларироваться с помощью прагмы property
#pragma property "Class AccessType Type Name"
Class - класс сущности, пока может быть только Item;
AccessType - уровень доступа к свойству:
- Virtual - свойство виртуальное, т.е. значение вычисляется при каждом обращении к нему, нигде не хранясь физически; установка колбека на вычисление значения еще не введено;
- VirtualClient - то же, что и Virtual, но присутствует только в клиентских скриптах;
- VirtualServer - то же, что и Virtual, но присутствует только в серверных скриптах;
- Private - закрытое свойство, не передается по сети никому;
- PrivateClient - то же, что и Private, но присутствует только в клиентских скриптах;
- PrivateServer - то же, что и Private, но присутствует только в серверных скриптах;
- Public - открытое свойство, доступно для просмотра всем игрокам;
- PublicModifiable - то же, что и Public; возможно изменение значения игроком, которому принадлежит;
- Protected - защищенное свойство, доступно для просмотра только игроку, которому принадлежит;
- ProtectedModifiable - то же, что и Protected; возможно изменение значения игроком, которому принадлежит;
Type - тип свойства, пока может быть любым примитивом размером 1, 2, 4 или 8 байт (int, bool, uint64, hash и т.п.); в будущем будет добавлен string и dict;
Name - имя свойства, должно быть уникальное в рамках одной сущности; по имени происходит последующее сохранение и загрузка в сохранениях мира и клиентов;

На все свойства можно будет ставить неограниченное число колбеков, которые будут вызываться при его изменении.
Данные свойств, которые не удалось загрузить (имя было не найдено), не удаляются, а будут сохраняться и загрузятся в случае, если свойство будет восстановлено.

Удален следующий функционал из скриптов:
MapperObject::AnimStayBegin
MapperObject::AnimStayEnd
MapperObject::AnimWait
MapperObject::InfoOffset
uint Item::GetCount() const
void Item::SetCount(uint count)
void Item::Update() const
int8[]@ GetItemDataMask(int maskType)
bool SetItemDataMask(int maskType, int8[]& mask)
uint ItemCl::GetCount() const
uint Item::GetCount() const
void Item::SetCount(uint count)
void Item::Update() const
int8[]@ GetItemDataMask(int maskType)
bool SetItemDataMask(int maskType, int8[]& mask)
uint ItemCl::GetCount() const

Количество теперь меняется изменением свой свойства Count.
Так же нет необходимости вызывать Update на предмете, свойства синхронизируются атвоматически.
Маска данных теперь не устанавливается в рамках новой системы.

Changes

Modified /Client/FOnline Diff

Modified /Client/FOnline.exe Diff

Modified /Client/FOnline.pdb Diff

Modified /Server/FOnlineServer Diff

Modified /Server/FOnlineServer.exe Diff

Modified /Server/FOnlineServer.pdb Diff

Modified /Server/FOnlineServerDaemon Diff

Modified /Server/maps/broken.fomap Diff

Modified /Server/maps/e_city2.fomap Diff

Modified /Server/maps/sf_emp.fomap Diff

Modified /Server/maps/sf_hubb.fomap Diff

Modified /Server/maps/v15_level1.fomap Diff

Modified /Server/maps/v15_level2.fomap Diff

Modified /Server/maps/v15_level3.fomap Diff

Modified /Server/scripts/_defines.fos Diff

Modified /Server/scripts/_macros.fos Diff

Modified /Server/scripts/base.fos Diff

Modified /Server/scripts/behemoth.fos Diff

Modified /Server/scripts/broken_common.fos Diff

Modified /Server/scripts/car.fos Diff

Modified /Server/scripts/caravan_h.fos Diff

Modified /Server/scripts/casino.fos Diff

Modified /Server/scripts/client_main.fos Diff

Modified /Server/scripts/combat.fos Diff

Modified /Server/scripts/debug.fos Diff

Modified /Server/scripts/den_poorman.fos Diff

Modified /Server/scripts/dialog.fos Diff

Modified /Server/scripts/explode.fos Diff

Modified /Server/scripts/fix_boy.fos Diff

Modified /Server/scripts/fonline.h Diff

Modified /Server/scripts/fonline_test.dll Diff

Modified /Server/scripts/fonline_test.so Diff

Modified /Server/scripts/fonline_test_client.dll Diff

Modified /Server/scripts/fonline_test_client.so Diff

Modified /Server/scripts/fonline_tla.dll Diff

Modified /Server/scripts/fonline_tla.so Diff

Modified /Server/scripts/fonline_tla_client.dll Diff

Modified /Server/scripts/fonline_tla_client.so Diff

Modified /Server/scripts/game_event_caches.fos Diff

Modified /Server/scripts/game_event_replicator.fos Diff

Modified /Server/scripts/game_event_storehouse.fos Diff

Modified /Server/scripts/geiger.fos Diff

Modified /Server/scripts/globalmap_group.fos Diff

Modified /Server/scripts/item.fos Diff

Modified /Server/scripts/jukebox.fos Diff

Modified /Server/scripts/main.fos Diff

Modified /Server/scripts/map_geck_city.fos Diff

Modified /Server/scripts/mapper_patcher.fos Diff

Modified /Server/scripts/navarro.fos Diff

Modified /Server/scripts/ncr_common.fos Diff

Modified /Server/scripts/ncr_invasion.fos Diff

Modified /Server/scripts/ncr_postman.fos Diff

Modified /Server/scripts/ncr_ratch.fos Diff

Modified /Server/scripts/ncr_shaiman.fos Diff

Modified /Server/scripts/ncr_siege.fos Diff

Modified /Server/scripts/nr_t-ray.fos Diff

Modified /Server/scripts/pattern_common.fos Diff

Modified /Server/scripts/pet.fos Diff

Modified /Server/scripts/poster.fos Diff

Modified /Server/scripts/q_dappo_lost_c_robot.fos Diff

Modified /Server/scripts/q_hunter.fos Diff

Modified /Server/scripts/q_item_v13_collar.fos Diff

Modified /Server/scripts/q_item_v13_egg.fos Diff

Modified /Server/scripts/q_ncr_alex_holo.fos Diff

Modified /Server/scripts/q_npc_v13_dclaw.fos Diff

Modified /Server/scripts/q_silo.fos Diff

Modified /Server/scripts/q_slavers_hunt.fos Diff

Modified /Server/scripts/quest_warehouse.fos Diff

Modified /Server/scripts/radio.fos Diff

Modified /Server/scripts/repair.fos Diff

Modified /Server/scripts/repairer.fos Diff

Modified /Server/scripts/replication_trader.fos Diff

Modified /Server/scripts/respawn_item.fos Diff

Modified /Server/scripts/sandbag.fos Diff

Modified /Server/scripts/se_android.fos Diff

Modified /Server/scripts/se_kotw.fos Diff

Modified /Server/scripts/se_teleport.fos Diff

Modified /Server/scripts/sf_common.fos Diff

Modified /Server/scripts/sf_invasion.fos Diff

Modified /Server/scripts/signal_rocket.fos Diff

Modified /Server/scripts/test.fos Diff

Modified /Server/scripts/trap.fos Diff

Modified /Server/scripts/v13_0_guard.fos Diff

Modified /Server/scripts/v13_goris.fos Diff

Modified /Server/scripts/vcity_common.fos Diff

Modified /Server/scripts/wanted.fos Diff

Modified /Tools/ASCompiler/ASCompiler Diff

Modified /Tools/ASCompiler/ASCompiler.exe Diff

Modified /Tools/ASCompiler/ASCompiler.pdb Diff

Modified /Tools/Mapper/Mapper Diff

Modified /Tools/Mapper/Mapper.exe Diff

Modified /Tools/Mapper/Mapper.pdb Diff