Jump to content

mkmax

Members
  • Posts

    14
  • Joined

  • Last visited

Personal Information

  • Location
    Челябинск
  1. Пробовал летать с такой штукой. Она очень критична к освещению лица, в моем случае оси неприемлемо дрожали. Сделал в итоге скобу для фритрека и не жалею - дрожь в осях пропала полностью.
  2. Все бы вам издеваться) С управлением воюй, с красными воюй, теперь еще и трехэтажки с пушками... Похоже это из-за того, что техника не умеет задним ходом ездить. То есть в той миссии я как-то подогнал танк вплотную к зданию, и при следующей атаке получилось как на скриншотах. Прошу прощения у модераторов, только сейчас увидел раздел Баги и Проблемы
  3. День добрый. Изучаю неспешно основы работы штурмовиком и, в одной из миссий, во время этой самой работы, случилось нечто забавное. После атаки взвода Т-80 он, как и положено, бросился врассыпную. Но один из танков здраво рассудил, что под кустиками от меня не спрячешься и смело заехал внутрь бетонного здания :thumbup: Из здания, разумеется я его выковырять уже не сумел. Это известный баг? Версия русская дисковая, ванилла .9. Трек есть, но не сходится даже у меня.
  4. Вообще, осевые команды джойстику можно добавить в D:\Games\ka50\Config\Input\Aircrafts\ka-50\joystick\default.lua (секция axisCommands, в самом низу). При правильном добавлении они появятся в интерфейсе. Конкретно для ИТ-23 и НСЦ осевых команд, насколько я знаю, не предусмотрено. В реалтайме будет тормозить, получать лучше несколько раз в секунду. Или раз в несколько секунд. CreateFileMapping & Co - функции WinAPI для работы с памятью, существуют со времен Windows 2000. Как отправить картинку по сокету я не знаю, и смысла это делать не вижу. Пример программы на срр, читающей картинку со шквала и пишущей её в D:\Games\fc2\mfd0.bmp: #include <windows.h> #include <stdio.h> #include <conio.h> #include <tchar.h> #pragma comment(lib, "user32.lib") TCHAR szSharedName[]=TEXT("mfd0"); TCHAR szFileName[]=TEXT("D:\\Games\\fc2\\mfd0.bmp"); int _tmain() { HANDLE hMapFile; char* pBuf; //открываем нашу текстуру hMapFile = OpenFileMapping( FILE_MAP_ALL_ACCESS, // read/write access FALSE, // do not inherit the name szSharedName); // name of mapping object if (hMapFile == NULL) { _tprintf(TEXT("Could not open file mapping object (%d).\n"), GetLastError()); return 1; } //берем указатель на данные pBuf = (char*)MapViewOfFile(hMapFile, // handle to map object FILE_MAP_ALL_ACCESS, // read/write permission 0, 0, 0); if (pBuf == NULL) { _tprintf(TEXT("Could not map view of file (%d).\n"), GetLastError()); CloseHandle(hMapFile); return 1; } //в памяти лежит... кхм... не совсем стандартный битмап. Приводим к человеческому виду BITMAPFILEHEADER fh; BITMAPINFOHEADER* ih = (BITMAPINFOHEADER*)(pBuf+4); DWORD dataSize = ih->biHeight * ih->biWidth * ih->biBitCount / 8; DWORD bytesWritten = 0; fh.bfType = 0x4d42; fh.bfSize = dataSize + sizeof(BITMAPFILEHEADER) + sizeof(BITMAPINFOHEADER); fh.bfOffBits = 0x40; fh.bfReserved1 = fh.bfReserved2 = 0; //поворачиваем вверх головой ih->biHeight = -ih->biHeight; //выгружаем в файл HANDLE hFile = CreateFile(szFileName, GENERIC_WRITE, 0, 0, CREATE_ALWAYS, FILE_FLAG_WRITE_THROUGH, 0); if (hFile == NULL) { _tprintf(TEXT("Could not create file for writing (%d).\n"), GetLastError()); UnmapViewOfFile(pBuf); CloseHandle(hMapFile); return 1; } //заголовок файла if (WriteFile(hFile, &fh, sizeof(BITMAPFILEHEADER), &bytesWritten, 0) == NULL) { _tprintf(TEXT("Error writing data file header (%d).\n"), GetLastError()); CloseHandle(hFile); UnmapViewOfFile(pBuf); CloseHandle(hMapFile); return 1; } //заголовок данных if (WriteFile(hFile, ih, sizeof(BITMAPINFOHEADER), &bytesWritten, 0) == NULL) { _tprintf(TEXT("Error writing data info header (%d).\n"), GetLastError()); CloseHandle(hFile); UnmapViewOfFile(pBuf); CloseHandle(hMapFile); return 1; } //данные if (WriteFile(hFile,pBuf + 4 + sizeof(BITMAPINFOHEADER), dataSize, &bytesWritten, 0) == NULL) { _tprintf(TEXT("Error writing data (%d).\n"), GetLastError()); CloseHandle(hFile); UnmapViewOfFile(pBuf); CloseHandle(hMapFile); return 1; } //деинициализация CloseHandle(hFile); UnmapViewOfFile(pBuf); CloseHandle(hMapFile); return 0; }
  5. Функции создают именованный объект с заданным именем, используя CreateFileMapping и MapViewOfFile. Сторонняя программа затем может обратиться к этому именованному объекту через OpenFileMapping. Если верить комментариям, храниться там будет обычный bmp-файл с копией запрошенной текстуры. Работает, насколько я в курсе, только в ГС2.
  6. Первая секция, start_sequence_full - запуск при упрощенной авионике; вторая, stop_sequence_full - останов; третья, start_sequence_heavy - запуск при реалистичной авионике. Где-то так.
  7. в lua с пользовательскими настройками (например "D:\Games\ka50\Config\Input\Aircrafts\ka-50\joystick\Saitek X52 Pro Flight Controller {A78E3E80-9107-11df-8001-444553540000}.lua") ближе к концу есть секция ["axisCommands"], в ней при некоторой настойчивости можно углядеть такие строки: ["key"] = "JOY_Z", //куда назначена команда ["action"] = 2088, //код команды ["name"] = "Flight Control Collective", //название либо можно заглянуть в D:\Games\ka50\Config\Input\Aircrafts\Default\joystick\default.lua и найти на форуме файл со значениями констант iCommand*, его кто-то из разработчиков когда-то выкладывал.
  8. export.lua: command = 2001 - joystick pitch command = 2002 - joystick roll command = 2003 - joystick rudder -- Thrust values are inverted for some internal reasons, sorry. command = 2004 - joystick thrust (both engines) command = 2005 - joystick left engine thrust command = 2006 - joystick right engine thrust upd: эээ... кажется не то ответил. Судя по настройкам управления, общий шаг - команда 2088.
  9. Ну, в режиме ЗК может получиться что-то цензурное. Уход ИНС в долгом полете - да, может стать проблемой. Как же тогда в реале ведомые летят? На руках, все 500 километров пролететь если и можно, то еще и о боевом применении заикаться явно не стоит. Летают на автопилоте, не используя режим маршрут? Просто пристроился к ведущему, более-менее стабилизировался и полетел "в ту сторону"?
  10. мануал говорит, что в реальной жизни при полете по маршруту плотность боевого порядка - 100 метров. При маневрировании - 200. А вообще, теоретически, ведущий на маршруте летит на автопилоте, и у всего звена занесен одинаковый маршрут. Пристроиться поближе и тоже включить автопилот, пусть сам летит. Ну или руками в директорном режиме.
  11. Одолел. Теперь, если вдруг соберусь строить железный кокпит - буду знать, откуда тянуть данные :music_whistling:
  12. Есть желание часть функционала ПВИ продублировать на мфд x52pro. С переключением режимов и страниц и нажиманием кнопок я уже разобрался. Осталось сделать только вывод. вижу код D:\Games\ka50\Scripts\Aircrafts\Ka-50\Cockpit\PVI\PVI_page.lua: возможно ли получить в моем коде txt_NIT.value? Увижу ли я там то, что хочу? (а именно - текст нижнего индикационного табло) Есть ли жизнь на Марсе? Разработчики, не дайте помереть в неведении :cry:
  13. mkmax

    Saitek X52 Pro

    ну, значит, я последний взял. Ищи магазины, обзванивай их, где-нибудь да завалялся еще один. Может быть, будет проще взять с рук. На крайний случай - http://search.eim.ebay.ru/?Query=x52+pro
  14. mkmax

    Saitek X52 Pro

    google.com, tyndex.ru я заказывал в http://www.opentech.ru
×
×
  • Create New...