Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Обсуждение инженерного анализа
DF2 :: ФОРУМЫ > Игровые форумы > Heroes of Might & Magic III > Моды
Страницы: 1, 2, 3, 4, 5, 6, 7, 8, 9
Etoprostoya
>> Аргументы восьмой и девятый - толщины по х и y.

В смысле? Думал у луча должна быть только толщина, она же ширина.
Или это 3D-луч? shok.gif
feanor
Ну их раздельное изменение, в общем на толщину влияет все равно не особо, но интуиция подсказывает мне, что суть такова:

к сожалению, анимация дюже быстра и проверить это не получается sad.gif
Etoprostoya
А может это толщина на разных концах луча?
feanor
Arg 11 = 0xFFFF,
Arg 12 = 0xFFFF.

однако.


Добавлено ([mergetime]1277123449[/mergetime]):
Цитата
А может это толщина на разных концах луча?

и вы выигрываете суперприз! так и есть(

Добавлено ([mergetime]1277123934[/mergetime]):
Arg 13 - скорость луча. 0 вызывает эксепшен деления на ноль. Уменьшение луч затормаживает.

Arg 16 - тоже что-то около скорости. Увеличение затормаживает луч.
Haart of the Abyss
Дорогая редакция, я созерцаю.
feanor
75D0F4 - номер существа с охранниками. По умолчанию - AD, санта-гремлин.
MasterOfPuppets
Давно хотел написать:
Популярный адрес 69CCFCh - указатель на структуру текущего игрока. Именно текущего. Ошибка многих скриптописцев в том, что они принимают этот адрес за указатель на структуру первого, красного игрока - ибо всё тестят на красном. Да и я, был грех, когда-то так делал. rolleyes.gif
Опустившись пониже, можно найти указатели на структуры городов, шахт, гарнизонов и т.д. Ещё ниже - структуры героев. Иначе говоря, весь этот огромный и нестатичный блок памяти - единое целое. До всего в нём приходится добираться из смещений.

В отличие от артефактов или монстров, информация о статусе заклинаний в структуре героя хранится просто в виде таблицы однобайтных значений (0 = нет, 1 = есть). Значений в ней 70 (заклинания 0-69). То есть, чтобы герой изучал новые заклинания, нужно либо:
а) Увеличить размер структуры героя. Очевидно, тогда понадобится перенести весь блок структур и уведомить код игры о перенесении и расширении. В общем, фиг кто этим займётся.
б) Хранить информацию об изученных заклинаниях в другом месте. Тоже не особо легко, но, в принципе, иначе никак.

В общем, вы поняли, насколько всё печально. md_house.gif
feanor
ой, ё..
/me вообще не задумался об этом.
Etoprostoya
/me задумался об этом, даже придумал способ увеличить число заклинаний в 8 раз. Как, догадаться не трудно. Нужно только уплотнить код в местах обращения к таблице заклинаний и тестить не байты а биты.
Я всегда такой умный, пока до дела не дойдёт. gigi.gif
MasterOfPuppets
А чем этот выход лучше? Менять указатели на структуры и то проще, чем менять способ обращения к ним.
Etoprostoya
Как будто меняя указатели ты не меняешь способа обращения к структуре... В случае со сменой указателей - это простая арифметика плюс новое расположение структуры, в моём случае - шифрация-дешифрация байтовых указателей в "битовые" указатели, но для той же, только изменённой, структуры. "Битовый" способ сложнее и неэффективнее в случае, если мест обращения к структуре достаточно много.

А вообще, это нужно на реальном коде смотреть, а не утверждать голословно. Может получиться, что я совсем не в тему сделал предложение.
MasterOfPuppets
Что-то мне подсказывает, что "мест обращений" там до черта... Но это на опыте работы с артефактами и монстрами, а тут другой случай, хоть структура та же. С заклинаниями за всё может быть ответственна одна функция. Или три (проверить/дать/убрать).
Посмотрю на днях.
MasterOfPuppets
Цитата(Master Of Puppets @ 03 Jun 2010, 03:26)

!?FU@Открытие окна слотового существа@;
; конвертирование - thiscall
; x1: 0 - герой, 1 - город, 2 - гарнизон, 3 - шахта
; x2 - номер объекта: HE:N, CA:U, OB:C
; x3 - номер слота
; x4 - наличие кнопки "Уволить": 1 - да, 0 - нет
; x5 - закрыть диалог при отпускании мыши: 1 - да, 0 - нет
!!UN:C6933756/4/?y5; //получить адрес структуры текущего игрока
!!OW:C?y2; //получить цвет текущего игрока
!!VRy1:Sy2*360; //360 байт на структуру игрока
!!VRy5:-y1; //вычитаем и перемещаемся в начало структур
!!UN:C6919480/4/?y10;
!!if&x1=0; //ГЕРОЙ
!!HE-1&x2=-1:N?x2; //если герой указан как -1, получить его номер
!!VRy1:Sx2*1170+y5+3041; //1170 байт на структуру героя
!!VRy3:Sx3*4+y1; //смещение до нужного слота
!!UN:Cy3/4/<0; //проверить, есть ли в этом слоте существо
!!FU&1:E; //выход, если существа нет *тип = -1*
!!VRy3:Sy1-145;
!!SN:E5007632/2/y10/y1/x3/y3/0/119/20/x4/x5; //выполнить внутреннюю игровую функцию
!!en;
!!if&x1=1; //ГОРОД
!!VRy1:Sy5+2884; //найти указатель на структуру городов
!!UN:Cy1/4/?y2; //получить адрес структуры
!!VRy1:Sx2*360+y2+224; //360 байт на структуру города
!!VRy3:Sx3*4+y1; //смещение до нужного слота
!!UN:Cy3/4/<0; //проверить, есть ли в этом слоте существо
!!FU&1:E; //выход, если существа нет *тип = -1*
!!VRy3:Sy1-224;
!!SN:E5007632/2/y10/y1/x3/0/y3/119/20/x4/x5; //выполнить внутреннюю игровую функцию
!!en;
!!if&x1>1; //ГАРНИЗОН & ШАХТА
!!UN:C6919480/4/?y2;
!!VRy2&x1=2:+320428; //смещение для гарнизонов
!!VRy2&x1=3:+320396; //для шахт
!!UN:Cy2/4/?y1; //найти адрес начала таблицы объектов
!!VRy1:+4; //существа в слотах начинаются через 4 байта
!!VRy4:Sx2*64+y1; //64 байта на объект
!!VRy3:Sx3*4+y4; //смещение до нужного слота
!!UN:Cy3/4/>-1; //проверить, есть ли в этом слоте существо
!!SN&1:E5007632/2/y10/y4/x3/0/0/119/20/x4/x5; //если есть - выполнить внутреннюю игровую функцию
!!en;


Если кому надо - оформлено в виде асма:

239E82 A138956900; MOV EAX,DWORD PTR DS:[699538]
239E87 837D3C03; CMP DWORD PTR SS:[EBP+3C],3 - Шахта?
239E8B 0F87E3000000; JA mop.00639F74 - если параметр более 3, то сворачиваемся.
239E91 7503; JNZ SHORT mop.00639E96
239E93 83E820; SUB EAX,20
239E96 05ACE30400; ADD EAX,4E3AC
239E9B 8B18; MOV EBX,DWORD PTR DS:[EAX]
239E9D 83C304; ADD EBX,4
239EA0 8B4538; MOV EAX,DWORD PTR SS:[EBP+38]
239EA3 6BC040; IMUL EAX,EAX,40
239EA6 03C3; ADD EAX,EBX
239EA8 8B5D34; MOV EBX,DWORD PTR SS:[EBP+34]
239EAB 6BDB04; IMUL EBX,EBX,4
239EAE 03D8; ADD EBX,EAX
239EB0 833BFF; CMP DWORD PTR DS:[EBX],-1
239EB3 7441; JE SHORT mop.00639EF6
239EB5 FF752C; PUSH DWORD PTR SS:[EBP+2C]
239EB8 FF7530; PUSH DWORD PTR SS:[EBP+30]
239EBB FF7524; PUSH DWORD PTR SS:[EBP+24]
239EBE FF7528; PUSH DWORD PTR SS:[EBP+28]
239EC1 6A00; PUSH 0
239EC3 6A00; PUSH 0
239EC5 FF7534; PUSH DWORD PTR SS:[EBP+34]
239EC8 50; PUSH EAX
239EC9 EB47; JMP SHORT mop.00639F12 - на выполнение функции открытия окна слотового существа

239ECB 837D3C01; CMP DWORD PTR SS:[EBP+3C],1 - слот города?
239ECF 75B1; JNZ SHORT mop.00639E82 - нет, так проверка на Гарнизон/Шахту
239ED1 8BC6; MOV EAX,ESI
239ED3 05440B0000; ADD EAX,0B44
239ED8 8B10; MOV EDX,DWORD PTR DS:[EAX]
239EDA 8B5D38; MOV EBX,DWORD PTR SS:[EBP+38]
239EDD 69DB68010000; IMUL EBX,EBX,168
239EE3 03DA; ADD EBX,EDX
239EE5 81C3E0000000; ADD EBX,0E0
239EEB 8B5534; MOV EDX,DWORD PTR SS:[EBP+34]
239EEE 6BD204; IMUL EDX,EDX,4
239EF1 03D3; ADD EDX,EBX
239EF3 833AFF; CMP DWORD PTR DS:[EDX],-1
239EF6 745A; JE SHORT mop.00639F52
239EF8 8BC3; MOV EAX,EBX
239EFA 2DE0000000; SUB EAX,0E0
239EFF FF752C; PUSH DWORD PTR SS:[EBP+2C]
239F02 FF7530; PUSH DWORD PTR SS:[EBP+30]
239F05 FF7524; PUSH DWORD PTR SS:[EBP+24]
239F08 FF7528; PUSH DWORD PTR SS:[EBP+28]
239F0B 50; PUSH EAX
239F0C 6A00; PUSH 0
239F0E FF7534; PUSH DWORD PTR SS:[EBP+34]
239F11 53; PUSH EBX
239F12 EB5B; JMP SHORT mop.00639F6F - на выполнение функции открытия окна слотового существа

239F14 60; PUSHAD - сохраняем регистры
239F15 8BEC; MOV EBP,ESP
239F17 8B35FCCC6900; MOV ESI,DWORD PTR DS:[69CCFC] - получить адрес структуры текущего игрока
239F1D 8B15F4CC6900; MOV EDX,DWORD PTR DS:[69CCF4] - получить номер (цвет) текущего игрока
239F23 69D268010000; IMUL EDX,EDX,168 - умножить цвет на 360 (размер структуры игрока)
239F29 2BF2; SUB ESI,EDX - вычитаем и перемещаемся в начало структур
239F2B 8B0D38956900; MOV ECX,DWORD PTR DS:[699538] - параметр, который должен хранится в ecx
239F31 837D3C00; CMP DWORD PTR SS:[EBP+3C],0 - открытие ли окна существа в слоте героя?
239F35 7594; JNZ SHORT mop.00639ECB - нет, так проверяем на город
239F37 8B4538; MOV EAX,DWORD PTR SS:[EBP+38] - загрузить номер героя
239F3A 69C092040000; IMUL EAX,EAX,492 - умножить на размер структуры героя
239F40 03C6; ADD EAX,ESI - добавить смещение от начала структур игроков
239F42 05E10B0000; ADD EAX,0BE1 - смещение до слотов существ
239F47 8B5D34; MOV EBX,DWORD PTR SS:[EBP+34] - загрузить номер слота
239F4A 6BDB04; IMUL EBX,EBX,4 - умножить на 4 байта
239F4D 03D8; ADD EBX,EAX - добавить смещение
239F4F 833BFF; CMP DWORD PTR DS:[EBX],-1 - есть ли в слоте существо?
239F52 7420; JE SHORT mop.00639F74 - если нет, то завершаем функцию
239F54 8BD8; MOV EBX,EAX
239F56 81EB91000000; SUB EBX,91
239F5C FF752C; PUSH DWORD PTR SS:[EBP+2C] -
239F5F FF7530; PUSH DWORD PTR SS:[EBP+30]
239F62 FF7524; PUSH DWORD PTR SS:[EBP+24]
239F65 FF7528; PUSH DWORD PTR SS:[EBP+28]
239F68 6A00; PUSH 0
239F6A 53; PUSH EBX
239F6B FF7534; PUSH DWORD PTR SS:[EBP+34]
239F6E 50; PUSH EAX
239F6F E89CC9E8FF; CALL mop.004C6910 - запуск функции открытия окна слотового существа
239F74 61; POPAD - выталкиваем регистры
239F75 C3; RETN


Конвертирование - Pascal. Вызов через ЭРУ: !!SN:E6528788/0/x1/x2/x3/x4/x5/x6/x7;
Ранее не оговоренные параметры x6 и x7 - положение диалога по x и y.
P.S. Не обращайте внимания, что вызов из содовской секции. Я там просто некогда сократил туеву хучу кода. Кому надо, тот исправит.
feanor
*(char*)(0x5AFA8F+2) = 0xFF; //spell book can be exchanged
*(char*)(0x5AFA98+2) = 0xFF; //catapult can be exchanged

*(char*)0x4E3222 = 0xFF; //
*(char*)0x4E322B = 0xFF; //warfare can be putted into backpack
*(char*)0x4E3234 = 0xFF; //
*(char*)0x4E3219 = 0xFF; //

*(char*)(0x4DE112+2) = 0xFF; //unlocking catapult slot

книгами и боевыми машинами (в т.ч катапультами) можно обмениваться. Боевые машины (в т.ч катапульты) можно снимать и таскать в рюкзаке (книги - только на экране обмена).

Добавлено ([mergetime]1281024341[/mergetime]):
!!UN:C5962385/1/255;
!!UN:C5962394/1/255;
!!UN:C5124642/1/255;
!!UN:C5124651/1/255;
!!UN:C5124660/1/255;
!!UN:C5124633/1/255;
!!UN:C5103890/1/255;

в ERM

Добавлено ([mergetime]1281025208[/mergetime]):
Да, снятие катапульты никак не влияет на её наличие при осаде.
Так что мы имеем, фактически, свободный слот ^^
Etoprostoya
Цитата(feanor @ 05 Aug 2010, 20:20)
Да, снятие катапульты никак не влияет на её наличие при осаде.
Так что мы имеем, фактически, свободный слот ^^

То есть слот катапульты можно использовать как слот "Разное 6".
feanor
Ну, как слот "разное" - не знаю, не знаю. Если в artraits дуром поставить у каждого артефакта для слота "разное" крестик в столбце "катапульта" - игра просто не загрузится. А вот сделать слот для знамен-поясов-имплантов-татуировок-ктулхосимбионтов можно.

Кстати, координаты отрисовки лежат по адресу 004E0A91.
______________________
Цитата
*(char*)0x4E3222 = 0xFF; //
*(char*)0x4E322B = 0xFF; //warfare can be putted into backpack
*(char*)0x4E3234 = 0xFF; //
*(char*)0x4E3219 = 0xFF; //

да, это сделает артефакт номер 255 неснимаемым.
feanor
0069390E: 05 - слот катапульты теперь "Разное 6". gigi.gif
Вообще, по адресу 6938E8 находится 4*15 таблица соответствия "номер позиций артефактов в формате UN:A" - "реальная позиция в формате битового поля"
feanor
хе-хе..
4D8BDD: 90909090 90909090 9090 - убираем катапульту.
Кому-нить нужен мод на шестой слот? (:
MasterOfPuppets
Цены на строительство зданий в городе пробиты в BUILDING.TXT. Но что. если их требуется менять или считывать динамически? Вот и накатал:
CODE
; Контроль цен здания в городе. fastcall.
03409792 55; PUSH EBP
03409793 8BEC; MOV EBP,ESP
03409795 83F91A; CMP ECX,1A
03409798 7C60; JL SHORT mop.034097FA
0340979A 83F91D; CMP ECX,1D
0340979D 7F75; JG SHORT mop.03409814
0340979F 8B4508; MOV EAX,DWORD PTR SS:[EBP+8]
034097A2 85C0; TEST EAX,EAX
034097A4 7404; JE SHORT mop.034097AA
034097A6 8BE5; MOV ESP,EBP
034097A8 5D; POP EBP
034097A9 C3; RETN
034097AA B807000000; MOV EAX,7
034097AF 8B5D0C; MOV EBX,DWORD PTR SS:[EBP+C]
034097B2 8D1C9D64768800; LEA EBX,DWORD PTR DS:[EBX*4+887664]
034097B9 C70300000000; MOV DWORD PTR DS:[EBX],0
034097BF 83C304; ADD EBX,4
034097C2 48; DEC EAX
034097C3 85C0; TEST EAX,EAX
034097C5 75F2; JNZ SHORT mop.034097B9
034097C7 EBDD; JMP SHORT mop.034097A6
034097C9 6BC91C; IMUL ECX,ECX,1C
034097CC 8DB160816A00; LEA ESI,DWORD PTR DS:[ECX+6A8160]
034097D2 837D0802; CMP DWORD PTR SS:[EBP+8],2
034097D6 741D; JE SHORT mop.034097F5
034097D8 8B5D0C; MOV EBX,DWORD PTR SS:[EBP+C]
034097DB 8D3C9D64768800; LEA EDI,DWORD PTR DS:[EBX*4+887664]
034097E2 837D0801; CMP DWORD PTR SS:[EBP+8],1
034097E6 7409; JE SHORT mop.034097F1
034097E8 B907000000; MOV ECX,7
034097ED F3A5; REP MOVS DWORD PTR ES:[EDI],DWORD PTR DS:[ESI]
034097EF EBB5; JMP SHORT mop.034097A6
034097F1 87F7; XCHG EDI,ESI
034097F3 EBF3; JMP SHORT mop.034097E8
034097F5 8D7D0C; LEA EDI,DWORD PTR SS:[EBP+C]
034097F8 EBF7; JMP SHORT mop.034097F1
034097FA 83F911; CMP ECX,11
034097FD 7CCA; JL SHORT mop.034097C9
034097FF 69D2FC000000; IMUL EDX,EDX,0FC
03409805 83E911; SUB ECX,11
03409808 6BC91C; IMUL ECX,ECX,1C
0340980B 8DB41144836A00; LEA ESI,DWORD PTR DS:[ECX+EDX+6A8344]
03409812 EBBE; JMP SHORT mop.034097D2
03409814 69D288010000; IMUL EDX,EDX,188
0340981A 83E91E; SUB ECX,1E
0340981D 6BC91C; IMUL ECX,ECX,1C
03409820 8DB41180986A00; LEA ESI,DWORD PTR DS:[ECX+EDX+6A9880]
03409827 EBA9; JMP SHORT mop.034097D2


x1 - тип города
x2 - тип здания
x3 - способ (0-2)

Примеры:
!!SN:E54564754/3/4/0/0/500; получить в v500-v506 цену Гильдии Магов 5-го уровня. При этом номер города значения не имеет.
!!SN:E54564754/3/17/8/1/2; установить цену на Торговцев Артефактами в Сопряжении из переменных v2-v8.
!!SN:E54564754/3/22/4/2/0/5/0/5/5/5/5000; - установить цену Трансформатора Скелетов на 5 единиц ценных ресурсов и 5000 золота.

Функция автоматом игнорирует здания 26-29 (возвращает нули, а запись не производит). А вот о Верфи забывать не стоит - здание общее, но не во всех городах доступное.
Valery
(Chortos script)

ZVSE

$= ID

!?FU6000;

Make sure the creature number is valid
!!VRx3&x1=1/x2<2:S16;
!!VRx3&x1=1/x2>197:S16;
!!FU|x2<2/x2>197:E;

Get the correct address
!!VRx2:+7961526;

Do what they ask us to do
!!UN&x1=0:Cx2/1/x3;
!!UN&x1=1:Cx2/1/?x3;

!#MA:X$/?i;
!#VRi:|4;
!#MA:X$/i;
!#MA:N$/16;
!#FU6000:P0/$/11;

What is x1?
!!VRx2:+7961526; **how do we get this address?
feanor
x1:
0 - set missile type to creature (!!FU6000:P0/<creature ID>/<missile type>)
1 - get missile type from creature (!!FU6000:P1/<crID>/?<var for missile type>;)

Цитата
how do we get this address?

7961526 = 797BB6h, adress in memory for missile table (only for WoG358! TE and Era needs another address).
It can be got with the help of reverse engeneering.
Valery
Thanks. good.gif

Would it be possible to give me the ERA address for getting this script work on it please?
194 shooters, not bad!
feanor
7994814
Haart of the Abyss
Цитата
194 shooters, not bad!
Never forget that (as far as i remember) all units supposed to be shooters must have corresponding animation.
Valery
That's my job, adding frames, now that I have address.
MasterOfPuppets
Функция, позволяющая проверить существование файла любого типа во всех активных лодах игры:
CODE

0340982B 60; PUSHAD
0340982C 8BD9; MOV EBX,ECX
0340982E 69DB00020000; IMUL EBX,EBX,200
03409834 81C3E8719200; ADD EBX,mop.009271E8
0340983A 8B158C926900; MOV EDX,DWORD PTR DS:[69928C]
03409840 53; PUSH EBX
03409841 8B02; MOV EAX,DWORD PTR DS:[EDX]
03409843 8D0440; LEA EAX,DWORD PTR DS:[EAX+EAX*2]
03409846 8B3CC5ECEF7900; MOV EDI,DWORD PTR DS:[EAX*8+79EFEC]
0340984D 8B0CC5E8EF7900; MOV ECX,DWORD PTR DS:[EAX*8+79EFE8]
03409854 8D04C5E0EF7900; LEA EAX,DWORD PTR DS:[EAX*8+79EFE0]
0340985B 894DF0; MOV DWORD PTR SS:[EBP-10],ECX
0340985E 8B07; MOV EAX,DWORD PTR DS:[EDI]
03409860 8D0480; LEA EAX,DWORD PTR DS:[EAX+EAX*4]
03409863 8D3480; LEA ESI,DWORD PTR DS:[EAX+EAX*4]
03409866 C1E604; SHL ESI,4
03409869 81C6D4778002; ADD ESI,mop.028077D4
0340986F 8BCE; MOV ECX,ESI
03409871 E88A180FFD; CALL mop.004FB100
03409876 84C0; TEST AL,AL
03409878 7529; JNZ SHORT mop.034098A3
0340987A 8B45F0; MOV EAX,DWORD PTR SS:[EBP-10]
0340987D 83C704; ADD EDI,4
03409880 48; DEC EAX
03409881 8945F0; MOV DWORD PTR SS:[EBP-10],EAX
03409884 7421; JE SHORT mop.034098A7
03409886 8B07; MOV EAX,DWORD PTR DS:[EDI]
03409888 53; PUSH EBX
03409889 8D0480; LEA EAX,DWORD PTR DS:[EAX+EAX*4]
0340988C 8D3480; LEA ESI,DWORD PTR DS:[EAX+EAX*4]
0340988F C1E604; SHL ESI,4
03409892 81C6D4778002; ADD ESI,mop.028077D4
03409898 8BCE; MOV ECX,ESI
0340989A E861180FFD; CALL mop.004FB100
0340989F 84C0; TEST AL,AL
034098A1 74D7; JE SHORT mop.0340987A
034098A3 85F6; TEST ESI,ESI
034098A5 7509; JNZ SHORT mop.034098B0
034098A7 C605E0F2910000; MOV BYTE PTR DS:[91F2E0],0
034098AE EB07; JMP SHORT mop.034098B7
034098B0 C605E0F2910001; MOV BYTE PTR DS:[91F2E0],1
034098B7 61; POPAD
034098B8 C3; RETN

В качестве единственного параметра передаётся номер z-переменной с именем файла. Результат проверки регистрирует флаг 1.

Пример использования:
!!VRz123:S^MyPicture.pcx^; //название файла
!!SN:E54564907/2/123; //проверяем его наличие в лодах
!!IF:M^%F1^; //видим "0", если файла нет, и "1", если файл есть.
feanor
43DFAF - определяет, какой флаг делает существо "нераскрашиваемым".
43E160 - определяет, какой флаг делает существо синим:

shr eax, 17 => 17h = 23 => 2^23 => 8388608
Etoprostoya
В принципе, существует возможность ставить на карту большие объекты? Как понимаю, сейчас возможно ставить только объекты 256x192 пикселей (8 на 6 клеток).

Если возможность существует, то хотелось бы узнать и решение.
feanor
Составные, как в SGA (:
Etoprostoya
Цитата(feanor @ 23 Jan 2011, 23:52) *
688f04 - таблица ресурсов, приносимых хранилищем. 7*4 байт для каждого города.

Пруд Драгоценностей работает точно так же, как и обычное хранилище, с небольшой поправкой на рандомность? Я раньше думал, что это совершенно разные структуры.
feanor
Разные.
Etoprostoya
Блин, я имел в виду Таинственный Пруд Оплота, который раз в неделю приносит случайные ресурсы, а не Пруд Драгоценностей, который даёт драгоценности раз в день. Названиями просто ошибся. smile.gif
Haart of the Abyss
Подозреваю, что всё равно разные. Ибо хранилища ресурсов всё-таки работают на ежедневной основе (и без рандома).
SAG19330184
Цитата(feanor @ 08 Jan 2011, 16:41) *
004E4C00 - расчет мувпойнтов.

можно поподробнее? могу ли я например временно поменять стартовую точку от которой отсчитывается маршрут? подсчитать сколько мувов в текущем выделенном маршруте?
feanor
Цитата(SAG19330184 @ 02 Feb 2011, 12:37) *
Цитата(feanor @ 08 Jan 2011, 16:41) *
004E4C00 - расчет мувпойнтов.

можно поподробнее? могу ли я например временно поменять стартовую точку от которой отсчитывается маршрут? подсчитать сколько мувов в текущем выделенном маршруте?


нет, это именно раздача мувпойнтов в начале дня
Axolotl
А может знает кто-нибудь, как можно установить фрэймрейт для Дефов экрана города?
Etoprostoya
А чем стандартный не устраивает? Ускорять, думаю, особого смысла нет, а замедлять можно и повторными кадрами, как это обычно и делается.
feanor
Товарищи! Ниже есть тема по обсуждению инженерного анализа!
Axolotl
Цитата(Axolotl @ 15 Feb 2011, 00:22) *
А может знает кто-нибудь, как можно установить фрэймрейт для Дефов экрана города?


Цитата(etoprostoya @ 15 Feb 2011, 01:23) *
А чем стандартный не устраивает? Ускорять, думаю, особого смысла нет, а замедлять можно и повторными кадрами, как это обычно и делается.


Ускорять тоже есть смысл. Для некоторых эффектов не получается сделать плавный цикл из нескольких кадров и получается в итоге медленно. А замедлять дублированием тоже не самое лучшее, т.к. первая вставка повторных кадров сразу замедлит в два раза, а дублировать не все, а только часть, в основном дает неравномерность, особенно, если что-то скажем вращается (ускорять пропуском кадров в случаях с тем же вращением, также - либо сразу вдвое, либо будет неестественно) - в общем это грубоватый регулятор.

В общем, вопрос остается открытым. Но, возможно нужно уточнить вопрос - Знает ли кто-нибудь, фрэймрейт для Дефов экрана города - это универсальное значение для всех дефов, или же для каждого дефа - отдельный параметр. И если это отдельный параметр, то подскажите где он хранится или как вычислить эти байты.
(Если значение универсальное - то конечно, это мало смысла имеет)
Astaroth
Скорее всего универсальное.
Цитата
Ускорять тоже есть смысл. Для некоторых эффектов не получается сделать плавный цикл из нескольких кадров и получается в итоге медленно. А замедлять дублированием тоже не самое лучшее, т.к. первая вставка повторных кадров сразу замедлит в два раза, а дублировать не все, а только часть, в основном дает неравномерность, особенно, если что-то скажем вращается (ускорять пропуском кадров в случаях с тем же вращением, также - либо сразу вдвое, либо будет неестественно) - в общем это грубоватый регулятор.

Не согласен. Да, больше кадров ты не добавишь. Но это не важно. Все зависит лишь от навыков анимирования. Скорость проигрывания примерно 100 мксек. этого на кадр хватает выше крыши

Опять же, если тебя что-то не устраивает в анимации, можно попробовать грязный, но действенный метод: либо как-то скрыть недостатки, путем создания более яркого места, чтоб внимание не акцентировалось на проблемных местах, либо добавить некий эффект , который покроет проблемную область. Но, опять же, все зависит лишь от навыков анимирования
Axolotl
Мне тоже кажется, что скорее всего универсальное, но еще до конца не уверенн. Задержка примерно 140мс.
Но дело не в проблемных местах, а как раз таки просто в желании, точно отстроить скорость определенного эффекта, сохранив при этом плавность.
Ну да, судя по всему, опять таки придется чем-то жертвовать. unsure.gif
Astaroth
Цитата
Мне тоже кажется, что скорее всего универсальное, но еще до конца не уверенн. Задержка примерно 140мс.

140? Так то ты прав. Я тестирую свои объекты на 100 мксек., а на деле получается все же медленнее. Ну да ладно.
Цитата
Но дело не в проблемных местах, а как раз таки просто в желании, точно отстроить скорость определенного эффекта, сохранив при этом плавность.
Ну да, судя по всему, опять таки придется чем-то жертвовать. unsure.gif

Плавность? У тебя ж задержка не 1 секунда. 140 мсек.=0,14 сек. (Да я Кэп) довольно маленькое время. Честно, я не вижу смысла увеличивать скорость. Сам посуди: даже если для городов скорость отдельная, то представь, что будет, если ускорить все? Для твоего города все может и будет выглядеть тип-топ, но для других городов все будет очень даже заметно ускорено. Представь как оторопеют игроки, когда вместо привычной скорости анимации им преподнесят такой "бонус"?
Axolotl
Цитата(Astaroth @ 15 Feb 2011, 18:24) *
Цитата
Мне тоже кажется, что скорее всего универсальное, но еще до конца не уверенн. Задержка примерно 140мс.

140? Так то ты прав. Я тестирую свои объекты на 100 мксек., а на деле получается все же медленнее. Ну да ладно.
Цитата
Но дело не в проблемных местах, а как раз таки просто в желании, точно отстроить скорость определенного эффекта, сохранив при этом плавность.
Ну да, судя по всему, опять таки придется чем-то жертвовать. unsure.gif

Плавность? У тебя ж задержка не 1 секунда. 140 мсек.=0,14 сек. (Да я Кэп) довольно маленькое время. Честно, я не вижу смысла увеличивать скорость. Сам посуди: даже если для городов скорость отдельная, то представь, что будет, если ускорить все? Для твоего города все может и будет выглядеть тип-топ, но для других городов все будет очень даже заметно ускорено. Представь как оторопеют игроки, когда вместо привычной скорости анимации им преподнесят такой "бонус"?


Ты меня не так понял про универсальность параметра, я имел в виду не отдельный параметр для экрана города, а отдельный - для каждого дефа в экране города (ну а вдруг, у существ же есть таблица фреймрейтов движения для каждого отдельного существа). Если параметр, один для всех дефов, то конечно, вопрос не имеет смысла, и я не стану ради одного дефа менять всю глобальную скоростьsmile.gif
Astaroth
Цитата
Ты меня не так понял про универсальность параметра, я имел в виду не отдельный параметр для экрана города, а отдельный - для каждого дефа в экране города (ну а вдруг, у существ же есть таблица фреймрейтов движения для каждого отдельного существа). Если параметр, один для всех дефов, то конечно, вопрос не имеет смысла, и я не стану ради одного дефа менять всю глобальную скоростьsmile.gif

Все, понял biggrin.gif Теперь я ОЧЕНЬ сильно сомневаюсь, что для каждого ДЕФа (Пусть даже города) свой собственный таймер
MasterOfPuppets
Прямо не знаю куда...

Патч для исправления Гробницы Воина при игре с артефактами >255:
Код
A7957 C1E80D;         SHR EAX,0D
A795A 25FF030000;     AND EAX,3FF
A795F 8945F8;         MOV DWORD PTR SS:[EBP-8],EAX
A7962 84DB;           TEST BL,BL
A7964 744D;           JE SHORT mop.004A79B3
A7966 8B15680B6600;   MOV EDX,DWORD PTR DS:[660B68]
A796C 8B0D686A6900;   MOV ECX,DWORD PTR DS:[696A68]
A7972 C1E005;         SHL EAX,5
A7975 FF3410;         PUSH DWORD PTR DS:[EAX+EDX]
A7978 8B5120;         MOV EDX,DWORD PTR DS:[ECX+20]
A797B FFB288020000;   PUSH DWORD PTR DS:[EDX+288]


Пояснение: при стандартном коде дешифрация контрольного числа Гробницы, в которую установлен артефакт >255, приводит к неверному, отрицательному номеру артефакта.
Возможно, такая же бодяга в других объектах. Надо посмотреть...
MasterOfPuppets
Да, не ошибся. Вот вроде полный патч:

Всё пучком и без правки в следующих объектах:
Утопия Драконов,
Ветхий Корабль,
Кораблекрушение и его Потерпевший.

Ящик Пандоры - ?
Сулейман
Может не туда пишу, но все-таки вопрос.
Существует ли средство, что бы копировать фрагменты одной карты (местности объекты на ней, монстры и т.д.) и переносить их на другую в неизменном виде.
feanor
Патченый воговский редактор. Открываем карту раз, копируем кусок, открываем карту два, вставляем кусок.
Сулейман
Тогда может, там можно создавать создавать более чем двухуровневые карты? И задавать размер вручную, больше чем XL к примеру?
feanor
Нельзя.
Можно, но надо руками патчить редактор.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Форум IP.Board © 2001-2025 IPS, Inc.