PDA

View Full Version : Grabbing the hWnd and keyboard etc


fearlessfrog
08-08-2011, 06:39 AM
Have any of you guys played around with trying to have some sort of input into a running mission script, i.e. user key-presses or external window handle?

I'm thinking as a WPF app it should be possible to register for OnKey events or GetKeyState and the like but I've not yet tried it. It should be possible to get the window handle and then go from there as I imagine the AMission class wouldn't get any of that naturally.

Anyone tried this or have any luck with this type of thing already?

41Sqn_Banks
08-08-2011, 08:28 AM
I tried to read "command" (something like "!hello" typed in by a player) from the log file. However it seems like the log file is only written when the game is closed.

Ataros
08-08-2011, 08:39 AM
As far as I know a log file is written with a very short delay at least on a dedi server.

Have any of you guys played around with trying to have some sort of input into a running mission script, i.e. user key-presses or external window handle?

Small_Bee or Geniok at sukhoi.ru mentioned that grabbing key presses is probably possible if a dll is downloaded from server to client together with a mission. No one did this yet as far as i know.

41Sqn_Banks
08-08-2011, 09:52 AM
As far as I know a log file is written with a very short delay at least on a dedi server.

Ok I will check this. Would make sense as the dedicated server is not supposed to be closed that often.

adonys
08-08-2011, 10:01 AM
Even if it is not written duing the mission, MG must have at least some pointer to the filebuffer in which is stored.. Most probably they should also have some LastLineAdded funtion.. You should ask Narvy on sukhoi forum.

41Sqn_Banks
08-08-2011, 05:50 PM
I managed to register a method to the Chat event of the GameDef class. However I don't think it's possible to access GameDef from the mission script.

I can do this however from within my addin.

fearlessfrog
08-08-2011, 06:17 PM
I managed to register a method to the Chat event of the GameDef class. However I don't think it's possible to access GameDef from the mission script.

I can do this however from within my addin.

Hmm, perhaps I should be doing an add-in then. My original question was really for just single player functionality, and I thought putting it in a mission script would be the way to go.

I see you implemented an Add-In interface in your campaign stuff Banks - does that also run while a mission is being played, i.e. I could hook into the Chat event while a mission is playing if I write an Add-in?

Thanks for your comments/help btw :)

41Sqn_Banks
08-08-2011, 07:33 PM
Yes the chat is captured during the mission.

http://code.google.com/p/il2dce/source/browse/trunk/IL2DCE/IL2DCE/Core.cs



public Core(GameDef game)
{
_game = game;

Game.EventChat += new GameDef.Chat(Game_EventChat);




void Game_EventChat(IPlayer from, string msg)
{
if(msg.Contains("!hello"))
{
Game.gpLogServer(new Player[] { from }, "Hello World!", null);
}
}


Here is how the GameDef is given to the Core. This is also the entry point for the addin.
http://code.google.com/p/il2dce/source/browse/trunk/IL2DCE/IL2DCE.Game/GameSingle.cs

public GameSingle(GameSingleIterface game)
: base(game)
{
core = new Core(this);
}


To load the addin you need to have a .xml file:
http://code.google.com/p/il2dce/source/browse/trunk/IL2DCE/IL2DCE.Game/IL2DCE.GameSingle.xml

fearlessfrog
08-08-2011, 07:59 PM
Great - thank you!

fearlessfrog
08-14-2011, 09:12 PM
One related question to this is has anyone found out anything regarding an Add-in interface that works without having to define a single player mission or campaign setup pages?

Banks - it seems the GameDef reference is only passed down into the Add-In once a whole campaign set is defined, say a new 'Single Player' menu entry (i.e. an entry in the XML config to the right assembly etc).

So if I wanted to let people just use my add-in then I have to either:

- Define some custom pages to go pick quick missions that exist. Is there anyway to reuse what's been defined in Play.QuickMiss() as that seems to return ContentControls rather than a Page implementation?

- Define a complete WPF custom page that allows a mission file to be picked and then loads the Mission?

- Some other type of Client Add-In that gives me the GameDef reference but is included in all type so Campaign/Missions?

Anyone got any ideas of this?

41Sqn_Banks
08-15-2011, 12:21 AM
One related question to this is has anyone found out anything regarding an Add-in interface that works without having to define a single player mission or campaign setup pages?

Banks - it seems the GameDef reference is only passed down into the Add-In once a whole campaign set is defined, say a new 'Single Player' menu entry (i.e. an entry in the XML config to the right assembly etc).

So if I wanted to let people just use my add-in then I have to either:

- Define some custom pages to go pick quick missions that exist. Is there anyway to reuse what's been defined in Play.QuickMiss() as that seems to return ContentControls rather than a Page implementation?


Yes you can reuse existing pages by IGameInterface.PageGet(string pageName).

Game.gameInterface.PagePush(Game.gameInterface.Pag eGet("SingleMissGame"), "mission " + missionFileName);

http://code.google.com/p/il2dce/source/browse/trunk/IL2DCE/IL2DCE.Pages/CampaignIntroPage.cs

By this you should be able to get the stock pages fpr single mission selection or the quick mission. Try the name of the corresponding ContentControl, so far this worked for me.


- Define a complete WPF custom page that allows a mission file to be picked and then loads the Mission?


Yes this is possible. Or you can reuse the stock ContentControl, then you only have to implement the functionality and can reuse the layout.


- Some other type of Client Add-In that gives me the GameDef reference but is included in all type so Campaign/Missions?


Could be possible but I think only the devs know this for sure.

41Sqn_Banks
08-19-2011, 08:38 PM
I was in contact with one of the devs on how to access the Chat-event from a mission script. He told me that the next patch will feature an elegant way to do things like that. So better we wait for the next patch.