Перейти к содержанию

Звездное наследие, написанный скрипт не работает на другом ПК.


Рекомендуемые сообщения

По запросу Manchkin, написал скрипт (косоватый - подробности в теме).

Скрипт у меня на компе работает всегда - т.е. ГГерой бессмертен, а предметы - бесконечны (и их становится по 10 штук). 

Но у Manchkin скрипт не работает.

В чём может быть проблема?

 

У меня было предположение, что у меня всё-таки. как ранее говорил Xipho, проблема с ОС (т.е. у меня ощущение, что Винда у меня какая-то "недо64-битная"). Может быть с этим связано?

 

Если у кого есть предположение - напишите.

 

Или если кому не сложно - проверьте скрипт на своём компе. (Ссылку на игру кину в личку.)

Ссылка на комментарий
Поделиться на другие сайты

Да не работает.

Если нажать ESC и сохранится, то после возвращения в игру она не реагирует ни на какие кнопки. Так же бьётся скриншот на сейве.

 

Сначала запускал на одном компе в Вин 8.1 x64 и Вин 7 x64.

Потом на втором в Вин 8.1 x64.

Контроль учётки отключен.

 

Маленькое примечание - у меня все компы с тандемом AMD + ATI.

Ссылка на комментарий
Поделиться на другие сайты

Допишу уточнения.

В игре практически одна инструкция отвечает за всё: графику, текст, диалоги, предметы и т.д.

Т.е. через инструкция пробегает 1000 адресов. Фильтр найти практически не возможно, поэтому и написал что скрипт косоватый.

Там есть возможность использовать для фильтра смещения в структуре с текстом, но я не знаю как точно использовать текст в скрипте (создал тему.).

 

И ещё одна странность (в первые с таким сталкиваюсь) - нужные значения в игре в типе double, но код игры записывает значения двумя инструкциями, деля по 4 байта. 


Один скрипт (на предметы) написал с нормальным текстовым фильтром - см. здесь.

 

ЗЫ: Этот фильтр оказался не очень нормальным. Вчера раз пять загружал игру и всё работало. Сегодня - нет. 

Наверное фильтр работает только по чётным дням. :-D

Изменено пользователем Garik66
Ссылка на комментарий
Поделиться на другие сайты

Пытаюсь написать скрипт с использованием фильтра - вроде все адреса можно отделить на следующем уровне структуры в [[eax+20]+10]. Но игра вылетает.

 

Уже весь мозг себе вынес, никак не могу понять: толи у меня ошибка в скрипте, толи в игре есть какая-то защита.

 

Вот 

 

Мастера помогите........Плиз. %)  

 

 

[ENABLE]alloc(newMem, 128)label(returnHere)label(OK)newMem:cmp [eax+0],3jne OKpushfd               // добавил на всякий случай и всё равно вылет.push ecxmov ecx,dword ptr [eax+20]cmp dword ptr [ecx+10],5F766E69jne @fmov [eax+08],00000000mov [eax+0C],40240000@@:pop ecxpopfdOK:mov ecx,[eax+08]mov [edx+08],ecxjmp returnHereGame.exe+113B69:jmp newMemnopreturnHere:[DISABLE]Game.exe+113B69:mov ecx,[eax+08]mov [edx+08],ecxdealloc(newMem) 
Ссылка на комментарий
Поделиться на другие сайты

Нашёл решение. Вылеты происходили из-за того, что не у всех адресов, работающих с инструкцией  по смещению [eax+20] есть поинтеры и соответственно, при выполнении cmp dword ptr [ecx+10],5F766E69, происходил вылет из игры.

Так что поставил заслон из фильтров и скрипт заработал, кстати заработал и у Manchkin.

[ENABLE]alloc(newMem, 64)label(returnHere)label(OK)newMem:cmp [eax],3jne OKcmp [eax+18],4jne OKcmp [eax+28],4jne OKmov ecx,[eax+20]cmp [ecx+10],5F766E69 //'inv_'jne OKmov [eax+08],00000000mov [eax+0C],40240000OK:mov ecx,[eax+08]mov [edx+08],ecxjmp returnHereGame.exe+113B69:jmp newMemnopreturnHere:[DISABLE]Game.exe+113B69:mov ecx,[eax+08]mov [edx+08],ecxdealloc(newMem) 
  • Плюс 1
Ссылка на комментарий
Поделиться на другие сайты

×
×
  • Создать...

Важная информация

Находясь на нашем сайте, Вы автоматически соглашаетесь соблюдать наши Условия использования.