Current time: 05.01.2025, 14:10 Hello There, Guest! (LoginRegister)
Language: english | russian  

Post Reply 
Threaded Mode | Linear Mode
Исправление скрипта "capture mills and gardens"
Author Message
ArKan Offline

Posts: 225
Post: #1

Прошу помощи в исправлении скрипта 879.
Нужно запретить захватывать мельницы и сады союзников.
Самому, к сожалению, не получилось исправить.

  1. ZVSE
  2. ERMS_ScriptDate=22.9(September).2012
  3. _WARNING_#1=IMPORTANT! This file is not in a plain text format. NEVER use any editor except ERM_S for making any kind of changes!
  4. ERMS_PoweredBy=ERM Scripter v. 2004.10.5.945
  5. ** Author orig. : DracoLich
  6. ** Name : Capture the mills and leprechaun's gardens
  7. ** Name rus. : Захват мельниц и садов лепрекона
  8. ** Changes rus. : [Algor] вынос опции в отдельный файл для мода ERA, построчные комментарии
  9. ** [Algor] вынос текстов в ert-файл
  10. ** [Algor] технология быстрого поиска для UN:U
  11. ** [Algor] Замена TM100 на "стандартный" TM51, перенумерация функций/переменных и пр.
  12. ** Options : 879
  13. ** Dialogs : -
  14. ** Variables : -
  15. ** Tmp variables : v1-v3, z1
  16. ** Timers : TM51 (standard)
  17. ** Functions : FU7934
  18. ** PO-values : V0,V1 (mills and leprechaun's gardens squares)
  19. ** дублирование стандартных триггеров
  20. !#TM99:S1/999/1/255; [каждый день для всех игроков]
  21. !?OB109; [посещение Водяной мельницы игроком-человеком]
  22. !!UN:P879/?y1; [проверяем включена ли опция в y1]
  23. !!FU&y1=0:E; [выход, если опция не включена]
  24. !!PO998:O?y1; [y1 - хозяин объекта]
  25. !!OW:C?y2; [y2 - текущий игрок]
  26. !!OB998:R; [разрешаем посещение объекта всем игрокам]
  27. !!PO998:Oy2; [меняем владельца мельницы]
  28. !!WM998&y1=-1:B?y3 B0; [y3 - количество золота на мельнице, если мельница ничейная]
  29. !!VRy3&y1=-1:*500; [...]
  30. !!OW&y1=-1:R-1/6/dy3; [увеличиваем игроку золото, если мельница была ничейной]
  31. !!PO998&y1=-1:V0/6 V1/y3; [устанавливаем тип/количество текущих ресурсов в V0/V1 значения клетки]
  32. !!FU&-1000:E; [выход, если игрок ИИ]
  33. !!OB998:S; [запрещаем посещение объекта всем игрокам]
  34. !!VRz1&y1=y2:Sz179072; [сообщение, если игрок уже получал золото]
  35. !!IF&y1=y2:M^%Z1^; [...]
  36. !!VRz1&y1=-1:Sz179073; [сообщение о захвате и получении ресурсов]
  37. !!IF&y1=-1:Q2/6/y3/1^%Z1^; [...]
  38. !!VRz1&y1<>y2/y1>-1:Sz179074; [сообщение о захвате мельницы]
  39. !!IF&y1<>y2/y1>-1:M^%Z1^; [...]
  40. !?OB112; [посещение Ветряной мельницы]
  41. !!UN:P879/?y1; [проверяем включена ли опция в y1]
  42. !!FU&y1=0:E; [выход, если опция не включена]
  43. !!PO998:O?y1; [y1 - хозяин объекта]
  44. !!OW:C?y2; [y2 - текущий игрок]
  45. !!OB998:R; [разрешаем посещение объекта всем игрокам]
  46. !!PO998:Oy2; [меняем владельца мельницы]
  47. !!ML998&y1=-1:B?y3/?y4 Bd/0; [y3/y4 - тип/количество ресурса на мельнице, если мельница ничейная]
  48. !!OW&y1=-1:R-1/y3/dy4; [увеличиваем игроку ресурсы, если мельница была ничейной]
  49. !!PO998&y1=-1:V0/y3 V1/y4; [устанавливаем тип/количество текущих ресурсов в V0/V1 значения клетки]
  50. !!FU&-1000:E; [выход, если игрок ИИ]
  51. !!OB998:S; [запрещаем посещение объекта всем игрокам]
  52. !!VRz1&y1=y2:Sz179075; [сообщение, если игрок уже получал ресурсы]
  53. !!IF&y1=y2:M^%Z1^; [...]
  54. !!VRz1&y1=-1:Sz179076; [сообщение о захвате и получении ресурсов]
  55. !!IF&y1=-1:Q2/y3/y4/1^%Z1^; [...]
  56. !!VRz1&y1<>y2/y1>-1:Sz179077; [сообщение о захвате мельницы]
  57. !!IF&y1<>y2/y1>-1:M^%Z1^; [...]
  58. !?OB55; [посещение Сада лепрекона]
  59. !!UN:P879/?y1; [проверяем включена ли опция в y1]
  60. !!FU&y1=0:E; [выход, если опция не включена]
  61. !!PO998:O?y1; [y1 - хозяин объекта]
  62. !!OW:C?y2; [y2 - текущий игрок]
  63. !!OB998:R; [разрешаем посещение объекта всем игрокам]
  64. !!PO998:Oy2; [меняем владельца мельницы]
  65. !!GD998:B?y3; B0; [y3/y4 - тип/количество ресурса в саду, если сад ничейный]
  66. !!VRy4&y3<>6:S5; [...]
  67. !!VRy4&y3=6:S500; [...]
  68. !!OW&y1=-1:R-1/y3/dy4; [увеличиваем игроку ресурсы, если сад был ничейным]
  69. !!PO998&y1=-1:V0/y3 V1/y4; [устанавливаем тип/количество текущих ресурсов в V0/V1 значения клетки]
  70. !!FU&-1000:E; [выход, если игрок ИИ]
  71. !!OB998:S; [запрещаем посещение объекта всем игрокам]
  72. !!VRz1&y1=y2:Sz179078; [сообщение, если игрок уже получал ресурсы]
  73. !!IF&y1=y2:M^%Z1^; [...]
  74. !!VRz1&y1=-1:Sz179079; [сообщение о захвате и получении ресурсов]
  75. !!IF&y1=-1:Q2/y3/y4/1^%Z1^; [...]
  76. !!VRz1&y1<>y2/y1>-1:Sz179080; [сообщение о захвате сада]
  77. !!IF&y1<>y2/y1>-1:M^%Z1^; [...]
  78. !?CM0; [информация по ПКМ на карте/объекте]
  79. !!UN:P879/?y1; [проверяем включена ли опция в y1]
  80. !!CM:F?y2; [тип клика 512-ПКМ]
  81. !!FU|y1=0/y2<>512:E; [выход, если опция не включена или не ПКМ]
  82. !!CM:P?v2/?v3/?v4; [v2-v4 - координаты клика]
  83. !!FU420000:P; [корректировка координат]
  84. !!OB2:T?y1; [y1 - тип объекта]
  85. !!FU&y1<>112/y1<>109/y1<>55:E;[выход если клик не на мельнице/садке]
  86. !!CM:R0; [отключаем стандартное ПКМ-действие]
  87. !!PO2:O?y2; [y2 - владелец объекта]
  88. !!OW:C?y3; [y3 - текущий игрок]
  89. !!UN:P36/?y9; [y9 - проверка скрипта Mithril Enhancements]
  90. !!PO2&y9>0:N?y10; [y10 - пользовательское число, если Mithril Enhancements активен (см. скрипт 42wog)]
  91. !!VRz1&y2<>y3/y1=112/y2=-1:Sz179081;[сообщение "ничейная возд. мельница"]
  92. !!VRz1&y2<>y3/y1=112/y2>-1:Sz179084;[сообщение "чужая возд. мельница"]
  93. !!VRz1&y2=y3/y1=112:Sz179088; [сообщение "своя ветряная мельница"]
  94. !!VRz1&y2<>y3/y1=112/y2=-1/y10<4/y10>1:Sz179651;[сообщение "ничейная улучшенная возд. мельница"]
  95. !!VRz1&y2<>y3/y1=112/y2>-1/y10<4/y10>1:Sz179652;[сообщение "чужая улучшенная возд. мельница"]
  96. !!VRz1&y2=y3/y1=112/y10<4/y10>1:Sz179653; [сообщение "своя улучшенная ветряная мельница"]
  97. !!VRz1&y2<>y3/y1=109/y2=-1:Sz179082;[сообщение "ничейная водн. мельница"]
  98. !!VRz1&y2<>y3/y1=109/y2>-1:Sz179085;[сообщение "чужая водн. мельница"]
  99. !!VRz1&y2=y3/y1=109:Sz179650; [сообщение "своя водн. мельница"]
  100. !!VRz1&y2<>y3/y1=109/y2=-1/y10<4/y10>1:Sz179654;[сообщение "ничейная улучшенная водн. мельница"]
  101. !!VRz1&y2<>y3/y1=109/y2>-1/y10<4/y10>1:Sz179655;[сообщение "чужая улучшенная водн. мельница"]
  102. !!VRz1&y2=y3/y1=109/y10<4/y10>1:Sz179656; [сообщение "своя улучшенная водн. мельница"]
  103. !!VRz1&y2<>y3/y1=55/y2=-1:Sz179083;[сообщение "ничейный сад"]
  104. !!VRz1&y2<>y3/y1=55/y2>-1:Sz179086;[сообщение "чужой сад"]
  105. !!VRz1&y2=y3/y1=55:Sz179087; [сообщение "свой сад"]
  106. !!PO2&y2=y3:V0/?y4 V1/?y5; [y4/y5 - тип и количество принесенных ресурсов, если объект свой]
  107. !!IF&y2=-1:Q2/-1/-1/4/z1; [вывод сообщения "ничейный"]
  108. !!IF&y3<>y2/y2>-1:Q2/10/y2/4/z1;[вывод сообщения "чужой"]
  109. !!IF&y3=y2:Q2/y4/y5/4/z1; [вывод сообщения "свой"]
  110. !?TM99; [поставка ресурсов владельцам мельниц/садов каждый первый день недели, начиная с 8го дня]
  111. !!UN:P879/?y1; [проверяем включена ли опция в y1]
  112. !!FU&y1=0:E; [выход, если опция не включена]
  113. !!VRy1:Sc; !!FU&y1<2:E; [автосбор отключен в первый день]
  114. !!VRy1:%7; !!FU&y1<>1:E; [автосбор ресурсов по понедельникам]
  115. !!OW:C?y1; [y1 - текущий игрок]
  116. !!UN:U112/-1/?y2; [y2 - количество Ветряных мельниц]
  117. !!VRv1:S-1; [инициализация v1 для быстрого поиска]
  118. !!DO7934/1/y2/1:Py1/112; [для каждого объекта передаем ресурсы владельцу]
  119. !!UN:U109/-1/?y2; [y2 - количество Водных мельниц]
  120. !!VRv1:S-1; [инициализация v1 для быстрого поиска]
  121. !!DO7934/1/y2/1:Py1/109; [для каждого объекта передаем ресурсы владельцу]
  122. !!UN:U55/-1/?y2; [y2 - количество Садов лепрекона]
  123. !!VRv1:S-1; [инициализация v1 для быстрого поиска]
  124. !!DO7934/1/y2/1:Py1/55; [для каждого объекта передаем ресурсы владельцу]
  125. !?FU7934; [x1 - текущий игрок, x2 - тип объекта]
  126. !!UN:Ux2/-1/-1/1; [получаем координаты объекта в v1-v3]
  127. !!PO1:O?y1; [y1 - владелец объекта]
  128. !!FU&y1<>x1:E; [выход, если текущий игрок не владелец]
  129. !!UN:P36/?y9; [y9 - проверка скрипта Mithril Enhancements]
  130. !!PO1&y9>0:N?y10; [y10 - пользовательское число, если Mithril Enhancements активен (см. скрипт 42wog)]
  131. !!ML1&x2=112:B?y2/?y3 By2/0; [y2/y3 - тип/количество текущих ресурсов объекта. обнуляем количество]
  132. !!VRy3&x2=112/y9>0/y10<4/y10>1:*2; [*2 количества ресурсов за апгрейд]
  133. !!WM1&x2=109:B?y3 B0; [...]
  134. !!VRy3&x2=109:*500; [...]
  135. !!VRy2&x2=109:S6; [...]
  136. !!VRy3&x2=109/y9>0/y10<4/y10>1:*2; [х2 количества денег за апгрейд]
  137. !!GD1&x2=55:B?y2; [...]
  138. !!VRy3&x2=55/y2<>6:S5; [...]
  139. !!VRy3&x2=55/y2=6:S500; [...]
  140. !!PO1:V0/y2 V1/y3; [устанавливаем тип/количество текущих ресурсов в V0/V1 значения клетки]
  141. !!OW:Rx1/y2/dy3; [увеличиваем ресурсы игрока]
  142. !?FU420000; Координаты объекта в v2/v3/v4 обновляются на правильные (желтый квадрат). Автор: gamecreator
  143. ; v2/v3/v4 - coords
  144. !!UN:C6919480/4/?y1; 0x699538
  145. !!VRy1:+130112; 0x1FC40
  146. !!UN:Cy1/4/?y2; y2 = map tiles
  147. !!VRy1:+4;
  148. !!UN:Cy1/4/?y3; y3 = map size
  149. !!VRy5:Sv4 *y3 +v3 *y3 +v2 *38 +y2; this object, 0x26 is tile size
  150. !!VRv2:C0/0/0; reuse vars
  151. **SN:E4239120/2/?v2/y5/0/0; thiscall 0x40AF10 (map tile, screenX?, screenY?) for struct{0,0,0}
  152. !!SN:E5230832/2/y5; !!VRv1&v1<1:Sy5; [(c) igrik]
  153. ; v1 = yellow tile
  154. !!VRv1:-y2 :38; object index
  155. !!VRv2:Sv1 %y3; x
  156. !!VRv3:Sv1 :y3 %y3; y
  157. !!VRv4:Sv1 :y3 :y3; l
  158. ** end

# Text resource for "option 879 - capture mills and gardens.erm"
179072 {Водяная Мельница}

На этой неделе Водяная мельница уже отсылала золото.
Новое будет только на следующей неделе.
179073 {Водяная Мельница}

Вы захватили Водяную мельницу под свой контроль.
Теперь каждую неделю Водяная мельница будет приносить Вам золото.
Сейчас она Вам отдает:
179074 {Водяная Мельница}

Вы захватили Водяную мельницу под свой контроль.
Теперь каждую неделю Водяная мельница будет приносить Вам золото.
179075 {Ветряная Мельница}

На этой неделе Ветряная мельница уже отсылала ресурсы.
Новые будут только на следующей неделе.
179076 {Ветряная Мельница}

Вы захватили Ветряную мельницу под свой контроль.
Теперь каждую неделю Ветряная мельница будет приносить Вам ресурсы.
Сейчас она Вам отдает:
179077 {Ветряная Мельница}

Вы захватили Ветряную мельницу под свой контроль.
Теперь каждую неделю Ветряная мельница будет приносить Вам ресурсы.
179078 {Мистический сад}

На этой неделе Мистический сад уже отсылал ресурсы.
Новые будут только на следующей неделе.
179079 {Мистический сад}

Вы захватили Мистический сад под свой контроль.
Теперь каждую неделю Мистический сад будет приносить Вам ресурсы.
Сейчас он Вам отдает:
179080 {Мистический сад}

Вы захватили Мистический сад под свой контроль.
Теперь каждую неделю Мистический сад будет приносить Вам ресурсы.
179081 {Ветряная Мельница}

Никому не принадлежит.
179082 {Водяная Мельница}

Никому не принадлежит.
179083 {Мистический сад}

Никому не принадлежит.
179084 {Ветряная Мельница}

Принадлежит игроку:
179085 {Водяная Мельница}

Принадлежит игроку:
179086 {Мистический сад}

Принадлежит игроку:
179087 {Мистический сад}

На этой неделе мистический сад принес:
179088 {Ветряная Мельница}

На этой неделе ветряная мельница принесла:
179650 {Водяная Мельница}

На этой неделе водяная мельница принесла:
179651 {Улучшенная Ветряная Мельница}

Никому не принадлежит.
179652 {Улучшенная Ветряная Мельница}

Принадлежит игроку:
179653 {Улучшенная Ветряная Мельница}

На этой неделе ветряная мельница принесла:
179654 {Улучшенная Водяная Мельница}

Никому не принадлежит.
179655 {Улучшенная Водяная Мельница}

Принадлежит игроку:
179656 {Улучшенная Водяная Мельница}

На этой неделе водяная мельница принесла:
179657
13.10.2023 21:23
Find all posts by this user Quote this message in a reply
daemon_n Offline
Administrators

Posts: 4345
Post: #2

ArKan, что за версия игры?


Image: widget.png?style=banner2

Новейший Heroes Launcher
13.10.2023 22:29
Visit this user's website Find all posts by this user Quote this message in a reply
ArKan Offline

Posts: 225
Post: #3

3.9
14.10.2023 01:00
Find all posts by this user Quote this message in a reply
daemon_n Offline
Administrators

Posts: 4345
Post: #4

ArKan, всё нужное в данной опции я уже давно по-человечески переписал. И буквально сегодня добавил поддержку мультиплеера, чтобы удалённый игрок сразу получал корректный цвет флага при захвате. В общем, код можешь оттуда взять, хотя весь тебе не нужен.
Скажу иначе, код на erm1 мало кому интересен и привлекателен. Особенно чужой.166


Image: widget.png?style=banner2

Новейший Heroes Launcher
14.10.2023 02:08
Visit this user's website Find all posts by this user Quote this message in a reply
ArKan Offline

Posts: 225
Post: #5

daemon_n, Спасибо, а откуда оттуда?
14.10.2023 02:48
Find all posts by this user Quote this message in a reply
Sandris Offline

Posts: 423
Post: #6

(14.10.2023 02:48)ArKan Wrote:  daemon_n, Спасибо, а откуда оттуда?
Сутки назад обновилась сборка через Лаунчер. Он в подписи у daemon_n
14.10.2023 03:09
Find all posts by this user Quote this message in a reply
ArKan Offline

Posts: 225
Post: #7

А, спасибо, понял.

Может ли кто текст этого скрипта выложить сюда в тему?
14.10.2023 04:46
Find all posts by this user Quote this message in a reply
Sandris Offline

Posts: 423
Post: #8

(14.10.2023 04:46)ArKan Wrote:  Может ли кто текст этого скрипта выложить сюда в тему?
https://disk.yandex.ru/d/rjRm3kTO2MTMtQ
14.10.2023 05:21
Find all posts by this user Quote this message in a reply
ArKan Offline

Posts: 225
Post: #9

Спасибо, а ert аналогичен старому?
14.10.2023 08:12
Find all posts by this user Quote this message in a reply
Sandris Offline

Posts: 423
Post: #10

(14.10.2023 08:12)ArKan Wrote:  Спасибо, а ert аналогичен старому?
https://disk.yandex.ru/d/Sdk-F_cl5bHQ5A
ert уже не используется, сейчас внедрен json
14.10.2023 08:29
Find all posts by this user Quote this message in a reply
ArKan Offline

Posts: 225
Post: #11

Благодарю!
14.10.2023 23:59
Find all posts by this user Quote this message in a reply
ArKan Offline

Posts: 225
Post: #12

  1. ZVSE2
  2. ** Author orig. : DracoLich
  3. ** Updated by : Archer30
  4. ** Name : Capture the mills and leprechaun's gardens
  5. ** Name rus. : «ахват мельниц и садов лепрекона
  6. ** Changes rus. : [Algor] вынос опции в отдельный файл дл€ мода ERA, построчные комментарии
  7. ** [Algor] вынос текстов в ert-файл
  8. ** [Algor] технологи€ быстрого поиска дл€ UN:U
  9. ** Options : 879
  10. ** Dialogs : -
  11. ** Variables : -
  12. ** Tmp variables : v1-v3, z1
  13. ** Timers : -
  14. ** Functions : -
  15. ** PO-values : V0, V1 (mills and leprechaun's gardens squares)
  16. ** дублирование стандартных триггеров
  17. *?FU(ES_OnMapItem_HasFlag);
  18. *!UN:Cx1/(STRUCT_HOOK_CONTEXT_EAX)/4/?(objType:y);
  19. *!IF:L^%(objType:y)^;
  20. *!if&(objType)=(OBJ_WATER_WHEEL);
  21. *!IF:L^1^;
  22. *!en;
  23. 28.07.2022 Fully rewritten by daemon_n
  24. !?FU(ES_CreateERMHook);
  25. !#VA(address:x);
  26. !!UN:P879/?(isCaptureObjOpt:y);
  27. !!if&(isCaptureObjOpt);
  28. !!SN:E(address)/1/4864048/(ES_OnPlayerVisit_MystGarden); [Trigger on player visiting Mysticism Garden]
  29. !!SN:E(address)/1/4880976/(ES_OnPlayerVisit_WaterWheel); [Trigger on player viisiting Water Wheel]
  30. !!SN:E(address)/1/4881456/(ES_OnPlayerVisit_WindMill); [Trigger on player visiting Wind Mill]
  31. !!SN:E(address)/1/4263804/(ES_OnMapItem_GetOwner);
  32. !!SN:E(address)/1/4263370/(ES_OnMapItem_Draw);
  33. !!en;
  34. !?FU(OnGameEnter);
  35. !!UN:P879/?(isCaptureObjOpt:y);
  36. !!if&(isCaptureObjOpt);
  37. //replace wind mill grass
  38. !!re i/0/7;(end_value);
  39. !!SN:R^AVMwndd0.def:0_%i.png^/^Data\Defs\ESwind00.def\0_%i.png^;;
  40. !!en;
  41. //replace wind mill snow
  42. !!re i/0/7;(end_value);
  43. !!SN:R^AVMwmsn0.def:0_%i.png^/^Data\Defs\ESwind10.def\0_%i.png^;;
  44. !!en;
  45. //replace OBJ_WATER_WHEEL
  46. !!re i/0/7;(end_value);
  47. !!SN:R^AVMwwhl0.def:0_%i.png^/^Data\Defs\ESwtr00.def\0_%i.png^;;
  48. !!en;
  49. //replace OBJ_WATER_WHEEL snow
  50. !!SN:R^AVMwwsn0.def:0_0.png^/^Data\Defs\ESwtr10.def\0_0.png^;;
  51. //replace OBJ_MYSTICAL_GARDEN
  52. !!re i/0/14;(end_value);
  53. !!SN:R^avtmyst0.def:0_%i.png^/^Data\Defs\ESmyst0.def\0_%i.png^;;
  54. !!en;
  55. !!en;
  56. !?FU(ES_OnMapItem_GetOwner)&i^ES_879_DrawObjectType^;
  57. !!UN:Cx1/(STRUCT_HOOK_CONTEXT_EBP)/4/?(ebp:y) C(ebp)/-68/4/?(coords:y);
  58. !!FU(ES_UnPackedCoords):P?(x:y)/?(y:y)/?(z:y)/(coords);
  59. !!PO(x)/(y)/(z):O?(owner:y);
  60. !!UN:Cx1/(STRUCT_HOOK_CONTEXT_EAX)/4/(owner);?(objType:y);
  61. !!UN:Cx1/(STRUCT_HOOK_CONTEXT_EDI)/4/?(mapitem:y) C(mapitem:y)/56/4/i^ES_879_DrawObjectType^; [restore obj type]
  62. !!VRi^ES_879_DrawObjectType^:S(NULL);
  63. !?FU(ES_OnMapItem_Draw);
  64. !!UN:Cx1/(STRUCT_HOOK_CONTEXT_EDI)/4/?(mapitem:y) C(mapitem:y)/56/4/?(objType:y);
  65. *!UN:Cx1/(STRUCT_HOOK_CONTEXT_EAX)/4/?(objType:y);
  66. !!if|(objType)=(OBJ_WATER_WHEEL)/(objType)=(OBJ_MYSTICAL_GARDEN)/(objType)=(OBJ_WINDMILL);
  67. !!VRi^ES_879_DrawObjectType^:S(objType);
  68. !!UN:C(mapitem:y)/56/4/(OBJ_CREATURE_GENERATOR_1); [emulate obj gen 1 to get color]
  69. !!en;
  70. !?FU(ES_OnPlayerVisit_MystGarden)&i^ES_879_isAuto^=(FALSE);
  71. !!FU(ES_879_OnVisitResourceObject):Px1/?(owner:y);
  72. *!if&999;
  73. *!GD2:B?(resType:y);
  74. *!VR(value:y):S5;
  75. *!VR(value)&(resType)=(RES_GOLD):S500;
  76. *!FU(ES_879_ShowMessage):P(owner)/(OBJ_MYSTICAL_GARDEN)/(resType)/(value);
  77. *!en;
  78. !?FU(ES_OnPlayerVisit_WaterWheel)&i^ES_879_isAuto^=(FALSE);
  79. !!FU(ES_879_OnVisitResourceObject):Px1/?(owner:y);
  80. *!if&999;
  81. *!WM2:B?(value:y);
  82. *!VR(value):*500;
  83. *!FU(ES_879_ShowMessage):P(owner)/(OBJ_WATER_WHEEL)/(RES_GOLD)/(value);
  84. *!en;
  85. !?FU(ES_OnPlayerVisit_WindMill)&i^ES_879_isAuto^=(FALSE);
  86. !!FU(ES_879_OnVisitResourceObject):Px1/?(owner:y);
  87. *!if&999;
  88. *!ML2:B?(resType:y)/?(value:y);
  89. *!FU(ES_879_ShowMessage):P(owner)/(OBJ_WINDMILL)/(resType)/(value);
  90. *!en;
  91. !?FU(ES_879_ShowMessage);
  92. !#VA(owner:x) (objType:x) (res:x) (value:x);
  93. !!if&(owner)<>i^timerOwner^;
  94. !!if&(owner)=(NO_OWNER);
  95. !!SN:T^es.879.%(objType)_Gives^/?(msg:z);
  96. !!IF:Q2/(res)/(value)/(MSG_TYPE_MES)/(msg);
  97. !!el;
  98. !!OW:T(owner)/?(team:y) Ti^timerOwner^/?(newTeam:y);
  99. ; Show message if the owner and the visiting player are on different teams
  100. !!if&(team)<>(newTeam);
  101. !!SN:T^es.879.%(objType)_Owned^/?(msg:z);
  102. !!IF:M(msg);
  103. !!en;
  104. !!en;
  105. !!el;
  106. !!SN:T^es.879.%(objType)_Sent^/?(msg:z);
  107. !!IF:M(msg);
  108. !!en;
  109. !?FU(ES_879_OnVisitResourceObject);
  110. !#VA(addr:x) (owner:x);
  111. *!UN:Cx1/(STRUCT_HOOK_CONTEXT_ESP)/4/?(esp:y) C(esp)/16/4/0;
  112. !!UN:Cx1/(STRUCT_HOOK_CONTEXT_EBP)/(UNC_INT)/?(ebp:y) C(ebp)/16/(UNC_INT)/?(coords:y);
  113. !!FU(ES_UnPackedCoords):P?(x:y)/?(y:y)/?(z:y)/(coords);/8/?(sth:y)/8;
  114. !!VRv2:C(x)/(y)/(z);
  115. !!PO(x)/(y)/(z):O?(owner);
  116. !!if&(owner)=(NO_OWNER);
  117. !!PO(x)/(y)/(z):Oi^timerOwner^;
  118. !!PO(x)/(y)/(z):V0/0 V1/0; [res type and num]
  119. !!el;
  120. !!OW:T(owner)/?(team:y) Ti^timerOwner^/?(newTeam:y);
  121. !!if&(team)<>(newTeam);
  122. !!PO(x)/(y)/(z):Oi^timerOwner^;
  123. !!PO(x)/(y)/(z):V0/0 V1/0; [res type and num]
  124. !!en;
  125. !!en;
  126. !!if&(ERM_FLAG_IS_HUMAN);
  127. !!HE(CURRENT_HERO):P?(xH:y)/?(yH:y)/?(zH:y);
  128. !!if|(xH)<>(x)/(yH)<>(y)/(zH)<>(z);
  129. !!VRi^ES_879_isRMC^:S(TRUE);
  130. !!en;
  131. !!en;
  132. !?FU(OnAdventureMapRightMouseClick_Quit)&i^ES_879_isRMC^;
  133. !!VRi^ES_879_isRMC^:S(FALSE);
  134. !?FU(OnAdventureMapRightMouseClick)&i^ES_879_isRMC^<>(TRUE);
  135. !!UN:P879/?(wogOption:y); [провер€ем включена ли опци€]
  136. !!FU&(wogOption)<>(TRUE):E;
  137. !!OW:C?(player:y)/?(interactPlayer:y) A(interactPlayer)/?(activeHero:y);
  138. !!if&(activeHero)<>(NO_HERO);
  139. !!HE(activeHero):P?(x:y)/?(y:y)/?(z:y);
  140. !!FU&i^mouse_mapX^=(x)/i^mouse_mapY^=(y)/i^mouse_mapZ^=(z):E; // exit if click on hero
  141. !!en;
  142. !!CM:P?(x:y)/?(y:y)/?(z:y); [координаты клика]
  143. !!OB(x)/(y)/(z):T?(objType:y); [тип объекта]
  144. !!FU&(objType)<>(OBJ_WINDMILL)/(objType)<>(OBJ_WATER_WHEEL)/(objType)<>(OBJ_MYSTICAL_GARDEN):E;[выход если клик не на мельнице/садке]
  145. !!SN:O?(x)/?(y)/?(z); [корректировка координат]
  146. !!PO(x)/(y)/(z):O?(owner:y); [владелец объекта]
  147. !!if&(owner)>(NO_OWNER);
  148. ; Disable standard action
  149. !!CM:R0;
  150. ; Set up strings
  151. !!FU(ES_879_GetObjectName):P(x)/(y)/(z)/(objType)/?(rmbStr:z);
  152. !!FU(ES_GameMgr_GetObjOwnerStr):P(owner)/?(ownerStr:z);
  153. !!VR(rmbStr):+^%T(es.endl)%(ownerStr)^;
  154. !!VR(res:y):S(NO_PIC_TYPE);
  155. !!VR(num:y):S(NO_PIC_TYPE);
  156. ; Set up text for what have been brought this week if the clicked objects belongs to the interacting player
  157. !!if&(owner)=(interactPlayer);
  158. !!PO(x)/(y)/(z):V0/?(res:y) V1/?(num:y); [тип и количество принесенных ресурсов, если объект свой]
  159. !!if&(num)=0;
  160. !!VR(res:y):S(NO_PIC_TYPE);
  161. !!VR(num:y):S(NO_PIC_TYPE);
  162. !!el;
  163. !!SN:T^es.879.%(objType)_Brought^/?(txt:z);
  164. !!VR(rmbStr):+(txt);
  165. !!en;
  166. !!en;
  167. !!IF:Q2/(PIC_TYPE_FLAG)/(owner)/(res)/(num)/(MSG_TYPE_POPUP)/(rmbStr); [вывод сообщени€ "чужой"]
  168. !!en;
  169. !?FU(OnAdvMapTileHint);
  170. !#VA(x:x) (y:x) (z:x); Object entrance coordinates
  171. !#VA(objType:x) (objSubtype:x); Type and subtype of object. For active hero it's object under hero.
  172. !#VA(tileX:x) (tileY:x) (tileZ:x); Real tile coordinates.
  173. !!UN:P879/?(wogOption:y);
  174. !!FU&(wogOption)<>(TRUE):E;
  175. !!FU&(objType)<>(OBJ_WINDMILL)/(objType)<>(OBJ_WATER_WHEEL)/(objType)<>(OBJ_MYSTICAL_GARDEN):E;
  176. !!OW:Cd/?(clickedPlayer:y) A(clickedPlayer:y)/?(activeHero:y);
  177. !!if&(activeHero)<>(NO_HERO);/(objType)=(OBJ_FIRST);
  178. !!HE(activeHero):P?(xH:y)/?(yH:y)/?(zH:y);
  179. !!FU&(xH)=(tileX)/(yH)=(tileY)/(zH)=(tileZ):E;
  180. !!en;
  181. !!PO(x)/(y)/(z):O?(owner:y);
  182. ; Correct owner if the owner has been removed from the game
  183. !!OW:I(owner)/?(isAi:y)/?(hasLost:y);
  184. !!if&(hasLost);
  185. !!VR(owner):S(NO_OWNER);
  186. !!PO(x)/(y)/(z):O(NO_OWNER);
  187. !!en;
  188. !!FU(ES_879_GetObjectName):P(x)/(y)/(z)/(objType)/?(newHint:z);
  189. !!if&(owner)>(NO_OWNER);
  190. !!VR(ownerStrIndex:y):S(owner) +23;
  191. !!FU(GetTextFileString):P^arraytxt^/(ownerStrIndex)/?(ownerStr:z);
  192. !!VR(newHint):+^ - %(ownerStr)^;
  193. !!en;
  194. !!MM:M^%(newHint)^;
  195. !?FU(OnEveryDay)&i^timerWeekday^=1/i^timerDay^>1/i^timerOnce^; [поставка ресурсов владельцам мельниц/садов каждый первый день недели, начина€ с 8го дн€]
  196. !!UN:P879/?(wogOption:y); [провер€ем включена ли опци€ в y1]
  197. !!FU&(wogOption)<>(TRUE):E; [выход, если опци€ не включена]
  198. !!FU(NewIntArray):P8/?(liveArr:y);
  199. !!re (playerID:y)/0/(PLAYER_LAST);
  200. !!OW:I(playerID)/d/?(isDead:y);
  201. !!SN&(isDead)=(FALSE):V(liveArr)/(playerID)/(TRUE);
  202. !!en;
  203. !!re i/0/(HERO_LAST_WOG);
  204. !!HEi:O?(owner:y);
  205. !!if&(owner)=(NO_OWNER);
  206. !!HEi:Z?(hero:y);
  207. !!br;
  208. !!en;
  209. !!en;
  210. !!VRi^ES_879_isAuto^:S(TRUE);
  211. !!FU(ES_879_CollectResources):P4864048/(OBJ_MYSTICAL_GARDEN)/(hero)/(liveArr);
  212. !!FU(ES_879_CollectResources):P4880976/(OBJ_WATER_WHEEL)/(hero)/(liveArr);
  213. !!FU(ES_879_CollectResources):P4881456/(OBJ_WINDMILL)/(hero)/(liveArr);
  214. !!UN:C(hero)/34/1/(NO_OWNER);
  215. !!VRi^ES_879_isAuto^:S(FALSE);
  216. !?FU(ES_879_CollectResources);
  217. !#VA(funcAddr:x) (objType:x) (hero:x) (liveArr:x);
  218. !#VA(x:y) (y:y) (z:y);
  219. !!VR(x):S-1; [init as start]
  220. !!re i; [endless loop]
  221. !!UN:U(objType)/(ANY_OBJ)/-1/(x)/(y)/(z);
  222. !!br&(x)<0; [exit loop if nothing found]
  223. !!PO(x)/(y)/(z):O?(owner:y); [get obj owner]
  224. !!if&(owner)<>(NO_OWNER); [if there is one]
  225. !!SN:V(liveArr)/(owner)/?(isAlive:y); [check if lives]
  226. !!if&(isAlive);
  227. !!UN:C(hero)/34/1/(owner); [set hero as obj owner color]
  228. !!OB(x)/(y)/(z):T?(heroCheck:y);
  229. !!if&(heroCheck)=(OBJ_HERO);
  230. !!HE(x)/(y)/(z):Z?(badHero:y);
  231. !!SN:E5077328/(CALLCONV_THISCALL)/(badHero); [hide hero if it is there]
  232. !!en;
  233. !!FU(ES_AdvMgr_GetMapItem):P(x)/(y)/(z)/?(mapItem:y); [get mapItem]
  234. !!FU(ES_879_AdjustStoredRes):P(x)/(y)/(z)/(objType);
  235. !!SN:E(funcAddr)/(CALLCONV_STDCALL)/(hero)/(mapItem)/0; [visit mapItem as AI]
  236. !!el;
  237. !!PO(x)/(y)/(z):O(NO_OWNER) V0/0 V1/0; [set no owner if is dead]
  238. !!en;
  239. !!en;
  240. !!en;
  241. !?FU(ES_879_AdjustStoredRes);
  242. !#VA(x:x) (y:x) (z:x) (objType:x);
  243. !!if&(objType)=(OBJ_MYSTICAL_GARDEN);
  244. !!GD(x)/(y)/(z):B?(resType:y);
  245. !!VR(value:y):S5;
  246. !!VR(value)&(resType)=(RES_GOLD):S500;
  247. !!el&(objType)=(OBJ_WATER_WHEEL);
  248. !!WM(x)/(y)/(z):B?(resCoeff:y);
  249. !!VR(value:y):S(resCoeff)*500;
  250. !!VR(resType):S(RES_GOLD);
  251. !!el;
  252. !!ML(x)/(y)/(z):B?(resType:y)/?(value:y);
  253. !!en;
  254. !!PO(x)/(y)/(z):V0/(resType) V1/(value);
  255. !?FU(ES_879_GetObjectName);
  256. !#VA(x:x) (y:x) (z:x) (objType:x) (objNamePtr:x);
  257. ; Set up object names
  258. !!FU(GetTextFileString):P^objnames^/(objType)/?(objName:z); [windmill]
  259. ; Set up "Improved" object text if Mithril Enhancedment is enabled
  260. !!VR(isUpg:y):S(FALSE);
  261. !!UN:P36/?(enhMithril:y);
  262. !!PO(x)/(y)/(z)&(enhMithril):N?(isUpg);
  263. !!VR(objName)&(isUpg):S^%T(es.879.improved)%(objName)^;
  264. !!VR(objNamePtr):Z(objName);
  265. ** end
15.10.2023 00:44
Find all posts by this user Quote this message in a reply
daemon_n Offline
Administrators

Posts: 4345
Post: #13

без обновлённой библиотеки ES работать не будет. Лучше просто ставь саму сборку, ну и через день или два я ещё обнову выкачу.


Image: widget.png?style=banner2

Новейший Heroes Launcher
15.10.2023 01:34
Visit this user's website Find all posts by this user Quote this message in a reply
ArKan Offline

Posts: 225
Post: #14

Оно и понятно что не будет работать.

Вот как исправить исходный код, вот это мне не понятно.

По идее элементарно должно же...
15.10.2023 04:24
Find all posts by this user Quote this message in a reply
daemon_n Offline
Administrators

Posts: 4345
Post: #15

  1. !!PO998:O?y35; сохрани владельца
  2. !!OW:C?y2; [y2 - текущий игрок]
  3. !!if&y35>=0:; если уже есть владелец
  4. !!OW:Ty2/?y39 Ty35/?y36; получаем команды владельцев
  5. !!FU&y39=y36:E; выходим, если равны
  6. !!en:;
  7. !!OB998:R; [разрешаем посещение объекта всем игрокам]
  8. !!PO998:Oy2; [меняем владельца мельницы]
номера переменных проверь - не должны пересекаться
ну и добавь во все 3 триггера посещения объектов...


Image: widget.png?style=banner2

Новейший Heroes Launcher
15.10.2023 07:19
Visit this user's website Find all posts by this user Quote this message in a reply
« Next Oldest | Next Newest »
Post Reply 


Forum Jump:

Powered by MyBB Copyright © 2002-2025 MyBB Group