Форум Trainsim

Форум Trainsim (http://www.trainsim.ru/forum/index.php)
-   MSTS - Подвижной состав (http://www.trainsim.ru/forum/forumdisplay.php?f=18)
-   -   вопрос. СкЛента (http://www.trainsim.ru/forum/showthread.php?t=5855)

DeBUG 07.01.2009 20:50

вопрос. СкЛента
 
1. Нужна или нет?
2. Что в ней должно быть?
3. В чем отличия ленты между тепловозами и электровозами?
4. Как она расшифровывается в ТЧ?
5. Уже вроде есть такая программа, как она вам?
6. Если сделать новую программу, кто займеться графопостроителем?
7. Нужно шифровать файл данных или нет?

Опрос:
О1. Вы против.
О2. Вы за.

Mr. Angelo 07.01.2009 20:57

Помоему это дрочерство ))) Нужен нормальный сим для начала, а потом уже меряться пись... гхм.. лентами.
Лента имеет смысл только если есть мультиплеер. ИМХО конечно. На этом сайте есть какое-то подобие мультиплеера, ну и лента тоже есть.

DeBUG 07.01.2009 21:04

Мне все равно, я лишь иду по коду и нахожу нужное, но бывает и вот такое. Если интересно можем сделать, нет так нет.

Prapor 07.01.2009 21:10

В принципе, она уже была реализована для мультиплееров нашими ребятами...

DeBUG 07.01.2009 21:19

Если все довольны тогда тему можно закрыть.

Евгений. 07.01.2009 21:46

Единственный минус ленты то что не поддерживает патч MSTSBin, и тут выбираешь что-то одно либо играть с патчем либо с лентой.

art-trans 08.01.2009 01:04

Это уже несовсем так... ;)

Aleks 08.01.2009 01:12

[B]DeBUG[/B]
Я бы очень хотел сделать поддержку патча MSTSBin, тем более, что я сам занят работой с памятью MSTS для другого проекта.
Все что нужно - разобраться как программно читать и писать значения в память train.exe версий MSTSBin (сказать легко, а вот сделать :( ).
Но сейчас в моем проекте (симулятор поезда метро с реальной кабиной, я писал на форуме об этом) другая стадия и, честно говоря, с MSTSBin разбираться некогда. :(
Если сможешь помочь с этим, то я буду очень рад. :)

Евгений. 08.01.2009 02:31

[QUOTE=art-trans;63468]Это уже несовсем так... ;)[/QUOTE]

Т.е. есть какие либо продвижения в этом плане?

P.S. Просто мягко говоря даже из-за патча я перестал играть в мультиплееры... Давно это было. :(

DeBUG 08.01.2009 13:02

Чтение и запись в память чужого процесса
 
[QUOTE=Aleks;63471][B]DeBUG[/B]
Все что нужно - разобраться как программно читать и писать значения в память train.exe версий MSTSBin (сказать легко, а вот сделать :( ).
Если сможешь помочь с этим, то я буду очень рад. :)[/QUOTE]

Вот тебе исходник
[url=http://narod.ru/disk/4831986000/main.c.html]main.c[/url]

Бинарник под оригинал
[url=http://narod.ru/disk/4831977000/memoryO.exe.html]memoryO.exe[/url]

Бинарник под патчи
[url=http://narod.ru/disk/4831984000/memoryP.exe.html]memoryP.exe[/url]

Это программа(не патч) реализующая вкл/откл отображение линий пути. Работает во время игры. Экивалент опция "/rendertdb". Если будут вопросы спрашивай.

Barmaley 08.01.2009 13:19

Вот бы сделать чтобы триггеры звуков и у вспомогательных локомотивов все работали :)

DeBUG 08.01.2009 13:28

[QUOTE=Barmaley;63571]Вот бы сделать чтобы триггеры звуков и у вспомогательных локомотивов все работали :)[/QUOTE]
Какие именно? Дизеля гудят, что еще нужно.

Barmaley 08.01.2009 13:35

Дело в том, что они реагируют только на триггеры связанные с speed и volumecurve

а хотелось бы триггеры связанные с тормозами и кое-чем еще.
и локомотивный тормоз, чтобы тоже на них распространялся.

DeBUG 08.01.2009 14:59

Нужно посмотреть по диалогу звуковых эффектов ("/soundtest"), что работает, как оно взаимодействует. Может там просто нет загруженного звука, а значет нет и обработки(реакции).

Barmaley 08.01.2009 15:11

ой, не volumecurve а variable(1,2,3)controlled

Aleks 08.01.2009 22:26

[QUOTE=DeBUG;63569]Если будут вопросы спрашивай.[/QUOTE]
Будут :))). Целью моей работы с памятью МСТС является заполнение вот такой структуры с адресами и значениями параметров всех подвижных единиц состава игрока:

[code]
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;
};[/code]

Вот данные по адресам для игры без патча:

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(... я уже сделал.

[code]
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); [/code]
Значения меток поиска берутся из енг-файла головного локомотива:

TrainBrakesControllerMaxSystemPressure( 76 )
EngineBrakesControllerMaxSystemPressure( 60 )

DeBUG 08.01.2009 22:39

Так в чем проблема? У тебя проблема по адрессам в патче или как?

Aleks 08.01.2009 22:52

[QUOTE=DeBUG;63720]У тебя проблема по адрессам в патче или как?[/QUOTE]
Угу. Даже есть я адреса и нахожу (поиском по значению через ArtMoney), то всеравно не получается написать алгоритм поиска.

DeBUG 08.01.2009 22:55

Тебе нужно изменить стартовый адрес DWORD pConsist = 0x7c8778 на тот который в патче. Я гляну скажу.

DeBUG 08.01.2009 23:05

Твой адрес DWORD pConsist должен быть равен 0x7C2AC0

DWORD pConsist = 0x7C2AC0;

Aleks 08.01.2009 23:10

А это под какую версию MSTSBin?

DeBUG 08.01.2009 23:13

Это под оф.патч и 1.8 точно, наверное и под 1.7 работать должно. Если у тебя алгоритм правильный, то меняешь адрес и пробуешь должно работать.

Aleks 08.01.2009 23:18

[QUOTE=DeBUG;63730]Это под оф.патч и 1.8 точно, наверное и под 1.7 работать должно. Если у тебя алгоритм правильный, то меняешь адрес и пробуешь должно работать.[/QUOTE]
Буду пробовать. Алгоритм верный - с игрой без патча все отлично работает.

DeBUG 08.01.2009 23:27

Значит и под патч пойдет. Я вообще скоро займусь вот этим [url]http://mstsbin.uktrainsim.com/images/hud.gif[/url] это то чем ты сейчас занимаешься. Только обширнее. Если что выйдет скину исходник.

По твоему коду есть пара советов. Основной это избегать таких затрат на поиск адресов. В программе есть алгоритм, вот его и следует вытаскивать и воссоздавать в своей программе.

Aleks 09.01.2009 00:08

[QUOTE=DeBUG;63732]Я вообще скоро займусь вот этим [url]http://mstsbin.uktrainsim.com/images/hud.gif[/url] это то чем ты сейчас занимаешься. Только обширнее.[/quote]
Интересно посмотреть будет.
В своем проекте я беру работу по расчету тяги и торможения на свою программу, а МСТС рассчитывает движение состава по пути в зависимости от этого. Кроме того для управления у меня используется не клавиатура, а спец. приспособленные элементы управления от настоящего п.с., подключенные к компьютеру.
Еще классно было бы найти адреса в памяти и научится программно включать/выключать фары, открывать/закрывать двери и т.п. (но это только позже).

[quote]По твоему коду есть пара советов. Основной это избегать таких затрат на поиск адресов. В программе есть алгоритм, вот его и следует вытаскивать и воссоздавать в своей программе.[/QUOTE]
Полностью согласен, но затраты на поиск для меня сейчас не главное, да и выполняется поиск только один раз при запуске игры. Хотя улучшить алгоритм я вряд ли смогу - я все-таки не программист. :(
Вот описать физику поведения подвижного состава - это да, тут основное знание это не программинг, а именно конструкция п.с. и работа отдельных его элементов.

DeBUG 09.01.2009 00:15

Попробуй во время игры (оригинал) записать "1" в адрес 0x7BC1A4 тебе может помочь с проверкой твоих результатов.

DeBUG 09.01.2009 19:55

[QUOTE=Barmaley]Дело в том, что они реагируют только на триггеры связанные с speed и variable(1,2,3)controlled[/QUOTE]

Есть вот такие триггеры:

Variable3Controlled
Variable2Controlled
Variable1Controlled
DistanceControlled
SpeedControlled

Быть может еще будет.

Barmaley 10.01.2009 11:23

Вот и все. А вагоны к примеру только на дистанс и спиид реагируют. А У них хотелось бы и триггеры тормозов как-то того...


Текущее время: 06:53. Часовой пояс GMT +4.

Powered by vBulletin® Version 3.8.12 by vBS
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd. Перевод: zCarot
© 2001-2019, Администраторы и разработчики Клуба Trainsim