Пути поездов
|
|
DK22Pac | Дата: Вторник, 27.03.2012, 20:15 | Сообщение # 31 |
$player_actor
Группа: Проверенные
Сообщений: 559
Статус: Offline
| Что-то я ничего не понимаю... Массив точек остановок общий для всех tracks-файлов...
|
|
| |
Den_spb | Дата: Вторник, 27.03.2012, 20:29 | Сообщение # 32 |
Создатель сайта
Группа: Администраторы
Сообщений: 1600
Статус: Offline
| Возможно, вопрос остановок я не разбирал. Единственное что могу сказать - остановки работают только для поезда, движущегося по tracks. Для трамвая (поезд tracks3) указание остановок ничего не даёт.
|
|
| |
DK22Pac | Дата: Вторник, 27.03.2012, 20:37 | Сообщение # 33 |
$player_actor
Группа: Проверенные
Сообщений: 559
Статус: Offline
| Понятно. А может такое быть, что кроме позиции, игра получает какую-то дополнительную информацию на основе точек из tracks.dat? Мне показалось, что там ещё что-тоесть крое XYZ (возможно, угол или скорость движения?)
|
|
| |
Den_spb | Дата: Вторник, 27.03.2012, 20:50 | Сообщение # 34 |
Создатель сайта
Группа: Администраторы
Сообщений: 1600
Статус: Offline
| Как я уже писал, структура точки tracks имеет размер 10 байтов: 6 из них - координаты, ещё 2 - длина маршрута от первой точки до текущей. Последние 2 байта детально не смотрел, может быть флаги.
|
|
| |
DK22Pac | Дата: Среда, 28.03.2012, 03:27 | Сообщение # 35 |
$player_actor
Группа: Проверенные
Сообщений: 559
Статус: Offline
| 0x8D48F8 RwV3D[6] Точки остановок поезда 0xC38034 float[6] Дистанция между этими точками? 0x6F6BD0 TrackLine GetTrainNodeNearPoint(X, Y, Z, ptrackID) Code int __cdecl GetTrainNodeNearPoint(float fX, float fY, float fZ, int pTrackIDresult) { int trackLineResult; // edi@1 signed int trackID; // esi@1 int zero; // ST14_4@1 int trackLine; // ecx@2 int pPoint; // edx@3 int pStartPointsData; // eax@4 long double distance; // fst5@4 signed int point.x; // ebp@4 int pPointData; // eax@4 float point.z; // ST2C_4@4 float subX; // ST18_4@4 long double subY; // fst7@4 float resultDistance; // [sp+10h] [bp-20h]@1
trackLineResult = zero; LODWORD(resultDistance) = 0x47C34FF3u; // 99999.898 trackID = 0; do { trackLine = 0; if ( tracksDatLineCount[trackID] > 0 ) { pPoint = 0; do { pStartPointsData = tracksDatContents[trackID]; point.x = *(pStartPointsData + pPoint); pPointData = pPoint + pStartPointsData; point.z = *(pPointData + 4) * 0.125; subX = fX - point.x * 0.125; subY = fY - *(pPointData + 2) * 0.125; distance = sqrt((fZ - point.z) * (fZ - point.z) + subY * subY + subX * subX); if ( distance < resultDistance ) { resultDistance = distance; trackLineResult = trackLine; *pTrackIDresult = trackID; } ++trackLine; pPoint += 10; } while ( trackLine < tracksDatLineCount[trackID] ); } ++trackID; } while ( trackID < 4 ); return trackLineResult; }
|
|
| |
laggth | Дата: Среда, 28.03.2012, 16:50 | Сообщение # 36 |
Группа: Пользователи
Сообщений: 81
Статус: Offline
| Как бы увеличить до |><| количество точек пути в тракс файле,потому что на путях свыше 600 точек начинаются глюки - транспорт складывается матрёшкой почему то. Если псмотреть в максе то там путь замкнут с одной жёлтой точкой- что бы она значила...,но там складывается составчик.
Сообщение отредактировал laggth - Среда, 28.03.2012, 18:50 |
|
| |
Den_spb | Дата: Среда, 28.03.2012, 17:33 | Сообщение # 37 |
Создатель сайта
Группа: Администраторы
Сообщений: 1600
Статус: Offline
| Quote (DK22Pac) 0x8D48F8 RwV3D[6] Точки остановок поезда Спасибо за информацию.
Quote (laggth) потому что на путях свыше 600 точек начинаются глюки У тебя в каждом файле больше 600 точек? Просто по-моему на все 4 файла выделяется один блок памяти, поэтому важно общее количество точек во всех файлах.
Quote (laggth) Если псмотреть в максе то там путь замкнут с одной жёлтой точкой- что бы она значила...,но там складывается составчик. Не понял, что за жёлтая точка - хорошо бы увидеть скрин. Состав может складываться и в тех местах, где две рядом стоящие точки перепутаны местами - проверь это.
|
|
| |
laggth | Дата: Среда, 28.03.2012, 18:14 | Сообщение # 38 |
Группа: Пользователи
Сообщений: 81
Статус: Offline
| Неперепутаны. 308,926,664,241. spsb4. Но сколько максимальное количество точек для всех тракс файлов- не больше оригинала,или можно больше? Но теперь если поставлено точек "3" на старом пути1 где было 926(теперь он стал2),то при подьезде к пересечению с бывшим путём1 - ошибка).Наверно влияют файлы train и train2,но непонятно зачем они нужны. Но также хотелось бы скрипт чтобы сам вписывал координаты игрока только после нажатии кнопки в столбик в txt файл,или в открытый файл в санибилдер.
Сообщение отредактировал laggth - Понедельник, 02.04.2012, 18:26 |
|
| |
Артём | Дата: Среда, 09.05.2012, 14:33 | Сообщение # 39 |
Группа: Пользователи
Сообщений: 90
Статус: Offline
| Привет. У меня стала недавно стала вылетать игра. Я вот недавно tracks.dat делал, не подскажешь, что неправильно в этом файле (карты я проверял, все там нормально): http://narod.ru/disk....at.html Заранее спасибо.
Делаю новый мод Greatland
|
|
| |
Den_spb | Дата: Среда, 09.05.2012, 18:59 | Сообщение # 40 |
Создатель сайта
Группа: Администраторы
Сообщений: 1600
Статус: Offline
| Можно было написать, к кому конкретно обращаемся - я на форуме не один Файл посмотрел - ошибок не заметил.
|
|
| |
Артём | Дата: Среда, 09.05.2012, 21:15 | Сообщение # 41 |
Группа: Пользователи
Сообщений: 90
Статус: Offline
| Спасибо, буду разбираться:) Добавлено (09.05.2012, 21:15) --------------------------------------------- Кстати, Den_spb, странно, но факт: без этого tracks.dat (со стандартным) игра не вылетает. Я тоже много раз перепроверял, вроде все нормально
Делаю новый мод Greatland
|
|
| |
Den_spb | Дата: Среда, 09.05.2012, 21:47 | Сообщение # 42 |
Создатель сайта
Группа: Администраторы
Сообщений: 1600
Статус: Offline
| Попробуй убрать остановку с первой или последней точки. А то получаются 2 остановки на соседних точках, что по-моему не очень хорошо.
|
|
| |
Артём | Дата: Вторник, 22.05.2012, 22:35 | Сообщение # 43 |
Группа: Пользователи
Сообщений: 90
Статус: Offline
| Den_spb, спасибо! Добавлено (22.05.2012, 22:35) --------------------------------------------- В чем может быть проблема, если игра не вылетает, а поезда по своему tracks.dat просто не ходят? Координаты вроде указаны правильно.
Делаю новый мод Greatland
|
|
| |
Den_spb | Дата: Среда, 23.05.2012, 04:12 | Сообщение # 44 |
Создатель сайта
Группа: Администраторы
Сообщений: 1600
Статус: Offline
| Если игрок находится недалеко от пути, и движение поездов не отключено (не был выполнен опкод 06D7: enable_train_traffic 0), то рано или поздно поезд должен быть создан. Для проверки можно попробовать создать поезд скриптом на этом пути.
|
|
| |
Артём | Дата: Четверг, 24.05.2012, 19:05 | Сообщение # 45 |
Группа: Пользователи
Сообщений: 90
Статус: Offline
| Den_spb, один раз случайно увидел с другого места, действительно. А так жду и почему-то не идет... ждал минут 15... Ладно, может переустановка поможет Добавлено (24.05.2012, 16:53) --------------------------------------------- Действительно на другой инсталляции все прекрасно работает Добавлено (24.05.2012, 19:05) --------------------------------------------- Den_spb, все уже ок спасибо, было что-то с моделью, а вот подскажи плиз с другой проблемой, там где заканчивается tracks.dat игра вылетает, но tracks.dat я сделал пока только в одну сторону. Если я доделаю его до конца проблема уйдет? Поезд должен там, где заканчивается tracks.dat переходить на начало или идти в обратную сторону?
Делаю новый мод Greatland
|
|
| |