IPB

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

2 страниц V   1 2 >  
Reply to this topicStart new topic
> Значения v-переменных, Какие v-переменные отвечают за хранения какой информации
oleggy
сообщение 15 Aug 2011, 06:04
Сообщение #1

Member
Сообщений: 60
Спасибо сказали: 5 раз




Добрый день.
Есть такая утилита EVME, которая позволяет менять значения ЕРМ переменных на любые.
Столкнулся с потребностью с помошью ней изменить некую информацию в игре.

Ребят, кто знает, подскажите какая v-переменная отвечает за вкл./откл. WoG опций?
Если не знаете то подскажите как в самом скрипте понять?

Конкретно сейчас интересует расширение "Волшебство l" (опция 23, script 23).
Go to the top of the pageAdd Nick
 
+Quote Post
feanor
сообщение 15 Aug 2011, 09:41
Сообщение #2

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




А причем тут v-переменные? За включение/выключение UN:P опции всю жизнь отвечали.
Go to the top of the pageAdd Nick
 
+Quote Post
oleggy
сообщение 15 Aug 2011, 10:32 (Сообщение отредактировал oleggy - 15 Aug 2011, 10:40)
Сообщение #3

Member
Сообщений: 60
Спасибо сказали: 5 раз




Я конечно не специалист. Но перед мной стоит задача в самой игре (уже загруженной) включить WOG опцию которая была отключена изначально.
Как это сделать?
Я так понял утилита DEE не может этого сделать. Она только загружает скрипты в память. А вот будут скрипты выполнятся или нет зависит от значения соответствующей переменной, в памяти, которая и опередеяет, включена ли опция или отключена. С помощью утилиты EVME можно принудительно записать в эту переменную такое значение которое соотвествует включению WOG опции.
Я просто не до конца знаю, UN:P соответствует какой v-переменной?
Go to the top of the pageAdd Nick
 
+Quote Post
feanor
сообщение 15 Aug 2011, 10:39
Сообщение #4

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




Можно попробовать переписать скрипт, убрать проверки на опции и переместить инструкции в !?GM0 и загрузить его через DEE..не знаю, сработает ли.

Цитата
Я просто не до конца знаю "UN:P" соответствует какой v-переменной?

Никакой. Опции лежат в отдельной песочнице.
Go to the top of the pageAdd Nick
 
+Quote Post
gamecreator
сообщение 15 Aug 2011, 12:34
Сообщение #5

Яблочный произвол!
Сообщений: 11 080
Спасибо сказали: 3988 раз




выполнение скриптов с ДЕЕ:
1) выгружаем скрипт
2) дописываем триггер с нужным нам кодом
3) загружаем скрипт
4) запускаем триггер
5) выгружаем скрипт
6) убираем дописанный нами код
7) загружаем скрипт
8) ????
9) PROFIT
Go to the top of the pageAdd Nick
 
+Quote Post
feanor
сообщение 15 Aug 2011, 12:47
Сообщение #6

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




А, кстати да - можно попробовать выполнить скрипт типа

!?GM0;
!!UN:P23/1;
Go to the top of the pageAdd Nick
 
+Quote Post
Berserker
сообщение 15 Aug 2011, 16:02
Сообщение #7

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




Столько советов - и все неправильные )
Это я сказал Олегу, что v-переменные. Потому что большинство, если не все, воговские скрипты в инструкциях сохраняют опции в переменные и в условиях используют уже их.
Ищем: !#UN:P[#]/?v[...]; и запоминаем v.


--------------------
Go to the top of the pageAdd Nick
 
+Quote Post
feanor
сообщение 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;
Go to the top of the pageAdd Nick
 
+Quote Post
oleggy
сообщение 15 Aug 2011, 18:44 (Сообщение отредактировал oleggy - 15 Aug 2011, 19:04)
Сообщение #9

Member
Сообщений: 60
Спасибо сказали: 5 раз




Т.е. переменная которая отвечает за включение данной опции это v1 ?
Начал проверять ее значения, и они всегда разные для каждого сейва (от разных дней). Данные не постоянные. Так и должно быть?
Я ожидал увидеть значение 1 или 0.
Ладно, я еще поразбираюсь.
Go to the top of the pageAdd Nick
 
+Quote Post
gamecreator
сообщение 15 Aug 2011, 18:57
Сообщение #10

Яблочный произвол!
Сообщений: 11 080
Спасибо сказали: 3988 раз




нет, феанор предложил другой способ: если опция выключена, то передавать управление основной функции нужного скрипта
Go to the top of the pageAdd Nick
 
+Quote Post
Berserker
сообщение 15 Aug 2011, 19:14
Сообщение #11

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




Большинство, не все. Если найти адрес начальной опции, через Evme можно и их править.


--------------------
Go to the top of the pageAdd Nick
 
+Quote Post
feanor
сообщение 15 Aug 2011, 20:05
Сообщение #12

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




Цитата
Так и должно быть?

Да. v1 временная переменная и её правка скрипт не изменит.

Цитата
Большинство, не все. Если найти адрес начальной опции, через Evme можно и их править.

А чем предложенный мной способ с !?GM0; !!UN:P23/1; не катит?

Цитата
нет, феанор предложил другой способ: если опция выключена, то передавать управление основной функции нужного скрипта

Это просто кусок кода из 23его скрипта.
Go to the top of the pageAdd Nick
 
+Quote Post
Berserker
сообщение 15 Aug 2011, 20:30
Сообщение #13

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




Цитата
А чем предложенный мной способ с !?GM0; !!UN:P23/1; не катит?

Он катит, но вечная подгрузка-сохранение-правка мутнее, чем работа с Евме на мой вкус (при тестировании опций как хочет автор). Впрочем, решать автору запроса.


--------------------


Спасибо сказали:
Go to the top of the pageAdd Nick
 
+Quote Post
oleggy
сообщение 15 Aug 2011, 21:05 (Сообщение отредактировал oleggy - 15 Aug 2011, 21:19)
Сообщение #14

Member
Сообщений: 60
Спасибо сказали: 5 раз




Предложенное Берсом мне больше всего подходит. Более изящное решение, хотя требует более глубокого понимания.
Самое сложное это:
Цитата(Berserker @ 15 Aug 2011, 23:14) *
Если найти адрес начальной опции, через 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 ? Ее и нужно менять?
Go to the top of the pageAdd Nick
 
+Quote Post
Berserker
сообщение 15 Aug 2011, 21:18
Сообщение #15

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




Скрипт волшебства всегда получает опцию через ЕРМ, а не хранит в переменной. Если я не ошибаюсь, адрес - $2771920. Это в шестнадцатиричном виде. Массив чисел по 4 байта. В десятеричном адрес любой опции вычисляется как 41359648 + 4 * Номер опции.

В EVME r [адрес] i для чтения, w [адрес] i [новое значение] для записи,


--------------------


Спасибо сказали:
Go to the top of the pageAdd Nick
 
+Quote Post
oleggy
сообщение 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, т.е. обошелся без поиска самого адреса. В каких случаях лучше искать переменную и отключить ее а в каких случаях искать/вычислять адрес?
Go to the top of the pageAdd Nick
 
+Quote Post
gamecreator
сообщение 16 Aug 2011, 11:42
Сообщение #17

Яблочный произвол!
Сообщений: 11 080
Спасибо сказали: 3988 раз




Цитата(oleggy @ 16 Aug 2011, 05:18) *
В каких случаях лучше искать переменную и отключить ее а в каких случаях искать/вычислять адрес?
если в скрипте в инструкции есть считывание значения опции в переменную, то работать с переменной, иначе работать с опцией (адресом).
Go to the top of the pageAdd Nick
 
+Quote Post
oleggy
сообщение 16 Aug 2011, 12:23
Сообщение #18

Member
Сообщений: 60
Спасибо сказали: 5 раз




Цитата(gamecreator @ 16 Aug 2011, 15:42) *
если в скрипте в инструкции есть считывание значения опции в переменную, то работать с переменной, иначе работать с опцией (адресом).

имеешь ввиду что в таком коде:
Код
!#UN:P878/?v5078 P879/?v5079 P880/?v5080 P881/?v5081 P882/?v5082;

флаг опции сохраняется в переменные? не временные?
Go to the top of the pageAdd Nick
 
+Quote Post
feanor
сообщение 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, т.е. обошелся без поиска самого адреса. В каких случаях лучше искать переменную и отключить ее а в каких случаях искать/вычислять адрес?

Зависит от скрипта, очевидно же.
Go to the top of the pageAdd Nick
 
+Quote Post
gamecreator
сообщение 16 Aug 2011, 14:18
Сообщение #20

Яблочный произвол!
Сообщений: 11 080
Спасибо сказали: 3988 раз




Цитата(oleggy @ 16 Aug 2011, 12:23) *
имеешь ввиду что в таком коде флаг опции сохраняется в переменные?
очевидно же
Go to the top of the pageAdd Nick
 
+Quote Post

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

 



Текстовая версия Сейчас: 17 April 2024 - 00:20
Copyright by Алексей Крючков
Strategy Gamez by GrayMage
Programming by Degtyarev Dmitry
  Яндекс.Метрика