Обновление до версии 3.3.8
Скачать
[+] !!VR:F команда теперь может быть вызвана с 3 параметрами: !!VR(var):F(minValue)/(maxValue)/(showErrors);
Если третий параметр указан и не равен (FALSE), значения вне заданного диапазона выводятся в виде ошибки с помощью диалогового окна ERM ошибок.
[+] Реализована автоматическая статическая и динамическая проверка индексов для массивов ERM 2.0. Сообщается о недопустимых индексах и принудительно устанавливается допустимый диапазон.
Пример:
Давайте перепишем пример без ошибок:
[+] Событие DL/(OnCustomDialogEvent) теперь получает все параметры мыши/клавиатуры, доступные через !!CM и отслеживает щелчки вне основной области диалогов.
Проверьте значение CM:T или i^dlg_action^ на:
(DLG_ACTION_INDLG_CLICK)
(DLG_ACTION_OUTDLG_CLICK)
(DLG_ACTION_MOUSE_WHEEL)
(DLG_ACTION_KEY_PRESSED)
Пример:
Для (DLG_ACTION_MOUSE_WHEEL) действие CM:S или i^mouse_action^ может быть одним из:
(MOUSE_WHEEL_UP)
(MOUSE_WHEEL_DOWN)
Пример:
Нажатия клавиш в диалоге теперь можно обрабатывать с помощью Era Erm Framework:
Добавлены две глобальные переменные в Era Erm Framework:
- i^dlg_action^ со значением CM:T (тип действия). Особенно полезно для событий DL-dialog. См. константы DLG_ACTION_XXX.
- i^dlg_id^ с ID активного DL-диалога.
[-] Исправлена ошибка в Era Erm Framework: функции NewIntArray и NewStrArray игнорировали аргумент (storageType).
[-] Исправлена ошибка в Era Erm Framework: данные событий мыши/клавиатуры не восстанавливались в конце триггера.
[!] SN:Q устарел и не должен использоваться, потому что он может нарушить любую функциональность ERM-библиотеки/мода/скрипта.
В частности, использование SN:Q нарушает работу обработчиков событий Era Erm Framework, которые должны срабатывать после всех остальных.
Code:
[+] !!VR:F command can be called with 3 parameters now: !!VR(var):F(minValue)/(maxValue)/(showErrors);
If the third parameter is specified and not (FALSE), values outside specified range are reported using regular ERM error reporting dialog.
[+] Implemented automatical static and dynamical index checking for ERM 2.0 arrays. Invalid indexes are reported and forced to valid range.
Example:
!#VA(msgType[7]:y) (msgColor[7]:y);
!!re i/(PLAYER_FIRST)/(PLAYER_LAST);
!!VR(msgType[i]):S(PIC_TYPE_FLAG); Here we get error. Array size is 7, while number of game players is 8. i = 7 is outside of valid 0..6 range
!!VR(msgColor[i]):Si; Here we get error. Array size is 7, while number of game players is 8. i = 7 is outside of valid 0..6 range
!!en:;
Let's rewrite the example without bugs:
!#VA(msgType[NUM_PLAYERS]:y) (msgColor[NUM_PLAYERS]:y);
!!re i/(PLAYER_FIRST)/(PLAYER_LAST);
!!VR(msgType[i]):S(PIC_TYPE_FLAG);
!!VR(msgColor[i]):Si;
!!en:;
[+] Event DL/(OnCustomDialogEvent) now receive all mouse/keyboard parameters, accessible via !!CM and tracks clicks outside dialogs main area.
Check CM:T or i^dlg_action^ value for:
(DLG_ACTION_INDLG_CLICK)
(DLG_ACTION_OUTDLG_CLICK)
(DLG_ACTION_MOUSE_WHEEL)
(DLG_ACTION_KEY_PRESSED)
Example:
!?DL&i^dlg_action^=(DLG_ACTION_OUTDLG_CLICK);
!!IF:M^You clicked outside dialog!^;
For (DLG_ACTION_MOUSE_WHEEL) action CM:S or i^mouse_action^ can be one of:
(MOUSE_WHEEL_UP)
(MOUSE_WHEEL_DOWN)
Example:
!?DL&i^dlg_action^=(DLG_ACTION_MOUSE_WHEEL);
!!IF:M^Wheel: %i(mouse_action)^; display 1/-1 for wheel up/down
Keyboard presses in dialog can be handled now using Era Erm Framework:
!?DL&i^dlg_action^=(DLG_ACTION_KEY_PRESSED)/i^key^=(KEY_Q);
!!IF:M^Good buy any dialog!^;
!!DLi^dlg_id^:C(TRUE);
Added two global variables to Era Erm Framework:
- i^dlg_action^ with CM:T value (action type). Specially useful for DL-dialog events. See DLG_ACTION_XXX constants.
- i^dlg_id^ with active DL-dialog ID.
[-] Fixed bug in Era Erm Framework: NewIntArray and NewStrArray function were ignoring (storageType) argument.
[-] Fixed bug in Era Erm Framework: mouse/keyboard event data was not restored on trigger end.
[!] SN:Q is deprecated and shoudn't be used because it may break any ERM library/mod/script functionality.
In particular, SN:Q usage breaks Era Erm Framework work flow.