Jump to content

Recommended Posts

Posted

I check the wikipedia here: http://wiki.hoggit.us/view/Simulator_Scripting_Engine_Documentation and "discover" a new? (old) mission edition feature? can get some info or reference doc on english? (the weblink point here: http://forums.eagle.ru/showthread.php?t=96572 but docs are on russian).

For Work/Gaming: 28" Philips 246E Monitor - Ryzen 7 1800X - 32 GB DDR4 - nVidia RTX1080 - SSD 860 EVO 1 TB / 860 QVO 1 TB / 860 QVO 2 TB - Win10 Pro - TM HOTAS Warthog / TPR / MDF

Posted

Wow 54 page manual! Couldn't make out much from google translation, but I'm guessing its some sort of mission event system?

DCS AJS37 HACKERMAN

 

There will always be bugs. If everything is a priority nothing is.

Posted

Its just like mist in the sense its a library of scripting functions. I don't know much about it due to the Russian documentation, but I think it is a little more focused in the sense of what the scripts are for and how they function as a whole.

The right man in the wrong place makes all the difference in the world.

Current Projects:  Grayflag ServerScripting Wiki

Useful Links: Mission Scripting Tools MIST-(GitHub) MIST-(Thread)

 SLMOD, Wiki wishlist, Mission Editing Wiki!, Mission Building Forum

Posted

I see interesting BAntDit mission test. The last here: http://forums.eagle.ru/showpost.php?p=1971278&postcount=330

 

I think that "order" to the AI ground forces "hold" positions and wait the "air assistances" make the dirty work to move.

For Work/Gaming: 28" Philips 246E Monitor - Ryzen 7 1800X - 32 GB DDR4 - nVidia RTX1080 - SSD 860 EVO 1 TB / 860 QVO 1 TB / 860 QVO 2 TB - Win10 Pro - TM HOTAS Warthog / TPR / MDF

  • 2 weeks later...
Posted

I'm interested in this textToVoice.lua. Any info on this?

DCS AJS37 HACKERMAN

 

There will always be bugs. If everything is a priority nothing is.

  • 9 months later...
Posted (edited)
I'm interested in this textToVoice.lua. Any info on this?

 

I have looked into this and it is pretty awesome. The whole framework is awesome. If you wanna cherry pick, the voice stuff is nice, BUT the whole framework exists to do awesome things. After you see how BAntDit :sorcerer: did the voice stuff was done you will want to use the other MSF features.

 

The MSF speech stuff hacks around limitations in the DCS engine. It queues messages and avoids errors. To do this it needs you to provide an init file that assembles a table of all the voice files with paths and duration of each audio file. In his MSF demo BAntDit :sorcerer: provides an init file with a small subset of Russian speech to use with his mission.

 

I wanted English so I wrote a python script to scrape the speech directories (Wingman, Player, AWACS, JTAC etc) to create the speech init scripts required. Here is a sample of my init file.

 

mission.model:addSound('12oclock','Speech\Sound\ENG\Common\Wingman\1\12oclock.wav',0.58);
mission.model:addSound('1oclock','Speech\Sound\ENG\Common\Wingman\1\1oclock.wav',0.55);

...

mission.model:addSound('bombs away','Speech\Sound\ENG\Common\Wingman\1\Messages\bombs away.wav',0.72);
mission.model:addSound('check six','Speech\Sound\ENG\Common\Wingman\1\Messages\check six.wav',0.72);
mission.model:addSound('contact bearing','Speech\Sound\ENG\Common\Wingman\1\Messages\contact bearing.wav',0.84);
mission.model:addSound('contact','Speech\Sound\ENG\Common\Wingman\1\Messages\contact.wav',0.41);

ETC ETC ETC ...lots of entries.

 

If you want English and/or NATO radio procedures you will have to edit BAntDit's event handlers. And this is what is taking me a long time to do. :music_whistling: The Russian speech packs have different words and forms of instruction, so it is not just a case of renaming files. This will be the most time consuming part of setting dynamic radio messages.

 

This block comes from an event handler: onEngageCommandEventHandler(sender, eventArgs) Units with this EH send text and voice messages to their group when engaging enemy unit.

 

function onEngageCommandEventHandler(sender, eventArgs)	
if msfAirDefenceUnitRole.USER_CONTROLLED_UNIT == eventArgs.airDefenceUnit:getRole() then
	local _msf_unit = eventArgs.airDefenceUnit:getUnit();
	local _dcsw_unit = _msf_unit:getDCSWorldUnit();

table.insert(_radio_message, 'delimeter_2');
table.insert(_radio_message, 'radar_on'); -- radar_on
table.insert(_radio_message, 'target_in_front');

-- heading
local _distance, _heading = mission.utils.getGuidanceAt(_dcsw_unit, eventArgs.target);
local _target_point, _valocity = eventArgs.target:getPoint(), eventArgs.target:getVelocity();
local _altitude, _speed = _target_point.y, math.sqrt(_valocity.x^2 + _valocity.y^2 + _valocity.z^2);
_distance, _speed = _distance / 1000, _speed * 3.6;
_text_message = _text_message .. string.format("%d", _heading) .. ', удаление: ' .. string.format("%.1f", _distance) 
			.. ' км., скорость: ' .. string.format("%.2f", _speed) .. ' км/ч, высота: ' 
			.. string.format("%d", _altitude) .. ' м.';
for _, _voice_part in ipairs(_heading_voice) do table.insert(_radio_message, _voice_part);
end

-- range
table.insert(_radio_message, 'range');
local _distance_voice = _text_to_voice.numberToSoundList(_distance);
for _, _voice_part in ipairs(_distance_voice) do table.insert(_radio_message, _voice_part);
end

-- speed
table.insert(_radio_message, 'speed');
local _speed_voice = _text_to_voice.numberToSoundList(_speed);
for _, _voice_part in ipairs(_speed_voice) do table.insert(_radio_message, _voice_part);
end

-- alt
table.insert(_radio_message, 'altitude');
local _altitude_voice = _text_to_voice.numberToSoundList(_altitude);
for _, _voice_part in ipairs(_altitude_voice) do table.insert(_radio_message, _voice_part);
end

-- engage
table.insert(_radio_message, 'engage'); 
table.insert(_radio_message, 'delimeter_2');

...

if mission.model.groups[_dcsw_group_name] and not mission.model.groups[_dcsw_group_name]:isAudioReciverLocked() 
then
mission.controller.outSoundForGroup(_dcsw_group_name, unpack(_radio_message));
mission.controller.sendMessageToGroup(_dcsw_group_name, _text_message);
end

 

Nice

 

:sorcerer: BAntDit is using MSF to let players organise units into more powerful groups and attach event handlers to individual units and/or nested groups. Units can report threats, do sitreps and notify on actions using text and speech and also take commands via radio menus. Last month he released a mission that uses MSF to create an air defense network, made up of networks of groups and units, where each network, group and unit has event handlers that define how it fulfills it's role inside the network. It kicks much ass.

 

The air defense stuff seems to work with ANY group ANY unit, ANY slot. All the radar units, SAMs, AA, Armour, Fortifications, Air units, Ships etc ... can be made to do their part.

 

I knew you could do this stuff with LUA but it takes a hard head to bash out something that works like this.

 

You SHOULD check out MSF, you do not need to read Russian because the code is in English and the function names are pretty self explanatory.

Edited by vicx
added wizards
Posted

Sounds like we need some English documentation to help float this up

ASUS Tuf Gaming Pro x570 / AMD Ryzen 7 5800X @ 3.8 / XFX Radeon 6900 XT / 64 GB DDR4 3200 

"This was not in the Manual I did not read", cried the Noob" - BMBM, WWIIOL

Posted (edited)

Yeah I was able to read the latest PDF documentation using Google Translate. It was readable but the code blocks got messed up so I had to have the Russian PDF alongside and synced to the page I was at.

 

A start to translation would be wiki-fying the translation ad original code blocks together on a Hoggit Wiki page. I might try and do start this later today. I'll join up if I have to.

 

---

I've made a start on transcription but it's very verbose. I feel like chopping it down in parts as an act of kindness for readers but I'll put it up verbatim initially.

Edited by vicx
update
  • Recently Browsing   0 members

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