08.01.2009, 22:26 | #16 |
Матёрый пользователь
|
Будут )). Целью моей работы с памятью МСТС является заполнение вот такой структуры с адресами и значениями параметров всех подвижных единиц состава игрока:
Код:
struct pWagon{ DWORD pTM; // Давление в тормозной магистрали, psi float TM; DWORD pZR; // Давление в запасном резервуаре, psi float ZR; DWORD pTC; // Давление в тормозном цилиндре, psi float TC; DWORD pSpeed; // Скорость (м/с) float Speed; DWORD pTractiveForce; // Сила тяги float TractiveForce; DWORD pBrakeForce; // Сила торможения float BrakeForce; }; DWORD pConsist = 0x7c8778; DWORD pHour = 0x810984; // Часы игрового времени int DWORD pMin = 0x810980; // Минуты игрового времени int DWORD pSec = 0x81097c; // Секунды игрового времени int DWORD pSpeed = 0x80f680; // Скорость (м/с) float DWORD pSigAsp = 0x80f70c; // SIGASP впередистоящего светофора int А так я ищу адреса для заполнения структур pWagon: // Предполагая, что HANDLE hProcess = OpenProcess(... я уже сделал. Код:
nWag = 0; ReadProcessMemory(hProcess, (LPCVOID)pConsist, &adr1, 4, NULL); adr1 += 0x6a; ReadProcessMemory(hProcess, (LPCVOID)adr1, &adr2, 4, NULL); // Поиск адресов вагонных переменных float m_A, m_B; // Переменные записи значений меток поиска DWORD pSearch = adr2 - 0x13ef0; // Границы адресов поиска DWORD pSearchEnd = 0x2100000; while (pSearch < pSearchEnd) { ReadProcessMemory(hProcess, (LPCVOID)pSearch, &m_A, 4, NULL); if (m_A == 76) { ReadProcessMemory(hProcess, (LPCVOID)(pSearch + 0xC), &m_B, 4, NULL); if (m_B == 60) { nWag += 1; Wag(nWag).pZR = pSearch - 0x4; Wag(nWag).pTC = pSearch + 0x8; Wag(nWag).pTM = pSearch + 0x10; Wag(nWag).pSpeed = pSearch - 0x6c; Wag(nWag).pBrakeForce = pSearch + 0x4; Wag(nWag).pTractiveForce = pSearch + 0x76; } } pSearch += 0x4; } // Чтение времени из игры ReadProcessMemory(hProcess, (LPCVOID)pHour, &Hour, 4, NULL); ReadProcessMemory(hProcess, (LPCVOID)pMin, &Min, 4, NULL); ReadProcessMemory(hProcess, (LPCVOID)pSec, &Sec, 4, NULL); TrainBrakesControllerMaxSystemPressure( 76 ) EngineBrakesControllerMaxSystemPressure( 60 ) |
01.01.2007, 12:00 | |
Яndex
Спонсор
Регистрация: 01.01.2007
Сообщения: 500
Реклама показывается изредка по случайному принципу |
РЕКЛАМА
|
08.01.2009, 22:39 | #17 |
Опытный
Регистрация: 11.10.2008
Сообщений: 201
Вы сказали Спасибо: 0
Поблагодарили 2 раз(а) в 2 сообщениях
|
Так в чем проблема? У тебя проблема по адрессам в патче или как?
|
08.01.2009, 22:52 | #18 |
Матёрый пользователь
|
|
08.01.2009, 22:55 | #19 |
Опытный
Регистрация: 11.10.2008
Сообщений: 201
Вы сказали Спасибо: 0
Поблагодарили 2 раз(а) в 2 сообщениях
|
Тебе нужно изменить стартовый адрес DWORD pConsist = 0x7c8778 на тот который в патче. Я гляну скажу.
|
08.01.2009, 23:05 | #20 |
Опытный
Регистрация: 11.10.2008
Сообщений: 201
Вы сказали Спасибо: 0
Поблагодарили 2 раз(а) в 2 сообщениях
|
Твой адрес DWORD pConsist должен быть равен 0x7C2AC0
DWORD pConsist = 0x7C2AC0; |
08.01.2009, 23:10 | #21 |
Матёрый пользователь
|
А это под какую версию MSTSBin?
|
08.01.2009, 23:13 | #22 |
Опытный
Регистрация: 11.10.2008
Сообщений: 201
Вы сказали Спасибо: 0
Поблагодарили 2 раз(а) в 2 сообщениях
|
Это под оф.патч и 1.8 точно, наверное и под 1.7 работать должно. Если у тебя алгоритм правильный, то меняешь адрес и пробуешь должно работать.
|
08.01.2009, 23:18 | #23 |
Матёрый пользователь
|
|
08.01.2009, 23:27 | #24 |
Опытный
Регистрация: 11.10.2008
Сообщений: 201
Вы сказали Спасибо: 0
Поблагодарили 2 раз(а) в 2 сообщениях
|
Значит и под патч пойдет. Я вообще скоро займусь вот этим http://mstsbin.uktrainsim.com/images/hud.gif это то чем ты сейчас занимаешься. Только обширнее. Если что выйдет скину исходник.
По твоему коду есть пара советов. Основной это избегать таких затрат на поиск адресов. В программе есть алгоритм, вот его и следует вытаскивать и воссоздавать в своей программе. |
09.01.2009, 00:08 | #25 | ||
Матёрый пользователь
|
Цитата:
В своем проекте я беру работу по расчету тяги и торможения на свою программу, а МСТС рассчитывает движение состава по пути в зависимости от этого. Кроме того для управления у меня используется не клавиатура, а спец. приспособленные элементы управления от настоящего п.с., подключенные к компьютеру. Еще классно было бы найти адреса в памяти и научится программно включать/выключать фары, открывать/закрывать двери и т.п. (но это только позже). Цитата:
Вот описать физику поведения подвижного состава - это да, тут основное знание это не программинг, а именно конструкция п.с. и работа отдельных его элементов. |
||
09.01.2009, 00:15 | #26 |
Опытный
Регистрация: 11.10.2008
Сообщений: 201
Вы сказали Спасибо: 0
Поблагодарили 2 раз(а) в 2 сообщениях
|
Попробуй во время игры (оригинал) записать "1" в адрес 0x7BC1A4 тебе может помочь с проверкой твоих результатов.
|
09.01.2009, 19:55 | #27 | |
Опытный
Регистрация: 11.10.2008
Сообщений: 201
Вы сказали Спасибо: 0
Поблагодарили 2 раз(а) в 2 сообщениях
|
Цитата:
Variable3Controlled Variable2Controlled Variable1Controlled DistanceControlled SpeedControlled Быть может еще будет. |
|
10.01.2009, 11:23 | #28 |
Бабайский Пират
|
Вот и все. А вагоны к примеру только на дистанс и спиид реагируют. А У них хотелось бы и триггеры тормозов как-то того...
__________________
"Да здравствует мыло душистое и веревка пушистая "(с) |
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1) | |
|
|
Что это? |