Fulqrum Publishing Home   |   Register   |   Today Posts   |   Members   |   UserCP   |   Calendar   |   Search   |   FAQ

Go Back   Official Fulqrum Publishing forum > Fulqrum Publishing > IL-2 Sturmovik: Cliffs of Dover > FMB, Mission & Campaign builder Discussions

Reply
 
Thread Tools Display Modes
  #51  
Old 12-07-2011, 01:47 PM
FG28_Kodiak FG28_Kodiak is offline
Approved Member
 
Join Date: Dec 2009
Location: Swabia->Bavaria->Germany
Posts: 884
Default

It's not possible.
GamePlay.gpHUDLogCenter(..) doesn't support it, i've tried it too .

You can use the timeout command to show one message after another.

Code:
SendScreenMessageTo(1, "Note");

Timeout(5, () =>    // Time in Seconds
{
     SendScreenMessageTo(1, "Press TAB and 4 at ANY time");
});
Timeout(10, () =>    
{
SendScreenMessageTo(1, "Load any submission available in the list");
});
etc.
Reply With Quote
  #52  
Old 12-07-2011, 01:57 PM
KDN KDN is offline
Approved Member
 
Join Date: Sep 2010
Posts: 114
Default

Thaaaaaaank you!!
I will do just that
Reply With Quote
  #53  
Old 01-12-2012, 09:30 AM
podvoxx podvoxx is offline
Approved Member
 
Join Date: Feb 2010
Posts: 190
Default

to Kodiak
Hi! I use your script to send messages:

Code:
sendChatMessageTo(-1, "blablabla", new object[] { }); //TEST
sendScreenMessageTo(-1, "blablabla", new object[] { }); //TEST
Code:
 private void sendScreenMessageTo(int army, string msg, object[] parms)
    {
        List<Player> Players = new List<Player>();

        //Singleplayer or Dedi Server
        if (GamePlay.gpPlayer() != null)
        {
                if (GamePlay.gpPlayer().Army() == army || army == -1)
                    Players.Add(GamePlay.gpPlayer());
        } // Multiplayer
        if (GamePlay.gpRemotePlayers() != null || GamePlay.gpRemotePlayers().Length > 0)
        {
            foreach (Player p in GamePlay.gpRemotePlayers())
            {
                if (p.Army() == army || army == -1)
                    Players.Add(p);
            }
        }
        if (Players != null && Players.Count > 0)
            GamePlay.gpHUDLogCenter(Players.ToArray(), msg, parms);
    }


    private void sendChatMessageTo(int army, string msg, object[] parms)
    {
        List<Player> Players = new List<Player>();

        //Singleplayer or Dedi Server
        if (GamePlay.gpPlayer() != null)
        {
            if (GamePlay.gpPlayer().Army() == army || army == -1)
                Players.Add(GamePlay.gpPlayer());
        } // Multiplayer
        if (GamePlay.gpRemotePlayers() != null || GamePlay.gpRemotePlayers().Length > 0)
        {
            foreach (Player p in GamePlay.gpRemotePlayers())
            {
                if (p.Army() == army || army == -1)
                    Players.Add(p);
            }
        }
        if (Players != null && Players.Count > 0)
            GamePlay.gpLogServer(Players.ToArray(), msg, parms);
    }
Code:
[21:56:12]	=================================================
[21:56:12]	System.NullReferenceException: Object reference not set to an instance of an object.
[21:56:12]	
[21:56:12]	Server stack trace: 
[21:56:12]	   at 6UZP66dp5dKAdD5LMYr.F9pJL9dGtcbAt8r8Umh.JwjWWYN9w9(xnKDxkk8wATA33F3hpA , G7xPRi2e9fpuLtHG23a )
[21:56:12]	   at 5iyST5gABhh0WhImZtw.4W7PgSgvHpySuqonJno.sp1UnA9jmwb(Player[] , String , Object[] , Double )
[21:56:12]	   at 5iyST5gABhh0WhImZtw.4W7PgSgvHpySuqonJno.yEy1eAe2YPQxskLBZIku(Object , Object , Object , Double )
[21:56:12]	   at 5iyST5gABhh0WhImZtw.4W7PgSgvHpySuqonJno.d87UnNOmgnm(Player[] , String , Object[] )
[21:56:12]	   at pqlnUTF7gnMAoU4L9MP.lm1GgkFoiOOBGu1gmwf.ZnhKPrKgxsgJUIGtmgOK(Object , Object , Object )
[21:56:12]	   at pqlnUTF7gnMAoU4L9MP.lm1GgkFoiOOBGu1gmwf.HUDLogCenter(Player[] , String , Object[] )
[21:56:12]	   at maddox.game.GameDef.gpHUDLogCenter(Player[] to, String msg, Object[] parms)
[21:56:12]	   at System.Runtime.Remoting.Messaging.StackBuilderSink._PrivateProcessMessage(IntPtr md, Object[] args, Object server, Int32 methodPtr, Boolean fExecuteInContext, Object[]& outArgs)
[21:56:12]	   at System.Runtime.Remoting.Messaging.StackBuilderSink.SyncProcessMessage(IMessage msg, Int32 methodPtr, Boolean fExecuteInContext)
[21:56:12]	
[21:56:12]	Exception rethrown at [0]: 
[21:56:12]	   at System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage(IMessage reqMsg, IMessage retMsg)
[21:56:12]	   at System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke(MessageData& msgData, Int32 type)
[21:56:12]	   at maddox.game.IGamePlay.gpHUDLogCenter(Player[] to, String msg, Object[] parms)
[21:56:12]	   at Mission.sendScreenMessageTo(Int32 army, String msg, Object[] parms)
[21:56:12]	   at Mission.OnActorDead(Int32 missionNumber, String shortName, AiActor actor, List`1 damages)
[21:56:12]	   at maddox.game.world.Strategy.OnActorDead(Int32 missionNumber, String shortName, AiActor actor, AiDamageInitiator initiator)
[21:56:12]	   at maddox.game.ABattle.OnEventGame(GameEventId eventId, Object eventArg0, Object eventArg1, Int32 eventArgInt)
[21:56:12]	   at maddox.game.world.Strategy.OnEventGame(GameEventId eventId, Object eventArg0, Object eventArg1, Int32 eventArgInt)
[21:56:12]	   at System.Runtime.Remoting.Messaging.StackBuilderSink._PrivateProcessMessage(IntPtr md, Object[] args, Object server, Int32 methodPtr, Boolean fExecuteInContext, Object[]& outArgs)
[21:56:12]	   at System.Runtime.Remoting.Messaging.StackBuilderSink.SyncProcessMessage(IMessage msg, Int32 methodPtr, Boolean fExecuteInContext)
[21:56:12]	
[21:56:12]	Exception rethrown at [1]: 
[21:56:12]	   at System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage(IMessage reqMsg, IMessage retMsg)
[21:56:12]	   at System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke(MessageData& msgData, Int32 type)
[21:56:12]	   at maddox.game.IBattle.OnEventGame(GameEventId eventId, Object eventArg0, Object eventArg1, Int32 eventArgInt)
[21:56:12]	   at maddox.game.GameDef.eventGame(GameEventId eventId, Object eventArg0, Object eventArg1, Int32 eventArgInt)
[21:56:12]	   at RoFTf9069W6jWRmA8PN.U2RoVL0OVdWjVQJ7319.eventGame(GameEventId , Object , Object , Int32 )
[21:56:12]	   at NTlYp6NdtgpnKt7wGgO.VvFELvNie2My3mOTesk.WPGBQuHHKI8(GameEventId , Object , Object , Int32 )
[21:56:12]	=================================================
It occurs in the method OnActorDead()
Code:
 public void messageTaskComplite(int numberDeadUnit, int taskPrice, int armyTask, string msg)
    {
        sendChatMessageTo(-1, getLocalizedMessage(msg) + "[ {0} ]", new object[] { numberDeadUnit });
        sendScreenMessageTo(-1, getLocalizedMessage(msg), new object[] { });
        if (armyTask == 1)
        {
            sendChatMessageTo(-1, getLocalizedMessage("getPointsRED") + "[ {0} ]", new object[] { taskPrice });
        }
        else if (armyTask == 2)
        {
            sendChatMessageTo(-1, getLocalizedMessage("getPointsBLUE") + "[ {0} ]", new object[] { taskPrice });
        }
    }
Code:
public override void OnActorDead(int missionNumber, string shortName, AiActor actor, List<DamagerScore> damages)
	{
		base.OnActorDead(missionNumber, shortName, actor, damages);
        //sendChatMessageTo(-1, actor.ToString(), new object[] { }); //TEST        
        if (actor != null)
        {
            //AiGroundActor STATISTIC
            if (actor is AiGroundActor)
            {
                sendChatMessageTo(-1, "***Plane KILL - AiAircraft:....." + shortName, new object[] { });  //TEST
            	AiGroundActor groundActor = actor as AiGroundActor;
                if (groundActor != null)
                {
                    //sendChatMessageTo(-1, groundActor.ToString(), new object[] { }); //TEST
                    //tasks AiGroundActor DEAD stat
                    switch (missionNumber)
                    {
                        case 1:
                            if (actor.Army() == 2)
                            {                                
                                if (groundActor.Type() == AiGroundActorType.Artillery)
                                {
                                    numberDeadUnit01_1++;
                                    if (numberDeadUnit01_1 == numberCompliteTask01_1)
                                    {
                                        messageTaskComplite(numberDeadUnit01_1, taskPrice01_1, 1, "successMission01_1");                                        
                                        redScore = redScore + taskPrice01_1;
                                        taskStatusArray.SetValue(true, 0);
                                    }
                                }
                                else 
                                {
                                    numberDeadUnit01_2++;
                                    if (numberDeadUnit01_2 == numberCompliteTask01_2)
                                    {
                                        messageTaskComplite(numberDeadUnit01_2, taskPrice01_2, 1, "successMission01_2");                                         
                                        redScore = redScore + taskPrice01_2;
                                        taskStatusArray.SetValue(true, 1);
                                    }
                                }
                            }          
                            break;                                      
                    } //switch
                    
            //AiAircraft STATISTIC
            if (actor is AiAircraft)
            {
                sendChatMessageTo(-1, "***Plane KILL - AiAircraft:....." + shortName, new object[] { });  //TEST
            	AiAircraft aircraft = (actor as AiAircraft);
                if (aircraft != null)
                {
                    // Main AiAircraft plane stat
                    if (aircraft.Army() == 1)
                    {
                        numberDeadRedPlanes++;
                        blueScore = blueScore + unitPlanePrice;
                    }
                    else if (aircraft.Army() == 2 && aircraft != null)
                    {
                        numberDeadBluePlanes++;
                        redScore = redScore + unitPlanePrice;
                    }       
                }                
            }            
        }//null
	}
But i have problem on dedi server. On multiplayer and single all works fine. On dedi - HUD message don`t work...
What method do I need to use on the dedi server?

getLocalizedMessage("getPointsRED") turn off(always "en")

Last edited by podvoxx; 01-12-2012 at 09:42 AM.
Reply With Quote
  #54  
Old 01-12-2012, 12:11 PM
FG28_Kodiak FG28_Kodiak is offline
Approved Member
 
Join Date: Dec 2009
Location: Swabia->Bavaria->Germany
Posts: 884
Default

Can you test these please, i ve made some rework meanwhile:

Code:
    private void sendScreenMessageTo(int army, string msg, params object[] args)
    {
        List<Player> Consignees = new List<Player>();

        if (GamePlay.gpPlayer() != null)
            Consignees.Add(GamePlay.gpPlayer());
        if (GamePlay.gpRemotePlayers() != null)
            Consignees.AddRange(GamePlay.gpRemotePlayers());

        if (army == -1)
            GamePlay.gpHUDLogCenter(null, msg, args);
        else if (Consignees.Exists(item => item.Army() == army))
            GamePlay.gpHUDLogCenter(Consignees.FindAll(item => item.Army() == army).ToArray(), msg, args);
    }


    private void sendChatMessageTo(int army, string msg, params object[] args)
    {
        List<Player> Consignees = new List<Player>();

        if (GamePlay.gpPlayer() != null)
            Consignees.Add(GamePlay.gpPlayer());
        if (GamePlay.gpRemotePlayers() != null)
            Consignees.AddRange(GamePlay.gpRemotePlayers());

        if (army == -1)
            GamePlay.gpLogServer(null, msg, args);
        else if (Consignees.Exists(item => item.Army() == army))
            GamePlay.gpLogServer(Consignees.FindAll(item => item.Army() == army).ToArray(), msg, args);
    }
you can use it now without "new object[]{...}", simply use your variables.

example
int redpoints =10;
int bluepoints =20;

sendScreenMessageTo(-1, "Red have {0} Points / Blue: {1} Points", redpoints, bluepoints);
or use it without
sendScreenMessageTo(-1, "Welcome to our Server");

Last edited by FG28_Kodiak; 01-12-2012 at 01:10 PM.
Reply With Quote
  #55  
Old 01-12-2012, 05:09 PM
podvoxx podvoxx is offline
Approved Member
 
Join Date: Feb 2010
Posts: 190
Default

Quote:
Originally Posted by FG28_Kodiak View Post
Can you test these please, i ve made some rework meanwhile:

you can use it now without "new object[]{...}", simply use your variables.
Thank you very much for your help! Msg system work fine.

Last edited by podvoxx; 01-12-2012 at 05:46 PM.
Reply With Quote
Reply


Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT. The time now is 06:10 PM.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Copyright © 2007 Fulqrum Publishing. All rights reserved.