using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; using Sog; using ProtoCSStruct; namespace World { /// /// 支付信息,用来做频率限制等等操作,由于玩家数据在world会cache很久,比较适合放在这里 /// public struct PayInfoWorld { public long LastCheckTime; public int PayCountToday; //客户端告诉服务器google支付成功,但是服务器到数据库校验失败的次数,多了肯定是外挂了 public int PayGoogleSuccessReqFailedCount; public int PaySuccessTotalCount;//玩家总支付次数,用来区分是不是付费用户 } public class PlayerInfoWorld { public static uint PlayerLoginSerialNum = 0; public uint CurLoginSerialNum; public long Chip => roleBase.Chip; public long Diamond => roleBase.Diamond; public bool IsRobot => UserID < 10000; public uint BattleServerID; public long UserID; //用户id public int RealmID; public AccountInfo accountInfo; public DBRoleBase roleBase; public DBSysData sysData; public DBExtData extData; public string Lang; //语言 public string IpAddr = ""; //ip地址 public uint GameServerID; //用户所在的游戏服务器id public uint ChatServerID;//用户所在的聊天服务器ID public long LoginTime; //登录时间 public long LogoutTime; //登出时间 public long ActTimeSecond;//活动时间 public bool IsOnline; // 是否在线 public long LoginToken; //登陆标记 public PayInfoWorld PayInfo = new PayInfoWorld(); //举报这个玩家的玩家列表 //在内存里存一下就可以了,不需要存数据库 //key uid,value time ,超时需要删除 public Dictionary TipOffList = new Dictionary(); public long GagChatEndTime; //禁言到期时间 //由于PlayerInfoWorld会下线超时删除,这个版本号单独保存在m_sendMailWithRulePlayerVersion //public int SendMailWithRuleVersionSeq; public int todayBrokenCount; } public class WaitInLlineLoginPlayer { public long UserID; //用户id public long playersessionID; public long WaitBeginTime;//开始等待时间 public long BeginDisConTime;//排队等待时离线开始时间(在等待的过程中断线或离线了,在一定时间内重新进入不需要加入排队列表) } }