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(); } }
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--; }
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 }
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)); }
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(); }
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++; }
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; } }
public void SetItem(FItem _item, int i) { item = _item; myTag = i; }
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 }
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); } }
public void SetItem(FItem _item, int num) { item = _item; mynum = num; }