Subversion Repository Public Repository

fonline_sdk

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

Changeset 472

Committed by cvet on Tue 27 Jan, 2015 20:51:51 +0000

Commit Message:

С данной ревизии в сервере устранена критическая уязвимость, которая позволяла злоумышленнику влиять на свои параметры при регистрации персонажа.
Ошибка заключалась в том, что при разрешении пересылки параметров при регистрации (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.

Changes

Added /Client/data/art/intrface/cursor_attack.png

Added /Client/data/art/intrface/cursor_default.png

Added /Client/data/art/intrface/cursor_hand.png

Added /Client/data/art/intrface/cursor_move_screen_d.png

Added /Client/data/art/intrface/cursor_move_screen_dl.png

Added /Client/data/art/intrface/cursor_move_screen_dr.png

Added /Client/data/art/intrface/cursor_move_screen_l.png

Added /Client/data/art/intrface/cursor_move_screen_r.png

Added /Client/data/art/intrface/cursor_move_screen_u.png

Added /Client/data/art/intrface/cursor_move_screen_ul.png

Added /Client/data/art/intrface/cursor_move_screen_ur.png

Added /Client/data/art/intrface/cursor_use_item.png

Added /Client/data/art/intrface/cursor_use_skill.png

Added /Client/data/art/intrface/cursor_wait.png

Added /Client/data/art/intrface/dummy.png

Added /Client/data/art/intrface/inv_close_dn.png

Added /Client/data/art/intrface/inv_scr_dn_disabled.png

Added /Client/data/art/intrface/inv_scr_dn_normal.png

Added /Client/data/art/intrface/inv_scr_dn_pressed.png

Added /Client/data/art/intrface/inv_scr_up_disabled.png

Added /Client/data/art/intrface/inv_scr_up_normal.png

Added /Client/data/art/intrface/inv_scr_up_pressed.png

Added /Client/data/art/intrface/inventory.png

Modified /Client/FOnline.exe Diff

Modified /Client/FOnline.pdb Diff

Modified /Server/FOnlineServer.exe Diff

Modified /Server/FOnlineServer.pdb Diff

Modified /Server/scripts/_client_defines.fos Diff

Modified /Server/scripts/_defines.fos Diff

Modified /Server/scripts/client_main.fos Diff

Modified /Server/scripts/config.fos Diff

Modified /Server/scripts/fonline.h Diff

Modified /Server/scripts/fonline_test.dll Diff

Modified /Server/scripts/fonline_test_client.dll Diff

Modified /Server/scripts/fonline_tla.dll Diff

Modified /Server/scripts/fonline_tla_client.dll Diff

Modified /Server/scripts/gui.fos Diff

Modified /Server/scripts/gui_h.fos Diff

Modified /Server/scripts/gui_screens.fos Diff

Modified /Server/scripts/parameters.fos Diff

Modified /Server/scripts/scripts.cfg Diff

Modified /Server/scripts/sprite.fos Diff

Modified /Tools/ASCompiler/ASCompiler.exe Diff

Modified /Tools/InterfaceEditor/InterfaceEditor.exe Diff

Modified /Tools/InterfaceEditor/gui/default/Game.fogui Diff

Modified /Tools/InterfaceEditor/gui/default/Options.fogui Diff

Modified /Tools/InterfaceEditor/gui/default/Registration.fogui Diff

Modified /Tools/InterfaceEditor/gui/default.foguischeme Diff