public PlayerData UpdatePlayerItem(string account, Int16 itemID, string itemName, byte itemType, Int16 itemCount) { try { PlayerDataIO playerDataIO = new PlayerDataIO(); PlayerData playerData2 = playerDataIO.LoadPlayerData(account); if (itemType == (byte)StoreType.Mice) { var dictMiceAll = Json.Deserialize(playerData2.MiceAll) as Dictionary <string, object>; if (!dictMiceAll.ContainsValue(itemName)) { dictMiceAll.Add((dictMiceAll.Count + 1).ToString(), itemName); string miceAll = Json.Serialize(dictMiceAll); playerDataIO.UpdatePlayerData(account, miceAll); } } playerData = playerDataIO.LoadPlayerItem(account, itemID); playerData.ItemCount += itemCount; playerData = playerDataIO.UpdatePlayerItem(account, itemID, itemType, playerData.ItemCount); return(playerData); } catch { throw; } }
public PlayerData UpdatePlayerItem(string account, Int16 itemID, bool isEquip) { try { PlayerDataIO playerDataIO = new PlayerDataIO(); playerData = playerDataIO.UpdatePlayerItem(account, itemID, isEquip); return(playerData); } catch { throw; } }
public PlayerData UpdatePlayerItem(string account, string jItemUsage) { PlayerDataIO playerDataIO = new PlayerDataIO(); playerData = playerDataIO.LoadPlayerItem(account); var dictClinetData = Json.Deserialize(jItemUsage) as Dictionary <string, object>; var dictServerData = Json.Deserialize(playerData.PlayerItem) as Dictionary <string, object>; Dictionary <Int16, Dictionary <string, object> > dictSendData = new Dictionary <Int16, Dictionary <string, object> >(); Log.Debug("F**K"); //Log.Debug("dictServerItem.Count:" + dictServerItem.Count + "dictClient.Count:" + dictClient.Count); foreach (KeyValuePair <string, object> dictNestedClinetData in dictClinetData) // 玩家道具使用量 迴圈 { //var innClientItem = dictClinetItemUsage as Dictionary<string, object>; // 道具資料字典 foreach (KeyValuePair <string, object> dictNestedServerData in dictServerData) // 伺服器道具資料 迴圈 { Log.Debug("dictServerData:" + dictServerData.Count + " dictClinetData:" + dictClinetData.Count); object itemID, serverItemCount; // 道具ID object serverItemObejct, clientItemObejct; // 道具資料 //dictServerItem = dictNestedServerData.Value as Dictionary<string, object>; dictServerData.TryGetValue(dictNestedClinetData.Key, out serverItemObejct); // 找到與伺服器對應的道具資料 key=10001 var dictServerItem = serverItemObejct as Dictionary <string, object>; Log.Debug(" dictServerItem Key:" + dictServerItem.Keys + " dictServerItem value:" + dictServerItem.Values); dictServerItem.TryGetValue(((short)PlayerItem.ItemID).ToString(), out itemID); // 取出道具數量 dictServerItem.TryGetValue(((short)PlayerItem.ItemCount).ToString(), out serverItemCount); // 取出道具數量 dictClinetData.TryGetValue(itemID.ToString(), out clientItemObejct); // to do compare data var dictClient = clientItemObejct as Dictionary <string, object>; object serverCount, serverUseage, clientCount, clientUseage; dictServerItem.TryGetValue(((short)PlayerItem.ItemCount).ToString(), out serverCount); dictServerItem.TryGetValue(((short)PlayerItem.UseCount).ToString(), out serverUseage); dictClient.TryGetValue(((short)PlayerItem.ItemCount).ToString(), out clientCount); dictClient.TryGetValue(((short)PlayerItem.UseCount).ToString(), out clientUseage); Log.Debug("serverCount: " + serverCount + "serverUseage: " + serverUseage + "clientCount: " + clientCount + "clientUseage: " + clientUseage); Log.Debug(serverCount + " " + clientUseage); int sCount = Convert.ToInt32(serverCount); int sUseage = Convert.ToInt32(serverUseage); int cCount = Convert.ToInt32(clientCount); int cUseage = Convert.ToInt32(clientUseage); //|| (int)clientCount > Int16.MaxValue if (sCount < cUseage) { playerData.ReturnCode = "S427"; playerData.ReturnMessage = "玩家道具資料異常!"; return(playerData); } else if (sCount == cCount) { int itemCount, useCount; itemCount = sCount - cUseage; useCount = cUseage + sUseage; dictClient[((short)PlayerItem.ItemCount).ToString()] = itemCount; dictClient[((short)PlayerItem.UseCount).ToString()] = useCount; dictSendData.Add(Int16.Parse(itemID.ToString()), dictClient); Log.Debug("ItemCount: " + itemCount + " UseCount: " + useCount); }/* * else if (serverCount == clientUseage) * { * // 未來如果要移除為0的道具 在啟用 * // IO 需新增 刪除 * return playerData; * }*/ else { playerData.ReturnCode = "S427"; playerData.ReturnMessage = "玩家道具資料異常!"; return(playerData); } break; } } playerData = playerDataIO.UpdatePlayerItem(account, dictSendData); return(playerData); }