Полная версия, с таблицей достижений:
Код://$reference "C:\Windows\Microsoft.NET\Framework64\v4.0.30319\System.Xaml.dll" //$reference "C:\Windows\Microsoft.NET\Framework64\v4.0.30319\WindowsBase.dll" //$reference "C:\Windows\Microsoft.NET\Framework64\v4.0.30319\PresentationFramework.dll" using System; using System.Collections.Generic; using System.Globalization; using System.IO; using System.Windows; using maddox.game; using maddox.game.world; public class Mission : AMission { private void Log(string format, params object[] args) { GamePlay.gpLogServer(new[] { GamePlay.gpPlayer() }, string.Format(CultureInfo.InvariantCulture, format, args), null); } public override void OnBattleInit() { base.OnBattleInit(); try { // Master-mission if (true) { var player = GamePlay.gpPlayer(); var pscore = PlayerScore.Get(player.Name()); Log("********Initial PlayerScore {0}", pscore); } // Submission Timeout(5, () => { var player = GamePlay.gpPlayer(); var pscore = PlayerScore.Get(player.Name()); pscore.KillsGnd++; pscore.Score += 10; Log("********PlayerScore After Tank Destroyed {0}", pscore); }); // Another submission Timeout(10, () => { var player = GamePlay.gpPlayer(); var pscore = PlayerScore.Get(player.Name()); pscore.KillsAir++; pscore.Score += 50; Log("********PlayerScore After Aircraft Killed {0}", pscore); }); } catch (Exception error) { Log("********EXCEPTION: {0}", error); } } class PlayerScore { public string Name { get; private set; } public double Score { get; set; } public int KillsAir { get; set; } public int KillsGnd { get; set; } public override string ToString() { return string.Format(CultureInfo.InvariantCulture, "Name:{0} Score:{1} KillsAir/Ground: {2}/{3}", Name, Score, KillsAir, KillsGnd); } public static PlayerScore Get(string pname) { if (Application.Current == null) { new Application(); } string token = "AF2505FCA"; Dictionary<string, PlayerScore> table = null; if (Application.Current.Properties.Contains(token)) { table = (Dictionary<string, PlayerScore>)Application.Current.Properties[token]; } else Application.Current.Properties.Add(token, table = new Dictionary<string, PlayerScore>()); PlayerScore pscore = null; if (table.TryGetValue(pname, out pscore) == false) { table.Add(pname, pscore = new PlayerScore() { Name = pname }); } return pscore; } } }




Ответить с цитированием