View Single Post
  #2  
Old 10-06-2011, 10:06 AM
FG28_Kodiak FG28_Kodiak is offline
Approved Member
 
Join Date: Dec 2009
Location: Swabia->Bavaria->Germany
Posts: 884
Default

Quote:
Regarding messages script it looks like a RU message would be shown to everyone if using sendChatMessageTo(-1, ru, ...)

sendChatMessageTo(-1, void, ...) shows international message to RU users. Ideally I would like to separate messages to RU and international users completely if possible.

Ok my fault , have forgotten to handle different languages if send on all.

Corrected version:
Code:
    private void sendScreenMessageTo(int army, string playerlanguage, string msg, object[] parms)
    {
        if (army != -1)
        {
            //Singleplayer (for Testing)
            if (GamePlay.gpRemotePlayers() == null || GamePlay.gpRemotePlayers().Length <= 0)
            {
                if (GamePlay.gpPlayer() != null && GamePlay.gpPlayer().Army() == army && GamePlay.gpPlayer().LanguageName().Equals(playerlanguage))
                    GamePlay.gpHUDLogCenter(null, msg, parms);

            }
            else // Multiplayer
            {
                List<Player> Players = new List<Player>();

                foreach (Player p in GamePlay.gpRemotePlayers())
                {
                    if (p.Army() == army && p.LanguageName().Equals(playerlanguage))
                        Players.Add(p);
                }
                GamePlay.gpHUDLogCenter(Players.ToArray(), msg, parms);
            }
        }
        else
        {
            List<Player> Players = new List<Player>();

            foreach (Player p in GamePlay.gpRemotePlayers())
            {
                if (p.LanguageName().Equals(playerlanguage))
                    Players.Add(p);
            }
            GamePlay.gpHUDLogCenter(Players.ToArray(), msg, parms);
        }   
    }


    private void sendChatMessageTo(int army, string playerlanguage, string msg, object[] parms)
    {
        if (army != -1)
        {
            //Singleplayer (for Testing)
            if (GamePlay.gpRemotePlayers() == null || GamePlay.gpRemotePlayers().Length <= 0)
            {
                if (GamePlay.gpPlayer() != null && GamePlay.gpPlayer().Army() == army && GamePlay.gpPlayer().LanguageName().Equals(playerlanguage))
                    GamePlay.gpLogServer(null, msg, parms);
            }
            else // Multiplayer
            {
                List<Player> Players = new List<Player>();

                foreach (Player p in GamePlay.gpRemotePlayers())
                {
                    if (p.Army() == army && p.LanguageName().Equals(playerlanguage))
                        Players.Add(p);
                }
                GamePlay.gpLogServer(Players.ToArray(), msg, parms);
            }
        }
        else
        {
            List<Player> Players = new List<Player>();

            foreach (Player p in GamePlay.gpRemotePlayers())
            {
                if (p.LanguageName().Equals(playerlanguage))
                    Players.Add(p);
            }
            GamePlay.gpLogServer(Players.ToArray(), msg, parms);
        }
    }
Quote:
Kodiak, when you have time I would like to ask you for advice how to calculate number of enemy fighter and bomber planes. Ideally I see aircraft limiting script as follows:

Declare percentages for limited aircraft types = X%.
OnPlaceEnter recalculate number of human-controlled enemy fighter and bomber planes (enmyFgtrs & enmyBmbrs) - this is the difficult part
Set curTeamBalance = (friendlyFgtrs + friendlyBmbrs/2) / (enmyFgtrs + enmyBmbrs/2)
Check if
if curTeamBalance > allowedTeamBalance then deny a limited aircraft (with RU and international message).
else Set e.g.
Nothing difficult .
Should the script calculate all in game planes too, or only the player controlled? So it should be possible to disable KI Starts if many Players are online.

Last edited by FG28_Kodiak; 10-06-2011 at 10:33 AM.
Reply With Quote