public override bool TakeAction() { if (_ID > GetBasis.UserLv) { PushMessageHelper.UserGameDataExceptionNotification(Current); return(false); } int needVit = _ID % 5 == 0 ? 3 : 1; if (GetBasis.Vit >= needVit) { receipt = true; if (DataHelper.VitMax == GetBasis.Vit) { GetBasis.StartRestoreVitDate = DateTime.Now; } GetBasis.Vit = MathUtils.Subtraction(GetBasis.Vit, needVit, 0); GetBasis.CurrentPassLevelID = _ID; } else { receipt = false; } PushMessageHelper.UserVitChangedNotification(Current); return(true); }
public override bool TakeAction() { var guildsSet = new ShareCacheStruct <GuildsCache>(); var guild = guildsSet.FindKey(GetGuild.GuildID); if (guild == null) { return(false); } var member = guild.FindMember(Current.UserId); if (member == null) { return(false); } if (GetGuild.IsSignIn) { receipt = RequestGuildResult.HadSignIn; return(true); } GetGuild.IsSignIn = true; int addLiveness = ConfigEnvSet.GetInt("Guild.SignInLiveness") * 500; member.Liveness = MathUtils.Addition(member.Liveness, addLiveness, int.MaxValue); guild.Liveness = MathUtils.Addition(guild.Liveness, addLiveness, int.MaxValue); GuildLogData log = new GuildLogData() { UserId = Current.UserId, UserName = GetBasis.NickName, LogTime = DateTime.Now, Content = string.Format("玩家 {0} 进行了签到。", GetBasis.NickName), }; guild.NewLog(log); foreach (var v in guild.MemberList) { PushMessageHelper.GuildMemberChangeNotification(GameSession.Get(v.UserID), Current.UserId); PushMessageHelper.NewGuildLogNotification(GameSession.Get(v.UserID)); } int newlv = guild.ConvertLevel(); if (guild.Lv < newlv) { guild.Lv = newlv; foreach (var v in guild.MemberList) { PushMessageHelper.GuildBasisChangeNotification(GameSession.Get(v.UserID)); } } receipt = RequestGuildResult.Successfully; return(true); }
public override bool TakeAction() { var fundcfg = new ShareCacheStruct <Config_Fund>().FindKey(id); if (fundcfg == null) { return(false); } FundStageData funddata = new FundStageData(); switch (fundId) { case PayID.Fund50: funddata = GetPay.Fund50.List.Find(t => t.ID == id); break; case PayID.Fund98: funddata = GetPay.Fund98.List.Find(t => t.ID == id); break; case PayID.Fund298: funddata = GetPay.Fund298.List.Find(t => t.ID == id); break; } if (funddata == null) { receipt = false; return(true); } if (funddata.Status != FundStatus.Permit) { receipt = false; return(true); } funddata.Status = FundStatus.Received; switch (fundId) { case PayID.Fund50: UserHelper.RewardsDiamond(Current.UserId, fundcfg.fund50); break; case PayID.Fund98: UserHelper.RewardsDiamond(Current.UserId, fundcfg.fund98); break; case PayID.Fund298: UserHelper.RewardsDiamond(Current.UserId, fundcfg.fund298); break; } PushMessageHelper.FundChangeNotification(Current); receipt = true; return(true); }
public override bool TakeAction() { receipt = RequestInviteFightResult.OK; GameSession session = GameSession.Get(destuid); UserBasisCache dest = UserHelper.FindUserBasis(destuid); if (dest == null) { receipt = RequestInviteFightResult.Offine; return(true); } //if (dest.ServerID != 0) //{ // if (session == null || !session.Connected) // { // receipt = RequestInviteFightResult.Offine; // return true; // } //} else if (dest.UserStatus == UserStatus.Inviteing) { receipt = RequestInviteFightResult.HadInvite; return(true); } else if (dest.UserStatus == UserStatus.Fighting) { receipt = RequestInviteFightResult.Fighting; return(true); } GetBasis.UserStatus = UserStatus.Inviteing; GetBasis.InviteFightDestUid = destuid; AutoFight.FightBot fbot = new AutoFight.FightBot() { UserId = dest.UserID, InviteTime = DateTime.Now, PlayerUserId = Current.UserId, DestUserId = destuid }; AutoFight.AddFightBot(fbot); dest.UserStatus = UserStatus.Inviteing; PushMessageHelper.InviteFightNotification(session, Current.UserId); return(true); }
public override bool TakeAction() { var guildData = new ShareCacheStruct <GuildsCache>().FindKey(GetGuild.GuildID); if (guildData == null) { return(false); } if (Current.UserId == _DestUid || (guildData.FindAtevent().UserID != Current.UserId && guildData.FindVice(Current.UserId) == null)) { receipt = RequestGuildResult.NoAuthority; return(true); } var basis = UserHelper.FindUserBasis(_DestUid); var guild = UserHelper.FindUserGuild(_DestUid); var member = guildData.FindMember(_DestUid); if (basis == null || member == null) { return(false); } GuildLogData log = new GuildLogData() { UserId = basis.UserID, UserName = basis.NickName, LogTime = DateTime.Now, Content = string.Format("玩家 {0} 被移出公会。", basis.NickName), }; guildData.NewLog(log); foreach (var v in guildData.MemberList) { PushMessageHelper.GuildMemberRemoveNotification(GameSession.Get(v.UserID), _DestUid); PushMessageHelper.NewGuildLogNotification(GameSession.Get(v.UserID)); } guildData.RemoveMember(member); guild.GuildID = string.Empty; GlobalRemoteService.SendUserData(basis, guild.GuildID); receipt = RequestGuildResult.Successfully; return(true); }
public override bool TakeAction() { GetBasis.UserStatus = UserStatus.MainUi; GetBasis.InviteFightDestUid = 0; GameSession session = GameSession.Get(destuid); UserBasisCache dest = UserHelper.FindUserBasis(destuid); if (session == null || !session.Connected || dest == null || dest.UserStatus != UserStatus.Inviteing) { return(true); } dest.UserStatus = UserStatus.MainUi; PushMessageHelper.CancelInviteFightNotification(session, GetBasis.NickName); return(true); }
public override bool TakeAction() { UserFriendsCache destFriends = UserHelper.FindUserFriends(destuid); if (GetFriends.IsHaveFriend(destuid)) { GetFriends.RemoveFriend(destuid); } if (destFriends.IsHaveFriend(Current.UserId)) { destFriends.RemoveFriend(Current.UserId); } PushMessageHelper.FriendRemoveNotification(GameSession.Get(destuid), Current.UserId); receipt = destuid; return(true); }
public override bool TakeAction() { UserBasisCache dest = UserHelper.FindUserBasis(destuid); UserFriendsCache destFriends = UserHelper.FindUserFriends(destuid); FriendApplyData apply = GetFriends.FindFriendApply(destuid); if (apply == null) { receipt = RequestFriendResult.NoApply; return(true); } if (result == EventStatus.Good) { if (GetFriends.IsFriendNumFull()) { receipt = RequestFriendResult.FriendNumFull; } else if (GetFriends.IsHaveFriend(destuid)) { receipt = RequestFriendResult.HadFriend; } else if (destFriends.IsFriendNumFull()) { receipt = RequestFriendResult.DestFriendNumFull; } else { receipt = RequestFriendResult.OK; GetFriends.AddFriend(destuid); destFriends.AddFriend(Current.UserId); PushMessageHelper.NewFriendNotification(GameSession.Get(destuid), Current.UserId); PushMessageHelper.NewFriendNotification(Current, destuid); } } GetFriends.ApplyList.Remove(apply); return(true); }
public override bool TakeAction() { if (GetTransfer.ReceiveCount >= 3) { receipt = TransferItemResult.ReceiveCountOut; return(true); } var receiveTransfer = GetTransfer.FindReceive(id); if (receiveTransfer == null) { receipt = TransferItemResult.Expire; return(true); } if (receiveTransfer.IsReceived) { receipt = TransferItemResult.Received; return(true); } var sendTransfer = UserHelper.FindUserTransfer(receiveTransfer.Sender).FindSend(id); if (sendTransfer.Password.CompareTo(passward) != 0) { receipt = TransferItemResult.ErrorPassword; return(true); } receiveTransfer.IsReceived = true; sendTransfer.IsReceived = true; UserHelper.RewardsItem(Current.UserId, sendTransfer.AppendItem.ID, sendTransfer.AppendItem.Num); PushMessageHelper.ReceivedTransferItemNotification(GameSession.Get(receiveTransfer.Sender), id); GetTransfer.ReceiveCount++; receipt = TransferItemResult.Successfully; return(true); }
public static void FightResponse() { var list = FightList.FindAll(t => (t.IsCanFight())); foreach (var v in list) { var player = UserHelper.FindUserBasis(v.PlayerUserId); var playerAtt = UserHelper.FindUserAttribute(v.PlayerUserId); var destAtt = UserHelper.FindUserAttribute(v.DestUserId); if (player == null) { continue; } player.UserStatus = UserStatus.Fighting; //bot.UserStatus = UserStatus.Fighting; EventStatus retresult = EventStatus.Good; //float diff = (float)GetBasis.GetCombatFightValue() / dest.GetCombatFightValue(); float diff = (float)playerAtt.FightValue / destAtt.FightValue; if (diff > 1.1f) { retresult = EventStatus.Good; } else if (diff < 0.9f) { retresult = EventStatus.Bad; } PushMessageHelper.StartInviteFightNotification(GameSession.Get(player.UserID), v.DestUserId, retresult); } lock (FightList) { foreach (var v in list) { FightList.Remove(v); } } }
public override bool TakeAction() { var guildsSet = new ShareCacheStruct <GuildsCache>(); var guild = guildsSet.FindKey(GetGuild.GuildID); if (guild == null) { return(false); } var member = guild.FindMember(Current.UserId); if (member == null || member.JobTitle == GuildJobTitle.Normal) { receipt = RequestGuildResult.NoAuthority; return(true); } guild.Notice = _content; GuildLogData log = new GuildLogData() { UserId = Current.UserId, UserName = GetBasis.NickName, LogTime = DateTime.Now, Content = string.Format("{0} 设置了新公告。", GetBasis.NickName), }; guild.NewLog(log); foreach (var v in guild.MemberList) { PushMessageHelper.GuildNoticeChangeNotification(GameSession.Get(v.UserID)); PushMessageHelper.NewGuildLogNotification(GameSession.Get(v.UserID)); } receipt = RequestGuildResult.Successfully; return(true); }
public override bool TakeAction() { UserBasisCache dest = UserHelper.FindUserBasis(destuid); UserFriendsCache destFriends = UserHelper.FindUserFriends(destuid); if (GetFriends.IsFriendNumFull()) { receipt = RequestFriendResult.FriendNumFull; } else if (destFriends.IsFriendNumFull()) { receipt = RequestFriendResult.DestFriendNumFull; } else if (GetFriends.IsHaveFriend(destuid)) { receipt = RequestFriendResult.HadFriend; } else if (destFriends.IsHaveFriendApply(Current.UserId)) { receipt = RequestFriendResult.HadApply; } else { receipt = RequestFriendResult.OK; destFriends.AddFriendApply(Current.UserId); var session = GameSession.Get(destuid); PushMessageHelper.NewFriendRequestNotification(GameSession.Get(destuid), Current.UserId); //GetFriends.AddFriend(destuid); //destFriends.AddFriend(Current.UserId); //PushMessageHelper.NewFriendNotification(GameSession.Get(destuid), Current.UserId); //PushMessageHelper.NewFriendNotification(Current, destuid); } return(true); }
public override bool TakeAction() { var guild = new ShareCacheStruct <GuildsCache>().FindKey(guildId); if (guild == null) { receipt = RequestGuildResult.NoGuild; return(true); } if (guild.MemberList.Count >= 50) { receipt = RequestGuildResult.Full; return(true); } if (guild.FindRequest(Current.UserId) != null) { receipt = RequestGuildResult.HadRequest; return(true); } GuildCharacter character = new GuildCharacter() { UserID = Current.UserId, Date = DateTime.Now }; guild.AddNewRequest(character); foreach (var v in guild.MemberList) { PushMessageHelper.NewGuildRequestNotification(GameSession.Get(v.UserID), Current.UserId); } receipt = RequestGuildResult.Successfully; return(true); }
public override bool TakeAction() { bool isAtevent = false; var guildsSet = new ShareCacheStruct <GuildsCache>(); var guildData = guildsSet.FindKey(GetGuild.GuildID); if (guildData == null) { return(false); } var member = guildData.FindMember(Current.UserId); if (member == null) { return(false); } isAtevent = member.JobTitle == GuildJobTitle.Atevent; guildData.RemoveMember(member); GetGuild.GuildID = string.Empty; if (guildData.MemberList.Count > 0) { if (isAtevent) { var ac = guildData.FindAteventCandidate(); if (ac != null) { ac.JobTitle = GuildJobTitle.Atevent; foreach (var v in guildData.MemberList) { PushMessageHelper.GuildMemberChangeNotification(GameSession.Get(v.UserID), ac.UserID); } } } GuildLogData log = new GuildLogData() { UserId = Current.UserId, UserName = GetBasis.NickName, LogTime = DateTime.Now, Content = string.Format("玩家 {0} 退出了公会。", GetBasis.NickName), }; guildData.NewLog(log); foreach (var v in guildData.MemberList) { PushMessageHelper.GuildMemberRemoveNotification(GameSession.Get(v.UserID), Current.UserId); PushMessageHelper.NewGuildLogNotification(GameSession.Get(v.UserID)); } } GlobalRemoteService.SendUserData(GetBasis, GetGuild.GuildID); receipt = true; return(true); }
public override void TakeActionAffter(bool state) { for (ChatType type = ChatType.World; type < ChatType.System; ++type) { //var parameters = new Parameters(); //parameters["ChatType"] = type; //var packet = ActionFactory.GetResponsePackage(ActionIDDefine.Cst_Action3002, Current, parameters, OpCode.Text, null); //ActionFactory.SendAction(Current, ActionIDDefine.Cst_Action3002, packet, (session, asyncResult) => { }, 0); } string context = ""; RankType ranktype = RankType.No; int rankid = 0; if (GetBasis.LevelRankID != 0 && GetBasis.LevelRankID < 10) { ranktype = RankType.Level; rankid = GetBasis.LevelRankID; context = string.Format("排行榜第{0}名的 {1} 上线了!", rankid, GetBasis.NickName); } if (GetBasis.CombatRankID != 0 && GetBasis.CombatRankID <= rankid) { ranktype = RankType.Combat; rankid = GetBasis.CombatRankID; context = string.Format("通天塔排名第{0}名的 {1} 上线了!", rankid, GetBasis.NickName); } if (ranktype != RankType.No) { if (GetBasis.UserLv >= DataHelper.OpenRankSystemUserLevel) { //GlobalRemoteService.SendNotice(NoticeMode.World, context); } } // 通知好友上线 foreach (FriendData fd in GetFriends.FriendsList) { PushMessageHelper.FriendOnlineNotification(GameSession.Get(fd.UserId), Current.UserId); } // 通知公会成员下线 if (!GetGuild.GuildID.IsEmpty()) { var guildData = new ShareCacheStruct <GuildsCache>().FindKey(GetGuild.GuildID); foreach (var v in guildData.MemberList) { if (v.UserID != Current.UserId) { PushMessageHelper.GuildMemberOnlineNotification(GameSession.Get(v.UserID), Current.UserId); } } } //context = "欢迎进入创想学院!"; //RemoteClient.SendSystemChat(Current.UserId, context); GetBasis.IsRefreshing = false; base.TakeActionAffter(state); }
public override bool TakeAction() { UserRank rankinfo = null; UserRank rivalrankinfo = null; rankinfo = UserHelper.FindRankUser(Current.UserId, RankType.Combat); if (rankinfo == null) { new BaseLog("Action1403").SaveLog(string.Format("Not found user combat rank. UserId={0}", Current.UserId)); ErrorInfo = Language.Instance.CombatRankDataException; return(true); } UserBasisCache rival = UserHelper.FindUserBasis(rankinfo.FightDestUid); if (rival == null) { ErrorInfo = Language.Instance.CombatRankDataException; return(true); } rivalrankinfo = UserHelper.FindRankUser(rankinfo.FightDestUid, RankType.Combat); if (rivalrankinfo == null) { new BaseLog("Action1403").SaveLog(string.Format("Not found user combat rank. UserId={0}", rankinfo.FightDestUid)); ErrorInfo = Language.Instance.CombatRankDataException; return(true); } //if (GetBasis.CombatRankID <= rival.CombatRankID) //{ // ErrorInfo = Language.Instance.CombatRankDataException; // return true; //} if (!rankinfo.IsFighting || !rivalrankinfo.IsFighting) { ErrorInfo = Language.Instance.CombatRankDataException; return(true); } int fromRankId = GetBasis.CombatRankID; int toRankId = rival.CombatRankID; //TraceLog.WriteLine(string.Format("#BEGIN srcId:[{0}] destId:[{1}]", fromid, toid)); GetBasis.UserStatus = UserStatus.MainUi; if (result == EventStatus.Good) { if (GetBasis.CombatRankID > rival.CombatRankID) { var ranking = RankingFactory.Get <UserRank>(CombatRanking.RankingKey); ranking.TryMove(fromRankId, toRankId); GetBasis.CombatRankID = toRankId; rival.CombatRankID = fromRankId; if (GetBasis.CombatRankID <= 10) { string context = string.Format("恭喜 {0} 挑战 {1} 成功,成为通天塔第{2}名!", GetBasis.NickName, rival.NickName, rankinfo.RankId); //GlobalRemoteService.SendNotice(NoticeMode.World, context); //PushMessageHelper.SendNoticeToOnlineUser(NoticeMode.Game, context); //var chatService = new TryXChatService(); //chatService.SystemSend(context); //PushMessageHelper.SendSystemChatToOnlineUser(); } } } else { if (GetBasis.CombatRankID <= rival.CombatRankID) { var ranking = RankingFactory.Get <UserRank>(CombatRanking.RankingKey); ranking.TryMove(fromRankId, toRankId); GetBasis.CombatRankID = toRankId; rival.CombatRankID = fromRankId; } GetCombat.LastFailedDate = DateTime.Now; } int rankrise = result == EventStatus.Good ? MathUtils.Subtraction(fromRankId, toRankId, 0) : 0; //TraceLog.WriteLine(string.Format("###END srcId:[{0}] destId:[{1}]", GetBasis.CombatData.RankID, rival.CombatData.RankID)); // 日志 CombatLogData log = new CombatLogData(); log.RivalUid = rankinfo.FightDestUid; log.RivalName = rival.NickName; log.RivalAvatarUrl = rival.AvatarUrl; log.LogTime = DateTime.Now; log.Type = EventType.Challenge; log.Status = result; log.RankIdDiff = rankrise; log.RankId = GetBasis.CombatRankID; GetCombat.PushCombatLog(log); string content = UserHelper.FormatCombatLog(log); GlobalRemoteService.SendSystemChat(Current.UserId, content); CombatLogData rivallog = new CombatLogData(); rivallog.RivalUid = Current.UserId; rivallog.RivalName = GetBasis.NickName; rivallog.RivalAvatarUrl = GetBasis.AvatarUrl; rivallog.LogTime = DateTime.Now; rivallog.Type = EventType.PassiveChallenge; rivallog.Status = result; rivallog.RankIdDiff = rankrise; rivallog.RankId = rival.CombatRankID; UserHelper.FindUserCombat(rival.UserID).PushCombatLog(rivallog); content = UserHelper.FormatCombatLog(rivallog); GlobalRemoteService.SendSystemChat(rival.UserID, content); rankinfo.IsFighting = false; rankinfo.FightDestUid = 0; rivalrankinfo.IsFighting = false; receipt = new CombatFightEndData(); receipt.Result = result; receipt.CurrRankId = GetBasis.CombatRankID; receipt.RankRise = rankrise; receipt.LastFailedTime = Util.ConvertDateTimeStamp(GetCombat.LastFailedDate); receipt.AwardGold = "0"; BigInteger gold = ConfigEnvSet.GetInt("User.CombatWinAwardGold"); BigInteger awardValue = Math.Ceiling(GetBasis.UserLv / 50.0).ToInt() * gold; if (result == EventStatus.Good) { receipt.AwardGold = awardValue.ToString(); UserHelper.RewardsGold(Current.UserId, awardValue, UpdateCoinOperate.NormalReward, true); } else { awardValue /= 4; receipt.AwardGold = awardValue.ToString(); UserHelper.RewardsGold(Current.UserId, awardValue, UpdateCoinOperate.NormalReward, true); } // 每日 UserHelper.EveryDayTaskProcess(Current.UserId, TaskType.Combat, 1); // 成就 UserHelper.AchievementProcess(Current.UserId, AchievementType.CombatRandID, "1"); PushMessageHelper.NewCombatLogNotification(Current); PushMessageHelper.NewCombatLogNotification(GameSession.Get(rival.UserID)); return(true); }
public override bool TakeAction() { receipt = new PassLevelReceipt(); bool isDataError = false; if (att > GetAttribute.Atk || crit > GetAttribute.Crit || hit > GetAttribute.Hit || GetBasis.CurrentPassLevelID == 0) { TraceLog.WriteError("1111检测属性异常: Uid:{0}, Name:{1}, " + "Atk={2}, Crit={3}, Hit={4}, CurrentPassLevelID={5}", Current.UserId, GetBasis.NickName, att, crit, hit, GetBasis.CurrentPassLevelID); isDataError = true; } if (!isDataError) { if (GetBasis.LastPassLevelID != GetBasis.CurrentPassLevelID && GetBasis.CurrentPassLevelID % 5 != 0 && GetBasis.CurrentPassLevelID > 10) { var timespan = DateTime.Now.Subtract(GetBasis.LastPassLevelTime); if (timespan.TotalSeconds < 30) { TraceLog.WriteError("1111检测通关时间异常: Uid:{0}, Name:{1}, TotalSeconds={2}", Current.UserId, GetBasis.NickName, timespan.TotalSeconds); isDataError = true; } } } if (isDataError) { PushMessageHelper.UserGameDataExceptionNotification(Current); return(false); } GetBasis.LastPassLevelTime = DateTime.Now; GetBasis.LastPassLevelID = GetBasis.CurrentPassLevelID; if (GetBasis.BackLevelNum > 0) { int levelDown = GetBasis.BackLevelNum; GetBasis.UserLv = Math.Max(GetBasis.UserLv - levelDown, 10); UserHelper.UserLvChange(Current.UserId); GetBasis.BackLevelNum = 0; receipt.UserLv = GetBasis.UserLv; receipt.NextMap = GetBasis.UserLv; PushMessageHelper.UserLvChangeNotification(Current); } else if (UserHelper.UserLevelUpCheck(Current.UserId, GetBasis.CurrentPassLevelID)) { receipt.UserLv = GetBasis.UserLv; receipt.NextMap = GetBasis.UserLv; } else { receipt.UserLv = GetBasis.UserLv; receipt.NextMap = GetBasis.CurrentPassLevelID; } if (receipt.NextMap % 5 == 0 && GetBasis.Vit > 0 && GetBasis.Vit < 3) { receipt.NextMap = GetBasis.CurrentPassLevelID; } GetBasis.CurrentPassLevelID = 0; return(true); }
public override bool TakeAction() { receipt = new SendTransferItemReceipt(); if (GetTransfer.SendCount >= 3) { receipt.Result = TransferItemResult.SendCountOut; return(true); } var itemdata = GetPackage.FindItem(itemId); if (itemdata == null || itemdata.Num < itemNum) { return(false); } var dest = UserHelper.FindUserBasis(destId); if (dest == null) { return(false); } var destTransfer = UserHelper.FindUserTransfer(destId); string newId = Guid.NewGuid().ToString("N"); ReceiveTransferItemData receiveData = new ReceiveTransferItemData() { ID = newId, Sender = Current.UserId, SenderName = GetBasis.NickName, SenderProfession = GetBasis.Profession, SenderAvatar = GetBasis.AvatarUrl, Date = DateTime.Now, IsReceived = false, }; receiveData.AppendItem.ID = itemId; receiveData.AppendItem.Num = itemNum; receipt.Data = new SendTransferItemData() { ID = newId, Receiver = dest.UserID, ReceiverName = dest.NickName, ReceiverProfession = dest.Profession, ReceiverAvatar = dest.AvatarUrl, Date = DateTime.Now, IsReceived = false, }; receipt.Data.Password = Util.GetRandom4Pwd(); receipt.Data.AppendItem.ID = itemId; receipt.Data.AppendItem.Num = itemNum; GetPackage.RemoveItem(itemId, itemNum); destTransfer.ReceiveList.Add(receiveData); PushMessageHelper.NewReceiveTransferItemNotification(GameSession.Get(destId), newId); GetTransfer.SendList.Add(receipt.Data); GetTransfer.SendCount++; receipt.Result = TransferItemResult.Successfully; return(true); }
public override bool TakeAction() { receipt = new StealReceipt(); receipt.Result = false; if (GetLottery.StealTimes <= 0 || selectIndex >= 3) { return(true); } StealRobTarget target = GetLottery.StealList[selectIndex]; var rival = UserHelper.FindUserBasis(target.RivalUid); if (rival == null) { return(true); } var rivalEnemy = UserHelper.FindUserEnemy(rival.UserID); if (rivalEnemy == null) { return(true); } GetLottery.StealTimes--; receipt.Gold = target.Gold; UserHelper.RewardsGold(Current.UserId, target.Gold); BigInteger dummyGold = BigInteger.Parse(target.Gold); BigInteger realGold = rival.GoldNum <= dummyGold * 2 ? rival.GoldNum / 2 : dummyGold; UserHelper.ConsumeGold(rival.UserID, realGold); rivalEnemy.AddEnemy(new EnemyData() { UserId = Current.UserId }); EnemyLogData log = new EnemyLogData() { RivalUid = Current.UserId, RivalName = GetBasis.NickName, RivalAvatarUrl = GetBasis.AvatarUrl, LogTime = DateTime.Now, LossGold = realGold.ToString(), IsSteal = true, RivalProfession = GetBasis.Profession }; rivalEnemy.PushLog(log); PushMessageHelper.NewStealRobNotification(GameSession.Get(rival.UserID)); if (target.IsPrimary) { GetLottery.StealList.Clear(); UserHelper.RandomStealTarget(Current.UserId); } else { UserHelper.RandomStealTarget2(Current.UserId); } foreach (var v in GetLottery.StealList) { UserBasisCache basis = UserHelper.FindUserBasis(v.RivalUid); UserAttributeCache attribute = UserHelper.FindUserAttribute(v.RivalUid); UserEquipsCache equips = UserHelper.FindUserEquips(v.RivalUid); CombatMatchUserData data = new CombatMatchUserData() { UserId = basis.UserID, NickName = basis.NickName, Profession = basis.Profession, AvatarUrl = basis.AvatarUrl, RankId = basis.LevelRankID, UserLv = basis.UserLv, VipLv = basis.VipLv, FightingValue = attribute.FightValue, Equips = equips, // SkillCarryList = user.SkillCarryList }; receipt.StealList.Add(data); } receipt.Lottery = GetLottery; receipt.Result = true; return(true); }
public override bool TakeAction() { var guildData = new ShareCacheStruct <GuildsCache>().FindKey(GetGuild.GuildID); if (guildData == null) { return(false); } var guildcfg = new ShareCacheStruct <Config_Society>().FindKey(guildData.Lv); if (guildcfg == null) { return(false); } if (guildData.FindAtevent().UserID != Current.UserId && guildData.FindVice(Current.UserId) == null) { receipt = RequestGuildResult.NoAuthority; return(true); } var basis = UserHelper.FindUserBasis(_DestUid); var guild = UserHelper.FindUserGuild(_DestUid); if (basis == null) { return(false); } if (_isAgree) { if (guildData.MemberList.Count >= guildcfg.Number) { receipt = RequestGuildResult.Full; } else if (!guild.GuildID.IsEmpty()) { receipt = RequestGuildResult.HadGuild; } else { GuildCharacter member = new GuildCharacter() { UserID = basis.UserID, JobTitle = GuildJobTitle.Normal, Liveness = 0 }; GuildLogData log = new GuildLogData() { UserId = basis.UserID, UserName = basis.NickName, LogTime = DateTime.Now, Content = string.Format("玩家 {0} 加入了公会。", basis.NickName), }; guildData.NewLog(log); // 通知公会成员有新成员加入 foreach (var v in guildData.MemberList) { PushMessageHelper.NewGuildMemberNotification(GameSession.Get(v.UserID), _DestUid); PushMessageHelper.NewGuildLogNotification(GameSession.Get(v.UserID)); } guildData.AddNewMember(member); guild.GuildID = guildData.GuildID; guild.IsSignIn = false; // 通知新成员公会信息 PushMessageHelper.JoinGuildNotification(GameSession.Get(_DestUid)); GlobalRemoteService.SendUserData(basis, guild.GuildID); receipt = RequestGuildResult.Successfully; } } // 从邀请列表里清除 guildData.RemoveRequest(_DestUid); foreach (var v in guildData.MemberList) { PushMessageHelper.GuildApplyRemoveNotification(GameSession.Get(v.UserID), _DestUid); } return(true); }
public override bool TakeAction() { var monster = new ShareCacheStruct <Config_Monster>().Find(t => t.Grade == GetBasis.UserLv); if (monster == null) { return(false); } BigInteger dropGold = BigInteger.Parse(monster.DropoutGold); BigInteger uploadingGold = BigInteger.Parse(goldNum); bool isDataError = false; if (dropGold != uploadingGold) { if (GetBasis.UserLv % 5 == 0) { var lastmonster = new ShareCacheStruct <Config_Monster>().Find(t => t.Grade == GetBasis.UserLv - 1); if (lastmonster != null) { dropGold = BigInteger.Parse(lastmonster.DropoutGold); if (dropGold != uploadingGold) { isDataError = true; TraceLog.WriteError("1110检测金币异常: Uid:{0}, Name:{1}, " + "DropGold={2}, UploadingGold={3}", Current.UserId, GetBasis.NickName, dropGold, uploadingGold); } } } else { isDataError = true; TraceLog.WriteError("1110检测金币异常: Uid:{0}, Name:{1}, " + "DropGold={2}, UploadingGold={3}", Current.UserId, GetBasis.NickName, dropGold, uploadingGold); } } if (!isDataError) { DateTime dropDate = Util.GetTime(dropTime); if (GetBasis.LastDropGoldTime == DateTime.MinValue) { GetBasis.LastDropGoldTime = dropDate; } else { var timespan = dropDate.Subtract(GetBasis.LastDropGoldTime); double sec = timespan.TotalSeconds; if (sec >= 3) { GetBasis.LastDropGoldTime = dropDate; GetBasis.DropGoldIntervalCount = 1; } else { GetBasis.DropGoldIntervalCount++; if (GetBasis.DropGoldIntervalCount > 6) { isDataError = true; TraceLog.WriteError("1110检测时间异常: Uid:{0}, Name:{1}, " + "Time={2}, DropCount={3}, LastDropGoldTime={4}, DropDate={5}", Current.UserId, GetBasis.NickName, sec, GetBasis.DropGoldIntervalCount, GetBasis.LastDropGoldTime, dropDate); } } } } if (isDataError) { GetBasis.DropGoldIntervalCount = 0; PushMessageHelper.UserGameDataExceptionNotification(Current); return(false); } UserHelper.RewardsGold(Current.UserId, monster.DropoutGold, UpdateCoinOperate.KillMonsterReward, true); receipt = true; return(true); }
public override bool TakeAction() { var guildsSet = new ShareCacheStruct <GuildsCache>(); if (!GetGuild.GuildID.IsEmpty()) { var oldguild = guildsSet.FindKey(GetGuild.GuildID); if (oldguild != null && oldguild.FindMember(Current.UserId) != null) { return(false); } } int needDiamond = ConfigEnvSet.GetInt("User.CreateGuildNeedDiamond"); if (GetBasis.DiamondNum < needDiamond) { receipt = RequestGuildResult.NoDiamond; return(true); } if (guildsSet.Find(t => t.GuildName == _guildName) != null) { receipt = RequestGuildResult.HadName; return(true); } GuildsCache guild = new GuildsCache() { GuildID = Guid.NewGuid().ToString(), GuildName = _guildName, Liveness = 0, RankID = 0, CreateDate = DateTime.Now, Lv = 1 }; GuildCharacter member = new GuildCharacter() { UserID = Current.UserId, JobTitle = GuildJobTitle.Atevent, Liveness = 0 }; guild.AddNewMember(member); GuildLogData log = new GuildLogData() { UserId = Current.UserId, UserName = GetBasis.NickName, LogTime = DateTime.Now, Content = string.Format("玩家 {0} 创建了公会。", GetBasis.NickName), }; guild.NewLog(log); guildsSet.Add(guild); guildsSet.Update(); GetGuild.GuildID = guild.GuildID; PushMessageHelper.JoinGuildNotification(Current); GlobalRemoteService.SendUserData(GetBasis, GetGuild.GuildID); receipt = RequestGuildResult.Successfully; return(true); }
public override bool TakeAction() { receipt = new RobReceipt(); receipt.Result = false; if (GetLottery.RobTimes <= 0) { return(true); } if (GetLottery.Rob.RivalUid != selectId && !GetEnemys.IsHaveEnemy(selectId) && !GetFriends.IsHaveFriend(selectId)) { return(true); } var rival = UserHelper.FindUserBasis(selectId); if (rival == null) { return(true); } var rivalEnemy = UserHelper.FindUserEnemy(rival.UserID); if (rivalEnemy == null) { return(true); } var lotterycfg = new ShareCacheStruct <Config_Lottery>().Find(t => (t.Type == LotteryAwardType.Rob)); if (lotterycfg == null) { return(false); } GetLottery.RobTimes--; BigInteger dummyGold = 0; if (GetLottery.Rob.RivalUid == selectId) { dummyGold = BigInteger.Parse(GetLottery.Rob.Gold); GetLottery.Rob.RivalUid = 0; GetLottery.Rob.RivalName = string.Empty; GetLottery.Rob.RivalAvatarUrl = string.Empty; GetLottery.Rob.Gold = "0"; UserHelper.RandomRobTarget(Current.UserId); } if (GetFriends.IsHaveFriend(selectId)) { var frienddata = GetFriends.FindFriend(selectId); dummyGold = BigInteger.Parse(frienddata.RobGold); frienddata.RobGold = "0"; GetFriends.AddRobRecord(selectId); } if (GetEnemys.IsHaveEnemy(selectId)) { var enemydata = GetEnemys.FindEnemy(selectId); dummyGold = BigInteger.Parse(enemydata.RobGold); GetEnemys.RemoveEnemy(rival.UserID); } if (result == EventStatus.Bad) { dummyGold = dummyGold / 5; } receipt.Gold = dummyGold.ToString(); UserHelper.RewardsGold(Current.UserId, dummyGold); BigInteger realGold = rival.GoldNum <= dummyGold * 2 ? rival.GoldNum / 2 : dummyGold; UserHelper.ConsumeGold(rival.UserID, realGold); int levelDown = 0; if (result == EventStatus.Good) { int downlv = rival.UserLv <= 1000 ? 10 : rival.UserLv / 100; levelDown = Math.Max(rival.UserLv - downlv, 0); levelDown = Math.Min(levelDown, downlv); //rival.UserLv = Math.Max(rival.UserLv - levelDown, 10); //UserHelper.UserLvChange(rival.UserID); //PushMessageHelper.UserLvChangeNotification(GameSession.Get(rival.UserID)); rival.BackLevelNum += downlv; } rivalEnemy.AddEnemy(new EnemyData() { UserId = Current.UserId }); EnemyLogData log = new EnemyLogData() { RivalUid = Current.UserId, RivalName = GetBasis.NickName, RivalAvatarUrl = GetBasis.AvatarUrl, LogTime = DateTime.Now, LossGold = realGold.ToString(), LevelDown = levelDown, IsSteal = false, Status = result, RivalProfession = GetBasis.Profession }; rivalEnemy.PushLog(log); PushMessageHelper.NewStealRobNotification(GameSession.Get(rival.UserID)); receipt.Lottery = GetLottery; receipt.Result = true; return(true); }
public override bool TakeAction() { receipt = new LotteryData(); var itemSet = new ShareCacheStruct <Config_Item>(); int times = isFiveTimes ? 5 : 1; if (GetLottery.LotteryTimes <= times) { int needDiamond = ConfigEnvSet.GetInt("User.BuyLotteryTimesNeedDiamond") * (times - GetLottery.LotteryTimes); if (GetBasis.DiamondNum < needDiamond) { receipt.Result = RequestLotteryResult.NoDiamond; return(true); } UserHelper.ConsumeDiamond(Current.UserId, needDiamond); //receipt.Result = RequestLotteryResult.NoTimes; //return true; } BigInteger awardGold = 0; int awardDiamond = 0; List <ItemData> awardItem = new List <ItemData>(); int lotteryId = 0; LotteryAwardType awardType = LotteryAwardType.Gold; GetLottery.StealTimes = 0; GetLottery.RobTimes = 0; for (int i = 0; i < times; ++i) { if (GetLottery.TotalCount == 0) { lotteryId = 7; awardType = LotteryAwardType.Steal; } else if (GetLottery.TotalCount == 1) { lotteryId = 8; awardType = LotteryAwardType.Rob; } else { var randlottery = UserHelper.RandomLottery(GetBasis.UserLv); if (randlottery != null) { lotteryId = randlottery.ID; awardType = randlottery.Type; } } Config_Lottery lott = new ShareCacheStruct <Config_Lottery>().FindKey(lotteryId); if (lott == null) { return(false); } LottItem item = new LottItem(); item.ID = lotteryId; item.Type = awardType; switch (lott.Type) { case LotteryAwardType.Gold: { BigInteger resourceNum = BigInteger.Parse(lott.Content); BigInteger value = Math.Ceiling(GetBasis.UserLv / 50.0).ToInt() * resourceNum; awardGold += value; item.ItemID = 0; item.Num = value.ToString(); } break; case LotteryAwardType.Diamond: { awardDiamond += lott.Content.ToInt(); item.ItemID = 0; item.Num = lott.Content; } break; case LotteryAwardType.Gem: { int maxCount = lott.Content.ToInt(); if (maxCount > 0) { var lotteryGem = UserHelper.RandomLotteryGem(); item.ItemID = lotteryGem.ID; item.Num = maxCount.ToString(); awardItem.Add(new ItemData() { ID = lotteryGem.ID, Num = maxCount }); } } break; case LotteryAwardType.Debris: { var debris = itemSet.FindAll(t => (t.ItemType == ItemType.Debris)); foreach (var v in GetElf.ElfList) { var elfCard = itemSet.Find(t => t.ResourceNum.ToInt() == v.ID); if (elfCard == null) { continue; } debris.RemoveAll(t => (t.ResourceNum.ToInt() == elfCard.ItemID)); } if (debris.Count == 0) { debris = itemSet.FindAll(t => (t.ItemType == ItemType.Debris)); } int maxCount = lott.Content.ToInt(); if (maxCount > 0) { int index = random.Next(debris.Count); int awardId = debris[index].ItemID; item.ItemID = awardId; item.Num = maxCount.ToString(); awardItem.Add(new ItemData() { ID = awardId, Num = maxCount }); } } break; case LotteryAwardType.Elf: { item.ItemID = lott.Content.ToInt(); item.Num = "1"; awardItem.Add(new ItemData() { ID = lott.Content.ToInt(), Num = 1 }); var itemcfg = new ShareCacheStruct <Config_Item>().FindKey(item.ItemID); if (itemcfg != null) { string context = string.Format("恭喜 {0} 在幸运大夺宝中获得精灵 {1}", GetBasis.NickName, itemcfg.ItemName); GlobalRemoteService.SendNotice(NoticeMode.World, context); } } break; case LotteryAwardType.Steal: { GetLottery.StealTimes++; UserHelper.RandomStealTarget(Current.UserId); } break; case LotteryAwardType.Rob: { GetLottery.RobTimes++; UserHelper.RandomRobTarget(Current.UserId); } break; case LotteryAwardType.Vit: { GetBasis.Vit += lott.Content.ToInt(); PushMessageHelper.UserVitChangedNotification(Current); } break; } receipt.AwardList.Add(item); GetLottery.TotalCount++; } UserHelper.RewardsGold(Current.UserId, awardGold, UpdateCoinOperate.NormalReward, true); UserHelper.RewardsDiamond(Current.UserId, awardDiamond); UserHelper.RewardsItems(Current.UserId, awardItem); if (GetLottery.LotteryTimes == ConfigEnvSet.GetInt("User.LotteryTimesMax")) { GetLottery.StartRestoreLotteryTimesDate = DateTime.Now; } if (GetLottery.LotteryTimes > 0) { GetLottery.LotteryTimes = MathUtils.Subtraction(GetLottery.LotteryTimes, times, 0); } UserHelper.EveryDayTaskProcess(Current.UserId, TaskType.Lottery, times); receipt.Result = RequestLotteryResult.OK; return(true); }
public override bool TakeAction() { var guildsSet = new ShareCacheStruct <GuildsCache>(); var guild = guildsSet.FindKey(GetGuild.GuildID); if (guild == null) { return(false); } int needDiamond = ConfigEnvSet.GetInt("User.CreateGuildNeedDiamond"); if (GetBasis.DiamondNum < needDiamond) { receipt = RequestGuildResult.NoDiamond; return(true); } var basis = UserHelper.FindUserBasis(_destUid); var self = guild.FindMember(Current.UserId); var destMember = guild.FindMember(_destUid); if (Current.UserId == _destUid || guild.FindAtevent().UserID != Current.UserId || destMember == null) { receipt = RequestGuildResult.NoAuthority; return(true); } switch (_jobTitle) { case GuildJobTitle.Atevent: { destMember.JobTitle = GuildJobTitle.Atevent; self.JobTitle = GuildJobTitle.Normal; GuildLogData log = new GuildLogData() { UserId = basis.UserID, UserName = basis.NickName, LogTime = DateTime.Now, Content = string.Format("玩家 {0} 被提升为会长。", basis.NickName), }; guild.NewLog(log); foreach (var v in guild.MemberList) { PushMessageHelper.GuildMemberChangeNotification(GameSession.Get(v.UserID), _destUid); PushMessageHelper.GuildMemberChangeNotification(GameSession.Get(v.UserID), Current.UserId); PushMessageHelper.NewGuildLogNotification(GameSession.Get(v.UserID)); } } break; case GuildJobTitle.Vice: { if (guild.FindVice(_destUid) != null) { receipt = RequestGuildResult.NoAuthority; return(true); } if (guild.FindVice().Count >= 2) { return(false); } destMember.JobTitle = GuildJobTitle.Vice; GuildLogData log = new GuildLogData() { UserId = basis.UserID, UserName = basis.NickName, LogTime = DateTime.Now, Content = string.Format("玩家 {0} 被提升为副会长。", basis.NickName), }; guild.NewLog(log); foreach (var v in guild.MemberList) { PushMessageHelper.GuildMemberChangeNotification(GameSession.Get(v.UserID), _destUid); PushMessageHelper.NewGuildLogNotification(GameSession.Get(v.UserID)); } } break; case GuildJobTitle.Normal: { if (guild.FindVice(_destUid) == null) { receipt = RequestGuildResult.NoAuthority; return(true); } destMember.JobTitle = GuildJobTitle.Normal; GuildLogData log = new GuildLogData() { UserId = basis.UserID, UserName = basis.NickName, LogTime = DateTime.Now, Content = string.Format("玩家 {0} 被降为普通成员。", basis.NickName), }; guild.NewLog(log); foreach (var v in guild.MemberList) { PushMessageHelper.GuildMemberChangeNotification(GameSession.Get(v.UserID), _destUid); PushMessageHelper.NewGuildLogNotification(GameSession.Get(v.UserID)); } } break; } receipt = RequestGuildResult.Successfully; return(true); }
public override bool TakeAction() { GetBasis.UserStatus = UserStatus.MainUi; GameSession destSession = GameSession.Get(destuid); UserBasisCache destBasis = UserHelper.FindUserBasis(destuid); UserAttributeCache destAttribute = UserHelper.FindUserAttribute(destuid); if (destSession == null || !destSession.Connected || destBasis == null || destBasis.UserStatus != UserStatus.Inviteing || destBasis.InviteFightDestUid != Current.UserId) { return(true); } AutoFight.RemoveFightBot(destuid); if (result == EventStatus.Bad) { destBasis.UserStatus = UserStatus.MainUi; destBasis.InviteFightDestUid = 0; PushMessageHelper.RefuseInviteFightNotification(destSession, GetBasis.NickName); } else {// 切磋开始通知 GetBasis.UserStatus = UserStatus.Fighting; destBasis.UserStatus = UserStatus.Fighting; EventStatus retresult = EventStatus.Good; float diff = (float)GetAttribute.FightValue / destAttribute.FightValue; if (diff > 1.1f) { retresult = EventStatus.Good; } else if (diff < 0.9f) { retresult = EventStatus.Bad; } else { if (diff >= 1.0f) { retresult = random.Next(1000) < 8000 ? EventStatus.Good : EventStatus.Bad; } else { retresult = random.Next(1000) < 8000 ? EventStatus.Bad : EventStatus.Good; } } if (retresult == EventStatus.Bad) { PushMessageHelper.StartInviteFightNotification(Current, destuid, EventStatus.Bad); PushMessageHelper.StartInviteFightNotification(destSession, Current.UserId, EventStatus.Good); } else { PushMessageHelper.StartInviteFightNotification(Current, destuid, EventStatus.Good); PushMessageHelper.StartInviteFightNotification(destSession, Current.UserId, EventStatus.Bad); } } return(true); }