Ejemplo n.º 1
0
        private void OnRecvPlayerWinOrLose(IChannel channel, Message message)
        {
            SPlayerBeatMessage msg = message as SPlayerBeatMessage;

            if (msg.win)
            {
                //winner
                FrontEnd.World.Instance.fPlayer.silver += msg.award;
            }
            else
            {
                // loser
                FrontEnd.World.Instance.fPlayer.silver -= msg.award;
            }
        }
Ejemplo n.º 2
0
        public void BeatPlayer(Player winner, Player loser)
        {
            int award  = 0;
            int remain = 0;

            using (var conn = DataBase.GameDataBase.GetConnection())
            {
                using (var trans = conn.BeginTransaction())
                {
                    using (var cmd = conn.CreateCommand())
                    {
                        cmd.CommandText = "Select silver From Player Where player_id=@player_id";
                        cmd.Parameters.AddWithValue("player_id", loser.player_id);
                        var res = cmd.ExecuteScalar();
                        if (res == null)
                        {
                            return;
                        }
                        award  = (int)res / 10;
                        remain = (int)res - award;
                    }
                    using (var cmd = conn.CreateCommand())
                    {
                        cmd.CommandText = "Update Player Set silver=@remain Where player_id=@player_id";
                        cmd.Parameters.AddWithValue("remain", remain);
                        cmd.Parameters.AddWithValue("player_id", loser.player_id);
                        var res = cmd.ExecuteNonQuery();
                        if (res != 1)
                        {
                            trans.Rollback();
                            return;
                        }
                    }
                    using (var cmd = conn.CreateCommand())
                    {
                        cmd.CommandText = "Update Player Set silver=silver+@award Where player_id=@player_id";
                        cmd.Parameters.AddWithValue("player_id", winner.player_id);
                        cmd.Parameters.AddWithValue("award", award);
                        var res = cmd.ExecuteNonQuery();
                        if (res != 1)
                        {
                            trans.Rollback();
                            return;
                        }
                    }
                    trans.Commit();
                } // trans
            }     // conn
            SPlayerBeatMessage winMsg = new SPlayerBeatMessage();

            winMsg.win   = true;
            winMsg.award = award;
            winner.connection.Send(winMsg);
            SPlayerBeatMessage loseMsg = new SPlayerBeatMessage();

            loseMsg.win   = false;
            loseMsg.award = award;
            loser.connection.Send(loseMsg);
            SBroadcastMessage sbm = new SBroadcastMessage();

            sbm.message = string.Format("{0} 击败了 {1}, 掠夺{2}银币", winner.user, loser.user, award);
            World.Instance.Broundcast(sbm);
        }