Ejemplo n.º 1
0
        public void UnEquipItem(int item_id)
        {
            FItem item = null;

            foreach (var i in wearing)
            {
                if (i.Value.item_id == item_id)
                {
                    item = i.Value;
                    break;
                }
            }
            wearing.Remove(item.item_type);
            inventory.Add(item_id, item);

            var inventoryUI = GameObject.FindObjectOfType <InventoryUI>();

            if (inventoryUI != null)
            {
                inventoryUI.RefreshItems();
            }

            var RoleUI = GameObject.FindObjectOfType <RoleUI>();

            if (RoleUI != null)
            {
                RoleUI.RefreshAll();
            }
        }
Ejemplo n.º 2
0
            internal void Remove(T i)
            {
                FItem prev      = null;
                var   nodeItems = _firstItem;

                while (nodeItems.Item != i)
                {
                    prev      = nodeItems;
                    nodeItems = nodeItems.Next;
                }
                if (prev != null)
                {
                    prev.Next      = nodeItems.Next;
                    nodeItems.Item = null;
                    nodeItems.Next = null;
                    Pool <FItem> .Free(nodeItems);
                }
                else
                {
                    var next = _firstItem.Next;
                    _firstItem.Item = null;
                    _firstItem.Next = null;
                    Pool <FItem> .Free(_firstItem);

                    _firstItem = next;
                }
                ItemCount--;
            }
Ejemplo n.º 3
0
    public void ChangeItem(FItem item, bool equip)
    {
        item_id = item.item_id;
        itemName.GetComponent <Text>().text          = item.name;
        healthValue.GetComponent <Text>().text       = "+" + item.health_value.ToString();
        speedValue.GetComponent <Text>().text        = "+" + item.speed_value.ToString();
        damageValue.GetComponent <Text>().text       = "+" + item.damage_value.ToString();
        intelligenceValue.GetComponent <Text>().text = "+" + item.intelligence_value.ToString();
        defenceValue.GetComponent <Text>().text      = "+" + item.defence_value.ToString();
        silverValue.GetComponent <Text>().text       = item.silver_value.ToString();
        if (equip)
        {
            equipButton.SetActive(true);
            equipButton.GetComponentInChildren <Text>().text = item.item_type == Common.ItemType.Elixir ? "使用" : "装备";
            equipButton.GetComponent <Button>().onClick.RemoveAllListeners();
            equipButton.GetComponent <Button>().onClick.AddListener(delegate() {
                // equip item
                if (item.item_type == Common.ItemType.Elixir)
                {
                    World.Instance.fPlayer.SendUseItem(item_id);
                }
                else
                {
                    World.Instance.fPlayer.SendEquipItem(item_id);
                }
                // GameObject.FindObjectOfType<RoleUI>().RefreshAttr();
                self.SetActive(false);
            });


            dropButton.SetActive(true);
            dropButton.GetComponent <Button>().onClick.RemoveAllListeners();
            dropButton.GetComponent <Button>().onClick.AddListener(delegate() {
                // drop item
                World.Instance.fPlayer.SendDropItem(item_id);
                self.SetActive(false);
                //GameObject.FindObjectOfType<RoleUI>().RefreshAttr();
            });
            unEquipButton.SetActive(false);
        }
        else
        {
            equipButton.SetActive(false);
            dropButton.SetActive(false);
            unEquipButton.SetActive(true);
            unEquipButton.GetComponent <Button>().onClick.RemoveAllListeners();
            unEquipButton.GetComponent <Button>().onClick.AddListener(delegate() {
                // Unequip item
                World.Instance.fPlayer.SendUnEquipItem(item_id);
                self.SetActive(false);
                //GameObject.FindObjectOfType<RoleUI>().RefreshAttr();
            });
        }

        Debug.Log(string.Format("Focus on item {0}", item.name));
        self.SetActive(true);
        //this.a
    }
Ejemplo n.º 4
0
        private void OnRecvGetItem(IChannel channel, Message message)
        {
            SGetItem msg = message as SGetItem;

            if (msg.success == false)
            {
                MessageBox.Show("Can't Get Item");
                return;
            }
            DItem item  = msg.dItem;
            FItem fItem = FItem.FromDItem(item);

            World.Instance.fPlayer.inventory.Add(fItem.item_id, fItem);
            Debug.Log(string.Format("Get item {0}", fItem.item_id));
        }
Ejemplo n.º 5
0
        private void OnRecvPlayerInventory(IChannel channel, Message message)
        {
            SPlayerInventory msg = message as SPlayerInventory;

            foreach (var item in msg.dItems)
            {
                if (item.status == ItemStatus.Storing)
                {
                    World.Instance.fPlayer.inventory.Add(item.item_id, FItem.FromDItem(item));
                }
                if (item.status == ItemStatus.Using)
                {
                    World.Instance.fPlayer.wearing.Add(item.item_type, FItem.FromDItem(item));
                }
                if (item.status == ItemStatus.Selling)
                {
                    World.Instance.fPlayer.selling.Add(item.item_id, FItem.FromDItem(item));
                }
            }
            World.Instance.fPlayer.refreshAttr();
        }
Ejemplo n.º 6
0
            internal void Add(T i)
            {
                if (ItemCount > 0)
                {
                    var nodeItems = _firstItem;
                    for (var j = 1; j < ItemCount; j++)
                    {
                        nodeItems = nodeItems.Next;
                    }
                    nodeItems.Next = Pool <FItem> .Spawn();

                    nodeItems.Next.Item = i;
                }
                else
                {
                    _firstItem = Pool <FItem> .Spawn();

                    _firstItem.Item = i;
                }
                ItemCount++;
            }
Ejemplo n.º 7
0
            internal void Clear()
            {
                if (ItemCount > 0)
                {
                    var nodeItems = _firstItem;
                    var next      = nodeItems.Next;
                    nodeItems.Item = null;
                    nodeItems.Next = null;
                    Pool <FItem> .Free(nodeItems);

                    _firstItem = null;
                    nodeItems  = next;
                    while (nodeItems != null)
                    {
                        next           = nodeItems.Next;
                        nodeItems.Item = null;
                        nodeItems.Next = null;
                        Pool <FItem> .Free(nodeItems);

                        nodeItems = next;
                    }
                    ItemCount = 0;
                }
            }
Ejemplo n.º 8
0
 public void SetItem(FItem _item, int i)
 {
     item  = _item;
     myTag = i;
 }
Ejemplo n.º 9
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
        }
Ejemplo n.º 10
0
        private void OnRecvBuyTmallItems(IChannel channel, Message message)
        {
            CBuyTmallItems request = message as CBuyTmallItems;
            Player         player = (Player)channel.GetContent();
            int            gold = 0, silver = 0;
            TmallItem      silverItem = null;
            List <DItem>   items      = new List <DItem>();

            foreach (var item in request.tmallItems)
            {
                if (item.costConf.costType == CostType.Silver)
                {
                    silver += item.costConf.cost * item.count;
                }
                else
                {
                    gold += item.costConf.cost * item.count;
                }
                if (item.itemConf.type == ItemType.Others)
                {
                    silverItem = item;
                }
                else
                {
                    for (int i = 0; i < item.count; i++)
                    {
                        items.Add(FItem.CreateSpecificItem(item.itemConf.name, item.itemConf.icon, item.itemConf.type, request.luck).ToDItem());
                    }
                }
            }
            using (var conn = GameDataBase.GetConnection())
            {
                using (var trans = conn.BeginTransaction())
                {
                    using (var cmd = conn.CreateCommand())
                    {
                        // Check Player account
                        cmd.CommandText = "Select player_id From Player Where player_id=@player_id And gold>=@gold And silver>=@silver And items_count<=@items_count;";
                        cmd.Parameters.AddWithValue("player_id", player.player_id);
                        cmd.Parameters.AddWithValue("gold", gold);
                        cmd.Parameters.AddWithValue("silver", silver);
                        cmd.Parameters.AddWithValue("items_count", 40 - items.Count);
                        var res = cmd.ExecuteScalar();
                        if (res == null)
                        {
                            trans.Rollback();
                            ClientTipInfo(channel, "Can't Afford that!");
                            return;
                        }
                    }
                    if (silverItem != null)
                    {
                        using (var cmd = conn.CreateCommand())
                        {
                            // Silver
                            cmd.CommandText = "Update Player Set silver=silver+@silver Where player_id=@player_id;";
                            cmd.Parameters.AddWithValue("silver", silverItem.count * 50);
                            cmd.Parameters.AddWithValue("player_id", player.player_id);
                            var res = cmd.ExecuteNonQuery();
                            if (res != 1)
                            {
                                trans.Rollback();
                                ClientTipInfo(channel, "Error! Please try again [1].");
                                return;
                            }
                        }
                    }
                    foreach (var item in items)
                    {
                        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, "Error! Please try again [2].");
                                return;
                            }
                            item.item_id = (int)res;
                        }
                    }
                    using (var cmd = conn.CreateCommand())
                    {
                        cmd.CommandText = "Update Player Set items_count=items_count+@count, gold=gold-@gold, silver=silver-@silver Where player_id=@player_id;";
                        cmd.Parameters.AddWithValue("count", items.Count);
                        cmd.Parameters.AddWithValue("gold", gold);
                        cmd.Parameters.AddWithValue("silver", silver);
                        cmd.Parameters.AddWithValue("player_id", player.player_id);
                        var res = cmd.ExecuteNonQuery();
                        if (res != 1)
                        {
                            trans.Rollback();
                            ClientTipInfo(channel, "Error! Please try again [3].");
                            return;
                        }
                    }
                    trans.Commit();
                } // trans
            }     // conn
            SBuyTmallItems response = new SBuyTmallItems();

            response.dItems = items.ToArray();
            if (silverItem != null)
            {
                response.silver = silverItem.count * 50 - silver;
            }
            else
            {
                response.silver = -silver;
            }
            response.gold = -gold;
            channel.Send(response);
            foreach (var ditem in items)
            {
                player.inventory.Add(ditem.item_id, ditem);
            }
        }
Ejemplo n.º 11
0
 public void SetItem(FItem _item, int num)
 {
     item  = _item;
     mynum = num;
 }