Official Fulqrum Publishing forum

Official Fulqrum Publishing forum (http://forum.fulqrumpublishing.com/index.php)
-   FMB, Mission & Campaign builder Discussions (http://forum.fulqrumpublishing.com/forumdisplay.php?f=203)
-   -   Hud output depending on side choosen (http://forum.fulqrumpublishing.com/showthread.php?t=26623)

Ataros 10-12-2011 07:56 AM

I am using about 10-20 timeout statements in onTickGame to send messages. Does it slow down server processor if server has to count 10-20 timers at the same time or not?

Maybe it should be optimized to have only one timer?

FG28_Kodiak 10-12-2011 08:50 AM

Made little additions to the code, to avoid exeptions.

latest version:
http://forum.1cpublishing.eu/showpos...8&postcount=41

Ataros 10-12-2011 08:59 AM

Thank you! Testing on R2 now.

Ataros 10-12-2011 09:09 AM

I get this OnPlaceEnter if enable my "NET message"

Code:

[13:01:51]        Server: 3GIAP_Atas enters the battle.
[13:01:53]        Server: 3GIAP_Atas will fly for the Red forces.
[13:01:58]        Loading mission ...
[13:01:58]        Server to [Server]: A new group of 1 Red aircraft was reported.
[13:01:58]        Mission loaded. time = 0.329
[13:01:58]        Server to [3GIAP_Atas]: Удачного вылета!
[13:01:58]        Server to [3GIAP_Atas]: Пожалуйста, поставьте в настройках игры скорость сети 'ISDN'. Это нужно для тестирования сервера. Пожалуйста, сообщите на форуме sukhoi.ru уменьшает ли это лаги.
[13:01:58]       
[13:01:58]        =================================================
[13:01:58]        System.IO.IOException: I/O error occurred.
[13:01:58]       
[13:01:58]        Server stack trace:
[13:01:58]          at pFdAnwvFuaY9YxSo5Rb.MTbs2Wva9ZwBOQUYQch.XV70nxU5mb(String )
[13:01:58]          at Gs6THTU8KBgeGhkm4tn.1yUfFwUh503FN6STRyP.pAevmyIzcXSHogPw31FA(Object , Object )
[13:01:58]          at Gs6THTU8KBgeGhkm4tn.1yUfFwUh503FN6STRyP.vdHekiRiXUo(String , Object[] )
[13:01:58]          at Gs6THTU8KBgeGhkm4tn.1yUfFwUh503FN6STRyP.5ExekdenPIb(Player[] , String , Object[] )
[13:01:58]          at LrAZHYDb5HXlxAcGxGQ.O8MywKDql50K0Y6Ucrm.LogServer(Player[] , String , Object[] )
[13:01:58]          at maddox.game.GameDef.gpLogServer(Player[] to, String format, Object[] args)
[13:01:58]          at System.Runtime.Remoting.Messaging.StackBuilderSink._PrivateProcessMessage(IntPtr md, Object[] args, Object server, Int32 methodPtr, Boolean fExecuteInContext, Object[]& outArgs)
[13:01:58]          at System.Runtime.Remoting.Messaging.StackBuilderSink.SyncProcessMessage(IMessage msg, Int32 methodPtr, Boolean fExecuteInContext)
[13:01:58]       
[13:01:58]        Exception rethrown at [0]:
[13:01:58]          at System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage(IMessage reqMsg, IMessage retMsg)
[13:01:58]          at System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke(MessageData& msgData, Int32 type)
[13:01:58]          at maddox.game.IGamePlay.gpLogServer(Player[] to, String format, Object[] args)
[13:01:58]          at Mission.OnPlaceEnter(Player player, AiActor actor, Int32 placeIndex)
[13:01:58]          at maddox.game.ABattle.OnPlaceEnter(Player player, AiActor actor, Int32 placeIndex)
[13:01:58]          at maddox.game.ABattle.OnEventGame(GameEventId eventId, Object eventArg0, Object eventArg1, Int32 eventArgInt)
[13:01:58]          at maddox.game.world.Strategy.OnEventGame(GameEventId eventId, Object eventArg0, Object eventArg1, Int32 eventArgInt)
[13:01:58]          at System.Runtime.Remoting.Messaging.StackBuilderSink._PrivateProcessMessage(IntPtr md, Object[] args, Object server, Int32 methodPtr, Boolean fExecuteInContext, Object[]& outArgs)
[13:01:58]          at System.Runtime.Remoting.Messaging.StackBuilderSink.SyncProcessMessage(IMessage msg, Int32 methodPtr, Boolean fExecuteInContext)
[13:01:58]       
[13:01:58]        Exception rethrown at [1]:
[13:01:58]          at System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage(IMessage reqMsg, IMessage retMsg)
[13:01:58]          at System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke(MessageData& msgData, Int32 type)
[13:01:58]          at maddox.game.IBattle.OnEventGame(GameEventId eventId, Object eventArg0, Object eventArg1, Int32 eventArgInt)
[13:01:58]          at maddox.game.GameDef.eventGame(GameEventId eventId, Object eventArg0, Object eventArg1, Int32 eventArgInt)
[13:01:58]          at dp8K7ffZC2JmTFxNtum.gkydOifm2sRXchrPjNC.eventGame(GameEventId , Object , Object , Int32 )
[13:01:58]          at tpZkklAJjTISdGT144j.fBZFTNAMvsuuP0ewCS3.AY6A72gxK6R(GameEventId , Object , Object , Int32 )
[13:01:58]        =================================================
[13:02:04]        Chat: Server:        !!! VULCHING IS NOT ALLOWED ON THIS SERVER !!!
[13:02:47]        Loading mission ...
[13:02:47]        Server to [Server]: A new group of 1 Red aircraft was reported.
[13:02:47]        Mission loaded. time = 0.009
[13:02:47]        Server to [3GIAP_Atas]: Удачного вылета!
[13:02:47]        Server to [3GIAP_Atas]: Пожалуйста, поставьте в настройках игры скорость сети 'ISDN'. Это нужно для тестирования сервера. Пожалуйста, сообщите на форуме sukhoi.ru уменьшает ли это лаги.
[13:02:47]       
[13:02:47]        =================================================
[13:02:47]        System.IO.IOException: I/O error occurred.
[13:02:47]       
[13:02:47]        Server stack trace:
[13:02:47]          at pFdAnwvFuaY9YxSo5Rb.MTbs2Wva9ZwBOQUYQch.XV70nxU5mb(String )
[13:02:47]          at Gs6THTU8KBgeGhkm4tn.1yUfFwUh503FN6STRyP.pAevmyIzcXSHogPw31FA(Object , Object )
[13:02:47]          at Gs6THTU8KBgeGhkm4tn.1yUfFwUh503FN6STRyP.vdHekiRiXUo(String , Object[] )
[13:02:47]          at Gs6THTU8KBgeGhkm4tn.1yUfFwUh503FN6STRyP.5ExekdenPIb(Player[] , String , Object[] )
[13:02:47]          at LrAZHYDb5HXlxAcGxGQ.O8MywKDql50K0Y6Ucrm.LogServer(Player[] , String , Object[] )
[13:02:47]          at maddox.game.GameDef.gpLogServer(Player[] to, String format, Object[] args)
[13:02:47]          at System.Runtime.Remoting.Messaging.StackBuilderSink._PrivateProcessMessage(IntPtr md, Object[] args, Object server, Int32 methodPtr, Boolean fExecuteInContext, Object[]& outArgs)
[13:02:47]          at System.Runtime.Remoting.Messaging.StackBuilderSink.SyncProcessMessage(IMessage msg, Int32 methodPtr, Boolean fExecuteInContext)
[13:02:47]       
[13:02:47]        Exception rethrown at [0]:
[13:02:47]          at System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage(IMessage reqMsg, IMessage retMsg)
[13:02:47]          at System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke(MessageData& msgData, Int32 type)
[13:02:47]          at maddox.game.IGamePlay.gpLogServer(Player[] to, String format, Object[] args)
[13:02:47]          at Mission.OnPlaceEnter(Player player, AiActor actor, Int32 placeIndex)
[13:02:47]          at maddox.game.ABattle.OnPlaceEnter(Player player, AiActor actor, Int32 placeIndex)
[13:02:47]          at maddox.game.ABattle.OnEventGame(GameEventId eventId, Object eventArg0, Object eventArg1, Int32 eventArgInt)
[13:02:47]          at maddox.game.world.Strategy.OnEventGame(GameEventId eventId, Object eventArg0, Object eventArg1, Int32 eventArgInt)
[13:02:47]          at System.Runtime.Remoting.Messaging.StackBuilderSink._PrivateProcessMessage(IntPtr md, Object[] args, Object server, Int32 methodPtr, Boolean fExecuteInContext, Object[]& outArgs)
[13:02:47]          at System.Runtime.Remoting.Messaging.StackBuilderSink.SyncProcessMessage(IMessage msg, Int32 methodPtr, Boolean fExecuteInContext)
[13:02:47]       
[13:02:47]        Exception rethrown at [1]:
[13:02:47]          at System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage(IMessage reqMsg, IMessage retMsg)
[13:02:47]          at System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke(MessageData& msgData, Int32 type)
[13:02:47]          at maddox.game.IBattle.OnEventGame(GameEventId eventId, Object eventArg0, Object eventArg1, Int32 eventArgInt)
[13:02:47]          at maddox.game.GameDef.eventGame(GameEventId eventId, Object eventArg0, Object eventArg1, Int32 eventArgInt)
[13:02:47]          at dp8K7ffZC2JmTFxNtum.gkydOifm2sRXchrPjNC.eventGame(GameEventId , Object , Object , Int32 )
[13:02:47]          at tpZkklAJjTISdGT144j.fBZFTNAMvsuuP0ewCS3.AY6A72gxK6R(GameEventId , Object , Object , Int32 )
[13:02:47]        =================================================
[13:02:54]        Loading mission ...
[13:02:54]        Server to [Server]: A group of Red 1 just appeared.
[13:02:54]        Mission loaded. t

Code:

    public override void OnPlaceEnter(Player player, AiActor actor, int placeIndex)
    {
        base.OnPlaceEnter(player, actor, placeIndex);

        // Intro messages here
        #region Welcome msgs
        // these 2 work fine
        sendChatMessageTo(player, new string[] { "ru" }, "Good luck and have fun!", null);
        sendChatMessageTo(player, "ru", "Удачного вылета!", null);

        // NET settings msg - do not work on dedicated server, works on hosted server for host at least
        // prevents several lines of code from execution, e.g. current109s++ does not work

        sendScreenMessageTo(player, new string[] { "ru" }, "Please set your NET speed to ISDN in game network settings. This is needed for server testing purposes.", null);
        sendScreenMessageTo(player, "ru", "Пожалуйста, поставьте в настройках игры скорость сети 'ISDN'. Это нужно для тестирования сервера.", null);
        Timeout(7, () => // 2nd part
        {
            sendScreenMessageTo(player, new string[] { "ru" }, "Please report on 1C Clifs of Dover forums if this helps reducing lag.", null);
            sendScreenMessageTo(player, "ru", "Пожалуйста, сообщите на форуме sukhoi.ru уменьшает ли это лаги.", null);
        });
        sendChatMessageTo(player, new string[] { "ru" }, "Please set your NET speed to ISDN in game network settings. This is needed for server testing purposes. Please report on 1C forums if this helps reducing lag.", null);
        sendChatMessageTo(player, "ru", "Пожалуйста, поставьте в настройках игры скорость сети 'ISDN'. Это нужно для тестирования сервера. Пожалуйста, сообщите на форуме sukhoi.ru уменьшает ли это лаги.", null);

        Timeout(20, () => // works fine
        {
            msgCurrentObjectives(player);            // current objectives
        });


FG28_Kodiak 10-12-2011 09:19 AM

Could you change the message for testing please, seems it's a problem with the string, may be to long or the 'ISDN' :confused:

Ataros 10-12-2011 09:22 AM

Quote:

Originally Posted by FG28_Kodiak (Post 348125)
Could you change the message for testing please, seems it's a problem with the string, may be to long or the 'ISDN' :confused:

I'll try it now.

2nd issue still remains. I see all messages from OnTickGame ONLY in server log but not on screen because they are sent only to server, not to remote players.

Code:

[13:17:48]        Server to [Server]: Please leave your feedback at forum.1cpublishing.eu in CloD section. We highly appreciate it!

FG28_Kodiak 10-12-2011 09:31 AM

Could it be that GamePlay.gpPlayer is the server on dedicated?

Could you please test it with:
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

}


Ataros 10-12-2011 10:56 AM

The 1st problem with errors is solved! The chat message was too long.
Thank you!

Quote:

Originally Posted by FG28_Kodiak (Post 348130)
Could it be that GamePlay.gpPlayer is the server on dedicated?

It can be. But I am joining the server as 3GIAP_Atas and do not get the message that server gets :) you can try it on R2 now. You will not receive the message probably.

Thanks, will test soon.

EDIT. Ah, 10 people are playing can not restart now ((.

FG28_Kodiak 10-12-2011 10:59 AM

Ok i found out how to run a dedicated Server on my own Computer, so i can test it by my self ;)

Ataros 10-12-2011 11:01 AM

Quote:

Originally Posted by FG28_Kodiak (Post 348179)
Ok i found out how to run a dedicated Server on my own Computer, so i can test it by my self ;)

Thanks! Edited the previous message saying that the 1st problem is solved. Chat message was too long.

BTW you can join your own dedicated server from the same PC with your client if you run the dedi via a shortcut (creating a windows shortcut for a dedi with -server in properties).


All times are GMT. The time now is 03:17 AM.

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