Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Tales of Enroth[N/A yet, как всегда]
DF2 :: ФОРУМЫ > Игровые форумы > Heroes of Might & Magic III > Моды
Страницы: 1, 2, 3, 4, 5, 6, 7, 8
feanor
Слив - это кусок унитаза.
gamecreator
ну так не надо делать ТоЕ куском унитаза
Etoprostoya
Разве что, золотого, на который садясь, думаешь, а не поцарапаешь ли его своей пятой точкой, не попортишь ли его пробу... Что-то я не о том. smile.gif
feanor
Я вот тут подумал..собираться приводить все в нормальный вид я буду явно до второго прихода, так что перевыкладываю:

18 новых артефактов. Действительно новых, с номерами с 171ого по примерно 195ый.



Молот окончательного приговора. +3 к атаке, +1 к колдунству
Щит затмения. +3 к защите, +1 к знанию
Шлем падшего паладина. +3 к знанию, +1 к атаке.
Броня наездника на драконах. +3 к магии, +1 к защите

Арфа кленового короля. Колдует в начале боя одно из следующих заклинаний: Точность, Удача, Радость, Благословление
Праща полурослика. Колдует в начале боя заклинание "Убийца драконов"
Древний амулет. Дает шанс (среднее арифметическое от силы магии и знаний * 1%), что заклинание будет скастовано без затрат маны и пропуска магического хода.
Кольцо синтеза стихий. Позволяет призывать улучшенных элементалей

Знак неудач - -2 к морали даже из рюкзака
Подкова адского коня - -2 к удаче даже из рюкзака
Лампа истинного света - +2 к морали из рюкзака
Зелье зеленых фей - +2 к удаче из рюкзака

Ящик боеприпасов. +12 снарядов
Кодекс войны. +1 к атаке, защите и урону. Глючен и неадекватен.
Куб отсечения. Сбрасывает параметры всех юнитов до стандартных. Этакая Сфера Запрещения для мага
Плащ короля воров. Гильдии воров в таверне города, где находится герой, показывают полную информацию.
Кольцо провидца. Герой всегда находится под заклинанием "Видение"

----не имеют графики на карте и не генерятся----
Солдатский нож. +1 к атаке, носится в слоте щита
Серп друидов. +2 к атаке, носится в слоте щита
Призрачный кинжал. +3 к атаке..
Священный клинок. +4 к атаке.

---не имеют нихрена, но свойства вроде встроены---
Кристаллы памяти "Альфа", "Бета"... +8 к одному из первичных параметров.
Скафандр. Аналог тапочек для хождения по воде.

Скачать бесплатно без смс новые артефакты:
http://df2.ucoz.ru/2011/07/17/315056521-1310891718.rar

Известные баги:
Пояснения к артефактам на удачу и мораль в окне героя и юнита кривые
За поведение кодекса войны не ручаюсь.
Графика знака неудач на карте кривая
Альфа.длл не под хайрез.
Новые арты не прописаны в ZAOBJTS.TXT, ZEOBJTS.TXT & ZOBJCTS.TXT. Генерироваться на рандомке им это не мешает, а вот с выбрасыванием их на карту аккуратно.
Etoprostoya
alpha.dll под хайрез, если что. Надеюсь, не глючит.
http://df2.ucoz.ru/2011/08/16/1347584157-1313523546.rar
feanor
Сорцы и обновленная графика будут завтра к сентябрю when it will be done когда Хота выйдет не будут, короче.
tolich
Я так и знал, что с 171ого по примерно 195ый не 18 артефактов, а 26.
feanor
И что в списке приведено 16, если считать полностью сделанные, и 25, если считать только со свойствами.
А вы думали, почему я так долго - тяжело кодить, если не умеешь даже считать.

Вообще - как-то так:

Код
#define ARTIFACT_INQ_HAMMER        171
#define ARTIFACT_INQ_SHIELD        172
#define ARTIFACT_INQ_HELMET        173
#define ARTIFACT_INQ_ARMOR         174

#define ARTIFACT_BARD_HARP        175

#define ARTIFACT_AMMO_BOX        176

#define ARTIFACT_SLAYER_SWING    177

#define ARTIFACT_ELEM_FUSION    178
#define ARTIFACT_ELEM_CONJUR    -1



#define ARTIFACT_FIZBIN_MISFORT    179
#define ARTIFACT_CURSD_HRSESHOE    180
#define ARTIFACT_HOLY_LANTERN    181
#define ARTIFACT_FAIRY_ABSENT    182

#define ARTIFACT_SEAMAN_LOGBOOK    183
#define ARTIFACT_RUNE_AMULET    184

#define ARTIFACT_CUBE_OF_NEGAT    185

#define ARTIFACT_ROGUE_CLOAK    186
#define ARTIFACT_ROGUE_RING        187

#define ARTIFACT_WANDOFFIRE        188

#define ARTIFACT_DAGGER1        190
#define ARTIFACT_DAGGER2        191
#define ARTIFACT_DAGGER3        192
#define ARTIFACT_HOLYDAGGER        193

#define ARTIFACT_MEMORYCRYSTALA    196
#define ARTIFACT_MEMORYCRYSTALB    197
#define ARTIFACT_MEMORYCRYSTALC    198
#define ARTIFACT_MEMORYCRYSTALD    199

#define ARTIFACT_WETSUIT        200
#define ARTIFACT_BLASTER        201
tolich
помогу считать:

171,172,173,174 - 4
175,176,177,178 - 4
179,180,181,182 - 4
183,184,185,186,187,188 - 6
190,191,192,193 - 4
196,197,198,199 - 4
200,201 - 2

4+4+4+6+4+4+2=28 (и ты не упомянул бластер и ванд-ов-файер)
feanor
Цитата
и ты не упомянул бластер и ванд-ов-файер

первого нет ни в коде, ни в выложенных дефах
от второго есть только графика и я его не учитываю.
dik X.B.
Вопрос - мог emerald.dll вырубить огненное дыхание у лазуриков, а также вырубить все банки существ?

CODE
Time Stamp: Tue Mar 20 17:04:27 2012


Map Saved with: 3 . 59
Built on Dec 12 2005

WoG Version: 3 . 59
Built on Dec 12 2005

******************************_Exception_(trace_details)_***********************
*******
### Location: 1 : 82
### Location: 8 : 28
### Location: 8 : 28
### Location: 8 : 28
### Location: 1 : 82
### Location: 1 : 82
### Location: 1 : 82
### Location: 1 : 82
### Location: 8 : 28
### Location: 8 : 28
### Location: 8 : 28
### Location: 8 : 28
### Location: 8 : 28
### Location: 1 : 82
### Location: 8 : 28
### Location: 6 : 40
### Location: 6 : 54
### Location: 6 : 52
### Location: 1 : 66
### Location: 1 : 58
### Location: 1 : 50
### Location: 1 : 688
***** Context (100 chars) *****
; [do function 7010 for luck - attacker]
!!DO7010/21/41/1&v7056=3:P2;
***********************
### Location: 1 : 59
### Location: 1 : 58
### Location: 1 : 50
### Location: 1 : 554
***** Context (100 chars) *****
; [call function 7011 if attacking unit has luck]
!!FU7011&x1=1/y5=v7035:Px16/y6;
***********************
### Location: 1 : 59
### Location: 1 : 58
### Location: 1 : 50
### Location: 6 : 5278
***** Context (100 chars) *****
; [cast Fortune : 100 rounds]


** end of function

** function to iterate t
***********************
### Location: 4 : 165

EIP = {0x00472A02}, Access Violation. Attempt to {read} the inaccessible data at {0x00000070}

The Latest Executed ERM Receiver:

BMx1:C51/x2/0/100/1; [cast Fortune : 100 rounds]


** end of function

** f

Register Context:


EAX = 0x00000000
EBX = 0x00000000
ECX = 0x00000000
EDX = 0x046A1BA8
ESI = 0x00000000
EDI = 0x04642BAC
EBP = 0x002251E0
ESP = 0x002251BC

Stack Frame:

0x002251BC : 0x00000000
0x002251C0 : 0x0463CC50
0x002251C4 : 0x00619BDA
0x002251C8 : 0x00000009
0x002251CC : 0x04421F08
0x002251D0 : 0x0257FF00
0x002251D4 : 0x00225348
0x002251D8 : 0x0062A784
0x002251DC : 0xFFFFFFFF
0x002251E0 : 0x00225354
0x002251E4 : 0x005A954C
0x002251E8 : 0x0957FF31
0x002251EC : 0x00000001
0x002251F0 : 0x00000000
0x002251F4 : 0x00003D04
0x002251F8 : 0x0957FF01
0x002251FC : 0x00000012
0x00225200 : 0x0000001F
0x00225204 : 0x000007BD
0x00225208 : 0x00225164
0x0022520C : 0x00000000
0x00225210 : 0x00225314
0x00225214 : 0x7C90E900
0x00225218 : 0x0038001C
0x0022521C : 0x00000002
0x00225220 : 0x00000F70
0x00225224 : 0x00000EAC
0x00225228 : 0x000206AF
0x0022522C : 0x00000000
0x00225230 : 0x00000000
0x00225234 : 0x00010001
0x00225238 : 0x00000000
0x0022523C : 0x0BF29C98
0x00225240 : 0x00000135
0x00225244 : 0x00000F70
0x00225248 : 0x00000398
0x0022524C : 0x006880C8
0x00225250 : 0x006880C8
0x00225254 : 0x0463CC50
0x00225258 : 0x0C6D12A8
0x0022525C : 0x00000000
0x00225260 : 0x00000000
0x00225264 : 0x00000000
0x00225268 : 0x00000000
0x0022526C : 0x00000000
0x00225270 : 0x00000024
0x00225274 : 0x0069E560
0x00225278 : 0xFDFFFFFF
0x0022527C : 0x0BF31854
0x00225280 : 0x0BEDCE18
0x00225284 : 0x00000000
0x00225288 : 0x00000201
0x0022528C : 0x00000074
0x00225290 : 0x002252E4
0x00225294 : 0x00000005
0x00225298 : 0x00000001
0x0022529C : 0x0BEDE7C0
0x002252A0 : 0x21003C25
0x002252A4 : 0x0BEDCE10
0x002252A8 : 0x0BF2DABC
0x002252AC : 0x00000000
0x002252B0 : 0x00000000
0x002252B4 : 0x0BEDCE10
0x002252B8 : 0x00001008
0x002252BC : 0x0BEDCE18
0x002252C0 : 0x7C802440
0x002252C4 : 0x04420178
0x002252C8 : 0x00001008
0x002252CC : 0x00004E91
0x002252D0 : 0x00000001
0x002252D4 : 0x00000008
0x002252D8 : 0x0BEDCE18
0x002252DC : 0x00225408
0x002252E0 : 0x00000010
0x002252E4 : 0x0061B8D5
0x002252E8 : 0x006AB800
0x002252EC : 0x00225350
0x002252F0 : 0x0061AA37
0x002252F4 : 0x00000009
0x002252F8 : 0x04421F08
0x002252FC : 0x00000009
0x00225300 : 0x00000001
0x00225304 : 0x04642BAC
0x00225308 : 0x0061A9F7
0x0022530C : 0x00000008
0x00225310 : 0x0061749D
0x00225314 : 0x00225350
0x00225318 : 0x00444F78
0x0022531C : 0x0BEDD618
0x00225320 : 0x0957CB44
0x00225324 : 0x04642B04
0x00225328 : 0x00000000
0x0022532C : 0x00000000
0x00225330 : 0x00000000
0x00225334 : 0x0463CC50
0x00225338 : 0x0BEDD600
0x0022533C : 0x00000000
0x00225340 : 0x00000000
0x00225344 : 0x00000000
0x00225348 : 0x00225408
0x0022534C : 0x00634482
0x00225350 : 0xFFFFFFFF
0x00225354 : 0x00225414
0x00225358 : 0x005A13B4
0x0022535C : 0x00000001
0x00225360 : 0x00000033
0x00225364 : 0x04642BAC
0x00225368 : 0x00000000
0x0022536C : 0x000001FF
0x00225370 : 0x0463CC50
0x00225374 : 0x00000000
0x00225378 : 0x00000000
0x0022537C : 0x00000000
0x00225380 : 0x00000000
0x00225384 : 0x00000000
0x00225388 : 0x00000000
0x0022538C : 0x00000000
0x00225390 : 0x00000000
0x00225394 : 0x00000000
0x00225398 : 0x000001FF
0x0022539C : 0x002253C4
0x002253A0 : 0x002253B4
0x002253A4 : 0x0463CC50
0x002253A8 : 0x0022549C
0x002253AC : 0x00000000
0x002253B0 : 0x00000000
0x002253B4 : 0x00000000
0x002253B8 : 0x000001FF
0x002253BC : 0x0463CC50
0x002253C0 : 0x0000001F
0x002253C4 : 0x002253F4
0x002253C8 : 0x00741885
0x002253CC : 0x00000000
0x002253D0 : 0x00000000
0x002253D4 : 0x00000000
0x002253D8 : 0x046EE3E6
0x002253DC : 0x00225404
0x002253E0 : 0x002253F4
0x002253E4 : 0x00000100
0x002253E8 : 0x0022549C
0x002253EC : 0x00000001
0x002253F0 : 0x0022571C
0x002253F4 : 0x00000000
0x002253F8 : 0x000001FF
0x002253FC : 0x028AAF00
0x00225400 : 0x00000000
0x00225404 : 0x007BEDD8
0x00225408 : 0x00228BD0
0x0022540C : 0x00634281
0x00225410 : 0xFFFFFFFF
0x00225414 : 0x00225440
0x00225418 : 0x00715868
0x0022541C : 0x00000033
0x00225420 : 0x0000005A
0x00225424 : 0x00000001
0x00225428 : 0xFFFFFFFF
0x0022542C : 0x00000126
0x00225430 : 0x00000064
0x00225434 : 0x00000000
0x00225438 : 0x000001FF
0x0022543C : 0x0463CC50
0x00225440 : 0x002254B4
0x00225444 : 0x0075F5AB
0x00225448 : 0x00000033
0x0022544C : 0x00000001
0x00225450 : 0x0000005A
0x00225454 : 0x00000064
0x00225458 : 0x00000000
0x0022545C : 0x00000000
0x00225460 : 0x000001FF
0x00225464 : 0x0463CC50
0x00225468 : 0x00225490
0x0022546C : 0x00225480
0x00225470 : 0x00000002
0x00225474 : 0x0022571C
0x00225478 : 0x0463CC50
0x0022547C : 0x0000005A
0x00225480 : 0x00000001
0x00225484 : 0x00000000
0x00225488 : 0x00000064
0x0022548C : 0x00000002
0x00225490 : 0x00000033
0x00225494 : 0x0073FDAB
0x00225498 : 0x00000000
0x0022549C : 0x00000001
0x002254A0 : 0x00000002
0x002254A4 : 0x04642BAC
0x002254A8 : 0x00000002
0x002254AC : 0x04642BAC
0x002254B0 : 0x0073FDD7
0x002254B4 : 0x00225A1C
0x002254B8 : 0x00749416
0x002254BC : 0x00225743
0x002254C0 : 0x00000005
0x002254C4 : 0x01484920
0x002254C8 : 0x0022571C
0x002254CC : 0x00000000
0x002254D0 : 0x000001FF
0x002254D4 : 0x0463CC50
0x002254D8 : 0x00000000
0x002254DC : 0x00000000
0x002254E0 : 0x00000000
0x002254E4 : 0x00000000
0x002254E8 : 0x00000000
0x002254EC : 0x00000000
0x002254F0 : 0x00000000
0x002254F4 : 0x00004D42
0x002254F8 : 0x00000000
0x002254FC : 0x00000000
0x00225500 : 0x00000000
0x00225504 : 0x00000000
0x00225508 : 0x00000000
0x0022550C : 0x00000000
0x00225510 : 0x00000000
0x00225514 : 0x00000000
0x00225518 : 0x00000000
0x0022551C : 0x00000000
0x00225520 : 0x00000000
0x00225524 : 0x00000000
0x00225528 : 0x00000000
0x0022552C : 0x00000000
0x00225530 : 0x00000000
0x00225534 : 0x00000000
0x00225538 : 0x00000000
0x0022553C : 0x00000000
0x00225540 : 0x00000000
0x00225544 : 0x00000000
0x00225548 : 0x00000000
0x0022554C : 0x00000000
0x00225550 : 0x00000000
0x00225554 : 0x00000000
0x00225558 : 0x00000000
0x0022555C : 0x00000000
0x00225560 : 0x00000000
0x00225564 : 0x00000000
0x00225568 : 0x00000000
0x0022556C : 0x00000000
0x00225570 : 0x00000000
0x00225574 : 0x00000000
0x00225578 : 0x00000000
0x0022557C : 0x00000000
0x00225580 : 0x00000000
0x00225584 : 0x00000000
0x00225588 : 0x00000000
0x0022558C : 0x00000000
0x00225590 : 0x00000000
0x00225594 : 0xE2EEF0D3
0x00225598 : 0x20FCEDE5
0x0022559C : 0x20202036
0x002255A0 : 0xF0EECA28


SEND THIS DUMP OR FILE "WOGCRASHLOG.TXT" (ZIPPED) TO {H3NL@NAROD.RU}


После этого сообщения вылет. Работает только утопия драконов (включен скрипт 53 - темница хозяина драконов).
feanor
За лазуриков не скажу, но вряд ли.
Банки существ у меня работают.

Без длл-ки то нормально?
dik X.B.
Цитата(feanor @ 21 Mar 2012, 14:15) *
За лазуриков не скажу, но вряд ли.
Банки существ у меня работают.

Без длл-ки то нормально?


Да, без нее все работает. Эти два косяка у меня впервые, хотя emerald.dll пользуюсь давно.
feanor
Цитата
Мне (да, я несносен в этом плане) было бы отдельно любопытно узнать насчет гипотетических сюжета-кампаний.

Кстати, планировалась карта-туториал.

Некий купец, плывя на ярмарку Середины Года, терпит кораблекрушение у городка средней провинциальности. Починить корабль за обозримое время ему не светит, но и возвращаться с пустыми руками ему не комильфо..
Цель - заработать сколько-то там денег. Пути достижения - спекуляция артефактами, рэкет, бодяженье зелий, эксплуатация студентов (середина лета - это еще и сессии), наркобизнес (корни мандрагоры и цветы папоротника), контрабанда. С азартными играми и проституцией не получилось по техническим причинам.
dik X.B.
Планировалась?
feanor
Ну, она нарисована, но не заскриптована.
XEL
Вопрос: а почему было выбрано название emerald? От балды или в честь чего-то?
feanor
Цитата
Случилось так, что каменщики дома Финвэ, добывая в горах камень (ибо более всего любили строить высокие башни), впервые нашли самоцветы — и добыли их бессчетное множество; и они изобрели инструменты, чтобы обрабатывать их, придавая неповторимые формы. Они не копили камни, но щедро дарили, и трудами их богател Валинор.


emerald, sapphire, amethyst. ruby, citrine, diamond
dik X.B.
emerald, sapphire, amethyst будут интегрированы под эру 2?

Цитата(feanor @ 06 May 2012, 18:43) *
Ну, она нарисована, но не заскриптована.

А будет? smile.gif
feanor
Цитата
emerald, sapphire, amethyst будут интегрированы под эру 2?

emerald я сегодня полдня переписывал под эру и бараторчевский патчер.
Berserker
Хорошие новости это ) Только без юникода, если можно, у меня с ним нелюбовь.
Etoprostoya
До сих пор не знаю, что даёт патчер бараторча и какие новые фичи даёт Эра 2, чтобы задумываться о переписывании кода под неё. rolleyes.gif
feanor
Цитата
Хорошие новости это ) Только без юникода, если можно, у меня с ним нелюбовь.

Пока вообще ничего из файлов не читается.
Опять проблема, как бы этичнее хранить данные sad.gif

Цитата
До сих пор не знаю, что даёт патчер бараторча

Годный интерфейс для хуков, позволяющий обходиться без асма.

Цитата
и какие новые фичи даёт Эра 2, чтобы задумываться о переписывании кода под неё.

Ивенты, исполнение ERM, сохранение данных в сейвах.
Berserker
По части Эры 2 это прежде всего система модов, с Эры 2.2 (ещё не вышла) перенаправление адресов (UN:C автоматом, остальные вызывают: RedirectMemoryBlock, GetRealAddr), динамическое перенаправление ресурсов ('a.pcx' =>'zz.pcx', 'ccgorgn.def' => 'myunit.def'), автоматическая подгрузка ЕРМ скриптов и вообще всех ресурсов, исправления для сетевой игры, полная переносимость (нет привязки к реестру, настройки в ini) и множество других приятных и не очень плюшек.

По части Аметиста у меня две заметки:
-) Ansi-функции
-) С Эры 2.2 RedirectMemoryBlock на массив монстров с тем, чтобы другие модули могли напрямую к ним обращаться, а UN:C по старым адресам работать.

Касаемо формата, сейчас решаю, какой выбрать для Yona (ini неудобен) и склоняюсь к предложению IvanSav/Warmonger по поводу JSON.
feanor
Черт, как же не хватает общего открытого хранилища исходников..

Цитата
-) Ansi-функции

Ну вот заменил FindFirstFile на FindFirstFileA
А чтение файлов и так вроде не юникодовое было.

http://zalil.ru/33201404
Berserker
Спасибо. Город Ковенантов заработал полностью как мод.
feanor
Чччерт, я невольно поспособствовал вселенскому злу..
Etoprostoya
Ничего, зло на Эре 2 легко отправляется в корзину и без последствий.

Разве что кроме воспоминаний smile.gif
Berserker
А мне понравились монстры и их атаки в бою с озвучкой.
feanor
Из планируемого функционала:

- расширение таблиц (основной артефактной, сообщений при поднятии, бонусов к первичным навыкам, бонусов-заклинаний). Сделано.
- возможность введения новых категорий артефактов (дополнительно к treasure-minor-major-special). Сделано.
- возможность введения новых типов слотов (только правая кисть, обе руки и т.д). Включить функционал 6th_slot. Не сделано.
- по-человечески сделать генератор рандомных артефактов. В процессе. Работает, правда.
- обрабатывать как книгу заклинаний любой артефакт, находящийся в соответствующем слоте. Сделано. Как дополнение - возможность копировать некоторые свойства других артефактов.
- унифицировать обработку боевых машин, ввести тип артефактов warfare. Не сделано.
- выставить события на ряд наиболее часто встречающихся функций. Не сделано, возможно, будет в отдельной длл.

Результаты на сейчас:
http://zalil.ru/33203190 - сорцы
http://zalil.ru/33203198 - /Mods
feanor
Конфиги, типа.

http://zalil.ru/33245366 - сорцы
http://zalil.ru/33245397 - файло




--------------------
Слава Путину! Слава Руси! 16/20!
feanor
З.Ы. Заодно и баги поползли.

- Проверка на книжки врет
- GivesSpell, падла, где-то таки успевает обнулиться. Видимо, надо все-таки по-людски делать.
feanor
Кстати, Эра только пути вида \Data\artifacts перехватывает? А то \artifacts не поймало.

Цитата
Цитата

Случилось так, что каменщики дома Финвэ, добывая в горах камень (ибо более всего любили строить высокие башни), впервые нашли самоцветы — и добыли их бессчетное множество; и они изобрели инструменты, чтобы обрабатывать их, придавая неповторимые формы. Они не копили камни, но щедро дарили, и трудами их богател Валинор.

Кстате, на НС уже имена камней резервируют, ня.
Айа нолдор!
Berserker
Как GetFullPathNameA раскрывает, так и есть. Правильно либо .\artifacts, либо просто artifacts видимо.
feanor
Ну, "data\\artifacts\\%u.cfg" - работало, а "artifacts\\%u.cfg" - нет. Ну фиг с ним.
Berserker
Тоже работает. А как думаешь код остальных плагинов и Эры самой писан? На относительный путях и писан.
feanor
Тадам! вылечил книжки. Не забывайте о #pragma pack.
Теперь книгой считается любой артефакт типа 'B' (0x40), пусть даже и не в слоте книги, и сама книга заклинаний (независимо от её типа).

Исправил и выдачу магии артефактам.
______________
В очередной раз пытался начать думать о каком-либо svn, не понравилось - коммьюнити, подумайте за меня, пожаааалста?
Berserker
В текущей модели работы с дефами (единый artifacts.def) предполагается наличие только одного мода, централизованно добавляющего артефакты. Это значит, что заводить по конфигурационному файлу на каждый номер бессмысленно, как и придумывать новые форматы. В разы проще и, на мой взгляд, правильнее будет читать из одного ini по разделам:

[номер артефакта]
Параметр=Значение
...

В частности, API для этого уже есть:

Код
bool  __stdcall ReadStrFromIni
(
  char* Key,
  char* SectionName,
  char* FilePath,
  char* Res
);


Скорость работы на высоте - загрузка и анализ файла при первом вызове, работа с ассоциативным массивом при последующих.
feanor
Сегодняшние сорцы, с правленной книгой и свиточностью:
http://zalil.ru/33264654


Цитата
В текущей модели работы с дефами (единый artifacts.def) предполагается наличие только одного мода, централизованно добавляющего артефакты.

Не, альфадлл наше все.


Цитата
В разы проще и, на мой взгляд, правильнее будет читать из одного ini по разделам:

Вот я еще табличные данные в линейный список не разворачивал >_<
Berserker
В таком случае всё равно неверно выходит. Поскольку у тебя привязка к номерам и кадрам. Посмотри, как сделана поддержка новых кнопок. Независимые, автоматически подгружаемые *.btn с уникальными именами для кнопок, а не номерами. Всё остальное делает движок, в том числе и присваивание номеров. А в текущем варианте аметиста/изумруда нужно точно знать номер, номера должны быть последовательными и совпадать с кадрами в дефе или чёрной магией альфа-плагина, который по причине прожорливости и текучести используют только в лабораториях.
feanor
Номера таки не обязаны быть последовательными - ничего не мешает пустить после 171ого арта 186ой, скипанув номера 172-185.

Скрывать номера за именами смысла не вижу: если арт чуть сложнее чем '+1 к атаке' - все равно понадобится привязка в коде. Не, её можно тоже заменить привязкой к именам - if(stolenart==GetArtName("toe_inqhammer")) вместо if(stolenart==ARTID_INQHAMMER) - но я не уверен, что это будет оправдано.

А artifact.def таки придется разбирать, даsad.gif
Sav
Цитата(Berserker)
Независимые, автоматически подгружаемые *.btn с уникальными именами для кнопок, а не номерами. Всё остальное делает движок, в том числе и присваивание номеров.

Ну так кнопки не лежат на карте. smile.gif
На самом деле, если номера будут определяться динамически, то надо кардинально переделывать принцип хранения, сохранения и загрузки типов артефактов из карт и сохранений, т. к. просто номер сегодня может принадлежать одному артефакту, а завтра - другому.
Berserker
В рамках фиксированной группы модов не нужно (выделяться будут в таком же порядке). Только с другим набором сохранение не загрузишь. Тут ты прав, увы.
feanor
Так, вопрос по интерфейсу.

Дллка для обработки копания.

События:

!?FU4074001 - происходит до раскопок (сразу после нажатия на "D")
x1 - номер героя
x2 - указатель на флаг отмены раскопок. !!UN:Cx2/4/0; для запрета, !!UN:Cx2/4/1; для разрешения (вариант по умолчанию)

!?FU4074003 - происходит при показе какого-либо сообщения в процессе раскопок.
x1 - номер героя
x2 - указатель на флаг отмены показа сообщения (действие типа появления ямы не отменится!). Работа с ним опять же, через UN:C
x3 - тип сообщения:
0 - "раскопки займут целый день. Приходите завтра."
1 - "инвентарь полон и раскопки будут бесполезны" (при собстна забитом инвентаре)
2 - "ищите Грааль на суше!" (при попытке выкопать яму в море)
3 - "ищите Грааль в чистом поле" (при поиске на каком-либо объекте)
4 - "поздравляем! вы нашли Грааль" (первое сообщение при успешной находке)
5 - "принесите Грааль в город.." (второе сообщение)
6 - "ничего нет. Куда подевалось?"

!?FU4074002 - происходит после раскопок
x1 - номер героя
x2 - результат. Аналогичен x3 для FU4074003, но c добавлением варианта -1 - "раскопки отменены в 4074001"


Что еще может понадобиться?

Если кто хочет посмотрет
https://dl.dropbox.com/u/61759222/HoMM/granite.era
https://dl.dropbox.com/u/61759222/HoMM/granite.cpp
hippocamus
Это вещь нужная. Особенно, если мы собираемся ввести ещё несколько ultimate артефактов.
Ответь, пожалуйста на пару вопросов:
1) в карте в разделе шаблонов обязательно присутствуют 2 шаблона, №1 - случайный монстр, и №0 - ямка. Есть предположение, что №1 используется при неделях монстра, а №0 - при копании. Если шаблон №0 заменить, допустим, на сундук - значит при копании будет обязательно выкапываться сундук?
2) не очень понял - значение x3 можно поменять в триггере? Например, результат - 6, а я принудительно ставлю 4 - появится грааль? Или сообщение о нём?
3) как узнать номер героя, который инициировал триггер !?FU4074003? Обязательно перехватывать !?FU4074001?
feanor
1. Про шаблоны я не знаю ваще ничо, но при успешном копании всегда выкапывается грааль и всегда ставится яма.

2. х3 менять незачем - оно только для справки

3. х1 же.
Sar
Как вообще работа продвигается? Что сделал?
hippocamus
А, ну ясно. Т.е. если я хочу сделать, что что-то выкопал, нужно отменить сообщение, если x3=6, всунуть в рюкзак артефакт, и вывести своё сообщение?
hippocamus
Вот, проверь:
http://zalil.ru/33555652
У меня просто нет сейчас рабочей версии героев, я испортил, поставив ХотУ на Вог.
В этой карте не ищи никаких скриптов. Заменён шаблон. При копании в любом месте должен выкапываться сундук. Обычный сундук, с которым и взаимодействовать можно как с сундуком.
feanor
Цитата
При копании в любом месте должен выкапываться сундук. Обычный сундук, с которым и взаимодействовать можно как с сундуком.

Неа, яма.

Говорю же, это харкодом зашито

Код
CPU Disasm
Address   Hex dump          Command                                  Comments
0040EE77  |. /74 10         JE SHORT 0040EE89
0040EE79  |. |B9 78036600   MOV ECX,OFFSET h3era.00660378           ; ASCII "DIGSOUND.82M"
0040EE7E  |. |E8 EDB81800   CALL 0059A770                           ; [h3era.0059A770
0040EE83  |. |8945 E4       MOV DWORD PTR SS:[LOCAL.7],EAX
0040EE86  |. |8955 E8       MOV DWORD PTR SS:[LOCAL.6],EDX
0040EE89  |> \8B55 10       MOV EDX,DWORD PTR SS:[ARG.3]
0040EE8C  |.  8B0D 38956900 MOV ECX,DWORD PTR DS:[699538]
0040EE92  |.  83CF FF       OR EDI,FFFFFFFF
0040EE95  |.  57            PUSH EDI                                ; /Arg6 => -1
0040EE96  |.  57            PUSH EDI                                ; |Arg5 => -1
0040EE97  |.  6A 7C         PUSH 7C                                 ; |Arg4 = 7C  (124 - яма)
0040EE99  |.  52            PUSH EDX                                ; |Arg3 => [ARG.3]
0040EE9A  |.  53            PUSH EBX                                ; |Arg2
0040EE9B  |.  56            PUSH ESI                                ; |Arg1
0040EE9C  |.  E8 AFA60B00   CALL 004C9550                           ; \h3era.004C9550
0040EEA1  |.  A1 38956900   MOV EAX,DWORD PTR DS:[699538]


Код
CPU Disasm
Address   Hex dump          Command                                  Comments
0040EF23  |.  BA 01000000   MOV EDX,1
0040EF28  |.  E9 4E010000   JMP 0040F07B
0040EF2D  |>  8B0D FCCC6900 MOV ECX,DWORD PTR DS:[69CCFC]
0040EF33  |.  BE 02000000   MOV ESI,2  (2 - грааль)
0040EF38  |.  897D D8       MOV DWORD PTR SS:[LOCAL.10],EDI
0040EF3B  |.  8975 D4       MOV DWORD PTR SS:[LOCAL.11],ESI
0040EF3E  |.  E8 1DBB0A00   CALL 004BAA60                           ; [h3era.004BAA60
0040EF43  |.  84C0          TEST AL,AL
0040EF45  |.  0F84 E1000000 JE 0040F02C
0040EF4B  |.  8B15 F4CC6900 MOV EDX,DWORD PTR DS:[69CCF4]
0040EF51  |.  6A 03         PUSH 3                                  ; /Arg1 = 3
0040EF53  |.  8915 5C956900 MOV DWORD PTR DS:[69955C],EDX           ; |
0040EF59  |.  8BD7          MOV EDX,EDI                             ; |
0040EF5B  |.  B9 60036600   MOV ECX,OFFSET h3era.00660360           ; |ASCII "UltimateArtifact.wav"
0040EF60  |.  E8 2BB91800   CALL 0059A890                           ; \h3era.0059A890


Цитата
Т.е. если я хочу сделать, что что-то выкопал, нужно отменить сообщение, если x3=6, всунуть в рюкзак артефакт, и вывести своё сообщение?


Ну как-то так

!?FU4074003;
!!if&x3=6:;
!!UN:Cx2/4/0;
!!IF:M^Держитесь подальше от торфяных болот!^;
!!HEx1:P?y1/?y2/?y3;
!!HEx1:Ty1/y2/y3/47/1;
!!el:;
!!en:;
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Форум IP.Board © 2001-2025 IPS, Inc.