![]() |
|
#41
|
|||
|
|||
|
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 12:26 PM. |
|
#42
|
|||
|
|||
|
Thank you very much! Will try to install it tonight.
|
|
#43
|
|||
|
|||
|
All messages work finally (in Russian at least)! Runs on Repka 2 now. Thank you very much!
|
|
#44
|
|||
|
|||
|
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. |
|
#45
|
|||
|
|||
|
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 07:08 PM. |
|
#46
|
|||
|
|||
|
Thank you very much! It's a hard science for me, ahh...
|
|
#47
|
|||
|
|||
|
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. |
|
#48
|
|||
|
|||
|
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! |
|
#49
|
|||
|
|||
|
Thank you.
As we say: our business - to offer, your - to refuse. In the end, everyone chooses his own way. |
|
#50
|
|||
|
|||
|
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? |
![]() |
| Thread Tools | |
| Display Modes | |
|
|