Example #1
0
        public override G2B_BattleReward DoResponse(B2G_BattleReward request, Client client)
        {
            //check ?

            Managers.UserData data;
            if (!MonitorPool.S.Get <UserDataManager>().TryToGetUserData(request.UserID, out data))
            {
                return(new G2B_BattleReward {
                    Code = ErrorCode.NoGamePlayerData
                });
            }

            var diff = new Dictionary <int, Proto.PlayerItem>();

            foreach (var i in request.DropItems)
            {
                if (diff.ContainsKey(i.ItemID))
                {
                    diff[i.ItemID].Num += i.Num;
                }
                else
                {
                    diff.Add(i.ItemID, i);
                }
            }

            foreach (var i in request.ConsumeItems)
            {
                if (diff.ContainsKey(i.ItemID))
                {
                    diff[i.ItemID].Num -= i.Num;
                }
                else
                {
                    diff.Add(i.ItemID, i);
                }
            }

            ErrorCode code = ErrorCode.OK;

            foreach (var i in diff)
            {
                if (i.Value.Num == 0)
                {
                    continue;
                }
                if (i.Value.Num > 0)
                {
                    if (!data.AddItem(i.Value))
                    {
                        code = ErrorCode.Error;
                    }
                }
                else
                {
                    if (!data.ConsumeItem(i.Value))
                    {
                        code = ErrorCode.Error;
                    }
                }
            }

            data.AddGold(request.Gold);

            var userClient = Appliaction.Current.GetClientByUserID(request.UserID);

            if (userClient != null)
            {
                var syncHero = new Task_G2C_SyncHero {
                    Hero = data.GetHero()
                };
                var syncPackage = new Task_G2C_SyncPackage
                {
                    Package = data.GetPackage(),
                    Gold    = data.Gold,
                    Coin    = data.Coin
                };
                NetProtoTool.SendTask(userClient, syncHero);
                NetProtoTool.SendTask(userClient, syncPackage);
            }

            return(new G2B_BattleReward {
                Code = code
            });
        }
Example #2
0
        public override G2C_GMTool DoResponse(C2G_GMTool request, Client client)
        {
#if USEGM
            if (!Appliaction.Current.EnableGM)
            {
                return new G2C_GMTool()
                       {
                           Code = ErrorCode.Error
                       }
            }
            ;

            var args = request.GMCommand.Split(' ');
            if (args.Length == 0)
            {
                return new G2C_GMTool {
                           Code = ErrorCode.Error
                }
            }
            ;
            var      userid = (long)client.UserState;
            UserData userData;
            if (!MonitorPool.S.Get <UserDataManager>().TryToGetUserData(userid, out userData))
            {
                return(new G2C_GMTool {
                    Code = ErrorCode.NoGamePlayerData
                });
            }
            switch (args[0].ToLower())
            {
            case "level":
            {
                var level = 0;
                if (int.TryParse(args[1], out level))
                {
                    userData.HeroLevelTo(level);
                }
            }
            break;

            case "make":
            {
                int id  = int.Parse(args[1]);
                var num = 1;
                if (args.Length > 2)
                {
                    num = int.Parse(args[2]);
                }

                var playerItem = new PlayerItem {
                    ItemID = id, Num = num
                };
                userData.AddItem(playerItem);
            }
            break;

            case "addgold":
            {
                userData.AddGold(int.Parse(args[1]));
            }
            break;

            case "addcoin":
            {
                userData.AddCoin(int.Parse(args[1]));
            }
            break;

            case "addexp":
            {
                int level = 0;
                userData.AddExp(int.Parse(args[1]), out level);
            }
            break;
            }

            //sync
            var syncHero = new Task_G2C_SyncHero {
                Hero = userData.GetHero()
            };
            var syncPackage = new Task_G2C_SyncPackage
            {
                Package = userData.GetPackage(),
                Gold    = userData.Gold,
                Coin    = userData.Coin
            };
            NetProtoTool.SendTask(client, syncHero);
            NetProtoTool.SendTask(client, syncPackage);

            return(new G2C_GMTool
            {
                Code = ErrorCode.OK
            });
#else
            return(new G2C_GMTool {
                Code = ErrorCode.Error
            });
#endif
        }
    }
}