Ejemplo n.º 1
0
        static private void RecvSceneLoaded(Scene scene, LoadSceneMode mode)
        {
            incomming.InitNetworkEntity();
            CPlayerEnter message = new CPlayerEnter();

            Client.Instance.Send(message);
        }
Ejemplo n.º 2
0
        private void OnRecvPlayerEnter(IChannel channel, Message message)
        {
            CPlayerEnter request = message as CPlayerEnter;
            Player       player  = (Player)channel.GetContent();
            Scene        scene   = World.Instance.GetScene(player.scene);

            // add the player to the scene
            player.Spawn();
            scene.AddEntity(player);
        }
Ejemplo n.º 3
0
        private void OnRecvPlayerEnter(IChannel channel, Message message)
        {
            CPlayerEnter request = message as CPlayerEnter;
            Player       player  = (Player)channel.GetContent();
            Scene        scene   = World.Instance.GetScene(player.scene);

            // add the player to the scene
            player.Spawn();
            scene.AddEntity(player);

            // send player attributes
            SPlayerAttribute attrMessage = new SPlayerAttribute()
            {
                playerId     = player.entityId,
                name         = player.user,
                currentHP    = player.currentHP,
                level        = player.level,
                intelligence = player.intelligence,
                speed        = player.speed,
                attack       = player.attack,
                defense      = player.defense,
                GoldNum      = player.GoldNum,
                SilverNum    = player.SilverNum
            };

            channel.Send(attrMessage);

            // add online player
            OnlinePlayers.Add(player.user, player);
            // send oneline player to frontend
            Dictionary <int, string> SendDic = new Dictionary <int, string>();

            foreach (KeyValuePair <string, Player> tmp in OnlinePlayers)
            {
                SendDic.Add(tmp.Value.entityId, tmp.Key);
                Console.WriteLine("contains user:{0}", tmp.Key);
            }
            SFindFriends response = new SFindFriends()
            {
                friends = SendDic
            };

            player.Broadcast(response);


            // send treasure attributes
            ConnectDB connect = new ConnectDB();

            if (treasureAttributes.Count == 0)
            {
                treasureAttributes = new Dictionary <string, DTreasure>(connect.GetTreasureAttri());
            }
            STreasureAttribute treasureAttribute = new STreasureAttribute()
            {
                treasureAttri = new Dictionary <string, DTreasure>(treasureAttributes)
            };

            channel.Send(treasureAttribute);

            // send mall
            if (backMall.Count == 0)
            {
                backMall = new Dictionary <string, DTreasureMall>(connect.DBGetMall());
            }
            SMall mall = new SMall()
            {
                goods = new Dictionary <string, DTreasureMall>(backMall)
            };

            channel.Send(mall);

            // send package
            SPackage package = new SPackage()
            {
                goods = new Dictionary <string, DTreasurePackage>(connect.DBGetPackage(player.user))
            };

            channel.Send(package);

            // send friends
            SFriends friendList = new SFriends()
            {
                friends = new List <string>(connect.GetFriends(player.user))
            };

            channel.Send(friendList);

            // send friend requests
            SFindFriendRequests requestList = new SFindFriendRequests()
            {
                requests = new List <string>(connect.GetFriendRequest(player.user))
            };

            channel.Send(requestList);
        }
Ejemplo n.º 4
0
        private void OnRecvPlayerEnter(IChannel channel, Message message)
        {
            CPlayerEnter     request  = message as CPlayerEnter;
            SPlayerAttribute response = new SPlayerAttribute();
            Player           player   = (Player)channel.GetContent();

            Scene scene = World.Instance.GetScene(player.scene);

            // add the player to the scene
            player.Spawn();
            scene.AddEntity(player);
            Console.WriteLine("SPlayerAttribute response");
            response.name             = player.user;
            response.InteligenceValue = player.InteligenceValue;
            response.SpeedValue       = player.SpeedValue;
            response.LevelValue       = player.LevelValue;
            response.AttackValue      = player.AttackValue;
            response.DefenseValue     = player.DefenseValue;
            response.gold_coins       = player.gold_coins;
            response.silver_coins     = player.silver_coins;
            response.defense_item     = player.defense_item;
            response.attack_item      = player.attack_item;
            response.speed_item       = player.speed_item;
            response.inteligence_item = player.inteligence_item;
            channel.Send(response);


            SMarketAttribute market_response = new SMarketAttribute();

            Console.WriteLine("Getting market items");
            var connString = "Host=localhost;Port=5432;Username=postgres;Password=123456;Database=postgres";
            var conn       = new NpgsqlConnection(connString);

            conn.Open();
            var cmd = new NpgsqlCommand("SELECT item_name,item_type,item_value,gold_price,silver_price,durable FROM cartitems ", conn);

            Console.WriteLine("sql finished");
            var reader = cmd.ExecuteReader();
            //reader.Read();
            //int i = 0;
            String item_name;

            while (reader.Read())
            {
                /*for (i = 0; i < reader.FieldCount; i++)
                 * {
                 *  Console.Write("{0}  ", reader[i]); //获得字段名
                 * }*/
                item_name = Convert.ToString(reader["item_name"]);  // 获得指定字段的值
                //market.item.item_type  = Convert.ToString(reader["item_type"]);
                player.all_item_type.Add(item_name, Convert.ToString(reader["item_type"]));
                player.all_item_value.Add(item_name, Convert.ToInt16(reader["item_value"]));
                player.all_gold_price.Add(item_name, Convert.ToInt16(reader["gold_price"]));
                player.all_silver_price.Add(item_name, Convert.ToInt16(reader["silver_price"]));
                player.all_item_durable.Add(item_name, Convert.ToString(reader["durable"]));
            }
            reader.Close();
            //market_response.items = market.items;
            market_response.all_item_type    = player.all_item_type;
            market_response.all_item_value   = player.all_item_value;
            market_response.all_gold_price   = player.all_gold_price;
            market_response.all_silver_price = player.all_silver_price;
            market_response.all_item_durable = player.all_item_durable;

            /*foreach (KeyValuePair<string, short> kvp in market_response.all_gold_price)
             * {
             *  Console.Write("{0},{1}  ", kvp.Key,kvp.Value);
             * }*/
            channel.Send(market_response);

            SWorldMarketAttribute response2 = new SWorldMarketAttribute();
            //Console.WriteLine("Getting world market items");
            var conn2 = new NpgsqlConnection(connString);

            conn2.Open();
            var cmd2 = new NpgsqlCommand("SELECT item_id,item,seller,price,state FROM worldmarket", conn2);
            //Console.WriteLine("sql finished");
            var    reader2 = cmd2.ExecuteReader();
            String world_market_item_id;

            player.world_market_item_name.Clear();
            player.world_market_item_price.Clear();
            player.world_market_item_seller.Clear();
            while (reader2.Read())
            {
                if (Convert.ToInt16(reader2["state"]) == 0)
                {
                    world_market_item_id = Convert.ToString(reader2["item_id"]);
                    //Console.WriteLine(reader2["item_id"]);
                    player.world_market_item_name.Add(world_market_item_id, Convert.ToString(reader2["item"]));
                    //Console.WriteLine(reader2["item"]);
                    player.world_market_item_seller.Add(world_market_item_id, Convert.ToString(reader2["seller"]));
                    //Console.WriteLine(reader2["seller"]);
                    player.world_market_item_price.Add(world_market_item_id, Convert.ToInt16(reader2["price"]));
                    //Console.WriteLine(reader2["price"]);
                }
            }
            reader2.Close();
            response2.world_market_item_name   = player.world_market_item_name;
            response2.world_market_item_seller = player.world_market_item_seller;
            response2.world_market_item_price  = player.world_market_item_price;
            channel.Send(response2);


            SGetSellingInventory response3 = new SGetSellingInventory();

            Console.WriteLine("Getting Init Selling Inventory");
            var connString3 = "Host=localhost;Port=5432;Username=postgres;Password=123456;Database=postgres";
            var conn3       = new NpgsqlConnection(connString3);

            conn3.Open();
            var cmd3 = new NpgsqlCommand(string.Format("SELECT item_id,item FROM worldmarket WHERE seller = '{0}' and state=0;", player.user), conn3);

            Console.WriteLine("Select selling items finished");
            var    reader3    = cmd3.ExecuteReader();
            string item_name3 = "";
            string item_id    = "";

            while (reader3.Read())
            {
                item_id    = Convert.ToString(reader3["item_id"]);
                item_name3 = Convert.ToString(reader3["item"]); // 获得指定字段的值
                player.selling_Inventory.Add(item_id, item_name3);
            }
            reader3.Close();

            /*foreach (KeyValuePair<string, string> kvp in player.selling_Inventory)
             * {
             *  Console.WriteLine(kvp.Key + " "+kvp.Value);
             * }*/
            response3.player_selling_Inventory = player.selling_Inventory;
            channel.Send(response3);
        }
Ejemplo n.º 5
0
        private void OnRecvPlayerEnter(IChannel channel, Message message)
        {
            CPlayerEnter      request    = message as CPlayerEnter;
            SOtherPlayerEnter broundcast = new SOtherPlayerEnter();

            Player player = (Player)channel.GetContent();
            Scene  scene  = World.Instance.GetScene(player.scene);

            // add the player to the scene

            // broadcast a new player to all players
            broundcast.user  = player.token;
            broundcast.id    = player.entityId;
            broundcast.scene = player.scene;
            World.Instance.Broundcast(broundcast);

            // return all players online
            SOnlinePlayers onlinePlayers = new SOnlinePlayers();
            List <string>  names         = new List <string>();
            List <int>     ids           = new List <int>();
            List <string>  scenes_       = new List <string>();
            var            scenes        = World.Instance.Scenes;

            foreach (KeyValuePair <string, Scene> kv in scenes)
            {
                foreach (KeyValuePair <int, Player> p in kv.Value.Players)
                {
                    names.Add(p.Value.token);
                    ids.Add(p.Value.entityId);
                    scenes_.Add(p.Value.scene);
                }
            }
            onlinePlayers.users  = names.ToArray();
            onlinePlayers.ids    = ids.ToArray();
            onlinePlayers.scenes = scenes_.ToArray();
            channel.Send(onlinePlayers);

            // get attributes
            SPlayerAttribute attribute = new SPlayerAttribute();
            var attr_reader            = GameDataBase.SQLQuery(string.Format(
                                                                   "Select gold, silver, speed, damage, intelligence, defence, health, hp, pos_x, pos_y, pos_z From Player where player_id={0};", player.player_id
                                                                   ));

            attr_reader.Read();
            attribute.gold         = attr_reader.GetInt32(0);
            attribute.silver       = attr_reader.GetInt32(1);
            attribute.speed        = attr_reader.GetInt32(2);
            attribute.damage       = attr_reader.GetInt32(3);
            attribute.intelligence = attr_reader.GetInt32(4);
            attribute.defence      = attr_reader.GetInt32(5);
            attribute.health       = attr_reader.GetInt32(6);
            attribute.hp           = attr_reader.GetInt32(7);
            attribute.pos.x        = attr_reader.GetFloat(8);
            attribute.pos.y        = attr_reader.GetFloat(9);
            attribute.pos.z        = attr_reader.GetFloat(10);
            channel.Send(attribute);

            // get all items
            SPlayerInventory inventory = new SPlayerInventory();
            var reader = GameDataBase.SQLQuery(string.Format(
                                                   "Select * From Item Where player_id={0} And status!='Drop';", player.player_id
                                                   ));
            List <DItem> items = new List <DItem>();

            while (reader.Read())
            {
                var item = new DItem();
                item.item_id            = reader.GetInt32(0);
                item.status             = (ItemStatus)System.Enum.Parse(typeof(ItemStatus), reader.GetString(2));
                item.name               = reader.GetString(3);
                item.health_value       = reader.GetInt32(4);
                item.speed_value        = reader.GetInt32(5);
                item.damage_value       = reader.GetInt32(6);
                item.intelligence_value = reader.GetInt32(7);
                item.defence_value      = reader.GetInt32(8);
                item.icon_name          = reader.GetString(9);
                item.item_type          = (ItemType)System.Enum.Parse(typeof(ItemType), reader.GetString(10));
                item.silver_value       = reader.GetInt32(11);
                if (item.status != ItemStatus.Drop)
                {
                    items.Add(item);
                }
            }
            reader.Close();
            inventory.dItems = items.ToArray();
            channel.Send(inventory);

            System.Console.WriteLine("{0} Enter", player.token);
            System.Console.WriteLine("Get items {0}", items.Count);

            player.Position = Entity.V3ToPoint3d(attribute.pos);
            player.Spawn();
            player.maxHP             = attribute.health;
            player.currentHP         = attribute.hp;
            player.base_damage       = attribute.damage;
            player.base_speed        = attribute.speed;
            player.base_health       = attribute.health;
            player.base_intelligence = attribute.intelligence;
            player.base_defence      = attribute.defence;

            foreach (var ditem in items)
            {
                switch (ditem.status)
                {
                case ItemStatus.Storing:
                    player.inventory.Add(ditem.item_id, ditem);
                    break;

                case ItemStatus.Selling:
                    player.selling.Add(ditem.item_id, ditem);
                    break;

                case ItemStatus.Using:
                    player.wearing.Add(ditem.item_type, ditem);
                    break;
                }
            }
            player.refreshAttr();
            player.currentHP = attribute.hp;
            scene.AddEntity(player);

            // send triger status
            STrigerStatus sTriger = new STrigerStatus();

            sTriger.doors = new Door[World.Instance.Doors.Values.Count];
            World.Instance.Doors.Values.CopyTo(sTriger.doors, 0);
            sTriger.pressurePads = new PressurePad[World.Instance.PressurePads.Count];
            World.Instance.PressurePads.Values.CopyTo(sTriger.pressurePads, 0);
            sTriger.switchCrystals = new SwitchCrystal[World.Instance.SwitchCrystals.Count];
            World.Instance.SwitchCrystals.Values.CopyTo(sTriger.switchCrystals, 0);
            channel.Send(sTriger);
        }