Subversion Repository Public Repository

fonline_sdk

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

Changeset 195

Committed by cvet on Mon 04 Apr, 2011 17:06:17 +0000

Commit Message:

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

Добавлен механизм работы с графическим изображением на стороне сервера. Необходимо для удобной работы с массивами данных, которые представлены в виде картинки. На данный момент используется для определение рельефа при передвижении по глобальной карте.
Для работы с механизмом добавлены следующие функции
bool LoadImage(uint index, string@+ imageName, uint imageDepth, int pathType) - загрузка изображения;
uint GetImageColor(uint index, uint x, uint y) - определение цвета пикселя;
uint index - номер изображения, с которым идет работа, перечисления см. в Game images _defines.fos;
string@+ imageName - имя файла, формат должен быть только PNG, при null удаляется текущее изображение;
uint imageDepth - глубина создаваемого изображения, допустимые значения 4 – ARGB, 3 – RGB, 2 – GB, 1 – B, необходима для оптимизации работы с памятью, что бы не выделять память, которая не будет использоваться (узнать кол-во выделенной памяти под изображения можно во вкладке сервера Memory -> Images);
int pathType - тип путя (см. Paths в _defines.fos);
uint x, y - координаты пикселя.
Пример работы смотрите в функциях void WorldmapInit(), uint GetGlobalMapRelief(uint x, uint y) скрипта worldmap.fos.

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

Зарезервированные функции global_process, global_invite перемещены из main.fos в новый скрипт global_group.fos.
Перемещение по глобальной карте, обработка случайных встреч, открытие новых локаций и т.п. полностью перемещено в скрипты, см. global_group.fos.

Изменена спецификация зарезервированной функции global_process, и, соответственно, обработчика клиента CRITTER_EVENT_GLOBAL_PROCESS - изменены типы координат текущих, назначения и скорости с целого на вещественное.

Добавлен вызов global_process с параметром
#define GLOBAL_PROCESS_KICK (7)
что указывает на то, что лидер группы или сам игрок хочет отсоединиться от группы.

Для работы с локациями на глобальной карте добавлены следующие функции
uint GetVisibleLocations(uint16 worldX, uint16 worldY, uint radius, Critter@+ visibleBy, Location@[]@+ locations) – возвращает видимые локации в определенном радиусе, если задан параметр visibleBy, то будет так же учитываться видит ли локацию данный криттер;
uint GetZoneLocationIds(uint16 zoneX, uint16 zoneY, uint zoneRadius, uint[]@+ locationIds) – возвращает идентификаторы локаций, которые принадлежат определенным зонам.

Переименованы __GmapGroupX/Y -> __GmapGroupCurX/Y, __GmapMoveX/Y -> __GmapGroupToX/Y;
Удалены float __GmapSpeedX/Y;
Добавлен единый параметр скорости float __GmapGroupSpeed.

Из движка в скрипты перенесена глобальная переменная
uint __EncounterTime = 5000

В движке добавлена глобальная переменная, которая указывает на то как часто вызывать обработчик глобальной карты GLOBAL_PROCESS_MOVE
uint __GlobalMapMoveTime = 250

Changes