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 свитча 
 
			 
			
			
			
		 |