Berserker, да вроде где-то в инете почитал. Что-то мне кажется, что овчинка выделки не стоит. Проще вынести из lod'ов нужные файлы.
Я пробую запаковать изображение в lod. На входе в город, картинку которого я заменяю, игра летит. Пакую разными редакторами ресурсов (MMA, lodimport) в h3bitmap.lod WoGa, Complete Edition, Hotы – всё одно. Картинка соответствует требованиям. К чему бы игра в таком случае летит?
SyDr, а ты опиши задачу, пока что не ясна цель

Паковать нужно *.bmp, если я верно помню, он автоматически преобразуется в pcx. И через MMArchive.
По .dat файлу показать полный список опций с возможностью настройки, как из игры

Идея крута, конечно. Но довольна обширна. С учётом приоритетов модов подгрузить ers-ки, подгрузить и распарсить zsetup-s, ух ))
Что насчёт опций, которые зависят от других опций (типа "Командры должны быть наняты")? Это просто захардкожено или где-то хранится?
Прописано в коде по принципу: if (p[994]) { p[3] = 1 }
(20.04.2015 19:44)Berserker Wrote: [ -> ]Так ЕРМ же никто не отменяет. Просто его развитие бессмысленно. Слишком много костылей.
Так надо удалять костыли вместо прикручивания новых, но уровнем выше.
Дефекты заложены изначально и не подлежат исправлению. Я думал писать компилятор на PHP, много уже наработок было, часть ТЗ, ранние попытки. Но динамическое распределение индексов переменных и функций не дружит с загрузкой обновлённых скриптов (где $Hero$ после перекомпиляции уже давно не v189, а v5005). Совместимость между двумя модами обеспечивается только компиляцией обоих с одним начальным файлом свободных индексов и т.д. В общем, сплошные незатыкаемые дыры. Скрипты Lua дали бы требуемый минимум: циклы, условия, хэши, массивы, читаемые имена, совместимость скриптов. Большего не требуется. Но костыли в ряде мест остаются. Там, где ЕРМ команды привязаны к ЕРМ строкам z+.
Слишком узко мыслишь. Всё в тех же рамках ЕРМ-костылей. Проблема с совместимостью индексов? Убрать индексы. Заодно приделать читаемые имена. Не хватает циклов/условий/массивов? Добавить, и не костылём как условия сейчас. Команды привязаны к z#-строкам? Отвязать. Эти и другие решения очевидны если скриптуешь на ЕРМ и читаешь исходники Вог. Причём всё делается в рамках существующего синтаксиса.
Для меня не легко и не очевидно, уж извини.
В том предложении неспроста "если", нечего обижаться почём зря.
Berserker Wrote:Я не обижаюсь. Говорю, как есть. Исходя из опыта трудозатрат, работы над 2.55, многих часов обдумываний и отладки, считаю идею абсолютно нежизнеспособной. Но то, что для меня очень сложно, для тебя может быть вполне по силам. Фразы с обидами почти не употребляю )
Я и не говорил, что это делается легко. Придётся переписать ЕРМ, но я считаю что оно того стоит.
Code:
Func WO_UpdateAccessibility(Const $hControl = 0)
If $hControl = $MM_WO_ITEMS[$MM_WO_MAP[0][2][3]].Handle Or $hControl = 0 Then
GUICtrlSetState($MM_WO_ITEMS[$MM_WO_MAP[0][2][4]].Handle, BitAnd(GUICtrlRead($MM_WO_ITEMS[$MM_WO_MAP[0][2][3]].Handle), $GUI_CHECKED) ? $GUI_ENABLE : BitOR($GUI_DISABLE, $GUI_UNCHECKED))
EndIf
If $hControl = $MM_WO_ITEMS[$MM_WO_MAP[0][2][5]].Handle Or $hControl = 0 Then
GUICtrlSetState($MM_WO_ITEMS[$MM_WO_MAP[0][2][6]].Handle, BitAnd(GUICtrlRead($MM_WO_ITEMS[$MM_WO_MAP[0][2][5]].Handle), $GUI_CHECKED) ? $GUI_ENABLE : BitOR($GUI_DISABLE, $GUI_UNCHECKED))
EndIf
If $hControl = $MM_WO_ITEMS[$MM_WO_MAP[0][2][11]].Handle Or $hControl = 0 Then
If $hControl <> 0 Then GUICtrlSetState($MM_WO_ITEMS[$MM_WO_MAP[0][3][1]].Handle, $GUI_CHECKED)
GUICtrlSetState($MM_WO_ITEMS[$MM_WO_MAP[0][3][1]].Handle, BitAnd(GUICtrlRead($MM_WO_ITEMS[$MM_WO_MAP[0][2][11]].Handle), $GUI_CHECKED) ? $GUI_ENABLE : $GUI_DISABLE)
For $i = 2 To $MM_WO_MAP[0][3][0]
GUICtrlSetState($MM_WO_ITEMS[$MM_WO_MAP[0][3][$i]].Handle, BitAnd(GUICtrlRead($MM_WO_ITEMS[$MM_WO_MAP[0][2][11]].Handle), $GUI_CHECKED) ? $GUI_ENABLE : BitOR($GUI_DISABLE, $GUI_UNCHECKED))
Next
EndIf
If $hControl = $MM_WO_ITEMS[$MM_WO_MAP[1][0][1]].Handle Or $hControl = 0 Then
GUICtrlSetState($MM_WO_ITEMS[$MM_WO_MAP[1][0][2]].Handle, BitAnd(GUICtrlRead($MM_WO_ITEMS[$MM_WO_MAP[1][0][1]].Handle), $GUI_CHECKED) ? $GUI_ENABLE : BitOR($GUI_DISABLE, $GUI_UNCHECKED))
EndIf
If $hControl = $MM_WO_ITEMS[$MM_WO_MAP[1][1][1]].Handle Or $hControl = 0 Then
GUICtrlSetState($MM_WO_ITEMS[$MM_WO_MAP[1][1][2]].Handle, BitAnd(GUICtrlRead($MM_WO_ITEMS[$MM_WO_MAP[1][1][1]].Handle), $GUI_CHECKED) ? $GUI_ENABLE : BitOR($GUI_DISABLE, $GUI_UNCHECKED))
GUICtrlSetState($MM_WO_ITEMS[$MM_WO_MAP[1][1][3]].Handle, BitAnd(GUICtrlRead($MM_WO_ITEMS[$MM_WO_MAP[1][1][1]].Handle), $GUI_CHECKED) ? $GUI_ENABLE : BitOR($GUI_DISABLE, $GUI_UNCHECKED))
GUICtrlSetState($MM_WO_ITEMS[$MM_WO_MAP[1][1][4]].Handle, BitAnd(GUICtrlRead($MM_WO_ITEMS[$MM_WO_MAP[1][1][1]].Handle), $GUI_CHECKED) ? $GUI_ENABLE : BitOR($GUI_DISABLE, $GUI_UNCHECKED))
GUICtrlSetState($MM_WO_ITEMS[$MM_WO_MAP[1][1][5]].Handle, BitAnd(GUICtrlRead($MM_WO_ITEMS[$MM_WO_MAP[1][1][1]].Handle), $GUI_CHECKED) ? $GUI_ENABLE : BitOR($GUI_DISABLE, $GUI_UNCHECKED))
EndIf
If $hControl = $MM_WO_ITEMS[$MM_WO_MAP[1][1][3]].Handle Then GUICtrlSetState($MM_WO_ITEMS[$MM_WO_MAP[1][1][4]].Handle, $GUI_UNCHECKED)
If $hControl = $MM_WO_ITEMS[$MM_WO_MAP[1][1][4]].Handle Then GUICtrlSetState($MM_WO_ITEMS[$MM_WO_MAP[1][1][3]].Handle, $GUI_UNCHECKED)
If $hControl = $MM_WO_ITEMS[$MM_WO_MAP[1][1][6]].Handle Then GUICtrlSetState($MM_WO_ITEMS[$MM_WO_MAP[1][1][7]].Handle, GUICtrlRead($MM_WO_ITEMS[$MM_WO_MAP[1][1][6]].Handle))
If $hControl = $MM_WO_ITEMS[$MM_WO_MAP[1][1][7]].Handle Then GUICtrlSetState($MM_WO_ITEMS[$MM_WO_MAP[1][1][6]].Handle, GUICtrlRead($MM_WO_ITEMS[$MM_WO_MAP[1][1][7]].Handle))
If $hControl = $MM_WO_ITEMS[$MM_WO_MAP[2][0][7]].Handle Then
GUICtrlSetState($MM_WO_ITEMS[$MM_WO_MAP[2][0][8]].Handle, $GUI_UNCHECKED)
GUICtrlSetState($MM_WO_ITEMS[$MM_WO_MAP[2][0][9]].Handle, $GUI_UNCHECKED)
EndIf
If $hControl = $MM_WO_ITEMS[$MM_WO_MAP[2][0][8]].Handle Then
GUICtrlSetState($MM_WO_ITEMS[$MM_WO_MAP[2][0][7]].Handle, $GUI_UNCHECKED)
GUICtrlSetState($MM_WO_ITEMS[$MM_WO_MAP[2][0][9]].Handle, $GUI_UNCHECKED)
EndIf
If $hControl = $MM_WO_ITEMS[$MM_WO_MAP[2][0][9]].Handle Then
GUICtrlSetState($MM_WO_ITEMS[$MM_WO_MAP[2][0][7]].Handle, $GUI_UNCHECKED)
GUICtrlSetState($MM_WO_ITEMS[$MM_WO_MAP[2][0][8]].Handle, $GUI_UNCHECKED)
EndIf
EndFunc
О майн год! Сидр, я говорил тебе, что ты волшебник? Нет, ты архимаг!
