Jump to content

DCS: среда GameGUI/Export - баги и проблемы


Recommended Posts

Столкнулся с такой проблемой.

 

В среде GameGUI, а именно, в коллбеке входа пользователя на сервер onPlayerStart вместо нормального адреса клиента в формате IPv4 (95.215.156.205) - я получаю адрес не понятного типа (вроде и ipv6 тип, а вроде и нет...).

А именно [fe80::7959:d744:afaf:32ab].

 

Получение IP реализовано следующим образом:

 

local _player_ip_with_port = net.get_player_info(id, 'ipaddr')

local _player_ip = string.sub(_player_ip_with_port, 1, -7)

 

Дома у меня стоит 2 ПК. На первом - запущен сервер под моим аккаунтом. Второй - игровой ПК - я вхожу на собственный сервер, как клиент.

 

Связано ли это с использованием одного и того же аккаунта? Может в чем то другом причина?

Реально ли исправить это?


Edited by ICS_Vortex

PC: i9-10850K ~5.2GHz / Asus Rog Strix H490 Gaming, Asus GTX1080 Rog Strix Gaming OC, HyperX Fury RGB 32Gb RAM 3200MHz, SSD 512Gb, HDD 1Tb, Windows 10 x64. 2 x Samsung Curved 32" 

VirpilControls software engineer

 

Link to comment
Share on other sites

Другая проблема связана со средой Export.

В DCS в экспорте - есть функция, которая возвращает список обьектов на карте - LoGetWorldObjects().

 

Дело в том, что при использовании свойства Type.level2 для получения категории/типа юнитов - получаю не понятные интеджеры - например, 1 или 3 или 4 или 5 и так далее.

 

Есть ли где то перечень этих констант? Или - существует ли другой способ получения типа юнита? (Хочется получать например, SAM, Artillery, infantry, Plane, ...)

 

На данный момент, тип получаю с помощью свойства Type.level2

PC: i9-10850K ~5.2GHz / Asus Rog Strix H490 Gaming, Asus GTX1080 Rog Strix Gaming OC, HyperX Fury RGB 32Gb RAM 3200MHz, SSD 512Gb, HDD 1Tb, Windows 10 x64. 2 x Samsung Curved 32" 

VirpilControls software engineer

 

Link to comment
Share on other sites

[fe80::7959:d744:afaf:32ab] - это link local IPV6 адрес.

Самое простое, что пришло на ум - отключить IPV6, если другого способа не найдешь.

 

Угу, я уже понял что это v6...правда он странно форматирован...Ладно бы, ещё б формат был нормальным...а так - лишнее разгребать из строки - не хочется. Попробую отключу в винде.

PC: i9-10850K ~5.2GHz / Asus Rog Strix H490 Gaming, Asus GTX1080 Rog Strix Gaming OC, HyperX Fury RGB 32Gb RAM 3200MHz, SSD 512Gb, HDD 1Tb, Windows 10 x64. 2 x Samsung Curved 32" 

VirpilControls software engineer

 

Link to comment
Share on other sites

В попытках выяснить происхождение этого странного адреса ipv6 - выяснил, что проблема моя локальная. И появилась эта проблема у меня после замены роутера.

 

Если отключить протокол ipv6 - локально я не увижу свой сервер, подключаясь по внешнему IP(ipv4). По локальному IP (ipv4) аналогично.

 

После включения ipv6 я вижу в Опенбете свой ДСервер. Но при этом, GameGUI видит мой адрес как IPv6.

Есть ли у кого то какие то соображения, как разрулить эту ситуацию? Все таки хочется, чтобы GameGUI отдавала IPv4.

PC: i9-10850K ~5.2GHz / Asus Rog Strix H490 Gaming, Asus GTX1080 Rog Strix Gaming OC, HyperX Fury RGB 32Gb RAM 3200MHz, SSD 512Gb, HDD 1Tb, Windows 10 x64. 2 x Samsung Curved 32" 

VirpilControls software engineer

 

Link to comment
Share on other sites

Угу, я уже понял что это v6...правда он странно форматирован...Ладно бы, ещё б формат был нормальным...а так - лишнее разгребать из строки - не хочется. Попробую отключу в винде.

Так принято писать адрес IPV6. С форматом там все нормально, просто он не привычен на первый взгляд.

aka RR_bear

[sIGPIC][/sIGPIC]

Link to comment
Share on other sites

В попытках выяснить происхождение этого странного адреса ipv6 - выяснил, что проблема моя локальная. И появилась эта проблема у меня после замены роутера.

Какой роутер поставил сейчас?

Предполагаю, что это из-за того, что у тебя сервер и клиент в одной локальной сети.

Ради теста, попробуй клиента запускать из другой сети.

aka RR_bear

[sIGPIC][/sIGPIC]

Link to comment
Share on other sites

Какой роутер поставил сейчас?

Предполагаю, что это из-за того, что у тебя сервер и клиент в одной локальной сети.

Ради теста, попробуй клиента запускать из другой сети.

 

Да, клиент и сервер в одной локальной сети. Роутер DIR-842

PC: i9-10850K ~5.2GHz / Asus Rog Strix H490 Gaming, Asus GTX1080 Rog Strix Gaming OC, HyperX Fury RGB 32Gb RAM 3200MHz, SSD 512Gb, HDD 1Tb, Windows 10 x64. 2 x Samsung Curved 32" 

VirpilControls software engineer

 

Link to comment
Share on other sites

В попытках выяснить происхождение этого странного адреса ipv6 - выяснил, что проблема моя локальная. И появилась эта проблема у меня после замены роутера.

 

Если отключить протокол ipv6 - локально я не увижу свой сервер, подключаясь по внешнему IP(ipv4). По локальному IP (ipv4) аналогично.

 

После включения ipv6 я вижу в Опенбете свой ДСервер. Но при этом, GameGUI видит мой адрес как IPv6.

Есть ли у кого то какие то соображения, как разрулить эту ситуацию? Все таки хочется, чтобы GameGUI отдавала IPv4.

 

Это бага которую сказали что поправили, но паправде не поправили, но всем пофиг. Без ipv6 на клиент не отдается ~половина списка серверов. Без ipv6 на клиенте невозможно зайти на сервер даже по прямому ipv4 адресу. Правда в локальной сети я попадал по прямому серому адресу, без ipv6, видимо разрабы оставляли для себя лазейку, тестить в локалке.

Сервеы КВАС. Железо: I9-9900k, 32GB DDR4, SSD, RTX 2080super

Link to comment
Share on other sites

  • ED Team
После включения ipv6 я вижу в Опенбете свой ДСервер. Но при этом, GameGUI видит мой адрес как IPv6.

Есть ли у кого то какие то соображения, как разрулить эту ситуацию? Все таки хочется, чтобы GameGUI отдавала IPv4.

Пропиши у клиента в autoexec.cfg строку для форсированмия IPv4 (только для клиента):

 

net.force_ipv4_lan=true

 

ЗЫ Формат представления твоего IPv6 правильный, просто он несколько своеобразен (нулевые октеты опускаются для экономии непонятно чего) по сравнению с записью для v4, где в явном виде пишутся все октеты.

 

Остальное в процессе.

Men may keep a sort of level of good, but no man has ever been able to keep on one level of evil. That road goes down and down.  
Можно держаться на одном уровне добра, но никому и никогда не удавалось удержаться на одном уровне зла. Эта дорога ведёт вниз и вниз.

G.K. Chesterton

DCS World 2.5: Часто задаваемые вопросы

Link to comment
Share on other sites

Пропиши у клиента в autoexec.cfg строку для форсированмия IPv4 (только для клиента):

 

net.force_ipv4_lan=true

 

ЗЫ Формат представления твоего IPv6 правильный, просто он несколько своеобразен (нулевые октеты опускаются для экономии непонятно чего) по сравнению с записью для v4, где в явном виде пишутся все октеты.

 

Остальное в процессе.

 

Спасибо Валерий. Отлично.

По обьектам - надеюсь что нибудь программисты накодят.

PC: i9-10850K ~5.2GHz / Asus Rog Strix H490 Gaming, Asus GTX1080 Rog Strix Gaming OC, HyperX Fury RGB 32Gb RAM 3200MHz, SSD 512Gb, HDD 1Tb, Windows 10 x64. 2 x Samsung Curved 32" 

VirpilControls software engineer

 

Link to comment
Share on other sites

  • 1 month later...

Пытаюсь получить время миссии в LUA.

 

В GameGUI - использую os.date('%Y-%m-%d %H:%M:%S', DCS.getRealTime/getModelTime())

В Export - использую os.date('%Y-%m-%d %H:%M:%S', LoGetModelTime())

 

В обоих случаях на выходе "1970-01-01 03:03:50" - 1970й год.

Время в миссии - 2016й год.

Что не так делаю?

 

Судя по документации - getModelTime() в GameGUI должно бы возвращать числовое значение - то есть Unix TimeStamp.

test_mission.miz


Edited by ICS_Vortex

PC: i9-10850K ~5.2GHz / Asus Rog Strix H490 Gaming, Asus GTX1080 Rog Strix Gaming OC, HyperX Fury RGB 32Gb RAM 3200MHz, SSD 512Gb, HDD 1Tb, Windows 10 x64. 2 x Samsung Curved 32" 

VirpilControls software engineer

 

Link to comment
Share on other sites

  • 1 month later...

С получением текущего времени симуляции разобрался. Решение внутри DCS правда жесть.

Может ли команда ED расширить DCS API и добавить функцию возвращения какого то CURRENT TIMESTAMP (UNIX) или CURRENT DATETIME (YYYY-MM-DD HH:MM:SS) симуляции?

Надо получать текущее время суток в симуляции в нормальном формате.

 

И ещё одно. Баг со статической погодой. При получении погоды в DCS API (GameGUI) - какой бы пресет погоды не был бы выбран в редакторе - API возвращает Visibility Distance = 80000 всегда.


Edited by ICS_Vortex

PC: i9-10850K ~5.2GHz / Asus Rog Strix H490 Gaming, Asus GTX1080 Rog Strix Gaming OC, HyperX Fury RGB 32Gb RAM 3200MHz, SSD 512Gb, HDD 1Tb, Windows 10 x64. 2 x Samsung Curved 32" 

VirpilControls software engineer

 

Link to comment
Share on other sites

  • 1 month later...

Доброго времени суток. Напомню об одном бородатом баге. 

При запуске сервера  из-под клиента (не выделенный) в GameGUI коллбэк onPlayerStart (событие входа админа на сервер) срабатывает быстрее, чем коллбэк onSimulationStart.

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

 

И не большая просьба, если позволите. Могут ли разработчики добавить легально весь набор сокетов в DCS World Openbeta/LuaSocket папку ? А то сейчас  в GameGUI использовать сокет HTTP оттуда нереально вообще. Приходится добавлять лишние файлы, которые потом autoupdater при каждом обновлении будет сносить как мусор...

 

Спасибо.


Edited by ICS_Vortex

PC: i9-10850K ~5.2GHz / Asus Rog Strix H490 Gaming, Asus GTX1080 Rog Strix Gaming OC, HyperX Fury RGB 32Gb RAM 3200MHz, SSD 512Gb, HDD 1Tb, Windows 10 x64. 2 x Samsung Curved 32" 

VirpilControls software engineer

 

Link to comment
Share on other sites

  • 2 weeks later...
On 10/13/2020 at 11:14 AM, ICS_Vortex said:

Пытаюсь получить время миссии в LUA.

 

В GameGUI - использую os.date('%Y-%m-%d %H:%M:%S', DCS.getRealTime/getModelTime())

В Export - использую os.date('%Y-%m-%d %H:%M:%S', LoGetModelTime())

 

В обоих случаях на выходе "1970-01-01 03:03:50" - 1970й год.

Время в миссии - 2016й год.

Что не так делаю?

 

Судя по документации - getModelTime() в GameGUI должно бы возвращать числовое значение - то есть Unix TimeStamp.

test_mission.miz 8.07 kB · 19 downloads

 

 

Came across this post while I was trying to do the same thing. Not that it would solve your problem but there are 2 bugs in your code. DCS.getRealTime is a function so you have to use DCS.getRealTime() and getModelTime() lacks the DCS. prefix.

 

It would be nice to have some function to get the actual mission time on server level indeed.

 

-

If man were meant to fly he'd be filled with helium.

Link to comment
Share on other sites

1 час назад, Coug4r сказал:

 

Came across this post while I was trying to do the same thing. Not that it would solve your problem but there are 2 bugs in your code. DCS.getRealTime is a function so you have to use DCS.getRealTime() and getModelTime() lacks the DCS. prefix.

 

It would be nice to have some function to get the actual mission time on server level indeed.

 

Hi, i already solved my problem. 

Thing is that dcs returns only mission start date and mission start time. That's not okay)))) thats why i asked to extend api and add function to get current mission DateTime or timestamp.

I can calculate current datetime, but thats not good solution. Also, it shoild account a lot of stuff...

PC: i9-10850K ~5.2GHz / Asus Rog Strix H490 Gaming, Asus GTX1080 Rog Strix Gaming OC, HyperX Fury RGB 32Gb RAM 3200MHz, SSD 512Gb, HDD 1Tb, Windows 10 x64. 2 x Samsung Curved 32" 

VirpilControls software engineer

 

Link to comment
Share on other sites

If you do it on mission level you could use timer.getTime or timer.getAbsTime and add it to the mission start time and date. Not sure what happens if you'd pause the mission though if that would apply or if that method would be accurate if a missions runs for more than 24 hours 🙂

 

-

If man were meant to fly he'd be filled with helium.

Link to comment
Share on other sites

08.01.2021 в 23:21, Coug4r сказал:

If you do it on mission level you could use timer.getTime or timer.getAbsTime and add it to the mission start time and date. Not sure what happens if you'd pause the mission though if that would apply or if that method would be accurate if a missions runs for more than 24 hours 🙂

 

No bro. I already told, that i work on API level.

🙂

 

And point is to get mission datetime. 

Lets say , datetime which is displayed at Warthog clock . 

Export is not a case. I am insterested in API callbacks. 

 

So, lets stop this offtop)


Edited by ICS_Vortex

PC: i9-10850K ~5.2GHz / Asus Rog Strix H490 Gaming, Asus GTX1080 Rog Strix Gaming OC, HyperX Fury RGB 32Gb RAM 3200MHz, SSD 512Gb, HDD 1Tb, Windows 10 x64. 2 x Samsung Curved 32" 

VirpilControls software engineer

 

Link to comment
Share on other sites

  • 1 month later...

Еще один баг - тоже довольно старый баг - невозможно получить UCID клиента в GameGUI при событии дисконнекта клиента. 

Задача - получить UCID при любом дисконнекте клиента от сервера.

Вариантов получения по документации есть несколько, но к сожалению ни один не работает для события отключения клиента.

Например в onGameEvent - первый агрумент - событие - disconnect - в этот момент 2й аргумент приходит ID пользователя, по которому вызов 

net.get_player_info(arg1, "ucid")

отдает nil. 

Второй вариант - коллбек onPlayerDisconnect - первым аргументом туда приходит ID клиента, который аналогично при вызове 

net.get_player_info(arg1, "ucid")

отдает nil.

 

Коллбек onPlayerStop не подходит, потому что он отрабатывает только тогда, если клиент добровольно уходит. 

 

PC: i9-10850K ~5.2GHz / Asus Rog Strix H490 Gaming, Asus GTX1080 Rog Strix Gaming OC, HyperX Fury RGB 32Gb RAM 3200MHz, SSD 512Gb, HDD 1Tb, Windows 10 x64. 2 x Samsung Curved 32" 

VirpilControls software engineer

 

Link to comment
Share on other sites

Проблема с перезагрузкой онлайн миссии по триггеру ONCE > TIME MORE(SOME_TIME) > MISSION END().

В результате генерируется 2 события mission_end. Один раз со стороной победителем , второй раз со стороной победителем как TODO.


Edited by ICS_Vortex

PC: i9-10850K ~5.2GHz / Asus Rog Strix H490 Gaming, Asus GTX1080 Rog Strix Gaming OC, HyperX Fury RGB 32Gb RAM 3200MHz, SSD 512Gb, HDD 1Tb, Windows 10 x64. 2 x Samsung Curved 32" 

VirpilControls software engineer

 

Link to comment
Share on other sites

  • 2 months later...

Среда Export. Метод 

LoGetMechInfo()

для модуля FA/18C не отдает свойство Hook.

Также не отдает предкрылки и складывание консолей крыла. 

{
	"canopy": {
		"status": 0,
		"value": 0
	},
	"controlsurfaces": {
		"eleron": {
			"left": 0.11111111193895,
			"right": -0
		},
		"elevator": {
			"left": -0,
			"right": -0
		},
		"rudder": {
			"left": -0,
			"right": -0
		}
	},
	"flaps": {
		"status": 0,
		"value": 0.11111111193895
	},
	"gear": {
		"main": {
			"left": {
				"rod": 0
			},
			"right": {
				"rod": 0
			}
		},
		"nose": {
			"rod": 0
		},
		"status": 0,
		"value": 0
	},
	"parachute": {
		"status": 0,
		"value": 0
	},
	"refuelingboom": {
		"status": 0,
		"value": 0
	},
	"speedbrakes": {
		"status": 0,
		"value": 0
	},
	"wheelbrakes": {
		"status": 0,
		"value": 0
	}
}

 


Edited by ICS_Vortex

PC: i9-10850K ~5.2GHz / Asus Rog Strix H490 Gaming, Asus GTX1080 Rog Strix Gaming OC, HyperX Fury RGB 32Gb RAM 3200MHz, SSD 512Gb, HDD 1Tb, Windows 10 x64. 2 x Samsung Curved 32" 

VirpilControls software engineer

 

Link to comment
Share on other sites

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...