MOP' c df2 Wrote:Да тут тоже не будет никаких проблем. Достаточно будет в плагине указать путь к файлу настроек и вызвать функцию, причём в любой момент игры. Типа: LoadMonstersSetup "MoP_Maps/MyMonSetup.mop".
Касательно возможностей. Вот накарябал простейший рабочий пример:
include '..\WERD\header.asm'
_MapInstruction Message MyString, Type_Msg_MES, Pic_MoP, Pic_Древо_Знаний
_RightMouseClickOnAdvMap Message "Big Brother is watching you!", Type_Msg_MES, Pic_Art, ART_Глаз_Наблюдателя
_LeftMouseClickOnAdvMap .if [MyData] <> 0; если сообщение до этого не было показано DisableClick Set MyData, 0; больше не показывать Message "Уху-ху-ху! Сейчас я сделаю Дьяволов непобедимыми!", Type_Msg_MES, Pic_MoP, Pic_Бродячий_Волшебник Set MyVar, 666 SetMonParam CR_Дьявол, Здоровье, 1000000,\ CR_Дьявол, Атака, [MyVar],\ CR_Дьявол, Защита, 1000 .endif
_RightMouseClickOnAdvMap Message "Back to School...", Type_Msg_MES, Pic_Art, ART_Диплом_Магистра, Pic_MoP, Pic_Big_Книга_Мудрости_Астих_ду_Нила ret; завершить обработку кода данного триггера для данного плагина
_RightMouseClickOnAdvMap
; это сообщение не будет показано, так как триггер завершился Message "Kill` Em All!", Type_Msg_MES, Pic_Art, ART_Клинок_Армагеддона
END_CODE
; DATA
MyString db 'Hello, World', 0
SAVE_DATA:
MyData dd 1; инициализирована для первого показа сообщения
END_SAVE_DATA:
; Global Variables
Dword MyVar
Что здесь к чему.
- Любой WERD-плагин прежде всего начинается с заголовка include '..\WERD\header.asm', иначе это не плагин. Файл header.asm - это каркас DLL.
- Далее идут триггеры, обозначенные как _MapInstruction, _RightMouseClickOnAdvMap, _LeftMouseClickOnAdvMap и т. д. Если мнемоника триггера не нравится, пользователь может её переопределить в начале текста. Например, любитель ERM может написать "!?CM fix _RightMouseClickOnAdvMap" - и всё, пользоваться ради бога знакомой ему мнемоникой !?CM. При этом старая мнемоника никуда не денется.
Триггеры располагаются в произвольном порядке и могут повторяться.
- После каждого триггера идут команды. В образце представлены Message (показ сообщения), DisableClick (отключить стандартную реакцию при клике), Set (установка переменной), SetMonParam (установить параметр монстра).
- Если триггер завершить командой ret, то другие аналогичные триггеры в этом плагине не сработают.
- END_CODE - конец секции кода. Обязательная строка.
- ; DATA - вообще-то это комментарий, но он написан для указания того, что после кода идут инициализированные пользователем данные плагина - строки, таблицы, что угодно. Впрочем, как видим, строки можно пропускать в функцию и непосредственно.
- SAVE_DATA, END_SAVE_DATA - между двумя этими метками располагаются данные, которые требуется сохранить в игре для данного плагина. Если ничего не надо - можно убрать. Секция сохранения специально располагается между данными и глобальными переменными, чтобы можно было сохранить и то, и другое.
- ; Global Variables - тоже комментарий, указующий на то, что в конце плагина идут глобальные переменные.
Естественно, обработка плагина происходит после WERD, так что он может отменять вносимые ею изменения.
Любые константы тоже можно легко переопределять. Например, написать команду: ART_Глаз_Наблюдателя = EyeOfTheBeholder. Всё, ещё одно имя для артефакта-166.
Что конкретно происходит в этом плагине для игрока - наверное, уже понятно. Но на всякий случай объясню.
На старте карты видим это сообщение:
При ПКМ на карте видим эти сообщения:
При ЛКМ на карте видим всего один раз это сообщение
после чего Дьяволы получают миллион здоровья, 666 Атаки и 1000 Защиты.
Этого примера мало,напиши пожалуйсто, как средствами
"Framework (среда разработки) WERD-плагинов"
получить это:
(14.09.2016 18:54)igrik Wrote: (14.09.2016 16:41)feanor Wrote: По-моему, ему еще что-то надо будет - если его просто в окно холла вытащить, он будет некликабелен.
Да, будет некликабелен. Но нужно просто расширить 2 свитча
|