Example #1
0
        private void OnDie(Player enemy)
        {
            OnDie();
            Random random = new Random();
            int    r      = random.Next(0, 10);

            if (r > 8)
            {
                enemy.AwardItem();
                SBroadcastMessage msg = new SBroadcastMessage();
                msg.message = string.Format("{0} 杀死了{1} 获得装备奖励", enemy.user, name);
                World.Instance.Broundcast(msg);
            }
            else
            {
                enemy.AwardSilver();
                SBroadcastMessage msg = new SBroadcastMessage();
                msg.message = string.Format("{0} 杀死了{1} 获得银币奖励", enemy.user, name);
                World.Instance.Broundcast(msg);
            }
        }
Example #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);
        }
Example #3
0
        static public void OnRecvPlayerTakeItem(IChannel channel, Message message)
        {
            SGetItem    response = new SGetItem();
            CCreateItem request  = message as CCreateItem;
            Player      player   = channel.GetContent() as Player;

            DItem item = FItem.CreateRandomItem(request.luck).ToDItem();

            using (var conn = GameDataBase.GetConnection())
            {
                using (var trans = conn.BeginTransaction())
                {
                    int item_id;
                    using (var cmd = conn.CreateCommand())
                    {
                        cmd.CommandText = "Select items_count From Player Where player_id=@player_id And items_count<40;";
                        cmd.Parameters.AddWithValue("player_id", player.player_id);
                        var res = cmd.ExecuteScalar();
                        if (res == null)
                        {
                            trans.Rollback();
                            ClientTipInfo(channel, "Full Inventory! Cannot Get More Items.");
                            return;
                        }
                    }
                    using (var cmd = conn.CreateCommand())
                    {
                        cmd.CommandText = "Insert Into Item(item_id, player_id, type, status, name," +
                                          "health_value, speed_value, damage_value, intelligence_value, defence_value, icon, silver_value)" +
                                          "Values(DEFAULT, @player_id, '" + item.item_type + "', 'Storing', @name," +
                                          "@health_value, @speed_value, @damage_value, @intelligence_value, @defence_value, @icon, @silver_value) Returning item_id;";
                        cmd.Parameters.AddWithValue("player_id", player.player_id);
                        //cmd.Parameters.AddWithValue("type", item.item_type.ToString());
                        cmd.Parameters.AddWithValue("name", item.name);
                        cmd.Parameters.AddWithValue("health_value", item.health_value);
                        cmd.Parameters.AddWithValue("speed_value", item.speed_value);
                        cmd.Parameters.AddWithValue("damage_value", item.damage_value);
                        cmd.Parameters.AddWithValue("intelligence_value", item.intelligence_value);
                        cmd.Parameters.AddWithValue("defence_value", item.defence_value);
                        cmd.Parameters.AddWithValue("icon", item.icon_name);
                        cmd.Parameters.AddWithValue("silver_value", item.silver_value);
                        var res = cmd.ExecuteScalar();
                        if (res == null)
                        {
                            trans.Rollback();
                            ClientTipInfo(channel, "Fail to pick new item!");
                            return;
                        }
                        item_id = (int)res;
                    }
                    using (var cmd = conn.CreateCommand())
                    {
                        cmd.CommandText = "Update Player Set items_count=items_count+1 Where player_id=@player_id;";
                        cmd.Parameters.AddWithValue("player_id", player.player_id);
                        var res = cmd.ExecuteNonQuery();
                        if (res != 1)
                        {
                            trans.Rollback();
                            ClientTipInfo(channel, "Fail to pick new item [2] !");
                            return;
                        }
                    }
                    trans.Commit();
                    item.item_id     = item_id;
                    response.success = true;
                    response.dItem   = item;
                    channel.Send(response);
                    if (request.fromFrontend)
                    {
                        SBroadcastMessage bmsg = new SBroadcastMessage();
                        bmsg.message = string.Format("{0} 通过寻宝获得物品 {1}", player.user, response.dItem.name);
                        World.Instance.Broundcast(bmsg);
                    }
                } // trans
            }     // conn
        }
Example #4
0
        private void OnRecvBroadcastMessage(IChannel channel, Message message)
        {
            SBroadcastMessage msg = message as SBroadcastMessage;

            UnityEngine.GameObject.FindObjectOfType <BroadcastTextUI>().AddNewMessage(msg.message);
        }