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
  #41  
Old 10-12-2011, 11:17 AM
FG28_Kodiak FG28_Kodiak is offline
Approved Member
 
Join Date: Dec 2009
Location: Swabia->Bavaria->Germany
Posts: 884
Default

Yes i get the english messages at my private testserver.
Btw the messages are to long for my screen resolution (19' 1280*1024), so i can't see the begin and the end of the message.

I also get the OnTickGame Messages (with my latest version), good to know that GamePlay.gpPlayer() is the server so we can send testmessages to the LOG.
But i ever think gpPlayer is for Singleplayer and gpRemotePlayer is for Multiplayer, so sorry for the inconvenience

SO latest Version:
Code:
using System;
using System.Collections;
using System.Collections.Generic;
using maddox.game;
using maddox.game.world;


public class Mission : AMission
{

    #region MessageSystem

    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);
    }


    private void sendScreenMessageTo(int army, string playerlanguage, 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) && GamePlay.gpPlayer().LanguageName().Equals(playerlanguage))
                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) && p.LanguageName().Equals(playerlanguage))
                    Players.Add(p);
            }
        }
        if (Players != null && Players.Count > 0)
            GamePlay.gpHUDLogCenter(Players.ToArray(), msg, parms);
    }


    private void sendChatMessageTo(int army, string playerlanguage, 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) && GamePlay.gpPlayer().LanguageName().Equals(playerlanguage))
                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) && p.LanguageName().Equals(playerlanguage))
                    Players.Add(p);
            }
        }
        if (Players != null && Players.Count > 0)
            GamePlay.gpLogServer(Players.ToArray(), msg, parms);
    }


    private void sendChatMessageTo(int army, string[] exepttoplayerlanguages, 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);
            }
        }

        foreach (string st in exepttoplayerlanguages)
        {
            Players.RemoveAll(item => item.LanguageName().Equals(st));
        }

        if (Players != null && Players.Count > 0)
            GamePlay.gpLogServer(Players.ToArray(), msg, parms);
    }


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

        foreach (string st in exepttoplayerlanguages)
        {
            //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);
                }
            }
        }
        foreach (string st in exepttoplayerlanguages)
        {
            Players.RemoveAll(item => item.LanguageName().Equals(st));
        }

        if (Players != null && Players.Count > 0)
            GamePlay.gpHUDLogCenter(Players.ToArray(), msg, parms);
    }


    private void sendChatMessageTo(Player player, string msg, object[] parms)
    {
        if (player != null)
            GamePlay.gpLogServer(new Player[] { player }, msg, parms);
    }


    private void sendScreenMessageTo(Player player, string msg, object[] parms)
    {
        if (player != null)
            GamePlay.gpHUDLogCenter(new Player[] { player }, msg, parms);
    }


    private void sendChatMessageTo(Player player, string playerlanguage, string msg, object[] parms)
    {
        if (player != null)
            if (player.LanguageName().Equals(playerlanguage))
                GamePlay.gpLogServer(new Player[] { player }, msg, parms);
    }


    private void sendScreenMessageTo(Player player, string playerlanguage, string msg, object[] parms)
    {
        if (player != null)
            if (player.LanguageName().Equals(playerlanguage))
                GamePlay.gpHUDLogCenter(new Player[] { player }, msg, parms);
    }
    
    
    private void sendChatMessageTo(Player player, string[] exepttoplayerlanguages, string msg, object[] parms)
    {

        List<Player> Players = new List<Player>();
        
        if (player != null)
            Players.Add(player);    
        
        foreach (string st in exepttoplayerlanguages)
        {
            if(Players != null)
                Players.RemoveAll(item => item.LanguageName().Equals(st));
        }

        if (Players != null && Players.Count > 0)
            GamePlay.gpLogServer(Players.ToArray(), msg, parms);
    }
 
   
    private void sendScreenMessageTo(Player player, string[] exepttoplayerlanguages, string msg, object[] parms)
    {
        List<Player> Players = new List<Player>();
        
        if (player != null)
            Players.Add(player);    
        
        foreach (string st in exepttoplayerlanguages)
        {
            if (Players != null)
                Players.RemoveAll(item => item.LanguageName().Equals(st));
        }

        if (Players != null && Players.Count > 0)
            GamePlay.gpHUDLogCenter(Players.ToArray(), msg, parms);
    }
    
    #endregion

}

Last edited by FG28_Kodiak; 10-12-2011 at 11:26 AM.
Reply With Quote
  #42  
Old 10-12-2011, 12:05 PM
Ataros Ataros is offline
Approved Member
 
Join Date: Jun 2010
Location: USSR
Posts: 2,439
Default

Thank you very much! Will try to install it tonight.
Reply With Quote
  #43  
Old 10-12-2011, 01:39 PM
Ataros Ataros is offline
Approved Member
 
Join Date: Jun 2010
Location: USSR
Posts: 2,439
Default

All messages work finally (in Russian at least)! Runs on Repka 2 now. Thank you very much!
Reply With Quote
  #44  
Old 10-12-2011, 05:57 PM
Ataros Ataros is offline
Approved Member
 
Join Date: Jun 2010
Location: USSR
Posts: 2,439
Default

What these errors can be related? Just had server launcher crash some time after these errors.

Code:
[21:44:59]	
[21:44:59]	=================================================
[21:44:59]	System.NullReferenceException: Object reference not set to an instance of an object.
[21:44:59]	
[21:44:59]	Server stack trace: 
[21:44:59]	   at Mission.OnPlaceLeave(Player player, AiActor actor, Int32 placeIndex)
[21:44:59]	   at maddox.game.ABattle.OnPlaceLeave(Player player, AiActor actor, Int32 placeIndex)
[21:44:59]	   at maddox.game.ABattle.OnEventGame(GameEventId eventId, Object eventArg0, Object eventArg1, Int32 eventArgInt)
[21:44:59]	   at maddox.game.world.Strategy.OnEventGame(GameEventId eventId, Object eventArg0, Object eventArg1, Int32 eventArgInt)
[21:44:59]	   at System.Runtime.Remoting.Messaging.StackBuilderSink._PrivateProcessMessage(IntPtr md, Object[] args, Object server, Int32 methodPtr, Boolean fExecuteInContext, Object[]& outArgs)
[21:44:59]	   at System.Runtime.Remoting.Messaging.StackBuilderSink.SyncProcessMessage(IMessage msg, Int32 methodPtr, Boolean fExecuteInContext)
[21:44:59]	
[21:44:59]	Exception rethrown at [0]: 
[21:44:59]	   at System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage(IMessage reqMsg, IMessage retMsg)
[21:44:59]	   at System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke(MessageData& msgData, Int32 type)
[21:44:59]	   at maddox.game.IBattle.OnEventGame(GameEventId eventId, Object eventArg0, Object eventArg1, Int32 eventArgInt)
[21:44:59]	   at maddox.game.GameDef.eventGame(GameEventId eventId, Object eventArg0, Object eventArg1, Int32 eventArgInt)
[21:44:59]	   at dp8K7ffZC2JmTFxNtum.gkydOifm2sRXchrPjNC.eventGame(GameEventId , Object , Object , Int32 )
[21:44:59]	   at tpZkklAJjTISdGT144j.fBZFTNAMvsuuP0ewCS3.AY6A72gxK6R(GameEventId , Object , Object , Int32 )
[21:44:59]	=================================================
[21:44:59]	Server: vist is now with the Blue army.
Reply With Quote
  #45  
Old 10-12-2011, 06:03 PM
FG28_Kodiak FG28_Kodiak is offline
Approved Member
 
Join Date: Dec 2009
Location: Swabia->Bavaria->Germany
Posts: 884
Default

Nothing to do with my part,
something in OnPlaceLeave going wrong.

You should test actor for null value:

if (actor != null) //missing
{
if ((actor as AiAircraft).InternalTypeName() == "bob:Aircraft.DH82A")
...
}

Last edited by FG28_Kodiak; 10-12-2011 at 06:08 PM.
Reply With Quote
  #46  
Old 10-12-2011, 06:28 PM
Ataros Ataros is offline
Approved Member
 
Join Date: Jun 2010
Location: USSR
Posts: 2,439
Default

Thank you very much! It's a hard science for me, ahh...
Reply With Quote
  #47  
Old 12-06-2011, 09:41 AM
Octocat Octocat is offline
Approved Member
 
Join Date: Dec 2011
Posts: 22
Default

You can declare a function as:

private void sendScreenMessageTo(int army, string msg, params object[] parms)

then array for the parameters will be generated automatically, the call will be easier to look:

sendScreenMessageTo(myarmy, "I am at grid {0}, {1}", xpos, ypos);


Also, lowercase first letter in class or function name is Java style, not C#. Microsoft C# Code Design Guidelines.
Reply With Quote
  #48  
Old 12-06-2011, 01:50 PM
FG28_Kodiak FG28_Kodiak is offline
Approved Member
 
Join Date: Dec 2009
Location: Swabia->Bavaria->Germany
Posts: 884
Default

I use lowercase first letters for private methods and uppercase for public, thats all. And i am not interested in "Style Guidlines" from Microsoft.

And i don't use the params parameter to avoid confusion between
(GamePlay)
void gpLogServer(Player[] to, string format, object[] args);
and my methods.

btw.
Welcome to the forum!
Reply With Quote
  #49  
Old 12-06-2011, 02:22 PM
Octocat Octocat is offline
Approved Member
 
Join Date: Dec 2011
Posts: 22
Default

Thank you.

As we say: our business - to offer, your - to refuse. In the end, everyone chooses his own way.
Reply With Quote
  #50  
Old 12-07-2011, 01:23 PM
KDN KDN is offline
Approved Member
 
Join Date: Sep 2010
Posts: 114
Default

I am trying to use the \n within the " " of a sting to create a new line for long screen messages and it seems that I am not getting it right.
for example:
SendScreenMessageTo(1, "Note\nPress TAB and 4 at ANY time\nLoad any submission available in the list");

Any idea what I might be missing?
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 03:28 PM.


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