View Single Post
  #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