Esempio n. 1
0
        /// <summary>
        /// this event will trigger when punkbuster get new player connect and run "pb_sv_plist" to list player.
        /// <para>1, MUST wait "admin.listPlayers all" finished (<see cref="hasListPlayers"/>)</para>
        /// <para>2, Only get new punkbuster player info (<see cref="isNewConnection"/>)</para>
        /// <para>3, If first enable plugin,get all punkbuster player info (<see cref="isFirstEnable"/>)</para>
        /// </summary>
        /// <param name="playerInfo"></param>
        public override void OnPunkbusterPlayerInfo(CPunkbusterInfo playerInfo)
        {
            if (!isEnable)
            {
                return;
            }
            base.OnPunkbusterPlayerInfo(playerInfo);

            if ((isNewConnection || isFirstEnable) && hasListPlayers)
            {
                string soldierName = playerInfo.SoldierName;
                if (!FrostbitePlayerInfoList.ContainsKey(soldierName) ||
                    FrostbitePlayerInfoList[soldierName].GUID.Length != 35 ||
                    playerInfo.GUID.Length != 32)
                {
                    return;
                }
                CPlayerInfo           info        = FrostbitePlayerInfoList[soldierName];
                Func <object, object> NullChecker = o => o ?? DBNull.Value;
                DbParameter[]         parameters  = new DbParameter[]
                {
                    new MySqlParameter("@ipaddress", NullChecker(playerInfo.Ip)),
                    new MySqlParameter("@clantag", NullChecker(info.ClanTag)),
                    new MySqlParameter("@soldiername", NullChecker(soldierName)),
                    new MySqlParameter("@eaguid", NullChecker(info.GUID)),
                    new MySqlParameter("@pbguid", NullChecker(playerInfo.GUID)),
                    new MySqlParameter("@country", NullChecker(playerInfo.PlayerCountry)),
                    new MySqlParameter("@countrycode", NullChecker(playerInfo.PlayerCountryCode)),
                };
                InsertPbInfo(parameters);
            }
        }
Esempio n. 2
0
        public void OnCommandSwapTeam(string strSpeaker, string strText, MatchCommand mtcCommand, CapturedCommand capCommand, CPlayerSubset subMatchedScope)
        {
            ExecuteCommand("procon.protected.events.write", "Plugins", "PluginAction", String.Format("Initiated a swap team"), strSpeaker);

            List <int> teamIds = FrostbitePlayerInfoList.Values.Select(_ => _.TeamID).Distinct().ToList();

            Output.Information("TeamIds:" + string.Join(",", teamIds));
            for (int i = 0; i < FrostbitePlayerInfoList.Count; i++)
            {
                var player     = FrostbitePlayerInfoList.ElementAt(i).Value;
                var name       = player.SoldierName;
                var dstTeamId  = teamIds[((teamIds.IndexOf(player.TeamID) + 1) < teamIds.Count) ? (teamIds.IndexOf(player.TeamID) + 1) : 0];
                var dstSquadId = player.SquadID;
                ExecuteCommand("procon.protected.tasks.add", ClassName + strSpeaker, 10.ToString(), "1", "1", "procon.protected.send", "admin.movePlayer", name, dstTeamId.ToString(), dstSquadId.ToString(), true.ToString());
                Output.Information("{0} {1} {2} {3} {4}", "admin.movePlayer", name, dstTeamId.ToString(), dstSquadId.ToString(), true.ToString());
            }
        }