Значения v-переменных, Какие v-переменные отвечают за хранения какой информации |
Здравствуйте, гость ( Вход | Регистрация )
Значения v-переменных, Какие v-переменные отвечают за хранения какой информации |
15 Aug 2011, 06:04
Сообщение
#1
|
|
Member Сообщений: 60 Спасибо сказали: 5 раз |
Добрый день.
Есть такая утилита EVME, которая позволяет менять значения ЕРМ переменных на любые. Столкнулся с потребностью с помошью ней изменить некую информацию в игре. Ребят, кто знает, подскажите какая v-переменная отвечает за вкл./откл. WoG опций? Если не знаете то подскажите как в самом скрипте понять? Конкретно сейчас интересует расширение "Волшебство l" (опция 23, script 23). |
|
|
15 Aug 2011, 09:41
Сообщение
#2
|
|
laughed as one fey Сообщений: 12 166 Спасибо сказали: 20585 раз |
А причем тут v-переменные? За включение/выключение UN:P опции всю жизнь отвечали.
|
|
|
15 Aug 2011, 10:32
(Сообщение отредактировал oleggy - 15 Aug 2011, 10:40)
Сообщение
#3
|
|
Member Сообщений: 60 Спасибо сказали: 5 раз |
Я конечно не специалист. Но перед мной стоит задача в самой игре (уже загруженной) включить WOG опцию которая была отключена изначально.
Как это сделать? Я так понял утилита DEE не может этого сделать. Она только загружает скрипты в память. А вот будут скрипты выполнятся или нет зависит от значения соответствующей переменной, в памяти, которая и опередеяет, включена ли опция или отключена. С помощью утилиты EVME можно принудительно записать в эту переменную такое значение которое соотвествует включению WOG опции. Я просто не до конца знаю, UN:P соответствует какой v-переменной? |
|
|
15 Aug 2011, 10:39
Сообщение
#4
|
|
laughed as one fey Сообщений: 12 166 Спасибо сказали: 20585 раз |
Можно попробовать переписать скрипт, убрать проверки на опции и переместить инструкции в !?GM0 и загрузить его через DEE..не знаю, сработает ли.
Цитата Я просто не до конца знаю "UN:P" соответствует какой v-переменной? Никакой. Опции лежат в отдельной песочнице. |
|
|
15 Aug 2011, 12:34
Сообщение
#5
|
|
Яблочный произвол! Сообщений: 11 080 Спасибо сказали: 3988 раз |
выполнение скриптов с ДЕЕ:
1) выгружаем скрипт 2) дописываем триггер с нужным нам кодом 3) загружаем скрипт 4) запускаем триггер 5) выгружаем скрипт 6) убираем дописанный нами код 7) загружаем скрипт 8) ???? 9) PROFIT |
|
|
15 Aug 2011, 12:47
Сообщение
#6
|
|
laughed as one fey Сообщений: 12 166 Спасибо сказали: 20585 раз |
А, кстати да - можно попробовать выполнить скрипт типа
!?GM0; !!UN:P23/1; |
|
|
15 Aug 2011, 16:02
Сообщение
#7
|
|
Immortal Сообщений: 1 468 Спасибо сказали: 1151 раз |
Столько советов - и все неправильные )
Это я сказал Олегу, что v-переменные. Потому что большинство, если не все, воговские скрипты в инструкциях сохраняют опции в переменные и в условиях используют уже их. Ищем: !#UN:P[#]/?v[...]; и запоминаем v. -------------------- |
|
|
15 Aug 2011, 16:07
Сообщение
#8
|
|
laughed as one fey Сообщений: 12 166 Спасибо сказали: 20585 раз |
Ага, щас.
Код [Start of CM trigger]
!?CM; [Check if Sorcery script is enabled] !!UN:P23/?v1; !?CM&v1=1; [Continue trigger if Sorcery script is enabled] [Check item area clicked] !!CM:I?v1; [If item area is adventure map, call Function 5000] !!FU5000&v1=37:P; |
|
|
15 Aug 2011, 18:44
(Сообщение отредактировал oleggy - 15 Aug 2011, 19:04)
Сообщение
#9
|
|
Member Сообщений: 60 Спасибо сказали: 5 раз |
Т.е. переменная которая отвечает за включение данной опции это v1 ?
Начал проверять ее значения, и они всегда разные для каждого сейва (от разных дней). Данные не постоянные. Так и должно быть? Я ожидал увидеть значение 1 или 0. Ладно, я еще поразбираюсь. |
|
|
15 Aug 2011, 18:57
Сообщение
#10
|
|
Яблочный произвол! Сообщений: 11 080 Спасибо сказали: 3988 раз |
нет, феанор предложил другой способ: если опция выключена, то передавать управление основной функции нужного скрипта
|
|
|
15 Aug 2011, 19:14
Сообщение
#11
|
|
Immortal Сообщений: 1 468 Спасибо сказали: 1151 раз |
Большинство, не все. Если найти адрес начальной опции, через Evme можно и их править.
-------------------- |
|
|
15 Aug 2011, 20:05
Сообщение
#12
|
|
laughed as one fey Сообщений: 12 166 Спасибо сказали: 20585 раз |
Цитата Так и должно быть? Да. v1 временная переменная и её правка скрипт не изменит. Цитата Большинство, не все. Если найти адрес начальной опции, через Evme можно и их править. А чем предложенный мной способ с !?GM0; !!UN:P23/1; не катит? Цитата нет, феанор предложил другой способ: если опция выключена, то передавать управление основной функции нужного скрипта Это просто кусок кода из 23его скрипта. |
|
|
15 Aug 2011, 20:30
Сообщение
#13
|
|
Immortal Сообщений: 1 468 Спасибо сказали: 1151 раз |
Цитата А чем предложенный мной способ с !?GM0; !!UN:P23/1; не катит? Он катит, но вечная подгрузка-сохранение-правка мутнее, чем работа с Евме на мой вкус (при тестировании опций как хочет автор). Впрочем, решать автору запроса. -------------------- |
|
|
15 Aug 2011, 21:05
(Сообщение отредактировал oleggy - 15 Aug 2011, 21:19)
Сообщение
#14
|
|
Member Сообщений: 60 Спасибо сказали: 5 раз |
Предложенное Берсом мне больше всего подходит. Более изящное решение, хотя требует более глубокого понимания.
Самое сложное это: Если найти адрес начальной опции, через Evme можно и их править. Я так понимаю v1 это временная переменная. И ее изменение ничего не даст. Я тут бегло посмотрел основываясь на полученных знаниях, заметил что сторонние скрипты (не в изначальном WOG) используют различные переменные (не временные). К примеру строка кода: !#UN:P878/?v5078 P879/?v5079 P880/?v5080 P881/?v5081 P882/?v5082; Из такого кода понятно что опции 878 соответствует v5078, 879 соответст. v5079 и так далее. (Или я ошибаюсь?) А в скрипте волшебства не так выходит? Я просто думаю что временная переменная тоже должна откуда то брать свое значение, или записывать его куда-то. В какую то постоянную переменную. Там и нужно менять. Это можно как то через скрипт выяснить? Какая переменная не временная? Читая начало скрипта Код [Check if Sorcery script is enabled: v1=1] !#UN:P23/?v1; [Set Flags 410 to False] !#IF&v1=1:V410/0; Догадываюсь что если опция включена то идет установка флага 410 в ложь. Я вот не понял, флаг это переменная v410 ? Ее и нужно менять? |
|
|
15 Aug 2011, 21:18
Сообщение
#15
|
|
Immortal Сообщений: 1 468 Спасибо сказали: 1151 раз |
Скрипт волшебства всегда получает опцию через ЕРМ, а не хранит в переменной. Если я не ошибаюсь, адрес - $2771920. Это в шестнадцатиричном виде. Массив чисел по 4 байта. В десятеричном адрес любой опции вычисляется как 41359648 + 4 * Номер опции.
В EVME r [адрес] i для чтения, w [адрес] i [новое значение] для записи, -------------------- |
|
|
16 Aug 2011, 05:18
(Сообщение отредактировал oleggy - 16 Aug 2011, 12:24)
Сообщение
#16
|
|
Member Сообщений: 60 Спасибо сказали: 5 раз |
1. Берс, выходит что для волшебства 1 (опция 23) вычисления будут следующие, (для DEC): 41359648 + 4 * 23 = 41359740 (в HEX ->) $277197C. И именно в HEX виде вводить в [адрес] ? (сам в игре не проверял еще).
2. И еще, ты написал (как я понял) что все опции в WOG хранятся в массиве, где каждый элемент по 4 байта. А размер массива какой? Динамический? 3. Как я знаю во всех скриптах присутствуют порядковые номера опций, так эти номера выходит нигде не пересекаются? Ошибится то легко. Скриптов то много, причем не только в WOG но и от сторонних скриптописателей... 4. Берс, я выше привел код одного стороннего скрипта, вот он: Код !#UN:P878/?v5078 P879/?v5079 P880/?v5080 P881/?v5081 P882/?v5082; Выходит при таком способе написания (без временных v1), по каждей опции можно понять включена ли она или нет? Т.е. каждой опции заданы явно переменные, т.е. №878 - v5078 и т.д. Или не так? 5. Ранее, когда была проблема с гарнизонами на XXL карте, ты предложил простое решение, отключить все опции через переменную v576, т.е. обошелся без поиска самого адреса. В каких случаях лучше искать переменную и отключить ее а в каких случаях искать/вычислять адрес? |
|
|
16 Aug 2011, 11:42
Сообщение
#17
|
|
Яблочный произвол! Сообщений: 11 080 Спасибо сказали: 3988 раз |
|
|
|
16 Aug 2011, 12:23
Сообщение
#18
|
|
Member Сообщений: 60 Спасибо сказали: 5 раз |
если в скрипте в инструкции есть считывание значения опции в переменную, то работать с переменной, иначе работать с опцией (адресом). имеешь ввиду что в таком коде: Код !#UN:P878/?v5078 P879/?v5079 P880/?v5080 P881/?v5081 P882/?v5082; флаг опции сохраняется в переменные? не временные? |
|
|
16 Aug 2011, 13:08
Сообщение
#19
|
|
laughed as one fey Сообщений: 12 166 Спасибо сказали: 20585 раз |
Цитата 2. И еще, ты написал (как я понял) что все опции в WOG хранятся в массиве, где каждый элемент по 4 байта. А размер массива какой? Динамический? Нафиг динамический? Статический, думаю, на тыщу возможных опций. Цитата 3. Как я знаю во всех скриптах присутствуют порядковые номера опций, так эти номера выходит нигде не пересекаются? Ошибится то легко. Скриптов то много, причем не только в WOG но и от сторонних скриптописателей... Такова карма ВоГа. Войны за всевозможные индексы, lists of the claimed etc etc Цитата 5. Ранее, когда была проблема с гарнизонами на XXL карте, ты предложил простое решение, отключить все опции через переменную v576, т.е. обошелся без поиска самого адреса. В каких случаях лучше искать переменную и отключить ее а в каких случаях искать/вычислять адрес? Зависит от скрипта, очевидно же. |
|
|
16 Aug 2011, 14:18
Сообщение
#20
|
|
Яблочный произвол! Сообщений: 11 080 Спасибо сказали: 3988 раз |
|
|
|
Текстовая версия | Сейчас: 20 April 2024 - 03:24 |
Copyright by Алексей Крючков
Programming by Degtyarev Dmitry |