Exemplo n.º 1
0
        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;
            }
        }
Exemplo n.º 2
0
        public PlayerData UpdatePlayerData(string account, string miceAll, string team)
        {
            PlayerData playerData = new PlayerData();

            playerData.ReturnCode    = "(Logic)S400";
            playerData.ReturnMessage = "";

            try
            {
                //載入伺服器玩家資料提供比對
                playerData = LoadPlayerData(account);

                if (playerData.ReturnCode == "S401")
                {
                    clinetData = MiniJSON.Json.Deserialize(miceAll) as Dictionary <string, object>;
                    serverData = MiniJSON.Json.Deserialize(playerData.MiceAll) as Dictionary <string, object>;

                    if (serverData.Count != clinetData.Count)
                    {
                        playerData.ReturnCode    = "S412";
                        playerData.ReturnMessage = "老鼠成員異常!";
                    }


                    clinetData = MiniJSON.Json.Deserialize(team) as Dictionary <string, object>;
                    serverData = MiniJSON.Json.Deserialize(playerData.Team) as Dictionary <string, object>;

                    //如果與伺服器資料 數量不相同
                    if (serverData.Count != clinetData.Count)
                    {
                        playerData.ReturnCode    = "S413";
                        playerData.ReturnMessage = "隊伍老鼠異常!";
                    }

                    /*
                     * clinetData = MiniJSON.Json.Deserialize(miceAmount) as Dictionary<string, object>;
                     * serverData = MiniJSON.Json.Deserialize(playerData.MiceAmount) as Dictionary<string, object>;
                     *
                     * //如果與伺服器資料 數量不相同
                     * if (serverData.Count == clinetData.Count)
                     * {
                     *  foreach (KeyValuePair<string, object> serverMice in serverData)
                     *  {
                     *      if (serverMice.Value != clinetData[serverMice.Key])
                     *      {
                     *          playerData.ReturnCode = "S414";
                     *          playerData.ReturnMessage = "老鼠數量異常!";
                     *      }
                     *  }
                     * }
                     * else
                     * {
                     *  playerData.ReturnCode = "S414";
                     *  playerData.ReturnMessage = "老鼠數量異常!";
                     * }
                     */
                    /*
                     * clinetData = MiniJSON.Json.Deserialize(item) as Dictionary<string, object>;
                     * serverData = MiniJSON.Json.Deserialize(playerData.Item) as Dictionary<string, object>;
                     *
                     * //如果與伺服器資料 數量不相同
                     * if (serverData.Count == clinetData.Count)
                     * {
                     *  foreach (KeyValuePair<string, object> serverItem in serverData)
                     *  {
                     *      if (serverItem.Value != clinetData[serverItem.Key])
                     *      {
                     *          playerData.ReturnCode = "S419";
                     *          playerData.ReturnMessage = "道具數量異常!";
                     *      }
                     *  }
                     * }
                     * else
                     * {
                     *  playerData.ReturnCode = "S419";
                     *  playerData.ReturnMessage = "道具數量異常!";
                     * }
                     */
                    //如果驗證成功 寫入玩家資料
                    PlayerDataIO playerDataIO = new PlayerDataIO();
                    playerData = playerDataIO.UpdatePlayerData(account, miceAll, team);
                }
            }
            catch (Exception e)
            {
                throw e;
            }

            return(playerData);
        }
Exemplo n.º 3
0
        public PlayerData UpdatePlayerData(string account, string miceAll, string miceName, int amount)
        {
            PlayerData playerData = new PlayerData();

            playerData.ReturnCode    = "(Logic)S400";
            playerData.ReturnMessage = "";

            try
            {
                //載入伺服器玩家資料提供比對
                playerData = LoadPlayerData(account);

                if (playerData.ReturnCode == "S401")
                {
                    clinetData = MiniJSON.Json.Deserialize(miceAll) as Dictionary <string, object>;
                    serverData = MiniJSON.Json.Deserialize(playerData.MiceAll) as Dictionary <string, object>;

                    if (serverData.Count != clinetData.Count)
                    {
                        playerData.ReturnCode    = "S412";
                        playerData.ReturnMessage = "老鼠成員異常!";
                    }

                    if (!serverData.ContainsValue(miceName))
                    {
                        serverData.Add((serverData.Count + 1).ToString(), miceName);
                        miceAll = MiniJSON.Json.Serialize(serverData);
                    }

                    /*
                     * clinetData = MiniJSON.Json.Deserialize(miceAmount) as Dictionary<string, object>;
                     * serverData = MiniJSON.Json.Deserialize(playerData.MiceAmount) as Dictionary<string, object>;
                     *
                     * //如果與伺服器資料 數量不相同  這沒驗證個別道具數量 只有驗證總數
                     * if (serverData.Count == clinetData.Count)
                     * {
                     *  foreach (KeyValuePair<string, object> serverMice in serverData)
                     *  {
                     *      if (serverMice.Value != clinetData[serverMice.Key])
                     *      {
                     *          playerData.ReturnCode = "S414";
                     *          playerData.ReturnMessage = "老鼠數量異常!";
                     *      }
                     *  }
                     * }
                     * else
                     * {
                     *  playerData.ReturnCode = "S414";
                     *  playerData.ReturnMessage = "老鼠數量異常!";
                     * }
                     *
                     * if (!serverData.ContainsKey(miceName))
                     * {
                     *  serverData.Add(miceName, amount);
                     * }
                     * else
                     * {
                     *  int miceCount = int.Parse(serverData[miceName].ToString());
                     *  serverData[miceName] = miceCount + amount;
                     * }
                     * miceAmount = MiniJSON.Json.Serialize(serverData);
                     */
                    //如果驗證成功 寫入玩家資料
                    PlayerDataIO playerDataIO = new PlayerDataIO();
                    playerData = playerDataIO.UpdatePlayerData(account, miceAll);
                }
            }
            catch (Exception e)
            {
                throw e;
            }

            return(playerData);
        }
Exemplo n.º 4
0
        public PlayerData UpdatePlayerData(string account, byte rank, byte exp, Int16 maxCombo, int maxScore, int sumScore, Int16 sumLost, int sumKill, string item, string miceAll, string team, string friend)
        {
            PlayerData playerData = new PlayerData();

            playerData.ReturnCode    = "(Logic)S400";
            playerData.ReturnMessage = "";

            try
            {
                RankChk(rank);
                EXPChk(exp);
                //MaxComboChk(maxCombo);
                //ScoreChk(score);

                if (maxCombo < 0 && maxCombo > 1000)
                {
                    playerData.ReturnCode    = "S409";
                    playerData.ReturnMessage = "玩家Combo異常!";
                }

                if (maxScore < 0 && maxScore > int.MaxValue)
                {
                    playerData.ReturnCode    = "S410";
                    playerData.ReturnMessage = "玩家分數異常!";
                }

                if (sumScore < 0 && sumScore > int.MaxValue)
                {
                    playerData.ReturnCode    = "S411";
                    playerData.ReturnMessage = "玩家總分異常!";
                }

                if (sumLost < 0 && sumLost > Int16.MaxValue)
                {
                    playerData.ReturnCode    = "S417";
                    playerData.ReturnMessage = "玩家跑掉的老鼠數量異常!";
                }

                if (sumKill < 0 && sumKill > int.MaxValue)
                {
                    playerData.ReturnCode    = "S418";
                    playerData.ReturnMessage = "玩家趕跑的老鼠數量異常!";
                }

                //載入伺服器玩家資料提供比對 錯誤 如果玩家資料減少或變多,卻無法去更新資料
                playerData = LoadPlayerData(account);

                if (playerData.ReturnCode == "S401")
                {
                    clinetData = MiniJSON.Json.Deserialize(miceAll) as Dictionary <string, object>;
                    serverData = MiniJSON.Json.Deserialize(playerData.MiceAll) as Dictionary <string, object>;

                    if (serverData.Count != clinetData.Count)
                    {
                        playerData.ReturnCode    = "S412";
                        playerData.ReturnMessage = "老鼠成員異常!";
                    }


                    clinetData = MiniJSON.Json.Deserialize(team) as Dictionary <string, object>;
                    serverData = MiniJSON.Json.Deserialize(playerData.Team) as Dictionary <string, object>;

                    //如果與伺服器資料 數量不相同
                    if (serverData.Count != clinetData.Count)
                    {
                        playerData.ReturnCode    = "S413";
                        playerData.ReturnMessage = "隊伍老鼠異常!";
                    }

                    /*
                     * clinetData = MiniJSON.Json.Deserialize(miceAmount) as Dictionary<string, object>;
                     * serverData = MiniJSON.Json.Deserialize(playerData.MiceAmount) as Dictionary<string, object>;
                     *
                     * //如果與伺服器資料 數量不相同
                     * if (serverData.Count == clinetData.Count)
                     * {
                     *  foreach (KeyValuePair<string, object> serverMice in serverData)
                     *  {
                     *      if (serverMice.Value != clinetData[serverMice.Key])
                     *      {
                     *          playerData.ReturnCode = "S414";
                     *          playerData.ReturnMessage = "老鼠數量異常!";
                     *      }
                     *  }
                     * }
                     * else
                     * {
                     *  playerData.ReturnCode = "S414";
                     *  playerData.ReturnMessage = "老鼠數量異常!";
                     * }
                     */

                    clinetData = MiniJSON.Json.Deserialize(friend) as Dictionary <string, object>;
                    serverData = MiniJSON.Json.Deserialize(playerData.Friend) as Dictionary <string, object>;

                    //如果與伺服器資料 數量不相同
                    if (serverData.Count != clinetData.Count)
                    {
                        playerData.ReturnCode    = "S415";
                        playerData.ReturnMessage = "好友名單異常!";
                    }


                    clinetData = MiniJSON.Json.Deserialize(item) as Dictionary <string, object>;
                    serverData = MiniJSON.Json.Deserialize(playerData.SortedItem) as Dictionary <string, object>;

                    //如果與伺服器資料 數量不相同
                    if (serverData.Count == clinetData.Count)
                    {
                        foreach (KeyValuePair <string, object> serverItem in serverData)
                        {
                            if (serverItem.Value != clinetData[serverItem.Key])
                            {
                                playerData.ReturnCode    = "S419";
                                playerData.ReturnMessage = "道具數量異常!";
                            }
                        }
                    }
                    else
                    {
                        playerData.ReturnCode    = "S419";
                        playerData.ReturnMessage = "道具數量異常!";
                    }

                    //如果驗證成功 寫入玩家資料
                    PlayerDataIO playerDataIO = new PlayerDataIO();
                    playerData = playerDataIO.UpdatePlayerData(account, rank, exp, maxCombo, maxScore, sumScore, sumLost, sumKill, item, miceAll, team, friend);
                }
            }
            catch (Exception e)
            {
                throw e;
            }

            return(playerData);
        }