Jump to content

sunski34

Members
  • Posts

    753
  • Joined

  • Last visited

Posts posted by sunski34

  1. Hi,

     

    I saw a new function getRunways for Airbase object in DCS Scripting function, without documentation.

     

    This function returns a indexed table started at 1 for each runway of an Airbase with course, center of runway, length and width. course value seems strange because to have the good heading, you must set heading = - course (in rad). The last value is Name strange too.

     

    But, you can now define a rectangle for each runway of an airbase. I tested it on Caucasus and Nevada (Nellis) and it's correct 😉

     

    Hope that we can have soon ILS, for each side when existing.

     

    Pretty cool thanks.

     

    Sun

     

     

  2. Hi

     

    ATME was been updated and now the new version is V2.01  which is DCS 2.7 compatible. You should see french forum for more information. Actually, we a working on a new english version of the guide.

     

    Now, players and units are the same class and sound can be played to all players in a group.

     

    If you send me your mail in private, I should send you this version and example and help you to understand the changes.

     

    Sun

  3. Hi,

     

    I tried the single message text, add 1.lua file in F18 KNEEBOARD. I see a new page but empty, no background no text !

     

    I remplaced  txt.init_pos = { h_center, v_center } with txt.init_pos = { 0, 0}  et set 

    local FONT = MakeFont({ used_DXUnicodeFontData = "font_dejavu_lgc_sans_condensed_17" }, { 0, 0, 0, 255 })  with 

    local FONT = MakeFont({ used_DXUnicodeFontData = "font_dejavu_lgc_sans_condensed_17" }, { 255,255,255, 255 }) 

     

    And no change !

     

    Help !

     

     

  4. Bonjour à tous,

     

    La version 2.01 d'ATME est enfin publiée avec doc et exemples. Cette version est compatible avec DCS 2.7.0 et suivantes.

    En début de ce thread, vous verrez les grandes évolutions. Voici donc les fichiers à télécharger.

     

    Le logiciel DCSLogViewer sera bientôt mis en ligne.

     

    Enjoy ATME.

     

    Sunski

     

    ATME V2.01.zip ATME V2.01 - Manual examples.zip

     

     

    ManueldeReference - ATME V201.zip

    • Like 1
  5. Hi,

     

    I solved my problem. I just need to compile lua and generate a lua.dll and a lua.lib instead of a lua51.lib and dll. then I link my dll with the lib and now that's ok. 

  6. Bonjour à tous,

     

    DCS 2.7 nous a conduit à retester et quelques dysfonctionnements dus à DCS nous ont contraint à ajuster nos développements.  Du coup, nous avons pris un peu de retard et espérons une publication au cours de la première quinzaine de Juin, si tout va bien.

     

    Sunski

    • Thanks 2
  7. Hi, I saw this topic and trying to build my own DLL to add it to my GUI lua file. My DLL is found but the module isn't loaded. Try with and without Base Address set in VS 2019 linker configuration. Not sure this Base Address is needed.

     

    My Cpp code, nothing else than dllmain.cpp generated by VS 2019 :

     

    #include "pch.h"
    
    extern "C" {
    #include "lua.h"		  // the includes for the 64 bit LUA libray
    #include "lualib.h"
    #include "luaconf.h"
    #include "lauxlib.h"
    }
    
    
    static int imult(lua_State* L)
    {
    	double a, b;
    
    	a = (double)lua_tonumber(L, 1);	// get all position report data from the stack
    	b = (double)lua_tonumber(L, 2);
    	
    	lua_pushnumber(L, a * b);
    
    	return 1;
    }
    
    
    static int  EndOfApplication(lua_State* L)
    {
    	// do all clean up for your DLL here in
    	return 0;
    }
    
    /***********************************************************************************
    
    	 COMMENT:  This is the 	standardized list of all functions in your DLL. The first
    			   entry is the name that LUA understands, the second is the pointer to
    			   the DLL function
    
    	 GROUP:	   LUA DLL
    
    
    	*/
    
    
    static const luaL_Reg Map[] = {
    	{"mult", imult},	 // receives a position report from the LUA script
    	{NULL, NULL}
    };
    
    
    /***********************************************************************************
    
    	 COMMENT:  This is the 	DLL entry point. The LUA loader searches for this function
    			   to be called. Take special car to the name of the function. In this case
    			   LUAext must be the name of the DLL
    
    	 GROUP:	   LUA DLL
    
    	 ENTRY:	   lua_State
    
    	 EXIT:	   int loaded by luaL_register onto the stack
    
    	*/
    
    
    
    
    extern "C" __declspec(dllexport)  int luaopen_ATMEDll(lua_State* L)
    {
    	luaL_register(L, "Test", Map);	   // register the list of function
    	return 1;
    }

     

    Actually :

    • Lua 5.1 compiled in X64 env -> Ok got my lua51.lib
    • VS 2019, create my dll in X64 Release conf -> Ok build ok.
    • The DLL has been copied in Saved Games\DCS.openbeta\Mods\tech\ATME\bin which name is ATMEDll.dll. In the folder, only that file is present.

    My lua file is simple :

     

    -- ATME GameGUI
    -- tests
    
    
    do
    	-- local myPath = lfs.writedir()
    	local dllATMEModPath = lfs.writedir()..'Mods\\tech\\ATME\\bin\\'
    	package.cpath = package.cpath..";" .. dllATMEModPath .. "?.dll"
    
    	local ATMEDll = require "ATMEDll"   -- loads the DLL
    
    	local ATMECallbacks = {}
    
    	function ATMECallbacks.onMissionLoadEnd()
    		
    	end
    
    	function ATMECallbacks.onSimulationStart()
    		if DCS.isMultiplayer() == false then
    			log.write("[ATME]",log.INFO, "Mission starts in SP")
    			trigger.action.setUserFlag("Test", 1)
    		else
    			log.write("[ATME]",log.INFO, "Mission starts in MP")
    		end
    	end
    
    	function ATMECallbacks.onSimulationFrame()
    		
    	end
    
    	function ATMECallbacks.onPlayerConnect(id)
    		local player = net.get_player_info(id)
    		log.write("[ATME]",log.INFO, "New player " .. player.name .. " connected")
    	end
    	
    	function ATMECallbacks.onGameEvent(event, id, slot)
    		if event == "change_slot" then
    			if DCS.isMultiplayer() == true then
    				local player = net.get_player_info(id)
    				log.write("[ATME]",log.INFO, "New player " .. player.name .. " starts")
    			else
    				log.write("[ATME]",log.INFO, "Player starts in SP")
    			end
    		end
    	end
    
    	function ATMECallbacks.onPlayerDisconnect(id,err_code)
    		
    	end
    
    	DCS.setUserCallbacks(ATMECallbacks)
    
    	log.write("[ATME]",log.INFO, "ATME successfully loaded")
    
    end

     

     My lua script works perfectly without the require line of course.

    But when started DCS I have that :

     

    2021-05-20 07:52:57.904 DEBUG   LuaGUI: Failed to exec user hook script ATMEGameGUI.lua: error loading module 'ATMEDll' from file '...\Saved Games\DCS.openbeta\Mods\tech\ATME\bin\ATMEDll.dll':
    	Le module spécifié est introuvable.

     

    ... is the begining of the path, and good of course.    "Le module spécifié est introuvable" means "The specified module could not be found."

     

    I think it's a calling convention problem or a VS environment configuration. 

     

    Any idea ?

     

    Thanks in advance

     

    • Thanks 1
  8. As a conclusion,  there's no way to change a group with "Nothing"  main task to any attack main task when group has been spawned. I must create for example a group with  "Ground Attack" main task in ME (or directly in script with addGroup) and set the Weapon Hold value to ROE option to have a group ready to engage.

     

    Am I right?

     

     

    • Like 1
  9. Bonjour,

     

    Autre possibilité un trackball, un peu d'adaptation au début car droitier et utilisation main gauche l'ayant posé à gauche derrière le throttle, la main tombe direct dessus ; ca marche bien aussi.

     

     

  10. Hi Grimes,

     

    Yes, I thought that the rules for tasking were like you asked.  But the real problem is with the "Nothing" main task.

    For example, two missions with only a 'AttackMapObject' task and a group with one AV-8. The aircraft group is set to 'Nothing' in ME for the first mission and to 'Ground Attack' for the other. You can notice at 12:00:50 that the group fires an AGM65 in the mission called "test attack with Ground Attack.miz", but do nothing in the other one.

     

    I thought that the "Nothing" main task has a limited option like "weapon hold" set, but same result, with "Nothing" main task, the aircraft group never open fire when a attack, bombing or other task is set.

     

    Here is the very simple script  :

    local zone = trigger.misc.getZone("MapTarget")
    
    
    local task = {
    	id = "AttackMapObject",
    	params = {
    		point = {x = zone.point.x, y =zone.point.z},
    		weaponType = 262144, -- FireAndForgetASM
    		expend = "Half",
    	},
    }
    
    local group = Group.getByName("Bombardier-1")
    
    group:getController():pushTask(task)

     

    In the other hand, when the aircraft group fly over ennemies with that pushed task and have "Ground Attack" main task, it engages ennemies. If you want the group do nothing, you have to set option WEAPON_HOLD :

     

    local zone = trigger.misc.getZone("MapTarget")
    
    
    local task = {
    	id = "AttackMapObject",
    	params = {
    		point = {x = zone.point.x, y =zone.point.z},
    		weaponType = 262144, -- FireAndForgetASM
    		expend = "Half",
    	},
    }
    
    local group = Group.getByName("Bombardier-1")
    
    -- Weapon Hold
    group:getController():setOption(AI.Option.Air.id.ROE, AI.Option.Air.val.ROE.WEAPON_HOLD)
    --
    group:getController():pushTask(task)

     

    And finally, when the aircraft group fly over ennemies with that pushed task and have "Nothing" main task, it never engages ennemies even if WEAPON_FREE option set :

     

    local zone = trigger.misc.getZone("MapTarget")
    
    
    local task = {
    	id = "AttackMapObject",
    	params = {
    		point = {x = zone.point.x, y =zone.point.z},
    		weaponType = 262144, -- FireAndForgetASM
    		expend = "Half",
    	},
    }
    
    local group = Group.getByName("Bombardier-1")
    
    -- Weapon Free
    group:getController():setOption(AI.Option.Air.id.ROE, AI.Option.Air.val.ROE.WEAPON_FREE)
    --
    group:getController():pushTask(task)

     

     

    So, when main task "Nothing" is set, is there something to do to force aircraft group to engage ?

     

    Thanks in advance

    Sunski.

    test attack task with Nothing.miz test attack task with Ground Attack.miz

  11. Hi,

     

    The good working of DCS tasks assigned to an aircraft group depends on the Main TASK or ROLE defined in ME or when spawning (string task value in lua). For exemple "Ground Attack" is necessary to have a good working of the "AttackGroup" task.

     

    But, when the group has been spawned, is it possible to change it  during the mission, of course with a lua function  ?

     

    Thanks in advance for your returns.

    Sunski.

×
×
  • Create New...