IPB

Здравствуйте, гость ( Вход | Регистрация )

9 страниц V  « < 2 3 4 5 6 > »   
Reply to this topicStart new topic
> Тонкости ЕРМ, использование UN:C, ERM для профессионалов :)
MasterOfPuppets
сообщение 22 Feb 2010, 15:31
Сообщение #61

Анти-Всë
Сообщений: 2 989
Спасибо сказали: 2377 раз




Отключил по надобности Маскировку и повесил хук, передающий управление ERM-функции.

Код
*Set hook to case 4 of switch 0041C663
!#UN:C4310919/1/104 C4310920/4/@ERM func num@; push @ERM func num@
!#UN:C4310924/1/184 C4310925/4/7654960; mov eax, 0074CE30
!#UN:C4310929/2/53503; call eax
!#UN:C4310931/1/131 C4310932/2/1220; add esp,4
!#UN:C4310934/2/23275; jmp short 0041C7F2


В Ассемблере я пока ламер, так что не знаю, верно ли сделал хоть наполовину. Знаю только, что работает.


--------------------
Circle of destruction, hammer comes crushing
Powerhouse of energy
Whipping up a fury, dominating flurry
We create the battery



Спасибо сказали:
Go to the top of the pageAdd Nick
 
+Quote Post
Berserker
сообщение 22 Feb 2010, 15:39
Сообщение #62

Immortal
Сообщений: 1 468
Спасибо сказали: 1153 раза




"К концу года все программисты геройского сообщества выстроились в очередь за консультацией у нынешнего гуру Master Of Puppets..." Новости, 21 сентября, 2010г.

Молодец, на самом деле все новые события нужно собирать в одной теме, чтобы потом цивилизованно встроить.


--------------------
Go to the top of the pageAdd Nick
 
+Quote Post
MasterOfPuppets
сообщение 23 Feb 2010, 10:51
Сообщение #63

Анти-Всë
Сообщений: 2 989
Спасибо сказали: 2377 раз




Активация кнопки "Следующий герой", отключенной в ТЕ.

В виде скрипта:
!#UN:C4234473/4/1987433092 C4234477/1/139;

Для патчинга экзешника:
9CE9 84D275768B


--------------------
Circle of destruction, hammer comes crushing
Powerhouse of energy
Whipping up a fury, dominating flurry
We create the battery



Спасибо сказали:
Go to the top of the pageAdd Nick
 
+Quote Post
MasterOfPuppets
сообщение 03 Jun 2010, 03:26 (Сообщение отредактировал Master Of Puppets - 11 Jun 2010, 08:58)
Сообщение #64

Анти-Всë
Сообщений: 2 989
Спасибо сказали: 2377 раз




Мы Сегодня С Баем... nunu.gif
ZVSE
; ОТКРЫТИЕ ОКНА СЛОТОВОГО СУЩЕСТВА & ВСТРЕЧА ГЕРОЕВ ЧЕРЕЗ ERM С ПОМОЩЬЮ ЭРЫ
; by Master Of Puppets

!?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;

!?FU@Встреча героев@;
; конвертирование - thiscall
!!UN:C6933756/4/?y5; //получить адрес структуры текущего игрока
!!OW:C?y2; //получить цвет текущего игрока
!!VRy1:Sy2*360; //360 байт на структуру игрока
!!VRy5:-y1; //вычитаем и перемещаемся в начало структур
!!VRy6:Sx1*1170+2896+y5; //для первого героя нужен адрес его структуры
!!UN:C4199692/4/x2 C6918840/4/?y7; //для второго героя - просто его номер, записанный к какой угодно адрес.
!!SN:E4858992/2/y7/y6/4199692/0/1; //выполнить функцию


--------------------
Circle of destruction, hammer comes crushing
Powerhouse of energy
Whipping up a fury, dominating flurry
We create the battery



Спасибо сказали:
Go to the top of the pageAdd Nick
 
+Quote Post
feanor
сообщение 13 Aug 2010, 09:55
Сообщение #65

laughed as one fey
Сообщений: 12 167
Спасибо сказали: 20603 раза




!!UN:C6916632/4/9; (698A18: 09)
включает указание координат в подсказке для почвы/объектов.


Спасибо сказали:
Go to the top of the pageAdd Nick
 
+Quote Post
Etoprostoya
сообщение 13 Aug 2010, 10:00
Сообщение #66

Etoslozhnostatus
Сообщений: 8 623
Спасибо сказали: 16066 раз




Кстати, там, наверное, ещё много всяких отключённых плюшек должно быть, кроме указания координат объектов?


--------------------
- Да ну!?
- Horn of the Argali гну!


Спасибо сказали:
Go to the top of the pageAdd Nick
 
+Quote Post
feanor
сообщение 13 Aug 2010, 10:03
Сообщение #67

laughed as one fey
Сообщений: 12 167
Спасибо сказали: 20603 раза




Угу, вроде с десяток - но они как-то неочевидны.


Спасибо сказали:
Go to the top of the pageAdd Nick
 
+Quote Post
MasterOfPuppets
сообщение 16 Aug 2010, 12:53 (Сообщение отредактировал Master Of Puppets - 16 Aug 2010, 13:31)
Сообщение #68

Анти-Всë
Сообщений: 2 989
Спасибо сказали: 2377 раз




!?CM1; //тест: любой клик в любом городе
!!CA-1:H1/<0; //есть ли герой-гость?
!!FU&1:E; //выход, если нет
!!UN:C6919500/4/?y1; //указатель на TownManager
!!SN:E6129792/2/y1; //открыть Врата Замка

!?CM1; //тест: любой клик в любом городе
!!UN:C6919500/4/?y1; //указатель на TownManager
!!SN:E6106032/2/y1; //вход в Зал Совета

И всё в таком же духе...


--------------------
Circle of destruction, hammer comes crushing
Powerhouse of energy
Whipping up a fury, dominating flurry
We create the battery



Спасибо сказали:
Go to the top of the pageAdd Nick
 
+Quote Post
feanor
сообщение 26 Aug 2010, 18:29
Сообщение #69

laughed as one fey
Сообщений: 12 167
Спасибо сказали: 20603 раза




!!UN:C6918840/4/?y1;
!!VRy1:+60;
!!UN:Cy1/1/1;

показ FPS вместо строки чата. Отключение, соответственно,
....
!!UN:Cy1/1/0;


Спасибо сказали:
Go to the top of the pageAdd Nick
 
+Quote Post
MasterOfPuppets
сообщение 27 Aug 2010, 02:54 (Сообщение отредактировал Master Of Puppets - 27 Aug 2010, 02:55)
Сообщение #70

Анти-Всë
Сообщений: 2 989
Спасибо сказали: 2377 раз




Функция, выясняющая связь между Вратами Подземного Мира:

!?FU101;
!!UN:C6919480/4/?y1;
!!VRy1:+321440;
!!UN:Cy1/4/?y2;
!!VRx1:*4+y2;
!!UN:Cx1/4/?x2;

Вызов:
!!FU101:P#/?$;
Где x1 - контрольное число проверяемых Врат. В x2 возвратится контрольное число Врат, с которыми данные Врата связаны.


--------------------
Circle of destruction, hammer comes crushing
Powerhouse of energy
Whipping up a fury, dominating flurry
We create the battery



Спасибо сказали:
Go to the top of the pageAdd Nick
 
+Quote Post
feanor
сообщение 27 Aug 2010, 10:44
Сообщение #71

laughed as one fey
Сообщений: 12 167
Спасибо сказали: 20603 раза




Переписал функцию смены координат здания в городе на ERM:

Код
!!VRy1:S0; //city (e.g. Castle)
!!VRy2:S5; //building ID (e.g Tavern)

!!VRy6:S2; //frames num in new def
!!VRy3:S250; //new x
!!VRy4:S200; //new y

!!VRy5:Sy1 *44 +y2 *6 +6859276;

!!UN:Cy5/2/y6;
!!VRy5:+2;
!!UN:Cy5/2/y3;
!!VRy5:+2;
!!UN:Cy5/2/y4;


Спасибо сказали:
Go to the top of the pageAdd Nick
 
+Quote Post
feanor
сообщение 29 Aug 2010, 17:35 (Сообщение отредактировал feanor - 29 Aug 2010, 17:42)
Сообщение #72

laughed as one fey
Сообщений: 12 167
Спасибо сказали: 20603 раза




Аналогично для настройки черных рынков:

!?FU9000;
!!UN:C6919480/4/?y1;
!!VRy1:+128644;
!!UN:Cy1/4/?y2;
!!VRy3:Sx1 *7 + x2 *4 + y2;
!!UN:Cy3/4/x3;

x1 - номер рынка(0..31)
x2 - номер слота (0..6)
x3 - номер артефакта

!!FU9000:P0/0/3; - продаем катапульту в первом слоте первого рынка.


Спасибо сказали:
Go to the top of the pageAdd Nick
 
+Quote Post
MasterOfPuppets
сообщение 29 Aug 2010, 17:37 (Сообщение отредактировал Master Of Puppets - 29 Aug 2010, 18:46)
Сообщение #73

Анти-Всë
Сообщений: 2 989
Спасибо сказали: 2377 раз




http://forum.df2.ru/index.php?showtopic=5418&st=2110
smile.gif


--------------------
Circle of destruction, hammer comes crushing
Powerhouse of energy
Whipping up a fury, dominating flurry
We create the battery



Спасибо сказали:
Go to the top of the pageAdd Nick
 
+Quote Post
feanor
сообщение 29 Aug 2010, 17:41
Сообщение #74

laughed as one fey
Сообщений: 12 167
Спасибо сказали: 20603 раза




Тьфу. Ну ладно, пусть будет.


Спасибо сказали:
Go to the top of the pageAdd Nick
 
+Quote Post
Etoprostoya
сообщение 29 Aug 2010, 18:36
Сообщение #75

Etoslozhnostatus
Сообщений: 8 623
Спасибо сказали: 16066 раз




Зато новый велосипед более удобен и готов к использованию.


--------------------
- Да ну!?
- Horn of the Argali гну!


Спасибо сказали:
Go to the top of the pageAdd Nick
 
+Quote Post
MasterOfPuppets
сообщение 25 Dec 2010, 18:38
Сообщение #76

Анти-Всë
Сообщений: 2 989
Спасибо сказали: 2377 раз




Цитата(sergroj @ 15 Nov 2008, 21:54) *
Соседи клетки

!?FU#:Pv1/v2/?v3; - возвращает одну из 6 соседних клеток
v1 - номер клетки на поле боя
v2 - индекс соседа (0..5) (порядок - по часовой стрелке, начиная с клетки справа-сверху)
v3 - возвращает номер соседней клетки (-1 если того соседа нет или он вне поля боя, например, клетка 0, клетка 16, ...)

Код
!?FU#;
!!UN:C6919200/4/?y1;  [y1 = combatManager]
!!VRx1:*12 +y1 +78952 + x2;
!!UN:Cx1/1/?x3;

Вернее:

!?FU#;
!!UN:C6919200/4/?y1; [y1 = combatManager]
!!VRx2:*2;
!!VRx1:*12+y1+78952+x2;
!!UN:Cx1/2/?x3;

Позиция на поле боя – это word.


--------------------
Circle of destruction, hammer comes crushing
Powerhouse of energy
Whipping up a fury, dominating flurry
We create the battery



Спасибо сказали:
Go to the top of the pageAdd Nick
 
+Quote Post
MasterOfPuppets
сообщение 23 May 2011, 14:15
Сообщение #77

Анти-Всë
Сообщений: 2 989
Спасибо сказали: 2377 раз




Открытие диалога Командира
Код
!?FU@FunctionNumber@;
; x1: номер героя
; x2: 0 - обычный диалог, 1 - повышение уровня [обманка]
; x3: 0 - есть кнопка OK, 1 - нет
; x4: result [0 - командир оставлен, -1 - командир уволен]
!!VRy1:Sv1;
!!VRx1:*296+42344640;
!!SN:E7775342/2/x1/x2/x3/0;
!!SN:E7812840/1/42337496;
!!VRx4:Sv1;
!!VRv1:Sy1;



--------------------
Circle of destruction, hammer comes crushing
Powerhouse of energy
Whipping up a fury, dominating flurry
We create the battery



Спасибо сказали:
Go to the top of the pageAdd Nick
 
+Quote Post
hippocamus
сообщение 23 May 2011, 22:58
Сообщение #78

допустим, мяў
Сообщений: 24 113
Спасибо сказали: 13422 раза




А героя в лодку посадить и вытащить сможешь?


--------------------
Вокруг столько фильмов, книг, музыки - а природа какая невероятная!
Если тебе скучно жить - ты совсем дурак. (Татьяна Черниговская)


Спасибо сказали:
Go to the top of the pageAdd Nick
 
+Quote Post
MasterOfPuppets
сообщение 31 May 2011, 18:15 (Сообщение отредактировал MasterOfPuppets - 31 May 2011, 18:16)
Сообщение #79

Анти-Всë
Сообщений: 2 989
Спасибо сказали: 2377 раз




Код
!?FU@FunctionNumber@;
; x1: 0 - посадить Гиппокамуса в лодку, другое значение - вытолкнуть его из лодки
; x2 - номер Гиппокамуса [см. паспортные данные]
; x3-x5 - координаты клетки, где стоит лодка [должна существовать хоть одна лодка на карте]. Для высадки координаты не требуются и герой появляется там же, где стояла лодка.
          !!UN:C6918840/4/?y2; //получить адрес AdvManager
          !!SN:E7411341/1/x2; //получить адрес структуры героя
          !!VRy3:Sv1;
!!if&x1=0;
          !!HEx2:Px3/x4/x5; //переместить героя в лодку, ибо когда он будет посажен, переместить его не выйдет
        ; Коммент: можно в любую точку, просто будет использована одна из существующих лодок, в которую и превратится герой
          !!VRx5:*4; //умножить уровень на 4
          !!UN:C10784129/1/0 C10784128/1/x3 C10784130/1/x4 C10784131/1/x5; //записать все данные побайтно в адрес y1
          !!SN:E7410371/1/y1; //получить адрес структуры клетки
          !!SN:E4852864/2/y2/y3/v1; //посадить героя в лодку [MP обнулятся]
!!el;
          !!SN:E4842208/2/y2/y3/1;
!!en;
          !!UN:R1; //обновить экран мира

Что-то типа этого. Не исключаю багов.


--------------------
Circle of destruction, hammer comes crushing
Powerhouse of energy
Whipping up a fury, dominating flurry
We create the battery



Спасибо сказали:
Go to the top of the pageAdd Nick
 
+Quote Post
totkotoriy
сообщение 10 Jul 2012, 10:03 (Сообщение отредактировал totkotoriy - 10 Jul 2012, 10:04)
Сообщение #80

No more lies...
Сообщений: 497
Спасибо сказали: 816 раз




Такой вот вопрос: можно ли корректно выполнить данную команду !!BM:G#/-90/d; (она скрывает маленькое оконце с числом существ в отряде на поле боя)?
Хочу такое сделать для командиров и возможно для оруженосцев, но при использовании этой команды появляются всяческие ошибки, всё таки что-то меняется в памяти некорректно.


--------------------
Пишу мало, но редко...
Go to the top of the pageAdd Nick
 
+Quote Post

9 страниц V  « < 2 3 4 5 6 > » 
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



Текстовая версия Сейчас: 22 October 2025 - 01:50
Copyright by Алексей Крючков
Strategy Gamez by GrayMage
Programming by Degtyarev Dmitry
  Яндекс.Метрика