From 859433eee7f9fd37c270959609b6f418d512dd26 Mon Sep 17 00:00:00 2001 From: hahwu <31872165+hahwu@users.noreply.github.com> Date: Fri, 29 Nov 2024 17:10:47 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BB=A3=E7=A0=81=E6=95=B4=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/server/conf/mergeData/MergeDataCfg.go | 10 + src/server/game/ChampshipsManager.go | 783 ------ src/server/game/FriendMgr.go | 4 +- src/server/game/GameLogic.go | 381 +-- src/server/game/Gm.go | 4 +- src/server/game/HttpSvr.go | 19 - src/server/game/Model.go | 19 +- src/server/game/NewChampshipsManager.go | 1314 ---------- src/server/game/OldPlayerCompensateMgr.go | 113 - src/server/game/Player.go | 65 +- src/server/game/PlayerActiveData.go | 2232 ----------------- src/server/game/PlayerActiveManager.go | 208 -- src/server/game/PlayerBaseMod.go | 7 +- src/server/game/PlayerChessMod.go | 121 - src/server/game/PlayerDataModule.go | 2107 +--------------- src/server/game/PlayerEmailData.go | 284 --- src/server/game/PlayerEmitUnlockMod.go | 129 - src/server/game/PlayerFriendData.go | 1398 ----------- src/server/game/PlayerFunc.go | 2 + src/server/game/PlayerGiftMod.go | 97 - src/server/game/PlayerMod.go | 2 +- src/server/game/PlayerPigData.go | 168 -- src/server/game/PlayerProfileDataManager.go | 418 --- src/server/game/PlayerShopData.go | 1236 --------- src/server/game/PlayerUnlockingChestMod.go | 227 -- src/server/game/RegisterNetworkFunc.go | 1541 +----------- src/server/game/external.go | 9 +- src/server/game/mod/order/Order.go | 2 +- .../pkg/github.com/name5566/leaf/gate/gate.go | 1 - 29 files changed, 78 insertions(+), 12823 deletions(-) delete mode 100644 src/server/game/ChampshipsManager.go delete mode 100644 src/server/game/NewChampshipsManager.go delete mode 100644 src/server/game/OldPlayerCompensateMgr.go delete mode 100644 src/server/game/PlayerActiveData.go delete mode 100644 src/server/game/PlayerActiveManager.go delete mode 100644 src/server/game/PlayerEmailData.go delete mode 100644 src/server/game/PlayerEmitUnlockMod.go delete mode 100644 src/server/game/PlayerFriendData.go delete mode 100644 src/server/game/PlayerGiftMod.go delete mode 100644 src/server/game/PlayerPigData.go delete mode 100644 src/server/game/PlayerProfileDataManager.go delete mode 100644 src/server/game/PlayerShopData.go delete mode 100644 src/server/game/PlayerUnlockingChestMod.go diff --git a/src/server/conf/mergeData/MergeDataCfg.go b/src/server/conf/mergeData/MergeDataCfg.go index 536807a8..fc7f87cd 100644 --- a/src/server/conf/mergeData/MergeDataCfg.go +++ b/src/server/conf/mergeData/MergeDataCfg.go @@ -135,6 +135,16 @@ func GetEmitProduceType(Id int) []string { return strings.Split(gamedata.ParseString(data["Emit_Product"]), ",") } +// 根据Id获取发射器产出类型 +func GetEmitProduceChessType(Id int) []string { + data, err := gamedata.GetDataByIntKey(CFG_NAME, Id) + if err != nil { + log.Debug("GetTypeById GetOne Id:%v not found", Id) + return []string{} + } + return strings.Split(gamedata.ParseString(data["Product_Type"]), ",") +} + // 根据Id获取发射器Id func GetEmitId(Id int) string { data, err := gamedata.GetDataByIntKey(CFG_NAME, Id) diff --git a/src/server/game/ChampshipsManager.go b/src/server/game/ChampshipsManager.go deleted file mode 100644 index 3684ac8c..00000000 --- a/src/server/game/ChampshipsManager.go +++ /dev/null @@ -1,783 +0,0 @@ -package game - -import ( - "fmt" - "math" - "math/rand" - "server/GoUtil" - "server/MergeConst" - "server/db" - "server/msg" - "sort" - "strconv" - "strings" - "time" - - "github.com/robfig/cron/v3" - - "google.golang.org/protobuf/proto" -) - -type ChampshipsManager struct { - MStatus int32 - MChampshipMap map[int32]*db.SqlChampshipsStruct - MChampshipPlayerMap map[int32][]*msg.ChampshipsPlayerInfo - IsSettle int32 - IsLoadDB bool - MUpdateNotifyList []int32 - McronSave *cron.Cron - McronSaveID cron.EntryID - RobotCronID cron.EntryID - RobotCronID10s cron.EntryID - MPlayerBaseInfoMap map[int32]*db.ResPlayerBaseInfo -} - -func (p *ChampshipsManager) SaveDataFromDB(Key interface{}) bool { - - return true -} - -func (p *ChampshipsManager) AIGrow1() { - -} - -func (p *ChampshipsManager) DeleteOutLineChampship(CurChampshipsId int32) { - sqlStr := "DELETE FROM t_championships_data WHERE CurChampshipsId = ?" - - for k, v := range p.MChampshipPlayerMap { - if v[0].CurChampshipsId == CurChampshipsId { - delete(p.MChampshipPlayerMap, k) - } - } - result, err := db.SqlDb.Exec(sqlStr, CurChampshipsId) - if err != nil { - fmt.Printf("exec failed, err:%v\n", err) - return - } - affectedRows, err := result.RowsAffected() - if err != nil { - fmt.Printf("get affected failed, err:%v\n", err) - return - } else { - fmt.Printf("delete t_championships_data affectedRows:%d\n", affectedRows) - } -} - -func (p *ChampshipsManager) DeleteUneffectPlayer(deleteIds []int32) { - sqlStr := "DELETE FROM t_player_baseinfo WHERE dwUin = ?" - - for i := 0; i < len(deleteIds); i++ { - _, err := db.SqlDb.Exec(sqlStr, deleteIds[i]) - if err != nil { - fmt.Printf("exec failed, err:%v\n", err) - } - - } -} - -func (p *ChampshipsManager) GetFriendListId(id int32) []int32 { - - sqlStr := "SELECT * FROM t_player_Friend_Data WHERE dwUin = ?" - sqlStruck := db.SqlFriendStruct{} - ret := []int32{} - - if err := db.SqlDb.Get(&sqlStruck, sqlStr, id); err != nil { - - } else { - if sqlStruck.FriendList != "" { - arr := strings.Split(sqlStruck.FriendList, "_") - for i := 0; i < len(arr); i++ { - id, _ := strconv.ParseInt(arr[i], 10, 32) - ret = append(ret, int32(id)) - } - } - } - return ret -} - -func (p *ChampshipsManager) NotifyOpenNewChampShip(args []interface{}) { - go func() { - G_GameLogicPtr.M_SvrGlobal.CurChampshipsId = G_GameLogicPtr.M_SvrGlobal.CurChampshipsId + 1 - G_GameLogicPtr.M_SvrGlobal.StartChampshipsSvrTime = args[0].(int32) - }() -} - -func (p *ChampshipsManager) OpenNewChampShip(args []interface{}) { - - G_GameLogicPtr.M_SvrGlobal.CurChampshipsId = G_GameLogicPtr.M_SvrGlobal.CurChampshipsId + 1 - G_GameLogicPtr.M_SvrGlobal.StartChampshipsSvrTime = args[0].(int32) - p.MUpdateNotifyList = []int32{} - - sqlStr := "SELECT * FROM t_player_baseinfo" - sqlStrucks := []db.ResPlayerBaseInfo{} - if err := db.SqlDb.Select(&sqlStrucks, sqlStr); err != nil { - - return - } else { - - } - deleteIds := []int32{} - sqlStrucksList := []db.ResPlayerBaseInfo{} - for i := 0; i < len(sqlStrucks); i++ { - if sqlStrucks[i].UserName == "" { - deleteIds = append(deleteIds, sqlStrucks[i].DwUin) - } else { - sqlStrucksList = append(sqlStrucksList, sqlStrucks[i]) - } - } - sqlStrucks = sqlStrucksList - p.DeleteUneffectPlayer(deleteIds) - - sort.Slice(sqlStrucks, func(i, j int) bool { - if sqlStrucks[i].Level != sqlStrucks[j].Level { - return sqlStrucks[i].Level < sqlStrucks[j].Level - } else { - return sqlStrucks[i].Exp < sqlStrucks[j].Exp - } - - }) - var playerCnt int = 15 - groups := int(math.Ceil((float64)(len(sqlStrucks)) / float64(playerCnt))) - StartRobotUin := 200000 - p.MStatus = 1 - rand.Seed(time.Now().Unix()) - for i := 0; i < groups; i++ { - if i < groups-1 { - temp := db.SqlChampshipsStruct{} - temp.CurChampshipsId = G_GameLogicPtr.M_SvrGlobal.CurChampshipsId - CSPlayerInfo := []*msg.ChampshipsPlayerInfo{} - - strr := []string{} - for j := 0; j < int(playerCnt); j++ { - dwUin := sqlStrucks[i*int(playerCnt)+j].DwUin - res := strconv.Itoa(int(dwUin)) + "_" + "1" + "_" + "0" + "_" + "0" + "_" + "1" + "_" + strconv.Itoa(int(G_GameLogicPtr.M_SvrGlobal.CurChampshipsId)) + "_0" - strr = append(strr, res) - playerinfo := &msg.ChampshipsPlayerInfo{} - playerinfo.DwUin = dwUin - playerinfo.IsGet = 0 - playerinfo.IsPlayer = 1 - playerinfo.Score = 0 - playerinfo.Times = 1 - playerinfo.AIEnum = 0 - playerinfo.CurChampshipsId = G_GameLogicPtr.M_SvrGlobal.CurChampshipsId - CSPlayerInfo = append(CSPlayerInfo, playerinfo) - } - for j := int(playerCnt); j < 30; j++ { - StartRobotUin = StartRobotUin + 1 - dwUin := StartRobotUin - enum := rand.Intn(4) + 1 - res := strconv.Itoa(int(dwUin)) + "_" + "0" + "_" + "0" + "_" + "0" + "_" + "1" + "_" + strconv.Itoa(int(G_GameLogicPtr.M_SvrGlobal.CurChampshipsId)) + "_" + strconv.Itoa(enum) - strr = append(strr, res) - playerinfo := &msg.ChampshipsPlayerInfo{} - playerinfo.DwUin = int32(dwUin) - playerinfo.IsGet = 0 - playerinfo.IsPlayer = 0 - playerinfo.Score = 0 - playerinfo.Times = 1 - playerinfo.AIEnum = int32(enum) - playerinfo.CurChampshipsId = G_GameLogicPtr.M_SvrGlobal.CurChampshipsId - CSPlayerInfo = append(CSPlayerInfo, playerinfo) - } - temp.GroupRankData = strings.Join(strr, ";") - insertId, _ := db.FormatAllMemInsertDb(&temp, "t_championships_data") - - p.MChampshipPlayerMap[int32(insertId)] = CSPlayerInfo - - for j := 0; j < int(playerCnt); j++ { - dwUin := sqlStrucks[i*int(playerCnt)+j].DwUin - player, ok := G_GameLogicPtr.M_Players[dwUin] - if ok { - player.GetIFGameData("PlayerBaseData").(*PlayerBaseData).SetChampshipID(int32(insertId), true) - } else { - player = G_GameLogicPtr.FindOfflinePlayer(dwUin) - if player != nil { - player.GetIFGameData("PlayerBaseData").(*PlayerBaseData).SetChampshipID(int32(insertId), false) - } else { - sqlStrucks[i*int(playerCnt)+j].LastChampGroupID = sqlStrucks[i*int(playerCnt)+j].ChampshipsGroupID - sqlStrucks[i*int(playerCnt)+j].ChampshipsGroupID = int32(insertId) - db.FormatAllMemUpdateDb(&sqlStrucks[i*int(playerCnt)+j], "t_player_baseinfo", "dwUin") - } - } - } - } else { - remain := len(sqlStrucks) - (groups-1)*int(playerCnt) - cnt := 0 - strr := []string{} - temp := db.SqlChampshipsStruct{} - temp.CurChampshipsId = G_GameLogicPtr.M_SvrGlobal.CurChampshipsId - - CSPlayerInfo := []*msg.ChampshipsPlayerInfo{} - - for j := 0; j < remain; j++ { - dwUin := sqlStrucks[i*int(playerCnt)+j].DwUin - res := strconv.Itoa(int(dwUin)) + "_" + "1" + "_" + "0" + "_" + "0" + "_" + "1" + "_" + strconv.Itoa(int(G_GameLogicPtr.M_SvrGlobal.CurChampshipsId)) + "_0" - strr = append(strr, res) - cnt = cnt + 1 - playerinfo := &msg.ChampshipsPlayerInfo{} - playerinfo.DwUin = dwUin - playerinfo.IsGet = 0 - playerinfo.IsPlayer = 1 - playerinfo.Score = 0 - playerinfo.Times = 1 - playerinfo.AIEnum = 0 - playerinfo.CurChampshipsId = G_GameLogicPtr.M_SvrGlobal.CurChampshipsId - CSPlayerInfo = append(CSPlayerInfo, playerinfo) - } - for j := cnt; j < 30; j++ { - StartRobotUin = StartRobotUin + 1 - dwUin := StartRobotUin - enum := rand.Intn(4) + 1 - res := strconv.Itoa(int(dwUin)) + "_" + "0" + "_" + "0" + "_" + "0" + "_" + "1" + "_" + strconv.Itoa(int(G_GameLogicPtr.M_SvrGlobal.CurChampshipsId)) + "_" + strconv.Itoa(enum) - strr = append(strr, res) - playerinfo := &msg.ChampshipsPlayerInfo{} - playerinfo.DwUin = int32(dwUin) - playerinfo.IsGet = 0 - playerinfo.IsPlayer = 0 - playerinfo.Score = 0 - playerinfo.Times = 1 - playerinfo.AIEnum = int32(enum) - playerinfo.CurChampshipsId = G_GameLogicPtr.M_SvrGlobal.CurChampshipsId - CSPlayerInfo = append(CSPlayerInfo, playerinfo) - } - temp.GroupRankData = strings.Join(strr, ";") - insertId, _ := db.FormatAllMemInsertDb(&temp, "t_championships_data") - p.MChampshipPlayerMap[int32(insertId)] = CSPlayerInfo - for j := 0; j < remain; j++ { - dwUin := sqlStrucks[i*int(playerCnt)+j].DwUin - player, ok := G_GameLogicPtr.M_Players[dwUin] - if ok { - player.GetIFGameData("PlayerBaseData").(*PlayerBaseData).SetChampshipID(int32(insertId), true) - } else { - player = G_GameLogicPtr.FindOfflinePlayer(dwUin) - if player != nil { - player.GetIFGameData("PlayerBaseData").(*PlayerBaseData).SetChampshipID(int32(insertId), false) - } else { - - sqlStrucks[i*int(playerCnt)+j].LastChampGroupID = sqlStrucks[i*int(playerCnt)+j].ChampshipsGroupID - sqlStrucks[i*int(playerCnt)+j].ChampshipsGroupID = int32(insertId) - db.FormatAllMemUpdateDb(&sqlStrucks[i*int(playerCnt)+j], "t_player_baseinfo", "dwUin") - } - } - } - } - } - p.IsLoadDB = true - - p.AIScoreGrowth1h() - db.FormatAllMemUpdateDb(&G_GameLogicPtr.M_SvrGlobal, "t_server_global_data", "Id") - -} - -func (p *ChampshipsManager) OpenChampShipTimes(args []interface{}) { - p.MStatus = 2 - notify := &msg.NotifyChampshipTimesOpen{} - notify.CurChampshipsId = G_GameLogicPtr.M_SvrGlobal.CurChampshipsId - data, _ := proto.Marshal(notify) - G_GameLogicPtr.broadcastInfoAllPlayer("NotifyChampshipTimesOpen", data) -} - -func (p *ChampshipsManager) CloseChampShipTimes(args []interface{}) { - p.MStatus = 1 - notify := &msg.NotifyChampshipTimesClose{} - notify.CurChampshipsId = G_GameLogicPtr.M_SvrGlobal.CurChampshipsId - data, _ := proto.Marshal(notify) - G_GameLogicPtr.broadcastInfoAllPlayer("NotifyChampshipTimesClose", data) -} - -func (p *ChampshipsManager) Notify_Clock_Tick_Sec(args []interface{}) { - timeStamp := args[0].(int64) - t := time.Unix(timeStamp, 0).Local() - zero := timeStamp - (int64)(t.Hour()*3600+t.Minute()*60+t.Second()) - OpenTime := zero + MergeConst.G_Champion_Start_Offset - OpenTimesTime := zero + MergeConst.G_Champion_Start_Effect_Time - CloseTimesTime := zero + MergeConst.G_Champion_Start_Effect_Time + MergeConst.G_Champion_Start_Effect_Durtion - DeleteLastTimesTime := zero + MergeConst.G_Champion_settlement_Duration - if G_GameLogicPtr.M_SvrGlobal.StartChampshipsSvrTime < int32(OpenTime) { //今日没有开启 - if timeStamp >= OpenTime { //开启 - GoUtil.CallEvent(MergeConst.Notify_Champion_Renew, []interface{}{int32(OpenTime)}) - } else { - //开启时间未到 - if p.MStatus == 1 { - GoUtil.CallEvent(MergeConst.Notify_EndChampShip, []interface{}{int32(OpenTime)}) - } - - } - } else { - if p.MStatus == 0 { - p.MStatus = 1 - } - - if !p.IsLoadDB { - p.LoadDbDataByGroupId(G_GameLogicPtr.M_SvrGlobal.CurChampshipsId) - if G_GameLogicPtr.M_SvrGlobal.LastChampshipsId > 0 { - p.LoadDbDataByGroupId(G_GameLogicPtr.M_SvrGlobal.LastChampshipsId) - } - p.IsLoadDB = true - } - } - - if p.MStatus == 1 { - if timeStamp >= OpenTimesTime && timeStamp <= CloseTimesTime { - GoUtil.CallEvent(MergeConst.Notify_OpenChampShipTimes, []interface{}{int32(OpenTime)}) - } - - } - if p.MStatus == 2 { - if timeStamp > CloseTimesTime { - GoUtil.CallEvent(MergeConst.Notify_CloseChampShipTimes, []interface{}{int32(OpenTime)}) - } - } - if p.IsSettle == 0 { - if timeStamp <= DeleteLastTimesTime { - p.IsSettle = 1 - } else { - if G_GameLogicPtr.M_SvrGlobal.LastChampshipsId > 0 { - p.DeleteOutLineChampship(G_GameLogicPtr.M_SvrGlobal.LastChampshipsId) - G_GameLogicPtr.M_SvrGlobal.LastChampshipsId = 0 - db.FormatAllMemUpdateDb(&G_GameLogicPtr.M_SvrGlobal, "t_server_global_data", "Id") - } - } - } - if p.IsSettle == 1 { - if timeStamp > DeleteLastTimesTime { - notify := &msg.NotifyChampshipSettleClose{} - notify.LastChampshipsId = G_GameLogicPtr.M_SvrGlobal.LastChampshipsId - data, _ := proto.Marshal(notify) - G_GameLogicPtr.broadcastInfoAllPlayer("NotifyChampshipSettleClose", data) - p.IsSettle = 0 - if G_GameLogicPtr.M_SvrGlobal.LastChampshipsId > 0 { - p.DeleteOutLineChampship(G_GameLogicPtr.M_SvrGlobal.LastChampshipsId) - G_GameLogicPtr.M_SvrGlobal.LastChampshipsId = 0 - db.FormatAllMemUpdateDb(&G_GameLogicPtr.M_SvrGlobal, "t_server_global_data", "Id") - } - - } - } -} - -func (p *ChampshipsManager) EndChampShip(args []interface{}) { - p.MStatus = 0 - G_GameLogicPtr.M_SvrGlobal.LastChampshipsId = G_GameLogicPtr.M_SvrGlobal.CurChampshipsId - db.FormatAllMemUpdateDb(&G_GameLogicPtr.M_SvrGlobal, "t_server_global_data", "Id") - - notify := &msg.NotifyChampshipSettleOpen{} - notify.LastChampshipsId = G_GameLogicPtr.M_SvrGlobal.LastChampshipsId - data, _ := proto.Marshal(notify) - G_GameLogicPtr.broadcastInfoAllPlayer("NotifyChampshipSettleOpen", data) - - notify1 := &msg.NotifyChampshipClose{} - notify1.CurChampshipsId = G_GameLogicPtr.M_SvrGlobal.CurChampshipsId - data1, _ := proto.Marshal(notify1) - G_GameLogicPtr.broadcastInfoAllPlayer("NotifyChampshipClose", data1) - - p.NotifyRenewChampshipData() -} - -func (p *ChampshipsManager) NotifyRenewChampshipData() { - for i := 0; i < len(p.MUpdateNotifyList); i++ { - groupid := p.MUpdateNotifyList[i] - playerlist, ok := p.MChampshipPlayerMap[groupid] - if ok { - for j := 0; j < len(playerlist); j++ { - if playerlist[j].IsPlayer == 1 { - dwUin := playerlist[j].DwUin - player, ok1 := G_GameLogicPtr.M_Players[dwUin] - if ok1 { - agent := player.GetAgentByPlayer() - notify := &msg.NotifyUpdateChampshipRank{} - notify.ChampshipsGroupID = groupid - notify.GroupRankDataList = playerlist - data, _ := proto.Marshal(notify) - G_getGameLogic().PackResInfo(agent, "NotifyUpdateChampshipRank", data) - } else { - - } - } - } - } - } - p.MUpdateNotifyList = p.MUpdateNotifyList[0:0] -} - -func (p *ChampshipsManager) ReqChampshipData(player *Player, buf []byte) { - req := &msg.ReqChampshipData{} - proto.Unmarshal(buf, req) - res := &msg.ResChampshipData{} - _, ok := p.MChampshipPlayerMap[req.ChampshipsGroupID] - if ok { - res.GroupRankDataList = p.MChampshipPlayerMap[req.ChampshipsGroupID] - } - res.ChampshipsGroupID = req.ChampshipsGroupID - res.Status = p.MStatus - res.IsSettle = p.IsSettle - res.EndTime = G_GameLogicPtr.M_SvrGlobal.StartChampshipsSvrTime + MergeConst.G_Champion_Duration - res.EndSettleTime = G_GameLogicPtr.M_SvrGlobal.StartChampshipsSvrTime - MergeConst.G_Champion_Start_Offset + MergeConst.G_Champion_Start_Effect_Time + MergeConst.G_Champion_Start_Effect_Durtion - agent := player.GetAgentByPlayer() - data, _ := proto.Marshal(res) - G_getGameLogic().PackResInfo(agent, "ResChampshipData", data) -} - -func (p *ChampshipsManager) InitManager() { - GoUtil.RegisterEvent(MergeConst.Notify_Champion_Renew, p.OpenNewChampShip, p) - GoUtil.RegisterEvent(MergeConst.Notify_OpenChampShipTimes, p.OpenChampShipTimes, p) - GoUtil.RegisterEvent(MergeConst.Notify_CloseChampShipTimes, p.CloseChampShipTimes, p) - GoUtil.RegisterEvent(MergeConst.Notify_EndChampShip, p.EndChampShip, p) - GoUtil.RegisterEvent(MergeConst.Notify_Clock_Tick_Sec, p.Notify_Clock_Tick_Sec, p) - p.MChampshipMap = make(map[int32]*db.SqlChampshipsStruct) - p.MChampshipPlayerMap = make(map[int32][]*msg.ChampshipsPlayerInfo) - p.MStatus = 0 - p.IsSettle = 0 - p.IsLoadDB = false - p.MUpdateNotifyList = []int32{} - p.McronSave = cron.New() - p.McronSaveID, _ = p.McronSave.AddFunc("@every 70s", func() { - p.NotifyRenewChampshipData() - }) - p.RobotCronID, _ = p.McronSave.AddFunc("@every 1h", func() { - p.AIScoreGrowth1h() - }) - - p.RobotCronID10s, _ = p.McronSave.AddFunc("@every 15m", func() { - if p.MStatus == 2 { - p.RobotIntervalAddScore15m() - } - }) - p.McronSave.Start() -} - -func (p *ChampshipsManager) RobotIntervalAddScore() { - seed := time.Now().Unix() - rand.Seed(seed) - needToUpdateDb := []int32{} - for k, v := range p.MChampshipPlayerMap { - ishaveRobot := false - for i := 0; i < len(v); i++ { - if v[i].IsPlayer == 0 { - ishaveRobot = true - addScore := 3 - ran := rand.Intn(100) + 1 - if ran <= 25 { - addScore = addScore + 1 - } else { - if ran <= 50 { - addScore = addScore + 2 - } - } - v[i].Score = v[i].Score + int32(addScore) - } - } - if ishaveRobot { - sort.Slice(v, func(i, j int) bool { return v[i].Score > v[j].Score }) - isAdd := false - for i := 0; i < len(p.MUpdateNotifyList); i++ { - if p.MUpdateNotifyList[i] == k { - isAdd = true - break - } - } - if !isAdd { - p.MUpdateNotifyList = append(p.MUpdateNotifyList, k) - } - needToUpdateDb = append(needToUpdateDb, k) - - } - - } - for i := 0; i < len(needToUpdateDb); i++ { - p.SaveDbDataByGroupId(needToUpdateDb[i]) - } -} - -func (p *ChampshipsManager) GetMinGroupId() int32 { - var Min int32 = 0 - for k := range p.MChampshipPlayerMap { - if Min == 0 { - Min = k - continue - } - if k < Min { - Min = k - } - } - return Min -} - -func (p *ChampshipsManager) AIScoreGrowth1h() { - seed := time.Now().Unix() - rand.Seed(seed) - needToUpdateDb := []int32{} - // MinGroupId := p.GetMinGroupId() - for k, v := range p.MChampshipPlayerMap { - ishaveRobot := false - groupId := 0 //k - MinGroupId + 1 - for i := 0; i < len(v); i++ { - if v[i].IsPlayer == 0 { - ishaveRobot = true - addScore := 0 - if v[i].AIEnum == 1 { - var num1 float64 = 0.5 - var num2 float64 = 5.5 - groupId = rand.Intn(7) + 1 - addScore = addScore + int(math.Floor(float64(groupId-1)*num1*num2)) - } - if v[i].AIEnum == 2 { - addScore = 16 - - ran := rand.Intn(100) + 1 - if ran <= 25 { - addScore = addScore + 6 - } else { - if ran <= 50 { - addScore = addScore + 10 - } - } - } - if v[i].AIEnum == 3 { - addScore = 16 - - ran := rand.Intn(100) + 1 - if ran <= 25 { - addScore = addScore + 10 - } else { - if ran <= 75 { - addScore = addScore + 6 - } - } - var num1 float64 = 0.5 - var num2 float64 = 5.5 - groupId = rand.Intn(7) + 1 - addScore = addScore + int(math.Floor(float64(groupId-1)*num1*num2)) - } - if v[i].AIEnum == 4 { - var num1 float64 = 0.5 - var num2 float64 = 5.5 - groupId = rand.Intn(7) + 1 - addScore = addScore + int(math.Floor(float64(groupId-1)*num1*num2)) - score := rand.Intn(23) - addScore = addScore + score - } - v[i].Score = v[i].Score + int32(addScore) - } - } - if ishaveRobot { - sort.Slice(v, func(i, j int) bool { return v[i].Score > v[j].Score }) - isAdd := false - for i := 0; i < len(p.MUpdateNotifyList); i++ { - if p.MUpdateNotifyList[i] == k { - isAdd = true - break - } - } - if !isAdd { - p.MUpdateNotifyList = append(p.MUpdateNotifyList, k) - } - needToUpdateDb = append(needToUpdateDb, k) - - } - - } - for i := 0; i < len(needToUpdateDb); i++ { - p.SaveDbDataByGroupId(needToUpdateDb[i]) - } -} - -func (p *ChampshipsManager) RobotIntervalAddScore15m() { - seed := time.Now().Unix() - rand.Seed(seed) - needToUpdateDb := []int32{} - for k, v := range p.MChampshipPlayerMap { - ishaveRobot := false - for i := 0; i < len(v); i++ { - if v[i].IsPlayer == 0 { - - addScore := 0 - if v[i].AIEnum == 1 { - - ran := rand.Intn(100) + 1 - if ran <= 25 { - addScore = addScore + 10 - } else { - if ran <= 75 { - addScore = addScore + 6 - } - } - ran = rand.Intn(100) + 1 - if ran <= 25 { - addScore = addScore + 5 - } else { - if ran <= 50 { - addScore = addScore + 10 - } - } - if addScore > 0 { - ishaveRobot = true - v[i].Score = v[i].Score + int32(addScore) - } - - } - - } - } - if ishaveRobot { - sort.Slice(v, func(i, j int) bool { return v[i].Score > v[j].Score }) - isAdd := false - for i := 0; i < len(p.MUpdateNotifyList); i++ { - if p.MUpdateNotifyList[i] == k { - isAdd = true - break - } - } - if !isAdd { - p.MUpdateNotifyList = append(p.MUpdateNotifyList, k) - } - needToUpdateDb = append(needToUpdateDb, k) - - } - - } - for i := 0; i < len(needToUpdateDb); i++ { - p.SaveDbDataByGroupId(needToUpdateDb[i]) - } -} -func (p *ChampshipsManager) SaveDbDataByGroupId(GroupId int32) { - _, ok := p.MChampshipPlayerMap[GroupId] - if ok { - List := p.MChampshipPlayerMap[GroupId] - strr := []string{} - for i := 0; i < len(List); i++ { - Item := List[i] - unit := strconv.Itoa(int(Item.DwUin)) + "_" + strconv.Itoa(int(Item.IsPlayer)) + "_" + strconv.Itoa(int(Item.Score)) + "_" + strconv.Itoa(int(Item.IsGet)) + "_" + strconv.Itoa(int(Item.Times)) + "_" + strconv.Itoa(int(Item.CurChampshipsId)) + "_" + strconv.Itoa(int(Item.AIEnum)) - strr = append(strr, unit) - } - data := strings.Join(strr, ";") - sqlStruct := &db.SqlChampionshipsStruct{} - sqlStruct.ChampshipsGroupID = GroupId - sqlStruct.GroupRankData = data - sqlStruct.CurChampshipsId = List[0].CurChampshipsId - db.FormatAllMemUpdateDb(sqlStruct, "t_championships_data", "ChampshipsGroupID") - } -} - -func (p *ChampshipsManager) LoadDbDataByGroupId(ChampshipsId int32) { - - sqlStr := "SELECT * FROM t_championships_data WHERE CurChampshipsId = ?" - - sqlStruck := []db.SqlChampionshipsStruct{} - - if err := db.SqlDb.Select(&sqlStruck, sqlStr, ChampshipsId); err != nil { - - } else { - for m := 0; m < len(sqlStruck); m++ { - units := strings.Split(sqlStruck[m].GroupRankData, ";") - list := []*msg.ChampshipsPlayerInfo{} - for i := 0; i < len(units); i++ { - item := units[i] - strr := strings.Split(item, "_") - temp := &msg.ChampshipsPlayerInfo{} - dwuin, _ := strconv.Atoi(strr[0]) - temp.DwUin = int32(dwuin) - IsPlayer, _ := strconv.Atoi(strr[1]) - temp.IsPlayer = int32(IsPlayer) - Score, _ := strconv.Atoi(strr[2]) - temp.Score = int32(Score) - IsGet, _ := strconv.Atoi(strr[3]) - temp.IsGet = int32(IsGet) - Times, _ := strconv.Atoi(strr[4]) - temp.Times = int32(Times) - CS, _ := strconv.Atoi(strr[5]) - temp.CurChampshipsId = int32(CS) - AI, _ := strconv.Atoi(strr[6]) - temp.AIEnum = int32(AI) - list = append(list, temp) - } - p.MChampshipPlayerMap[sqlStruck[m].ChampshipsGroupID] = list - } - } - -} - -func (p *ChampshipsManager) ReqChampshipAddScore(player *Player, buf []byte) { - req := &msg.ReqChampshipAddScore{} - proto.Unmarshal(buf, req) - res := &msg.ResChampshipAddScore{} - - if p.MStatus == 0 { - res.ResultCode = MergeConst.Protocol_Champship_End - } else { - _, ok := p.MChampshipPlayerMap[req.GroupId] - if ok { - List := p.MChampshipPlayerMap[req.GroupId] - isHave := false - for i := 0; i < len(List); i++ { - if List[i].DwUin == player.M_DwUin { - List[i].Score = List[i].Score + req.AddScore - res.ResultCode = 0 - isHave = true - break - } - } - sort.Slice(List, func(i, j int) bool { return List[i].Score > List[j].Score }) - if !isHave { - res.ResultCode = MergeConst.Protocol_Champship_No_Join - } else { - res.GroupRankDataList = List - isAdd := false - for i := 0; i < len(p.MUpdateNotifyList); i++ { - if p.MUpdateNotifyList[i] == req.GroupId { - isAdd = true - break - } - } - if !isAdd { - p.MUpdateNotifyList = append(p.MUpdateNotifyList, req.GroupId) - } - - p.SaveDbDataByGroupId(req.GroupId) - } - } else { - res.ResultCode = MergeConst.Protocol_Champship_No_Exsit - } - } - - res.GroupId = req.GroupId - agent := player.GetAgentByPlayer() - data, _ := proto.Marshal(res) - G_getGameLogic().PackResInfo(agent, "ResChampshipAddScore", data) -} - -func (p *ChampshipsManager) ReqChampshipAddTime(player *Player, buf []byte) { - req := &msg.ReqChampshipAddTime{} - proto.Unmarshal(buf, req) - res := &msg.ResChampshipAddTime{} - if p.MStatus == 0 { - res.ResultCode = MergeConst.Protocol_Champship_End - } else { - _, ok := p.MChampshipPlayerMap[req.GroupId] - if ok { - List := p.MChampshipPlayerMap[req.GroupId] - isHave := false - for i := 0; i < len(List); i++ { - if List[i].DwUin == player.M_DwUin { - List[i].Times = List[i].Times + req.AddTimes - res.ResultCode = 0 - isHave = true - break - } - } - sort.Slice(List, func(i, j int) bool { return List[i].Score > List[j].Score }) - if !isHave { - res.ResultCode = MergeConst.Protocol_Champship_No_Join - } else { - res.GroupRankDataList = List - p.SaveDbDataByGroupId(req.GroupId) - } - } else { - res.ResultCode = MergeConst.Protocol_Champship_No_Exsit - } - } - res.GroupId = req.GroupId - - agent := player.GetAgentByPlayer() - data, _ := proto.Marshal(res) - G_getGameLogic().PackResInfo(agent, "ResChampshipAddTime", data) -} diff --git a/src/server/game/FriendMgr.go b/src/server/game/FriendMgr.go index 45d0753e..b17d9c6e 100644 --- a/src/server/game/FriendMgr.go +++ b/src/server/game/FriendMgr.go @@ -1,10 +1,12 @@ package game import ( + "encoding/gob" "fmt" "server/GoUtil" mergeCluster "server/cluster" "server/conf" + "server/game/mod/card" "server/game/mod/msg" "server/pkg/github.com/name5566/leaf/log" ) @@ -19,7 +21,7 @@ type FirendData struct { } func (f *FriendMgr) Init() { - + gob.Register(card.CardInfo{}) f.key = FRIEND_MGR_KEY f.data = &FirendData{ List: make(map[int][]*msg.Msg), diff --git a/src/server/game/GameLogic.go b/src/server/game/GameLogic.go index 8707c326..72fc6203 100644 --- a/src/server/game/GameLogic.go +++ b/src/server/game/GameLogic.go @@ -9,7 +9,6 @@ import ( "server/GoUtil" "server/MergeConst" "server/conf" - "sort" "strconv" l "log" @@ -20,8 +19,6 @@ import ( "server/msg" "time" - "math/rand" - "github.com/robfig/cron/v3" "google.golang.org/protobuf/proto" @@ -66,22 +63,18 @@ type LimitActPeriod struct { } type GameLogic struct { - Db_AccountInfo db.Db_Account - DailyTaskTimestamp int64 - M_Players map[int32]*Player - m_CronEntryIDs map[int]*LimitActPeriod - Mdispatr *timer.Dispatcher - M_LimitActiveList []int - NotInitPlayer *Player - MReadyToRemoveList map[*Player]*timer.Timer - Mlogger *log.Logger - MloggerErr error - Version int32 - M_SvrGlobal db.SqlSvrGlobalStruct - MChampshipsManager *NewChampshipsManager - MPlayerProfileManager *PlayerProfileManager - MOldPlayerCompensateMgr *OldPlayerCompensateMgr - MHttpManager *HttpManager + Db_AccountInfo db.Db_Account + DailyTaskTimestamp int64 + M_Players map[int32]*Player + m_CronEntryIDs map[int]*LimitActPeriod + Mdispatr *timer.Dispatcher + M_LimitActiveList []int + NotInitPlayer *Player + Mlogger *log.Logger + MloggerErr error + Version int32 + M_SvrGlobal db.SqlSvrGlobalStruct + MHttpManager *HttpManager MLogManager *LogMgr SeverInfo *ServerInfo @@ -260,19 +253,6 @@ func (ad *GameLogic) CreateNewPlayer(a gate.Agent, UserName string) { } -// 重新绑定玩家和网络连接代理 -func (ad *GameLogic) RebindPlayerAndAgent(a gate.Agent, player *Player) { - internal.AsignPlayerToAgents(a, player) - ad.M_Players[player.M_DwUin] = player - player.Reconnect() - player.SetAgent(a) - timer1 := ad.MReadyToRemoveList[player] - timer1.Disabled() - ad.Mdispatr.ChanTimer <- timer1 - timer1.Stop() - delete(G_GameLogicPtr.MReadyToRemoveList, player) -} - func (ad *GameLogic) GetPlayerByAgent(gate gate.Agent) *Player { p, ok := internal.Agents.Load(gate) if ok { @@ -433,25 +413,21 @@ func G_getGameLogic() *GameLogic { G_GameLogicPtr.Mdispatr = timer.NewDispatcher(10) G_GameLogicPtr.InitServerInfo() G_GameLogicPtr.M_Players = make(map[int32]*Player) - G_GameLogicPtr.MReadyToRemoveList = make(map[*Player]*timer.Timer) G_GameLogicPtr.NotInitPlayer = new(Player) G_GameLogicPtr.M_LimitActiveList = []int{} - G_GameLogicPtr.LoadSvrGlobalData() // 加载服务器全局数据 - G_GameLogicPtr.CreateChamshipsMgr() // 创建锦标赛管理器 - G_GameLogicPtr.CreateProfileManager() // 创建玩家档案管理器 - G_GameLogicPtr.CreateCompensateMgr() // 创建老玩家补偿管理器 - G_GameLogicPtr.OpenTimestampTick() // 开启时间戳计时器 - G_GameLogicPtr.ReadAllConfigs() // 读取所有配置文件 - G_GameLogicPtr.RegisterEvent() // 注册事件 - G_GameLogicPtr.RegisterNetWorkFunc() // 注册客户端接口 - G_GameLogicPtr.InitActivity() // 初始化活动 - G_GameLogicPtr.GetVersion() // 获取版本号 - G_GameLogicPtr.CreateLogManager() //加载日志管理器 - G_GameLogicPtr.CreateFriendMgr() //创建好友管理器 - G_GameLogicPtr.CreateRankMgr() //创建排行榜管理器 - G_GameLogicPtr.CreateMailMgr() //创建邮件管理器 - G_GameLogicPtr.CreateChampshipMgr() // 创建竞标赛管理器 - ClusterMgrInit() //初始化集群 + G_GameLogicPtr.LoadSvrGlobalData() // 加载服务器全局数据 + G_GameLogicPtr.OpenTimestampTick() // 开启时间戳计时器 + G_GameLogicPtr.ReadAllConfigs() // 读取所有配置文件 + G_GameLogicPtr.RegisterEvent() // 注册事件 + G_GameLogicPtr.RegisterNetWorkFunc() // 注册客户端接口 + G_GameLogicPtr.InitActivity() // 初始化活动 + G_GameLogicPtr.GetVersion() // 获取版本号 + G_GameLogicPtr.CreateLogManager() //加载日志管理器 + G_GameLogicPtr.CreateFriendMgr() //创建好友管理器 + G_GameLogicPtr.CreateRankMgr() //创建排行榜管理器 + G_GameLogicPtr.CreateMailMgr() //创建邮件管理器 + G_GameLogicPtr.CreateChampshipMgr() // 创建竞标赛管理器 + ClusterMgrInit() //初始化集群 // G_GameLogicPtr.CreateHttpManager() } @@ -472,34 +448,6 @@ func (ad *GameLogic) InitServerInfo() { ad.SeverInfo = ServerInfo } -func (ad *GameLogic) DisorderLuaTable(length int, Cnt int) []int { - - // length := len(tb) - indexList := []int{} - copy := []int{} - for i := 0; i < Cnt; i++ { - index := rand.Intn(length - i) - if len(indexList) == 0 { - indexList = append(indexList, index) - } else { - for n := 0; n < len(copy); n++ { - if index >= copy[n] { - index = index + 1 - } - } - indexList = append(indexList, index) - } - copy = []int{} - for j := 0; j < len(indexList); j++ { - copy = append(copy, indexList[j]) - } - - sort.Slice(copy, func(i, j int) bool { return copy[i] < copy[j] }) - } - contentList := indexList[:] - return contentList -} - func (ad *GameLogic) GetVersion() { sqlStr := "SELECT * FROM t_gameserver WHERE id = ?" sqlStruck := db.SqlVersionStruct{} @@ -549,32 +497,6 @@ func (ad *GameLogic) ClearData(args []interface{}) { } } -func (ad *GameLogic) FindOfflinePlayer(dwUin int32) *Player { - for k := range G_GameLogicPtr.MReadyToRemoveList { - if k.M_DwUin == dwUin { - return k - } - } - return nil -} - -func (ad *GameLogic) InitPassportInsertDb(player *Player, StartSvrTime int32, EndSvrTime int32, ConfigActId int) int32 { - st := &db.SqlLimitPassportStruct{} - st.CurFreeLv = 0 - st.CurPayLv = 0 - st.DwUin = player.M_DwUin - st.IsPay = 0 - st.Star = 0 - st.StartSvrTime = StartSvrTime - st.EndSvrTime = EndSvrTime - st.Status = 0 - st.ActiveID = 0 - st.ConfigActId = int32(ConfigActId) - activityID, _ := db.FormatAllMemInsertDb(st, "t_player_LimitPassport") - - return int32(activityID) -} - func (ad *GameLogic) InitPromotionInsertDb(player *Player, StartSvrTime int32, EndSvrTime int32, ConfigActId int) int32 { st := &db.SqlLimitPromotionStruct{} st.DwUin = player.M_DwUin @@ -648,53 +570,10 @@ func (ad *GameLogic) LoadSvrGlobalData() { } } -func (ad *GameLogic) OpenNewLimitActivity(args []interface{}) { - go func() { - internal.Agents.Range(func(k, v interface{}) bool { - if v == ad.NotInitPlayer { - return true - } - player := v.(*Player) - notify := &msg.NotifyLimitedTimeActiveData{} - notify.MActiveList = []*msg.LimitedTimeActiveStruct{} - - id := args[0].(int) - activityCfg := gamedata.GetConfigByName("Activity") - record := activityCfg.Index(id).(*gamedata.ActivityRecord) - - act := &msg.LimitedTimeActiveStruct{} - act.StartSvrTime = args[1].(int32) - act.EndSvrTime = args[2].(int32) - act.Type = int32(record.Type) - if act.Type == 1 { - act.ActiveID = ad.InitPassportInsertDb(player, act.StartSvrTime, act.EndSvrTime, id) - } - if act.Type == 2 { - act.ActiveID = ad.InitPromotionInsertDb(player, act.StartSvrTime, act.EndSvrTime, id) - } - if act.Type == 3 { - act.ActiveID = ad.InitInfinitePackInsertDb(player, act.StartSvrTime, act.EndSvrTime, id) - } - if act.Type == 4 { - act.ActiveID = ad.Init7DayLoginInsertDb(player, act.StartSvrTime, act.EndSvrTime, id) - } - if act.Type == 5 { - act.ActiveID = ad.InitCardCollectInsertDb(player, act.StartSvrTime, act.EndSvrTime, id) - } - notify.MActiveList = append(notify.MActiveList, act) - data, _ := proto.Marshal(notify) - ad.PackResInfo(k.(gate.Agent), "NotifyLimitedTimeActiveData", data) - return true - }) - }() - -} - func (ad *GameLogic) RegisterEvent() { GoUtil.RegisterEvent(MergeConst.Notify_Socket_Closed, ad.ClearData, nil) GoUtil.RegisterEvent(MergeConst.Notify_Socket_Connect, ad.NewPlayerConnect, nil) - GoUtil.RegisterEvent(MergeConst.OpenNewLimitActivity, ad.OpenNewLimitActivity, nil) } func (ad *GameLogic) NewPlayerConnect(args []interface{}) { @@ -769,144 +648,9 @@ func (ad *GameLogic) CreateDailyLogFile() { func (ad *GameLogic) RegisterNetWorkFunc() { - RegisterMsgProcessFunc("ReqPlayerEmitUnlockData", ReqPlayerEmitUnlockDatafunction) - RegisterMsgProcessFunc("UpdatePlayerEmitUnlockData", UpdatePlayerEmitUnlockDatafunction) - - RegisterMsgProcessFunc("ReqPlayerChessData", ReqPlayerChessDataFunc) - RegisterMsgProcessFunc("UpdatePlayerChessData", UpdatePlayerChessDataFunc) - - RegisterMsgProcessFunc("UpdateChessColorData", UpdateChessColorDataFunc) - RegisterMsgProcessFunc("ReqChessColorData", ResChessColorDataFunc) - - RegisterMsgProcessFunc("ReqUnlockingChestID", ReqUnlockingChestIDFunc) - RegisterMsgProcessFunc("ReqChestUnlockCD", ReqChestUnlockCDFunc) - - RegisterMsgProcessFunc("ReqEmitMergeMap", ReqEmitMergeMapFunc) - RegisterMsgProcessFunc("ReqEmitCountMap", ReqResEmitCountMapFunc) - RegisterMsgProcessFunc("ReqEmitCDStartData", ReqEmitCDStartDataFunc) - RegisterMsgProcessFunc("UpdateEmitMergeMap", UpdateEmitMergeMapFunc) - RegisterMsgProcessFunc("UpdateEmitCountMap", UpdateEmitCountMapFunc) - RegisterMsgProcessFunc("ReqEmitSubCD", ReqEmitSubCDFunc) - - RegisterMsgProcessFunc("ReqShopData", ReqShopDatafunc) - RegisterMsgProcessFunc("ReqShopBuy", ReqShopBuyFunc) - RegisterMsgProcessFunc("ReqRenewItemBuyCnt", ReqRenewItemBuyCntFunc) - - RegisterMsgProcessFunc("ReqBriefEmailData", ReqBriefEmailDataFunc) - RegisterMsgProcessFunc("ReqDetailEmailData", ReqDetailEmailDataFunc) - RegisterMsgProcessFunc("ReqGetEmailReward", ReqGetEmailRewardFunc) - RegisterMsgProcessFunc("ReqDeleteEmail", ReqDeleteEmailFunc) - - RegisterMsgProcessFunc("ReqLimitPassportDetail", ReqLimitPassportDetailFunc) - RegisterMsgProcessFunc("ReqPromotionDetail", ReqPromotionDetailFunc) - RegisterMsgProcessFunc("ReqInfinitePackDetail", ReqInfinitePackDetailFunc) - - RegisterMsgProcessFunc("ReqGetLimitPassportReward", ReqGetLimitPassportRewardFunc) - RegisterMsgProcessFunc("ReqBuyLimitPromotionReward", ReqBuyLimitPromotionRewardFunc) - RegisterMsgProcessFunc("ReqBuyInfinitePack", ReqBuyInfinitePackFunc) - - RegisterMsgProcessFunc("ReqPayPassport", ReqPayPassportFunc) - RegisterMsgProcessFunc("ReqActiveAddStar", ReqActiveAddStarFunc) - - RegisterMsgProcessFunc("ReqOfflineReconnect", ReqOfflineReconnectFunc) - - RegisterMsgProcessFunc("ReqOpenNewPig", ReqOpenNewPigFunc) - RegisterMsgProcessFunc("ReqPigDetailInfo", ReqPigDetailInfoFunc) - RegisterMsgProcessFunc("UpdateFinishOrderDiamond", UpdateFinishOrderDiamondFunc) - RegisterMsgProcessFunc("ReqGetPigReward", ReqGetPigRewardFunc) - RegisterMsgProcessFunc("ReqDropPigReward", ReqDropPigRewardFunc) - - RegisterMsgProcessFunc("ReqLevelUpPackInfo", ReqLevelUpPackInfoFunc) - RegisterMsgProcessFunc("ReqBuyLevelUpPack", ReqBuyLevelUpPackFunc) - - RegisterMsgProcessFunc("ReqGrowthFundInfo", ReqGrowthFundInfoFunc) - RegisterMsgProcessFunc("ReqBuyGrowthFund", ReqBuyGrowthFundFunc) - RegisterMsgProcessFunc("ReqGetGrowthFundWard", ReqGetGrowthFundWardFunc) RegisterMsgProcessFunc("ReqRemoveAd", ReqRemoveAdFunc) - RegisterMsgProcessFunc("ReqSupremeGiftInfo", ReqSupremeGiftInfoFunc) - RegisterMsgProcessFunc("ReqBuySupremeGift", ReqBuySupremeGiftFunc) - - RegisterMsgProcessFunc("ReqIllustratedInfo", ReqIllustratedInfoFunc) - RegisterMsgProcessFunc("ReqGetIllustrateItemReward", ReqGetIllustrateItemRewardFunc) - RegisterMsgProcessFunc("UpdateIllustrateItem", UpdateIllustrateItemFunc) - - RegisterMsgProcessFunc("ReqCardCollectDetail", ReqCardCollectDetailFunc) - RegisterMsgProcessFunc("ReqGetCardAlbumReward", ReqGetCardAlbumRewardFunc) - RegisterMsgProcessFunc("ReqGetAllCardReward", ReqGetAllCardRewardFunc) - RegisterMsgProcessFunc("ReqAddCard", ReqAddCardFunc) - RegisterMsgProcessFunc("ReqUnpackCard", ReqUnpackCardFunc) - RegisterMsgProcessFunc("ReqAddMasterCard", ReqAddMasterCardFunc) - RegisterMsgProcessFunc("ReqUseMasterCard", ReqUseMasterCardFunc) - RegisterMsgProcessFunc("ReqBuyStickerItem", ReqBuyStickerItemFunc) - - RegisterMsgProcessFunc("ReqGetDonateCard", ReqGetDonateCardFunc) - RegisterMsgProcessFunc("ReqReceiptCard", ReqReceiptCardFunc) - - RegisterMsgProcessFunc("ReqGetExchangeCard", ReqGetExchangeCardFunc) - RegisterMsgProcessFunc("ReqRefuseExchange", ReqRefuseExchangeFunc) - RegisterMsgProcessFunc("ReqRequestCard", ReqRequestCardFunc) - RegisterMsgProcessFunc("ReqCompleteRequestCard", ReqCompleteRequestCardFunc) - RegisterMsgProcessFunc("ReqRefuseRequestCard", ReqRefuseRequestCardFunc) - RegisterMsgProcessFunc("ReqGetRequestCard", ReqGetRequestCardFunc) - - RegisterMsgProcessFunc("ReqDailyTaskData", ResDailyTaskDataFunc) - RegisterMsgProcessFunc("UpdateDailyTaskData", UpdateDailyTaskDataFunc) - RegisterMsgProcessFunc("RenewDailyTaskData", RenewDailyTaskDataFunc) - RegisterMsgProcessFunc("RenewWeekyActiveData", RenewWeekyActiveDataFunc) - - RegisterMsgProcessFunc("ReqMileStoneData", ResMileStoneDataFunc) - RegisterMsgProcessFunc("UpdateMileStoneData", UpdateMileStoneDataFunc) - RegisterMsgProcessFunc("RenewMileStoneData", RenewMileStoneDataFunc) - - RegisterMsgProcessFunc("ReqChampshipData", ReqChampshipDataFunc) - RegisterMsgProcessFunc("ReqChampshipAddScore", ReqChampshipAddScoreFunc) - RegisterMsgProcessFunc("ReqChampshipAddTime", ReqChampshipAddTimeFunc) - RegisterMsgProcessFunc("ReqPlayerChampshipData", ReqPlayerChampshipData) - - RegisterMsgProcessFunc("ReqAdPackData", ReqAdPackDataFunc) - RegisterMsgProcessFunc("ReqWatchAdPack", ReqWatchAdPackFunc) - - RegisterMsgProcessFunc("ReqPlayerSingleData", ReqPlayerSingleDataFunc) - RegisterMsgProcessFunc("ReqOpenNewbiePack", ReqOpenNewbiePackFunc) - RegisterMsgProcessFunc("ReqBuyNewbiePack", ReqBuyNewbiePackFunc) - RegisterMsgProcessFunc("ReqAddNoAdCnt", ReqAddNoAdCntFunc) - RegisterMsgProcessFunc("ReqAddWatchAdCnt", ReqAddWatchAdCntFunc) - - RegisterMsgProcessFunc("ReqPlayerPayData", ReqPlayerPayDataFunc) - RegisterMsgProcessFunc("ReqAddPay", ReqAddPayFunc) - - RegisterMsgProcessFunc("ReqFriendData", ReqFriendDataFunc) - RegisterMsgProcessFunc("ReqWillPlayerDetail", ReqWillPlayerDetailFunc) - RegisterMsgProcessFunc("ReqAddFriendData", ReqAddFriendDataFunc) - RegisterMsgProcessFunc("ReqAllAddFriendInfo", ReqAllAddFriendInfoFunc) - RegisterMsgProcessFunc("ReqAgreeFriendReq", ReqAgreeFriendReqFunc) - RegisterMsgProcessFunc("ReqRefuseFriendReq", ReqRefuseFriendReqFunc) - RegisterMsgProcessFunc("ReqDeleteFriend", ReqDeleteFriendFunc) - RegisterMsgProcessFunc("ReqAutoFBAddFriend", ReqAutoFBAddFriend) - RegisterMsgProcessFunc("ReqRecommendFriendList", ReqRecommendFriendList) - - RegisterMsgProcessFunc("ReqFriendTreasureData", ReqFriendTreasureData) - RegisterMsgProcessFunc("ReqUpdateFriendStar", ReqUpdateFriendStar) - - RegisterMsgProcessFunc("ReqPlayerProfileData", ReqPlayerProfileDataFunc) - RegisterMsgProcessFunc("ReqUpdatePlayerProfile", ReqUpdatePlayerProfileFunc) RegisterMsgProcessFunc("ReqPlayerBriefProfileData", ReqPlayerBriefProfileDataFunc) - RegisterMsgProcessFunc("ReqFriendEventData", ReqFriendEventDataFunc) - RegisterMsgProcessFunc("ReqUpdateFBPicURL", ReqUpdateFBPicURLFunc) - - RegisterMsgProcessFunc("ReqPlayerPetData", ReqPlayerPetData) - RegisterMsgProcessFunc("ReqUpdatePetProfile", ReqUpdatePetProfile) - - RegisterMsgProcessFunc("ReqPetHomeData", ReqPetHomeData) - RegisterMsgProcessFunc("ReqOpenOtherPetHome", ReqOpenOtherPetHome) - - RegisterMsgProcessFunc("ReqOpenSelfPet", ReqOpenSelfPet) - RegisterMsgProcessFunc("ReqPetHomeInterActST", ReqPetHomeInterActST) - RegisterMsgProcessFunc("ReqShiftVisitPet", ReqShiftVisitPet) - RegisterMsgProcessFunc("ReqCallBackPet", ReqCallBackPet) - RegisterMsgProcessFunc("ReqUnlockDecorate", ReqUnlockDecorate) - RegisterMsgProcessFunc("ReqSaveSelectDecorate", ReqSaveSelectDecorate) // 玩家 RegisterMsgProcessFunc("ReqUserInfo", ReqUserInfo) @@ -917,6 +661,7 @@ func (ad *GameLogic) RegisterNetWorkFunc() { RegisterMsgProcessFunc("ReqKv", ReqKv) // 保存客户端数据 // 棋盘 + RegisterMsgProcessFunc("ReqPlayerChessData", ReqPlayerChessDataFunc) RegisterMsgProcessFunc("UpdatePlayerChessData", UpdatePlayerChessDataFunc) // 更新棋盘数据 RegisterMsgProcessFunc("ReqSetEnergyMul", RegSetEneryFunc) //设置能量倍数 RegisterMsgProcessFunc("ReqChessEx", ReqChessEx) // 转换棋子 @@ -1032,80 +777,6 @@ func (ad *GameLogic) RegisterNetWorkFunc() { } -func (ad *GameLogic) ResPlayerEmitUnlockData(param []interface{}) { - data := (param[0].(*Player).GetIFGameData("PlayerEmitUnlockData")) - data.(*PlayerEmitUnlockData).ResPlayerEmitUnlockData(param[0].(*Player)) -} - -func (ad *GameLogic) broadcastInfoAllPlayer(Func string, data []byte) { - internal.Agents.Range(func(k, v interface{}) bool { - if v == ad.NotInitPlayer { - return true - } - ad.PackResInfo(k.(gate.Agent), Func, data) - return true - }) -} - -func (ad *GameLogic) JudgeIsActivity(c *cron.Cron, Id int) int { - activityCfg := gamedata.GetConfigByName("Activity") - record := activityCfg.Index(Id).(*gamedata.ActivityRecord) - - timeStamp := time.Now().Unix() - t := time.Unix(timeStamp, 0).Local() - nianchu := timeStamp - (int64)(t.Hour()*3600+t.Minute()*60+t.Second()) - int64((t.YearDay()-1)*3600*24) - - key := ad.m_CronEntryIDs[record.Id] - Schedule := c.Entry(key.StartCronID).Schedule - Next := Schedule.Next(time.Unix(nianchu, 0)) - - if timeStamp >= Next.Unix() && timeStamp <= Next.Unix()+int64(record.Duration) { - return 2 - } else { - if timeStamp < Next.Unix() { - return 1 - } - } - return 3 -} - -func (ad *GameLogic) CalcDeltaEndTime(c *cron.Cron, Id int) int32 { - activityCfg := gamedata.GetConfigByName("Activity") - record := activityCfg.Index(Id).(*gamedata.ActivityRecord) - - timeStamp := time.Now().Unix() - t := time.Unix(timeStamp, 0).Local() - nianchu := timeStamp - (int64)(t.Hour()*3600+t.Minute()*60+t.Second()) - int64((t.YearDay()-1)*3600*24) - - key := ad.m_CronEntryIDs[record.Id] - Schedule := c.Entry(key.StartCronID).Schedule - Next := Schedule.Next(time.Unix(nianchu, 0)) - return int32(Next.Unix() + int64(record.Duration) - timeStamp) -} - -func (ad *GameLogic) GetActiveParamById(Id int) *LimitActPeriod { - v, ok := ad.m_CronEntryIDs[Id] - if ok { - return v - } - return nil -} - -func (ad *GameLogic) CreateProfileManager() { - ad.MPlayerProfileManager = new(PlayerProfileManager) - ad.MPlayerProfileManager.InitManager() -} - -func (ad *GameLogic) CreateChamshipsMgr() { - ad.MChampshipsManager = new(NewChampshipsManager) - ad.MChampshipsManager.InitManager() -} - -func (ad *GameLogic) CreateCompensateMgr() { - ad.MOldPlayerCompensateMgr = new(OldPlayerCompensateMgr) - ad.MOldPlayerCompensateMgr.InitManager() -} - func (ad *GameLogic) CreateHttpManager() { go func() { diff --git a/src/server/game/Gm.go b/src/server/game/Gm.go index e38cd2c6..962c3e57 100644 --- a/src/server/game/Gm.go +++ b/src/server/game/Gm.go @@ -102,9 +102,11 @@ func ReqGmCommand(args []interface{}) error { G_GameLogicPtr.ChampshipMgrSend(&MsgMod.Msg{ Type: MsgMod.HANDLE_TYPE_CHAMPSHIP_ZERO, }) - case "debug": + case "resetEmitOrder": OrderMod := player.PlayMod.getOrderMod() OrderMod.EimtOrder = make(map[string]struct{}) + HandbookMod := player.PlayMod.getHandbookMod() + delete(HandbookMod.BookList, 125) } player.PlayMod.save() return nil diff --git a/src/server/game/HttpSvr.go b/src/server/game/HttpSvr.go index 95fdbf7c..205379df 100644 --- a/src/server/game/HttpSvr.go +++ b/src/server/game/HttpSvr.go @@ -4,11 +4,8 @@ import ( "fmt" "net/http" "server/conf" - "server/msg" // "server/msg" - "encoding/json" - "strconv" "github.com/gorilla/mux" ) @@ -36,23 +33,7 @@ func (p *HttpManager) InitPlayerProfileInfo() { } func (p *HttpManager) GetPlayerProfileInfo(w http.ResponseWriter, r *http.Request) { - vars := mux.Vars(r) - Id, ok := vars["Id"] - - if ok { - Uin, _ := strconv.Atoi(Id) - data := G_GameLogicPtr.MPlayerProfileManager.HttpReqPlayerBriefProfileData(int32(Uin)) - test := []*msg.ResPlayerBriefProfileData{data, data} - bytes, _ := json.Marshal(test) - - v := []*msg.ResPlayerBriefProfileData{} - json.Unmarshal(bytes, &v) - - fmt.Println("bytes Length:" + strconv.Itoa(len(v))) - fmt.Println("bytes Length:" + strconv.Itoa(len(v))) - w.Write(bytes) - } } func (p *HttpManager) AddFriend(w http.ResponseWriter, r *http.Request) { diff --git a/src/server/game/Model.go b/src/server/game/Model.go index e7005b06..71756e4d 100644 --- a/src/server/game/Model.go +++ b/src/server/game/Model.go @@ -1,13 +1,14 @@ package game type PlayerSimpleData struct { - Uid int - Name string - Avatar int - Level int - Face int - Decorate int - Login int64 - Loginout int64 - FaceBook string + Uid int + Name string + Avatar int + Level int + Face int + Decorate int + Login int64 + Loginout int64 + FaceBook string + FaceBookPic string } diff --git a/src/server/game/NewChampshipsManager.go b/src/server/game/NewChampshipsManager.go deleted file mode 100644 index ef69e1b6..00000000 --- a/src/server/game/NewChampshipsManager.go +++ /dev/null @@ -1,1314 +0,0 @@ -package game - -import ( - "fmt" - "math" - "math/rand" - "server/GoUtil" - "server/MergeConst" - "server/db" - "server/gamedata" - "server/msg" - "sort" - "strconv" - "strings" - "time" - - "github.com/robfig/cron/v3" - - "google.golang.org/protobuf/proto" -) - -type ChampshipsGroupData struct { - MChampshipPlayerScoreList []*msg.ChampshipsPlayerInfo - GroupId int32 - CurChampshipId int32 - ActiveGroup int32 -} - -type NewChampshipsManager struct { - MStatus int32 - MChampshipMap map[int32]*db.SqlChampionshipsStruct - MChampshipPlayerMap map[int32][]*msg.ChampshipsPlayerInfo - IsSettle int32 - IsLoadDB bool - MUpdateNotifyList []int32 - McronSave *cron.Cron - McronSaveID cron.EntryID - RobotCronID cron.EntryID - RobotCronID10s cron.EntryID - RobotCronID5m cron.EntryID - MPlayerBaseInfoMap map[int32]*db.ResPlayerBaseInfo - MWaitToRankList map[int32]*db.SqlPlayerChampionData - MAllPlayerRankList map[int32]*db.SqlPlayerChampionData - MChampshipsGroupData map[int32]*ChampshipsGroupData -} - -func (p *NewChampshipsManager) SaveDataFromDB(Key interface{}) bool { - - return true -} - -func (p *NewChampshipsManager) DeleteOutLineChampship(CurChampshipsId int32) { - sqlStr := "DELETE FROM t_championships_data WHERE CurChampshipsId = ?" - - for k, v := range p.MChampshipsGroupData { - if v.CurChampshipId == CurChampshipsId { - delete(p.MChampshipsGroupData, k) - } - } - result, err := db.SqlDb.Exec(sqlStr, CurChampshipsId) - if err != nil { - fmt.Printf("exec failed, err:%v\n", err) - return - } - affectedRows, err := result.RowsAffected() - if err != nil { - fmt.Printf("get affected failed, err:%v\n", err) - return - } else { - fmt.Printf("delete t_championships_data affectedRows:%d\n", affectedRows) - } -} - -func (p *NewChampshipsManager) DeleteUneffectPlayer(deleteIds []int32) { - sqlStr := "DELETE FROM t_player_baseinfo WHERE dwUin = ?" - - for i := 0; i < len(deleteIds); i++ { - _, err := db.SqlDb.Exec(sqlStr, deleteIds[i]) - if err != nil { - fmt.Printf("exec failed, err:%v\n", err) - } - - } -} - -func (p *NewChampshipsManager) GetFriendListId(id int32) []int32 { - - sqlStr := "SELECT * FROM t_player_Friend_Data WHERE dwUin = ?" - sqlStruck := db.SqlFriendStruct{} - ret := []int32{} - - if err := db.SqlDb.Get(&sqlStruck, sqlStr, id); err != nil { - - } else { - if sqlStruck.FriendList != "" { - arr := strings.Split(sqlStruck.FriendList, "_") - for i := 0; i < len(arr); i++ { - id, _ := strconv.ParseInt(arr[i], 10, 32) - ret = append(ret, int32(id)) - } - } - } - return ret -} - -func (p *NewChampshipsManager) ReqPlayerChampshipData(player *Player, buf []byte) { - req := &msg.ReqPlayerChampshipData{} - proto.Unmarshal(buf, req) - res := &msg.ResPlayerChampshipData{} - - res.Status = p.MStatus - res.IsSettle = p.IsSettle - res.CurChampshipsId = G_GameLogicPtr.M_SvrGlobal.CurChampshipsId - if res.Status > 0 { - p.EnterWaitRankList(player.M_DwUin, 0) - rankInfo := p.MAllPlayerRankList[player.M_DwUin] - res.IsEnterRank = rankInfo.IsEnterRank - res.CurScore = rankInfo.CurScore - res.CurMaxScore = rankInfo.CurMaxScore - res.CurRank = rankInfo.CurRank - res.TodayOpenTime = rankInfo.TodayOpenTime - res.EndTime = G_GameLogicPtr.M_SvrGlobal.StartChampshipsSvrTime + MergeConst.G_Champion_Duration - res.EndSettleTime = G_GameLogicPtr.M_SvrGlobal.StartChampshipsSvrTime - MergeConst.G_Champion_Start_Offset + MergeConst.G_Champion_settlement_Duration - res.ChampshipsGroupID = rankInfo.ChampshipsGroupID - res.LastChampGroupID = rankInfo.LastChampGroupID - } else { - sqlStr := "SELECT * FROM t_Player_championships_data WHERE dwUin = ?" - rankInfo := &db.SqlPlayerChampionData{} - rankInfo.DwUin = player.M_DwUin - if err := db.SqlDb.Get(rankInfo, sqlStr, player.M_DwUin); err != nil { - - } else { - - } - res.ChampshipsGroupID = rankInfo.ChampshipsGroupID - res.LastChampGroupID = rankInfo.ChampshipsGroupID - } - - agent := player.GetAgentByPlayer() - data, _ := proto.Marshal(res) - G_getGameLogic().PackResInfo(agent, "ResPlayerChampshipData", data) -} - -func (p *NewChampshipsManager) EnterWaitRankList(dwUin int32, Score int32) bool { - sqlStr := "SELECT * FROM t_Player_championships_data WHERE dwUin = ?" - sqlStruck := &db.SqlPlayerChampionData{} - sqlStruck.DwUin = dwUin - rankInfo, ok := p.MAllPlayerRankList[dwUin] - - timeStamp := time.Now().Unix() - t := time.Unix(timeStamp, 0).Local() - zero := timeStamp - (int64)(t.Hour()*3600+t.Minute()*60+t.Second()) - OpenTime := zero + MergeConst.G_Champion_Start_Offset - - if ok { - LastScore := rankInfo.CurScore - IsEnterRank := rankInfo.IsEnterRank - if rankInfo.TodayOpenTime == int32(OpenTime) { - rankInfo.CurScore = rankInfo.CurScore + Score - - } else { //第二天开始 - rankInfo.TodayOpenTime = int32(OpenTime) - rankInfo.CurScore = Score - rankInfo.IsEnterRank = 0 - rankInfo.LastChampGroupID = rankInfo.ChampshipsGroupID - if IsEnterRank == 1 { - newStr := fmt.Sprintf("%d,%d,%d", rankInfo.CurRank, LastScore, rankInfo.CurMaxScore) - if rankInfo.HistoryData != "" { - units := strings.Split(rankInfo.HistoryData, ";") - temp := []string{} - - if len(units) >= 3 { - - for i := 1; i < len(units); i++ { - temp = append(temp, units[i]) - } - temp = append(temp, newStr) - rankInfo.HistoryData = strings.Join(temp, ";") - } else { - temp = append(temp, rankInfo.HistoryData) - temp = append(temp, newStr) - rankInfo.HistoryData = strings.Join(temp, ";") - } - } else { - rankInfo.HistoryData = newStr - } - - } - rankInfo.CurMaxScore = MergeConst.G_Champion_Max_Score - - } - - if rankInfo.CurScore >= MergeConst.G_Champion_Unlock_Score && rankInfo.IsEnterRank == 0 { - p.MWaitToRankList[dwUin] = rankInfo - } - if rankInfo.CurScore >= rankInfo.MaxHistoryScore { - rankInfo.MaxHistoryScore = rankInfo.CurScore - } - db.FormatAllMemUpdateDb(rankInfo, "t_Player_championships_data", "dwUin") - return rankInfo.IsEnterRank == 1 - - } else { - IsUpdate := false - if err := db.SqlDb.Get(sqlStruck, sqlStr, dwUin); err != nil { - IsUpdate = false - - } else { - IsUpdate = true - } - LastScore := sqlStruck.CurScore - IsEnterRank := sqlStruck.IsEnterRank - - if sqlStruck.TodayOpenTime == int32(OpenTime) { - sqlStruck.CurScore = sqlStruck.CurScore + Score - - } else { - sqlStruck.TodayOpenTime = int32(OpenTime) - sqlStruck.CurScore = Score - sqlStruck.IsEnterRank = 0 - sqlStruck.LastChampGroupID = sqlStruck.ChampshipsGroupID - if IsEnterRank == 1 { - newStr := fmt.Sprintf("%d,%d,%d", sqlStruck.CurRank, LastScore, sqlStruck.CurMaxScore) - if sqlStruck.HistoryData != "" { - units := strings.Split(sqlStruck.HistoryData, ";") - temp := []string{} - - if len(units) >= 3 { - - for i := 1; i < len(units); i++ { - temp = append(temp, units[i]) - } - temp = append(temp, newStr) - sqlStruck.HistoryData = strings.Join(temp, ";") - } else { - temp = append(temp, sqlStruck.HistoryData) - temp = append(temp, newStr) - sqlStruck.HistoryData = strings.Join(temp, ";") - } - } else { - sqlStruck.HistoryData = newStr - } - - } - - sqlStruck.CurMaxScore = MergeConst.G_Champion_Max_Score - } - p.MAllPlayerRankList[dwUin] = sqlStruck - - if sqlStruck.CurScore >= MergeConst.G_Champion_Unlock_Score && sqlStruck.IsEnterRank == 0 { - p.MWaitToRankList[dwUin] = sqlStruck - } - if sqlStruck.CurScore >= sqlStruck.MaxHistoryScore { - sqlStruck.MaxHistoryScore = sqlStruck.CurScore - } - if IsUpdate { - db.FormatAllMemUpdateDb(sqlStruck, "t_Player_championships_data", "dwUin") - } else { - db.FormatAllMemInsertDb(sqlStruck, "t_Player_championships_data") - } - return sqlStruck.IsEnterRank == 1 - } - -} - -func (p *NewChampshipsManager) ScoreGroup(LastScore int32, HistoryScore int32) int { - ChampshipScoreReward := gamedata.GetConfigByName("ChampshipScoreReward") - var LastScoreId int = 0 - var HistoryScoreId int = 0 - lenCnt := ChampshipScoreReward.NumRecord() - for i := 0; i < lenCnt; i++ { - record := ChampshipScoreReward.Record(i).(*gamedata.ChampshipScoreReward) - if i < lenCnt-1 { - recordNext := ChampshipScoreReward.Record(i + 1).(*gamedata.ChampshipScoreReward) - if int(LastScore) >= record.ScoreNeed && int(LastScore) < recordNext.ScoreNeed { - LastScoreId = record.Id - } - if int(HistoryScore) >= record.ScoreNeed && int(HistoryScore) < recordNext.ScoreNeed { - HistoryScoreId = record.Id - } - } - } - record := ChampshipScoreReward.Record(lenCnt - 1).(*gamedata.ChampshipScoreReward) - if int(LastScore) >= record.ScoreNeed { - LastScoreId = record.Id - } - if int(HistoryScore) >= record.ScoreNeed { - HistoryScoreId = record.Id - } - rate := []int{3, 6, 10, 13, 16, 19, 22, 26, 29} - var n int = 0 - var h int = 0 - - for i := 0; i < len(rate); i++ { - if LastScoreId <= rate[i] && n == 0 { - n = i + 1 - } - if HistoryScoreId <= rate[i] && h == 0 { - h = i + 1 - } - } - if n == 0 { - n = len(rate) + 1 - } - if h == 0 { - h = len(rate) + 1 - } - if n >= h { - return n - } else { - max := math.Max(float64(n-1), float64(h-2)) - ret := math.Max(max, 1) - return int(ret) - } - -} - -func (p *NewChampshipsManager) InitAIAddScore(Ai int32, energy int32) int32 { - var addScore int32 = 0 - ran := rand.Intn(2) + 1 - if Ai == 1 { - Score := float64(energy) / 10.0 * float64(1.0/30) - if ran == 1 { - addScore = int32(math.Ceil(Score)) - } else { - addScore = int32(math.Floor(Score)) - } - } else if Ai == 2 { - Score := float64(energy) / 10.0 * 0.667 * float64(1.0/60) - if ran == 1 { - addScore = int32(math.Ceil(Score)) - } else { - addScore = int32(math.Floor(Score)) - } - } else if Ai == 3 { - timeStamp := time.Now().Unix() - t := time.Unix(timeStamp, 0).Local() - zero := timeStamp - (int64)(t.Hour()*3600+t.Minute()*60+t.Second()) + 3600*24 - - Score := float64(energy) / 10.0 * float64(60.0/(zero-timeStamp)) - Score = math.Min(Score, float64(energy)/10.0) - if ran == 1 { - addScore = int32(math.Ceil(Score)) - } else { - addScore = int32(math.Floor(Score)) - } - - } else { - addScore = 0 - } - - return addScore -} - -func (p *NewChampshipsManager) Grouping(playerinfos []*db.SqlPlayerChampionData, GroupActive int) { - temp := db.SqlChampionshipsStruct{} - temp.CurChampshipsId = G_GameLogicPtr.M_SvrGlobal.CurChampshipsId - temp.GroupActive = int32(GroupActive) - CSPlayerInfo := []*msg.ChampshipsPlayerInfo{} - strr := []string{} - for i := 0; i < len(playerinfos); i++ { - dwUin := playerinfos[i].DwUin - - playerinfo := &msg.ChampshipsPlayerInfo{} - playerinfo.DwUin = dwUin - playerinfo.IsGet = 0 - playerinfo.IsPlayer = 1 - playerinfo.Score = playerinfos[i].CurScore - playerinfo.Times = 1 - playerinfo.AIEnum = 0 - playerinfo.CurChampshipsId = G_GameLogicPtr.M_SvrGlobal.CurChampshipsId - - res := strconv.Itoa(int(dwUin)) + "_" + "1" + "_" + strconv.Itoa(int(playerinfo.Score)) + "_" + "0" + "_" + "1" + "_" + strconv.Itoa(int(G_GameLogicPtr.M_SvrGlobal.CurChampshipsId)) + "_0" + "_0" + "_name" - strr = append(strr, res) - - CSPlayerInfo = append(CSPlayerInfo, playerinfo) - playerinfos[i].IsEnterRank = 1 - } - - StartRobotUin := 200000 - names := p.RandomGetRobotName(MergeConst.G_Champion_People_Cnt - int(len(playerinfos))) - - var Datamap map[int][]int = make(map[int][]int) - Datamap[1] = []int{-1, 5, 0, 6, 1, 1, 1, 1, 0, 0, 0} - Datamap[2] = []int{-1, -1, 0, 6, 1, 1, 1, 1, 0, 0, 0} - Datamap[3] = []int{-1, -1, -1, 6, 1, 1, 1, 1, 0, 0, 0} - Datamap[4] = []int{-1, -1, -1, -1, 1, 1, 1, 1, 0, 0, 0} - Datamap[5] = []int{-1, -1, -1, -1, -1, 1, 1, 1, 0, 0, 0} - Datamap[6] = []int{-1, -1, -1, -1, -1, -1, 1, 1, 0, 0, 0} - Datamap[7] = []int{-1, -1, -1, -1, -1, -1, -1, 1, 0, 0, 0} - Datamap[8] = []int{-1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0} - Datamap[9] = []int{-1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0} - Datamap[10] = []int{-1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0} - Datamap[11] = []int{-1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0} - - GetCalcPlayerCnt := func(key int) (int, int) { - PlayerList := Datamap[key] - cnt := 0 - cnt1 := 0 - for i := len(PlayerList) - 1; i >= 0; i-- { - if PlayerList[i] == -1 { - cnt++ - } else { - cnt1 = cnt1 + PlayerList[i] - } - } - return cnt, cnt1 - } - - FliterPlayer := func(key int, PlayerI int, AllCnt int) int { - srcData := Datamap[key] - copyData := make([]int, len(srcData)) - copy(copyData, srcData) - Cnt := 0 - Calc, ns := GetCalcPlayerCnt(key) - remain := AllCnt - ns - for i := len(srcData) - 1; i >= 0; i-- { - if srcData[i] == -1 { - copyData[i] = remain / Calc - } - } - for i := len(copyData) - 1; i >= 0; i-- { - if copyData[i] > 0 { - Cnt = Cnt + copyData[i] - if Cnt >= PlayerI { - return i + 1 - } - } - } - return 1 - } - - var erengeMap map[int][]int = make(map[int][]int) - erengeMap[1] = []int{20, 240} - erengeMap[2] = []int{241, 580} - erengeMap[3] = []int{581, 1730} - erengeMap[4] = []int{1731, 2780} - erengeMap[5] = []int{2781, 4630} - erengeMap[6] = []int{4631, 7530} - erengeMap[7] = []int{7531, 12180} - erengeMap[8] = []int{12181, 21680} - erengeMap[9] = []int{21681, 35130} - erengeMap[10] = []int{35131, 64980} - erengeMap[11] = []int{64981, 71478} - - CurIndex := 0 - for j := int(len(playerinfos)); j < MergeConst.G_Champion_People_Cnt; j++ { - StartRobotUin = StartRobotUin + 1 - dwUin := StartRobotUin - var enum int = 0 - ran := rand.Intn(100) + 1 - if ran <= 25 { - enum = 1 - } else if ran <= 75 { - enum = 2 - } else { - enum = 3 - } - CurIndex += 1 - EnergeIndex := FliterPlayer(int(GroupActive), CurIndex, MergeConst.G_Champion_People_Cnt-len(playerinfos)) - energy := rand.Intn(erengeMap[EnergeIndex][1]-erengeMap[EnergeIndex][0]) + erengeMap[EnergeIndex][0] - - playerinfo := &msg.ChampshipsPlayerInfo{} - playerinfo.DwUin = int32(dwUin) - playerinfo.IsGet = int32(energy) - playerinfo.IsPlayer = 0 - playerinfo.Score = 0 - playerinfo.Times = int32(time.Now().Unix()) - playerinfo.AIEnum = int32(enum) - playerinfo.Score = p.InitAIAddScore(int32(enum), int32(energy)) - - playerinfo.CurChampshipsId = G_GameLogicPtr.M_SvrGlobal.CurChampshipsId - playerinfo.BaseScore = playerinfo.Score - playerinfo.Name = names[j-int(len(playerinfos))] - res := strconv.Itoa(int(dwUin)) + "_" + "0" + "_" + strconv.Itoa(int(playerinfo.Score)) + "_" + strconv.Itoa(int(playerinfo.IsGet)) + "_" + strconv.Itoa(int(playerinfo.Times)) + "_" + strconv.Itoa(int(G_GameLogicPtr.M_SvrGlobal.CurChampshipsId)) + "_" + strconv.Itoa(enum) + "_" + strconv.Itoa(int(playerinfo.BaseScore)) + "_" + names[j-int(len(playerinfos))] - strr = append(strr, res) - - CSPlayerInfo = append(CSPlayerInfo, playerinfo) - } - - sort.Slice(CSPlayerInfo, func(i, j int) bool { return CSPlayerInfo[i].Score > CSPlayerInfo[j].Score }) - temp.GroupRankData = strings.Join(strr, ";") - insertId, _ := db.FormatAllMemInsertDb(&temp, "t_championships_data") - - p.MChampshipsGroupData[int32(insertId)] = &ChampshipsGroupData{} - p.MChampshipsGroupData[int32(insertId)].MChampshipPlayerScoreList = CSPlayerInfo - p.MChampshipsGroupData[int32(insertId)].CurChampshipId = G_GameLogicPtr.M_SvrGlobal.CurChampshipsId - p.MChampshipsGroupData[int32(insertId)].GroupId = int32(insertId) - p.MChampshipsGroupData[int32(insertId)].ActiveGroup = int32(GroupActive) - for j := 0; j < len(playerinfos); j++ { - dwUin := playerinfos[j].DwUin - player, ok := G_GameLogicPtr.M_Players[dwUin] - if ok { - p.NotifyNewChampshipRank(player, int32(insertId), playerinfos[j], true) - } else { - player = G_GameLogicPtr.FindOfflinePlayer(dwUin) - if player != nil { - p.NotifyNewChampshipRank(player, int32(insertId), playerinfos[j], false) - } else { - p.NotifyNewChampshipRank(player, int32(insertId), playerinfos[j], false) - } - } - } - // p.MUpdateNotifyList = append(p.MUpdateNotifyList, int32(insertId)) - -} - -func (p *NewChampshipsManager) NotifyNewChampshipRank(player *Player, insertId int32, rankinfo *db.SqlPlayerChampionData, isNotify bool) { - - rankinfo.LastChampGroupID = rankinfo.ChampshipsGroupID - rankinfo.ChampshipsGroupID = insertId - - if isNotify { - notify := &msg.NotifyNewChampshipRank{} - notify.LastChampGroupID = rankinfo.LastChampGroupID - notify.ChampshipsGroupID = insertId - notify.IsEnterRank = 1 - notify.GroupRankDataList = p.MChampshipsGroupData[int32(insertId)].MChampshipPlayerScoreList - agent := player.GetAgentByPlayer() - data, _ := proto.Marshal(notify) - G_getGameLogic().PackResInfo(agent, "NotifyNewChampshipRank", data) - } - - db.FormatAllMemUpdateDb(rankinfo, "t_Player_championships_data", "dwUin") -} - -func (p *NewChampshipsManager) NewPlayerEnterRank(args []interface{}) { - - Group := make(map[int][]*db.SqlPlayerChampionData) - - // for _, v := range p.MWaitToRankList { - // units := strings.Split(v.HistoryData, ";") - // active := 0 - // RankRate := 0 - // if v.HistoryData != "" { - // var temp float64 = 0.0 - // for i := 0; i < len(units); i++ { - // items := strings.Split(units[i], ",") - // s, _ := strconv.Atoi(items[1]) - // s1, _ := strconv.Atoi(items[2]) - - // temp += math.Min(float64(s)/float64(s1), 1.0) - // if i == len(units)-1 { - // r, _ := strconv.Atoi(items[0]) - // RankRate = r - // } - // } - - // a1 := temp / float64(len(units)) - // if a1 <= 0.01 { - // active = 1 - // } else if a1 <= 0.035 { - // active = 2 - // } else if a1 <= 0.07 { - // active = 3 - // } else if a1 <= 0.135 { - // active = 4 - // } else if a1 <= 0.23 { - // active = 5 - // } else if a1 <= 0.37 { - // active = 6 - // } else if a1 <= 0.5 { - // active = 7 - // } else if a1 <= 0.63 { - // active = 8 - // } else if a1 <= 0.8 { - // active = 9 - // } else { - // active = 10 - // } - // b1 := float64(RankRate) / float64(MergeConst.G_Champion_People_Cnt) - // if b1 <= 0.02 { - // active = active + 2 - // } else if a1 <= 0.06 { - // active = active + 1 - // } else if a1 <= 0.2 { - // active = active + 0 - // } else if a1 <= 0.5 { - // active = active - 1 - // } else { - // active = active - 2 - // } - // active = int(math.Min(float64(active), 10)) - // active = int(math.Max(float64(active), 1)) - // } else { - // active = 1 - // } - // _, ok := Group[active] - // if ok { - // Group[active] = append(Group[active], v) - // } else { - // Group[active] = []*db.SqlPlayerChampionData{} - // Group[active] = append(Group[active], v) - // } - // } - - // ScoreGroup - for _, v := range p.MWaitToRankList { - units := strings.Split(v.HistoryData, ";") - active := 0 - if v.HistoryData != "" { - var LastScore int = 0 - items := strings.Split(units[len(units)-1], ",") - s, _ := strconv.Atoi(items[1]) - LastScore = s - active = p.ScoreGroup(int32(LastScore), v.MaxHistoryScore) - } else { - active = 1 - } - _, ok := Group[active] - if ok { - Group[active] = append(Group[active], v) - } else { - Group[active] = []*db.SqlPlayerChampionData{} - Group[active] = append(Group[active], v) - } - } - - activeIds := []int{} - for k := range Group { - activeIds = append(activeIds, k) - } - sort.Slice(activeIds, func(i, j int) bool { - return activeIds[i] < activeIds[j] - }) - - unitPlayerCnt := int(math.Ceil(float64(MergeConst.G_Champion_People_Cnt) * 0.33)) - - for i := 0; i < len(activeIds); i++ { - temp := Group[activeIds[i]] - mod := len(temp) % unitPlayerCnt - allG := len(temp) / unitPlayerCnt - - if allG == 0 { - if i < len(activeIds)-1 { - Group[activeIds[i+1]] = append(Group[activeIds[i+1]], temp...) - } else { - if len(temp) > 0 { - p.Grouping(temp, activeIds[i]) - } - } - } else { - for m := 0; m < allG; m++ { - grouping := temp[unitPlayerCnt*m : unitPlayerCnt*(m+1)] - if mod > 0 { - if mod <= 5 { - cnt := mod / allG - remain := mod % allG - if m < remain { - grouping = append(grouping, temp[allG*unitPlayerCnt+m*(cnt+1):allG*unitPlayerCnt+m*(cnt+1)+cnt+1]...) - } else { - grouping = append(grouping, temp[allG*unitPlayerCnt+remain*(cnt+1)+(m-remain)*cnt:allG*unitPlayerCnt+remain*(cnt+1)+(m-remain)*cnt+cnt]...) - } - } - } - - p.Grouping(grouping, activeIds[i]) - } - if mod > 5 { - grouping := temp[unitPlayerCnt*allG:] - p.Grouping(grouping, activeIds[i]) - } - } - - } - - p.MWaitToRankList = make(map[int32]*db.SqlPlayerChampionData) -} - -func (p *NewChampshipsManager) OpenNewChampShip(args []interface{}) { - - G_GameLogicPtr.M_SvrGlobal.CurChampshipsId = G_GameLogicPtr.M_SvrGlobal.CurChampshipsId + 1 - G_GameLogicPtr.M_SvrGlobal.StartChampshipsSvrTime = args[0].(int32) - G_GameLogicPtr.M_SvrGlobal.WaitToRank = "" - G_GameLogicPtr.M_SvrGlobal.InsertChampshipsSvrTime = 0 - p.MUpdateNotifyList = []int32{} - p.MWaitToRankList = make(map[int32]*db.SqlPlayerChampionData) - p.MStatus = 1 - p.IsLoadDB = true - - notify := &msg.NotifyChampshipOpen{} - notify.CurChampshipsId = G_GameLogicPtr.M_SvrGlobal.CurChampshipsId - data, _ := proto.Marshal(notify) - G_getGameLogic().broadcastInfoAllPlayer("NotifyChampshipOpen", data) - - db.FormatAllMemUpdateDb(&G_GameLogicPtr.M_SvrGlobal, "t_server_global_data", "Id") - -} - -func (p *NewChampshipsManager) OpenChampShipTimes(args []interface{}) { - p.MStatus = 2 - notify := &msg.NotifyChampshipTimesOpen{} - notify.CurChampshipsId = G_GameLogicPtr.M_SvrGlobal.CurChampshipsId - data, _ := proto.Marshal(notify) - G_GameLogicPtr.broadcastInfoAllPlayer("NotifyChampshipTimesOpen", data) -} - -func (p *NewChampshipsManager) CloseChampShipTimes(args []interface{}) { - p.MStatus = 1 - notify := &msg.NotifyChampshipTimesClose{} - notify.CurChampshipsId = G_GameLogicPtr.M_SvrGlobal.CurChampshipsId - data, _ := proto.Marshal(notify) - G_GameLogicPtr.broadcastInfoAllPlayer("NotifyChampshipTimesClose", data) -} - -func (p *NewChampshipsManager) Notify_Clock_Tick_Sec(args []interface{}) { - timeStamp := args[0].(int64) - t := time.Unix(timeStamp, 0).Local() - zero := timeStamp - (int64)(t.Hour()*3600+t.Minute()*60+t.Second()) - OpenTime := zero + MergeConst.G_Champion_Start_Offset - OpenTimesTime := zero + MergeConst.G_Champion_Start_Effect_Time - CloseTimesTime := zero + MergeConst.G_Champion_Start_Effect_Time + MergeConst.G_Champion_Start_Effect_Durtion - DeleteLastTimesTime := zero + MergeConst.G_Champion_settlement_Duration - if G_GameLogicPtr.M_SvrGlobal.StartChampshipsSvrTime < int32(OpenTime) { //今日没有开启 - if timeStamp >= OpenTime { //开启 - GoUtil.CallEvent(MergeConst.Notify_Champion_Renew, []interface{}{int32(OpenTime)}) - } else { - //开启时间未到 - if p.MStatus == 1 { - GoUtil.CallEvent(MergeConst.Notify_EndChampShip, []interface{}{int32(OpenTime)}) - } - - } - } else { - if p.MStatus == 0 { - p.MStatus = 1 - } - - if !p.IsLoadDB { - p.LoadDbDataByGroupId(G_GameLogicPtr.M_SvrGlobal.CurChampshipsId) - if G_GameLogicPtr.M_SvrGlobal.LastChampshipsId > 0 { - p.LoadDbDataByGroupId(G_GameLogicPtr.M_SvrGlobal.LastChampshipsId) - } - p.IsLoadDB = true - } - } - - if p.MStatus == 1 { - if timeStamp >= OpenTimesTime && timeStamp <= CloseTimesTime { - GoUtil.CallEvent(MergeConst.Notify_OpenChampShipTimes, []interface{}{int32(OpenTime)}) - } - - } - if p.MStatus == 2 { - if timeStamp > CloseTimesTime { - GoUtil.CallEvent(MergeConst.Notify_CloseChampShipTimes, []interface{}{int32(OpenTime)}) - } - } - if p.IsSettle == 0 { - if timeStamp <= DeleteLastTimesTime { - p.IsSettle = 1 - } else { - if G_GameLogicPtr.M_SvrGlobal.LastChampshipsId > 0 { - p.DeleteOutLineChampship(G_GameLogicPtr.M_SvrGlobal.LastChampshipsId) - G_GameLogicPtr.M_SvrGlobal.LastChampshipsId = 0 - db.FormatAllMemUpdateDb(&G_GameLogicPtr.M_SvrGlobal, "t_server_global_data", "Id") - } - } - } - if p.IsSettle == 1 { - if timeStamp > DeleteLastTimesTime { - notify := &msg.NotifyChampshipSettleClose{} - notify.LastChampshipsId = G_GameLogicPtr.M_SvrGlobal.LastChampshipsId - data, _ := proto.Marshal(notify) - G_GameLogicPtr.broadcastInfoAllPlayer("NotifyChampshipSettleClose", data) - p.IsSettle = 0 - if G_GameLogicPtr.M_SvrGlobal.LastChampshipsId > 0 { - p.DeleteOutLineChampship(G_GameLogicPtr.M_SvrGlobal.LastChampshipsId) - G_GameLogicPtr.M_SvrGlobal.LastChampshipsId = 0 - db.FormatAllMemUpdateDb(&G_GameLogicPtr.M_SvrGlobal, "t_server_global_data", "Id") - } - - } - } - if p.MStatus == 1 && timeStamp >= OpenTime+1800 && timeStamp >= int64(G_GameLogicPtr.M_SvrGlobal.InsertChampshipsSvrTime)+1800 { - index := 1 - for { - CurTime := OpenTime + int64(1800*index) - NextTime := OpenTime + int64(1800*(index+1)) - if timeStamp >= CurTime && timeStamp < NextTime { - G_GameLogicPtr.M_SvrGlobal.InsertChampshipsSvrTime = int32(CurTime) - db.FormatAllMemUpdateDb(&G_GameLogicPtr.M_SvrGlobal, "t_server_global_data", "Id") - GoUtil.CallEvent(MergeConst.Notify_Champion_Enter_Rank, []interface{}{int32(CurTime)}) - break - } - index++ - } - } - -} - -func (p *NewChampshipsManager) EndChampShip(args []interface{}) { - p.MStatus = 0 - G_GameLogicPtr.M_SvrGlobal.LastChampshipsId = G_GameLogicPtr.M_SvrGlobal.CurChampshipsId - db.FormatAllMemUpdateDb(&G_GameLogicPtr.M_SvrGlobal, "t_server_global_data", "Id") - - notify := &msg.NotifyChampshipSettleOpen{} - notify.LastChampshipsId = G_GameLogicPtr.M_SvrGlobal.LastChampshipsId - data, _ := proto.Marshal(notify) - G_GameLogicPtr.broadcastInfoAllPlayer("NotifyChampshipSettleOpen", data) - - notify1 := &msg.NotifyChampshipClose{} - notify1.CurChampshipsId = G_GameLogicPtr.M_SvrGlobal.CurChampshipsId - data1, _ := proto.Marshal(notify1) - G_GameLogicPtr.broadcastInfoAllPlayer("NotifyChampshipClose", data1) - - p.NotifyRenewChampshipData() -} - -func (p *NewChampshipsManager) NotifyRenewChampshipData() { - - for i := 0; i < len(p.MUpdateNotifyList); i++ { - groupid := p.MUpdateNotifyList[i] - GroupData, ok := p.MChampshipsGroupData[groupid] - if ok { - playerlist := GroupData.MChampshipPlayerScoreList - for j := 0; j < len(playerlist); j++ { - if playerlist[j].IsPlayer == 1 { - dwUin := playerlist[j].DwUin - player, ok1 := G_GameLogicPtr.M_Players[dwUin] - if ok1 { - agent := player.GetAgentByPlayer() - notify := &msg.NotifyUpdateChampshipRank{} - notify.ChampshipsGroupID = groupid - notify.GroupRankDataList = playerlist - data, _ := proto.Marshal(notify) - G_getGameLogic().PackResInfo(agent, "NotifyUpdateChampshipRank", data) - } else { - - } - } - } - } - } - p.MUpdateNotifyList = p.MUpdateNotifyList[0:0] -} - -func (p *NewChampshipsManager) ReqChampshipData(player *Player, buf []byte) { - req := &msg.ReqChampshipData{} - proto.Unmarshal(buf, req) - res := &msg.ResChampshipData{} - _, ok := p.MChampshipsGroupData[req.ChampshipsGroupID] - if ok { - res.GroupRankDataList = p.MChampshipsGroupData[req.ChampshipsGroupID].MChampshipPlayerScoreList - } - res.ChampshipsGroupID = req.ChampshipsGroupID - res.Status = p.MStatus - res.IsSettle = p.IsSettle - res.EndTime = G_GameLogicPtr.M_SvrGlobal.StartChampshipsSvrTime + MergeConst.G_Champion_Duration - res.EndSettleTime = G_GameLogicPtr.M_SvrGlobal.StartChampshipsSvrTime - MergeConst.G_Champion_Start_Offset + MergeConst.G_Champion_Start_Effect_Time + MergeConst.G_Champion_Start_Effect_Durtion - agent := player.GetAgentByPlayer() - data, _ := proto.Marshal(res) - G_getGameLogic().PackResInfo(agent, "ResChampshipData", data) -} - -func (p *NewChampshipsManager) InitManager() { - GoUtil.RegisterEvent(MergeConst.Notify_Champion_Renew, p.OpenNewChampShip, p) - GoUtil.RegisterEvent(MergeConst.Notify_Champion_Enter_Rank, p.NewPlayerEnterRank, p) - GoUtil.RegisterEvent(MergeConst.Notify_OpenChampShipTimes, p.OpenChampShipTimes, p) - GoUtil.RegisterEvent(MergeConst.Notify_CloseChampShipTimes, p.CloseChampShipTimes, p) - GoUtil.RegisterEvent(MergeConst.Notify_EndChampShip, p.EndChampShip, p) - GoUtil.RegisterEvent(MergeConst.Notify_Clock_Tick_Sec, p.Notify_Clock_Tick_Sec, p) - p.MChampshipMap = make(map[int32]*db.SqlChampionshipsStruct) - p.MChampshipPlayerMap = make(map[int32][]*msg.ChampshipsPlayerInfo) - p.MChampshipsGroupData = make(map[int32]*ChampshipsGroupData) - - p.MStatus = 0 - p.IsSettle = 0 - p.IsLoadDB = false - p.MUpdateNotifyList = []int32{} - p.MWaitToRankList = make(map[int32]*db.SqlPlayerChampionData) - p.MAllPlayerRankList = make(map[int32]*db.SqlPlayerChampionData) - p.McronSave = cron.New() - p.McronSaveID, _ = p.McronSave.AddFunc("@every 70s", func() { - if p.MStatus > 0 { - p.NotifyRenewChampshipData() - } - }) - p.RobotCronID, _ = p.McronSave.AddFunc("@every 1m", func() { - if p.MStatus > 0 { - p.AIScoreGrowth1m() - } - - }) - - p.RobotCronID5m, _ = p.McronSave.AddFunc("@every 5m", func() { - // p.ModifyBaseAIScore5m() - }) - - p.RobotCronID10s, _ = p.McronSave.AddFunc("@every 30m", func() { - if p.MStatus > 0 { - // p.RobotIntervalAddScore30m() - } - }) - p.McronSave.Start() -} - -func (p *NewChampshipsManager) GetModifyScoreCnt(RelativeScore int32) int { - var cnt int = 0 - if float64(RelativeScore)/float64(MergeConst.G_Champion_Max_Score) < 0.02 { - cnt = 6 - } else if float64(RelativeScore)/float64(MergeConst.G_Champion_Max_Score) < 0.0265 { - cnt = 5 - } else if float64(RelativeScore)/float64(MergeConst.G_Champion_Max_Score) < 0.0345 { - cnt = 4 - } else if float64(RelativeScore)/float64(MergeConst.G_Champion_Max_Score) < 0.0542 { - cnt = 3 - } else if float64(RelativeScore)/float64(MergeConst.G_Champion_Max_Score) < 0.0865 { - cnt = 2 - } else if float64(RelativeScore)/float64(MergeConst.G_Champion_Max_Score) < 0.194 { - cnt = 1 - } - return cnt -} - -func (p *NewChampshipsManager) ModifyBaseAIScore5m() { - needToUpdateDb := []int32{} - for k, v := range p.MChampshipsGroupData { - - if v.CurChampshipId != G_GameLogicPtr.M_SvrGlobal.CurChampshipsId { - continue - } - sort.Slice(v.MChampshipPlayerScoreList, func(i, j int) bool { - return v.MChampshipPlayerScoreList[i].Score > v.MChampshipPlayerScoreList[j].Score - }) - var AddCoreCnt int = 0 - var CurCoreCnt int = 0 - var MaxScore int32 = 0 - - for i := 0; i < len(v.MChampshipPlayerScoreList); i++ { - if v.MChampshipPlayerScoreList[i].IsPlayer == 1 { - AddCoreCnt = p.GetModifyScoreCnt(v.MChampshipPlayerScoreList[i].Score) - MaxScore = v.MChampshipPlayerScoreList[i].Score - - break - } - } - isUpdate := false - if AddCoreCnt > 0 { - for i := 0; i < len(v.MChampshipPlayerScoreList); i++ { - if v.MChampshipPlayerScoreList[i].IsPlayer == 0 { - CurCoreCnt++ - if CurCoreCnt > AddCoreCnt { - break - } - del := v.MChampshipPlayerScoreList[i].Score - v.MChampshipPlayerScoreList[i].BaseScore - - if del >= 0 && v.MChampshipPlayerScoreList[i].Score < MaxScore { - v.MChampshipPlayerScoreList[i].BaseScore = MaxScore - v.MChampshipPlayerScoreList[i].Score = MaxScore + del + rand.Int31n(20) - isUpdate = true - } - } - } - if isUpdate { - sort.Slice(v.MChampshipPlayerScoreList, func(i, j int) bool { - return v.MChampshipPlayerScoreList[i].Score > v.MChampshipPlayerScoreList[j].Score - }) - p.SaveScoreDataByID(v.MChampshipPlayerScoreList) - isAdd := false - for i := 0; i < len(p.MUpdateNotifyList); i++ { - if p.MUpdateNotifyList[i] == k { - isAdd = true - break - } - } - if !isAdd { - p.MUpdateNotifyList = append(p.MUpdateNotifyList, k) - } - needToUpdateDb = append(needToUpdateDb, k) - } - - } - } - for i := 0; i < len(needToUpdateDb); i++ { - p.SaveDbDataByGroupId(needToUpdateDb[i]) - } -} -func (p *NewChampshipsManager) AIScoreGrowth1m() { - seed := time.Now().Unix() - // rand.Seed(seed) - rand.New(rand.NewSource(seed)) - needToUpdateDb := []int32{} - timeStamp := time.Now().Unix() - t := time.Unix(timeStamp, 0).Local() - zero := timeStamp - (int64)(t.Hour()*3600+t.Minute()*60+t.Second()) + 3600*24 - for k, v := range p.MChampshipsGroupData { - ishaveRobot := false - if v.CurChampshipId != G_GameLogicPtr.M_SvrGlobal.CurChampshipsId { - continue - } - for i := 0; i < len(v.MChampshipPlayerScoreList); i++ { - if v.MChampshipPlayerScoreList[i].IsPlayer == 0 { - var addScore int32 = 0 - if v.MChampshipPlayerScoreList[i].AIEnum == 1 { - ishaveRobot = true - energy := v.MChampshipPlayerScoreList[i].IsGet - openTime := v.MChampshipPlayerScoreList[i].Times - rate := float64(int32(timeStamp)-openTime) / 1800 - rate = math.Min(rate, 1) - Score := float64(energy) / 10.0 * float64(rate) - addScore = int32(math.Floor(Score)) - } - if v.MChampshipPlayerScoreList[i].AIEnum == 2 { - ishaveRobot = true - energy := v.MChampshipPlayerScoreList[i].IsGet - openTime := v.MChampshipPlayerScoreList[i].Times - // rate := float64(int32(timeStamp)-openTime) / float64(int32(zero)-openTime) - var Score float64 = 0 - if int32(timeStamp)-openTime <= 3600 { - rate := float64(int32(timeStamp)-openTime) / 3600 - Score = float64(energy) / 10.0 * 0.667 * float64(rate) - } else { - rate := float64(int32(timeStamp)-openTime-3600) / float64(int32(zero)-3600-openTime) - Score = float64(energy)/10.0*0.333*float64(rate) + float64(energy)/10.0*0.667 - } - - addScore = int32(math.Floor(Score)) - } - - if v.MChampshipPlayerScoreList[i].AIEnum == 3 { - ishaveRobot = true - energy := v.MChampshipPlayerScoreList[i].IsGet - openTime := v.MChampshipPlayerScoreList[i].Times - rate := float64(int32(timeStamp)-openTime) / float64(int32(zero)-openTime) - Score := float64(energy) / 10.0 * float64(rate) - addScore = int32(math.Floor(Score)) - } - temp := v.MChampshipPlayerScoreList[i].BaseScore + addScore - v.MChampshipPlayerScoreList[i].Score = int32(math.Max(float64(temp), float64(v.MChampshipPlayerScoreList[i].Score))) - } - } - if ishaveRobot { - sort.Slice(v.MChampshipPlayerScoreList, func(i, j int) bool { - return v.MChampshipPlayerScoreList[i].Score > v.MChampshipPlayerScoreList[j].Score - }) - p.SaveScoreDataByID(v.MChampshipPlayerScoreList) - isAdd := false - for i := 0; i < len(p.MUpdateNotifyList); i++ { - if p.MUpdateNotifyList[i] == k { - isAdd = true - break - } - } - if !isAdd { - p.MUpdateNotifyList = append(p.MUpdateNotifyList, k) - } - needToUpdateDb = append(needToUpdateDb, k) - - } - - } - for i := 0; i < len(needToUpdateDb); i++ { - p.SaveDbDataByGroupId(needToUpdateDb[i]) - } -} - -func (p *NewChampshipsManager) RobotIntervalAddScore30m() { - seed := time.Now().Unix() - rand.New(rand.NewSource(seed)) - timeStamp := time.Now().Unix() - t := time.Unix(timeStamp, 0).Local() - zero := timeStamp - (int64)(t.Hour()*3600+t.Minute()*60+t.Second()) + 3600*24 - - needToUpdateDb := []int32{} - for k, v := range p.MChampshipsGroupData { - ishaveRobot := false - if v.CurChampshipId != G_GameLogicPtr.M_SvrGlobal.CurChampshipsId { - continue - } - for i := 0; i < len(v.MChampshipPlayerScoreList); i++ { - if v.MChampshipPlayerScoreList[i].IsPlayer == 0 { - var addScore int32 = 0 - if v.MChampshipPlayerScoreList[i].AIEnum == 3 { - ishaveRobot = true - energy := v.MChampshipPlayerScoreList[i].IsGet - openTime := v.MChampshipPlayerScoreList[i].Times - rate := float64(int32(timeStamp)-openTime) / float64(int32(zero)-openTime) - Score := float64(energy) / 10.0 * float64(rate) - addScore = int32(math.Floor(Score)) - - v.MChampshipPlayerScoreList[i].Score = v.MChampshipPlayerScoreList[i].BaseScore + addScore - } - } - } - if ishaveRobot { - sort.Slice(v.MChampshipPlayerScoreList, func(i, j int) bool { - return v.MChampshipPlayerScoreList[i].Score > v.MChampshipPlayerScoreList[j].Score - }) - p.SaveScoreDataByID(v.MChampshipPlayerScoreList) - isAdd := false - for i := 0; i < len(p.MUpdateNotifyList); i++ { - if p.MUpdateNotifyList[i] == k { - isAdd = true - break - } - } - if !isAdd { - p.MUpdateNotifyList = append(p.MUpdateNotifyList, k) - } - needToUpdateDb = append(needToUpdateDb, k) - - } - - } - for i := 0; i < len(needToUpdateDb); i++ { - p.SaveDbDataByGroupId(needToUpdateDb[i]) - } -} - -func (p *NewChampshipsManager) SaveScoreDataByID(playerinfos []*msg.ChampshipsPlayerInfo) { - for i := 0; i < len(playerinfos); i++ { - if playerinfos[i].IsPlayer == 1 { - - sql, ok := p.MAllPlayerRankList[playerinfos[i].DwUin] - if ok { - sql.CurScore = playerinfos[i].Score - sql.CurRank = int32(i + 1) - db.FormatAllMemUpdateDb(sql, "t_Player_championships_data", "dwUin") - } else { - sqlStr := "SELECT * FROM t_Player_championships_data WHERE dwUin = ?" - rankInfo := &db.SqlPlayerChampionData{} - rankInfo.DwUin = playerinfos[i].DwUin - if err := db.SqlDb.Get(rankInfo, sqlStr, playerinfos[i].DwUin); err != nil { - rankInfo.CurScore = playerinfos[i].Score - rankInfo.CurRank = int32(i + 1) - db.FormatAllMemInsertDb(rankInfo, "t_Player_championships_data") - } else { - rankInfo.CurScore = playerinfos[i].Score - rankInfo.CurRank = int32(i + 1) - db.FormatAllMemUpdateDb(rankInfo, "t_Player_championships_data", "dwUin") - } - } - - } - } -} - -func (p *NewChampshipsManager) SaveDbDataByGroupId(GroupId int32) { - _, ok := p.MChampshipsGroupData[GroupId] - if ok { - List := p.MChampshipsGroupData[GroupId].MChampshipPlayerScoreList - strr := []string{} - for i := 0; i < len(List); i++ { - Item := List[i] - unit := strconv.Itoa(int(Item.DwUin)) + "_" + strconv.Itoa(int(Item.IsPlayer)) + "_" + strconv.Itoa(int(Item.Score)) + "_" + strconv.Itoa(int(Item.IsGet)) + "_" + strconv.Itoa(int(Item.Times)) + "_" + strconv.Itoa(int(Item.CurChampshipsId)) + "_" + strconv.Itoa(int(Item.AIEnum)) + "_" + strconv.Itoa(int(Item.BaseScore)) + "_" + Item.Name - strr = append(strr, unit) - } - data := strings.Join(strr, ";") - sqlStruct := &db.SqlChampionshipsStruct{} - sqlStruct.ChampshipsGroupID = GroupId - sqlStruct.GroupRankData = data - sqlStruct.CurChampshipsId = List[0].CurChampshipsId - db.FormatAllMemUpdateDb(sqlStruct, "t_championships_data", "ChampshipsGroupID") - } -} - -func (p *NewChampshipsManager) LoadDbDataByGroupId(ChampshipsId int32) { - - sqlStr := "SELECT * FROM t_championships_data WHERE CurChampshipsId = ?" - - sqlStruck := []db.SqlChampionshipsStruct{} - - if err := db.SqlDb.Select(&sqlStruck, sqlStr, ChampshipsId); err != nil { - - } else { - for m := 0; m < len(sqlStruck); m++ { - units := strings.Split(sqlStruck[m].GroupRankData, ";") - list := []*msg.ChampshipsPlayerInfo{} - for i := 0; i < len(units); i++ { - item := units[i] - strr := strings.Split(item, "_") - temp := &msg.ChampshipsPlayerInfo{} - dwuin, _ := strconv.Atoi(strr[0]) - temp.DwUin = int32(dwuin) - IsPlayer, _ := strconv.Atoi(strr[1]) - temp.IsPlayer = int32(IsPlayer) - Score, _ := strconv.Atoi(strr[2]) - temp.Score = int32(Score) - IsGet, _ := strconv.Atoi(strr[3]) - temp.IsGet = int32(IsGet) - Times, _ := strconv.Atoi(strr[4]) - temp.Times = int32(Times) - CS, _ := strconv.Atoi(strr[5]) - temp.CurChampshipsId = int32(CS) - AI, _ := strconv.Atoi(strr[6]) - temp.AIEnum = int32(AI) - BaseScore, _ := strconv.Atoi(strr[7]) - temp.BaseScore = int32(BaseScore) - temp.Name = "" - if len(strr) > 8 { - Name := strr[8] - temp.Name = Name - } - list = append(list, temp) - } - termp := &ChampshipsGroupData{} - termp.CurChampshipId = ChampshipsId - termp.MChampshipPlayerScoreList = list - termp.GroupId = sqlStruck[m].ChampshipsGroupID - termp.ActiveGroup = sqlStruck[m].GroupActive - p.MChampshipsGroupData[sqlStruck[m].ChampshipsGroupID] = termp - - } - } - -} - -func (p *NewChampshipsManager) RandomGetRobotName(cnt int) []string { - - recordCnt := gamedata.GetConfigByName("RandomNameDataBase").NumRecord() - cnts := G_GameLogicPtr.DisorderLuaTable(recordCnt, cnt) - names := []string{} - for i := 0; i < len(cnts); i++ { - record := gamedata.GetConfigByName("RandomNameDataBase").Record(cnts[i]).(*gamedata.RandomNameDataBase) - names = append(names, record.EnName) - } - return names -} - -func (p *NewChampshipsManager) ReqChampshipAddScore(player *Player, buf []byte) { - req := &msg.ReqChampshipAddScore{} - proto.Unmarshal(buf, req) - res := &msg.ResChampshipAddScore{} - - if p.MStatus == 0 { - res.ResultCode = MergeConst.Protocol_Champship_End - } else { - isRank := p.EnterWaitRankList(player.M_DwUin, req.AddScore) - res.CurScore = p.MAllPlayerRankList[player.M_DwUin].CurScore - if isRank { - _, ok := p.MChampshipsGroupData[req.GroupId] - if ok { - List := p.MChampshipsGroupData[req.GroupId].MChampshipPlayerScoreList - isHave := false - for i := 0; i < len(List); i++ { - if List[i].DwUin == player.M_DwUin { - List[i].Score = List[i].Score + req.AddScore - res.ResultCode = 0 - isHave = true - - break - } - } - sort.Slice(List, func(i, j int) bool { return List[i].Score > List[j].Score }) - p.SaveScoreDataByID(List) - if !isHave { - res.ResultCode = MergeConst.Protocol_Champship_No_Join - } else { - res.GroupRankDataList = List - isAdd := false - for i := 0; i < len(p.MUpdateNotifyList); i++ { - if p.MUpdateNotifyList[i] == req.GroupId { - isAdd = true - break - } - } - if !isAdd { - p.MUpdateNotifyList = append(p.MUpdateNotifyList, req.GroupId) - } - - p.SaveDbDataByGroupId(req.GroupId) - } - } else { - res.ResultCode = MergeConst.Protocol_Champship_No_Exsit - } - } else { - - } - - } - - res.GroupId = req.GroupId - agent := player.GetAgentByPlayer() - data, _ := proto.Marshal(res) - G_getGameLogic().PackResInfo(agent, "ResChampshipAddScore", data) -} - -func (p *NewChampshipsManager) ReqChampshipAddTime(player *Player, buf []byte) { - req := &msg.ReqChampshipAddTime{} - proto.Unmarshal(buf, req) - res := &msg.ResChampshipAddTime{} - if p.MStatus == 0 { - res.ResultCode = MergeConst.Protocol_Champship_End - } else { - _, ok := p.MChampshipsGroupData[req.GroupId] - if ok { - List := p.MChampshipsGroupData[req.GroupId].MChampshipPlayerScoreList - isHave := false - for i := 0; i < len(List); i++ { - if List[i].DwUin == player.M_DwUin { - List[i].Times = List[i].Times + req.AddTimes - res.ResultCode = 0 - isHave = true - break - } - } - sort.Slice(List, func(i, j int) bool { return List[i].Score > List[j].Score }) - p.SaveScoreDataByID(List) - if !isHave { - res.ResultCode = MergeConst.Protocol_Champship_No_Join - } else { - res.GroupRankDataList = List - p.SaveDbDataByGroupId(req.GroupId) - } - } else { - res.ResultCode = MergeConst.Protocol_Champship_No_Exsit - } - } - res.GroupId = req.GroupId - - agent := player.GetAgentByPlayer() - data, _ := proto.Marshal(res) - G_getGameLogic().PackResInfo(agent, "ResChampshipAddTime", data) -} diff --git a/src/server/game/OldPlayerCompensateMgr.go b/src/server/game/OldPlayerCompensateMgr.go deleted file mode 100644 index 2615312d..00000000 --- a/src/server/game/OldPlayerCompensateMgr.go +++ /dev/null @@ -1,113 +0,0 @@ -package game - -import ( - "fmt" - "math" - "server/db" - "strconv" - "strings" - "time" -) - -type OldPlayerCompensateMgr struct { - MSqlCompensateStruct map[string]*db.SqlCompensateStruct -} - -func (p *OldPlayerCompensateMgr) SuccessSendEmail(username string) bool { - - emailst, ok := p.MSqlCompensateStruct[username] - if ok { - emailst.IsSendEmail = 1 - db.FormatAllMemUpdateDb(emailst, "t_player_compensate_Data", "auto_id") - return true - } - return false -} - -func (p *OldPlayerCompensateMgr) SendEmailToDb(username string, dwUin int32) bool { - - emailst, ok := p.MSqlCompensateStruct[username] - if ok { - if emailst.IsSendEmail == 1 { - return false - } else { - sqlSt := &db.SqlEmailStruct{} - sqlSt.DwUin = dwUin - sqlSt.Content = `Welcome back to our game! -Here comes your refund for your scene progress and payment in test version! -Have fun in new version!` - sqlSt.CurrencyCount = 0 - sqlSt.CurrencyInfo = "" - sqlSt.RecvTime = 0 - sqlSt.Title = "Test Players' Refund" - sqlSt.Sender = "System" - sqlSt.ItemCount = 0 - sqlSt.ItemInfo = "" - sqlSt.SendTime = int32(time.Now().Unix()) - sqlSt.Status = 0 - sqlSt.Type = 1 - sqlSt.RewardId = "" - sqlSt.RewardCount = "" - sqlSt.LinkUrl = "" - strarr := []string{} - if emailst.DecorationCnt-5 > 0 { - SceneDiamond := (emailst.DecorationCnt-5)*10 + 25 - - temp := fmt.Sprintf("Diamond|%d", SceneDiamond) - strarr = append(strarr, temp) - } - f, err := strconv.ParseFloat(emailst.ChargeCnt, 64) - var ChargeDiamond float64 = 0 - if err == nil { - ChargeDiamond = f * 1.5 * 75 - } - if ChargeDiamond > 0 { - cd := int32(math.Ceil(ChargeDiamond)) - remain := cd % 10 - if remain != 0 && remain != 5 { - if remain < 5 { - cd = cd - remain + 5 - } else { - cd = cd - remain + 10 - } - } - temp := fmt.Sprintf("Diamond|%d", cd) - strarr = append(strarr, temp) - - } - sqlSt.RewardType = strings.Join(strarr, "_") - - insertId, err1 := db.FormatAllMemInsertDb(sqlSt, "system_mail_info") - - if err1 == nil { - p.SuccessSendEmail(username) - fmt.Sprintln("Success Intert Mail:" + strconv.Itoa(int(insertId))) - } - - return true - } - - } - return false -} - -func (p *OldPlayerCompensateMgr) LoadData() { - sqlStr := "SELECT * FROM t_player_compensate_Data" - sqlStrucks := []db.SqlCompensateStruct{} - - p.MSqlCompensateStruct = make(map[string]*db.SqlCompensateStruct) - if err := db.SqlDb.Select(&sqlStrucks, sqlStr); err != nil { - - return - } else { - - } - for i := 0; i < len(sqlStrucks); i++ { - p.MSqlCompensateStruct[sqlStrucks[i].DeviceId] = &sqlStrucks[i] - } - -} - -func (p *OldPlayerCompensateMgr) InitManager() { - p.LoadData() -} diff --git a/src/server/game/Player.go b/src/server/game/Player.go index ac0e81e7..22795de1 100644 --- a/src/server/game/Player.go +++ b/src/server/game/Player.go @@ -44,7 +44,6 @@ type Player struct { PlayMod PlayerMod M_DwUin int32 agent gate.Agent - PAMgr *PlayerActiveMgr lock sync.Mutex stopSignal chan bool Msg map[string]PlayerMsg @@ -197,27 +196,6 @@ func (p *Player) InitPlayer(UserName string) error { p.playerdataIF[PLAYER_BASE_DATA] = Base p.M_DwUin = Base.Data.DwUin - // 发射器解锁数据 - unlock := &PlayerEmitUnlockData{PlayerData: NewPlayerData("PlayerEmitUnlockData", p)} - ok = unlock.LoadDataFromDB(Base.Data.DwUin) - if !ok { - log.Debug("load PlayerEmitUnlockData failed:", UserName) - return errors.New("load PlayerEmitUnlockData failed") - } - p.playerdata["PlayerEmitUnlockData"] = unlock - p.playerdataIF["PlayerEmitUnlockData"] = unlock - - // 发射器数据 - Detail := &PlayerEmitDetailData{PlayerData: NewPlayerData("PlayerEmitDetailData", p)} - ok = Detail.LoadDataFromDB(Base.Data.DwUin) - if !ok { - log.Debug("load PlayerEmitDetailData failed! username: %s", UserName) - return errors.New("load PlayerEmitDetailData failed") - } - p.playerdata["PlayerEmitDetailData"] = Detail - p.playerdataIF["PlayerEmitDetailData"] = Detail - G_getGameLogic().Mlogger.Debug("load PlayerEmitDetailData:", Base.Data.DwUin) - // 棋盘数据 Chess := &PlayerChessData{PlayerData: NewPlayerData("PlayerChessData", p)} ok = Chess.LoadDataFromDB(Base.Data.DwUin) @@ -228,46 +206,6 @@ func (p *Player) InitPlayer(UserName string) error { p.playerdata["PlayerChessData"] = Chess p.playerdataIF["PlayerChessData"] = Chess - // 玩家解锁宝箱数据 - Chest := &PlayerUnlockingChestData{PlayerData: NewPlayerData("PlayerUnlockingChestData", p)} - ok = Chest.LoadDataFromDB(Base.Data.DwUin) - if !ok { - log.Debug("load PlayerUnlockingChestData failed:", UserName) - return errors.New("load PlayerUnlockingChestData failed") - } - p.playerdata["PlayerUnlockingChestData"] = Chest - p.playerdataIF["PlayerUnlockingChestData"] = Chest - - // 玩家解锁宝箱数据 - Single := &PlayerSingleData{PlayerData: NewPlayerData("PlayerSingleData", p)} - ok = Single.LoadDataFromDB(Base.Data.DwUin) - if !ok { - log.Debug("load PlayerSingleData failed:", UserName) - return errors.New("load PlayerSingleData failed") - } - p.playerdata["PlayerSingleData"] = Single - p.playerdataIF["PlayerSingleData"] = Single - - // 玩家订单数据 - Charge := &PlayerChargeData{PlayerData: NewPlayerData("PlayerChargeData", p)} - ok = Charge.LoadDataFromDB(Base.Data.DwUin) - if !ok { - log.Debug("load PlayerChargeData failed:", UserName) - return errors.New("load PlayerChargeData failed") - } - p.playerdata["PlayerChargeData"] = Charge - p.playerdataIF["PlayerChargeData"] = Charge - - // 玩家好友数据 - friendEvt := &PlayerFriendEventData{PlayerData: NewPlayerData("PlayerFriendEventData", p)} - ok = friendEvt.LoadDataFromDB(Base.Data.DwUin) - if !ok { - log.Debug("load PlayerFriendEventData failed:", UserName) - return errors.New("load PlayerFriendEventData failed") - } - p.playerdata["PlayerFriendEventData"] = friendEvt - p.playerdataIF["PlayerFriendEventData"] = friendEvt - // 玩家模块数据 modData := &PlayerModData{PlayerData: NewPlayerData("PlayerModData", p)} ok = modData.LoadDataFromDB(Base.Data.DwUin) @@ -283,8 +221,6 @@ func (p *Player) InitPlayer(UserName string) error { p.PlayMod.mod_list = modData.ModList p.PlayMod.is_update = IsUpdate - p.PAMgr = new(PlayerActiveMgr) - p.PAMgr.InitActiveMgr(p) go func() { // 处理数据回调 var cb *timer.Timer for { @@ -761,6 +697,7 @@ func (p *Player) UpdateUserInfo() { simple.Login = int64(Base.Data.LoginTime) simple.Loginout = int64(Base.Data.LogoutTime) simple.FaceBook = Base.Data.FaceBookId + simple.FaceBookPic = p.PlayMod.getBaseMod().FacebookUrl value, _ := json.Marshal(simple) IdStr := strconv.Itoa(int(p.M_DwUin)) db.RedisSetKey(IdStr, string(value), 0) diff --git a/src/server/game/PlayerActiveData.go b/src/server/game/PlayerActiveData.go deleted file mode 100644 index a83c9a9d..00000000 --- a/src/server/game/PlayerActiveData.go +++ /dev/null @@ -1,2232 +0,0 @@ -package game - -import ( - "fmt" - "server/GoUtil" - "server/MergeConst" - "server/cron" - "server/db" - "server/gamedata" - "server/msg" - "strconv" - "strings" - "time" - - "google.golang.org/protobuf/proto" -) - -type PlayerActiveData struct { - *PlayerData - - WeekCronID cron.EntryID - Mcron *cron.Cron - Type int32 - MisDirty bool - MActType int - MActiveID int32 -} - -func (p *PlayerActiveData) DeleteOutlineActive(deleteList []int32, tableName string) { - sqlStr := "DELETE FROM " + tableName + " WHERE ActiveID = ?" - for i := 0; i < len(deleteList); i++ { - - result, err := db.SqlDb.Exec(sqlStr, deleteList[i]) - if err != nil { - fmt.Printf("exec failed, err:%v\n", err) - return - } - affectedRows, err := result.RowsAffected() - if err != nil { - fmt.Printf("get affected failed, err:%v\n", err) - return - } - fmt.Printf("delete data success, affected rows:%d\n", affectedRows) - } -} - -func (p *PlayerActiveData) OpenNewLimitActivity(args []interface{}) { - if p.MActType != args[3].(int) { - return - } - p.MisDirty = true -} - -func (p *PlayerActiveData) ClearData() bool { - GoUtil.RemoveEvent(MergeConst.OpenNewLimitActivity, p.OpenNewLimitActivity, p) - return true -} -func (p *PlayerActiveData) Reconnect(b bool) { - GoUtil.RemoveEvent(MergeConst.OpenNewLimitActivity, p.OpenNewLimitActivity, p) - GoUtil.RegisterEvent(MergeConst.OpenNewLimitActivity, p.OpenNewLimitActivity, p) - -} - -// //////////////////////// -type PlayerPassportData struct { - *PlayerActiveData - Data msg.ResLimitPassportDetail - MsqlStruck []db.SqlLimitPassportStruct - MActType int -} - -func (p *PlayerPassportData) LoadDataFromDB(dwUin interface{}) bool { - - sqlStr := "SELECT * FROM t_player_LimitPassport WHERE dwUin = ?" - p.MsqlStruck = []db.SqlLimitPassportStruct{} - - if err := db.SqlDb.Select(&p.MsqlStruck, sqlStr, dwUin.(int32)); err != nil { - - p.IsHaveDataDb = false - } else { - p.IsHaveDataDb = true - } - - p.Data.DwUin = dwUin.(int32) - deleteList := []int{} - dlist := []int32{} - tempList := []db.SqlLimitPassportStruct{} - curtime := time.Now().Unix() - startIndex := 0 - for i := 0; i < len(p.MsqlStruck); i++ { - item := p.MsqlStruck[i] - if item.StartSvrTime > int32(curtime) || item.EndSvrTime < int32(curtime) { - deleteList = append(deleteList, i) - } - } - for i := 0; i < len(deleteList); i++ { - curIndex := deleteList[i] - if curIndex == startIndex { - startIndex = startIndex + 1 - continue - } - tempList = append(tempList, p.MsqlStruck[startIndex:curIndex]...) - startIndex = curIndex + 1 - } - if startIndex <= len(p.MsqlStruck)-1 { - tempList = append(tempList, p.MsqlStruck[startIndex:]...) - } - for i := 0; i < len(deleteList); i++ { - dlist = append(dlist, p.MsqlStruck[deleteList[i]].ActiveID) - } - if len(dlist) > 0 { - p.DeleteOutlineActive(dlist, "t_player_LimitPassport") - } - p.MsqlStruck = tempList - p.MActType = 1 - p.Reconnect(false) - return true -} - -func (p *PlayerPassportData) CloseNewLimitActivity(args []interface{}) { - record := args[0].(*gamedata.ActivityRecord) - - if record.Type != p.MActType { - return - } - - notify := &msg.NotifyLimitedTimeActiveEnd{} - notify.DwUin = p.M_Player.M_DwUin - notify.MActiveList = []*msg.LimitedTimeEndStruct{} - - for i := 0; i < len(p.MsqlStruck); i++ { - item := p.MsqlStruck[i] - if int(item.ConfigActId) == record.Id { - msg := &msg.LimitedTimeEndStruct{} - msg.ActiveID = item.ActiveID - msg.Type = int32(record.Type) - notify.MActiveList = append(notify.MActiveList, msg) - } - } - p.MisDirty = true - agent := p.GetPlayer().GetAgentByPlayer() - data, _ := proto.Marshal(notify) - G_getGameLogic().PackResInfo(agent, "NotifyLimitedTimeActiveEnd", data) -} - -func (p *PlayerPassportData) Reconnect(b bool) { - GoUtil.RemoveEvent(MergeConst.CloseNewLimitActivity, p.CloseNewLimitActivity, p) - GoUtil.RegisterEvent(MergeConst.CloseNewLimitActivity, p.CloseNewLimitActivity, p) - p.PlayerActiveData.Reconnect(b) -} - -func (p *PlayerPassportData) FindDbSt(activeId int32) *db.SqlLimitPassportStruct { - for i := 0; i < len(p.MsqlStruck); i++ { - if p.MsqlStruck[i].ActiveID == activeId { - return &p.MsqlStruck[i] - } - } - return nil -} - -func (p *PlayerPassportData) ResLimitPassportDetail(buf []byte) { - req := &msg.ReqLimitPassportDetail{} - proto.Unmarshal(buf, req) - st := p.FindDbSt(req.ActiveID) - res := &msg.ResLimitPassportDetail{} - if st != nil { - - res.ActiveID = st.ActiveID - res.CurFreeLv = st.CurFreeLv - res.CurPayLv = st.CurPayLv - res.CurSvrTime = int32(time.Now().Unix()) - res.StartSvrTime = st.StartSvrTime - res.EndSvrTime = st.EndSvrTime - res.IsPay = st.IsPay - res.DwUin = p.M_Player.M_DwUin - res.Star = st.Star - res.Status = st.Status - res.ResultCode = 0 - - } else { - res.ResultCode = MergeConst.Protocol_Active_No_Exsit - } - agent := p.GetPlayer().GetAgentByPlayer() - data, _ := proto.Marshal(res) - G_getGameLogic().PackResInfo(agent, "ResLimitPassportDetail", data) -} - -func (p *PlayerPassportData) ResGetLimitPassportReward(buf []byte) { - req := &msg.ReqGetLimitPassportReward{} - proto.Unmarshal(buf, req) - st := p.FindDbSt(req.ActiveID) - res := &msg.ResGetLimitPassportReward{} - if st != nil { - res.ActiveID = st.ActiveID - res.DwUin = p.M_Player.M_DwUin - res.FreeOrPay = req.FreeOrPay - res.ReqLv = req.ReqLv - res.ResultCode = 0 - if req.FreeOrPay == 1 { - st.CurFreeLv = req.ReqLv - } - if req.FreeOrPay == 2 { - st.CurPayLv = req.ReqLv - } - } else { - res.ResultCode = MergeConst.Protocol_Active_No_Exsit - } - agent := p.GetPlayer().GetAgentByPlayer() - data, _ := proto.Marshal(res) - G_getGameLogic().PackResInfo(agent, "ResGetLimitPassportReward", data) -} - -func (p *PlayerPassportData) ResPayPassport(buf []byte) { - req := &msg.ReqPayPassport{} - proto.Unmarshal(buf, req) - st := p.FindDbSt(req.ActiveID) - res := &msg.ResPayPassport{} - if st != nil { - res.DwUin = p.M_Player.M_DwUin - st.IsPay = 1 - res.ResultCode = 0 - res.ActiveID = req.ActiveID - } else { - res.ResultCode = MergeConst.Protocol_Active_No_Exsit - } - agent := p.GetPlayer().GetAgentByPlayer() - data, _ := proto.Marshal(res) - G_getGameLogic().PackResInfo(agent, "ResPayPassport", data) -} - -func (p *PlayerPassportData) ResActiveAddStar(buf []byte) { - req := &msg.ReqActiveAddStar{} - proto.Unmarshal(buf, req) - st := p.FindDbSt(req.ActiveID) - res := &msg.ResActiveAddStar{} - if st != nil { - st.Star = req.AddCnt + st.Star - res.AllCnt = st.Star - res.ActiveID = req.ActiveID - } else { - res.ResultCode = MergeConst.Protocol_Active_No_Exsit - } - agent := p.GetPlayer().GetAgentByPlayer() - data, _ := proto.Marshal(res) - G_getGameLogic().PackResInfo(agent, "ResActiveAddStar", data) -} - -func (p *PlayerPassportData) SaveDataFromDB(Key interface{}) bool { - for i := 0; i < len(p.MsqlStruck); i++ { - item := p.MsqlStruck[i] - db.FormatAllMemUpdateDb(&item, "t_player_LimitPassport", "ActiveID") - } - return true -} -func (p *PlayerPassportData) ClearData() bool { - p.SaveDataFromDB("") - GoUtil.RemoveEvent(MergeConst.CloseNewLimitActivity, p.CloseNewLimitActivity, p) - p.PlayerActiveData.ClearData() - - return true -} - -//////////////////////// - -type PlayerPromotionData struct { - *PlayerActiveData - Data msg.ResLimitPassportDetail - MsqlStruck []db.SqlLimitPromotionStruct - MActType int -} - -func (p *PlayerPromotionData) LoadDataFromDB(dwUin interface{}) bool { - - sqlStr := "SELECT * FROM t_player_LimitPromotion WHERE dwUin = ?" - p.MsqlStruck = []db.SqlLimitPromotionStruct{} - - if err := db.SqlDb.Select(&p.MsqlStruck, sqlStr, dwUin.(int32)); err != nil { - - p.IsHaveDataDb = false - } else { - p.IsHaveDataDb = true - } - - p.Data.DwUin = dwUin.(int32) - deleteList := []int{} - dlist := []int32{} - tempList := []db.SqlLimitPromotionStruct{} - curtime := time.Now().Unix() - startIndex := 0 - for i := 0; i < len(p.MsqlStruck); i++ { - item := p.MsqlStruck[i] - if item.StartSvrTime > int32(curtime) || item.EndSvrTime < int32(curtime) { - deleteList = append(deleteList, i) - } - } - for i := 0; i < len(deleteList); i++ { - curIndex := deleteList[i] - if curIndex == startIndex { - startIndex = startIndex + 1 - continue - } - tempList = append(tempList, p.MsqlStruck[startIndex:curIndex]...) - startIndex = curIndex + 1 - } - if startIndex <= len(p.MsqlStruck)-1 { - tempList = append(tempList, p.MsqlStruck[startIndex:]...) - } - for i := 0; i < len(deleteList); i++ { - dlist = append(dlist, p.MsqlStruck[deleteList[i]].ActiveID) - } - if len(dlist) > 0 { - p.DeleteOutlineActive(dlist, "t_player_LimitPromotion") - } - p.MActType = 2 - p.MsqlStruck = tempList - p.Reconnect(false) - return true -} - -func (p *PlayerPromotionData) CloseNewLimitActivity(args []interface{}) { - record := args[0].(*gamedata.ActivityRecord) - - if record.Type != p.MActType { - return - } - - notify := &msg.NotifyLimitedTimeActiveEnd{} - notify.DwUin = p.M_Player.M_DwUin - notify.MActiveList = []*msg.LimitedTimeEndStruct{} - - for i := 0; i < len(p.MsqlStruck); i++ { - item := p.MsqlStruck[i] - if int(item.ConfigActId) == record.Id { - msg := &msg.LimitedTimeEndStruct{} - msg.ActiveID = item.ActiveID - msg.Type = int32(record.Type) - notify.MActiveList = append(notify.MActiveList, msg) - } - } - p.MisDirty = true - agent := p.GetPlayer().GetAgentByPlayer() - data, _ := proto.Marshal(notify) - G_getGameLogic().PackResInfo(agent, "NotifyLimitedTimeActiveEnd", data) -} - -func (p *PlayerPromotionData) Reconnect(b bool) { - GoUtil.RemoveEvent(MergeConst.CloseNewLimitActivity, p.CloseNewLimitActivity, p) - GoUtil.RegisterEvent(MergeConst.CloseNewLimitActivity, p.CloseNewLimitActivity, p) - p.PlayerActiveData.Reconnect(b) -} - -func (p *PlayerPromotionData) FindDbSt(activeId int32) *db.SqlLimitPromotionStruct { - for i := 0; i < len(p.MsqlStruck); i++ { - if p.MsqlStruck[i].ActiveID == activeId { - return &p.MsqlStruck[i] - } - } - return nil -} - -func (p *PlayerPromotionData) ResPromotionDetail(buf []byte) { - req := &msg.ReqPromotionDetail{} - proto.Unmarshal(buf, req) - st := p.FindDbSt(req.ActiveID) - res := &msg.ResPromotionDetail{} - if st != nil { - res.ActiveID = st.ActiveID - res.CurSvrTime = int32(time.Now().Unix()) - res.StartSvrTime = st.StartSvrTime - res.EndSvrTime = st.EndSvrTime - res.IsPay = st.IsPay - res.DwUin = p.M_Player.M_DwUin - res.ResultCode = 0 - } else { - res.ResultCode = MergeConst.Protocol_Active_No_Exsit - } - agent := p.GetPlayer().GetAgentByPlayer() - data, _ := proto.Marshal(res) - G_getGameLogic().PackResInfo(agent, "ResPromotionDetail", data) -} - -func (p *PlayerPromotionData) ResBuyLimitPromotionReward(buf []byte) { - req := &msg.ReqBuyLimitPromotionReward{} - proto.Unmarshal(buf, req) - st := p.FindDbSt(req.ActiveID) - res := &msg.ResBuyLimitPromotionReward{} - if st != nil { - res.ActiveID = st.ActiveID - res.DwUin = p.M_Player.M_DwUin - st.IsPay = 1 - res.ResultCode = 0 - } else { - res.ResultCode = MergeConst.Protocol_Active_No_Exsit - } - agent := p.GetPlayer().GetAgentByPlayer() - data, _ := proto.Marshal(res) - G_getGameLogic().PackResInfo(agent, "ResBuyLimitPromotionReward", data) -} - -func (p *PlayerPromotionData) ClearData() bool { - p.SaveDataFromDB("") - GoUtil.RemoveEvent(MergeConst.CloseNewLimitActivity, p.CloseNewLimitActivity, p) - p.PlayerActiveData.ClearData() - return true -} - -func (p *PlayerPromotionData) SaveDataFromDB(Key interface{}) bool { - for i := 0; i < len(p.MsqlStruck); i++ { - item := p.MsqlStruck[i] - db.FormatAllMemUpdateDb(&item, "t_player_LimitPromotion", "ActiveID") - } - return true -} - -//////////////////////// - -//////////////////////// - -type Player7DayLoginData struct { - *PlayerActiveData - Data msg.ResLimitPassportDetail - MsqlStruck []db.SqlSevenDayLoginStruct -} - -func (p *Player7DayLoginData) LoadDataFromDB(dwUin interface{}) bool { - - sqlStr := "SELECT * FROM t_player_Limit7DayLogin WHERE dwUin = ?" - p.MsqlStruck = []db.SqlSevenDayLoginStruct{} - - if err := db.SqlDb.Select(&p.MsqlStruck, sqlStr, dwUin.(int32)); err != nil { - - p.IsHaveDataDb = false - } else { - p.IsHaveDataDb = true - } - - p.Data.DwUin = dwUin.(int32) - deleteList := []int{} - dlist := []int32{} - tempList := []db.SqlSevenDayLoginStruct{} - curtime := time.Now().Unix() - startIndex := 0 - for i := 0; i < len(p.MsqlStruck); i++ { - item := p.MsqlStruck[i] - if item.StartSvrTime > int32(curtime) || item.EndSvrTime < int32(curtime) { - deleteList = append(deleteList, i) - } - } - for i := 0; i < len(deleteList); i++ { - curIndex := deleteList[i] - if curIndex == startIndex { - startIndex = startIndex + 1 - continue - } - tempList = append(tempList, p.MsqlStruck[startIndex:curIndex]...) - startIndex = curIndex + 1 - } - if startIndex <= len(p.MsqlStruck)-1 { - tempList = append(tempList, p.MsqlStruck[startIndex:]...) - } - for i := 0; i < len(deleteList); i++ { - dlist = append(dlist, p.MsqlStruck[deleteList[i]].ActiveID) - } - if len(dlist) > 0 { - p.DeleteOutlineActive(dlist, "t_player_Limit7DayLogin") - } - - p.MsqlStruck = tempList - p.Reconnect(false) - return true -} - -func (p *Player7DayLoginData) CloseNewLimitActivity(args []interface{}) { - record := args[0].(*gamedata.ActivityRecord) - - if record.Type != p.MActType { - return - } - - notify := &msg.NotifyLimitedTimeActiveEnd{} - notify.DwUin = p.M_Player.M_DwUin - notify.MActiveList = []*msg.LimitedTimeEndStruct{} - - for i := 0; i < len(p.MsqlStruck); i++ { - item := p.MsqlStruck[i] - if int(item.ConfigActId) == record.Id { - msg := &msg.LimitedTimeEndStruct{} - msg.ActiveID = item.ActiveID - msg.Type = int32(record.Type) - notify.MActiveList = append(notify.MActiveList, msg) - } - } - p.MisDirty = true - agent := p.GetPlayer().GetAgentByPlayer() - data, _ := proto.Marshal(notify) - G_getGameLogic().PackResInfo(agent, "NotifyLimitedTimeActiveEnd", data) - -} - -func (p *Player7DayLoginData) Reconnect(b bool) { - GoUtil.RemoveEvent(MergeConst.CloseNewLimitActivity, p.CloseNewLimitActivity, p) - GoUtil.RegisterEvent(MergeConst.CloseNewLimitActivity, p.CloseNewLimitActivity, p) - GoUtil.RemoveEvent(MergeConst.Notify_Daily_Renew, p.NotifyDailyRenew7Day, p) - GoUtil.RegisterEvent(MergeConst.Notify_Daily_Renew, p.NotifyDailyRenew7Day, p) - - p.PlayerActiveData.Reconnect(b) -} - -func (p *Player7DayLoginData) NotifyDailyRenew7Day(param []interface{}) { - // p.Data.RenewTime = int32(param[0].(int64)) - // for k := range p.Data.MEmitUnlockData { - // p.Data.MEmitUnlockData[k] = 0 - // } - - p.NotifyDailyRenew7Dayfunc() -} - -func (p *Player7DayLoginData) FindDbSt(activeId int32) *db.SqlSevenDayLoginStruct { - for i := 0; i < len(p.MsqlStruck); i++ { - if p.MsqlStruck[i].ActiveID == activeId { - return &p.MsqlStruck[i] - } - } - return nil -} - -func (p *Player7DayLoginData) Res7DayLoginDetail(buf []byte) { - req := &msg.Req7DayLoginDetail{} - proto.Unmarshal(buf, req) - st := p.FindDbSt(req.ActiveID) - res := &msg.Res7DayLoginDetail{} - if st != nil { - res.ActiveID = st.ActiveID - res.CurSvrTime = int32(time.Now().Unix()) - res.StartSvrTime = st.StartSvrTime - res.EndSvrTime = st.EndSvrTime - res.LastGetTime = st.LastGetTime - res.DwUin = p.M_Player.M_DwUin - - res.GetIndex = st.GetIndex - res.ResultCode = 0 - } else { - res.ResultCode = MergeConst.Protocol_Active_No_Exsit - } - agent := p.GetPlayer().GetAgentByPlayer() - data, _ := proto.Marshal(res) - G_getGameLogic().PackResInfo(agent, "Res7DayLoginDetail", data) -} - -func (p *Player7DayLoginData) ResGet7DayLoginPack(buf []byte) { - req := &msg.ReqGet7DayLoginPack{} - proto.Unmarshal(buf, req) - st := p.FindDbSt(req.ActiveID) - res := &msg.ResGet7DayLoginPack{} - if st != nil { - t := time.Unix((int64)(st.LastGetTime), 0).Local() - nianchu1 := (int64)(st.LastGetTime) - (int64)(t.Hour()*3600+t.Minute()*60+t.Second()) - - timeStamp := time.Now().Unix() - t1 := time.Unix(timeStamp, 0).Local() - nianchu2 := timeStamp - (int64)(t1.Hour()*3600+t1.Minute()*60+t1.Second()) - if nianchu1 == nianchu2 { - res.ResultCode = MergeConst.Protocol_Active_7Day_Rewarded - } else { - res.ActiveID = st.ActiveID - res.CurIndex = req.CurIndex + 1 - res.LastGetTime = int32(timeStamp) - st.LastGetTime = res.LastGetTime - st.GetIndex = req.CurIndex + 1 - - res.DwUin = p.M_Player.M_DwUin - res.ResultCode = 0 - } - - } else { - res.ResultCode = MergeConst.Protocol_Active_No_Exsit - } - agent := p.GetPlayer().GetAgentByPlayer() - data, _ := proto.Marshal(res) - G_getGameLogic().PackResInfo(agent, "ResGet7DayLoginPack", data) -} - -func (p *Player7DayLoginData) NotifyDailyRenew7Dayfunc() { - notify := &msg.NotifyDailyRenew7Day{} - - notify.CurSvrTime = int32(time.Now().Unix()) - - for i := 0; i < len(p.MsqlStruck); i++ { - - if (&p.MsqlStruck[i]).EndSvrTime > notify.CurSvrTime { - agent := p.GetPlayer().GetAgentByPlayer() - data, _ := proto.Marshal(notify) - notify.ActiveID = (&p.MsqlStruck[i]).ActiveID - G_getGameLogic().PackResInfo(agent, "NotifyDailyRenew7Day", data) - } - - } - -} - -func (p *Player7DayLoginData) SaveDataFromDB(Key interface{}) bool { - for i := 0; i < len(p.MsqlStruck); i++ { - item := p.MsqlStruck[i] - db.FormatAllMemUpdateDb(&item, "t_player_Limit7DayLogin", "ActiveID") - } - return true -} -func (p *Player7DayLoginData) ClearData() bool { - p.SaveDataFromDB("") - GoUtil.RemoveEvent(MergeConst.CloseNewLimitActivity, p.CloseNewLimitActivity, p) - GoUtil.RemoveEvent(MergeConst.Notify_Daily_Renew, p.NotifyDailyRenew7Day, p) - p.PlayerActiveData.ClearData() - return true -} - -//////////////////////// - -type PlayerInfinitePackData struct { - *PlayerActiveData - - MsqlStruck []db.SqlLimitInfinitePackStruct -} - -func (p *PlayerInfinitePackData) LoadDataFromDB(dwUin interface{}) bool { - - sqlStr := "SELECT * FROM t_player_LimitInfinitePack WHERE dwUin = ?" - p.MsqlStruck = []db.SqlLimitInfinitePackStruct{} - - if err := db.SqlDb.Select(&p.MsqlStruck, sqlStr, dwUin.(int32)); err != nil { - - p.IsHaveDataDb = false - } else { - p.IsHaveDataDb = true - } - - deleteList := []int{} - dlist := []int32{} - tempList := []db.SqlLimitInfinitePackStruct{} - curtime := time.Now().Unix() - startIndex := 0 - - for i := 0; i < len(p.MsqlStruck); i++ { - item := p.MsqlStruck[i] - if item.StartSvrTime > int32(curtime) || item.EndSvrTime < int32(curtime) { - deleteList = append(deleteList, i) - } - } - for i := 0; i < len(deleteList); i++ { - curIndex := deleteList[i] - if curIndex == startIndex { - startIndex = startIndex + 1 - continue - } - tempList = append(tempList, p.MsqlStruck[startIndex:curIndex]...) - startIndex = curIndex + 1 - } - if startIndex <= len(p.MsqlStruck)-1 { - tempList = append(tempList, p.MsqlStruck[startIndex:]...) - } - for i := 0; i < len(deleteList); i++ { - dlist = append(dlist, p.MsqlStruck[deleteList[i]].ActiveID) - } - if len(dlist) > 0 { - p.DeleteOutlineActive(dlist, "t_player_LimitInfinitePack") - } - - p.MsqlStruck = tempList - p.Reconnect(false) - return true -} - -func (p *PlayerInfinitePackData) CloseNewLimitActivity(args []interface{}) { - record := args[0].(*gamedata.ActivityRecord) - - if record.Type != p.MActType { - return - } - - notify := &msg.NotifyLimitedTimeActiveEnd{} - notify.DwUin = p.M_Player.M_DwUin - notify.MActiveList = []*msg.LimitedTimeEndStruct{} - - for i := 0; i < len(p.MsqlStruck); i++ { - item := p.MsqlStruck[i] - if int(item.ConfigActId) == record.Id { - msg := &msg.LimitedTimeEndStruct{} - msg.ActiveID = item.ActiveID - msg.Type = int32(record.Type) - notify.MActiveList = append(notify.MActiveList, msg) - } - } - p.MisDirty = true - agent := p.GetPlayer().GetAgentByPlayer() - data, _ := proto.Marshal(notify) - G_getGameLogic().PackResInfo(agent, "NotifyLimitedTimeActiveEnd", data) - -} - -func (p *PlayerInfinitePackData) Reconnect(b bool) { - GoUtil.RemoveEvent(MergeConst.CloseNewLimitActivity, p.CloseNewLimitActivity, p) - GoUtil.RegisterEvent(MergeConst.CloseNewLimitActivity, p.CloseNewLimitActivity, p) - p.PlayerActiveData.Reconnect(b) -} - -func (p *PlayerInfinitePackData) FindDbSt(activeId int32) *db.SqlLimitInfinitePackStruct { - for i := 0; i < len(p.MsqlStruck); i++ { - if p.MsqlStruck[i].ActiveID == activeId { - return &p.MsqlStruck[i] - } - } - return nil -} - -func (p *PlayerInfinitePackData) ResInfinitePackDetail(buf []byte) { - req := &msg.ReqInfinitePackDetail{} - proto.Unmarshal(buf, req) - st := p.FindDbSt(req.ActiveID) - res := &msg.ResInfinitePackDetail{} - if st != nil { - res.ActiveID = st.ActiveID - res.CurSvrTime = int32(time.Now().Unix()) - res.StartSvrTime = st.StartSvrTime - res.EndSvrTime = st.EndSvrTime - res.CurGear = st.CurGear - res.DwUin = p.M_Player.M_DwUin - res.ResultCode = 0 - } else { - res.ResultCode = MergeConst.Protocol_Active_No_Exsit - } - agent := p.GetPlayer().GetAgentByPlayer() - data, _ := proto.Marshal(res) - G_getGameLogic().PackResInfo(agent, "ResInfinitePackDetail", data) -} - -func (p *PlayerInfinitePackData) ResBuyInfinitePack(buf []byte) { - req := &msg.ReqBuyInfinitePack{} - proto.Unmarshal(buf, req) - st := p.FindDbSt(req.ActiveID) - res := &msg.ResBuyInfinitePack{} - if st != nil { - res.ActiveID = st.ActiveID - res.DwUin = p.M_Player.M_DwUin - res.ResultCode = 0 - st.CurGear = st.CurGear + 1 - } else { - res.ResultCode = MergeConst.Protocol_Active_No_Exsit - } - agent := p.GetPlayer().GetAgentByPlayer() - data, _ := proto.Marshal(res) - G_getGameLogic().PackResInfo(agent, "ResBuyInfinitePack", data) -} - -func (p *PlayerInfinitePackData) SaveDataFromDB(Key interface{}) bool { - for i := 0; i < len(p.MsqlStruck); i++ { - item := p.MsqlStruck[i] - db.FormatAllMemUpdateDb(&item, "t_player_LimitInfinitePack", "ActiveID") - } - return true -} -func (p *PlayerInfinitePackData) ClearData() bool { - p.SaveDataFromDB("") - GoUtil.RemoveEvent(MergeConst.CloseNewLimitActivity, p.CloseNewLimitActivity, p) - p.PlayerActiveData.ClearData() - return true -} - -// //////////////////////// -type PlayerCardCollectData struct { - *PlayerActiveData - // Data msg.ResLimitPassportDetail - MExchangeData msg.ResExchangeCardBoxData - MsqlStruck []db.SqlCardCollectStruct - MsqlExchangeStruck []db.SqlExchangeCardStruct - MActType int -} - -func (p *PlayerCardCollectData) LoadDataFromDB(dwUin interface{}) bool { - - sqlStr := "SELECT * FROM t_player_card_data WHERE dwUin = ?" - p.MsqlStruck = []db.SqlCardCollectStruct{} - - if err := db.SqlDb.Select(&p.MsqlStruck, sqlStr, dwUin.(int32)); err != nil { - - p.IsHaveDataDb = false - } else { - p.IsHaveDataDb = true - } - - // p.Data.DwUin = dwUin.(int32) - deleteList := []int{} - dlist := []int32{} - tempList := []db.SqlCardCollectStruct{} - curtime := time.Now().Unix() - startIndex := 0 - for i := 0; i < len(p.MsqlStruck); i++ { - item := p.MsqlStruck[i] - if item.StartSvrTime > int32(curtime) || item.EndSvrTime < int32(curtime) { - deleteList = append(deleteList, i) - } - } - for i := 0; i < len(deleteList); i++ { - curIndex := deleteList[i] - if curIndex == startIndex { - startIndex = startIndex + 1 - continue - } - tempList = append(tempList, p.MsqlStruck[startIndex:curIndex]...) - startIndex = curIndex + 1 - } - if startIndex <= len(p.MsqlStruck)-1 { - tempList = append(tempList, p.MsqlStruck[startIndex:]...) - } - for i := 0; i < len(deleteList); i++ { - dlist = append(dlist, p.MsqlStruck[deleteList[i]].ActiveID) - } - if len(dlist) > 0 { - p.DeleteOutlineActive(dlist, "t_player_card_data") - } - - timeStamp := (int64)(time.Now().Unix()) - t := time.Unix(timeStamp, 0).Local() - zero := timeStamp - (int64)(t.Hour()*3600+t.Minute()*60+t.Second()) - for i := 0; i < len(tempList); i++ { - item := tempList[i] - if item.RenewSvrTime < int32(zero) { - tempList[i].RenewSvrTime = int32(zero) - tempList[i].RenewExchangeTime = 0 - tempList[i].RenewRequestTime = 0 - } - } - p.MsqlStruck = tempList - - p.MActType = 5 - p.Reconnect(false) - p.LoadExchangeCardData(dwUin.(int32)) - return true -} - -func (p *PlayerCardCollectData) LoadExchangeCardData(dwUin int32) { - sqlStr := "SELECT * FROM t_Player_ExchangeCard_Box_Data WHERE SenderId = ? OR ReceiveId = ?" - p.MsqlExchangeStruck = []db.SqlExchangeCardStruct{} - p.MExchangeData = msg.ResExchangeCardBoxData{} - p.MExchangeData.ExchangeCardItems = []*msg.ExchangeCardItem{} - if err := db.SqlDb.Select(&p.MsqlExchangeStruck, sqlStr, dwUin, dwUin); err != nil { - - } else { - - } - - deleteIDs := []int32{} - for i := 0; i < len(p.MsqlExchangeStruck); i++ { - item := p.MsqlExchangeStruck[i] - ExchangeCard := &msg.ExchangeCardItem{} - ExchangeCard.SenderId = item.SenderId - ExchangeCard.ReceiveId = item.ReceiveId - ExchangeCard.GroupId = item.GroupId - ExchangeCard.ApplicateStatus = item.ApplicateStatus - ExchangeCard.StartTime = item.StartTime - ExchangeCard.EventType = item.EventType - ExchangeCard.EventParam = item.EventParam - ExchangeCard.ConfigActId = item.ConfigActId - ExchangeCard.AutoId = item.AutoId - if !p.IsInCardActivty(item.ConfigActId) { - deleteIDs = append(deleteIDs, item.AutoId) - } else { - if ExchangeCard.EventType == 1 && ExchangeCard.ApplicateStatus == 2 && ExchangeCard.SenderId == dwUin { - deleteIDs = append(deleteIDs, item.AutoId) - continue - } - if ExchangeCard.EventType == 2 && ExchangeCard.ApplicateStatus == 4 && ExchangeCard.SenderId == dwUin { - deleteIDs = append(deleteIDs, item.AutoId) - continue - } - p.MExchangeData.ExchangeCardItems = append(p.MExchangeData.ExchangeCardItems, ExchangeCard) - } - - } - p.DeleteOutlineCardExchange(deleteIDs, "t_Player_ExchangeCard_Box_Data") -} - -func (p *PlayerCardCollectData) DeleteOutlineCardExchange(deleteList []int32, tableName string) { - sqlStr := "DELETE FROM " + tableName + " WHERE auto_id = ?" - for i := 0; i < len(deleteList); i++ { - - result, err := db.SqlDb.Exec(sqlStr, deleteList[i]) - if err != nil { - fmt.Printf("exec failed, err:%v\n", err) - return - } - affectedRows, err := result.RowsAffected() - if err != nil { - fmt.Printf("get affected failed, err:%v\n", err) - return - } - fmt.Printf("delete data success, affected rows:%d\n", affectedRows) - } -} -func (p *PlayerCardCollectData) IsInCardActivty(ConfigActId int32) bool { - isIn := true - activityCfg := gamedata.GetConfigByName("Activity") - for i := 0; i < len(G_GameLogicPtr.M_LimitActiveList); i++ { - id := G_GameLogicPtr.M_LimitActiveList[i] - record := activityCfg.Index(id).(*gamedata.ActivityRecord) - if record.Type == 5 && int32(id) != ConfigActId { - isIn = false - break - } - } - return isIn -} - -func (p *PlayerCardCollectData) GetCardRecord() *gamedata.ActivityRecord { - activityCfg := gamedata.GetConfigByName("Activity") - for i := 0; i < len(G_GameLogicPtr.M_LimitActiveList); i++ { - id := G_GameLogicPtr.M_LimitActiveList[i] - record := activityCfg.Index(id).(*gamedata.ActivityRecord) - if record.Type == 5 { - return record - - } - } - return nil -} - -func (p *PlayerCardCollectData) ReqGetDonateCard(buf []byte) { - req := &msg.ReqGetDonateCard{} - proto.Unmarshal(buf, req) - res := &msg.ResGetDonateCard{} - - exchange := p.GetExchangeCardItem(req.MExchangeCardItem.AutoId) - if exchange != nil { - units := strings.Split(req.MExchangeCardItem.EventParam, "_") - cardId, _ := strconv.Atoi(units[0]) - p.AddCard(&p.MsqlStruck[0], int32(cardId), 1, false) - p.DeleteExchangeCardItem(req.MExchangeCardItem.AutoId) - - dbsql := db.SqlExchangeCardStruct{} - dbsql.ConfigActId = int32(p.GetCardRecord().Id) - dbsql.SenderId = req.MExchangeCardItem.SenderId - dbsql.ReceiveId = req.MExchangeCardItem.ReceiveId - dbsql.GroupId = req.MExchangeCardItem.GroupId - dbsql.ApplicateStatus = 2 - dbsql.StartTime = req.MExchangeCardItem.StartTime - dbsql.EventType = 1 - dbsql.EventParam = req.MExchangeCardItem.EventParam - dbsql.AutoId = req.MExchangeCardItem.AutoId - db.FormatAllMemUpdateDb(&dbsql, "t_Player_ExchangeCard_Box_Data", "auto_id") - - res.MExchangeCardItem = &msg.ExchangeCardItem{} - res.MExchangeCardItem.SenderId = dbsql.SenderId - res.MExchangeCardItem.ReceiveId = dbsql.ReceiveId - res.MExchangeCardItem.GroupId = dbsql.GroupId - res.MExchangeCardItem.ApplicateStatus = dbsql.ApplicateStatus - res.MExchangeCardItem.StartTime = dbsql.StartTime - res.MExchangeCardItem.EventType = dbsql.EventType - res.MExchangeCardItem.EventParam = dbsql.EventParam - res.MExchangeCardItem.ConfigActId = dbsql.ConfigActId - res.MExchangeCardItem.AutoId = req.MExchangeCardItem.AutoId - - player, ok := G_GameLogicPtr.M_Players[req.MExchangeCardItem.SenderId] - if ok { - if player.GetGameData("PlayerCardCollectData") != nil { - player.GetIFGameData("PlayerCardCollectData").(*PlayerCardCollectData).NotifyGetDonateCard(req.MExchangeCardItem) - } - } - } else { - res.ResultCode = MergeConst.Protocol_Exchange_Card_No_Exsit - } - agent := p.GetPlayer().GetAgentByPlayer() - data, _ := proto.Marshal(res) - G_getGameLogic().PackResInfo(agent, "ResGetDonateCard", data) -} - -func (p *PlayerCardCollectData) ReqRefuseExchange(buf []byte) { - req := &msg.ReqRefuseExchange{} - proto.Unmarshal(buf, req) - res := &msg.ResRefuseExchange{} - - exchange := p.GetExchangeCardItem(req.MExchangeCardItem.AutoId) - if exchange != nil { - res.MExchangeCardItem = req.MExchangeCardItem - if exchange.SenderId == p.M_Player.M_DwUin { - units := strings.Split(req.MExchangeCardItem.EventParam, "_") - cardId, _ := strconv.Atoi(units[0]) - p.AddCard(&p.MsqlStruck[0], int32(cardId), 1, false) - timeStamp := (int64)(time.Now().Unix()) - t := time.Unix(timeStamp, 0).Local() - zero := timeStamp - (int64)(t.Hour()*3600+t.Minute()*60+t.Second()) - - timeStamp1 := (int64)(req.MExchangeCardItem.StartTime) - t1 := time.Unix(timeStamp1, 0).Local() - zero1 := timeStamp1 - (int64)(t1.Hour()*3600+t1.Minute()*60+t1.Second()) - - if zero == zero1 { - - p.MsqlStruck[0].RenewExchangeTime = p.MsqlStruck[0].RenewExchangeTime - 1 - if p.MsqlStruck[0].RenewExchangeTime < 0 { - p.MsqlStruck[0].RenewExchangeTime = 0 - } - p.SaveDataFromDB("") - } - - EventAI := p.M_Player.GetIFGameData("PlayerFriendEventData").(*PlayerFriendEventData).DeleteEventDbData(p.M_Player.M_DwUin, 6, req.MExchangeCardItem.AutoId) - p.M_Player.GetIFGameData("PlayerFriendEventData").(*PlayerFriendEventData).DeleteLocalDataByAutoId(EventAI) - - player, ok := G_GameLogicPtr.M_Players[req.MExchangeCardItem.ReceiveId] - if ok { - if player.GetGameData("PlayerCardCollectData") != nil { - player.GetIFGameData("PlayerCardCollectData").(*PlayerCardCollectData).NOtifyReceiveRefuseExchange(req.MExchangeCardItem) - } - } else { - sqlStr := "SELECT * FROM t_player_card_data WHERE dwUin = ?" - MsqlStruck := db.SqlCardCollectStruct{} - units := strings.Split(req.MExchangeCardItem.EventParam, "_") - cardId, _ := strconv.Atoi(units[1]) - err := db.SqlDb.Get(&MsqlStruck, sqlStr, req.MExchangeCardItem.ReceiveId) - if err != nil { - - } else { - if MsqlStruck.CardInfo != "" { - units := strings.Split(MsqlStruck.CardInfo, ";") - - for i := 0; i < len(units); i++ { - items := strings.Split(units[i], ",") - k, _ := strconv.Atoi(items[0]) - cnt, _ := strconv.Atoi(items[1]) - if k == int(cardId) { - cnt = cnt + 1 - units[i] = items[0] + "," + strconv.Itoa(cnt) - break - } - } - MsqlStruck.CardInfo = strings.Join(units, ";") - } - db.FormatAllMemUpdateDb(&MsqlStruck, "t_player_card_data", "dwUin") - } - - } - } else { - EventAI := p.M_Player.GetIFGameData("PlayerFriendEventData").(*PlayerFriendEventData).DeleteEventDbData(p.M_Player.M_DwUin, 8, req.MExchangeCardItem.AutoId) - p.M_Player.GetIFGameData("PlayerFriendEventData").(*PlayerFriendEventData).DeleteLocalDataByAutoId(EventAI) - - player, ok := G_GameLogicPtr.M_Players[req.MExchangeCardItem.SenderId] - if ok { - if player.GetGameData("PlayerCardCollectData") != nil { - player.GetIFGameData("PlayerCardCollectData").(*PlayerCardCollectData).NOtifyRefuseExchange(req.MExchangeCardItem) - player.GetIFGameData("PlayerCardCollectData").(*PlayerCardCollectData).DeleteExchangeCardItem(req.MExchangeCardItem.AutoId) - } - } else { - sqlStr := "SELECT * FROM t_player_card_data WHERE dwUin = ?" - MsqlStruck := db.SqlCardCollectStruct{} - units := strings.Split(req.MExchangeCardItem.EventParam, "_") - cardId, _ := strconv.Atoi(units[0]) - err := db.SqlDb.Get(&MsqlStruck, sqlStr, req.MExchangeCardItem.SenderId) - if err != nil { - - } else { - if MsqlStruck.CardInfo != "" { - units := strings.Split(MsqlStruck.CardInfo, ";") - - for i := 0; i < len(units); i++ { - items := strings.Split(units[i], ",") - k, _ := strconv.Atoi(items[0]) - cnt, _ := strconv.Atoi(items[1]) - if k == int(cardId) { - cnt = cnt + 1 - units[i] = items[0] + "," + strconv.Itoa(cnt) - break - } - } - MsqlStruck.CardInfo = strings.Join(units, ";") - } - - } - - timeStamp := (int64)(time.Now().Unix()) - t := time.Unix(timeStamp, 0).Local() - zero := timeStamp - (int64)(t.Hour()*3600+t.Minute()*60+t.Second()) - - timeStamp1 := (int64)(req.MExchangeCardItem.StartTime) - t1 := time.Unix(timeStamp1, 0).Local() - zero1 := timeStamp1 - (int64)(t1.Hour()*3600+t1.Minute()*60+t1.Second()) - - if zero == zero1 && err == nil { - MsqlStruck.RenewExchangeTime -= 1 - } - db.FormatAllMemUpdateDb(&MsqlStruck, "t_player_card_data", "dwUin") - } - } - res.RenewExchangeTime = p.MsqlStruck[0].RenewExchangeTime - p.DeleteExchangeCardItem(req.MExchangeCardItem.AutoId) - sqlStr := "DELETE FROM " + "t_Player_ExchangeCard_Box_Data" + " WHERE auto_id = ?" - db.SqlDb.Exec(sqlStr, req.MExchangeCardItem.AutoId) - - } else { - res.ResultCode = MergeConst.Protocol_Exchange_Card_No_Exsit - } - agent := p.GetPlayer().GetAgentByPlayer() - data, _ := proto.Marshal(res) - G_getGameLogic().PackResInfo(agent, "ResRefuseExchange", data) -} - -func (p *PlayerCardCollectData) NOtifyReceiveRefuseExchange(st *msg.ExchangeCardItem) { - units := strings.Split(st.EventParam, "_") - cardId, _ := strconv.Atoi(units[1]) - p.AddCard(&p.MsqlStruck[0], int32(cardId), 1, false) - - p.DeleteExchangeCardItem(st.AutoId) - p.SaveDataFromDB("") - - notify := &msg.NOtifyRefuseExchange{} - notify.MExchangeCardItem = st - agent := p.GetPlayer().GetAgentByPlayer() - data, _ := proto.Marshal(notify) - G_getGameLogic().PackResInfo(agent, "NOtifyRefuseExchange", data) -} - -func (p *PlayerCardCollectData) NOtifyRefuseExchange(st *msg.ExchangeCardItem) { - notify := &msg.NOtifyRefuseExchange{} - notify.MExchangeCardItem = st - - units := strings.Split(st.EventParam, "_") - cardId, _ := strconv.Atoi(units[0]) - p.AddCard(&p.MsqlStruck[0], int32(cardId), 1, false) - - timeStamp := (int64)(time.Now().Unix()) - t := time.Unix(timeStamp, 0).Local() - zero := timeStamp - (int64)(t.Hour()*3600+t.Minute()*60+t.Second()) - - timeStamp1 := (int64)(st.StartTime) - t1 := time.Unix(timeStamp1, 0).Local() - zero1 := timeStamp1 - (int64)(t1.Hour()*3600+t1.Minute()*60+t1.Second()) - // p.DeleteExchangeCardItem(st.AutoId) - if zero == zero1 { - p.MsqlStruck[0].RenewExchangeTime = p.MsqlStruck[0].RenewExchangeTime - 1 - - if p.MsqlStruck[0].RenewExchangeTime < 0 { - p.MsqlStruck[0].RenewExchangeTime = 0 - } - p.SaveDataFromDB("") - } - notify.RenewExchangeTime = p.MsqlStruck[0].RenewExchangeTime - agent := p.GetPlayer().GetAgentByPlayer() - data, _ := proto.Marshal(notify) - G_getGameLogic().PackResInfo(agent, "NOtifyRefuseExchange", data) -} - -func (p *PlayerCardCollectData) NotifyGetDonateCard(st *msg.ExchangeCardItem) { - notify := &msg.NotifyGetDonateCard{} - notify.MExchangeCardItem = st - - p.DeleteExchangeCardItem(st.AutoId) - - agent := p.GetPlayer().GetAgentByPlayer() - data, _ := proto.Marshal(notify) - G_getGameLogic().PackResInfo(agent, "NotifyGetDonateCard", data) -} - -func (p *PlayerCardCollectData) GenExchangeIncID() int32 { - dbsql := db.SqlExchangeCardReqIncStruct{} - dbsql.StartTime = int32(time.Now().Unix()) - - insertId, _ := db.FormatAllMemInsertDb(&dbsql, "t_Player_ExchangeCard_ReqInc") - return int32(insertId) -} - -func (p *PlayerCardCollectData) ReqRequestCard(buf []byte) { - req := &msg.ReqRequestCard{} - proto.Unmarshal(buf, req) - res := &msg.ResRequestCard{} - st := p.FindDbSt(req.ActiveID) - res.ExchangeCardItems = []*msg.ExchangeCardItem{} - if st != nil { - if st.RenewRequestTime >= 2 { - res.ResultCode = MergeConst.Protocol_Active_CardTime_NoEnough - } else { - GroupId := p.GenExchangeIncID() - st.RenewRequestTime = st.RenewRequestTime + 1 - db.FormatAllMemUpdateDb(st, "t_player_card_data", "ActiveID") - for i := 0; i < len(req.ReceiverIds); i++ { - dbsql := db.SqlExchangeCardStruct{} - dbsql.ConfigActId = int32(p.GetCardRecord().Id) - dbsql.SenderId = req.SenderId - dbsql.ReceiveId = req.ReceiverIds[i] - dbsql.GroupId = GroupId - dbsql.ApplicateStatus = 1 - dbsql.StartTime = int32(time.Now().Unix()) - dbsql.EventType = 3 - dbsql.EventParam = strconv.Itoa(int(req.CardId)) - insertId, _ := db.FormatAllMemInsertDb(&dbsql, "t_Player_ExchangeCard_Box_Data") - - MExchangeCardItem := &msg.ExchangeCardItem{} - MExchangeCardItem.SenderId = dbsql.SenderId - MExchangeCardItem.ReceiveId = dbsql.ReceiveId - MExchangeCardItem.GroupId = dbsql.GroupId - MExchangeCardItem.ApplicateStatus = dbsql.ApplicateStatus - MExchangeCardItem.StartTime = dbsql.StartTime - MExchangeCardItem.EventType = dbsql.EventType - MExchangeCardItem.EventParam = dbsql.EventParam - MExchangeCardItem.ConfigActId = dbsql.ConfigActId - MExchangeCardItem.AutoId = int32(insertId) - - p.MExchangeData.ExchangeCardItems = append(p.MExchangeData.ExchangeCardItems, MExchangeCardItem) - res.ExchangeCardItems = append(res.ExchangeCardItems, MExchangeCardItem) - - EventAuid, sqlst, friendInfo := p.M_Player.GetIFGameData("PlayerFriendEventData").(*PlayerFriendEventData).NewFriendEventToDb(5, p.M_Player.M_DwUin, dbsql.ReceiveId, []interface{}{int32(insertId), req.CardId}) - p.M_Player.GetIFGameData("PlayerFriendEventData").(*PlayerFriendEventData).NotifyNewFriendEvent(EventAuid, sqlst, friendInfo) - - player, ok := G_GameLogicPtr.M_Players[dbsql.ReceiveId] - if ok { - if player.GetGameData("PlayerCardCollectData") != nil { - player.GetIFGameData("PlayerCardCollectData").(*PlayerCardCollectData).NotifyRequestCard(MExchangeCardItem) - } - } - - } - } - - } else { - res.ResultCode = MergeConst.Protocol_Active_No_Exsit - } - agent := p.GetPlayer().GetAgentByPlayer() - data, _ := proto.Marshal(res) - G_getGameLogic().PackResInfo(agent, "ResRequestCard", data) - -} -func (p *PlayerCardCollectData) NotifyRequestCard(MExchangeCardItem *msg.ExchangeCardItem) { - - p.MExchangeData.ExchangeCardItems = append(p.MExchangeData.ExchangeCardItems, MExchangeCardItem) - - notify := &msg.NotifyRequestCard{} - notify.ExchangeCardItems = MExchangeCardItem - agent := p.GetPlayer().GetAgentByPlayer() - data, _ := proto.Marshal(notify) - G_getGameLogic().PackResInfo(agent, "NotifyRequestCard", data) - -} - -func (p *PlayerCardCollectData) NotifyFriendCompleteRequestCard(ComId int32, GroupId int32) { - sqlStr := "SELECT * FROM t_Player_ExchangeCard_Box_Data WHERE GroupId = ?" - MsqlExchanges := []db.SqlExchangeCardStruct{} - - if err := db.SqlDb.Select(&MsqlExchanges, sqlStr, GroupId); err != nil { - - } else { - for i := 0; i < len(MsqlExchanges); i++ { - if MsqlExchanges[i].ReceiveId == ComId { - - } else { - sqlStr := "DELETE FROM " + "t_Player_ExchangeCard_Box_Data" + " WHERE auto_id = ?" - db.SqlDb.Exec(sqlStr, MsqlExchanges[i].AutoId) - - player, ok := G_GameLogicPtr.M_Players[MsqlExchanges[i].ReceiveId] - if ok { - if player.GetGameData("PlayerCardCollectData") != nil { - player.GetIFGameData("PlayerCardCollectData").(*PlayerCardCollectData).NotifyHaveFriendCompleteReq(MsqlExchanges[i].AutoId) - } - } - } - } - } - -} - -func (p *PlayerCardCollectData) ReqGetRequestCard(buf []byte) { - req := &msg.ReqGetRequestCard{} - proto.Unmarshal(buf, req) - res := &msg.ResGetRequestCard{} - - ExchangeItem := p.GetExchangeCardItem(req.ExchangeCardItems.AutoId) - - if ExchangeItem != nil { - res.ExchangeCardItems = req.ExchangeCardItems - units := strings.Split(req.ExchangeCardItems.EventParam, "_") - excardId, _ := strconv.Atoi(units[0]) - - p.AddCard(&p.MsqlStruck[0], int32(excardId), 1, false) - p.DeleteExchangeCardItem(req.ExchangeCardItems.AutoId) - sqlStr := "DELETE FROM " + "t_Player_ExchangeCard_Box_Data" + " WHERE auto_id = ?" - db.SqlDb.Exec(sqlStr, req.ExchangeCardItems.AutoId) - - EventAI := p.M_Player.GetIFGameData("PlayerFriendEventData").(*PlayerFriendEventData).DeleteEventDbData(p.M_Player.M_DwUin, 7, req.ExchangeCardItems.AutoId) - p.M_Player.GetIFGameData("PlayerFriendEventData").(*PlayerFriendEventData).DeleteLocalDataByAutoId(EventAI) - - } else { - res.ResultCode = MergeConst.Protocol_Active_CardTime_Outline - res.ExchangeCardItems = req.ExchangeCardItems - } - - agent := p.GetPlayer().GetAgentByPlayer() - data, _ := proto.Marshal(res) - G_getGameLogic().PackResInfo(agent, "ResGetRequestCard", data) -} - -func (p *PlayerCardCollectData) NotifyHaveFriendCompleteReq(AutoId int32) { - - p.DeleteExchangeCardItem(AutoId) - - notify := &msg.NotifyHaveFriendCompleteReq{} - notify.AutoId = AutoId - agent := p.GetPlayer().GetAgentByPlayer() - data, _ := proto.Marshal(notify) - G_getGameLogic().PackResInfo(agent, "NotifyHaveFriendCompleteReq", data) -} - -func (p *PlayerCardCollectData) ReqCompleteRequestCard(buf []byte) { - req := &msg.ReqCompleteRequestCard{} - proto.Unmarshal(buf, req) - res := &msg.ResCompleteRequestCard{} - - ExchangeItem := p.GetExchangeCardItem(req.ExchangeCardItems.AutoId) - st := &p.MsqlStruck[0] - if ExchangeItem != nil { - units := strings.Split(req.ExchangeCardItems.EventParam, "_") - excardId, _ := strconv.Atoi(units[0]) - - if ExchangeItem.StartTime+3600*24 <= int32(time.Now().Unix()) { - res.ResultCode = MergeConst.Protocol_Active_CardTime_Outline - res.ExchangeCardItems = req.ExchangeCardItems - p.DeleteExchangeCardItem(req.ExchangeCardItems.AutoId) - } else { - - res.ExchangeCardItems = &msg.ExchangeCardItem{} - dbsql := db.SqlExchangeCardStruct{} - dbsql.ConfigActId = int32(p.GetCardRecord().Id) - dbsql.SenderId = req.ExchangeCardItems.SenderId - dbsql.ReceiveId = req.ExchangeCardItems.ReceiveId - dbsql.GroupId = req.ExchangeCardItems.GroupId - dbsql.ApplicateStatus = 2 - dbsql.StartTime = req.ExchangeCardItems.StartTime - dbsql.EventType = req.ExchangeCardItems.EventType - dbsql.EventParam = req.ExchangeCardItems.EventParam - dbsql.AutoId = req.ExchangeCardItems.AutoId - - ExchangeItem.ApplicateStatus = 2 - err := db.FormatAllMemUpdateDb(&dbsql, "t_Player_ExchangeCard_Box_Data", "auto_id") - res.ExchangeCardItems.SenderId = dbsql.SenderId - res.ExchangeCardItems.ReceiveId = dbsql.ReceiveId - res.ExchangeCardItems.GroupId = dbsql.GroupId - res.ExchangeCardItems.ApplicateStatus = dbsql.ApplicateStatus - res.ExchangeCardItems.StartTime = dbsql.StartTime - res.ExchangeCardItems.EventType = dbsql.EventType - res.ExchangeCardItems.EventParam = dbsql.EventParam - res.ExchangeCardItems.ConfigActId = dbsql.ConfigActId - res.ExchangeCardItems.AutoId = dbsql.AutoId - - if err == nil { - p.AddCard(st, int32(excardId), -1, false) - p.SaveDataFromDB("") - - EventAuid, sqlst, friendInfo := p.M_Player.GetIFGameData("PlayerFriendEventData").(*PlayerFriendEventData).NewFriendEventToDb(7, dbsql.SenderId, dbsql.ReceiveId, []interface{}{dbsql.AutoId, int32(excardId)}) - - player, ok := G_GameLogicPtr.M_Players[dbsql.SenderId] - if ok { - if player.GetGameData("PlayerCardCollectData") != nil { - player.GetIFGameData("PlayerCardCollectData").(*PlayerCardCollectData).NotifyCompleteRequestCard(res.ExchangeCardItems) - } - if player.GetGameData("PlayerFriendEventData") != nil { - player.GetIFGameData("PlayerFriendEventData").(*PlayerFriendEventData).NotifyNewFriendEvent(EventAuid, sqlst, friendInfo) - } - } - p.NotifyFriendCompleteRequestCard(dbsql.ReceiveId, dbsql.GroupId) - } - - } - } else { - res.ResultCode = MergeConst.Protocol_Active_CardTime_Outline - res.ExchangeCardItems = req.ExchangeCardItems - } - - agent := p.GetPlayer().GetAgentByPlayer() - data, _ := proto.Marshal(res) - G_getGameLogic().PackResInfo(agent, "ResCompleteRequestCard", data) -} - -func (p *PlayerCardCollectData) ReqRefuseRequestCard(buf []byte) { - req := &msg.ReqRefuseRequestCard{} - proto.Unmarshal(buf, req) - res := &msg.ResRefuseRequestCard{} - - ExchangeItem := p.GetExchangeCardItem(req.ExchangeCardItems.AutoId) - - if ExchangeItem != nil { - p.DeleteExchangeCardItem(req.ExchangeCardItems.AutoId) - res.ExchangeCardItems = req.ExchangeCardItems - sqlStr := "DELETE FROM " + "t_Player_ExchangeCard_Box_Data" + " WHERE auto_id = ?" - db.SqlDb.Exec(sqlStr, req.ExchangeCardItems.AutoId) - player, ok := G_GameLogicPtr.M_Players[req.ExchangeCardItems.SenderId] - if ok { - if player.GetGameData("PlayerCardCollectData") != nil { - player.GetIFGameData("PlayerCardCollectData").(*PlayerCardCollectData).NotifyRefuseRequestCard(req.ExchangeCardItems) - } - } else { - sqlStr := "SELECT * FROM t_player_card_data WHERE dwUin = ?" - MsqlStruck := db.SqlCardCollectStruct{} - - err := db.SqlDb.Get(&MsqlStruck, sqlStr, req.ExchangeCardItems.SenderId) - if err != nil { - - } else { - - } - - timeStamp := (int64)(time.Now().Unix()) - t := time.Unix(timeStamp, 0).Local() - zero := timeStamp - (int64)(t.Hour()*3600+t.Minute()*60+t.Second()) - - timeStamp1 := (int64)(req.ExchangeCardItems.StartTime) - t1 := time.Unix(timeStamp1, 0).Local() - zero1 := timeStamp1 - (int64)(t1.Hour()*3600+t1.Minute()*60+t1.Second()) - - if zero == zero1 && err == nil { - MsqlStruck.RenewRequestTime -= 1 - if MsqlStruck.RenewRequestTime < 0 { - MsqlStruck.RenewRequestTime = 0 - } - } - db.FormatAllMemUpdateDb(&MsqlStruck, "t_player_card_data", "dwUin") - } - - } else { - - } - agent := p.GetPlayer().GetAgentByPlayer() - data, _ := proto.Marshal(res) - G_getGameLogic().PackResInfo(agent, "ResRefuseRequestCard", data) -} - -func (p *PlayerCardCollectData) NotifyRefuseRequestCard(st *msg.ExchangeCardItem) { - notify := &msg.NotifyRefuseRequestCard{} - notify.ExchangeCardItems = st - - timeStamp := (int64)(time.Now().Unix()) - t := time.Unix(timeStamp, 0).Local() - zero := timeStamp - (int64)(t.Hour()*3600+t.Minute()*60+t.Second()) - - timeStamp1 := (int64)(st.StartTime) - t1 := time.Unix(timeStamp1, 0).Local() - zero1 := timeStamp1 - (int64)(t1.Hour()*3600+t1.Minute()*60+t1.Second()) - - if zero == zero1 { - p.MsqlStruck[0].RenewRequestTime = p.MsqlStruck[0].RenewRequestTime - 1 - - if p.MsqlStruck[0].RenewRequestTime < 0 { - p.MsqlStruck[0].RenewRequestTime = 0 - } - p.SaveDataFromDB("") - } - - notify.RenewRequestTime = p.MsqlStruck[0].RenewRequestTime - p.DeleteExchangeCardItem(st.AutoId) - agent := p.GetPlayer().GetAgentByPlayer() - data, _ := proto.Marshal(notify) - G_getGameLogic().PackResInfo(agent, "NotifyRefuseRequestCard", data) -} - -func (p *PlayerCardCollectData) NotifyExchangeCard(st *msg.ExchangeCardItem) { - notify := &msg.NotifyExchangeCard{} - notify.MExchangeCardItem = st - - p.MExchangeData.ExchangeCardItems = append(p.MExchangeData.ExchangeCardItems, st) - agent := p.GetPlayer().GetAgentByPlayer() - data, _ := proto.Marshal(notify) - G_getGameLogic().PackResInfo(agent, "NotifyExchangeCard", data) -} - -func (p *PlayerCardCollectData) NotifyDonateFriendCard(st *msg.ExchangeCardItem) { - notify := &msg.NotifyDonateFriendCard{} - notify.MExchangeCardItem = st - p.MExchangeData.ExchangeCardItems = append(p.MExchangeData.ExchangeCardItems, st) - - agent := p.GetPlayer().GetAgentByPlayer() - data, _ := proto.Marshal(notify) - G_getGameLogic().PackResInfo(agent, "NotifyDonateFriendCard", data) -} - -func (p *PlayerCardCollectData) NotifyReceiptCard(st *msg.ExchangeCardItem) { - notify := &msg.NotifyReceiptCard{} - notify.MExchangeCardItem = st - - index := p.GetExchangeCardItemIndex(st.AutoId) - if index >= 0 { - p.MExchangeData.ExchangeCardItems[index] = st - } - - agent := p.GetPlayer().GetAgentByPlayer() - data, _ := proto.Marshal(notify) - G_getGameLogic().PackResInfo(agent, "NotifyReceiptCard", data) -} - -func (p *PlayerCardCollectData) NotifyCompleteExchangeCard(st *msg.ExchangeCardItem) { - notify := &msg.NotifyCompleteExchangeCard{} - notify.MExchangeCardItem = st - - index := p.GetExchangeCardItemIndex(st.AutoId) - if index >= 0 { - p.MExchangeData.ExchangeCardItems[index] = st - } - - agent := p.GetPlayer().GetAgentByPlayer() - data, _ := proto.Marshal(notify) - G_getGameLogic().PackResInfo(agent, "NotifyCompleteExchangeCard", data) -} - -func (p *PlayerCardCollectData) NotifyCompleteRequestCard(st *msg.ExchangeCardItem) { - notify := &msg.NotifyCompleteRequestCard{} - notify.ExchangeCardItems = st - - index := p.GetExchangeCardItemIndex(st.AutoId) - if index >= 0 { - p.MExchangeData.ExchangeCardItems[index] = st - } - - agent := p.GetPlayer().GetAgentByPlayer() - data, _ := proto.Marshal(notify) - G_getGameLogic().PackResInfo(agent, "NotifyCompleteRequestCard", data) -} -func (p *PlayerCardCollectData) NotifyGetExchangeCard(st *msg.ExchangeCardItem) { - notify := &msg.NotifyGetExchangeCard{} - notify.MExchangeCardItem = st - - p.DeleteExchangeCardItem(st.AutoId) - - sqlStr := "DELETE FROM " + "t_Player_ExchangeCard_Box_Data" + " WHERE auto_id = ?" - db.SqlDb.Exec(sqlStr, st.AutoId) - - agent := p.GetPlayer().GetAgentByPlayer() - data, _ := proto.Marshal(notify) - G_getGameLogic().PackResInfo(agent, "NotifyGetExchangeCard", data) -} - -func (p *PlayerCardCollectData) GetExchangeCardItem(AutoId int32) *msg.ExchangeCardItem { - for i := 0; i < len(p.MExchangeData.ExchangeCardItems); i++ { - if p.MExchangeData.ExchangeCardItems[i].AutoId == AutoId { - return p.MExchangeData.ExchangeCardItems[i] - } - } - return nil -} - -func (p *PlayerCardCollectData) GetExchangeCardItemIndex(AutoId int32) int { - index := -1 - for i := 0; i < len(p.MExchangeData.ExchangeCardItems); i++ { - if p.MExchangeData.ExchangeCardItems[i].AutoId == AutoId { - return i - } - } - return index -} - -func (p *PlayerCardCollectData) DeleteExchangeCardItem(AutoId int32) { - for i := 0; i < len(p.MExchangeData.ExchangeCardItems); i++ { - if p.MExchangeData.ExchangeCardItems[i].AutoId == AutoId { - p.MExchangeData.ExchangeCardItems = append(p.MExchangeData.ExchangeCardItems[:i], p.MExchangeData.ExchangeCardItems[i+1:]...) - break - } - } -} - -func (p *PlayerCardCollectData) ReqReceiptCard(buf []byte) { - req := &msg.ReqReceiptCard{} - proto.Unmarshal(buf, req) - res := &msg.ResReceiptCard{} - ExchangeItem := p.GetExchangeCardItem(req.MExchangeCardItem.AutoId) - st := &p.MsqlStruck[0] - if ExchangeItem != nil { - units := strings.Split(req.MExchangeCardItem.EventParam, "_") - cardId, _ := strconv.Atoi(units[0]) - excardId, _ := strconv.Atoi(units[1]) - if ExchangeItem.StartTime+3600*24 <= int32(time.Now().Unix()) { - res.ResultCode = MergeConst.Protocol_Active_CardTime_Outline - res.MExchangeCardItem = req.MExchangeCardItem - p.DeleteExchangeCardItem(req.MExchangeCardItem.AutoId) - } else { - - if p.GetCardCnt(st, int32(excardId)) > 1 { - res.MExchangeCardItem = &msg.ExchangeCardItem{} - dbsql := db.SqlExchangeCardStruct{} - dbsql.ConfigActId = int32(p.GetCardRecord().Id) - dbsql.SenderId = req.MExchangeCardItem.SenderId - dbsql.ReceiveId = req.MExchangeCardItem.ReceiveId - dbsql.GroupId = req.MExchangeCardItem.GroupId - dbsql.ApplicateStatus = 2 - dbsql.StartTime = req.MExchangeCardItem.StartTime - dbsql.EventType = 2 - dbsql.EventParam = req.MExchangeCardItem.EventParam - dbsql.AutoId = req.MExchangeCardItem.AutoId - - err := db.FormatAllMemUpdateDb(&dbsql, "t_Player_ExchangeCard_Box_Data", "auto_id") - res.MExchangeCardItem.SenderId = dbsql.SenderId - res.MExchangeCardItem.ReceiveId = dbsql.ReceiveId - res.MExchangeCardItem.GroupId = dbsql.GroupId - res.MExchangeCardItem.ApplicateStatus = dbsql.ApplicateStatus - res.MExchangeCardItem.StartTime = dbsql.StartTime - res.MExchangeCardItem.EventType = dbsql.EventType - res.MExchangeCardItem.EventParam = dbsql.EventParam - res.MExchangeCardItem.ConfigActId = dbsql.ConfigActId - res.MExchangeCardItem.AutoId = dbsql.AutoId - - if err == nil { - p.DeleteOneCard(st, int32(excardId)) - p.SaveDataFromDB("") - EventAI := p.M_Player.GetIFGameData("PlayerFriendEventData").(*PlayerFriendEventData).DeleteEventDbData(p.M_Player.M_DwUin, 8, req.MExchangeCardItem.AutoId) - p.M_Player.GetIFGameData("PlayerFriendEventData").(*PlayerFriendEventData).DeleteLocalDataByAutoId(EventAI) - - EventAuid, sqlst, friendInfo := p.M_Player.GetIFGameData("PlayerFriendEventData").(*PlayerFriendEventData).NewFriendEventToDb(6, dbsql.SenderId, dbsql.ReceiveId, []interface{}{dbsql.AutoId, int32(excardId), int32(cardId)}) - EventAuid1, sqlst1, friendInfo1 := p.M_Player.GetIFGameData("PlayerFriendEventData").(*PlayerFriendEventData).NewFriendEventToDb(9, dbsql.ReceiveId, dbsql.SenderId, []interface{}{dbsql.AutoId, int32(excardId), int32(cardId)}) - p.M_Player.GetIFGameData("PlayerFriendEventData").(*PlayerFriendEventData).NotifyNewFriendEvent(EventAuid1, sqlst1, friendInfo1) - player, ok := G_GameLogicPtr.M_Players[dbsql.SenderId] - if ok { - if player.GetGameData("PlayerCardCollectData") != nil { - player.GetIFGameData("PlayerCardCollectData").(*PlayerCardCollectData).NotifyReceiptCard(res.MExchangeCardItem) - } - if player.GetGameData("PlayerFriendEventData") != nil { - player.GetIFGameData("PlayerFriendEventData").(*PlayerFriendEventData).NotifyNewFriendEvent(EventAuid, sqlst, friendInfo) - } - } - } - - } else { - res.ResultCode = MergeConst.Protocol_Active_CardFragment_NoEnough - } - - } - } else { - res.ResultCode = MergeConst.Protocol_Active_CardTime_Outline - } - - agent := p.GetPlayer().GetAgentByPlayer() - data, _ := proto.Marshal(res) - G_getGameLogic().PackResInfo(agent, "ResReceiptCard", data) -} - -func (p *PlayerCardCollectData) IsGoldCard(cardId int) bool { - CardDetailCfg := gamedata.GetConfigByName("CardDetailCfg") - record := CardDetailCfg.Index(cardId).(*gamedata.CardDetailRecord) - return record.IsGold == 1 -} - -func (p *PlayerCardCollectData) NotifyDeleteGoldCardSwap() { - notify := &msg.NotifyDeleteGoldCardSwap{} - notify.MExchangeCardItems = []*msg.ExchangeCardItem{} - DeleteIds := []int32{} - temp := []*msg.ExchangeCardItem{} - for i := 0; i < len(p.MExchangeData.ExchangeCardItems); i++ { - if p.MExchangeData.ExchangeCardItems[i].EventType == 2 { - if p.MExchangeData.ExchangeCardItems[i].SenderId == p.M_Player.M_DwUin { - if p.MExchangeData.ExchangeCardItems[i].ApplicateStatus == 1 { - DeleteIds = append(DeleteIds, p.MExchangeData.ExchangeCardItems[i].AutoId) - EventAI := p.M_Player.GetIFGameData("PlayerFriendEventData").(*PlayerFriendEventData).DeleteEventDbData(p.MExchangeData.ExchangeCardItems[i].ReceiveId, 8, p.MExchangeData.ExchangeCardItems[i].AutoId) - p.M_Player.GetIFGameData("PlayerFriendEventData").(*PlayerFriendEventData).DeleteLocalDataByAutoId(EventAI) - p.NOtifyRefuseExchange(p.MExchangeData.ExchangeCardItems[i]) - notify.MExchangeCardItems = append(notify.MExchangeCardItems, p.MExchangeData.ExchangeCardItems[i]) - continue - } - if p.MExchangeData.ExchangeCardItems[i].ApplicateStatus == 2 { - DeleteIds = append(DeleteIds, p.MExchangeData.ExchangeCardItems[i].AutoId) - EventAI := p.M_Player.GetIFGameData("PlayerFriendEventData").(*PlayerFriendEventData).DeleteEventDbData(p.M_Player.M_DwUin, 6, p.MExchangeData.ExchangeCardItems[i].AutoId) - p.M_Player.GetIFGameData("PlayerFriendEventData").(*PlayerFriendEventData).DeleteLocalDataByAutoId(EventAI) - - player, ok := G_GameLogicPtr.M_Players[p.MExchangeData.ExchangeCardItems[i].ReceiveId] - if ok { - if player.GetGameData("PlayerCardCollectData") != nil { - player.GetIFGameData("PlayerCardCollectData").(*PlayerCardCollectData).NOtifyReceiveRefuseExchange(p.MExchangeData.ExchangeCardItems[i]) - } - } else { - sqlStr := "SELECT * FROM t_player_card_data WHERE dwUin = ?" - MsqlStruck := db.SqlCardCollectStruct{} - units := strings.Split(p.MExchangeData.ExchangeCardItems[i].EventParam, "_") - cardId, _ := strconv.Atoi(units[1]) - err := db.SqlDb.Get(&MsqlStruck, sqlStr, p.MExchangeData.ExchangeCardItems[i].ReceiveId) - if err != nil { - - } else { - if MsqlStruck.CardInfo != "" { - units := strings.Split(MsqlStruck.CardInfo, ";") - - for i := 0; i < len(units); i++ { - items := strings.Split(units[i], ",") - k, _ := strconv.Atoi(items[0]) - cnt, _ := strconv.Atoi(items[1]) - if k == int(cardId) { - cnt = cnt + 1 - units[i] = items[0] + "," + strconv.Itoa(cnt) - break - } - } - MsqlStruck.CardInfo = strings.Join(units, ";") - } - db.FormatAllMemUpdateDb(&MsqlStruck, "t_player_card_data", "dwUin") - } - - } - p.NOtifyRefuseExchange(p.MExchangeData.ExchangeCardItems[i]) - notify.MExchangeCardItems = append(notify.MExchangeCardItems, p.MExchangeData.ExchangeCardItems[i]) - continue - } - } - - } - temp = append(temp, p.MExchangeData.ExchangeCardItems[i]) - } - p.MExchangeData.ExchangeCardItems = temp - p.DeleteOutlineCardExchange(DeleteIds, "t_Player_ExchangeCard_Box_Data") - - agent := p.GetPlayer().GetAgentByPlayer() - data, _ := proto.Marshal(notify) - G_getGameLogic().PackResInfo(agent, "NotifyDeleteGoldCardSwap", data) - -} - -func (p *PlayerCardCollectData) ReqGetExchangeCard(buf []byte) { - req := &msg.ReqGetExchangeCard{} - proto.Unmarshal(buf, req) - res := &msg.ResGetExchangeCard{} - ExchangeItem := p.GetExchangeCardItem(req.MExchangeCardItem.AutoId) - st := &p.MsqlStruck[0] - if ExchangeItem != nil { - - units := strings.Split(req.MExchangeCardItem.EventParam, "_") - excardId, _ := strconv.Atoi(units[0]) - - res.MExchangeCardItem = &msg.ExchangeCardItem{} - dbsql := db.SqlExchangeCardStruct{} - dbsql.ConfigActId = int32(p.GetCardRecord().Id) - dbsql.SenderId = req.MExchangeCardItem.SenderId - dbsql.ReceiveId = req.MExchangeCardItem.ReceiveId - dbsql.GroupId = req.MExchangeCardItem.GroupId - dbsql.ApplicateStatus = 4 - dbsql.StartTime = req.MExchangeCardItem.StartTime - dbsql.EventType = 2 - dbsql.EventParam = req.MExchangeCardItem.EventParam - dbsql.AutoId = req.MExchangeCardItem.AutoId - ExchangeItem.ApplicateStatus = 4 - - err := db.FormatAllMemUpdateDb(&dbsql, "t_Player_ExchangeCard_Box_Data", "auto_id") - res.MExchangeCardItem.SenderId = dbsql.SenderId - res.MExchangeCardItem.ReceiveId = dbsql.ReceiveId - res.MExchangeCardItem.GroupId = dbsql.GroupId - res.MExchangeCardItem.ApplicateStatus = dbsql.ApplicateStatus - res.MExchangeCardItem.StartTime = dbsql.StartTime - res.MExchangeCardItem.EventType = dbsql.EventType - res.MExchangeCardItem.EventParam = dbsql.EventParam - res.MExchangeCardItem.ConfigActId = dbsql.ConfigActId - res.MExchangeCardItem.AutoId = dbsql.AutoId - - if err == nil { - p.AddCard(st, int32(excardId), 1, false) - p.SaveDataFromDB("") - - EventAI := p.M_Player.GetIFGameData("PlayerFriendEventData").(*PlayerFriendEventData).DeleteEventDbData(p.M_Player.M_DwUin, 11, req.MExchangeCardItem.AutoId) - p.M_Player.GetIFGameData("PlayerFriendEventData").(*PlayerFriendEventData).DeleteLocalDataByAutoId(EventAI) - - player, ok := G_GameLogicPtr.M_Players[dbsql.SenderId] - if ok { - if player.GetGameData("PlayerCardCollectData") != nil { - player.GetIFGameData("PlayerCardCollectData").(*PlayerCardCollectData).NotifyGetExchangeCard(res.MExchangeCardItem) - } - } - } - - } else { - res.ResultCode = MergeConst.Protocol_Active_CardTime_Outline - res.MExchangeCardItem = req.MExchangeCardItem - } - - agent := p.GetPlayer().GetAgentByPlayer() - data, _ := proto.Marshal(res) - G_getGameLogic().PackResInfo(agent, "ResGetExchangeCard", data) -} - -func (p *PlayerCardCollectData) CloseNewLimitActivity(args []interface{}) { - record := args[0].(*gamedata.ActivityRecord) - - if record.Type != p.MActType { - return - } - - notify := &msg.NotifyLimitedTimeActiveEnd{} - notify.DwUin = p.M_Player.M_DwUin - notify.MActiveList = []*msg.LimitedTimeEndStruct{} - - for i := 0; i < len(p.MsqlStruck); i++ { - item := p.MsqlStruck[i] - if int(item.ConfigActId) == record.Id { - msg := &msg.LimitedTimeEndStruct{} - msg.ActiveID = item.ActiveID - msg.Type = int32(record.Type) - notify.MActiveList = append(notify.MActiveList, msg) - } - } - p.MisDirty = true - agent := p.GetPlayer().GetAgentByPlayer() - data, _ := proto.Marshal(notify) - G_getGameLogic().PackResInfo(agent, "NotifyLimitedTimeActiveEnd", data) -} - -func (p *PlayerCardCollectData) Reconnect(b bool) { - GoUtil.RemoveEvent(MergeConst.CloseNewLimitActivity, p.CloseNewLimitActivity, p) - GoUtil.RegisterEvent(MergeConst.CloseNewLimitActivity, p.CloseNewLimitActivity, p) - GoUtil.RemoveEvent(MergeConst.Notify_Daily_Renew, p.NotifyDailyRenew, p) - GoUtil.RegisterEvent(MergeConst.Notify_Daily_Renew, p.NotifyDailyRenew, p) - p.PlayerActiveData.Reconnect(b) - if b { - p.LoadDataFromDB(p.M_Player.M_DwUin) - } -} -func (p *PlayerCardCollectData) NotifyDailyRenew(args []interface{}) { - timeStamp := (int64)(time.Now().Unix()) - t := time.Unix(timeStamp, 0).Local() - zero := timeStamp - (int64)(t.Hour()*3600+t.Minute()*60+t.Second()) - for i := 0; i < len(p.MsqlStruck); i++ { - - if p.MsqlStruck[i].RenewSvrTime < int32(zero) { - p.MsqlStruck[i].RenewSvrTime = int32(zero) - p.MsqlStruck[i].RenewExchangeTime = 0 - p.MsqlStruck[i].RenewRequestTime = 0 - p.NotifyCardDailyRenew(&p.MsqlStruck[i]) - } - } -} - -func (p *PlayerCardCollectData) FindDbSt(activeId int32) *db.SqlCardCollectStruct { - for i := 0; i < len(p.MsqlStruck); i++ { - if p.MsqlStruck[i].ActiveID == activeId { - return &p.MsqlStruck[i] - } - } - return nil -} - -func (p *PlayerCardCollectData) ResCardCollectDetail(buf []byte) { - req := &msg.ReqCardCollectDetail{} - proto.Unmarshal(buf, req) - st := p.FindDbSt(req.ActiveID) - res := &msg.ResCardCollectDetail{} - if st != nil { - - res.ActiveID = st.ActiveID - res.CardInfo = st.CardInfo - res.Fragment = st.Fragment - res.FinalReward = st.FinalReward - res.CardRewardInfo = st.CardRewardInfo - res.MasterCards = st.MasterCards - res.CurSvrTime = int32(time.Now().Unix()) - res.StartSvrTime = st.StartSvrTime - res.EndSvrTime = st.EndSvrTime - res.DwUin = p.M_Player.M_DwUin - res.Universal = st.Universal - res.RenewSvrTime = st.RenewSvrTime - res.RenewExchangeTime = st.RenewExchangeTime - res.RenewRequestTime = st.RenewRequestTime - res.ResultCode = 0 - - } else { - res.ResultCode = MergeConst.Protocol_Active_No_Exsit - } - agent := p.GetPlayer().GetAgentByPlayer() - data, _ := proto.Marshal(res) - G_getGameLogic().PackResInfo(agent, "ResCardCollectDetail", data) -} - -func (p *PlayerCardCollectData) NotifyCardDailyRenew(st *db.SqlCardCollectStruct) { - - notify := &msg.NotifyCardDailyRenew{} - notify.ActiveID = st.ActiveID - notify.RenewExchangeTime = st.RenewExchangeTime - notify.RenewRequestTime = st.RenewRequestTime - - agent := p.GetPlayer().GetAgentByPlayer() - data, _ := proto.Marshal(notify) - G_getGameLogic().PackResInfo(agent, "NotifyCardDailyRenew", data) - p.SaveDataFromDB("") -} - -func (p *PlayerCardCollectData) GetIsGetRewardById(st *db.SqlCardCollectStruct, id int32) bool { - if st.CardRewardInfo == "" { - return false - } else { - units := strings.Split(st.CardRewardInfo, ",") - for i := 0; i < len(units); i++ { - cnt, _ := strconv.Atoi(units[i]) - if int32(cnt) == id { - return true - } - } - } - return false -} - -func (p *PlayerCardCollectData) GetAlbumRewardById(st *db.SqlCardCollectStruct, id int32) { - if st.CardRewardInfo == "" { - st.CardRewardInfo = strconv.Itoa(int(id)) - } else { - st.CardRewardInfo = st.CardRewardInfo + "," + strconv.Itoa(int(id)) - } -} - -func (p *PlayerCardCollectData) DeleteOneCard(st *db.SqlCardCollectStruct, id int32) { - if st.CardInfo != "" { - units := strings.Split(st.CardInfo, ";") - isHave := false - for i := 0; i < len(units); i++ { - items := strings.Split(units[i], ",") - k, _ := strconv.Atoi(items[0]) - cnt, _ := strconv.Atoi(items[1]) - if k == int(id) { - cnt = cnt - 1 - units[i] = items[0] + "," + strconv.Itoa(cnt) - isHave = true - break - } - } - if !isHave { - - } else { - st.CardInfo = strings.Join(units, ";") - } - - } -} - -func (p *PlayerCardCollectData) GetCardCnt(st *db.SqlCardCollectStruct, id int32) int { - Cnt := 0 - if st.CardInfo != "" { - units := strings.Split(st.CardInfo, ";") - for i := 0; i < len(units); i++ { - items := strings.Split(units[i], ",") - k, _ := strconv.Atoi(items[0]) - cnt, _ := strconv.Atoi(items[1]) - if k == int(id) { - return cnt - } - } - } - return Cnt -} - -func (p *PlayerCardCollectData) AddCard(st *db.SqlCardCollectStruct, id int32, count int32, isAddFragment bool) int32 { - AddFragment := 0 - CardDetailCfg := gamedata.GetConfigByName("CardDetailCfg") - record1 := CardDetailCfg.Index(int(id)) - record := record1.(*gamedata.CardDetailRecord) - if st.CardInfo != "" { - units := strings.Split(st.CardInfo, ";") - isHave := false - for i := 0; i < len(units); i++ { - items := strings.Split(units[i], ",") - k, _ := strconv.Atoi(items[0]) - cnt, _ := strconv.Atoi(items[1]) - if k == int(id) { - cnt = cnt + int(count) - units[i] = items[0] + "," + strconv.Itoa(cnt) - AddFragment = AddFragment + int(count)*int(record.Star) - isHave = true - break - } - } - if !isHave { - st.CardInfo = st.CardInfo + ";" + strconv.Itoa(int(id)) + "," + strconv.Itoa(int(count)) - AddFragment = AddFragment + int(count-1)*int(record.Star) - } else { - st.CardInfo = strings.Join(units, ";") - } - - } else { - st.CardInfo = strconv.Itoa(int(id)) + "," + strconv.Itoa(int(count)) - AddFragment = AddFragment + int(count-1)*int(record.Star) - } - if !isAddFragment { - AddFragment = 0 - } - return int32(AddFragment) -} - -func (p *PlayerCardCollectData) ReqAddCard(buf []byte) { - req := &msg.ReqAddCard{} - proto.Unmarshal(buf, req) - st := p.FindDbSt(req.ActiveID) - res := &msg.ResAddCard{} - - if st != nil { - res.ActiveID = st.ActiveID - res.Id = req.Id - res.Count = req.Count - st.Universal = st.Universal + req.Count - AddFragment := p.AddCard(st, req.Id, req.Count, true) - st.Fragment = st.Fragment + AddFragment - res.Fragment = st.Fragment - } else { - res.ResultCode = MergeConst.Protocol_Active_No_Exsit - } - agent := p.GetPlayer().GetAgentByPlayer() - data, _ := proto.Marshal(res) - G_getGameLogic().PackResInfo(agent, "ResAddCard", data) - p.SaveDataFromDB("") -} - -func (p *PlayerCardCollectData) ResUnpackCard(buf []byte) { - req := &msg.ReqUnpackCard{} - proto.Unmarshal(buf, req) - st := p.FindDbSt(req.ActiveID) - res := &msg.ResUnpackCard{} - - if st != nil { - res.ActiveID = st.ActiveID - res.CardIds = req.CardIds - res.CardCnts = req.CardCnts - res.PackID = req.PackID - var AddFragment int32 = 0 - for i := 0; i < len(req.CardIds); i++ { - add := p.AddCard(st, req.CardIds[i], req.CardCnts[i], true) - AddFragment = AddFragment + add - st.Universal = st.Universal + req.CardCnts[i] - } - st.Fragment = st.Fragment + AddFragment - res.Fragment = st.Fragment - } else { - res.ResultCode = MergeConst.Protocol_Active_No_Exsit - } - agent := p.GetPlayer().GetAgentByPlayer() - data, _ := proto.Marshal(res) - G_getGameLogic().PackResInfo(agent, "ResUnpackCard", data) - p.SaveDataFromDB("") -} - -func (p *PlayerCardCollectData) ReqUpdateStickerCount(buf []byte) { - req := &msg.ReqUpdateStickerCount{} - res := &msg.ResUpdateStickerCount{} - proto.Unmarshal(buf, req) - st := p.FindDbSt(req.ActiveID) - - if st != nil { - st.Fragment += req.Sticker - } else { - res.ResultCode = MergeConst.Protocol_Active_No_Exsit - } - agent := p.GetPlayer().GetAgentByPlayer() - data, _ := proto.Marshal(res) - G_getGameLogic().PackResInfo(agent, "ResUpdateStickerCount", data) - p.SaveDataFromDB("") -} - -func (p *PlayerCardCollectData) AddMasterCard(st *db.SqlCardCollectStruct, id int32, count int32) { - if st.MasterCards != "" { - units := strings.Split(st.MasterCards, ";") - isHave := false - for i := 0; i < len(units); i++ { - items := strings.Split(units[i], ",") - k, _ := strconv.Atoi(items[0]) - cnt, _ := strconv.Atoi(items[1]) - if k == int(id) { - cnt = cnt + int(count) - units[i] = items[0] + "," + strconv.Itoa(cnt) - isHave = true - break - } - } - if !isHave { - st.MasterCards = st.MasterCards + ";" + strconv.Itoa(int(id)) + "," + strconv.Itoa(int(count)) - } else { - st.MasterCards = strings.Join(units, ";") - } - - } else { - st.MasterCards = strconv.Itoa(int(id)) + "," + strconv.Itoa(int(count)) - } -} - -func (p *PlayerCardCollectData) ReqAddMasterCard(buf []byte) { - req := &msg.ReqAddMasterCard{} - proto.Unmarshal(buf, req) - st := p.FindDbSt(req.ActiveID) - res := &msg.ResAddMasterCard{} - - if st != nil { - res.ActiveID = st.ActiveID - res.Id = req.Id - res.Count = req.Count - p.AddMasterCard(st, req.Id, req.Count) - } else { - res.ResultCode = MergeConst.Protocol_Active_No_Exsit - } - agent := p.GetPlayer().GetAgentByPlayer() - data, _ := proto.Marshal(res) - G_getGameLogic().PackResInfo(agent, "ResAddMasterCard", data) - p.SaveDataFromDB("") -} - -func (p *PlayerCardCollectData) UseMasterCard(st *db.SqlCardCollectStruct, id int32, count int32) bool { - if st.MasterCards != "" { - units := strings.Split(st.MasterCards, ";") - isHave := false - for i := 0; i < len(units); i++ { - items := strings.Split(units[i], ",") - k, _ := strconv.Atoi(items[0]) - cnt, _ := strconv.Atoi(items[1]) - if k == int(id) && cnt >= int(count) { - cnt = cnt - int(count) - units[i] = items[0] + "," + strconv.Itoa(cnt) - isHave = true - break - } - } - if !isHave { - // st.MasterCards = st.MasterCards + ";" + strconv.Itoa(int(id)) + "," + strconv.Itoa(int(count)) - } else { - st.MasterCards = strings.Join(units, ";") - return true - } - - } else { - // st.MasterCards = strconv.Itoa(int(id)) + "," + strconv.Itoa(int(count)) - } - return false -} - -func (p *PlayerCardCollectData) ReqBuyStickerItem(buf []byte) { - req := &msg.ReqBuyStickerItem{} - proto.Unmarshal(buf, req) - st := p.FindDbSt(req.ActiveID) - res := &msg.ResBuyStickerItem{} - - if st != nil { - res.ActiveID = st.ActiveID - - if st.Fragment >= req.CostSticker { - st.Fragment = st.Fragment - req.CostSticker - res.Id = req.Id - res.CurFragment = st.Fragment - res.ResultCode = 0 - } else { - res.ResultCode = MergeConst.Protocol_Active_CardFragment_NoEnough - } - - } else { - res.ResultCode = MergeConst.Protocol_Active_No_Exsit - } - agent := p.GetPlayer().GetAgentByPlayer() - data, _ := proto.Marshal(res) - G_getGameLogic().PackResInfo(agent, "ResBuyStickerItem", data) - p.SaveDataFromDB("") -} - -func (p *PlayerCardCollectData) ReqUseMasterCard(buf []byte) { - req := &msg.ReqUseMasterCard{} - proto.Unmarshal(buf, req) - st := p.FindDbSt(req.ActiveID) - res := &msg.ResUseMasterCard{} - - if st != nil { - res.ActiveID = st.ActiveID - - res.MasterId = req.MasterId - res.ExchangeCardId = req.ExchangeCardId - isUse := p.UseMasterCard(st, req.MasterId, 1) - if isUse { - AddFrament := p.AddCard(st, req.ExchangeCardId, 1, true) - st.Fragment = st.Fragment + AddFrament - res.Fragment = st.Fragment - res.ResultCode = 0 - } else { - res.ResultCode = MergeConst.Protocol_Active_Card_NoEnough - } - - } else { - res.ResultCode = MergeConst.Protocol_Active_No_Exsit - } - agent := p.GetPlayer().GetAgentByPlayer() - data, _ := proto.Marshal(res) - G_getGameLogic().PackResInfo(agent, "ResUseMasterCard", data) - p.SaveDataFromDB("") -} -func (p *PlayerCardCollectData) ResGetCardAlbumReward(buf []byte) { - req := &msg.ReqGetCardAlbumReward{} - proto.Unmarshal(buf, req) - st := p.FindDbSt(req.ActiveID) - res := &msg.ResGetCardAlbumReward{} - if st != nil { - res.ActiveID = st.ActiveID - res.Id = req.Id - if p.GetIsGetRewardById(st, req.Id) { - res.ResultCode = MergeConst.Protocol_Active_Card_Rewarded - } else { - res.ResultCode = 0 - p.GetAlbumRewardById(st, req.Id) - p.SaveDataFromDB("") - } - } else { - res.ResultCode = MergeConst.Protocol_Active_No_Exsit - } - agent := p.GetPlayer().GetAgentByPlayer() - data, _ := proto.Marshal(res) - G_getGameLogic().PackResInfo(agent, "ResGetCardAlbumReward", data) -} - -func (p *PlayerCardCollectData) ResGetAllCardReward(buf []byte) { - req := &msg.ReqGetAllCardReward{} - proto.Unmarshal(buf, req) - st := p.FindDbSt(req.ActiveID) - res := &msg.ResGetAllCardReward{} - if st != nil { - if st.FinalReward == int32(1) { - res.ResultCode = MergeConst.Protocol_Active_Card_Rewarded - } else { - res.ResultCode = 0 - st.FinalReward = 1 - p.SaveDataFromDB("") - } - } else { - res.ResultCode = MergeConst.Protocol_Active_No_Exsit - } - agent := p.GetPlayer().GetAgentByPlayer() - data, _ := proto.Marshal(res) - G_getGameLogic().PackResInfo(agent, "ResGetAllCardReward", data) -} - -func (p *PlayerCardCollectData) SaveDataFromDB(Key interface{}) bool { - for i := 0; i < len(p.MsqlStruck); i++ { - item := p.MsqlStruck[i] - db.FormatAllMemUpdateDb(&item, "t_player_card_data", "ActiveID") - } - return true -} -func (p *PlayerCardCollectData) ClearData() bool { - p.SaveDataFromDB("") - GoUtil.RemoveEvent(MergeConst.CloseNewLimitActivity, p.CloseNewLimitActivity, p) - GoUtil.RemoveEvent(MergeConst.Notify_Daily_Renew, p.NotifyDailyRenew, p) - p.PlayerActiveData.ClearData() - - return true -} diff --git a/src/server/game/PlayerActiveManager.go b/src/server/game/PlayerActiveManager.go deleted file mode 100644 index 8252e825..00000000 --- a/src/server/game/PlayerActiveManager.go +++ /dev/null @@ -1,208 +0,0 @@ -package game - -import ( - "server/db" - "server/gamedata" - "server/msg" - - "google.golang.org/protobuf/proto" -) - -type PlayerActiveMgr struct { - M_Player *Player -} - -func (p *PlayerActiveMgr) OpenNewLimitActivity(args []interface{}) { - notify := &msg.NotifyLimitedTimeActiveData{} - notify.MActiveList = []*msg.LimitedTimeActiveStruct{} - - id := args[0].(int) - activityCfg := gamedata.GetConfigByName("Activity") - record := activityCfg.Index(id).(*gamedata.ActivityRecord) - - act := &msg.LimitedTimeActiveStruct{} - act.StartSvrTime = args[1].(int32) - act.EndSvrTime = args[2].(int32) - act.Type = int32(record.Type) - ActiveID := args[3].(int32) - if act.Type == 1 { - - if ActiveID == int32(0) { - act.ActiveID = G_GameLogicPtr.InitPassportInsertDb(p.M_Player, act.StartSvrTime, act.EndSvrTime, id) - } else { - act.ActiveID = ActiveID - } - actor := &PlayerPassportData{PlayerActiveData: NewActiveData("PlayerPassportData", p.M_Player)} - ok := actor.LoadDataFromDB(p.M_Player.M_DwUin) - if ok { - p.M_Player.playerdata["PlayerPassportData"] = actor - p.M_Player.playerdataIF["PlayerPassportData"] = actor - } - - } - if act.Type == 2 { - if ActiveID == int32(0) { - act.ActiveID = G_GameLogicPtr.InitPromotionInsertDb(p.M_Player, act.StartSvrTime, act.EndSvrTime, id) - } else { - act.ActiveID = ActiveID - } - actor := &PlayerPromotionData{PlayerActiveData: NewActiveData("PlayerPromotionData", p.M_Player)} - ok := actor.LoadDataFromDB(p.M_Player.M_DwUin) - if ok { - p.M_Player.playerdata["PlayerPromotionData"] = actor - p.M_Player.playerdataIF["PlayerPromotionData"] = actor - } - } - if act.Type == 3 { - if ActiveID == int32(0) { - act.ActiveID = G_GameLogicPtr.InitInfinitePackInsertDb(p.M_Player, act.StartSvrTime, act.EndSvrTime, id) - } else { - act.ActiveID = ActiveID - } - actor := &PlayerInfinitePackData{PlayerActiveData: NewActiveData("PlayerInfinitePackData", p.M_Player)} - ok := actor.LoadDataFromDB(p.M_Player.M_DwUin) - if ok { - p.M_Player.playerdata["PlayerInfinitePackData"] = actor - p.M_Player.playerdataIF["PlayerInfinitePackData"] = actor - } - } - - if act.Type == 4 { - if ActiveID == int32(0) { - act.ActiveID = G_GameLogicPtr.Init7DayLoginInsertDb(p.M_Player, act.StartSvrTime, act.EndSvrTime, id) - } else { - act.ActiveID = ActiveID - } - actor := &Player7DayLoginData{PlayerActiveData: NewActiveData("Player7DayLoginData", p.M_Player)} - ok := actor.LoadDataFromDB(p.M_Player.M_DwUin) - if ok { - p.M_Player.playerdata["Player7DayLoginData"] = actor - p.M_Player.playerdataIF["Player7DayLoginData"] = actor - } - } - - if act.Type == 5 { - if ActiveID == int32(0) { - act.ActiveID = G_GameLogicPtr.InitCardCollectInsertDb(p.M_Player, act.StartSvrTime, act.EndSvrTime, id) - } else { - act.ActiveID = ActiveID - } - actor := &PlayerCardCollectData{PlayerActiveData: NewActiveData("PlayerCardCollectData", p.M_Player)} - ok := actor.LoadDataFromDB(p.M_Player.M_DwUin) - if ok { - p.M_Player.playerdata["PlayerCardCollectData"] = actor - p.M_Player.playerdataIF["PlayerCardCollectData"] = actor - } - } - - notify.MActiveList = append(notify.MActiveList, act) - data, _ := proto.Marshal(notify) - agent := p.M_Player.GetAgentByPlayer() - G_GameLogicPtr.PackResInfo(agent, "NotifyLimitedTimeActiveData", data) -} - -func NewActiveData(dataName string, player *Player) *PlayerActiveData { - act := &PlayerActiveData{ - PlayerData: NewPlayerData(dataName, player), - MisDirty: false, - } - - return act -} - -func (p *PlayerActiveMgr) InitActiveMgr(player *Player) { - p.M_Player = player - activityCfg := gamedata.GetConfigByName("Activity") - map1 := make(map[int]string) - map1[1] = "t_player_LimitPassport" - map1[2] = "t_player_LimitPromotion" - map1[3] = "t_player_LimitInfinitePack" - map1[4] = "t_player_Limit7DayLogin" - map1[5] = "t_player_card_data" - for i := 0; i < len(G_GameLogicPtr.M_LimitActiveList); i++ { - Id := G_GameLogicPtr.M_LimitActiveList[i] - record := activityCfg.Index(Id).(*gamedata.ActivityRecord) - sqlStr := "Select * From " + map1[record.Type] + " Where ConfigActId = ? And dwUin = ?" - if record.Type == 1 { - struct1 := []db.SqlLimitPassportStruct{} - st := G_GameLogicPtr.GetActiveParamById(Id) - Start := st.StartTime - EndTime := st.EndTime - if err := db.SqlDb.Select(&struct1, sqlStr, Id, player.M_DwUin); err != nil { - p.OpenNewLimitActivity([]interface{}{Id, Start, EndTime, int32(0)}) - } else { - if len(struct1) == 0 { - p.OpenNewLimitActivity([]interface{}{Id, Start, EndTime, int32(0)}) - } else { - p.OpenNewLimitActivity([]interface{}{Id, Start, EndTime, struct1[0].ActiveID}) - } - } - - } - if record.Type == 2 { - struct1 := []db.SqlLimitPromotionStruct{} - st := G_GameLogicPtr.GetActiveParamById(Id) - Start := st.StartTime - EndTime := st.EndTime - if err := db.SqlDb.Select(&struct1, sqlStr, Id, player.M_DwUin); err != nil { - p.OpenNewLimitActivity([]interface{}{Id, Start, EndTime, int32(0)}) - } else { - if len(struct1) == 0 { - p.OpenNewLimitActivity([]interface{}{Id, Start, EndTime, int32(0)}) - } else { - p.OpenNewLimitActivity([]interface{}{Id, Start, EndTime, struct1[0].ActiveID}) - } - } - } - if record.Type == 3 { - struct1 := []db.SqlLimitInfinitePackStruct{} - st := G_GameLogicPtr.GetActiveParamById(Id) - Start := st.StartTime - EndTime := st.EndTime - if err := db.SqlDb.Select(&struct1, sqlStr, Id, player.M_DwUin); err != nil { - p.OpenNewLimitActivity([]interface{}{Id, Start, EndTime, int32(0)}) - } else { - if len(struct1) == 0 { - p.OpenNewLimitActivity([]interface{}{Id, Start, EndTime, int32(0)}) - } else { - p.OpenNewLimitActivity([]interface{}{Id, Start, EndTime, struct1[0].ActiveID}) - } - } - - } - if record.Type == 4 { - struct1 := []db.SqlSevenDayLoginStruct{} - st := G_GameLogicPtr.GetActiveParamById(Id) - Start := st.StartTime - EndTime := st.EndTime - if err := db.SqlDb.Select(&struct1, sqlStr, Id, player.M_DwUin); err != nil { - p.OpenNewLimitActivity([]interface{}{Id, Start, EndTime, int32(0)}) - } else { - if len(struct1) == 0 { - p.OpenNewLimitActivity([]interface{}{Id, Start, EndTime, int32(0)}) - } else { - p.OpenNewLimitActivity([]interface{}{Id, Start, EndTime, struct1[0].ActiveID}) - } - } - - } - - if record.Type == 5 { - struct1 := []db.SqlCardCollectStruct{} - st := G_GameLogicPtr.GetActiveParamById(Id) - Start := st.StartTime - EndTime := st.EndTime - if err := db.SqlDb.Select(&struct1, sqlStr, Id, player.M_DwUin); err != nil { - p.OpenNewLimitActivity([]interface{}{Id, Start, EndTime, int32(0)}) - } else { - if len(struct1) == 0 { - p.OpenNewLimitActivity([]interface{}{Id, Start, EndTime, int32(0)}) - } else { - p.OpenNewLimitActivity([]interface{}{Id, Start, EndTime, struct1[0].ActiveID}) - } - } - - } - - } -} diff --git a/src/server/game/PlayerBaseMod.go b/src/server/game/PlayerBaseMod.go index 16d2b9df..522f5802 100644 --- a/src/server/game/PlayerBaseMod.go +++ b/src/server/game/PlayerBaseMod.go @@ -141,7 +141,7 @@ func (p *PlayerBaseData) LoadDataFromDB(UserName interface{}) bool { p.Data.FaceBookId = sqlStruck.FaceBookId p.McronSave = cron.New() p.Reconnect(false) - p.AddCompensateEmail() + p.KeyValueData = make(map[int]string) if len(sqlStruck1.ModData) > 0 { var buf bytes.Buffer @@ -189,10 +189,6 @@ func (p *PlayerBaseData) Reconnect(b bool) { GoUtil.RegisterEvent(MergeConst.Notify_Daily_Renew, p.Notify_Daily_Renew, p) } -func (p *PlayerBaseData) AddCompensateEmail() { - G_GameLogicPtr.MOldPlayerCompensateMgr.SendEmailToDb(p.Data.UserName, p.Data.DwUin) -} - func (p *PlayerBaseData) SetChampshipID(ChampshipsGroupID int32, isNotify bool) { p.Data.LastChampGroupID = p.Data.ChampshipsGroupID p.Data.ChampshipsGroupID = ChampshipsGroupID @@ -751,7 +747,6 @@ func (p *PlayerBaseData) GetDataByUid(Uid interface{}) bool { p.Data.FaceBookId = sqlStruck.FaceBookId p.McronSave = cron.New() p.Reconnect(false) - p.AddCompensateEmail() return true } diff --git a/src/server/game/PlayerChessMod.go b/src/server/game/PlayerChessMod.go index 39870300..cb79c931 100644 --- a/src/server/game/PlayerChessMod.go +++ b/src/server/game/PlayerChessMod.go @@ -5,14 +5,11 @@ import ( "math" "server/GoUtil" mergeDataCfg "server/conf/mergeData" - "server/db" "server/game/mod/item" "server/game/mod/quest" "server/msg" "server/pkg/github.com/name5566/leaf/log" "sort" - "strconv" - "strings" "google.golang.org/protobuf/proto" ) @@ -24,51 +21,7 @@ type PlayerChessData struct { } func (p *PlayerChessData) LoadDataFromDB(dwUin interface{}) bool { - sqlStr := "SELECT * FROM t_player_chess_data WHERE dwUin = ?" - sqlStruck := db.SqlChessStruct{} - p.Data.MChessData = make(map[string]int32) - p.ColorData.MChessColorData = make(map[string]int32) - if err := db.SqlDb.Get(&sqlStruck, sqlStr, dwUin.(int32)); err != nil { - - p.IsHaveDataDb = false - } else { - p.IsHaveDataDb = true - } - - if sqlStruck.MChessData != "" { - arr := strings.Split(sqlStruck.MChessData, "_") - - for i := 0; i < len(arr); i++ { - ss := strings.Split(arr[i], ",") - id, err := strconv.ParseInt(ss[1], 10, 32) - key := ss[0] - - if err != nil { - panic(err) - } - - p.Data.MChessData[key] = int32(id) - } - } - if sqlStruck.MChessColorData != "" { - arr := strings.Split(sqlStruck.MChessColorData, "_") - - for i := 0; i < len(arr); i++ { - ss := strings.Split(arr[i], ",") - id, err := strconv.ParseInt(ss[1], 10, 32) - key := ss[0] - - if err != nil { - panic(err) - } - - p.ColorData.MChessColorData[key] = int32(id) - } - } - - p.Data.DwUin = dwUin.(int32) - p.Reconnect(false) return true } @@ -76,58 +29,8 @@ func (p *PlayerChessData) Reconnect(b bool) { } -func (p *PlayerChessData) SetValueByKey(k string) { - if k != "" { - p.Data.MChessData[k] = p.Data.MChessData[k] + 1 - } -} - -func (p *PlayerChessData) GetValueByKey(k string) int32 { - - v, ok := p.Data.MChessData[k] - if ok { - return v - } - return -1 -} -func (p *PlayerChessData) GetKeyByEmitID(EmitID int32) string { - for k := range p.Data.MChessData { - units := strings.Split(k, "@") - if len(units) >= 4 { - n, _ := strconv.Atoi(units[3]) - if EmitID == int32(n) { - return k - } - } - } - return "" -} - func (p *PlayerChessData) SaveDataFromDB(Key interface{}) bool { - var strarr []string - var strarr1 []string - for k, v := range p.Data.MChessData { - str := fmt.Sprintf("%s,%d", k, v) - strarr = append(strarr, str) - } - str_concat := strings.Join(strarr, "_") - for k, v := range p.ColorData.MChessColorData { - str := fmt.Sprintf("%s,%d", k, v) - strarr1 = append(strarr1, str) - } - str_concat1 := strings.Join(strarr1, "_") - - sqlStruck := db.SqlChessStruct{} - sqlStruck.DwUin = p.M_Player.M_DwUin - sqlStruck.MChessData = str_concat - sqlStruck.MChessColorData = str_concat1 - if p.IsHaveDataDb { - db.FormatAllMemUpdateDb(&sqlStruck, "t_player_chess_data", "dwUin") - } else { - db.FormatAllMemInsertDb(&sqlStruck, "t_player_chess_data") - } - p.IsHaveDataDb = true return true } @@ -319,30 +222,6 @@ func (p *PlayerChessData) HandleChess(handle_list []*msg.ChessHandle) error { return nil } -func (p *PlayerChessData) UpdateChessColorData(buf []byte) { - update := &msg.UpdateChessColorData{} - err := proto.Unmarshal(buf, update) - if err != nil { - fmt.Println("unmarshal failed, err:", err) - return - - } - p.ColorData.MChessColorData = update.MChessColorData - -} -func (p *PlayerChessData) GetChestKeyByValue(id int32) string { - for k, v := range p.Data.MChessData { - if id == v { - return k - } - } - return "" -} - func (p *PlayerChessData) ClearData() bool { - p.SaveDataFromDB("") return true } - -//******************************************************************************** -// api diff --git a/src/server/game/PlayerDataModule.go b/src/server/game/PlayerDataModule.go index 1d3a47d6..7068b39c 100644 --- a/src/server/game/PlayerDataModule.go +++ b/src/server/game/PlayerDataModule.go @@ -1,27 +1,8 @@ package game -import ( - // "fmt" +// "fmt" - "fmt" - "sort" - - // "math" - "server/GoUtil" - "server/MergeConst" - mergeDataCfg "server/conf/mergeData" - "server/db" - "server/gamedata" - "server/msg" - "strconv" - "strings" - "time" - - "server/pkg/github.com/name5566/leaf/timer" - - cmap "github.com/orcaman/concurrent-map/v2" - "google.golang.org/protobuf/proto" -) +// "math" type PlayerDataModule interface { LoadDataFromDB(key interface{}) bool @@ -79,2087 +60,3 @@ func NewPlayerData(name string, player *Player) *PlayerData { M_Player: player, } } - -type PlayerEmitDetailData struct { - *PlayerData - Data msg.ResEmitMergeMap - CountData msg.ResEmitCountMap - TimeData msg.ResEmitCDStartData - // MLeafTimerList map[int32]*timer.Timer - MLeafTimerList cmap.ConcurrentMap[string, *timer.Timer] - Mdispatr *timer.Dispatcher -} - -func (p *PlayerEmitDetailData) LoadDataFromDB(dwUin interface{}) bool { - sqlStr := "SELECT * FROM t_Emit_detail_data WHERE dwUin = ?" - sqlStruck := db.SqlEmitStruct{} - p.Mdispatr = timer.NewDispatcher(1) - p.Data.MEmitMergeData = make(map[int32]int32) - p.CountData.MEmitCountData = make(map[int32]int32) - p.TimeData.MEmitCDData = make(map[int32]int32) - // p.MLeafTimerList = make(map[int32]*timer.Timer) - p.MLeafTimerList = cmap.New[*timer.Timer]() - if err := db.SqlDb.Get(&sqlStruck, sqlStr, dwUin.(int32)); err != nil { - fmt.Printf("t_Emit_detail_data get data failed, err:%v\n", err) - p.IsHaveDataDb = false - } else { - p.IsHaveDataDb = true - } - if sqlStruck.MEmitMergeData != "" { - units := strings.Split(sqlStruck.MEmitMergeData, "_") - for i := 0; i < len(units); i++ { - unit := units[i] - ss := strings.Split(unit, ",") - key, _ := strconv.ParseInt(ss[0], 10, 32) - value, _ := strconv.ParseInt(ss[1], 10, 32) - p.Data.MEmitMergeData[int32(key)] = int32(value) - } - } - if sqlStruck.MEmitCountData != "" { - units1 := strings.Split(sqlStruck.MEmitCountData, "_") - for i := 0; i < len(units1); i++ { - unit := units1[i] - ss := strings.Split(unit, ",") - key, _ := strconv.ParseInt(ss[0], 10, 32) - value, _ := strconv.ParseInt(ss[1], 10, 32) - p.CountData.MEmitCountData[int32(key)] = int32(value) - } - } - if sqlStruck.MEmitTimeData != "" { - units2 := strings.Split(sqlStruck.MEmitTimeData, "_") - for i := 0; i < len(units2); i++ { - unit := units2[i] - ss := strings.Split(unit, ",") - key, _ := strconv.ParseInt(ss[0], 10, 32) - value, _ := strconv.ParseInt(ss[1], 10, 32) - p.TimeData.MEmitCDData[int32(key)] = int32(value) - } - } - tempMap := make(map[int32]int32) - isDelete := false - for k, v := range p.TimeData.MEmitCDData { - MergeId := p.GetMergeIDByChestid(k) - if int(MergeId) != 0 { - tempMap[k] = v - } else { - isDelete = true - } - } - p.TimeData.MEmitCDData = tempMap - if isDelete { - p.SaveDataFromDB("") - } - - p.Reconnect(false) - - return true -} - -func (p *PlayerEmitDetailData) Reconnect(b bool) { - for k, v := range p.TimeData.MEmitCDData { - MergeId := p.GetMergeIDByChestid(k) - item, _ := mergeDataCfg.GetOne(int(MergeId)) - cnt := p.M_Player.GetIFGameData("PlayerEmitUnlockData").(*PlayerEmitUnlockData).GetUnlockCntByID(k) - cool := float32(item.CoolTime)*(1.0+0.2*float32(cnt)) + float32(v) - deltaTime := int32(cool) - int32(time.Now().Unix()) - if deltaTime > 0 { - EmitID := k - go func() { - - LeafTimer := p.Mdispatr.AfterFunc(time.Duration(deltaTime)*time.Second, func() { - p.NotifyEmitCDTimeEndData(EmitID) - // delete(p.MLeafTimerList, EmitID) - p.MLeafTimerList.Remove(strconv.Itoa(int(EmitID))) - }) - // p.MLeafTimerList[EmitID] = LeafTimer - p.MLeafTimerList.Set(strconv.Itoa(int(EmitID)), LeafTimer) - (<-p.Mdispatr.ChanTimer).Cb() - }() - } else { - delete(p.TimeData.MEmitCDData, k) - } - - } - p.NotifyInitEmitCDTimeData() -} - -func (p *PlayerEmitDetailData) NotifyInitEmitCDTimeData() { - notify := &msg.NotifyInitEmitCDTimeData{} - notify.MEmitCDData = make(map[int32]int32) - notify.MEmitCDData = p.TimeData.MEmitCDData - - agent := p.GetPlayer().GetAgentByPlayer() - data, _ := proto.Marshal(notify) - G_GameLogicPtr.PackResInfo(agent, "NotifyInitEmitCDTimeData", data) -} - -func (p *PlayerEmitDetailData) NotifyEmitCDTimeEndData(EmitID int32) { - notify := &msg.NotifyEmitCDTimeEndData{} - notify.MEmitCDData = make(map[int32]int32) - notify.MEmitCDData[EmitID] = 0 - - agent := p.GetPlayer().GetAgentByPlayer() - data, _ := proto.Marshal(notify) - G_GameLogicPtr.PackResInfo(agent, "NotifyEmitCDTimeEndData", data) -} - -func (p *PlayerEmitDetailData) ClearEmitCD(id int32) { - -} - -func (p *PlayerEmitDetailData) ClearAllEmitCD() { - - for k := range p.TimeData.MEmitCDData { - p.TimeData.MEmitCDData[k] = 0 - p.ClearEmitCD(k) - } - keys := p.MLeafTimerList.Keys() - for _, k := range keys { - v, _ := p.MLeafTimerList.Get(k) - v.Disabled() - p.Mdispatr.ChanTimer <- v - v.Stop() - } - p.MLeafTimerList.Clear() - for k := range p.TimeData.MEmitCDData { - delete(p.TimeData.MEmitCDData, k) - } - - p.NotifyInitEmitCDTimeData() -} - -func (p *PlayerEmitDetailData) ReqEmitSubCD(buf []byte) { - update := &msg.ReqEmitSubCD{} - proto.Unmarshal(buf, update) - - _, ok := p.TimeData.MEmitCDData[update.EmitID] - if ok { - if update.Type == 3 { - p.TimeData.MEmitCDData[update.EmitID] = p.TimeData.MEmitCDData[update.EmitID] - 60*30 - } - ///diamond - if update.Type == 2 { - p.TimeData.MEmitCDData[update.EmitID] = 0 - } - ///diamond - if update.Type == 4 { - p.TimeData.MEmitCDData[update.EmitID] = 0 - } - if update.Type == 1 { - p.TimeData.MEmitCDData[update.EmitID] = 0 - } - } - ////ad - keys := p.MLeafTimerList.Keys() - for _, k := range keys { - v, _ := p.MLeafTimerList.Get(k) - v.Disabled() - p.Mdispatr.ChanTimer <- v - v.Stop() - } - p.MLeafTimerList.Clear() - - for k, v := range p.TimeData.MEmitCDData { - MergeId := p.GetMergeIDByChestid(k) - item, _ := mergeDataCfg.GetOne(int(MergeId)) - cnt := p.M_Player.GetIFGameData("PlayerEmitUnlockData").(*PlayerEmitUnlockData).GetUnlockCntByID(k) - cool := float32(item.CoolTime)*(1.0+0.2*float32(cnt)) + float32(v) - deltaTime := int32(cool) - int32(time.Now().Unix()) - if deltaTime > 0 { - EmitID := k - go func() { - LeafTimer := p.Mdispatr.AfterFunc(time.Duration(deltaTime)*time.Second, func() { - p.NotifyEmitCDTimeEndData(EmitID) - p.MLeafTimerList.Remove(strconv.Itoa(int(EmitID))) - }) - p.MLeafTimerList.Set(strconv.Itoa(int(EmitID)), LeafTimer) - (<-p.Mdispatr.ChanTimer).Cb() - }() - } else { - delete(p.TimeData.MEmitCDData, k) - } - } - p.NotifyInitEmitCDTimeData() -} - -func (p *PlayerEmitDetailData) ClearData() bool { - p.SaveDataFromDB("") - keys := p.MLeafTimerList.Keys() - for _, k := range keys { - v, _ := p.MLeafTimerList.Get(k) - v.Disabled() - p.Mdispatr.ChanTimer <- v - v.Stop() - } - p.MLeafTimerList.Clear() - // for _, v := range p.MLeafTimerList { - // v.Disabled() - // p.Mdispatr.ChanTimer <- v - // v.Stop() - // } - // for k := range p.MLeafTimerList { - // delete(p.MLeafTimerList, k) - // } - - return true -} -func (p *PlayerEmitDetailData) SaveDataFromDB(Key interface{}) bool { - - sqlStruck := db.SqlEmitStruct{} - sqlStruck.DwUin = p.M_Player.M_DwUin - strarr := []string{} - strarr1 := []string{} - strarr2 := []string{} - for k, v := range p.Data.MEmitMergeData { - str := fmt.Sprintf("%d,%d", k, v) - strarr = append(strarr, str) - } - for k, v := range p.CountData.MEmitCountData { - str := fmt.Sprintf("%d,%d", k, v) - strarr1 = append(strarr1, str) - } - for k, v := range p.TimeData.MEmitCDData { - str := fmt.Sprintf("%d,%d", k, v) - strarr2 = append(strarr2, str) - } - str_concat := strings.Join(strarr, "_") - str_concat1 := strings.Join(strarr1, "_") - str_concat2 := strings.Join(strarr2, "_") - - sqlStruck.MEmitMergeData = str_concat - sqlStruck.MEmitCountData = str_concat1 - sqlStruck.MEmitTimeData = str_concat2 - - if p.IsHaveDataDb { - db.FormatAllMemUpdateDb(&sqlStruck, "t_Emit_detail_data", "dwUin") - } else { - db.FormatAllMemInsertDb(&sqlStruck, "t_Emit_detail_data") - } - p.IsHaveDataDb = true - return true -} - -func (p *PlayerEmitDetailData) GetMergeIDByChestid(emitId int32) int32 { - _, ok := p.Data.MEmitMergeData[emitId] - if ok { - return p.Data.MEmitMergeData[emitId] - } - return 0 -} - -func (p *PlayerEmitDetailData) SetMergeIDByChestid(emitId int32, MergeId int32) { - - p.Data.MEmitMergeData[emitId] = MergeId - -} - -func (p *PlayerEmitDetailData) ResEmitMergeMap(buf []byte) { - update := &msg.ReqEmitMergeMap{} - proto.Unmarshal(buf, update) - - agent := p.GetPlayer().GetAgentByPlayer() - data, _ := proto.Marshal(&p.Data) - G_GameLogicPtr.PackResInfo(agent, "ResEmitMergeMap", data) -} - -func (p *PlayerEmitDetailData) ResEmitCountMap(buf []byte) { - update := &msg.ReqEmitCountMap{} - proto.Unmarshal(buf, update) - - agent := p.GetPlayer().GetAgentByPlayer() - data, _ := proto.Marshal(&p.CountData) - G_GameLogicPtr.PackResInfo(agent, "ResEmitCountMap", data) -} - -func (p *PlayerEmitDetailData) ResEmitCDStartData(buf []byte) { - update := &msg.ReqEmitCDStartData{} - proto.Unmarshal(buf, update) - - MergeId := p.GetMergeIDByChestid(update.EmitID) - item, _ := mergeDataCfg.GetOne(int(MergeId)) - CurTime := time.Now().Unix() - - cnt := p.M_Player.GetIFGameData("PlayerEmitUnlockData").(*PlayerEmitUnlockData).GetUnlockCntByID(update.EmitID) - deltaTime := float32(item.CoolTime) * (1.0 + 0.2*float32(cnt)) - if deltaTime > 0 { - EmitID := update.EmitID - go func() { - - LeafTimer := p.Mdispatr.AfterFunc(time.Duration(int32(deltaTime))*time.Second, func() { - p.NotifyEmitCDTimeEndData(EmitID) - // delete(p.MLeafTimerList, EmitID) - p.MLeafTimerList.Remove(strconv.Itoa(int(EmitID))) - }) - // p.MLeafTimerList[EmitID] = LeafTimer - p.MLeafTimerList.Set(strconv.Itoa(int(EmitID)), LeafTimer) - (<-p.Mdispatr.ChanTimer).Cb() - }() - p.TimeData.MEmitCDData[EmitID] = int32(CurTime) - } - - agent := p.GetPlayer().GetAgentByPlayer() - data, _ := proto.Marshal(&p.TimeData) - G_GameLogicPtr.PackResInfo(agent, "ResEmitCDStartData", data) -} - -func (p *PlayerEmitDetailData) UpdateEmitCountMap(buf []byte) { - update := &msg.UpdateEmitCountMap{} - proto.Unmarshal(buf, update) - - p.CountData.MEmitCountData = update.MEmitCountData - p.SaveDataFromDB("") -} - -func (p *PlayerEmitDetailData) UpdateEmitMergeMap(buf []byte) { - update := &msg.UpdateEmitMergeMap{} - proto.Unmarshal(buf, update) - - p.Data.MEmitMergeData = update.MEmitMergeData - p.SaveDataFromDB("") -} - -////////////////////////////////// - -//////////////////////// - -type PlayerLevelUpPackData struct { - *PlayerData - Data msg.ResLevelUpPackInfo -} - -func (p *PlayerLevelUpPackData) LoadDataFromDB(dwUin interface{}) bool { - - sqlStr := "SELECT * FROM t_player_lv_Pack WHERE dwUin = ?" - sqlStruck := db.SqlLevelUpPackStruct{} - sqlStruck.CurBuyedLv = 0 - if err := db.SqlDb.Get(&sqlStruck, sqlStr, dwUin.(int32)); err != nil { - - p.IsHaveDataDb = false - } else { - p.IsHaveDataDb = true - } - p.Data.DwUin = p.M_Player.M_DwUin - p.Data.CurBuyLv = sqlStruck.CurBuyedLv - return true -} -func (p *PlayerLevelUpPackData) Reconnect(b bool) { - -} - -func (p *PlayerLevelUpPackData) ClearData() bool { - p.SaveDataFromDB("") - - return true -} -func (p *PlayerLevelUpPackData) SaveDataFromDB(Key interface{}) bool { - - sqlStruck := db.SqlLevelUpPackStruct{} - sqlStruck.DwUin = p.M_Player.M_DwUin - sqlStruck.CurBuyedLv = p.Data.CurBuyLv - - // if p.IsHaveDataDb { - // db.FormatAllMemUpdateDb(&sqlStruck, "t_player_lv_Pack", "dwUin") - // } else { - // db.FormatAllMemInsertDb(&sqlStruck, "t_player_lv_Pack") - // } - p.IsHaveDataDb = true - return true -} - -func (p *PlayerLevelUpPackData) ResLevelUpPackInfo(player *Player) { - - agent := p.GetPlayer().GetAgentByPlayer() - data, _ := proto.Marshal(&p.Data) - G_GameLogicPtr.PackResInfo(agent, "ResLevelUpPackInfo", data) -} - -func (p *PlayerLevelUpPackData) ReqBuyLevelUpPack(buf []byte) { - req := &msg.ReqBuyLevelUpPack{} - res := &msg.ResBuyLevelUpPack{} - proto.Unmarshal(buf, req) - - list := gamedata.GetConfigByName("LevelUpBuyPack").Indexes(1) - recode, ok := list[int(req.CurBuyLv)] - if ok { - if req.CurBuyLv <= p.Data.CurBuyLv { - res.ResultCode = MergeConst.Protocol_LvUpPack_Buyed - } else { - recode = recode.(*gamedata.LevelUpPackRecord) - res.ResultCode = 0 - res.CurBuyLv = req.CurBuyLv - p.Data.CurBuyLv = req.CurBuyLv - p.SaveDataFromDB("") - } - } else { - res.ResultCode = MergeConst.Protocol_LvUpPack_No_Exsit - } - - agent := p.GetPlayer().GetAgentByPlayer() - data, _ := proto.Marshal(res) - G_GameLogicPtr.PackResInfo(agent, "ResBuyLevelUpPack", data) -} - -//////////////////////// - -type PlayerGrowthFundData struct { - *PlayerData - Data msg.ResGrowthFundInfo -} - -func (p *PlayerGrowthFundData) LoadDataFromDB(dwUin interface{}) bool { - - sqlStr := "SELECT * FROM t_player_growth_fund WHERE dwUin = ?" - sqlStruck := db.SqlGrowthFundStruct{} - sqlStruck.CurBuyLv = "" - sqlStruck.IsBuy = 0 - if err := db.SqlDb.Get(&sqlStruck, sqlStr, dwUin.(int32)); err != nil { - - p.IsHaveDataDb = false - } else { - p.IsHaveDataDb = true - } - p.Data.DwUin = p.M_Player.M_DwUin - p.Data.CurBuyLv = sqlStruck.CurBuyLv - p.Data.IsBuy = sqlStruck.IsBuy - return true -} -func (p *PlayerGrowthFundData) Reconnect(b bool) { - -} - -func (p *PlayerGrowthFundData) ClearData() bool { - p.SaveDataFromDB("") - - return true -} -func (p *PlayerGrowthFundData) SaveDataFromDB(Key interface{}) bool { - - sqlStruck := db.SqlGrowthFundStruct{} - sqlStruck.DwUin = p.M_Player.M_DwUin - sqlStruck.CurBuyLv = p.Data.CurBuyLv - sqlStruck.IsBuy = p.Data.IsBuy - // if p.IsHaveDataDb { - // db.FormatAllMemUpdateDb(&sqlStruck, "t_player_growth_fund", "dwUin") - // } else { - // db.FormatAllMemInsertDb(&sqlStruck, "t_player_growth_fund") - // } - p.IsHaveDataDb = true - return true -} - -func (p *PlayerGrowthFundData) ResGrowthFundInfo(player *Player) { - - agent := p.GetPlayer().GetAgentByPlayer() - data, _ := proto.Marshal(&p.Data) - G_GameLogicPtr.PackResInfo(agent, "ResGrowthFundInfo", data) -} - -func (p *PlayerGrowthFundData) ReqBuyGrowthFund(buf []byte) { - req := &msg.ReqBuyGrowthFund{} - res := &msg.ResBuyGrowthFund{} - proto.Unmarshal(buf, req) - - p.Data.IsBuy = 1 - res.ResultCode = 0 - p.SaveDataFromDB("") - - agent := p.GetPlayer().GetAgentByPlayer() - data, _ := proto.Marshal(res) - G_GameLogicPtr.PackResInfo(agent, "ResBuyGrowthFund", data) -} - -func (p *PlayerGrowthFundData) ReqGetGrowthFundWard(buf []byte) { - req := &msg.ReqGetGrowthFundWard{} - res := &msg.ResGetGrowthFundWard{} - proto.Unmarshal(buf, req) - - res.ResultCode = 0 - res.CurBuyLv = req.CurBuyLv - isGet := false - if p.Data.CurBuyLv != "" { - units := strings.Split(p.Data.CurBuyLv, ",") - for i := 0; i < len(units); i++ { - con, _ := strconv.Atoi(units[i]) - if con == int(req.CurBuyLv) { - isGet = true - break - } - } - } - - if !isGet { - res.ResultCode = 0 - if p.Data.CurBuyLv == "" { - p.Data.CurBuyLv = strconv.Itoa(int(req.CurBuyLv)) - } else { - p.Data.CurBuyLv = p.Data.CurBuyLv + "," + strconv.Itoa(int(req.CurBuyLv)) - } - - } else { - res.ResultCode = MergeConst.Protocol_GrowthFund_Geted - } - p.SaveDataFromDB("") - - agent := p.GetPlayer().GetAgentByPlayer() - data, _ := proto.Marshal(res) - G_GameLogicPtr.PackResInfo(agent, "ResGetGrowthFundWard", data) -} - -//////////////////////// - -type PlayerSupermeGiftData struct { - *PlayerData - Data msg.ResSupremeGiftInfo - Mdispatr *timer.Dispatcher - MLeafTimer *timer.Timer - MLeafTimer1 *timer.Timer -} - -func (p *PlayerSupermeGiftData) LoadDataFromDB(dwUin interface{}) bool { - - sqlStr := "SELECT * FROM t_player_supremeGift_data WHERE dwUin = ?" - sqlStruck := db.SqlSupermeGiftStruct{} - - sqlStruck.IsBuy = 0 - if err := db.SqlDb.Get(&sqlStruck, sqlStr, dwUin.(int32)); err != nil { - - p.IsHaveDataDb = false - } else { - p.IsHaveDataDb = true - } - p.Data.DwUin = p.M_Player.M_DwUin - - p.Data.IsBuy = sqlStruck.IsBuy - p.Data.NoAdStartTime = sqlStruck.NoAdStartTime - p.Data.NoAdEndTime = sqlStruck.NoAdEndTime - p.Data.StorgeEndTime = sqlStruck.StorgeEndTime - p.Data.StorgeStartTime = sqlStruck.StorgeStartTime - p.Mdispatr = timer.NewDispatcher(2) - p.Reconnect(false) - return true -} - -func (p *PlayerSupermeGiftData) CreateTimer() { - - curSvrTime := int32(time.Now().Unix()) - if p.Data.NoAdEndTime > curSvrTime { - go func() { - // 注释内容也可以使用 - t1 := (p.Data.NoAdEndTime) - curSvrTime - - p.MLeafTimer = p.Mdispatr.AfterFunc(time.Duration(t1)*time.Second, func() { - - p.NotifySupremeGiftTimeOver(1) - p.MLeafTimer = nil - - }) - - (<-p.Mdispatr.ChanTimer).Cb() - - }() - } - if p.Data.StorgeEndTime > curSvrTime { - go func() { - // 注释内容也可以使用 - t1 := (p.Data.StorgeEndTime) - curSvrTime - - p.MLeafTimer1 = p.Mdispatr.AfterFunc(time.Duration(t1)*time.Second, func() { - p.NotifySupremeGiftTimeOver(2) - p.MLeafTimer1 = nil - }) - (<-p.Mdispatr.ChanTimer).Cb() - }() - } - -} - -func (p *PlayerSupermeGiftData) Reconnect(b bool) { - - p.CreateTimer() - -} - -func (p *PlayerSupermeGiftData) ClearData() bool { - p.SaveDataFromDB("") - if p.MLeafTimer != nil { - p.MLeafTimer.Stop() - p.MLeafTimer = nil - } - if p.MLeafTimer1 != nil { - p.MLeafTimer1.Stop() - p.MLeafTimer1 = nil - } - return true -} -func (p *PlayerSupermeGiftData) SaveDataFromDB(Key interface{}) bool { - - sqlStruck := db.SqlSupermeGiftStruct{} - sqlStruck.DwUin = p.M_Player.M_DwUin - sqlStruck.NoAdStartTime = p.Data.NoAdStartTime - sqlStruck.NoAdEndTime = p.Data.NoAdEndTime - sqlStruck.StorgeStartTime = p.Data.StorgeStartTime - sqlStruck.StorgeEndTime = p.Data.StorgeEndTime - sqlStruck.IsBuy = p.Data.IsBuy - - // if p.IsHaveDataDb { - // db.FormatAllMemUpdateDb(&sqlStruck, "t_player_supremeGift_data", "dwUin") - // } else { - // db.FormatAllMemInsertDb(&sqlStruck, "t_player_supremeGift_data") - // } - p.IsHaveDataDb = true - return true -} - -func (p *PlayerSupermeGiftData) ResSupremeGiftInfo(player *Player) { - - p.Data.CurSvrTime = int32(time.Now().Unix()) - agent := p.GetPlayer().GetAgentByPlayer() - data, _ := proto.Marshal(&p.Data) - G_GameLogicPtr.PackResInfo(agent, "ResSupremeGiftInfo", data) -} - -func (p *PlayerSupermeGiftData) ReqBuySupremeGift(buf []byte) { - req := &msg.ReqBuySupremeGift{} - res := &msg.ResBuySupremeGift{} - proto.Unmarshal(buf, req) - - res.ResultCode = 0 - res.NoAdStartTime = int32(time.Now().Unix()) - res.NoAdEndTime = res.NoAdStartTime + 3600*24 - - res.StorgeStartTime = res.NoAdStartTime - res.StorgeEndTime = res.StorgeStartTime + 3600*24 - res.CurSvrTime = res.NoAdStartTime - - p.Data.IsBuy = 1 - p.Data.NoAdStartTime = res.NoAdStartTime - p.Data.NoAdEndTime = res.NoAdStartTime + 3600*24 - - p.Data.StorgeStartTime = res.NoAdStartTime - p.Data.StorgeEndTime = res.StorgeStartTime + 3600*24 - p.Data.CurSvrTime = res.NoAdStartTime - - p.SaveDataFromDB("") - p.CreateTimer() - agent := p.GetPlayer().GetAgentByPlayer() - data, _ := proto.Marshal(res) - G_GameLogicPtr.PackResInfo(agent, "ResBuySupremeGift", data) -} - -func (p *PlayerSupermeGiftData) NotifySupremeGiftTimeOver(type1 int32) { - notify := &msg.NotifySupremeGiftTimeOver{} - notify.Type = type1 - notify.CurSvrTime = int32(time.Now().Unix()) - - agent := p.GetPlayer().GetAgentByPlayer() - data, _ := proto.Marshal(notify) - G_GameLogicPtr.PackResInfo(agent, "NotifySupremeGiftTimeOver", data) -} - -///////////////////////////////////////////// - -type PlayerIllustrateData struct { - *PlayerData - Data msg.ResIllustratedInfo - sqlStrucks []db.SqlIllustrateStruct -} - -func (p *PlayerIllustrateData) LoadDataFromDB(dwUin interface{}) bool { - - sqlStr := "SELECT * FROM t_player_illustrated_data WHERE dwUin = ?" - p.sqlStrucks = []db.SqlIllustrateStruct{} - - if err := db.SqlDb.Select(&p.sqlStrucks, sqlStr, dwUin.(int32)); err != nil { - - p.IsHaveDataDb = false - } else { - p.IsHaveDataDb = true - } - p.Data.DwUin = p.M_Player.M_DwUin - p.Data.Datas = []*msg.CategoryIllustratedData{} - - for i := 0; i < len(p.sqlStrucks); i++ { - data := msg.CategoryIllustratedData{} - data.Category = p.sqlStrucks[i].Category - data.Items = []*msg.SingleIllustratedItem{} - data.IllustratedID = p.sqlStrucks[i].IllustratedID - str := p.sqlStrucks[i].ItemInfoStr - if str != "" { - MergeInfo := strings.Split(str, ";") - for m := 0; m < len(MergeInfo); m++ { - item := MergeInfo[m] - units := strings.Split(item, ",") - single := msg.SingleIllustratedItem{} - MergeId, _ := strconv.Atoi(units[0]) - Status, _ := strconv.Atoi(units[1]) - single.MergeId = int32(MergeId) - single.Status = int32(Status) - data.Items = append(data.Items, &single) - } - } - p.Data.Datas = append(p.Data.Datas, &data) - } - p.Reconnect(false) - return true -} - -func (p *PlayerIllustrateData) Reconnect(b bool) { - -} - -func (p *PlayerIllustrateData) ClearData() bool { - p.SaveDataFromDB("") - - return true -} - -func (p *PlayerIllustrateData) SaveDataFromDBSingle(Category string, isUpdate bool) { - - // dbs db.SqlIllustrateStruct - - data := p.FindIllustratedDataByCategory(Category) - sqlStruck := db.SqlIllustrateStruct{} - sqlStruck.Category = Category - sqlStruck.DwUin = p.M_Player.M_DwUin - sqlStruck.IllustrateType = 1 - sqlStruck.IllustratedID = data.IllustratedID - sqlStruck.ItemInfoStr = "" - - finalStr := []string{} - for i := 0; i < len(data.Items); i++ { - temp := strconv.Itoa(int(data.Items[i].MergeId)) + "," + strconv.Itoa(int(data.Items[i].Status)) - finalStr = append(finalStr, temp) - } - - sqlStruck.ItemInfoStr = strings.Join(finalStr, ";") - if isUpdate { - db.FormatAllMemUpdateDb(&sqlStruck, "t_player_illustrated_data", "IllustratedID") - } else { - insertID, _ := db.FormatAllMemInsertDb(&sqlStruck, "t_player_illustrated_data") - data.IllustratedID = int32(insertID) - } -} - -func (p *PlayerIllustrateData) SaveDataFromDB(Key interface{}) bool { - - return true -} - -func (p *PlayerIllustrateData) ResIllustratedInfo(player *Player) { - - agent := p.GetPlayer().GetAgentByPlayer() - data, _ := proto.Marshal(&p.Data) - G_GameLogicPtr.PackResInfo(agent, "ResIllustratedInfo", data) -} - -func (p *PlayerIllustrateData) FindIllustratedDataByCategory(Category string) *msg.CategoryIllustratedData { - for i := 0; i < len(p.Data.Datas); i++ { - if p.Data.Datas[i].Category == Category { - return p.Data.Datas[i] - } - } - return nil -} - -func (p *PlayerIllustrateData) FindMergeInfoById(mergeId int32, data *msg.CategoryIllustratedData) *msg.SingleIllustratedItem { - for i := 0; i < len(data.Items); i++ { - if mergeId == data.Items[i].MergeId { - return data.Items[i] - } - } - return nil -} - -func (p *PlayerIllustrateData) ReqGetIllustrateItemReward(buf []byte) { - req := &msg.ReqGetIllustrateItemReward{} - res := &msg.ResGetIllustrateItemReward{} - proto.Unmarshal(buf, req) - - res.ResultCode = 0 - res.Category = req.Category - data := p.FindIllustratedDataByCategory(req.Category) - if data == nil { - res.ResultCode = MergeConst.Protocol_Illustrate_InActive - } else { - Item := p.FindMergeInfoById(req.MergeId, data) - if Item != nil { - if Item.Status == 1 { - res.ResultCode = MergeConst.Protocol_Illustrate_InActive - } - if Item.Status == 3 { - res.ResultCode = MergeConst.Protocol_Illustrate_Geted - } - if Item.Status == 2 { - res.ResultCode = 0 - res.Status = 3 - res.MergeId = req.MergeId - Item.Status = 3 - p.SaveDataFromDBSingle(req.Category, true) - } - } else { - res.ResultCode = MergeConst.Protocol_Illustrate_InActive - } - - } - - agent := p.GetPlayer().GetAgentByPlayer() - data1, _ := proto.Marshal(res) - G_GameLogicPtr.PackResInfo(agent, "ResGetIllustrateItemReward", data1) -} - -func (p *PlayerIllustrateData) UpdateIllustrateItem(buf []byte) { - update := &msg.UpdateIllustrateItem{} - proto.Unmarshal(buf, update) - data := p.FindIllustratedDataByCategory(update.Category) - if data != nil { - Item := p.FindMergeInfoById(update.MergeId, data) - if Item != nil { - Item.Status = update.Status - } else { - item := &msg.SingleIllustratedItem{} - item.MergeId = update.MergeId - item.Status = update.Status - data.Items = append(data.Items, item) - } - p.SaveDataFromDBSingle(update.Category, true) - } else { - newdata := &msg.CategoryIllustratedData{} - newdata.Category = update.Category - newdata.IllustratedID = 0 - newdata.Items = []*msg.SingleIllustratedItem{} - item := &msg.SingleIllustratedItem{} - item.MergeId = update.MergeId - item.Status = update.Status - newdata.Items = append(newdata.Items, item) - p.Data.Datas = append(p.Data.Datas, newdata) - p.SaveDataFromDBSingle(update.Category, false) - } - -} - -////////////////////////////// - -type PlayerDailyTaskData struct { - *PlayerData - Data msg.ResDailyTaskData - sqlStruck db.SqlDailyTaskStruct - Mdispatr *timer.Dispatcher - MLeafTimer *timer.Timer - MTicker *time.Ticker - // MLeafTimer1 *timer.Timer -} - -func (p *PlayerDailyTaskData) LoadDataFromDB(dwUin interface{}) bool { - - sqlStr := "SELECT * FROM t_player_daily_task_data WHERE dwUin = ?" - - p.Data.TodayTaskList = []string{} - p.sqlStruck = db.SqlDailyTaskStruct{} - p.sqlStruck.DwUin = dwUin.(int32) - if err := db.SqlDb.Get(&p.sqlStruck, sqlStr, dwUin.(int32)); err != nil { - - p.IsHaveDataDb = false - } else { - p.IsHaveDataDb = true - } - - p.Data.DwUin = p.sqlStruck.DwUin - p.Data.NowSortId = p.sqlStruck.NowSortId - p.Data.NowTaskProgress = p.sqlStruck.NowTaskProgress - p.Data.WeekActive = p.sqlStruck.WeekyActive - p.Data.CurSvrTime = int32(time.Now().Unix()) - if p.sqlStruck.TodayTaskList != "" { - strarr := strings.Split(p.sqlStruck.TodayTaskList, ";") - - for i := 0; i < len(strarr); i++ { - p.Data.TodayTaskList = append(p.Data.TodayTaskList, strarr[i]) - } - } - - p.Mdispatr = timer.NewDispatcher(1) - p.Reconnect(false) - return true -} - -func (p *PlayerDailyTaskData) Notify_Daily_Renew(param []interface{}) { - p.NotifyRenewDailyTask() -} - -func (p *PlayerDailyTaskData) CreateTimer() { - - timeStamp := time.Now().Unix() - t := time.Unix(timeStamp, 0).Local() - // zero := timeStamp - (int64)(t.Hour()*3600+t.Minute()*60+t.Second()) - var week = t.Weekday() - if t.Weekday() == 0 { - week = 7 - } - go func() { - // 注释内容也可以使用 - p.MLeafTimer = p.Mdispatr.AfterFunc(time.Duration(3600*24*7-(int32)(week-1)*3600*24-(int32)(t.Hour()*3600+t.Minute()*60+t.Second()))*time.Second, func() { - p.NotifyRenewWeekyActive() - p.MLeafTimer = nil - - p.MTicker = time.NewTicker(time.Second * time.Duration(3600*24*7)) - for { - select { - case <-p.MTicker.C: - p.NotifyRenewWeekyActive() - } - } - }) - (<-p.Mdispatr.ChanTimer).Cb() - - }() - - if timeStamp >= int64(p.sqlStruck.StartDailySvrTime)+3600*24 { - p.NotifyRenewDailyTask() - } - if timeStamp >= int64(p.sqlStruck.StartWeekySvrTime)+3600*24*7 { - p.NotifyRenewWeekyActive() - } - - GoUtil.RegisterEvent(MergeConst.Notify_Daily_Renew, p.Notify_Daily_Renew, p) - -} - -func (p *PlayerDailyTaskData) Reconnect(b bool) { - - p.CreateTimer() - -} - -func (p *PlayerDailyTaskData) ClearData() bool { - p.SaveDataFromDB("") - if p.MLeafTimer != nil { - p.MLeafTimer.Stop() - p.MLeafTimer = nil - } - if p.MTicker != nil { - p.MTicker.Stop() - p.MTicker = nil - } - GoUtil.RemoveEvent(MergeConst.Notify_Daily_Renew, p.Notify_Daily_Renew, p) - return true -} -func (p *PlayerDailyTaskData) SaveDataFromDB(Key interface{}) bool { - if p.IsHaveDataDb { - db.FormatAllMemUpdateDb(&p.sqlStruck, "t_player_daily_task_data", "dwUin") - } else { - db.FormatAllMemInsertDb(&p.sqlStruck, "t_player_daily_task_data") - } - p.IsHaveDataDb = true - return true -} - -func (p *PlayerDailyTaskData) ResDailyTaskData(player *Player) { - - p.Data.CurSvrTime = int32(time.Now().Unix()) - agent := p.GetPlayer().GetAgentByPlayer() - - data, _ := proto.Marshal(&p.Data) - G_GameLogicPtr.PackResInfo(agent, "ResDailyTaskData", data) -} - -func (p *PlayerDailyTaskData) UpdateDailyTaskData(buf []byte) { - req := &msg.UpdateDailyTaskData{} - - proto.Unmarshal(buf, req) - - p.Data.NowSortId = req.NowSortId - p.Data.NowTaskProgress = req.NowTaskProgress - p.Data.WeekActive = req.WeekActive - p.Data.TodayTaskList = req.TodayTaskList - - p.sqlStruck.TodayTaskList = strings.Join(req.TodayTaskList, ";") - p.sqlStruck.NowSortId = req.NowSortId - p.sqlStruck.NowTaskProgress = req.NowTaskProgress - p.sqlStruck.WeekyActive = req.WeekActive - p.SaveDataFromDB("") - -} - -func (p *PlayerDailyTaskData) NotifyRenewDailyTask() { - notify := &msg.NotifyRenewDailyTask{} - notify.DwUin = p.sqlStruck.DwUin - notify.CurSvrTime = int32(time.Now().Unix()) - - agent := p.GetPlayer().GetAgentByPlayer() - data, _ := proto.Marshal(notify) - G_GameLogicPtr.PackResInfo(agent, "NotifyRenewDailyTask", data) -} - -func (p *PlayerDailyTaskData) NotifyRenewWeekyActive() { - notify := &msg.NotifyRenewWeekyActive{} - notify.DwUin = p.sqlStruck.DwUin - notify.CurSvrTime = int32(time.Now().Unix()) - - agent := p.GetPlayer().GetAgentByPlayer() - data, _ := proto.Marshal(notify) - G_GameLogicPtr.PackResInfo(agent, "NotifyRenewWeekyActive", data) -} - -func (p *PlayerDailyTaskData) RenewDailyTaskData(buf []byte) { - req := &msg.RenewDailyTaskData{} - proto.Unmarshal(buf, req) - - timeStamp := time.Now().Unix() - t := time.Unix(timeStamp, 0).Local() - zero := timeStamp - (int64)(t.Hour()*3600+t.Minute()*60+t.Second()) - - p.Data.NowSortId = req.NowSortId - p.Data.NowTaskProgress = req.NowTaskProgress - // p.Data.WeekActive = req.WeekActive - p.Data.TodayTaskList = req.TodayTaskList - - p.sqlStruck.StartDailySvrTime = int32(zero) - p.sqlStruck.TodayTaskList = strings.Join(req.TodayTaskList, ";") - p.sqlStruck.NowSortId = req.NowSortId - p.sqlStruck.NowTaskProgress = req.NowTaskProgress - // p.sqlStruck.WeekyActive = req.WeekActive - - p.SaveDataFromDB("") -} - -func (p *PlayerDailyTaskData) RenewWeekyActiveData(buf []byte) { - req := &msg.RenewWeekyActiveData{} - proto.Unmarshal(buf, req) - - p.Data.WeekActive = req.WeekActive - - timeStamp := time.Now().Unix() - t := time.Unix(timeStamp, 0).Local() - - var week = t.Weekday() - if t.Weekday() == 0 { - week = 7 - } - - p.sqlStruck.StartWeekySvrTime = int32(timeStamp - (int64)(week-1)*3600*24 - (int64)(t.Hour()*3600+t.Minute()*60+t.Second())) - - p.sqlStruck.WeekyActive = req.WeekActive - p.SaveDataFromDB("") -} - -///////////////////////// - -type PlayerMilestoneData struct { - *PlayerData - Data msg.ResMileStoneData - sqlStruck db.SqlMileStoneStruct - - // MLeafTimer1 *timer.Timer -} - -func (p *PlayerMilestoneData) LoadDataFromDB(dwUin interface{}) bool { - - sqlStr := "SELECT * FROM t_milestone_data WHERE dwUin = ?" - - p.Data.MileStoneTaskList = []string{} - p.sqlStruck = db.SqlMileStoneStruct{} - p.sqlStruck.DwUin = dwUin.(int32) - if err := db.SqlDb.Get(&p.sqlStruck, sqlStr, dwUin.(int32)); err != nil { - - p.IsHaveDataDb = false - } else { - p.IsHaveDataDb = true - } - - p.Data.DwUin = p.sqlStruck.DwUin - p.Data.Score = p.sqlStruck.MileStoneScore - p.Data.StartSvrTime = p.sqlStruck.StartMileStoneTime - p.Data.CurSvrTime = int32(time.Now().Unix()) - p.Data.OpenSvrTime = G_GameLogicPtr.M_SvrGlobal.OpenSvrTime - if p.sqlStruck.MileStoneTaskList != "" { - strarr := strings.Split(p.sqlStruck.MileStoneTaskList, ";") - - for i := 0; i < len(strarr); i++ { - p.Data.MileStoneTaskList = append(p.Data.MileStoneTaskList, strarr[i]) - } - } - - p.Reconnect(false) - return true -} - -func (p *PlayerMilestoneData) Notify_MileStone_Renew(param []interface{}) { - - p.NotifyRenewMileStone(param[0].(int32)) -} - -func (p *PlayerMilestoneData) Reconnect(b bool) { - if p.Data.StartSvrTime < G_GameLogicPtr.M_SvrGlobal.StartMileStoneSvrTime { - var a1 = []interface{}{G_GameLogicPtr.M_SvrGlobal.StartMileStoneSvrTime} - p.Notify_MileStone_Renew(a1) - } - GoUtil.RegisterEvent(MergeConst.Notify_MileStone_Renew, p.Notify_MileStone_Renew, p) - -} - -func (p *PlayerMilestoneData) ClearData() bool { - p.SaveDataFromDB("") - - GoUtil.RemoveEvent(MergeConst.Notify_MileStone_Renew, p.Notify_MileStone_Renew, p) - return true -} -func (p *PlayerMilestoneData) SaveDataFromDB(Key interface{}) bool { - if p.IsHaveDataDb { - db.FormatAllMemUpdateDb(&p.sqlStruck, "t_milestone_data", "dwUin") - } else { - db.FormatAllMemInsertDb(&p.sqlStruck, "t_milestone_data") - } - p.IsHaveDataDb = true - return true -} - -func (p *PlayerMilestoneData) ResMileStoneData(player *Player) { - - p.Data.CurSvrTime = int32(time.Now().Unix()) - agent := p.GetPlayer().GetAgentByPlayer() - - data, _ := proto.Marshal(&p.Data) - G_GameLogicPtr.PackResInfo(agent, "ResMileStoneData", data) -} - -func (p *PlayerMilestoneData) UpdateMileStoneData(buf []byte) { - req := &msg.UpdateMileStoneData{} - - proto.Unmarshal(buf, req) - - p.Data.MileStoneTaskList = req.MileStoneTaskList - p.Data.Score = req.Score - - p.sqlStruck.MileStoneTaskList = strings.Join(req.MileStoneTaskList, ";") - p.sqlStruck.MileStoneScore = req.Score - - p.SaveDataFromDB("") - -} - -func (p *PlayerMilestoneData) NotifyRenewMileStone(renewTime int32) { - notify := &msg.NotifyRenewMileStone{} - notify.DwUin = p.sqlStruck.DwUin - notify.CurSvrTime = int32(time.Now().Unix()) - notify.StartSvrTime = renewTime - - p.Data.StartSvrTime = renewTime - p.Data.Score = 0 - - p.sqlStruck.StartMileStoneTime = renewTime - p.sqlStruck.MileStoneScore = 0 - - p.SaveDataFromDB("") - - agent := p.GetPlayer().GetAgentByPlayer() - data, _ := proto.Marshal(notify) - G_GameLogicPtr.PackResInfo(agent, "NotifyRenewMileStone", data) -} - -func (p *PlayerMilestoneData) RenewMileStoneData(buf []byte) { - req := &msg.RenewMileStoneData{} - proto.Unmarshal(buf, req) - p.Data.Score = req.Score - p.Data.MileStoneTaskList = req.MileStoneTaskList - - p.sqlStruck.MileStoneTaskList = strings.Join(req.MileStoneTaskList, ";") - - p.SaveDataFromDB("") -} - -///// - -///////////////////////// - -type PlayerPetData struct { - *PlayerData - Data msg.ResPlayerPetData - sqlStruck db.SqlPlayerPetData - - // MLeafTimer1 *timer.Timer -} - -func (p *PlayerPetData) LoadDataFromDB(dwUin interface{}) bool { - - sqlStr := "SELECT * FROM t_player_Pet_Data WHERE dwUin = ?" - - p.sqlStruck = db.SqlPlayerPetData{} - p.sqlStruck.DwUin = dwUin.(int32) - if err := db.SqlDb.Get(&p.sqlStruck, sqlStr, dwUin.(int32)); err != nil { - - p.IsHaveDataDb = false - p.sqlStruck.ImageFrame = 1 - p.sqlStruck.ImageIcon = 1 - } else { - p.IsHaveDataDb = true - } - - p.Data.DwUin = p.sqlStruck.DwUin - p.Data.ImageFrame = p.sqlStruck.ImageFrame - p.Data.ImageIcon = p.sqlStruck.ImageIcon - p.Data.PetNickName = p.sqlStruck.PetNickName - p.Data.UnlockFrame = p.sqlStruck.UnlockFrame - p.Data.UnlockIcon = p.sqlStruck.UnlockIcon - - p.Reconnect(false) - return true -} - -func (p *PlayerPetData) Reconnect(b bool) { - -} - -func (p *PlayerPetData) ClearData() bool { - p.SaveDataFromDB("") - - return true -} -func (p *PlayerPetData) SaveDataFromDB(Key interface{}) bool { - // if p.IsHaveDataDb { - // db.FormatAllMemUpdateDb(&p.sqlStruck, "t_player_Pet_Data", "dwUin") - // } else { - // db.FormatAllMemInsertDb(&p.sqlStruck, "t_player_Pet_Data") - // } - p.IsHaveDataDb = true - return true -} - -func (p *PlayerPetData) ReqPlayerPetData(player *Player) { - - p.SaveDataFromDB("") - agent := p.GetPlayer().GetAgentByPlayer() - data, _ := proto.Marshal(&p.Data) - G_GameLogicPtr.PackResInfo(agent, "ResPlayerPetData", data) -} - -func (p *PlayerPetData) ReqUpdatePetProfile(buf []byte) { - req := &msg.ReqUpdatePetProfile{} - res := &msg.ResUpdatePetProfile{} - proto.Unmarshal(buf, req) - - res.Type = req.Type - res.Param = req.Param - res.ResultCode = 0 - res.DwUin = p.M_Player.M_DwUin - if req.Type == 1 { - p.Data.PetNickName = req.Param - p.sqlStruck.PetNickName = req.Param - } - if req.Type == 2 { - value, _ := strconv.Atoi(req.Param) - p.Data.ImageFrame = int32(value) - p.sqlStruck.ImageFrame = int32(value) - } - if req.Type == 3 { - value, _ := strconv.Atoi(req.Param) - p.Data.ImageIcon = int32(value) - p.sqlStruck.ImageIcon = int32(value) - } - - p.SaveDataFromDB("") - agent := p.GetPlayer().GetAgentByPlayer() - data, _ := proto.Marshal(res) - G_GameLogicPtr.PackResInfo(agent, "ResUpdatePetProfile", data) -} - -///////////////////////// - -////////////// - -type PlayerPetHomeData struct { - *PlayerData - Data msg.ResPetHomeData - sqlStruck db.SqlPetHomeData - Mdispatr *timer.Dispatcher - - MLeafTimer *timer.Timer -} - -func (p *PlayerPetHomeData) LoadDataFromDB(dwUin interface{}) bool { - - sqlStr := "SELECT * FROM t_player_PetHome_Data WHERE dwUin = ?" - - p.sqlStruck = db.SqlPetHomeData{} - p.sqlStruck.DwUin = dwUin.(int32) - if err := db.SqlDb.Get(&p.sqlStruck, sqlStr, dwUin.(int32)); err != nil { - - p.IsHaveDataDb = false - } else { - p.IsHaveDataDb = true - } - - if !p.IsHaveDataDb { - p.sqlStruck.DwUin = dwUin.(int32) - p.sqlStruck.NestId = 1 - p.sqlStruck.OrnamentsId = 1 - } else { - - } - timeStamp := time.Now().Unix() - t := time.Unix(timeStamp, 0).Local() - t1 := time.Unix(int64(p.sqlStruck.OtherWorkTime), 0).Local() - if p.sqlStruck.SelfWorkTime+3600*24 < int32(timeStamp) { - p.sqlStruck.SelfWorkTime = 0 - - } - - if timeStamp-int64(t.Hour()*3600)-int64(t.Minute()*60)-int64(t.Second()) != int64(p.sqlStruck.OtherWorkTime)-int64(t1.Hour()*3600)-int64(t1.Minute()*60)-int64(t1.Second()) { - p.sqlStruck.OtherWorkTime = 0 - } - isHome := p.GetSelfPetAutoGoHome() - if isHome { - p.sqlStruck.AtHome = 0 - } - p.Data.UnlockDecorateList = []int32{} - p.Data.SelectDecorateMap = make(map[int32]int32) - p.SingnalData() - - if p.sqlStruck.SelfWorkTime > 0 { - go func() { - // 注释内容也可以使用 - curtime := p.sqlStruck.SelfWorkTime + 3600*24 - t1 := (int64)(curtime) - (int64)(timeStamp) - p.Mdispatr = timer.NewDispatcher(1) - p.MLeafTimer = p.Mdispatr.AfterFunc(time.Duration(t1)*time.Second, func() { - p.sqlStruck.SelfWorkTime = 0 - - p.NotifyPetWorkEnd(1) - p.MLeafTimer = nil - p.SingnalData() - p.SaveDataFromDB("") - }) - - (<-p.Mdispatr.ChanTimer).Cb() - }() - } - p.Reconnect(false) - - return true -} - -func (p *PlayerPetHomeData) Notify_Daily_Renew(param []interface{}) { - - p.sqlStruck.AtHome = 0 - notify := &msg.NotifyPetGoHome{} - notify.AtHome = 0 - agent := p.GetPlayer().GetAgentByPlayer() - data, _ := proto.Marshal(notify) - G_GameLogicPtr.PackResInfo(agent, "NotifyPetGoHome", data) - - if p.sqlStruck.OtherWorkTime != 0 { - p.sqlStruck.OtherWorkTime = 0 - p.SingnalData() - p.NotifyPetWorkEnd(2) - p.SaveDataFromDB("") - } -} - -func (p *PlayerPetHomeData) NotifyPetOtherBorrow() { - if p.sqlStruck.SelfWorkTime == 0 { - p.sqlStruck.AtHome = 1 - - notify := &msg.NotifyPetLeave{} - notify.AtHome = 1 - - agent := p.GetPlayer().GetAgentByPlayer() - data, _ := proto.Marshal(notify) - G_GameLogicPtr.PackResInfo(agent, "NotifyPetLeave", data) - p.SingnalData() - p.SaveDataFromDB("") - } - -} - -func (p *PlayerPetHomeData) NotifyPetWorkEnd(mtype int32) { - notify := &msg.NotifyPetWorkEnd{} - notify.MType = mtype - - agent := p.GetPlayer().GetAgentByPlayer() - data, _ := proto.Marshal(notify) - G_GameLogicPtr.PackResInfo(agent, "NotifyPetWorkEnd", data) -} - -func (p *PlayerPetHomeData) Reconnect(b bool) { - - GoUtil.RegisterEvent(MergeConst.Notify_Daily_Renew, p.Notify_Daily_Renew, p) - if b { - sqlStr := "SELECT * FROM t_player_PetHome_Data WHERE dwUin = ?" - db.SqlDb.Get(&p.sqlStruck, sqlStr, p.M_Player.M_DwUin) - - timeStamp := time.Now().Unix() - t := time.Unix(timeStamp, 0).Local() - t1 := time.Unix(int64(p.sqlStruck.OtherWorkTime), 0).Local() - if p.sqlStruck.SelfWorkTime > 0 && p.sqlStruck.SelfWorkTime+3600*24 <= int32(timeStamp) { - p.sqlStruck.SelfWorkTime = 0 - p.NotifyPetWorkEnd(1) - } - - if p.sqlStruck.OtherWorkTime > 0 && timeStamp-int64(t.Hour()*3600)-int64(t.Minute()*60)-int64(t.Second()) != int64(p.sqlStruck.OtherWorkTime)-int64(t1.Hour()*3600)-int64(t1.Minute()*60)-int64(t1.Second()) { - p.sqlStruck.OtherWorkTime = 0 - p.NotifyPetWorkEnd(2) - } - isHome := p.GetSelfPetAutoGoHome() - if isHome { - p.sqlStruck.AtHome = 0 - } - p.SingnalData() - if p.sqlStruck.SelfWorkTime > 0 { - go func() { - // 注释内容也可以使用 - curtime := p.sqlStruck.SelfWorkTime + 3600*24 - t1 := (int64)(curtime) - (int64)(timeStamp) - p.Mdispatr = timer.NewDispatcher(1) - p.MLeafTimer = p.Mdispatr.AfterFunc(time.Duration(t1)*time.Second, func() { - p.sqlStruck.SelfWorkTime = 0 - - p.NotifyPetWorkEnd(1) - p.MLeafTimer = nil - p.SingnalData() - p.SaveDataFromDB("") - }) - - (<-p.Mdispatr.ChanTimer).Cb() - - }() - - } - - p.SaveDataFromDB("") - } -} - -func (p *PlayerPetHomeData) SingnalData() { - - p.Data.DwUin = p.sqlStruck.DwUin - p.Data.InterActEndTime = p.sqlStruck.InterActEndTime - p.Data.NestId = p.sqlStruck.NestId - p.Data.OrnamentsId = p.sqlStruck.OrnamentsId - p.Data.CurInterActUin = p.sqlStruck.CurInterActUin - p.Data.MiniGameResult = p.sqlStruck.MiniGameResult - p.Data.SelfWorkTime = p.sqlStruck.SelfWorkTime - p.Data.OtherWorkTime = p.sqlStruck.OtherWorkTime - p.Data.UnlockPetNest = p.sqlStruck.UnlockPetNest - p.Data.UnlockPetOrnaments = p.sqlStruck.UnlockPetOrnaments - p.Data.UnlockPetEmotion = p.sqlStruck.UnlockPetEmotion - p.Data.AtHome = p.sqlStruck.AtHome - p.Data.Mood = p.sqlStruck.Mood - - if p.sqlStruck.UnlockDecorateList != "" { - units := strings.Split(p.sqlStruck.UnlockDecorateList, ";") - p.Data.UnlockDecorateList = []int32{} - for i := 0; i < len(units); i++ { - id, _ := strconv.Atoi(units[i]) - p.Data.UnlockDecorateList = append(p.Data.UnlockDecorateList, int32(id)) - } - } - - if p.sqlStruck.SelectDecorateMap != "" { - units := strings.Split(p.sqlStruck.SelectDecorateMap, ";") - p.Data.SelectDecorateMap = make(map[int32]int32) - for i := 0; i < len(units); i++ { - item := strings.Split(units[i], ",") - type1, _ := strconv.Atoi(item[0]) - id, _ := strconv.Atoi(item[1]) - p.Data.SelectDecorateMap[int32(type1)] = int32(id) - } - } -} - -func (p *PlayerPetHomeData) ClearData() bool { - p.SaveDataFromDB("") - if p.MLeafTimer != nil { - p.MLeafTimer.Stop() - p.MLeafTimer = nil - } - GoUtil.RemoveEvent(MergeConst.Notify_Daily_Renew, p.Notify_Daily_Renew, p) - return true -} -func (p *PlayerPetHomeData) SaveDataFromDB(Key interface{}) bool { - // if p.IsHaveDataDb { - // db.FormatAllMemUpdateDb(&p.sqlStruck, "t_player_PetHome_Data", "dwUin") - // } else { - // db.FormatAllMemInsertDb(&p.sqlStruck, "t_player_PetHome_Data") - // } - p.IsHaveDataDb = true - return true -} - -func (p *PlayerPetHomeData) ReqPetHomeData(player *Player) { - agent := p.GetPlayer().GetAgentByPlayer() - data, _ := proto.Marshal(&p.Data) - G_GameLogicPtr.PackResInfo(agent, "ResPetHomeData", data) -} - -func (p *PlayerPetHomeData) ReqUnlockDecorate(buf []byte) { - req := &msg.ReqUnlockDecorate{} - res := &msg.ResUnlockDecorate{} - proto.Unmarshal(buf, req) - - isHave := false - for i := 0; i < len(p.Data.UnlockDecorateList); i++ { - if p.Data.UnlockDecorateList[i] == req.DecorateId { - isHave = true - break - } - } - if !isHave { - if p.sqlStruck.UnlockDecorateList == "" { - p.sqlStruck.UnlockDecorateList = strconv.Itoa(int(req.DecorateId)) - } else { - temp := []string{p.sqlStruck.UnlockDecorateList, strconv.Itoa(int(req.DecorateId))} - p.sqlStruck.UnlockDecorateList = strings.Join(temp, ",") - } - - } - - p.SingnalData() - p.SaveDataFromDB("") - agent := p.GetPlayer().GetAgentByPlayer() - data, _ := proto.Marshal(res) - G_GameLogicPtr.PackResInfo(agent, "ResUnlockDecorate", data) -} - -func (p *PlayerPetHomeData) ReqSaveSelectDecorate(buf []byte) { - req := &msg.ReqSaveSelectDecorate{} - res := &msg.ResSaveSelectDecorate{} - proto.Unmarshal(buf, req) - - for k, v := range req.SelectDecorateMap { - p.Data.SelectDecorateMap[k] = v - } - temp := []string{} - for k, v := range p.Data.SelectDecorateMap { - temp = append(temp, strconv.Itoa(int(k))+","+strconv.Itoa(int(v))) - } - p.sqlStruck.SelectDecorateMap = strings.Join(temp, ";") - res.SelectDecorateMap = p.Data.SelectDecorateMap - // p.SingnalData() - p.SaveDataFromDB("") - agent := p.GetPlayer().GetAgentByPlayer() - data, _ := proto.Marshal(res) - G_GameLogicPtr.PackResInfo(agent, "ResSaveSelectDecorate", data) -} - -func (p *PlayerPetHomeData) ReqOpenOtherPetHome(buf []byte) { - req := &msg.ReqOpenOtherPetHome{} - res := &msg.ResOpenOtherPetHome{} - proto.Unmarshal(buf, req) - - Profile := G_GameLogicPtr.MPlayerProfileManager.RandomGetAnPlayer(p.Data.DwUin) - - if Profile != nil { - res.TargetUin = Profile.DwUin - - } - sqlStr := "SELECT * FROM t_player_PetHome_Data WHERE dwUin = ?" - - sqlStruck := db.SqlPetHomeData{} - sqlStruck.DwUin = res.TargetUin - sqlStruck.NestId = 1 - sqlStruck.OrnamentsId = 1 - db.SqlDb.Get(&sqlStruck, sqlStr, res.TargetUin) - - res.NestId = sqlStruck.NestId - res.OrnamentsId = sqlStruck.OrnamentsId - res.BriefProfile = &msg.ResPlayerBriefProfileData{} - - if Profile != nil { - res.BriefProfile.DwUin = res.TargetUin - res.BriefProfile.ImageFrame = Profile.ImageFrame - res.BriefProfile.ImageIcon = Profile.ImageIcon - res.BriefProfile.NickName = Profile.NickName - res.BriefProfile.PicURL = Profile.PicURL - - DecorateCnt, ActiveTime, _ := G_GameLogicPtr.MPlayerProfileManager.GetPlayerDecorate(res.TargetUin) - res.BriefProfile.DecorateCnt = int32(DecorateCnt) - res.BriefProfile.ActiveTime = int32(ActiveTime) - - } else { - - } - - agent := p.GetPlayer().GetAgentByPlayer() - data, _ := proto.Marshal(res) - G_GameLogicPtr.PackResInfo(agent, "ResOpenOtherPetHome", data) -} - -func (p *PlayerPetHomeData) ReqShiftVisitPet(buf []byte) { - req := &msg.ReqShiftVisitPet{} - res := &msg.ResShiftVisitPet{} - proto.Unmarshal(buf, req) - - res.TargetUin = req.TargetUin - - sqlStr := "SELECT * FROM t_player_PetHome_Data WHERE dwUin = ?" - - sqlStruck := db.SqlPetHomeData{} - sqlStruck.DwUin = res.TargetUin - sqlStruck.NestId = 1 - sqlStruck.OrnamentsId = 1 - db.SqlDb.Get(&sqlStruck, sqlStr, res.TargetUin) - - res.NestId = sqlStruck.NestId - res.OrnamentsId = sqlStruck.OrnamentsId - res.BriefProfile = &msg.ResPlayerBriefProfileData{} - - Profile := G_GameLogicPtr.MPlayerProfileManager.GetPlayerProfile(req.TargetUin) - if Profile != nil { - res.BriefProfile.DwUin = res.TargetUin - res.BriefProfile.ImageFrame = Profile.ImageFrame - res.BriefProfile.ImageIcon = Profile.ImageIcon - res.BriefProfile.NickName = Profile.NickName - res.BriefProfile.PicURL = Profile.PicURL - - DecorateCnt, ActiveTime, _ := G_GameLogicPtr.MPlayerProfileManager.GetPlayerDecorate(res.TargetUin) - res.BriefProfile.DecorateCnt = int32(DecorateCnt) - res.BriefProfile.ActiveTime = int32(ActiveTime) - - } else { - sql := &db.SqlPlayerProfileStruct{} - sql.DwUin = req.TargetUin - sql.ImageFrame = 1 - sql.ImageIcon = 1 - sql.NickName = "Player" + strconv.Itoa(int(req.TargetUin)) - sql.PicURL = "" - G_GameLogicPtr.MPlayerProfileManager.UpdateNewProfile(sql) - - res.BriefProfile.DwUin = res.TargetUin - res.BriefProfile.ImageFrame = sql.ImageFrame - res.BriefProfile.ImageIcon = sql.ImageIcon - res.BriefProfile.NickName = sql.NickName - res.BriefProfile.PicURL = sql.PicURL - DecorateCnt, ActiveTime, _ := G_GameLogicPtr.MPlayerProfileManager.GetPlayerDecorate(res.TargetUin) - res.BriefProfile.DecorateCnt = int32(DecorateCnt) - res.BriefProfile.ActiveTime = int32(ActiveTime) - - } - - agent := p.GetPlayer().GetAgentByPlayer() - data, _ := proto.Marshal(res) - G_GameLogicPtr.PackResInfo(agent, "ResShiftVisitPet", data) -} - -func (p *PlayerPetHomeData) ReqOpenSelfPet(buf []byte) { - req := &msg.ReqOpenSelfPet{} - res := &msg.ResOpenSelfPet{} - proto.Unmarshal(buf, req) - - res.SelfWorkTime = int32(time.Now().Unix()) - p.sqlStruck.SelfWorkTime = res.SelfWorkTime - - go func() { - // 注释内容也可以使用 - curtime := p.sqlStruck.SelfWorkTime + 3600*24 - t1 := (int64)(curtime) - (int64)(res.SelfWorkTime) - p.Mdispatr = timer.NewDispatcher(1) - p.MLeafTimer = p.Mdispatr.AfterFunc(time.Duration(t1)*time.Second, func() { - p.sqlStruck.SelfWorkTime = 0 - - p.NotifyPetWorkEnd(1) - p.MLeafTimer = nil - p.SingnalData() - p.SaveDataFromDB("") - }) - - (<-p.Mdispatr.ChanTimer).Cb() - - }() - p.SingnalData() - p.SaveDataFromDB("") - - agent := p.GetPlayer().GetAgentByPlayer() - data, _ := proto.Marshal(res) - G_GameLogicPtr.PackResInfo(agent, "ResOpenSelfPet", data) -} - -func (p *PlayerPetHomeData) GetSelfPetAutoGoHome() bool { - MPetHomeInterActSTs := []*msg.PetHomeInterActST{} - - sqlStr1 := "SELECT * FROM t_player_PetHome_InterAct_Data WHERE TargetUin = ?" - st := []db.SqlPetHomeInterAct{} - if err := db.SqlDb.Select(&st, sqlStr1, p.Data.DwUin); err != nil { - - } else { - - } - for i := 0; i < len(st); i++ { - item := &msg.PetHomeInterActST{} - item.DwUin = st[i].DwUin - item.TargetUin = st[i].TargetUin - item.InterActEndTime = st[i].InterActEndTime - MPetHomeInterActSTs = append(MPetHomeInterActSTs, item) - } - sort.Slice(MPetHomeInterActSTs, func(i, j int) bool { - return MPetHomeInterActSTs[i].InterActEndTime > MPetHomeInterActSTs[j].InterActEndTime - }) - if len(MPetHomeInterActSTs) > 0 { - timeStamp := int64(MPetHomeInterActSTs[0].InterActEndTime) - t := time.Unix(timeStamp, 0).Local() - zero := timeStamp - (int64)(t.Hour()*3600+t.Minute()*60+t.Second()) - - curtime := time.Now().Unix() - t1 := time.Unix(curtime, 0).Local() - zero1 := curtime - (int64)(t1.Hour()*3600+t1.Minute()*60+t1.Second()) - - if zero1 == zero { - return false - } - } - return true -} - -func (p *PlayerPetHomeData) GetHomeInterActST() []*msg.PetHomeInterActST { - MPetHomeInterActSTs := []*msg.PetHomeInterActST{} - - sqlStr1 := "SELECT * FROM t_player_PetHome_InterAct_Data WHERE TargetUin = ?" - st := []db.SqlPetHomeInterAct{} - db.SqlDb.Select(&st, sqlStr1, p.Data.DwUin) - - for i := 0; i < len(st); i++ { - item := &msg.PetHomeInterActST{} - item.DwUin = st[i].DwUin - item.TargetUin = st[i].TargetUin - item.InterActEndTime = st[i].InterActEndTime - - dbst := G_GameLogicPtr.MPlayerProfileManager.NewGetPlayerProfile(item.DwUin) - - item.BriefProfile = &msg.ResPlayerBriefProfileData{} - item.BriefProfile.DwUin = item.DwUin - item.BriefProfile.ImageFrame = dbst.ImageFrame - item.BriefProfile.ImageIcon = dbst.ImageIcon - item.BriefProfile.NickName = dbst.NickName - item.BriefProfile.PicURL = dbst.PicURL - - DecorateCnt, ActiveTime, _ := G_GameLogicPtr.MPlayerProfileManager.GetPlayerDecorate(item.DwUin) - item.BriefProfile.DecorateCnt = int32(DecorateCnt) - item.BriefProfile.ActiveTime = int32(ActiveTime) - MPetHomeInterActSTs = append(MPetHomeInterActSTs, item) - } - return MPetHomeInterActSTs -} - -func (p *PlayerPetHomeData) ReqPetHomeInterActST(buf []byte) { - req := &msg.ReqPetHomeInterActST{} - res := &msg.ResPetHomeInterActST{} - proto.Unmarshal(buf, req) - - res.MPetHomeInterActSTs = []*msg.PetHomeInterActST{} - - sqlStr1 := "SELECT * FROM t_player_PetHome_InterAct_Data WHERE TargetUin = ?" - st := []db.SqlPetHomeInterAct{} - if err := db.SqlDb.Select(&st, sqlStr1, p.Data.DwUin); err != nil { - - } else { - - } - for i := 0; i < len(st); i++ { - item := &msg.PetHomeInterActST{} - item.DwUin = st[i].DwUin - item.TargetUin = st[i].TargetUin - item.InterActEndTime = st[i].InterActEndTime - - dbst := G_GameLogicPtr.MPlayerProfileManager.NewGetPlayerProfile(item.DwUin) - - item.BriefProfile = &msg.ResPlayerBriefProfileData{} - item.BriefProfile.DwUin = item.DwUin - item.BriefProfile.ImageFrame = dbst.ImageFrame - item.BriefProfile.ImageIcon = dbst.ImageIcon - item.BriefProfile.NickName = dbst.NickName - item.BriefProfile.PicURL = dbst.PicURL - - DecorateCnt, ActiveTime, _ := G_GameLogicPtr.MPlayerProfileManager.GetPlayerDecorate(item.DwUin) - item.BriefProfile.DecorateCnt = int32(DecorateCnt) - item.BriefProfile.ActiveTime = int32(ActiveTime) - res.MPetHomeInterActSTs = append(res.MPetHomeInterActSTs, item) - } - - agent := p.GetPlayer().GetAgentByPlayer() - data, _ := proto.Marshal(res) - G_GameLogicPtr.PackResInfo(agent, "ResPetHomeInterActST", data) -} - -func (p *PlayerPetHomeData) ReqCallBackPet(buf []byte) { - req := &msg.ReqCallBackPet{} - res := &msg.ResCallBackPet{} - proto.Unmarshal(buf, req) - p.sqlStruck.AtHome = 0 - p.SingnalData() - p.SaveDataFromDB("") - - agent := p.GetPlayer().GetAgentByPlayer() - data, _ := proto.Marshal(res) - G_GameLogicPtr.PackResInfo(agent, "ResCallBackPet", data) -} - -/////////////// - -type Player7DayCallBackData struct { - *PlayerData - Data msg.Notify7DayCallbackData - sqlStruck db.SqlNotify7DayCallbackData - - // MLeafTimer1 *timer.Timer -} - -func (p *Player7DayCallBackData) LoadDataFromDB(dwUin interface{}) bool { - - sqlStr := "SELECT * FROM t_player_callback_7Day WHERE dwUin = ?" - - p.sqlStruck = db.SqlNotify7DayCallbackData{} - p.sqlStruck.DwUin = dwUin.(int32) - if err := db.SqlDb.Get(&p.sqlStruck, sqlStr, dwUin.(int32)); err != nil { - - p.IsHaveDataDb = false - } else { - p.IsHaveDataDb = true - } - - p.Data.DwUin = p.sqlStruck.DwUin - p.Data.StartSvrTime = p.sqlStruck.StartSvrTime - p.Data.GetIndex = p.sqlStruck.GetIndex - p.Data.LastGetTime = p.sqlStruck.LastGetTime - - return true -} -func (p *Player7DayCallBackData) OpenNewCallBack() { - timeStamp := time.Now().Unix() - t := time.Unix(timeStamp, 0).Local() - - p.sqlStruck.StartSvrTime = int32(timeStamp) - int32(t.Hour())*3600 - int32(t.Minute())*60 - int32(t.Second()) - p.sqlStruck.GetIndex = 0 - p.sqlStruck.LastGetTime = 0 - - p.Data.DwUin = p.sqlStruck.DwUin - p.Data.StartSvrTime = p.sqlStruck.StartSvrTime - p.Data.GetIndex = p.sqlStruck.GetIndex - p.Data.LastGetTime = p.sqlStruck.LastGetTime - p.SaveDataFromDB("") - - p.Notify7DayCallbackData(int32(time.Now().Unix())) - p.Reconnect(false) -} - -func (p *Player7DayCallBackData) ProcessIsOutline() { - timeStamp := time.Now().Unix() - - if p.sqlStruck.StartSvrTime+7*3600 <= int32(timeStamp) { - - } else { - - p.Notify7DayCallbackData(int32(timeStamp)) - } -} - -func (p *Player7DayCallBackData) Notify_Daily_Renew(param []interface{}) { - - timeStamp := G_GameLogicPtr.DailyTaskTimestamp - - if p.sqlStruck.StartSvrTime+7*3600*24 <= int32(timeStamp) { - p.Notify7DayCallbackEnd() - } else { - p.Data.DwUin = p.sqlStruck.DwUin - p.Data.StartSvrTime = p.sqlStruck.StartSvrTime - p.Data.GetIndex = p.sqlStruck.GetIndex - p.Data.LastGetTime = p.sqlStruck.LastGetTime - p.Notify7DayCallbackData(int32(timeStamp)) - } -} - -func (p *Player7DayCallBackData) Reconnect(b bool) { - - GoUtil.RegisterEvent(MergeConst.Notify_Daily_Renew, p.Notify_Daily_Renew, p) - -} - -func (p *Player7DayCallBackData) ClearData() bool { - p.SaveDataFromDB("") - - GoUtil.RemoveEvent(MergeConst.Notify_Daily_Renew, p.Notify_Daily_Renew, p) - return true -} -func (p *Player7DayCallBackData) SaveDataFromDB(Key interface{}) bool { - if p.IsHaveDataDb { - db.FormatAllMemUpdateDb(&p.sqlStruck, "t_player_callback_7Day", "dwUin") - } else { - db.FormatAllMemInsertDb(&p.sqlStruck, "t_player_callback_7Day") - } - p.IsHaveDataDb = true - return true -} - -func (p *Player7DayCallBackData) Req7DayCallbackSignal(buf []byte) { - req := &msg.Req7DayCallbackSignal{} - res := &msg.Res7DayCallbackSignal{} - proto.Unmarshal(buf, req) - - timeStamp := time.Now().Unix() - t := time.Unix(timeStamp, 0).Local() - zero := timeStamp - int64(t.Hour())*3600 - int64(t.Minute())*60 - int64(t.Second()) - - if int64(p.sqlStruck.LastGetTime) == zero { - res.ResultCode = MergeConst.Protocol_Active_7Day_Rewarded - } else { - res.CurSvrTime = int32(timeStamp) - res.GetIndex = req.GetIndex - res.LastGetTime = int32(zero) - p.sqlStruck.GetIndex = res.GetIndex - p.sqlStruck.LastGetTime = res.LastGetTime - p.Data.GetIndex = res.GetIndex - p.Data.LastGetTime = res.LastGetTime - res.ResultCode = 0 - } - p.SaveDataFromDB("") - agent := p.GetPlayer().GetAgentByPlayer() - data, _ := proto.Marshal(res) - G_GameLogicPtr.PackResInfo(agent, "Res7DayCallbackSignal", data) -} - -func (p *Player7DayCallBackData) Notify7DayCallbackData(renewTime int32) { - p.Data.CurSvrTime = renewTime - p.SaveDataFromDB("") - agent := p.GetPlayer().GetAgentByPlayer() - data, _ := proto.Marshal(&p.Data) - G_GameLogicPtr.PackResInfo(agent, "Notify7DayCallbackData", data) -} - -func (p *Player7DayCallBackData) Notify7DayCallbackEnd() { - - notify := msg.Notify7DayCallbackEnd{} - notify.DwUin = p.M_Player.M_DwUin - - agent := p.GetPlayer().GetAgentByPlayer() - data, _ := proto.Marshal(¬ify) - G_GameLogicPtr.PackResInfo(agent, "Notify7DayCallbackEnd", data) -} - -// //////////// -type PlayerNewInfinitePackData struct { - *PlayerData - MsqlStruck db.SqlLimitInfinitePackStruct -} - -func (p *PlayerNewInfinitePackData) LoadDataFromDB(dwUin interface{}) bool { - - sqlStr := "SELECT * FROM t_player_new_LimitInfinitePack WHERE dwUin = ?" - p.MsqlStruck = db.SqlLimitInfinitePackStruct{} - - if err := db.SqlDb.Get(&p.MsqlStruck, sqlStr, dwUin.(int32)); err != nil { - - p.IsHaveDataDb = false - } else { - p.IsHaveDataDb = true - } - p.MsqlStruck.DwUin = dwUin.(int32) - timeStamp := time.Now().Unix() - t := time.Unix(timeStamp, 0).Local() - zero := timeStamp - int64(t.Hour())*3600 - int64(t.Minute())*60 - int64(t.Second()) - - if p.MsqlStruck.StartSvrTime < int32(zero) { - p.MsqlStruck.StartSvrTime = int32(zero) - p.MsqlStruck.EndSvrTime = int32(zero) + 3600*24 - p.MsqlStruck.CurGear = 0 - - } - - p.Reconnect(false) - return true -} - -func (p *PlayerNewInfinitePackData) Notify_Daily_Renew(args []interface{}) { - timeStamp := G_GameLogicPtr.DailyTaskTimestamp - t := time.Unix(timeStamp, 0).Local() - zero := timeStamp - int64(t.Hour())*3600 - int64(t.Minute())*60 - int64(t.Second()) - - p.MsqlStruck.StartSvrTime = int32(zero) - p.MsqlStruck.EndSvrTime = int32(zero) + 3600*24 - p.MsqlStruck.CurGear = 0 - p.SaveDataFromDB("") - p.NotifyRefreshInfinitePack() - -} - -func (p *PlayerNewInfinitePackData) NotifyRefreshInfinitePack() { - - res := &msg.NotifyRefreshInfinitePack{} - res.ActiveID = p.MsqlStruck.ActiveID - res.CurSvrTime = int32(time.Now().Unix()) - res.StartSvrTime = p.MsqlStruck.StartSvrTime - res.EndSvrTime = p.MsqlStruck.EndSvrTime - res.CurGear = p.MsqlStruck.CurGear - res.DwUin = p.M_Player.M_DwUin - res.ResultCode = 0 - - agent := p.GetPlayer().GetAgentByPlayer() - data, _ := proto.Marshal(res) - G_GameLogicPtr.PackResInfo(agent, "NotifyRefreshInfinitePack", data) -} - -func (p *PlayerNewInfinitePackData) Reconnect(b bool) { - GoUtil.RemoveEvent(MergeConst.Notify_Daily_Renew, p.Notify_Daily_Renew, p) - GoUtil.RegisterEvent(MergeConst.Notify_Daily_Renew, p.Notify_Daily_Renew, p) - if b { - timeStamp := time.Now().Unix() - t := time.Unix(timeStamp, 0).Local() - zero := timeStamp - int64(t.Hour())*3600 - int64(t.Minute())*60 - int64(t.Second()) - - if p.MsqlStruck.StartSvrTime < int32(zero) { - p.MsqlStruck.StartSvrTime = int32(zero) - p.MsqlStruck.EndSvrTime = int32(zero) + 3600*24 - p.MsqlStruck.CurGear = 0 - p.SaveDataFromDB("") - p.NotifyRefreshInfinitePack() - } - } -} - -func (p *PlayerNewInfinitePackData) ResInfinitePackDetail(buf []byte) { - req := &msg.ReqInfinitePackDetail{} - proto.Unmarshal(buf, req) - st := p.MsqlStruck - res := &msg.ResInfinitePackDetail{} - - res.ActiveID = st.ActiveID - res.CurSvrTime = int32(time.Now().Unix()) - res.StartSvrTime = st.StartSvrTime - res.EndSvrTime = st.EndSvrTime - res.CurGear = st.CurGear - res.DwUin = p.M_Player.M_DwUin - res.ResultCode = 0 - - agent := p.GetPlayer().GetAgentByPlayer() - data, _ := proto.Marshal(res) - G_GameLogicPtr.PackResInfo(agent, "ResInfinitePackDetail", data) -} - -func (p *PlayerNewInfinitePackData) ResBuyInfinitePack(buf []byte) { - req := &msg.ReqBuyInfinitePack{} - proto.Unmarshal(buf, req) - - res := &msg.ResBuyInfinitePack{} - - res.ActiveID = p.MsqlStruck.ActiveID - res.DwUin = p.M_Player.M_DwUin - res.ResultCode = 0 - res.CurGear = req.CurGear + 1 - p.MsqlStruck.CurGear = req.CurGear + 1 - - agent := p.GetPlayer().GetAgentByPlayer() - data, _ := proto.Marshal(res) - G_GameLogicPtr.PackResInfo(agent, "ResBuyInfinitePack", data) -} - -func (p *PlayerNewInfinitePackData) SaveDataFromDB(Key interface{}) bool { - if p.IsHaveDataDb { - db.FormatAllMemUpdateDb(&p.MsqlStruck, "t_player_new_LimitInfinitePack", "dwUin") - } else { - db.FormatAllMemInsertDb(&p.MsqlStruck, "t_player_new_LimitInfinitePack") - } - - p.IsHaveDataDb = true - return true -} -func (p *PlayerNewInfinitePackData) ClearData() bool { - p.SaveDataFromDB("") - GoUtil.RemoveEvent(MergeConst.Notify_Daily_Renew, p.Notify_Daily_Renew, p) - - return true -} diff --git a/src/server/game/PlayerEmailData.go b/src/server/game/PlayerEmailData.go deleted file mode 100644 index dd016eae..00000000 --- a/src/server/game/PlayerEmailData.go +++ /dev/null @@ -1,284 +0,0 @@ -package game - -import ( - "fmt" - "server/MergeConst" - "server/db" - "server/msg" - "sort" - "time" - - "github.com/robfig/cron/v3" - - "google.golang.org/protobuf/proto" -) - -type PlayerEmailData struct { - *PlayerData - Data msg.ResBriefEmailData - SqlStructs []db.SqlEmailStruct - ZeroCronID cron.EntryID - WeekCronID cron.EntryID - Mcron *cron.Cron -} - -func (p *PlayerEmailData) LoadDataFromDB(dwUin interface{}) bool { - - sqlStr := "SELECT * FROM system_mail_info WHERE dwUin = ?" - if err := db.SqlDb.Select(&p.SqlStructs, sqlStr, dwUin.(int32)); err != nil { - - p.IsHaveDataDb = false - } else { - p.IsHaveDataDb = true - } - - CurTime := int32(time.Now().Unix()) - - deleteList := []int{} - deleteDbList := []int32{} - for i := 0; i < len(p.SqlStructs); i++ { - item := p.SqlStructs[i] - if item.RecvTime > 0 && item.Status == 1 && CurTime-item.RecvTime >= MergeConst.G_Clear_Read_Email_Limit { - deleteList = append(deleteList, i) - deleteDbList = append(deleteDbList, item.EmailId) - } - } - tempList := []db.SqlEmailStruct{} - startIndex := 0 - for i := 0; i < len(deleteList); i++ { - curIndex := deleteList[i] - if curIndex == startIndex { - startIndex = startIndex + 1 - continue - } - tempList = append(tempList, p.SqlStructs[startIndex:curIndex]...) - startIndex = curIndex + 1 - } - if startIndex <= len(p.SqlStructs)-1 { - tempList = append(tempList, p.SqlStructs[startIndex:]...) - } - p.SqlStructs = tempList - p.DeleteOutlineMail(deleteDbList) - - sort.Slice(p.SqlStructs, func(i, j int) bool { - if p.SqlStructs[i].Status == p.SqlStructs[j].Status { - if p.SqlStructs[i].Type == p.SqlStructs[j].Type { - return p.SqlStructs[i].SendTime > p.SqlStructs[j].SendTime - } else { - return p.SqlStructs[i].Type > p.SqlStructs[j].Type - } - - } else { - return p.SqlStructs[i].Status < p.SqlStructs[j].Status - } - }) - - for i := 0; i < len(p.SqlStructs); i++ { - item := p.SqlStructs[i] - if item.Status == 0 { - p.SqlStructs[i].Status = 1 - db.FormatAllMemUpdateDb(&p.SqlStructs[i], "system_mail_info", "mail_id") - } - } - - p.Mcron = cron.New() - p.Reconnect(false) - - return true -} -func (p *PlayerEmailData) Reconnect(b bool) { - p.ZeroCronID, _ = p.Mcron.AddFunc("@every 5s", func() { - p.IntervalGetUnsendMails() - }) - p.Mcron.Start() -} -func (p *PlayerEmailData) DeleteOutlineMail(deleteList []int32) { - sqlStr := "DELETE FROM system_mail_info WHERE mail_id = ?" - for i := 0; i < len(deleteList); i++ { - - result, err := db.SqlDb.Exec(sqlStr, deleteList[i]) - if err != nil { - fmt.Printf("exec failed, err:%v\n", err) - return - } - affectedRows, err := result.RowsAffected() - if err != nil { - fmt.Printf("get affected failed, err:%v\n", err) - return - } - fmt.Printf("delete data success, affected rows:%d\n", affectedRows) - } -} - -func (p *PlayerEmailData) IntervalGetUnsendMails() { - sqlStr := "SELECT * FROM system_mail_info WHERE dwUin = ? AND state = ?" - SqlStructs := []db.SqlEmailStruct{} - if err := db.SqlDb.Select(&SqlStructs, sqlStr, p.M_Player.M_DwUin, 0); err != nil { - - } else { - for i := 0; i < len(SqlStructs); i++ { - SqlStructs[i].Status = 1 - db.FormatAllMemUpdateDb(&SqlStructs[i], "system_mail_info", "mail_id") - } - if len(SqlStructs) > 0 { - p.NotifyNewBriefEmailData(SqlStructs) - } - - } -} - -func (p *PlayerEmailData) NotifyNewBriefEmailData(SqlStructs []db.SqlEmailStruct) { - notify := &msg.NotifyNewBriefEmailData{} - notify.DwUin = p.M_Player.M_DwUin - notify.MEmailList = []*msg.BriefEmailStruct{} - - p.SqlStructs = append(p.SqlStructs, SqlStructs...) - - for i := 0; i < len(SqlStructs); i++ { - st := &msg.BriefEmailStruct{} - st.EmailId = SqlStructs[i].EmailId - st.Sender = SqlStructs[i].Sender - st.Title = SqlStructs[i].Title - st.CurrencyCount = SqlStructs[i].CurrencyCount - st.CurrencyInfo = SqlStructs[i].CurrencyInfo - st.ItemCount = SqlStructs[i].ItemCount - st.ItemInfo = SqlStructs[i].ItemInfo - st.SendTime = SqlStructs[i].SendTime - st.Status = 1 - st.Type = SqlStructs[i].Type - SqlStructs[i].Status = 1 - notify.MEmailList = append(notify.MEmailList, st) - } - agent := p.GetPlayer().GetAgentByPlayer() - data, _ := proto.Marshal(notify) - G_getGameLogic().PackResInfo(agent, "NotifyNewBriefEmailData", data) -} - -func (p *PlayerEmailData) ResBriefEmailData() { - res := &msg.ResBriefEmailData{} - res.DwUin = p.M_Player.M_DwUin - res.MEmailList = []*msg.BriefEmailStruct{} - for i := 0; i < len(p.SqlStructs); i++ { - st := &msg.BriefEmailStruct{} - st.EmailId = p.SqlStructs[i].EmailId - st.Sender = p.SqlStructs[i].Sender - st.Title = p.SqlStructs[i].Title - st.CurrencyCount = p.SqlStructs[i].CurrencyCount - st.CurrencyInfo = p.SqlStructs[i].CurrencyInfo - st.ItemCount = p.SqlStructs[i].ItemCount - st.ItemInfo = p.SqlStructs[i].ItemInfo - st.SendTime = p.SqlStructs[i].SendTime - st.Status = p.SqlStructs[i].Status - st.Type = p.SqlStructs[i].Type - res.MEmailList = append(res.MEmailList, st) - } - - agent := p.GetPlayer().GetAgentByPlayer() - data, _ := proto.Marshal(res) - G_getGameLogic().PackResInfo(agent, "ResBriefEmailData", data) -} - -func (p *PlayerEmailData) FindSqlStructByMailId(mailId int32) *db.SqlEmailStruct { - for i := 0; i < len(p.SqlStructs); i++ { - if p.SqlStructs[i].EmailId == mailId { - return &p.SqlStructs[i] - } - } - return nil -} - -func (p *PlayerEmailData) DeleteSqlStructByMailId(mailId int32) *db.SqlEmailStruct { - var temp *db.SqlEmailStruct = nil - var list []db.SqlEmailStruct - for i := 0; i < len(p.SqlStructs); i++ { - if p.SqlStructs[i].EmailId == mailId { - temp = &p.SqlStructs[i] - if i > 0 { - list = append(list, p.SqlStructs[:i]...) - } - if i < len(p.SqlStructs)-1 { - list = append(list, p.SqlStructs[i+1:]...) - } - break - } - } - p.SqlStructs = list - - return temp -} - -func (p *PlayerEmailData) ResDetailEmailData(buf []byte) { - res := &msg.ResDetailEmailData{} - req := &msg.ReqDetailEmailData{} - proto.Unmarshal(buf, req) - - st := p.FindSqlStructByMailId(req.EmailId) - if st != nil { - res.ResultCode = 0 - res.Content = st.Content - res.EmailId = req.EmailId - res.RewardType = st.RewardType - res.RewardId = st.RewardId - res.RewardCount = st.RewardCount - res.LinkUrl = st.LinkUrl - if st.Type == 0 { - st.Status = 2 - st.RecvTime = int32(time.Now().Unix()) - db.FormatAllMemUpdateDb(st, "system_mail_info", "mail_id") - } - - } else { - res.ResultCode = MergeConst.Protocol_Email_Find_Fail - } - agent := p.GetPlayer().GetAgentByPlayer() - data, _ := proto.Marshal(res) - G_getGameLogic().PackResInfo(agent, "ResDetailEmailData", data) -} -func (p *PlayerEmailData) ResDeleteEmail(buf []byte) { - res := &msg.ResDeleteEmail{} - req := &msg.ReqDeleteEmail{} - proto.Unmarshal(buf, req) - - if p.DeleteSqlStructByMailId(req.EmailId) != nil { - res.EmailId = req.EmailId - res.ResultCode = 0 - deleteList := []int32{req.EmailId} - p.DeleteOutlineMail(deleteList) - - } else { - res.ResultCode = MergeConst.Protocol_Email_Find_Fail - } - agent := p.GetPlayer().GetAgentByPlayer() - data, _ := proto.Marshal(res) - G_getGameLogic().PackResInfo(agent, "ResDeleteEmail", data) -} - -func (p *PlayerEmailData) ResGetEmailReward(buf []byte) { - res := &msg.ResGetEmailReward{} - req := &msg.ReqGetEmailReward{} - proto.Unmarshal(buf, req) - - st := p.FindSqlStructByMailId(req.EmailId) - if st != nil { - res.ResultCode = 0 - res.EmailId = req.EmailId - res.RewardType = st.RewardType - res.RewardId = st.RewardId - res.RewardCount = st.RewardCount - st.Status = 2 - st.RecvTime = int32(time.Now().Unix()) - db.FormatAllMemUpdateDb(st, "system_mail_info", "mail_id") - ///发送奖励 - } else { - res.ResultCode = MergeConst.Protocol_Email_Find_Fail - } - agent := p.GetPlayer().GetAgentByPlayer() - data, _ := proto.Marshal(res) - G_getGameLogic().PackResInfo(agent, "ResGetEmailReward", data) -} -func (p *PlayerEmailData) ClearData() bool { - p.SaveDataFromDB("") - p.Mcron.Remove(p.ZeroCronID) - p.Mcron.Stop() - return true -} diff --git a/src/server/game/PlayerEmitUnlockMod.go b/src/server/game/PlayerEmitUnlockMod.go deleted file mode 100644 index 974a8f12..00000000 --- a/src/server/game/PlayerEmitUnlockMod.go +++ /dev/null @@ -1,129 +0,0 @@ -package game - -import ( - "fmt" - "server/GoUtil" - "server/MergeConst" - "server/db" - "server/msg" - "strconv" - "strings" - - "google.golang.org/protobuf/proto" -) - -type PlayerEmitUnlockData struct { - *PlayerData - Data msg.ResPlayerEmitUnlockData -} - -func (p *PlayerEmitUnlockData) LoadDataFromDB(dwUin interface{}) bool { - sqlStr := "SELECT * FROM t_player_emit_unlock WHERE dwUin = ?" - sqlStruck := db.SqlEmitUnlockStruct{RenewTime: 0} - p.Data.MEmitUnlockData = make(map[int32]int32) - - if err := db.SqlDb.Get(&sqlStruck, sqlStr, dwUin.(int32)); err != nil { - - p.IsHaveDataDb = false - } else { - p.IsHaveDataDb = true - } - if sqlStruck.Value != "" { - arr := strings.Split(sqlStruck.Value, "_") - for i := 0; i < len(arr); i++ { - ss := strings.Split(arr[i], ",") - id, err := strconv.ParseInt(ss[0], 10, 32) - cnt, _ := strconv.ParseInt(ss[1], 10, 32) - if err != nil { - panic(err) - } - p.Data.MEmitUnlockData[int32(id)] = int32(cnt) - } - } - p.Data.DwUin = dwUin.(int32) - p.Data.RenewTime = sqlStruck.RenewTime - - p.Reconnect(false) - return true -} - -func (p *PlayerEmitUnlockData) Reconnect(b bool) { - if G_GameLogicPtr.DailyTaskTimestamp > (int64)(p.Data.RenewTime) { - p.Data.RenewTime = int32(G_GameLogicPtr.DailyTaskTimestamp) - for k := range p.Data.MEmitUnlockData { - p.Data.MEmitUnlockData[k] = 0 - } - if b { - agent := p.GetPlayer().GetAgentByPlayer() - data, _ := proto.Marshal(&p.Data) - G_getGameLogic().PackResInfo(agent, "NotifyDailyRenewEmitUnlock", data) - } - } - GoUtil.RegisterEvent(MergeConst.Notify_Daily_Renew, p.NotifyDailyRenewEmitUnlock, p) -} - -func (p *PlayerEmitUnlockData) GetUnlockCntByID(id int32) int32 { - cnt, ok := p.Data.MEmitUnlockData[id] - if ok { - return cnt - } - return 0 -} - -func (p *PlayerEmitUnlockData) ClearData() bool { - p.SaveDataFromDB("") - GoUtil.RemoveEvent(MergeConst.Notify_Daily_Renew, p.NotifyDailyRenewEmitUnlock, p) - return true -} - -func (p *PlayerEmitUnlockData) SaveDataFromDB(Key interface{}) bool { - var strarr []string - for k, v := range p.Data.MEmitUnlockData { - str := fmt.Sprintf("%d,%d", k, v) - strarr = append(strarr, str) - } - str_concat := strings.Join(strarr, "_") - // sqlStr := "UPDATE user SET age = ?, degree = ? WHERE id = ?" - // result, err := SqlDb.Exec(sqlStr, 22, 10, 4) - sqlStruck := db.SqlEmitUnlockStruct{} - sqlStruck.DwUin = p.M_Player.M_DwUin - sqlStruck.Value = str_concat - if p.IsHaveDataDb { - db.FormatAllMemUpdateDb(&sqlStruck, "t_player_emit_unlock", "dwUin") - } else { - db.FormatAllMemInsertDb(&sqlStruck, "t_player_emit_unlock") - } - p.IsHaveDataDb = true - return true -} - -func (p *PlayerEmitUnlockData) ResPlayerEmitUnlockData(player *Player) { - if player != p.M_Player { - return - } - agent := p.GetPlayer().GetAgentByPlayer() - data, _ := proto.Marshal(&p.Data) - G_getGameLogic().PackResInfo(agent, "ResPlayerEmitUnlockData", data) -} - -func (p *PlayerEmitUnlockData) NotifyDailyRenewEmitUnlock(param []interface{}) { - p.Data.RenewTime = int32(param[0].(int64)) - for k := range p.Data.MEmitUnlockData { - p.Data.MEmitUnlockData[k] = 0 - } - - agent := p.GetPlayer().GetAgentByPlayer() - data, _ := proto.Marshal(&p.Data) - G_getGameLogic().PackResInfo(agent, "NotifyDailyRenewEmitUnlock", data) - // p.SaveDataFromDB("") -} - -func (p *PlayerEmitUnlockData) UpdatePlayerEmitUnlockData(buf []byte) { - - update := &msg.UpdatePlayerEmitUnlockData{} - proto.Unmarshal(buf, update) - - p.Data.MEmitUnlockData = update.MEmitUnlockData - - p.SaveDataFromDB("") -} diff --git a/src/server/game/PlayerFriendData.go b/src/server/game/PlayerFriendData.go deleted file mode 100644 index 1dd735a1..00000000 --- a/src/server/game/PlayerFriendData.go +++ /dev/null @@ -1,1398 +0,0 @@ -package game - -import ( - "fmt" - "math/rand" - "server/GoUtil" - "server/MergeConst" - "server/db" - "server/msg" - "sort" - "strconv" - "strings" - "time" - - "google.golang.org/protobuf/proto" -) - -type PlayerFriendData struct { - *PlayerData - Data msg.ResFriendData - AddFriendDatas []*msg.AddFriendData - InviteIds []int32 - InviteGetIndex int32 - pSqlInviteSt *db.SqlInviteFriendStruct - sqlStruck db.SqlFriendStruct -} - -func (p *PlayerFriendData) LoadDataFromDB(dwUin interface{}) bool { - - sqlStr := "SELECT * FROM t_player_Friend_Data WHERE dwUin = ?" - p.sqlStruck = db.SqlFriendStruct{} - p.Data.FriendInfos = []*msg.FriendInfo{} - p.AddFriendDatas = []*msg.AddFriendData{} - p.InviteIds = []int32{} - if err := db.SqlDb.Get(&p.sqlStruck, sqlStr, dwUin.(int32)); err != nil { - - p.IsHaveDataDb = false - } else { - p.IsHaveDataDb = true - } - if p.sqlStruck.FriendList != "" { - arr := strings.Split(p.sqlStruck.FriendList, "_") - for i := 0; i < len(arr); i++ { - - id, err := strconv.ParseInt(arr[i], 10, 32) - st := G_GameLogicPtr.MPlayerProfileManager.GetPlayerProfile(int32(id)) - - DecorateCnt, ActiveTime, FaceBookId := G_GameLogicPtr.MPlayerProfileManager.GetPlayerDecorate(int32(id)) - - info := msg.FriendInfo{} - if st != nil { - info.DwUin = st.DwUin - info.ImageFrame = st.ImageFrame - info.ImageIcon = st.ImageIcon - info.NickName = st.NickName - info.DecorateCnt = int32(DecorateCnt) - info.ActiveTime = int32(ActiveTime) - info.FaceBookId = FaceBookId - } else { - sql := &db.SqlPlayerProfileStruct{} - sql.DwUin = int32(id) - sql.ImageFrame = 1 - sql.ImageIcon = 1 - sql.NickName = "Player" + strconv.Itoa(int(id)) - sql.PicURL = "" - G_GameLogicPtr.MPlayerProfileManager.UpdateNewProfile(sql) - - info.DwUin = sql.DwUin - info.ImageFrame = sql.ImageFrame - info.ImageIcon = sql.ImageIcon - info.NickName = sql.NickName - info.DecorateCnt = int32(DecorateCnt) - info.ActiveTime = int32(ActiveTime) - info.FaceBookId = FaceBookId - } - - if err != nil { - panic(err) - } - - p.Data.FriendInfos = append(p.Data.FriendInfos, &info) - } - } - p.Data.DwUin = dwUin.(int32) - - sqlStr1 := "SELECT * FROM t_player_invite_data WHERE dwUin = ?" - p.pSqlInviteSt = &db.SqlInviteFriendStruct{} - p.pSqlInviteSt.DwUin = p.Data.DwUin - p.pSqlInviteSt.InviteList = "" - if err := db.SqlDb.Get(p.pSqlInviteSt, sqlStr1, p.M_Player.M_DwUin); err != nil { - - } else { - - } - if p.pSqlInviteSt.InviteList != "" { - strs := strings.Split(p.pSqlInviteSt.InviteList, ";") - for i := 0; i < len(strs); i++ { - id, _ := strconv.Atoi(strs[i]) - p.InviteIds = append(p.InviteIds, int32(id)) - } - } - - p.InviteGetIndex = p.pSqlInviteSt.GetIndex - - p.Reconnect(false) - return true -} - -func (p *PlayerFriendData) ReqFriendTreasureData(buf []byte) { - req := &msg.ReqFriendTreasureData{} - proto.Unmarshal(buf, req) - res := &msg.ResFriendTreasureData{} - res.Star = p.sqlStruck.TreasureStar - - agent := p.GetPlayer().GetAgentByPlayer() - data, _ := proto.Marshal(res) - G_getGameLogic().PackResInfo(agent, "ResFriendTreasureData", data) -} - -func (p *PlayerFriendData) ReqUpdateFriendStar(buf []byte) { - req := &msg.ReqUpdateFriendStar{} - proto.Unmarshal(buf, req) - res := &msg.ResUpdateFriendStar{} - res.Star = req.Star - p.sqlStruck.TreasureStar = req.Star - p.SaveDataFromDB("") - - agent := p.GetPlayer().GetAgentByPlayer() - data, _ := proto.Marshal(res) - G_getGameLogic().PackResInfo(agent, "ResUpdateFriendStar", data) -} - -func (p *PlayerFriendData) NotifyFriendTreasureStar() { - - res := &msg.NotifyFriendTreasureStar{} - res.Star = 0 - p.sqlStruck.TreasureStar = 0 - p.SaveDataFromDB("") - - agent := p.GetPlayer().GetAgentByPlayer() - data, _ := proto.Marshal(res) - G_getGameLogic().PackResInfo(agent, "NotifyFriendTreasureStar", data) -} - -func (p *PlayerFriendData) RandomGetAnFriend() *msg.FriendInfo { - var ran int - if len(p.Data.FriendInfos) > 0 { - ran = rand.Intn(len(p.Data.FriendInfos)) - return p.Data.FriendInfos[ran] - } - return nil -} - -func (p *PlayerFriendData) Reconnect(b bool) { - if b { - p.LoadDataFromDB(p.M_Player.M_DwUin) - } - GoUtil.RegisterEvent(MergeConst.Notify_Daily_Renew, p.Notify_Daily_Renew, p) -} - -func (p *PlayerFriendData) Notify_Daily_Renew(param []interface{}) { - p.NotifyFriendTreasureStar() -} - -func (p *PlayerFriendData) ClearData() bool { - p.SaveDataFromDB("") - GoUtil.RemoveEvent(MergeConst.Notify_Daily_Renew, p.Notify_Daily_Renew, p) - return true -} - -func (p *PlayerFriendData) SaveDataFromDB(Key interface{}) bool { - var strarr []string - for i := 0; i < len(p.Data.FriendInfos); i++ { - str := fmt.Sprintf("%d", p.Data.FriendInfos[i].DwUin) - strarr = append(strarr, str) - } - str_concat := strings.Join(strarr, "_") - - sqlStruck := db.SqlFriendStruct{} - sqlStruck.DwUin = p.M_Player.M_DwUin - sqlStruck.FriendList = str_concat - sqlStruck.TreasureStar = p.sqlStruck.TreasureStar - // if p.IsHaveDataDb { - // db.FormatAllMemUpdateDb(&sqlStruck, "t_player_Friend_Data", "dwUin") - // } else { - // db.FormatAllMemInsertDb(&sqlStruck, "t_player_Friend_Data") - // } - p.IsHaveDataDb = true - return true -} - -func (p *PlayerFriendData) ReqFriendData(player *Player) { - - // req := &msg.ReqFriendData{} - // proto.Unmarshal(buf, req) - - for i := 0; i < len(p.Data.FriendInfos); i++ { - id := p.Data.FriendInfos[i].DwUin - st := G_GameLogicPtr.MPlayerProfileManager.GetPlayerProfile(id) - - DecorateCnt, ActiveTime, FaceBookId := G_GameLogicPtr.MPlayerProfileManager.GetPlayerDecorate(int32(id)) - if st != nil { - p.Data.FriendInfos[i].ImageFrame = st.ImageFrame - p.Data.FriendInfos[i].ImageIcon = st.ImageIcon - p.Data.FriendInfos[i].NickName = st.NickName - p.Data.FriendInfos[i].DecorateCnt = int32(DecorateCnt) - p.Data.FriendInfos[i].ActiveTime = int32(ActiveTime) - p.Data.FriendInfos[i].FaceBookId = FaceBookId - } - } - - agent := p.GetPlayer().GetAgentByPlayer() - data, _ := proto.Marshal(&p.Data) - G_getGameLogic().PackResInfo(agent, "ResFriendData", data) -} - -func (p *PlayerFriendData) IsFriend(id int32) bool { - for i := 0; i < len(p.Data.FriendInfos); i++ { - if p.Data.FriendInfos[i].DwUin == id { - return true - } - - } - return false -} - -func (p *PlayerFriendData) ReqInviteFriendData(buf []byte) { - req := &msg.ReqInviteFriendData{} - proto.Unmarshal(buf, req) - res := &msg.ResInviteFriendData{} - - res.IdLists = p.InviteIds - - res.GetIndex = p.InviteGetIndex - - agent := p.GetPlayer().GetAgentByPlayer() - data, _ := proto.Marshal(res) - G_getGameLogic().PackResInfo(agent, "ResInviteFriendData", data) -} - -func (p *PlayerFriendData) ReqGetInviteReward(buf []byte) { - req := &msg.ReqGetInviteReward{} - proto.Unmarshal(buf, req) - res := &msg.ResGetInviteReward{} - - if req.GetIndex <= p.InviteGetIndex { - res.ResultCode = MergeConst.Protocol_AddFriend_Get_Invite_Reward - } else { - - p.pSqlInviteSt.GetIndex = req.GetIndex - p.InviteGetIndex = req.GetIndex - db.FormatAllMemUpdateDb(p.pSqlInviteSt, "t_player_invite_data", "dwUin") - } - - agent := p.GetPlayer().GetAgentByPlayer() - data, _ := proto.Marshal(res) - G_getGameLogic().PackResInfo(agent, "ResGetInviteReward", data) -} - -func (p *PlayerFriendData) ReqSelfInvited(buf []byte) { - req := &msg.ReqSelfInvited{} - proto.Unmarshal(buf, req) - res := &msg.ResSelfInvited{} - - sqlStr := "SELECT * FROM t_player_invite_data WHERE dwUin = ?" - sqlStruck := db.SqlInviteFriendStruct{} - sqlStruck.DwUin = req.InviterId - isHave := false - if err := db.SqlDb.Get(&sqlStruck, sqlStr, req.InviterId); err != nil { - isHave = false - } else { - isHave = true - } - InviteIds := []int32{} - if sqlStruck.InviteList != "" { - strs := strings.Split(sqlStruck.InviteList, ";") - - for i := 0; i < len(strs); i++ { - id, _ := strconv.Atoi(strs[i]) - InviteIds = append(InviteIds, int32(id)) - } - } - - if len(InviteIds) >= 10 { - - } else { - isExsit := false - for i := 0; i < len(InviteIds); i++ { - if InviteIds[i] == p.M_Player.M_DwUin { - isExsit = true - break - } - } - if !isExsit { - if sqlStruck.InviteList != "" { - jo := []string{sqlStruck.InviteList, strconv.Itoa(int(p.M_Player.M_DwUin))} - sqlStruck.InviteList = strings.Join(jo, ";") - } else { - jo := []string{strconv.Itoa(int(p.M_Player.M_DwUin))} - sqlStruck.InviteList = strings.Join(jo, ";") - } - if !isHave { - db.FormatAllMemInsertDb(&sqlStruck, "t_player_invite_data") - } else { - db.FormatAllMemUpdateDb(&sqlStruck, "t_player_invite_data", "dwUin") - } - InviteIds = append(InviteIds, p.M_Player.M_DwUin) - player, ok := G_GameLogicPtr.M_Players[req.InviterId] - if ok { - if player.GetGameData("PlayerFriendData") != nil { - player.GetIFGameData("PlayerFriendData").(*PlayerFriendData).NotifyInvitedSuccess(p.M_Player.M_DwUin) - } - } - } else { - - } - - } - agent := p.GetPlayer().GetAgentByPlayer() - data, _ := proto.Marshal(res) - G_getGameLogic().PackResInfo(agent, "ResSelfInvited", data) -} - -func (p *PlayerFriendData) NotifyInvitedSuccess(inviteId int32) { - // res.IdLists = p.InviteIds - // p.InviteGetIndex = sqlStruck.GetIndex - notify := &msg.NotifyInvitedSuccess{} - p.InviteIds = append(p.InviteIds, inviteId) - if p.pSqlInviteSt.InviteList != "" { - jo := []string{p.pSqlInviteSt.InviteList, strconv.Itoa(int(inviteId))} - p.pSqlInviteSt.InviteList = strings.Join(jo, ";") - } else { - jo := []string{strconv.Itoa(int(inviteId))} - p.pSqlInviteSt.InviteList = strings.Join(jo, ";") - } - // p.pSqlInviteSt. - // notify.IdLists = p.InviteIds - - agent := p.GetPlayer().GetAgentByPlayer() - data, _ := proto.Marshal(notify) - G_getGameLogic().PackResInfo(agent, "NotifyInvitedSuccess", data) -} - -func (p *PlayerFriendData) ReqWillPlayerDetail(buf []byte) { - - req := &msg.ReqWillPlayerDetail{} - proto.Unmarshal(buf, req) - res := &msg.ResWillPlayerDetail{} - res.PlayerInfos = []*msg.FriendInfo{} - PlayerId, err := strconv.Atoi(req.PlayerName) - - if err == nil { - if int32(PlayerId) == p.M_Player.M_DwUin { - res.ResultCode = MergeConst.Protocol_AddFriend_Is_YourSelf - } else { - // G_getGameLogic().Mlogger.Debug("ReqWillPlayerDetail1") - if p.IsFriend(int32(PlayerId)) { - res.ResultCode = MergeConst.Protocol_Player_Is_Friend - } else { - PlayerInfos := G_GameLogicPtr.MPlayerProfileManager.GetPlayerProfileByNick(req.PlayerName) - for i := 0; i < len(PlayerInfos); i++ { - info := &msg.FriendInfo{} - info.DwUin = PlayerInfos[i].DwUin - info.ImageFrame = PlayerInfos[i].ImageFrame - info.ImageIcon = PlayerInfos[i].ImageIcon - info.NickName = PlayerInfos[i].NickName - DecorateCnt, ActiveTime, FaceBookId := G_GameLogicPtr.MPlayerProfileManager.GetPlayerDecorate(PlayerInfos[i].DwUin) - - info.DecorateCnt = int32(DecorateCnt) - info.ActiveTime = int32(ActiveTime) - info.FaceBookId = FaceBookId - res.PlayerInfos = append(res.PlayerInfos, info) - } - if len(PlayerInfos) == 0 { - // G_getGameLogic().Mlogger.Debug("len(PlayerInfos)0:" + strconv.Itoa(len(PlayerInfos))) - res.ResultCode = MergeConst.Protocol_Player_Not_Exsit - } - // st := G_GameLogicPtr.MPlayerProfileManager.GetPlayerProfile(req.PlayerId) - // DecorateCnt := G_GameLogicPtr.MPlayerProfileManager.GetPlayerDecorate(req.PlayerId) - // if st == nil { - // isHave := G_GameLogicPtr.MPlayerProfileManager.GetIsHavePlayerById(req.PlayerId) - // if !isHave { - // res.ResultCode = MergeConst.Protocol_Player_Not_Exsit - // } else { - // res.PlayerInfo.DwUin = req.PlayerId - // res.PlayerInfo.ImageFrame = 1 - // res.PlayerInfo.ImageIcon = 1 - // res.PlayerInfo.DecorateCnt = int32(DecorateCnt) - // res.PlayerInfo.NickName = "Player" + strconv.Itoa(int(req.PlayerId)) - // } - // } else { - // res.PlayerInfo.DwUin = st.DwUin - // res.PlayerInfo.ImageFrame = st.ImageFrame - // res.PlayerInfo.ImageIcon = st.ImageIcon - // res.PlayerInfo.NickName = st.NickName - // res.PlayerInfo.DecorateCnt = int32(DecorateCnt) - // } - } - } - } else { - PlayerInfos := G_GameLogicPtr.MPlayerProfileManager.GetPlayerProfileByNick(req.PlayerName) - // G_getGameLogic().Mlogger.Debug("ReqWillPlayerDetail2") - maxIdx := len(PlayerInfos) - 1 - for i := maxIdx; i >= 0; i-- { - if p.M_Player.M_DwUin == PlayerInfos[i].DwUin { - PlayerInfos = append(PlayerInfos[:i], PlayerInfos[i+1:]...) - } - } - - for i := 0; i < len(PlayerInfos); i++ { - info := &msg.FriendInfo{} - info.DwUin = PlayerInfos[i].DwUin - info.ImageFrame = PlayerInfos[i].ImageFrame - info.ImageIcon = PlayerInfos[i].ImageIcon - info.NickName = PlayerInfos[i].NickName - DecorateCnt, ActiveTime, FaceBookId := G_GameLogicPtr.MPlayerProfileManager.GetPlayerDecorate(PlayerInfos[i].DwUin) - info.DecorateCnt = int32(DecorateCnt) - info.ActiveTime = int32(ActiveTime) - info.FaceBookId = FaceBookId - res.PlayerInfos = append(res.PlayerInfos, info) - } - if len(PlayerInfos) == 0 { - res.ResultCode = MergeConst.Protocol_Player_Not_Exsit - // G_getGameLogic().Mlogger.Debug("len(PlayerInfos)1:" + strconv.Itoa(len(PlayerInfos))) - } - } - - agent := p.GetPlayer().GetAgentByPlayer() - data, _ := proto.Marshal(res) - G_getGameLogic().PackResInfo(agent, "ResWillPlayerDetail", data) -} - -func (p *PlayerFriendData) GetIsHaveAddFriendInfo(sender int32, receive int32) (bool, *db.SqlAddFriendStruct) { - sqlStr := "SELECT * FROM t_player_Req_add_Friend WHERE SenderId = ? AND ReceiverId = ?" - sqlStruck := db.SqlAddFriendStruct{} - - if err := db.SqlDb.Get(&sqlStruck, sqlStr, sender, receive); err != nil { - return false, nil - } else { - return true, &sqlStruck - } - // return false -} - -func (p *PlayerFriendData) ReqAllAddFriendInfo(buf []byte) { - - req := &msg.ReqAllAddFriendInfo{} - proto.Unmarshal(buf, req) - res := &msg.ResAllAddFriendInfo{} - - sqlStr := "SELECT * FROM t_player_Req_add_Friend WHERE ReceiverId = ?" - sqlStruck := []db.SqlAddFriendStruct{} - res.FriendInfos = []*msg.AddFriendData{} - if err := db.SqlDb.Select(&sqlStruck, sqlStr, p.M_Player.M_DwUin); err != nil { - - } else { - - } - for i := 0; i < len(sqlStruck); i++ { - temp := &msg.AddFriendData{} - temp.AutoId = sqlStruck[i].Auto_id - temp.Finfo = &msg.FriendInfo{} - Profile := G_GameLogicPtr.MPlayerProfileManager.GetPlayerProfile(sqlStruck[i].SenderId) - - DecorateCnt, ActiveTime, FaceBookId := G_GameLogicPtr.MPlayerProfileManager.GetPlayerDecorate(sqlStruck[i].SenderId) - if Profile != nil { - temp.Finfo.DwUin = Profile.DwUin - temp.Finfo.ImageFrame = Profile.ImageFrame - temp.Finfo.ImageIcon = Profile.ImageIcon - temp.Finfo.NickName = Profile.NickName - temp.Finfo.DecorateCnt = int32(DecorateCnt) - temp.Finfo.ActiveTime = int32(ActiveTime) - temp.Finfo.FaceBookId = FaceBookId - } else { - temp.Finfo.DwUin = sqlStruck[i].SenderId - temp.Finfo.ImageFrame = 1 - temp.Finfo.ImageIcon = 1 - temp.Finfo.NickName = "Player" + strconv.Itoa(int(sqlStruck[i].SenderId)) - temp.Finfo.DecorateCnt = int32(DecorateCnt) - temp.Finfo.ActiveTime = int32(ActiveTime) - temp.Finfo.FaceBookId = FaceBookId - sql := &db.SqlPlayerProfileStruct{} - sql.DwUin = sqlStruck[i].SenderId - sql.ImageFrame = 1 - sql.ImageIcon = 1 - sql.NickName = "Player" + strconv.Itoa(int(sqlStruck[i].SenderId)) - sql.PicURL = "" - G_GameLogicPtr.MPlayerProfileManager.UpdateNewProfile(sql) - } - res.FriendInfos = append(res.FriendInfos, temp) - p.AddFriendDatas = res.FriendInfos - } - agent := p.GetPlayer().GetAgentByPlayer() - data, _ := proto.Marshal(res) - G_getGameLogic().PackResInfo(agent, "ResAllAddFriendInfo", data) -} - -func (p *PlayerFriendData) ReqRecommendFriendList(buf []byte) { - req := &msg.ReqRecommendFriendList{} - proto.Unmarshal(buf, req) - res := &msg.ResRecommendFriendList{} - - res.PlayerInfos = []*msg.FriendInfo{} - - req.ExcludeList = append(req.ExcludeList, p.M_Player.M_DwUin) - for i := 0; i < len(p.Data.FriendInfos); i++ { - req.ExcludeList = append(req.ExcludeList, p.Data.FriendInfos[i].DwUin) - } - - RecommondPlayers := G_GameLogicPtr.MPlayerProfileManager.RandomGetPlayers(int(req.RecommendCnt), p.M_Player.M_DwUin, req.ExcludeList) - - for i := 0; i < len(RecommondPlayers); i++ { - DecorateCnt, ActiveTime, FaceBookId := G_GameLogicPtr.MPlayerProfileManager.GetPlayerDecorate(RecommondPlayers[i].DwUin) - Finfo := &msg.FriendInfo{} - Finfo.DwUin = RecommondPlayers[i].DwUin - Finfo.ImageFrame = RecommondPlayers[i].ImageFrame - Finfo.ImageIcon = RecommondPlayers[i].ImageIcon - Finfo.NickName = RecommondPlayers[i].NickName - Finfo.DecorateCnt = int32(DecorateCnt) - Finfo.ActiveTime = int32(ActiveTime) - Finfo.FaceBookId = FaceBookId - res.PlayerInfos = append(res.PlayerInfos, Finfo) - } - - agent := p.GetPlayer().GetAgentByPlayer() - data, _ := proto.Marshal(res) - G_getGameLogic().PackResInfo(agent, "ResRecommendFriendList", data) -} - -func (p *PlayerFriendData) ReqAddFriendData(buf []byte) { - - req := &msg.ReqAddFriendData{} - proto.Unmarshal(buf, req) - res := &msg.ResAddFriendData{} - - sqlStruck := db.SqlAddFriendStruct{} - - isHave, _ := p.GetIsHaveAddFriendInfo(req.SenderId, req.ReceiverId) - isHave1, _ := p.GetIsHaveAddFriendInfo(req.ReceiverId, req.SenderId) - if isHave { - res.ResultCode = MergeConst.Protocol_AddFriend_Is_Send - } else { - res.ResultCode = 0 - if isHave1 { - res.ResultCode = MergeConst.Protocol_AddFriend_Is_Target_Send - agent := p.GetPlayer().GetAgentByPlayer() - data, _ := proto.Marshal(res) - G_getGameLogic().PackResInfo(agent, "ResAddFriendData", data) - return - } - - if p.IsFriend(req.ReceiverId) { - res.ResultCode = MergeConst.Protocol_Player_Is_Friend - agent := p.GetPlayer().GetAgentByPlayer() - data, _ := proto.Marshal(res) - G_getGameLogic().PackResInfo(agent, "ResAddFriendData", data) - return - } - - sqlStruck.SenderId = req.SenderId - sqlStruck.ReceiverId = req.ReceiverId - insertId, _ := db.FormatAllMemInsertDb(&sqlStruck, "t_player_Req_add_Friend") - ////////通知被添加好友请求的玩家 - notify := &msg.NotifyAddFriendReq{} - notify.ReqInfo = &msg.AddFriendData{} - notify.ReqInfo.Finfo = &msg.FriendInfo{} - notify.ReqInfo.AutoId = int32(insertId) - notify.ReqInfo.Finfo.DwUin = p.M_Player.M_DwUin - Profile := G_GameLogicPtr.MPlayerProfileManager.GetPlayerProfile(p.M_Player.M_DwUin) - - DecorateCnt, ActiveTime, FaceBookId := G_GameLogicPtr.MPlayerProfileManager.GetPlayerDecorate(p.M_Player.M_DwUin) - - if Profile != nil { - notify.ReqInfo.Finfo.ImageFrame = Profile.ImageFrame - notify.ReqInfo.Finfo.ImageIcon = Profile.ImageIcon - notify.ReqInfo.Finfo.NickName = Profile.NickName - notify.ReqInfo.Finfo.DecorateCnt = int32(DecorateCnt) - notify.ReqInfo.Finfo.ActiveTime = int32(ActiveTime) - notify.ReqInfo.Finfo.FaceBookId = FaceBookId - } else { - notify.ReqInfo.Finfo.ImageFrame = 1 - notify.ReqInfo.Finfo.ImageIcon = 1 - notify.ReqInfo.Finfo.NickName = "Player" + strconv.Itoa(int(p.M_Player.M_DwUin)) - notify.ReqInfo.Finfo.DecorateCnt = int32(DecorateCnt) - notify.ReqInfo.Finfo.ActiveTime = int32(ActiveTime) - notify.ReqInfo.Finfo.FaceBookId = FaceBookId - sql := &db.SqlPlayerProfileStruct{} - sql.DwUin = p.M_Player.M_DwUin - sql.ImageFrame = 1 - sql.ImageIcon = 1 - sql.NickName = "Player" + strconv.Itoa(int(p.M_Player.M_DwUin)) - sql.PicURL = "" - G_GameLogicPtr.MPlayerProfileManager.UpdateNewProfile(sql) - } - data, _ := proto.Marshal(notify) - G_GameLogicPtr.SendMassage(req.ReceiverId, "NotifyAddFriendReq", data) - - EventAuid, sqlst, friendInfo := p.M_Player.GetIFGameData("PlayerFriendEventData").(*PlayerFriendEventData).NewFriendEventToDb(1, req.ReceiverId, req.SenderId, []interface{}{int32(insertId)}) - player, ok := G_GameLogicPtr.M_Players[req.ReceiverId] - if ok { - if player.GetGameData("PlayerFriendEventData") != nil { - player.GetIFGameData("PlayerFriendEventData").(*PlayerFriendEventData).NotifyNewFriendEvent(EventAuid, sqlst, friendInfo) - } - } - } - - agent := p.GetPlayer().GetAgentByPlayer() - data, _ := proto.Marshal(res) - G_getGameLogic().PackResInfo(agent, "ResAddFriendData", data) -} - -func (p *PlayerFriendData) GetAddFriendData(auto int32) *msg.AddFriendData { - for i := 0; i < len(p.AddFriendDatas); i++ { - if p.AddFriendDatas[i].AutoId == auto { - return p.AddFriendDatas[i] - } - } - return nil -} - -///// - -func (p *PlayerFriendData) ReqAutoFBAddFriend(buf []byte) { - - req := &msg.ReqAutoFBAddFriend{} - proto.Unmarshal(buf, req) - res := &msg.ResAutoFBAddFriend{} - - for m := 0; m < len(req.FbIds); m++ { - findSql := "SELECT * FROM t_player_baseinfo WHERE FaceBookId = ?" - sqlStruckBInfo := db.ResPlayerBaseInfo{} - var PlayerId int32 = 0 - - if err2 := db.SqlDb.Get(&sqlStruckBInfo, findSql, req.FbIds[m]); err2 != nil { - - continue - } else { - PlayerId = sqlStruckBInfo.DwUin - } - if PlayerId == p.M_Player.M_DwUin { - continue - } - if p.IsFriend(PlayerId) { - continue - } - sqlStrs := []string{} - - sqlStr := "SELECT * FROM t_player_Friend_Data WHERE dwUin = ?" - sqlStruck := db.SqlFriendStruct{} - sqlStruck.FriendList = "" - sqlStruck.DwUin = p.M_Player.M_DwUin - isHave := false - - if err := db.SqlDb.Get(&sqlStruck, sqlStr, p.M_Player.M_DwUin); err != nil { - isHave = false - } else { - isHave = true - } - atrarr := []string{} - if sqlStruck.FriendList != "" { - atrarr = append(atrarr, sqlStruck.FriendList) - } - atrarr = append(atrarr, strconv.Itoa(int(PlayerId))) - sqlStruck.FriendList = strings.Join(atrarr, "_") - params := [][]any{} - if isHave { - sqlStrs = append(sqlStrs, "UPDATE t_player_Friend_Data SET FriendList = ? WHERE dwUin = ?") - - t1 := []any{} - t1 = append(t1, sqlStruck.FriendList) - t1 = append(t1, sqlStruck.DwUin) - params = append(params, t1) - } else { - sqlStrs = append(sqlStrs, "INSERT INTO t_player_Friend_Data(dwUin, FriendList) VALUES(?, ?)") - p.IsHaveDataDb = true - t1 := []any{} - t1 = append(t1, p.M_Player.M_DwUin) - t1 = append(t1, sqlStruck.FriendList) - params = append(params, t1) - } - ////////////// - sqlStruck1 := db.SqlFriendStruct{} - sqlStruck1.FriendList = "" - isHave1 := false - if err := db.SqlDb.Get(&sqlStruck1, sqlStr, PlayerId); err != nil { - isHave1 = false - } else { - isHave1 = true - } - atrarr1 := []string{} - - if sqlStruck1.FriendList != "" { - atrarr1 = append(atrarr1, sqlStruck1.FriendList) - } - atrarr1 = append(atrarr1, strconv.Itoa(int(p.M_Player.M_DwUin))) - sqlStruck1.FriendList = strings.Join(atrarr1, "_") - - if isHave1 { - sqlStrs = append(sqlStrs, "UPDATE t_player_Friend_Data SET FriendList = ? WHERE dwUin = ?") - - t1 := []any{} - t1 = append(t1, sqlStruck1.FriendList) - t1 = append(t1, sqlStruck1.DwUin) - params = append(params, t1) - } else { - sqlStrs = append(sqlStrs, "INSERT INTO t_player_Friend_Data(dwUin, FriendList) VALUES(?, ?)") - - t1 := []any{} - t1 = append(t1, PlayerId) - t1 = append(t1, sqlStruck1.FriendList) - params = append(params, t1) - } - err := db.SeriesTransaction(sqlStrs, params) - if err == nil { - finfo := &msg.FriendInfo{} - Profile := G_GameLogicPtr.MPlayerProfileManager.GetPlayerProfile(PlayerId) - DecorateCnt, ActiveTime, FaceBookId := G_GameLogicPtr.MPlayerProfileManager.GetPlayerDecorate(PlayerId) - if Profile != nil { - - finfo.DwUin = Profile.DwUin - finfo.ImageFrame = Profile.ImageFrame - finfo.ImageIcon = Profile.ImageIcon - finfo.NickName = Profile.NickName - finfo.DecorateCnt = int32(DecorateCnt) - finfo.ActiveTime = int32(ActiveTime) - finfo.FaceBookId = FaceBookId - } else { - - finfo.DwUin = PlayerId - finfo.ImageFrame = 1 - finfo.ImageIcon = 1 - finfo.NickName = "Player" + strconv.Itoa(int(PlayerId)) - finfo.DecorateCnt = int32(DecorateCnt) - finfo.ActiveTime = int32(ActiveTime) - finfo.FaceBookId = FaceBookId - - sql := &db.SqlPlayerProfileStruct{} - sql.DwUin = PlayerId - sql.ImageFrame = 1 - sql.ImageIcon = 1 - sql.NickName = "Player" + strconv.Itoa(int(PlayerId)) - sql.PicURL = "" - G_GameLogicPtr.MPlayerProfileManager.UpdateNewProfile(sql) - } - p.Data.FriendInfos = append(p.Data.FriendInfos, finfo) - - player, ok := G_GameLogicPtr.M_Players[PlayerId] - if ok { - if player.GetGameData("PlayerFriendData") != nil { - player.GetIFGameData("PlayerFriendData").(*PlayerFriendData).NotifySuccessFBAddFriend(p.M_Player.M_DwUin) - } - } - - } - } - - agent := p.GetPlayer().GetAgentByPlayer() - data, _ := proto.Marshal(res) - G_getGameLogic().PackResInfo(agent, "ResAutoFBAddFriend", data) -} - -func (p *PlayerFriendData) ReqAutoAddInviteFriend(buf []byte) { - - req := &msg.ReqAutoAddInviteFriend{} - proto.Unmarshal(buf, req) - res := &msg.ResAutoAddInviteFriend{} - - agent := p.GetPlayer().GetAgentByPlayer() - data, _ := proto.Marshal(res) - G_getGameLogic().PackResInfo(agent, "ResAutoAddInviteFriend", data) -} - -/////////////// - -func (p *PlayerFriendData) ReqAgreeFriendReq(buf []byte) { - - req := &msg.ReqAgreeFriendReq{} - proto.Unmarshal(buf, req) - res := &msg.ResAgreeFriendReq{} - res.Data = &msg.FriendInfo{} - res.AutoId = req.AutoId - addfriendData := p.GetAddFriendData(req.AutoId) - if addfriendData != nil { - if p.IsFriend(addfriendData.Finfo.DwUin) { - res.ResultCode = MergeConst.Protocol_Player_Is_Friend - agent := p.GetPlayer().GetAgentByPlayer() - data, _ := proto.Marshal(res) - G_getGameLogic().PackResInfo(agent, "ResAgreeFriendReq", data) - - EventAI := p.M_Player.GetIFGameData("PlayerFriendEventData").(*PlayerFriendEventData).DeleteEventDbData(p.M_Player.M_DwUin, 1, req.AutoId) - p.M_Player.GetIFGameData("PlayerFriendEventData").(*PlayerFriendEventData).DeleteLocalDataByAutoId(EventAI) - - sqlStr := "DELETE FROM t_player_Req_add_Friend WHERE auto_id = ?" - db.SqlDb.Exec(sqlStr, req.AutoId) - return - } - res.Data = addfriendData.Finfo - - sqlStrs := []string{} - sqlStrs = append(sqlStrs, "DELETE FROM t_player_Req_add_Friend WHERE auto_id = ?") - params := [][]any{} - t1 := []any{} - t1 = append(t1, req.AutoId) - params = append(params, t1) - - sqlStr := "SELECT * FROM t_player_Friend_Data WHERE dwUin = ?" - sqlStruck := db.SqlFriendStruct{} - sqlStruck.FriendList = "" - sqlStruck.DwUin = p.M_Player.M_DwUin - isHave := false - if err := db.SqlDb.Get(&sqlStruck, sqlStr, p.M_Player.M_DwUin); err != nil { - isHave = false - } else { - isHave = true - } - atrarr := []string{} - if sqlStruck.FriendList != "" { - atrarr = append(atrarr, sqlStruck.FriendList) - } - atrarr = append(atrarr, strconv.Itoa(int(addfriendData.Finfo.DwUin))) - sqlStruck.FriendList = strings.Join(atrarr, "_") - - if isHave { - sqlStrs = append(sqlStrs, "UPDATE t_player_Friend_Data SET FriendList = ? WHERE dwUin = ?") - - t1 := []any{} - t1 = append(t1, sqlStruck.FriendList) - t1 = append(t1, sqlStruck.DwUin) - params = append(params, t1) - } else { - sqlStrs = append(sqlStrs, "INSERT INTO t_player_Friend_Data(dwUin, FriendList) VALUES(?, ?)") - p.IsHaveDataDb = true - t1 := []any{} - t1 = append(t1, p.M_Player.M_DwUin) - t1 = append(t1, sqlStruck.FriendList) - params = append(params, t1) - } - ////////////// - sqlStruck1 := db.SqlFriendStruct{} - sqlStruck1.FriendList = "" - isHave1 := false - if err := db.SqlDb.Get(&sqlStruck1, sqlStr, addfriendData.Finfo.DwUin); err != nil { - isHave1 = false - } else { - isHave1 = true - } - atrarr1 := []string{} - - if sqlStruck1.FriendList != "" { - atrarr1 = append(atrarr1, sqlStruck1.FriendList) - } - atrarr1 = append(atrarr1, strconv.Itoa(int(p.M_Player.M_DwUin))) - sqlStruck1.FriendList = strings.Join(atrarr1, "_") - - if isHave1 { - sqlStrs = append(sqlStrs, "UPDATE t_player_Friend_Data SET FriendList = ? WHERE dwUin = ?") - - t1 := []any{} - t1 = append(t1, sqlStruck1.FriendList) - t1 = append(t1, sqlStruck1.DwUin) - params = append(params, t1) - } else { - sqlStrs = append(sqlStrs, "INSERT INTO t_player_Friend_Data(dwUin, FriendList) VALUES(?, ?)") - - t1 := []any{} - t1 = append(t1, addfriendData.Finfo.DwUin) - t1 = append(t1, sqlStruck1.FriendList) - params = append(params, t1) - } - err := db.SeriesTransaction(sqlStrs, params) - if err == nil { - finfo := &msg.FriendInfo{} - Profile := G_GameLogicPtr.MPlayerProfileManager.GetPlayerProfile(addfriendData.Finfo.DwUin) - DecorateCnt, ActiveTime, FaceBookId := G_GameLogicPtr.MPlayerProfileManager.GetPlayerDecorate(addfriendData.Finfo.DwUin) - if Profile != nil { - - finfo.DwUin = Profile.DwUin - finfo.ImageFrame = Profile.ImageFrame - finfo.ImageIcon = Profile.ImageIcon - finfo.NickName = Profile.NickName - finfo.DecorateCnt = int32(DecorateCnt) - finfo.ActiveTime = int32(ActiveTime) - finfo.FaceBookId = FaceBookId - } else { - - finfo.DwUin = addfriendData.Finfo.DwUin - finfo.ImageFrame = 1 - finfo.ImageIcon = 1 - finfo.NickName = "Player" + strconv.Itoa(int(addfriendData.Finfo.DwUin)) - finfo.DecorateCnt = int32(DecorateCnt) - finfo.ActiveTime = int32(ActiveTime) - finfo.FaceBookId = FaceBookId - - sql := &db.SqlPlayerProfileStruct{} - sql.DwUin = addfriendData.Finfo.DwUin - sql.ImageFrame = 1 - sql.ImageIcon = 1 - sql.NickName = "Player" + strconv.Itoa(int(addfriendData.Finfo.DwUin)) - sql.PicURL = "" - G_GameLogicPtr.MPlayerProfileManager.UpdateNewProfile(sql) - } - p.Data.FriendInfos = append(p.Data.FriendInfos, finfo) - - EventAuid, sqlst, friendInfo := p.M_Player.GetIFGameData("PlayerFriendEventData").(*PlayerFriendEventData).NewFriendEventToDb(2, p.M_Player.M_DwUin, addfriendData.Finfo.DwUin, []interface{}{req.AutoId}) - p.M_Player.GetIFGameData("PlayerFriendEventData").(*PlayerFriendEventData).NotifyNewFriendEvent(EventAuid, sqlst, friendInfo) - EventAI := p.M_Player.GetIFGameData("PlayerFriendEventData").(*PlayerFriendEventData).DeleteEventDbData(p.M_Player.M_DwUin, 1, req.AutoId) - p.M_Player.GetIFGameData("PlayerFriendEventData").(*PlayerFriendEventData).DeleteLocalDataByAutoId(EventAI) - - EventAuid1, sqlst1, friendInfo1 := p.M_Player.GetIFGameData("PlayerFriendEventData").(*PlayerFriendEventData).NewFriendEventToDb(2, addfriendData.Finfo.DwUin, p.M_Player.M_DwUin, []interface{}{int32(req.AutoId)}) - player, ok := G_GameLogicPtr.M_Players[addfriendData.Finfo.DwUin] - if ok { - if player.GetGameData("PlayerFriendData") != nil { - player.GetIFGameData("PlayerFriendData").(*PlayerFriendData).NotifySuccessAddFriend(req.AutoId, p.M_Player.M_DwUin) - } - if player.GetGameData("PlayerFriendEventData") != nil { - - player.GetIFGameData("PlayerFriendEventData").(*PlayerFriendEventData).NotifyNewFriendEvent(EventAuid1, sqlst1, friendInfo1) - } - } - for i := 0; i < len(p.AddFriendDatas); i++ { - if p.AddFriendDatas[i].AutoId == req.AutoId { - p.AddFriendDatas = append(p.AddFriendDatas[:i], p.AddFriendDatas[i+1:]...) - break - } - } - - } - - } else { - res.ResultCode = MergeConst.Protocol_AddFriend_Is_NoExsit - } - - agent := p.GetPlayer().GetAgentByPlayer() - data, _ := proto.Marshal(res) - G_getGameLogic().PackResInfo(agent, "ResAgreeFriendReq", data) -} - -func (p *PlayerFriendData) NotifySuccessInviteAddFriend(FriendId int32) { - notify := &msg.NotifySuccessInviteAddFriend{} - - notify.Data = &msg.FriendInfo{} - - Profile := G_GameLogicPtr.MPlayerProfileManager.GetPlayerProfile(FriendId) - DecorateCnt, ActiveTime, FaceBookId := G_GameLogicPtr.MPlayerProfileManager.GetPlayerDecorate(FriendId) - if Profile != nil { - notify.Data.ImageFrame = Profile.ImageFrame - notify.Data.ImageIcon = Profile.ImageIcon - notify.Data.NickName = Profile.NickName - notify.Data.DwUin = Profile.DwUin - notify.Data.DecorateCnt = int32(DecorateCnt) - notify.Data.ActiveTime = int32(ActiveTime) - notify.Data.FaceBookId = FaceBookId - } else { - notify.Data.ImageFrame = 1 - notify.Data.ImageIcon = 1 - notify.Data.NickName = "Player" + strconv.Itoa(int(FriendId)) - notify.Data.DwUin = FriendId - notify.Data.DecorateCnt = int32(DecorateCnt) - notify.Data.ActiveTime = int32(ActiveTime) - notify.Data.FaceBookId = FaceBookId - sql := &db.SqlPlayerProfileStruct{} - sql.DwUin = FriendId - sql.ImageFrame = 1 - sql.ImageIcon = 1 - sql.NickName = "Player" + strconv.Itoa(int(FriendId)) - sql.PicURL = "" - G_GameLogicPtr.MPlayerProfileManager.UpdateNewProfile(sql) - } - p.Data.FriendInfos = append(p.Data.FriendInfos, notify.Data) - p.IsHaveDataDb = true - agent := p.M_Player.GetAgentByPlayer() - data, _ := proto.Marshal(notify) - G_getGameLogic().PackResInfo(agent, "NotifySuccessInviteAddFriend", data) - -} - -func (p *PlayerFriendData) NotifySuccessFBAddFriend(FriendId int32) { - notify := &msg.NotifySuccessFBAddFriend{} - - notify.Data = &msg.FriendInfo{} - - Profile := G_GameLogicPtr.MPlayerProfileManager.GetPlayerProfile(FriendId) - DecorateCnt, ActiveTime, FaceBookId := G_GameLogicPtr.MPlayerProfileManager.GetPlayerDecorate(FriendId) - if Profile != nil { - notify.Data.ImageFrame = Profile.ImageFrame - notify.Data.ImageIcon = Profile.ImageIcon - notify.Data.NickName = Profile.NickName - notify.Data.DwUin = Profile.DwUin - notify.Data.DecorateCnt = int32(DecorateCnt) - notify.Data.ActiveTime = int32(ActiveTime) - notify.Data.FaceBookId = FaceBookId - } else { - notify.Data.ImageFrame = 1 - notify.Data.ImageIcon = 1 - notify.Data.NickName = "Player" + strconv.Itoa(int(FriendId)) - notify.Data.DwUin = FriendId - notify.Data.DecorateCnt = int32(DecorateCnt) - notify.Data.ActiveTime = int32(ActiveTime) - notify.Data.FaceBookId = FaceBookId - sql := &db.SqlPlayerProfileStruct{} - sql.DwUin = FriendId - sql.ImageFrame = 1 - sql.ImageIcon = 1 - sql.NickName = "Player" + strconv.Itoa(int(FriendId)) - sql.PicURL = "" - G_GameLogicPtr.MPlayerProfileManager.UpdateNewProfile(sql) - } - p.Data.FriendInfos = append(p.Data.FriendInfos, notify.Data) - p.IsHaveDataDb = true - agent := p.M_Player.GetAgentByPlayer() - data, _ := proto.Marshal(notify) - G_getGameLogic().PackResInfo(agent, "NotifySuccessFBAddFriend", data) - -} - -func (p *PlayerFriendData) NotifySuccessAddFriend(AutoId int32, FriendId int32) { - notify := &msg.NotifyAgreeAddFriend{} - notify.AutoId = AutoId - notify.Data = &msg.FriendInfo{} - - Profile := G_GameLogicPtr.MPlayerProfileManager.GetPlayerProfile(FriendId) - DecorateCnt, ActiveTime, FaceBookId := G_GameLogicPtr.MPlayerProfileManager.GetPlayerDecorate(FriendId) - if Profile != nil { - notify.Data.ImageFrame = Profile.ImageFrame - notify.Data.ImageIcon = Profile.ImageIcon - notify.Data.NickName = Profile.NickName - notify.Data.DwUin = Profile.DwUin - notify.Data.DecorateCnt = int32(DecorateCnt) - notify.Data.ActiveTime = int32(ActiveTime) - notify.Data.FaceBookId = FaceBookId - } else { - notify.Data.ImageFrame = 1 - notify.Data.ImageIcon = 1 - notify.Data.NickName = "Player" + strconv.Itoa(int(FriendId)) - notify.Data.DwUin = FriendId - notify.Data.DecorateCnt = int32(DecorateCnt) - notify.Data.ActiveTime = int32(ActiveTime) - notify.Data.FaceBookId = FaceBookId - sql := &db.SqlPlayerProfileStruct{} - sql.DwUin = FriendId - sql.ImageFrame = 1 - sql.ImageIcon = 1 - sql.NickName = "Player" + strconv.Itoa(int(FriendId)) - sql.PicURL = "" - G_GameLogicPtr.MPlayerProfileManager.UpdateNewProfile(sql) - } - p.Data.FriendInfos = append(p.Data.FriendInfos, notify.Data) - p.IsHaveDataDb = true - agent := p.M_Player.GetAgentByPlayer() - data, _ := proto.Marshal(notify) - G_getGameLogic().PackResInfo(agent, "NotifyAgreeAddFriend", data) - -} - -func (p *PlayerFriendData) ReqRefuseFriendReq(buf []byte) { - req := &msg.ReqRefuseFriendReq{} - proto.Unmarshal(buf, req) - res := &msg.ResRefuseFriendReq{} - - sqlStr := "DELETE FROM t_player_Req_add_Friend WHERE auto_id = ?" - result, err := db.SqlDb.Exec(sqlStr, req.AutoId) - - if err != nil { - fmt.Printf("exec failed, err:%v\n", err) - } - affectedRows, err := result.RowsAffected() - - if err != nil { - fmt.Printf("get affected failed, err:%v\n", err) - - } else { - if affectedRows > 0 { - res.ResultCode = 0 - for i := 0; i < len(p.AddFriendDatas); i++ { - if p.AddFriendDatas[i].AutoId == req.AutoId { - p.AddFriendDatas = append(p.AddFriendDatas[:i], p.AddFriendDatas[i+1:]...) - break - } - } - EventAI := p.M_Player.GetIFGameData("PlayerFriendEventData").(*PlayerFriendEventData).DeleteEventDbData(p.M_Player.M_DwUin, 1, req.AutoId) - p.M_Player.GetIFGameData("PlayerFriendEventData").(*PlayerFriendEventData).DeleteLocalDataByAutoId(EventAI) - } else { - res.ResultCode = MergeConst.Protocol_AddFriend_Is_NoExsit - } - } - fmt.Printf("delete data success, affected rows:%d\n", affectedRows) - res.AutoId = req.AutoId - - agent := p.GetPlayer().GetAgentByPlayer() - data, _ := proto.Marshal(res) - G_getGameLogic().PackResInfo(agent, "ResRefuseFriendReq", data) -} - -func (p *PlayerFriendData) ReqDeleteFriend(buf []byte) { - -} - -func (p *PlayerFriendData) NotifySuccessDeleteFriend(FriendId int32) { - notify := &msg.NotifyDeleteFriend{} - notify.PlayerId = FriendId - - for i := 0; i < len(p.Data.FriendInfos); i++ { - if p.Data.FriendInfos[i].DwUin == FriendId { - p.Data.FriendInfos = append(p.Data.FriendInfos[:i], p.Data.FriendInfos[i+1:]...) - break - } - } - proto.Marshal(notify) - agent := p.GetPlayer().GetAgentByPlayer() - data, _ := proto.Marshal(notify) - G_getGameLogic().PackResInfo(agent, "NotifyDeleteFriend", data) -} - -// /////////////////// -type PlayerFriendEventData struct { - *PlayerData - Data msg.ResFriendEventData - MsqlStruck []db.SqlFriendEventStruct -} - -func (p *PlayerFriendEventData) LoadDataFromDB(dwUin interface{}) bool { - - sqlStr := "SELECT * FROM t_Friend_Event_Data WHERE dwUin = ?" - p.MsqlStruck = []db.SqlFriendEventStruct{} - p.Data.MFriendEventData = []*msg.FriendEventData{} - - if err := db.SqlDb.Select(&p.MsqlStruck, sqlStr, dwUin.(int32)); err != nil { - - p.IsHaveDataDb = false - } else { - p.IsHaveDataDb = true - } - sort.Slice(p.MsqlStruck, func(i, j int) bool { return p.MsqlStruck[i].EventStartTime > p.MsqlStruck[j].EventStartTime }) - - p.DeleteOutRangeEvent(30) - for i := 0; i < len(p.MsqlStruck); i++ { - item := msg.FriendEventData{} - item.AutoId = p.MsqlStruck[i].AutoId - item.EventStartTime = p.MsqlStruck[i].EventStartTime - item.EventType = p.MsqlStruck[i].EventType - item.EventParam = p.MsqlStruck[i].EventParam - item.MFriendInfo = p.GetFriendInfoByEvent(p.MsqlStruck[i].EventType, p.MsqlStruck[i].EventParam) - p.Data.MFriendEventData = append(p.Data.MFriendEventData, &item) - } - - p.Reconnect(false) - return true -} - -func (p *PlayerFriendEventData) DeleteOutTimelineEvent(deleteList []int32, tableName string) { - sqlStr := "DELETE FROM " + tableName + " WHERE auto_id = ?" - for i := 0; i < len(deleteList); i++ { - - result, err := db.SqlDb.Exec(sqlStr, deleteList[i]) - if err != nil { - fmt.Printf("exec failed, err:%v\n", err) - return - } - affectedRows, err := result.RowsAffected() - if err != nil { - fmt.Printf("get affected failed, err:%v\n", err) - return - } - fmt.Printf("delete data success, affected rows:%d\n", affectedRows) - } -} - -func (p *PlayerFriendEventData) DeleteOutRangeEvent(eventCnt int) { - cnt := 0 - deleteIDs := []int32{} - SqlList := []db.SqlFriendEventStruct{} - for i := 0; i < len(p.MsqlStruck); i++ { - if p.MsqlStruck[i].EventType != 1 && p.MsqlStruck[i].EventType != 6 && p.MsqlStruck[i].EventType != 7 && p.MsqlStruck[i].EventType != 8 && p.MsqlStruck[i].EventType != 11 { - cnt = cnt + 1 - if cnt > eventCnt { - deleteIDs = append(deleteIDs, p.MsqlStruck[i].AutoId) - } else { - SqlList = append(SqlList, p.MsqlStruck[i]) - } - } else { - SqlList = append(SqlList, p.MsqlStruck[i]) - } - } - p.MsqlStruck = SqlList - p.DeleteOutTimelineEvent(deleteIDs, "t_Friend_Event_Data") - -} - -func (p *PlayerFriendEventData) GetFriendInfoByEvent(Eventtype int32, eventParam string) *msg.FriendInfo { - strr := strings.Split(eventParam, "_") - id, _ := strconv.Atoi(strr[0]) - friendDwuin := int32(id) - Profile := G_GameLogicPtr.MPlayerProfileManager.GetPlayerProfile(friendDwuin) - friendInfo := &msg.FriendInfo{} - - if Profile != nil { - friendInfo.ImageFrame = Profile.ImageFrame - friendInfo.ImageIcon = Profile.ImageIcon - friendInfo.NickName = Profile.NickName - friendInfo.DwUin = Profile.DwUin - friendInfo.DecorateCnt = 0 - } else { - friendInfo.ImageFrame = 1 - friendInfo.ImageIcon = 1 - friendInfo.NickName = "Player" + strconv.Itoa(int(friendDwuin)) - friendInfo.DwUin = friendDwuin - friendInfo.DecorateCnt = 0 - - sql := &db.SqlPlayerProfileStruct{} - sql.DwUin = friendDwuin - sql.ImageFrame = 1 - sql.ImageIcon = 1 - sql.NickName = "Player" + strconv.Itoa(int(friendDwuin)) - sql.PicURL = "" - G_GameLogicPtr.MPlayerProfileManager.UpdateNewProfile(sql) - } - return friendInfo -} - -func (p *PlayerFriendEventData) InitEventParamAndFriendInfo(Eventtype int32, friendDwuin int32, args []interface{}) (*msg.FriendInfo, string) { - Profile := G_GameLogicPtr.MPlayerProfileManager.GetPlayerProfile(friendDwuin) - friendInfo := &msg.FriendInfo{} - EventParam := "" - if Profile != nil { - friendInfo.ImageFrame = Profile.ImageFrame - friendInfo.ImageIcon = Profile.ImageIcon - friendInfo.NickName = Profile.NickName - friendInfo.DwUin = Profile.DwUin - friendInfo.DecorateCnt = 0 - } else { - friendInfo.ImageFrame = 1 - friendInfo.ImageIcon = 1 - friendInfo.NickName = "Player" + strconv.Itoa(int(friendDwuin)) - friendInfo.DwUin = friendDwuin - friendInfo.DecorateCnt = 0 - - sql := &db.SqlPlayerProfileStruct{} - sql.DwUin = friendDwuin - sql.ImageFrame = 1 - sql.ImageIcon = 1 - sql.NickName = "Player" + strconv.Itoa(int(friendDwuin)) - sql.PicURL = "" - G_GameLogicPtr.MPlayerProfileManager.UpdateNewProfile(sql) - } - if Eventtype == 1 { - EventParam = strconv.Itoa(int(friendDwuin)) + "_" + strconv.Itoa(int(args[0].(int32))) //好友id+申请AutoId - } - if Eventtype == 2 { - EventParam = strconv.Itoa(int(friendDwuin)) + "_" + strconv.Itoa(int(args[0].(int32))) //好友id+申请AutoId - } - if Eventtype == 3 { - EventParam = strconv.Itoa(int(friendDwuin)) + "_" + strconv.Itoa(int(args[0].(int32))) + "_" + strconv.Itoa(int(args[1].(int32))) //好友id+申请AutoId+卡牌ID - } - if Eventtype == 4 { - EventParam = strconv.Itoa(int(friendDwuin)) + "_" + strconv.Itoa(int(args[0].(int32))) + "_" + strconv.Itoa(int(args[1].(int32))) //好友id+申请AutoId+卡牌ID - } - if Eventtype == 5 { - EventParam = strconv.Itoa(int(friendDwuin)) + "_" + strconv.Itoa(int(args[0].(int32))) + "_" + strconv.Itoa(int(args[1].(int32))) //好友id+申请AutoId+卡牌ID - } - if Eventtype == 6 { - EventParam = strconv.Itoa(int(friendDwuin)) + "_" + strconv.Itoa(int(args[0].(int32))) + "_" + strconv.Itoa(int(args[1].(int32))) + "_" + strconv.Itoa(int(args[2].(int32))) //好友id+申请AutoId+卡牌ID+卡牌ID - } - if Eventtype == 7 { - EventParam = strconv.Itoa(int(friendDwuin)) + "_" + strconv.Itoa(int(args[0].(int32))) + "_" + strconv.Itoa(int(args[1].(int32))) //好友id+申请AutoId+卡牌ID - } - if Eventtype == 8 { - EventParam = strconv.Itoa(int(friendDwuin)) + "_" + strconv.Itoa(int(args[0].(int32))) + "_" + strconv.Itoa(int(args[1].(int32))) //好友id+申请AutoId+卡牌ID - } - - if Eventtype == 9 { - EventParam = strconv.Itoa(int(friendDwuin)) + "_" + strconv.Itoa(int(args[0].(int32))) + "_" + strconv.Itoa(int(args[1].(int32))) + "_" + strconv.Itoa(int(args[2].(int32))) //好友id+申请AutoId+卡牌ID+卡牌ID - } - if Eventtype == 10 { - EventParam = strconv.Itoa(int(friendDwuin)) + "_" + strconv.Itoa(int(args[0].(int32))) + "_" + strconv.Itoa(int(args[1].(int32))) + "_" + strconv.Itoa(int(args[2].(int32))) //好友id+申请AutoId+卡牌ID+卡牌ID - } - - if Eventtype == 11 { - EventParam = strconv.Itoa(int(friendDwuin)) + "_" + strconv.Itoa(int(args[0].(int32))) + "_" + strconv.Itoa(int(args[1].(int32))) + "_" + strconv.Itoa(int(args[2].(int32))) //好友id+申请AutoId+卡牌ID+卡牌ID - } - if Eventtype == 12 { - EventParam = strconv.Itoa(int(friendDwuin)) + "_" + args[0].(string) + "_" + strconv.Itoa(int(args[1].(int32))) - } - if Eventtype == 14 { - EventParam = strconv.Itoa(int(friendDwuin)) - } - return friendInfo, EventParam -} - -func (p *PlayerFriendEventData) Reconnect(b bool) { - if b { - p.LoadDataFromDB(p.M_Player.M_DwUin) - } -} - -func (p *PlayerFriendEventData) ClearData() bool { - p.SaveDataFromDB("") - - return true -} -func (p *PlayerFriendEventData) SaveDataToDB(AutoId int32) { - for i := 0; i < len(p.MsqlStruck); i++ { - if p.MsqlStruck[i].AutoId == AutoId { - db.FormatAllMemUpdateDb(&p.MsqlStruck[i], "t_Friend_Event_Data", "auto_id") - } - } -} - -func (p *PlayerFriendEventData) NewFriendEventToDb(Eventtype int32, TargetDwuin int32, friendDwuin int32, args []interface{}) (int32, *db.SqlFriendEventStruct, *msg.FriendInfo) { - sqlStruck := db.SqlFriendEventStruct{} - sqlStruck.DwUin = TargetDwuin - sqlStruck.EventStartTime = int32(time.Now().Unix()) - sqlStruck.EventType = Eventtype - friendInfo, EventParam := p.InitEventParamAndFriendInfo(Eventtype, friendDwuin, args) - sqlStruck.EventParam = EventParam - - SqlList := []db.SqlFriendEventStruct{sqlStruck} - p.MsqlStruck = append(SqlList, p.MsqlStruck...) - - insertId, _ := db.FormatAllMemInsertDb(&sqlStruck, "t_Friend_Event_Data") - return int32(insertId), &sqlStruck, friendInfo -} - -func (p *PlayerFriendEventData) NotifyNewFriendEvent(insertId int32, sqlStruck *db.SqlFriendEventStruct, friendInfo *msg.FriendInfo) { - - notify := &msg.NotifyNewFriendEvent{} - event := &msg.FriendEventData{} - event.EventStartTime = sqlStruck.EventStartTime - event.EventType = sqlStruck.EventType - event.EventParam = sqlStruck.EventParam - event.MFriendInfo = friendInfo - event.AutoId = insertId - - notify.DwUin = p.M_Player.M_DwUin - notify.NewEvent = event - list := []*msg.FriendEventData{event} - p.Data.MFriendEventData = append(list, p.Data.MFriendEventData...) - - agent := p.GetPlayer().GetAgentByPlayer() - data, _ := proto.Marshal(notify) - G_getGameLogic().PackResInfo(agent, "NotifyNewFriendEvent", data) -} - -func (p *PlayerFriendEventData) DeleteEventDbData(dwUin int32, Eventtype int32, AutoId int32) int32 { - sqlStr := "SELECT * FROM t_Friend_Event_Data WHERE dwUin = ? AND EventType = ?" - MsqlStruck := []db.SqlFriendEventStruct{} - if err := db.SqlDb.Select(&MsqlStruck, sqlStr, dwUin, Eventtype); err != nil { - - } else { - - } - if Eventtype == 1 || Eventtype == 6 || Eventtype == 7 || Eventtype == 8 || Eventtype == 11 { - for i := 0; i < len(MsqlStruck); i++ { - units := strings.Split(MsqlStruck[i].EventParam, "_") - v, _ := strconv.Atoi(units[1]) - if AutoId == int32(v) { - sqlStr := "DELETE FROM " + "t_Friend_Event_Data" + " WHERE auto_id = ?" - db.SqlDb.Exec(sqlStr, MsqlStruck[i].AutoId) - return MsqlStruck[i].AutoId - } - } - } - return 0 -} - -func (p *PlayerFriendEventData) DeleteLocalDataByAutoId(AutoId int32) { - for i := 0; i < len(p.MsqlStruck); i++ { - if p.MsqlStruck[i].AutoId == AutoId { - p.MsqlStruck = append(p.MsqlStruck[:i], p.MsqlStruck[i+1:]...) - break - } - } - for i := 0; i < len(p.Data.MFriendEventData); i++ { - if p.Data.MFriendEventData[i].AutoId == AutoId { - p.Data.MFriendEventData = append(p.Data.MFriendEventData[:i], p.Data.MFriendEventData[i+1:]...) - break - } - } - - notify := &msg.NotifyFriendEventComplete{} - notify.AutoId = AutoId - notify.DwUin = p.M_Player.M_DwUin - - agent := p.GetPlayer().GetAgentByPlayer() - data, _ := proto.Marshal(notify) - G_getGameLogic().PackResInfo(agent, "NotifyFriendEventComplete", data) -} - -func (p *PlayerFriendEventData) SaveDataFromDB(Key interface{}) bool { - - return true -} - -func (p *PlayerFriendEventData) ReqFriendEventData(buf []byte) { - agent := p.GetPlayer().GetAgentByPlayer() - data, _ := proto.Marshal(&p.Data) - G_getGameLogic().PackResInfo(agent, "ResFriendEventData", data) - p.SaveDataFromDB("") -} diff --git a/src/server/game/PlayerFunc.go b/src/server/game/PlayerFunc.go index 8f91d445..8d3536f6 100644 --- a/src/server/game/PlayerFunc.go +++ b/src/server/game/PlayerFunc.go @@ -289,6 +289,8 @@ func FriendLogBackData(p *Player) { Player: ps, Type: int32(v.Type), Time: int32(v.Time), + Param: v.Param, + Id: int32(v.Id), }) } p.PushClientRes(&proto.ResFriendTimeLine{ diff --git a/src/server/game/PlayerGiftMod.go b/src/server/game/PlayerGiftMod.go deleted file mode 100644 index 584e3220..00000000 --- a/src/server/game/PlayerGiftMod.go +++ /dev/null @@ -1,97 +0,0 @@ -package game - -import ( - "fmt" - "server/db" - "server/msg" - "strconv" - "strings" - - "google.golang.org/protobuf/proto" -) - -type PlayerGiftData struct { - *PlayerData - Data msg.ResPlayerGiftData -} - -func (p *PlayerGiftData) LoadDataFromDB(dwUin interface{}) bool { - - sqlStr := "SELECT * FROM t_player_gift_data WHERE dwUin = ?" - sqlStruck := db.SqlGiftStruct{} - p.Data.MGiftData = make(map[int32]int32) - if err := db.SqlDb.Get(&sqlStruck, sqlStr, dwUin.(int32)); err != nil { - - p.IsHaveDataDb = false - } else { - p.IsHaveDataDb = true - } - if sqlStruck.MGiftData != "" { - arr := strings.Split(sqlStruck.MGiftData, "_") - - for i := 0; i < len(arr); i++ { - ss := strings.Split(arr[i], ",") - id, err := strconv.ParseInt(ss[1], 10, 32) - key, _ := strconv.ParseInt(ss[0], 10, 32) - - if err != nil { - panic(err) - } - - p.Data.MGiftData[int32(key)] = int32(id) - } - } - - p.Data.DwUin = dwUin.(int32) - p.Reconnect(false) - return true -} - -func (p *PlayerGiftData) Reconnect(b bool) { - -} - -func (p *PlayerGiftData) SaveDataFromDB(Key interface{}) bool { - var strarr []string - for k, v := range p.Data.MGiftData { - str := fmt.Sprintf("%d,%d", k, v) - strarr = append(strarr, str) - } - str_concat := strings.Join(strarr, "_") - - sqlStruck := db.SqlGiftStruct{} - sqlStruck.DwUin = p.M_Player.M_DwUin - sqlStruck.MGiftData = str_concat - if p.IsHaveDataDb { - db.FormatAllMemUpdateDb(&sqlStruck, "t_player_gift_data", "dwUin") - } else { - db.FormatAllMemInsertDb(&sqlStruck, "t_player_gift_data") - } - p.IsHaveDataDb = true - return true -} - -func (p *PlayerGiftData) ResPlayerGiftData(player *Player) { - if player != p.M_Player { - return - } - agent := p.GetPlayer().GetAgentByPlayer() - data, _ := proto.Marshal(&p.Data) - G_getGameLogic().PackResInfo(agent, "ResPlayerGiftData", data) -} - -func (p *PlayerGiftData) UpdatePlayerGiftData(buf []byte) { - - update := &msg.UpdatePlayerGiftData{} - proto.Unmarshal(buf, update) - - p.Data.MGiftData = update.MGiftData - - p.SaveDataFromDB("") -} - -func (p *PlayerGiftData) ClearData() bool { - p.SaveDataFromDB("") - - return true -} diff --git a/src/server/game/PlayerMod.go b/src/server/game/PlayerMod.go index fadb3516..9e32128d 100644 --- a/src/server/game/PlayerMod.go +++ b/src/server/game/PlayerMod.go @@ -165,7 +165,7 @@ func (p *PlayerMod) ClearData(player *Player) { fmt.Println(err) return } - log.Debug("uid: %d, ClearData, playmod", player.M_DwUin) + // log.Debug("uid: %d, ClearData, playmod", player.M_DwUin) modData := &db.SqlModStruct{ DwUin: player.M_DwUin, ModData: buf.Bytes(), diff --git a/src/server/game/PlayerPigData.go b/src/server/game/PlayerPigData.go deleted file mode 100644 index 132c60b5..00000000 --- a/src/server/game/PlayerPigData.go +++ /dev/null @@ -1,168 +0,0 @@ -package game - -import ( - "server/MergeConst" - "server/db" - "server/msg" - "time" - - "google.golang.org/protobuf/proto" -) - -type PlayerPigData struct { - *PlayerData - Data msg.ResPigDetailInfo -} - -func (p *PlayerPigData) LoadDataFromDB(dwUin interface{}) bool { - - sqlStr := "SELECT * FROM t_player_piginfo WHERE dwUin = ?" - sqlStruck := db.SqlPigDetailInfoStruct{} - sqlStruck.PigId = 0 - if err := db.SqlDb.Get(&sqlStruck, sqlStr, dwUin.(int32)); err != nil { - - p.IsHaveDataDb = false - } else { - p.IsHaveDataDb = true - } - p.Data.CurDiamonds = sqlStruck.CurDiamonds - p.Data.DwUin = p.M_Player.M_DwUin - p.Data.PigId = sqlStruck.PigId - p.Data.PigType = sqlStruck.PigType - p.Data.StartSvrTime = sqlStruck.StartSvrTime - p.Data.EndSvrTime = sqlStruck.EndSvrTime - p.Data.CurGetLv = sqlStruck.CurGetLv - p.Reconnect(false) - - return true -} -func (p *PlayerPigData) Reconnect(b bool) { - -} - -func (p *PlayerPigData) DeleteLastPigData(pigid int32) { - sqlStr := "DELETE FROM " + "t_player_piginfo" + " WHERE PigId = ?" - - db.SqlDb.Exec(sqlStr, pigid) - p.Data.PigId = 0 -} - -func (p *PlayerPigData) ClearData() bool { - p.SaveDataFromDB("") - - return true -} -func (p *PlayerPigData) SaveDataFromDB(Key interface{}) bool { - - sqlStruck := db.SqlPigDetailInfoStruct{} - sqlStruck.DwUin = p.M_Player.M_DwUin - sqlStruck.CurDiamonds = p.Data.CurDiamonds - sqlStruck.CurGetLv = p.Data.CurGetLv - sqlStruck.CurSvrTime = 0 - sqlStruck.EndSvrTime = p.Data.EndSvrTime - sqlStruck.StartSvrTime = p.Data.StartSvrTime - sqlStruck.PigId = p.Data.PigId - sqlStruck.PigType = p.Data.PigType - - if p.IsHaveDataDb { - if p.Data.PigId != 0 { - db.FormatAllMemUpdateDb(&sqlStruck, "t_player_piginfo", "PigId") - } - } else { - if p.Data.PigId != 0 { - db.FormatAllMemInsertDb(&sqlStruck, "t_player_piginfo") - } - } - p.IsHaveDataDb = true - return true -} - -func (p *PlayerPigData) ResOpenNewPig(player *Player) { - res := &msg.ResOpenNewPig{} - st := &db.SqlPigDetailInfoStruct{} - st.DwUin = player.M_DwUin - st.StartSvrTime = (int32)(time.Now().Unix()) - st.EndSvrTime = st.StartSvrTime + MergeConst.G_Pig_Limite - st.PigType = 1 - st.CurDiamonds = 0 - st.CurSvrTime = 0 - st.CurGetLv = 1 - - PigId, _ := db.FormatAllMemInsertDb(st, "t_player_piginfo") - res.PigId = (int32)(PigId) - - p.Data.CurDiamonds = st.CurDiamonds - p.Data.DwUin = p.M_Player.M_DwUin - p.Data.PigId = int32(PigId) - p.Data.PigType = st.PigType - p.Data.StartSvrTime = st.StartSvrTime - p.Data.EndSvrTime = st.EndSvrTime - - agent := p.GetPlayer().GetAgentByPlayer() - data, _ := proto.Marshal(res) - G_getGameLogic().PackResInfo(agent, "ResOpenNewPig", data) -} - -func (p *PlayerPigData) ResPigDetailInfo(player *Player) { - // res := &msg.ReqPigDetailInfo{} - p.Data.CurSvrTime = int32(time.Now().Unix()) - agent := p.GetPlayer().GetAgentByPlayer() - data, _ := proto.Marshal(&p.Data) - G_getGameLogic().PackResInfo(agent, "ResPigDetailInfo", data) -} - -func (p *PlayerPigData) UpdateFinishOrderDiamond(buf []byte) { - - update := &msg.UpdateFinishOrderDiamond{} - proto.Unmarshal(buf, update) - - p.Data.CurDiamonds = update.CurDiamonds - p.SaveDataFromDB("") -} - -func (p *PlayerPigData) ResGetPigReward(buf []byte) { - - req := &msg.ReqGetPigReward{} - proto.Unmarshal(buf, req) - - res := &msg.ResGetPigReward{} - res.PigId = req.PigId - - if req.PigId != p.Data.PigId { - res.ResultCode = MergeConst.Protocol_PigID_No_Exsit - } else { - res.ResultCode = 0 - p.Data.CurGetLv = p.Data.CurGetLv + 1 - res.CurGetLv = p.Data.CurGetLv - } - res.CurDiamonds = p.Data.CurDiamonds - - if MergeConst.G_PigIsOne { - p.DeleteLastPigData(req.PigId) - } - - agent := p.GetPlayer().GetAgentByPlayer() - data, _ := proto.Marshal(res) - G_getGameLogic().PackResInfo(agent, "ResGetPigReward", data) -} - -func (p *PlayerPigData) ResDropPigReward(buf []byte) { - - req := &msg.ReqDropPigReward{} - proto.Unmarshal(buf, req) - - res := &msg.ResDropPigReward{} - res.PigId = req.PigId - - if req.PigId != p.Data.PigId { - res.ResultCode = MergeConst.Protocol_PigID_No_Exsit - } else { - res.ResultCode = 0 - } - - p.DeleteLastPigData(req.PigId) - - agent := p.GetPlayer().GetAgentByPlayer() - data, _ := proto.Marshal(res) - G_getGameLogic().PackResInfo(agent, "ResDropPigReward", data) -} diff --git a/src/server/game/PlayerProfileDataManager.go b/src/server/game/PlayerProfileDataManager.go deleted file mode 100644 index abf02df2..00000000 --- a/src/server/game/PlayerProfileDataManager.go +++ /dev/null @@ -1,418 +0,0 @@ -package game - -import ( - "math" - "math/rand" - "server/db" - "server/game/internal" - "server/msg" - "strconv" - - "server/pkg/github.com/name5566/leaf/gate" - - "google.golang.org/protobuf/proto" -) - -type PlayerProfileManager struct { - MsqlStrucks []db.SqlPlayerProfileStruct - MapSql map[int32]*db.SqlPlayerProfileStruct -} - -func (p *PlayerProfileManager) LoadDataFromDB(dwUin interface{}) bool { - - sqlStr := "SELECT * FROM t_player_Profile_Data" - p.MsqlStrucks = []db.SqlPlayerProfileStruct{} - p.MapSql = make(map[int32]*db.SqlPlayerProfileStruct) - db.SqlDb.Select(&p.MsqlStrucks, sqlStr) - - for i := 0; i < len(p.MsqlStrucks); i++ { - item := p.MsqlStrucks[i] - p.MapSql[item.DwUin] = &item - } - - return true -} - -func (p *PlayerProfileManager) GetPlayerDecorate(dwUin int32) (int, int, string) { - sqlStr := "SELECT * FROM t_player_baseinfo WHERE dwUin = ?" - sqlStruck := db.ResPlayerBaseInfo{} - decorate := 0 - ActiveTime := 0 - FaceBookId := "" - if err := db.SqlDb.Get(&sqlStruck, sqlStr, dwUin); err != nil { - - } else { - Score := 0 - for i := 1; i < int(sqlStruck.Level); i++ { - Score = Score + (i-1)*10 + 20 - } - Score = Score + int(sqlStruck.Exp) - decorate = Score / 10 - ActiveTime = int(math.Max(float64(sqlStruck.LoginTime), float64(sqlStruck.LogoutTime))) - FaceBookId = sqlStruck.FaceBookId - } - return decorate, ActiveTime, FaceBookId -} - -func (p *PlayerProfileManager) InitManager() { - p.LoadDataFromDB("") -} - -func (p *PlayerProfileManager) AddNewProfile(st *db.SqlPlayerProfileStruct) bool { - if p.GetPlayerProfile(st.DwUin) == nil { - p.MapSql[st.DwUin] = st - db.FormatAllMemInsertDb(st, "t_player_Profile_Data") - } - return true -} - -func (p *PlayerProfileManager) UpdateNewProfile(st *db.SqlPlayerProfileStruct) bool { - if p.GetPlayerProfile(st.DwUin) != nil { - p.MapSql[st.DwUin] = st - db.FormatAllMemUpdateDb(st, "t_player_Profile_Data", "dwUin") - } else { - p.AddNewProfile(st) - } - return true -} - -func (p *PlayerProfileManager) GetPlayerProfileByNick(nick string) []*db.SqlPlayerProfileStruct { - ret := []*db.SqlPlayerProfileStruct{} - // G_getGameLogic().Mlogger.Debug("p.MapSql" + strconv.Itoa(len(p.MapSql))) - // G_getGameLogic().Mlogger.Debug("nick:" + nick) - for k, v := range p.MapSql { - if strconv.Itoa(int(k)) == nick { - ret = append(ret, v) - } else { - // G_getGameLogic().Mlogger.Debug("v.NickName:" + v.NickName) - if nick == v.NickName { - ret = append(ret, v) - } - } - } - return ret -} - -func (p *PlayerProfileManager) GetPlayerProfile(id int32) *db.SqlPlayerProfileStruct { - - st, ok := p.MapSql[id] - if ok { - return st - } - return nil -} -func (p *PlayerProfileManager) GetIsHavePlayerById(id int32) bool { - sqlStr := "SELECT * FROM t_player_baseinfo WHERE dwUin = ?" - sqlStruck := db.ResPlayerBaseInfo{} - if err := db.SqlDb.Get(&sqlStruck, sqlStr, id); err != nil { - - } else { - return true - } - return false -} - -func (p *PlayerProfileManager) ReqPlayerProfileData(args []interface{}) { - a := args[0].(gate.Agent) - play, _ := internal.Agents.Load(a) - buf := args[1].([]byte) - player := play.(*Player) - - req := &msg.ReqPlayerProfileData{} - res := &msg.ResPlayerProfileData{} - proto.Unmarshal(buf, req) - profile := p.GetPlayerProfile(player.M_DwUin) - if profile != nil { - res.DwUin = player.M_DwUin - res.NickName = profile.NickName - res.ImageFrame = profile.ImageFrame - res.ImageIcon = profile.ImageIcon - res.PicURL = profile.PicURL - res.UnlockFrame = profile.UnlockFrame - res.UnlockIcon = profile.UnlockIcon - DecorateCnt, ActiveTime, _ := p.GetPlayerDecorate(player.M_DwUin) - res.DecorateCnt = int32(DecorateCnt) - res.ActiveTime = int32(ActiveTime) - } else { - res.DwUin = player.M_DwUin - res.NickName = "Player" + strconv.Itoa(int(player.M_DwUin)) - res.ImageFrame = 1 - res.ImageIcon = 1 - res.UnlockFrame = "" - res.UnlockIcon = "" - res.PicURL = "" - DecorateCnt, ActiveTime, _ := p.GetPlayerDecorate(player.M_DwUin) - res.DecorateCnt = int32(DecorateCnt) - res.ActiveTime = int32(ActiveTime) - - st := db.SqlPlayerProfileStruct{} - st.DwUin = player.M_DwUin - st.ImageFrame = 1 - st.ImageIcon = 1 - st.UnlockFrame = "" - st.UnlockIcon = "" - st.PicURL = "" - st.NickName = "Player" + strconv.Itoa(int(player.M_DwUin)) - p.UpdateNewProfile(&st) - } - agent := player.GetAgentByPlayer() - data1, _ := proto.Marshal(res) - G_getGameLogic().PackResInfo(agent, "ResPlayerProfileData", data1) - -} - -func (p *PlayerProfileManager) ReqUpdatePlayerProfile(args []interface{}) { - a := args[0].(gate.Agent) - play, _ := internal.Agents.Load(a) - buf := args[1].([]byte) - player := play.(*Player) - - req := &msg.ReqUpdatePlayerProfile{} - res := &msg.ResUpdatePlayerProfile{} - proto.Unmarshal(buf, req) - profile := p.GetPlayerProfile(player.M_DwUin) - if profile != nil { - if req.Type == 1 { - profile.NickName = req.Param - } - if req.Type == 2 { - value, _ := strconv.Atoi(req.Param) - profile.ImageFrame = int32(value) - } - if req.Type == 3 { - value, _ := strconv.Atoi(req.Param) - profile.ImageIcon = int32(value) - } - p.UpdateNewProfile(profile) - } else { - st := db.SqlPlayerProfileStruct{} - st.DwUin = player.M_DwUin - st.ImageFrame = 1 - st.ImageIcon = 1 - st.NickName = "Player" + strconv.Itoa(int(player.M_DwUin)) - if req.Type == 1 { - st.NickName = req.Param - } - if req.Type == 2 { - value, _ := strconv.Atoi(req.Param) - st.ImageFrame = int32(value) - } - if req.Type == 3 { - value, _ := strconv.Atoi(req.Param) - st.ImageIcon = int32(value) - } - st.UnlockFrame = "" - st.UnlockIcon = "" - st.PicURL = "" - p.UpdateNewProfile(&st) - } - res.DwUin = req.DwUin - res.Type = req.Type - res.Param = req.Param - res.ResultCode = 0 - agent := player.GetAgentByPlayer() - data1, _ := proto.Marshal(res) - G_getGameLogic().PackResInfo(agent, "ResUpdatePlayerProfile", data1) - -} - -func (p *PlayerProfileManager) HttpReqPlayerBriefProfileData(Id int32) *msg.ResPlayerBriefProfileData { - profile := p.GetPlayerProfile(Id) - res := &msg.ResPlayerBriefProfileData{} - if profile != nil { - res.DwUin = profile.DwUin - res.NickName = profile.NickName - res.ImageFrame = profile.ImageFrame - res.ImageIcon = profile.ImageIcon - DecorateCnt, ActiveTime, _ := p.GetPlayerDecorate(Id) - res.DecorateCnt = int32(DecorateCnt) - res.ActiveTime = int32(ActiveTime) - res.PicURL = profile.PicURL - } else { - res.DwUin = Id - res.NickName = "Player" + strconv.Itoa(int(Id)) - res.ImageFrame = 1 - res.ImageIcon = 1 - res.PicURL = "" - DecorateCnt, ActiveTime, _ := p.GetPlayerDecorate(Id) - res.DecorateCnt = int32(DecorateCnt) - res.ActiveTime = int32(ActiveTime) - - st := db.SqlPlayerProfileStruct{} - st.DwUin = Id - st.ImageFrame = 1 - st.ImageIcon = 1 - st.UnlockFrame = "" - st.UnlockIcon = "" - st.PicURL = "" - st.NickName = "Player" + strconv.Itoa(int(Id)) - p.UpdateNewProfile(&st) - } - return res -} - -func (p *PlayerProfileManager) ReqPlayerBriefProfileData(args []interface{}) { - a := args[0].(gate.Agent) - play, _ := internal.Agents.Load(a) - buf := args[1].([]byte) - player := play.(*Player) - - req := &msg.ReqPlayerBriefProfileData{} - res := &msg.ResPlayerBriefProfileData{} - proto.Unmarshal(buf, req) - profile := p.GetPlayerProfile(req.DwUin) - if profile != nil { - res.DwUin = profile.DwUin - res.NickName = profile.NickName - res.ImageFrame = profile.ImageFrame - res.ImageIcon = profile.ImageIcon - DecorateCnt, ActiveTime, _ := p.GetPlayerDecorate(req.DwUin) - res.DecorateCnt = int32(DecorateCnt) - res.ActiveTime = int32(ActiveTime) - res.PicURL = profile.PicURL - } else { - res.DwUin = req.DwUin - res.NickName = "Player" + strconv.Itoa(int(req.DwUin)) - res.ImageFrame = 1 - res.ImageIcon = 1 - res.PicURL = "" - - DecorateCnt, ActiveTime, _ := p.GetPlayerDecorate(req.DwUin) - res.DecorateCnt = int32(DecorateCnt) - res.ActiveTime = int32(ActiveTime) - - st := db.SqlPlayerProfileStruct{} - st.DwUin = req.DwUin - st.ImageFrame = 1 - st.ImageIcon = 1 - st.UnlockFrame = "" - st.UnlockIcon = "" - st.PicURL = "" - st.NickName = "Player" + strconv.Itoa(int(req.DwUin)) - p.UpdateNewProfile(&st) - } - agent := player.GetAgentByPlayer() - data1, _ := proto.Marshal(res) - G_getGameLogic().PackResInfo(agent, "ResPlayerBriefProfileData", data1) - -} - -func (p *PlayerProfileManager) RandomGetAnPlayer(origin int32) *db.SqlPlayerProfileStruct { - idx := rand.Intn(len(p.MsqlStrucks)) - - for p.MsqlStrucks[idx].DwUin == origin { - idx = rand.Intn(len(p.MsqlStrucks)) - } - Profile := p.GetPlayerProfile(p.MsqlStrucks[idx].DwUin) - - if Profile != nil { - return Profile - } else { - sql := &db.SqlPlayerProfileStruct{} - sql.DwUin = p.MsqlStrucks[idx].DwUin - sql.ImageFrame = 1 - sql.ImageIcon = 1 - sql.NickName = "Player" + strconv.Itoa(int(p.MsqlStrucks[idx].DwUin)) - sql.PicURL = "" - p.UpdateNewProfile(sql) - return sql - } -} -func (p *PlayerProfileManager) GetIsHaveAddFriendInfo(sender int32, receive int32) (bool, *db.SqlAddFriendStruct) { - sqlStr := "SELECT * FROM t_player_Req_add_Friend WHERE SenderId = ? AND ReceiverId = ?" - sqlStruck := db.SqlAddFriendStruct{} - - if err := db.SqlDb.Get(&sqlStruck, sqlStr, sender, receive); err != nil { - return false, nil - } else { - return true, &sqlStruck - } - // return false -} -func (p *PlayerProfileManager) RandomGetPlayers(Cnt int, originId int32, ExcludeList []int32) []*db.SqlPlayerProfileStruct { - - var CurCnt int = 0 - ret := []*db.SqlPlayerProfileStruct{} - var Loops int = 0 - for { - Ids := G_GameLogicPtr.DisorderLuaTable(len(p.MsqlStrucks), int(math.Min(float64(len(p.MsqlStrucks)), float64(Cnt)))) - for i := 0; i < len(Ids); i++ { - IsIll := true - for j := 0; j < len(ExcludeList); j++ { - if ExcludeList[j] == p.MsqlStrucks[Ids[i]].DwUin { - IsIll = false - break - } - } - if IsIll { - isHave1, _ := p.GetIsHaveAddFriendInfo(originId, p.MsqlStrucks[Ids[i]].DwUin) - isHave2, _ := p.GetIsHaveAddFriendInfo(p.MsqlStrucks[Ids[i]].DwUin, originId) - - if !isHave1 && !isHave2 { - CurCnt += 1 - ret = append(ret, &p.MsqlStrucks[Ids[i]]) - ExcludeList = append(ExcludeList, p.MsqlStrucks[Ids[i]].DwUin) - if CurCnt == Cnt { - return ret - } - } - - } - } - Loops += 1 - if Loops == 3 { - break - } - } - - return ret -} - -func (p *PlayerProfileManager) ReqUpdateFBPicURL(args []interface{}) { - a := args[0].(gate.Agent) - play, _ := internal.Agents.Load(a) - buf := args[1].([]byte) - player := play.(*Player) - - req := &msg.ReqUpdateFBPicURL{} - res := &msg.ResUpdateFBPicURL{} - proto.Unmarshal(buf, req) - profile := p.GetPlayerProfile(player.M_DwUin) - res.ResultCode = 0 - if profile != nil { - profile.PicURL = req.URL - p.UpdateNewProfile(profile) - } else { - st := db.SqlPlayerProfileStruct{} - st.DwUin = player.M_DwUin - st.ImageFrame = 1 - st.ImageIcon = 1 - st.UnlockFrame = "" - st.UnlockIcon = "" - st.PicURL = req.URL - st.NickName = "Player" + strconv.Itoa(int(player.M_DwUin)) - p.UpdateNewProfile(&st) - } - agent := player.GetAgentByPlayer() - data1, _ := proto.Marshal(res) - G_getGameLogic().PackResInfo(agent, "ResUpdateFBPicURL", data1) - -} - -func (p *PlayerProfileManager) NewGetPlayerProfile(DwUin int32) *db.SqlPlayerProfileStruct { - profile := p.GetPlayerProfile(DwUin) - if profile != nil { - return profile - } else { - st := db.SqlPlayerProfileStruct{} - st.DwUin = DwUin - st.ImageFrame = 1 - st.ImageIcon = 1 - st.UnlockFrame = "" - st.UnlockIcon = "" - st.PicURL = "" - st.NickName = "Player" + strconv.Itoa(int(DwUin)) - p.UpdateNewProfile(&st) - return &st - } -} diff --git a/src/server/game/PlayerShopData.go b/src/server/game/PlayerShopData.go deleted file mode 100644 index d72e59dd..00000000 --- a/src/server/game/PlayerShopData.go +++ /dev/null @@ -1,1236 +0,0 @@ -package game - -import ( - "fmt" - "math/rand" - "server/GoUtil" - "server/MergeConst" - "server/db" - "server/gamedata" - "server/msg" - "strconv" - "strings" - "time" - - "github.com/robfig/cron/v3" - - // "github.com/golang/protobuf/ptypes/timestamp" - "google.golang.org/protobuf/proto" -) - -type PlayerShopData struct { - *PlayerData - Data msg.ResShopData - MShopTimeRenew int32 - MShopPackRenewData map[int32]int32 - EnergyRenewTime int32 - DailyRenewTime int32 - BuyEnergyTime int32 - MsqlStruck db.SqlShopInfoStruct - ZeroCronID cron.EntryID - TwelveCronID cron.EntryID - WeekCronID cron.EntryID - Mcron *cron.Cron -} - -func (p *PlayerShopData) LoadDataFromDB(dwUin interface{}) bool { - - sqlStr := "SELECT * FROM t_player_shop_data WHERE dwUin = ?" - - p.Data.MShopTimeBuyData = make(map[int32]int32) - p.Data.MShopSaleBuyData = make(map[int32]int32) - p.Data.MPackBuyData = make(map[int32]int32) - p.Data.MSpecialOfferBuyData = make(map[int32]int32) - p.Data.MUISpecialOfferBuyData = make(map[int32]int32) - p.Data.MFreePackBuyData = make(map[int32]int32) - p.Data.MDiamondFirstBuyData = make(map[int32]int32) - p.MShopPackRenewData = make(map[int32]int32) - - if err := db.SqlDb.Get(&p.MsqlStruck, sqlStr, dwUin.(int32)); err != nil { - - p.IsHaveDataDb = false - } else { - p.IsHaveDataDb = true - } - ShopItems := gamedata.GetConfigByName("ShopItem") - PackItems := gamedata.GetConfigByName("ShopPack") - timeStamp := time.Now().Unix() - t := time.Unix(timeStamp, 0).Local() - p.BuyEnergyTime = p.MsqlStruck.BuyEnergyTime - if !p.IsHaveDataDb { - - for i := 0; i < ShopItems.NumRecord(); i++ { - item := ShopItems.Record(i).(*gamedata.ShopItemRecord) - if item.Group == "Time" { - p.Data.MShopTimeBuyData[int32(item.Id)] = int32(item.TotalCount) - } - // if item.Group == "Sale" { - // p.Data.MShopSaleBuyData[int32(item.Id)] = int32(item.TotalCount) - // } - - } - var renewTime1 int64 = 0 - if t.Hour() >= 12 { - renewTime1 = timeStamp - (int64)(t.Hour()*3600+t.Minute()*60+t.Second()) + 12*3600 - } else { - renewTime1 = timeStamp - (int64)(t.Hour()*3600+t.Minute()*60+t.Second()) - } - p.MShopTimeRenew = int32(renewTime1) - - for i := 0; i < PackItems.NumRecord(); i++ { - item := PackItems.Record(i).(*gamedata.ShopPackRecord) - p.Data.MPackBuyData[int32(item.Id)] = int32(item.TotalCount) - if item.Id == 1 { - p.MShopPackRenewData[1] = int32(timeStamp - (int64)(t.Hour()*3600+t.Minute()*60+t.Second())) - } - if item.Id == 2 { - p.MShopPackRenewData[2] = int32(timeStamp - (int64)(t.Hour()*3600+t.Minute()*60+t.Second())) - } - if item.Id == 3 { - p.MShopPackRenewData[3] = int32(timeStamp - (int64)(t.Hour()*3600+t.Minute()*60+t.Second()) - int64(t.Weekday()*3600*24)) - } - } - p.Data.EnergyAdCount = MergeConst.G_Sta_Buy_Cnt - p.EnergyRenewTime = int32(timeStamp - (int64)(t.Hour()*3600+t.Minute()*60+t.Second())) - p.DailyRenewTime = int32(timeStamp - (int64)(t.Hour()*3600+t.Minute()*60+t.Second())) - p.Data.MSpecialOfferBuyData[1] = 3 - p.Data.MSpecialOfferBuyData[2] = 3 - p.Data.MUISpecialOfferBuyData[1] = 3 - p.Data.MUISpecialOfferBuyData[2] = 3 - p.Data.MFreePackBuyData[1] = 1 - p.Data.MFreePackBuyData[2] = 1 - p.Data.MDiamondFirstBuyData[1] = 0 - p.Data.MDiamondFirstBuyData[2] = 0 - p.Data.MDiamondFirstBuyData[3] = 0 - p.Data.MDiamondFirstBuyData[4] = 0 - p.Data.MDiamondFirstBuyData[5] = 0 - p.Data.MDiamondFirstBuyData[6] = 0 - } else { - - var renewTime1 int64 = 0 - if t.Hour() >= 12 { - renewTime1 = timeStamp - (int64)(t.Hour()*3600+t.Minute()*60+t.Second()) + 12*3600 - } else { - renewTime1 = timeStamp - (int64)(t.Hour()*3600+t.Minute()*60+t.Second()) - } - - if p.MsqlStruck.MShopTimeBuyData != "" { - units := strings.Split(p.MsqlStruck.MShopTimeBuyData, "_") - for i := 0; i < len(units); i++ { - ss := strings.Split(units[i], ",") - id, _ := strconv.ParseInt(ss[0], 10, 32) - value, _ := strconv.ParseInt(ss[1], 10, 32) - p.Data.MShopTimeBuyData[int32(id)] = int32(value) - if renewTime1 > int64(p.MsqlStruck.MItemRenewTimes) { - item := ShopItems.Index(int(id)).(*gamedata.ShopItemRecord) - p.Data.MShopTimeBuyData[int32(id)] = int32(item.TotalCount) - p.MShopTimeRenew = int32(renewTime1) - } - } - } - LastDailyRenewTime := timeStamp - (int64)(t.Hour()*3600+t.Minute()*60+t.Second()) - var isDailyRenew = false - if p.MsqlStruck.MSpecialOfferBuyData != "" { - units := strings.Split(p.MsqlStruck.MSpecialOfferBuyData, "_") - for i := 0; i < len(units); i++ { - ss := strings.Split(units[i], ",") - id, _ := strconv.ParseInt(ss[0], 10, 32) - value, _ := strconv.ParseInt(ss[1], 10, 32) - p.Data.MSpecialOfferBuyData[int32(id)] = int32(value) - - if LastDailyRenewTime > int64(p.MsqlStruck.DailyRenewTime) { - isDailyRenew = true - p.Data.MSpecialOfferBuyData[1] = 3 - p.Data.MSpecialOfferBuyData[2] = 3 - } - } - } else { - isDailyRenew = true - p.Data.MSpecialOfferBuyData[1] = 3 - p.Data.MSpecialOfferBuyData[2] = 3 - } - if p.MsqlStruck.MUISpecialOfferBuyData != "" { - units := strings.Split(p.MsqlStruck.MUISpecialOfferBuyData, "_") - for i := 0; i < len(units); i++ { - ss := strings.Split(units[i], ",") - id, _ := strconv.ParseInt(ss[0], 10, 32) - value, _ := strconv.ParseInt(ss[1], 10, 32) - p.Data.MUISpecialOfferBuyData[int32(id)] = int32(value) - - if LastDailyRenewTime > int64(p.MsqlStruck.DailyRenewTime) { - isDailyRenew = true - p.Data.MUISpecialOfferBuyData[1] = 3 - p.Data.MUISpecialOfferBuyData[2] = 3 - } - } - } else { - isDailyRenew = true - p.Data.MUISpecialOfferBuyData[1] = 3 - p.Data.MUISpecialOfferBuyData[2] = 3 - } - if p.MsqlStruck.MFreePackBuyData != "" { - units := strings.Split(p.MsqlStruck.MFreePackBuyData, "_") - for i := 0; i < len(units); i++ { - ss := strings.Split(units[i], ",") - id, _ := strconv.ParseInt(ss[0], 10, 32) - value, _ := strconv.ParseInt(ss[1], 10, 32) - p.Data.MFreePackBuyData[int32(id)] = int32(value) - - if LastDailyRenewTime > int64(p.MsqlStruck.DailyRenewTime) { - isDailyRenew = true - p.Data.MFreePackBuyData[1] = 1 - p.Data.MFreePackBuyData[2] = 1 - } - } - } else { - isDailyRenew = true - p.Data.MFreePackBuyData[1] = 1 - p.Data.MFreePackBuyData[2] = 1 - } - if isDailyRenew { - p.DailyRenewTime = int32(LastDailyRenewTime) - p.MsqlStruck.DailyRenewTime = p.DailyRenewTime - } - - if p.MsqlStruck.MDiamondFirstBuyData != "" { - units := strings.Split(p.MsqlStruck.MDiamondFirstBuyData, "_") - for i := 0; i < len(units); i++ { - ss := strings.Split(units[i], ",") - id, _ := strconv.ParseInt(ss[0], 10, 32) - value, _ := strconv.ParseInt(ss[1], 10, 32) - p.Data.MDiamondFirstBuyData[int32(id)] = int32(value) - } - } else { - p.Data.MDiamondFirstBuyData[1] = 0 - p.Data.MDiamondFirstBuyData[2] = 0 - p.Data.MDiamondFirstBuyData[3] = 0 - p.Data.MDiamondFirstBuyData[4] = 0 - p.Data.MDiamondFirstBuyData[5] = 0 - p.Data.MDiamondFirstBuyData[6] = 0 - } - - if p.MsqlStruck.MShopSaleBuyData != "" { - unitsSale := strings.Split(p.MsqlStruck.MShopSaleBuyData, "_") - for i := 0; i < len(unitsSale); i++ { - ss := strings.Split(unitsSale[i], ",") - id, _ := strconv.ParseInt(ss[0], 10, 32) - value, _ := strconv.ParseInt(ss[1], 10, 32) - p.Data.MShopSaleBuyData[int32(id)] = int32(value) - if renewTime1 > int64(p.MsqlStruck.MItemRenewTimes) { - // item := ShopItems.Index(int(id)).(*gamedata.ShopItemRecord) - // p.Data.MShopSaleBuyData[int32(id)] = int32(item.TotalCount) - - p.Data.MShopSaleBuyData[int32(id)] = 5 - p.MShopTimeRenew = int32(renewTime1) - } - } - } - if p.MsqlStruck.MPackRenewTimes != "" { - unitsPackRenew := strings.Split(p.MsqlStruck.MPackRenewTimes, "_") - for i := 0; i < len(unitsPackRenew); i++ { - ss := strings.Split(unitsPackRenew[i], ",") - id, _ := strconv.ParseInt(ss[0], 10, 32) - value, _ := strconv.ParseInt(ss[1], 10, 32) - p.MShopPackRenewData[int32(id)] = int32(value) - } - } - - if p.MsqlStruck.MPackBuyData != "" { - unitsPack := strings.Split(p.MsqlStruck.MPackBuyData, "_") - var isRenew bool = false - for i := 0; i < len(unitsPack); i++ { - ss := strings.Split(unitsPack[i], ",") - id, _ := strconv.ParseInt(ss[0], 10, 32) - value, _ := strconv.ParseInt(ss[1], 10, 32) - p.Data.MPackBuyData[int32(id)] = int32(value) - t1, ok := p.MShopPackRenewData[int32(id)] - if ok { - if id == 1 { - LastRenewTime := timeStamp - (int64)(t.Hour()*3600+t.Minute()*60+t.Second()) - if t1 < int32(LastRenewTime) { - item := PackItems.Index(int(id)).(*gamedata.ShopPackRecord) - p.Data.MPackBuyData[int32(id)] = int32(item.TotalCount) - p.MShopPackRenewData[int32(id)] = int32(LastRenewTime) - isRenew = true - } - } - if id == 2 { - LastRenewTime := timeStamp - (int64)(t.Hour()*3600+t.Minute()*60+t.Second()) - if t1 < int32(LastRenewTime) { - item := PackItems.Index(int(id)).(*gamedata.ShopPackRecord) - p.Data.MPackBuyData[int32(id)] = int32(item.TotalCount) - p.MShopPackRenewData[int32(id)] = int32(LastRenewTime) - } - } - if id == 3 { - LastRenewTime := timeStamp - (int64)(t.Hour()*3600+t.Minute()*60+t.Second()) - int64(t.Weekday()*3600*24) - if t1 < int32(LastRenewTime) { - item := PackItems.Index(int(id)).(*gamedata.ShopPackRecord) - p.Data.MPackBuyData[int32(id)] = int32(item.TotalCount) - p.MShopPackRenewData[int32(id)] = int32(LastRenewTime) - } - } - } - } - - p.Data.EnergyAdCount = p.MsqlStruck.EnergyAdCount - - p.EnergyRenewTime = p.MsqlStruck.EnergyRenewTime - LastRenewTime := timeStamp - (int64)(t.Hour()*3600+t.Minute()*60+t.Second()) - if isRenew { - p.Data.EnergyAdCount = MergeConst.G_Sta_Buy_Cnt - p.EnergyRenewTime = int32(LastRenewTime) - } - } - } - p.Mcron = cron.New() - - p.Reconnect(false) - return true -} -func (p *PlayerShopData) Reconnect(b bool) { - p.ZeroCronID, _ = p.Mcron.AddFunc("0 0 * * *", func() { - p.ZeroRenew() - }) - p.WeekCronID, _ = p.Mcron.AddFunc("0 0 * * 0", func() { - p.WeekRenew() - }) - p.TwelveCronID, _ = p.Mcron.AddFunc("0 12 * * *", func() { - p.TwelveRenew() - }) - p.Mcron.Start() - -} -func (p *PlayerShopData) ZeroRenew() { - ShopItems := gamedata.GetConfigByName("ShopItem") - PackItems := gamedata.GetConfigByName("ShopPack") - timestamp := int32(time.Now().Unix()) - for k := range p.Data.MShopTimeBuyData { - item := ShopItems.Index(int(k)).(*gamedata.ShopItemRecord) - p.Data.MShopTimeBuyData[k] = int32(item.TotalCount) - } - - for k := range p.Data.MShopSaleBuyData { - // item := ShopItems.Index(int(k)).(*gamedata.ShopItemRecord) - // p.Data.MShopSaleBuyData[k] = int32(item.TotalCount) - p.Data.MShopSaleBuyData[k] = 5 - } - p.MShopTimeRenew = timestamp - for k := range p.Data.MPackBuyData { - if k == 1 || k == 2 { - item := PackItems.Index(int(k)).(*gamedata.ShopPackRecord) - p.Data.MPackBuyData[k] = int32(item.TotalCount) - p.MShopPackRenewData[k] = timestamp - } - } - p.EnergyRenewTime = timestamp - p.DailyRenewTime = timestamp - p.MsqlStruck.EnergyAdCount = MergeConst.G_Sta_Buy_Cnt - p.Data.EnergyAdCount = p.MsqlStruck.EnergyAdCount - - p.Data.MSpecialOfferBuyData[1] = 3 - p.Data.MSpecialOfferBuyData[2] = 3 - - p.Data.MUISpecialOfferBuyData[1] = 3 - p.Data.MUISpecialOfferBuyData[2] = 3 - - p.Data.MFreePackBuyData[1] = 1 - p.Data.MFreePackBuyData[2] = 1 - - p.NotifyShopStatusChange(1) - p.NotifyShopStatusChange(2) - p.NotifyShopStatusChange(3) - p.NotifyShopStatusChange(4) - p.NotifyShopStatusChange(5) - p.NotifyShopStatusChange(6) - p.NotifyShopStatusChange(7) - p.SaveDataFromDB("") -} - -func (p *PlayerShopData) TwelveRenew() { - ShopItems := gamedata.GetConfigByName("ShopItem") - timestamp := int32(time.Now().Unix()) - for k := range p.Data.MShopTimeBuyData { - item := ShopItems.Index(int(k)).(*gamedata.ShopItemRecord) - p.Data.MShopTimeBuyData[k] = int32(item.TotalCount) - } - - for k := range p.Data.MShopSaleBuyData { - // item := ShopItems.Index(int(k)).(*gamedata.ShopItemRecord) - // p.Data.MShopSaleBuyData[k] = int32(item.TotalCount) - p.Data.MShopSaleBuyData[k] = 5 - } - p.MShopTimeRenew = timestamp - p.NotifyShopStatusChange(1) - p.NotifyShopStatusChange(2) - p.SaveDataFromDB("") -} - -func (p *PlayerShopData) WeekRenew() { - - PackItems := gamedata.GetConfigByName("ShopPack") - timestamp := int32(time.Now().Unix()) - for k := range p.Data.MPackBuyData { - if k == 3 { - item := PackItems.Index(int(k)).(*gamedata.ShopPackRecord) - p.Data.MPackBuyData[k] = int32(item.TotalCount) - p.MShopPackRenewData[k] = timestamp - } - } - p.NotifyShopStatusChange(3) - p.SaveDataFromDB("") -} - -func (p *PlayerShopData) NotifyShopStatusChange(Type int32) { - notify := &msg.NotifyShopStatusChange{} - notify.MShopTimeBuyData = make(map[int32]int32) - notify.Type = Type - var temp map[int32]int32 - if Type == 4 { - notify.MShopTimeBuyData[1] = p.Data.EnergyAdCount - } else { - if Type == 1 { - temp = p.Data.MShopTimeBuyData - } - if Type == 2 { - temp = p.Data.MShopSaleBuyData - } - if Type == 3 { - temp = p.Data.MPackBuyData - } - if Type == 5 { - temp = p.Data.MSpecialOfferBuyData - } - if Type == 6 { - temp = p.Data.MUISpecialOfferBuyData - } - if Type == 7 { - temp = p.Data.MFreePackBuyData - } - - for k, v := range temp { - notify.MShopTimeBuyData[k] = v - } - - } - notify.CurSvrTime = int32(time.Now().Unix()) - - agent := p.GetPlayer().GetAgentByPlayer() - data, _ := proto.Marshal(notify) - G_getGameLogic().PackResInfo(agent, "NotifyShopStatusChange", data) -} - -func (p *PlayerShopData) ClearData() bool { - p.SaveDataFromDB("") - p.Mcron.Remove(p.ZeroCronID) - p.Mcron.Remove(p.WeekCronID) - p.Mcron.Remove(p.TwelveCronID) - p.Mcron.Stop() - return true -} -func (p *PlayerShopData) SaveDataFromDB(Key interface{}) bool { - - strarr := []string{} - strarr1 := []string{} - strarr2 := []string{} - strarr3 := []string{} - strarr4 := []string{} - strarr5 := []string{} - strarr6 := []string{} - strarr7 := []string{} - - for k, v := range p.Data.MShopTimeBuyData { - str := fmt.Sprintf("%d,%d", k, v) - strarr = append(strarr, str) - } - str_concat := strings.Join(strarr, "_") - p.MsqlStruck.MShopTimeBuyData = str_concat - - for k, v := range p.Data.MShopSaleBuyData { - str := fmt.Sprintf("%d,%d", k, v) - strarr1 = append(strarr1, str) - } - str_concat1 := strings.Join(strarr1, "_") - p.MsqlStruck.MShopSaleBuyData = str_concat1 - - for k, v := range p.Data.MPackBuyData { - str := fmt.Sprintf("%d,%d", k, v) - strarr2 = append(strarr2, str) - } - str_concat2 := strings.Join(strarr2, "_") - p.MsqlStruck.MPackBuyData = str_concat2 - - for k, v := range p.MShopPackRenewData { - str := fmt.Sprintf("%d,%d", k, v) - strarr3 = append(strarr3, str) - } - str_concat3 := strings.Join(strarr3, "_") - p.MsqlStruck.MPackRenewTimes = str_concat3 - - for k, v := range p.Data.MSpecialOfferBuyData { - str := fmt.Sprintf("%d,%d", k, v) - strarr4 = append(strarr4, str) - } - str_concat4 := strings.Join(strarr4, "_") - p.MsqlStruck.MSpecialOfferBuyData = str_concat4 - - for k, v := range p.Data.MUISpecialOfferBuyData { - str := fmt.Sprintf("%d,%d", k, v) - strarr5 = append(strarr5, str) - } - str_concat5 := strings.Join(strarr5, "_") - p.MsqlStruck.MUISpecialOfferBuyData = str_concat5 - - for k, v := range p.Data.MFreePackBuyData { - str := fmt.Sprintf("%d,%d", k, v) - strarr6 = append(strarr6, str) - } - str_concat6 := strings.Join(strarr6, "_") - p.MsqlStruck.MFreePackBuyData = str_concat6 - - for k, v := range p.Data.MDiamondFirstBuyData { - str := fmt.Sprintf("%d,%d", k, v) - strarr7 = append(strarr7, str) - } - str_concat7 := strings.Join(strarr7, "_") - p.MsqlStruck.MDiamondFirstBuyData = str_concat7 - - p.MsqlStruck.DwUin = p.M_Player.M_DwUin - p.MsqlStruck.EnergyAdCount = p.Data.EnergyAdCount - p.MsqlStruck.BuyEnergyTime = p.BuyEnergyTime - p.MsqlStruck.EnergyRenewTime = p.EnergyRenewTime - p.MsqlStruck.DailyRenewTime = p.DailyRenewTime - p.MsqlStruck.MItemRenewTimes = p.MShopTimeRenew - - // if p.IsHaveDataDb { - // db.FormatAllMemUpdateDb(&p.MsqlStruck, "t_player_shop_data", "dwUin") - // } else { - // db.FormatAllMemInsertDb(&p.MsqlStruck, "t_player_shop_data") - // } - p.IsHaveDataDb = true - return true -} - -func (p *PlayerShopData) ResShopData(player *Player) { - res := &msg.ResShopData{} - res.MShopTimeBuyData = p.Data.MShopTimeBuyData - res.MShopSaleBuyData = p.Data.MShopSaleBuyData - res.MPackBuyData = p.Data.MPackBuyData - res.EnergyAdCount = p.Data.EnergyAdCount - res.LastEnergyBuyTime = p.BuyEnergyTime - res.CurSvrTime = int32(time.Now().Unix()) - res.MSpecialOfferBuyData = p.Data.MSpecialOfferBuyData - res.MUISpecialOfferBuyData = p.Data.MUISpecialOfferBuyData - res.MFreePackBuyData = p.Data.MFreePackBuyData - res.MDiamondFirstBuyData = p.Data.MDiamondFirstBuyData - agent := p.GetPlayer().GetAgentByPlayer() - data, _ := proto.Marshal(res) - G_getGameLogic().PackResInfo(agent, "ResShopData", data) -} - -func (p *PlayerShopData) ResRenewItemBuyCnt(buf []byte) { - // ShopItems := gamedata.GetConfigByName("ShopItem") - req := &msg.ReqRenewItemBuyCnt{} - proto.Unmarshal(buf, req) - res := &msg.ResRenewItemBuyCnt{} - res.Type = req.Type - res.MShopTimeBuyData = make(map[int32]int32) - p.Data.MShopSaleBuyData = make(map[int32]int32) - if req.Type == 2 { - for k, v := range req.MShopData { - p.Data.MShopSaleBuyData[k] = v - res.MShopTimeBuyData[k] = v - } - - // for k, _ := range p.Data.MShopSaleBuyData { - // item := ShopItems.Index(int(k)).(*gamedata.ShopItemRecord) - // p.Data.MShopSaleBuyData[k] = int32(item.TotalCount) - // res.MShopTimeBuyData[k] = int32(item.TotalCount) - // } - } - p.SaveDataFromDB("") - agent := p.GetPlayer().GetAgentByPlayer() - data, _ := proto.Marshal(res) - G_getGameLogic().PackResInfo(agent, "ResRenewItemBuyCnt", data) -} - -func (p *PlayerShopData) ResShopBuy(buf []byte) { - req := &msg.ReqShopBuy{} - proto.Unmarshal(buf, req) - res := &msg.ResShopBuy{} - res.ResultCode = 0 - res.MShopTimeBuyData = make(map[int32]int32) - res.CurSvrTime = int32(time.Now().Unix()) - if req.Type == 1 { - if p.Data.MShopTimeBuyData[req.BuyId] > 0 { - p.Data.MShopTimeBuyData[req.BuyId] = p.Data.MShopTimeBuyData[req.BuyId] - 1 - res.MShopTimeBuyData[req.BuyId] = p.Data.MShopTimeBuyData[req.BuyId] - } else { - res.ResultCode = MergeConst.Protocol_Res_Buy_Cnt_Limit - } - - } - if req.Type == 2 { - if p.Data.MShopSaleBuyData[req.BuyId] > 0 { - p.Data.MShopSaleBuyData[req.BuyId] = p.Data.MShopSaleBuyData[req.BuyId] - 1 - // res.MShopTimeBuyData[req.BuyId] = p.Data.MShopSaleBuyData[req.BuyId] - res.MShopTimeBuyData = p.Data.MShopSaleBuyData - } else { - res.ResultCode = MergeConst.Protocol_Res_Buy_Cnt_Limit - } - - } - if req.Type == 3 { - if p.Data.MPackBuyData[req.BuyId] > 0 { - p.Data.MPackBuyData[req.BuyId] = p.Data.MPackBuyData[req.BuyId] - 1 - res.MShopTimeBuyData[req.BuyId] = p.Data.MPackBuyData[req.BuyId] - } else { - res.ResultCode = MergeConst.Protocol_Res_Buy_Cnt_Limit - } - } - - if req.Type == 4 { - deltaTime := res.CurSvrTime - p.BuyEnergyTime - - if p.Data.EnergyAdCount > 0 { - if deltaTime >= MergeConst.G_Sta_Buy_CD { - res.MShopTimeBuyData[req.BuyId] = p.Data.EnergyAdCount - 1 - p.Data.EnergyAdCount = p.Data.EnergyAdCount - 1 - p.BuyEnergyTime = res.CurSvrTime - } else { - res.ResultCode = MergeConst.Protocol_Res_Buy_CD - } - - } else { - res.ResultCode = MergeConst.Protocol_Res_Buy_Cnt_Limit - } - } - if req.Type == 5 { - if p.Data.MSpecialOfferBuyData[req.BuyId] > 0 { - p.Data.MSpecialOfferBuyData[req.BuyId] = p.Data.MSpecialOfferBuyData[req.BuyId] - 1 - res.MShopTimeBuyData[req.BuyId] = p.Data.MSpecialOfferBuyData[req.BuyId] - - } else { - res.ResultCode = MergeConst.Protocol_Res_Buy_Cnt_Limit - } - } - if req.Type == 6 { - if p.Data.MUISpecialOfferBuyData[req.BuyId] > 0 { - p.Data.MUISpecialOfferBuyData[req.BuyId] = p.Data.MUISpecialOfferBuyData[req.BuyId] - 1 - res.MShopTimeBuyData[req.BuyId] = p.Data.MUISpecialOfferBuyData[req.BuyId] - } else { - res.ResultCode = MergeConst.Protocol_Res_Buy_Cnt_Limit - } - } - if req.Type == 7 { - if p.Data.MFreePackBuyData[req.BuyId] > 0 { - p.Data.MFreePackBuyData[req.BuyId] = p.Data.MFreePackBuyData[req.BuyId] - 1 - res.MShopTimeBuyData[req.BuyId] = p.Data.MFreePackBuyData[req.BuyId] - } else { - res.ResultCode = MergeConst.Protocol_Res_Buy_Cnt_Limit - } - } - - if req.Type == 8 { - p.Data.MDiamondFirstBuyData[req.BuyId] = 1 - res.MShopTimeBuyData[req.BuyId] = 1 - } - res.Type = req.Type - p.SaveDataFromDB("") - agent := p.GetPlayer().GetAgentByPlayer() - data, _ := proto.Marshal(res) - G_getGameLogic().PackResInfo(agent, "ResShopBuy", data) -} - -/////////////////////////////// - -type PlayerAdPackData struct { - *PlayerData - Data msg.ResAdPackData - SqlStruct db.SqlAdPackStruct - RenewDailyTime int32 - Turns int -} - -func (p *PlayerAdPackData) LoadDataFromDB(dwUin interface{}) bool { - - sqlStr := "SELECT * FROM t_player_AD_Pack WHERE dwUin = ?" - - // SqlStruct := db.SqlAdPackStruct{} - p.Data.PackData = make(map[int32]int32) - p.Data.RewardInfo = []string{} - if err := db.SqlDb.Get(&p.SqlStruct, sqlStr, dwUin.(int32)); err != nil { - - p.IsHaveDataDb = false - } else { - p.IsHaveDataDb = true - } - p.CalcTurns() - timeStamp := time.Now().Unix() - t := time.Unix(timeStamp, 0).Local() - p.RenewDailyTime = int32(timeStamp - int64(t.Hour())*3600 - int64(t.Minute())*60 - int64(t.Second())) - if !p.IsHaveDataDb { - p.Data.PackData[1] = 0 - p.Data.PackData[2] = 0 - p.Data.PackData[3] = 0 - p.Data.PackData[4] = 0 - p.Data.PackData[5] = 0 - p.Data.PackData[6] = 0 - p.Data.Score = 0 - p.SqlStruct.CurTurns = 1 - p.SqlStruct.RenewDailyTime = p.RenewDailyTime - p.RandomGenAdPackReward() - } else { - p.Data.Score = p.SqlStruct.Score - - if p.RenewDailyTime > p.SqlStruct.RenewDailyTime { - p.Data.PackData[1] = 0 - p.Data.PackData[2] = 0 - p.Data.PackData[3] = 0 - p.Data.PackData[4] = 0 - p.Data.PackData[5] = 0 - p.Data.PackData[6] = 0 - p.Data.Score = 0 - p.SqlStruct.CurTurns = 1 - p.SqlStruct.RenewDailyTime = p.RenewDailyTime - p.RandomGenAdPackReward() - - } else { - if p.SqlStruct.PackData != "" { - units := strings.Split(p.SqlStruct.PackData, "_") - for i := 0; i < len(units); i++ { - ss := strings.Split(units[i], ",") - id, _ := strconv.ParseInt(ss[0], 10, 32) - value, _ := strconv.ParseInt(ss[1], 10, 32) - p.Data.PackData[int32(id)] = int32(value) - } - - } else { - p.Data.PackData[1] = 0 - p.Data.PackData[2] = 0 - p.Data.PackData[3] = 0 - p.Data.PackData[4] = 0 - p.Data.PackData[5] = 0 - p.Data.PackData[6] = 0 - } - - if p.SqlStruct.RewardInfo != "" { - units := strings.Split(p.SqlStruct.RewardInfo, ";") - for i := 0; i < len(units); i++ { - p.Data.RewardInfo = append(p.Data.RewardInfo, units[i]) - } - - } else { - p.RandomGenAdPackReward() - } - } - - } - - p.Reconnect(false) - return true -} - -func (p *PlayerAdPackData) CalcTurns() { - lastAdCnt := p.GetPlayer().GetIFGameData("PlayerSingleData").(*PlayerSingleData).GetLastWatchAdCnt() - if lastAdCnt <= 5 { - p.Turns = 3 - } else { - if lastAdCnt <= 20 { - p.Turns = 4 - } else { - p.Turns = 6 - } - } -} - -func (p *PlayerAdPackData) ClearData() bool { - p.SaveDataFromDB("") - GoUtil.RemoveEvent(MergeConst.Notify_Renew_Ad_Pack, p.Notify_Renew_Ad_Pack, p) - return true -} - -func (p *PlayerAdPackData) Reconnect(b bool) { - GoUtil.RegisterEvent(MergeConst.Notify_Renew_Ad_Pack, p.Notify_Renew_Ad_Pack, p) -} -func (p *PlayerAdPackData) Notify_Renew_Ad_Pack(args []interface{}) { - - player := args[0].(*Player) - if player != p.GetPlayer() { - return - } - - notify := &msg.NotifyAdPackData{} - p.CalcTurns() - p.Data.PackData[1] = 0 - p.Data.PackData[2] = 0 - p.Data.PackData[3] = 0 - p.Data.PackData[4] = 0 - p.Data.PackData[5] = 0 - p.Data.PackData[6] = 0 - p.Data.Score = 0 - p.SqlStruct.CurTurns = 1 - p.SqlStruct.RenewDailyTime = int32(G_GameLogicPtr.DailyTaskTimestamp) - p.RandomGenAdPackReward() - - notify.PackData = p.Data.PackData - notify.RewardInfo = p.Data.RewardInfo - notify.Score = p.Data.Score - notify.CurSvrTime = int32(time.Now().Unix()) - - agent := p.GetPlayer().GetAgentByPlayer() - data, _ := proto.Marshal(notify) - G_getGameLogic().PackResInfo(agent, "NotifyAdPackData", data) - -} - -func (p *PlayerAdPackData) RandomGenAdPackReward() { - p.Data.RewardInfo = []string{} - - for i := 0; i < 3; i++ { - ran := rand.Intn(100) - if ran < 20 { - str := "Energy_" + fmt.Sprintf("%d", 20) - p.Data.RewardInfo = append(p.Data.RewardInfo, str) - - } else { - if ran < 70 { - str := "Energy_" + fmt.Sprintf("%d", 12) - p.Data.RewardInfo = append(p.Data.RewardInfo, str) - } else { - str := "Energy_" + fmt.Sprintf("%d", 8) - p.Data.RewardInfo = append(p.Data.RewardInfo, str) - } - } - } - for i := 0; i < 2; i++ { - ran := rand.Intn(100) - if ran < 20 { - str := "Star_" + fmt.Sprintf("%d", 60) - p.Data.RewardInfo = append(p.Data.RewardInfo, str) - } else { - if ran < 70 { - str := "Star_" + fmt.Sprintf("%d", 40) - p.Data.RewardInfo = append(p.Data.RewardInfo, str) - } else { - str := "Star_" + fmt.Sprintf("%d", 20) - p.Data.RewardInfo = append(p.Data.RewardInfo, str) - } - } - } - for i := 0; i < 1; i++ { - ran := rand.Intn(100) - if ran < 20 { - str := "Diamond_" + fmt.Sprintf("%d", 8) - p.Data.RewardInfo = append(p.Data.RewardInfo, str) - } else { - if ran < 70 { - str := "Diamond_" + fmt.Sprintf("%d", 5) - p.Data.RewardInfo = append(p.Data.RewardInfo, str) - } else { - str := "Diamond_" + fmt.Sprintf("%d", 3) - p.Data.RewardInfo = append(p.Data.RewardInfo, str) - } - } - } - disorder := G_GameLogicPtr.DisorderLuaTable(6, 6) - tempList := []string{} - for i := 0; i < len(disorder); i++ { - temp := p.Data.RewardInfo[disorder[i]] - tempList = append(tempList, temp) - } - p.Data.RewardInfo = tempList -} - -func (p *PlayerAdPackData) SaveDataFromDB(Key interface{}) bool { - strarr := []string{} - for k, v := range p.Data.PackData { - str := fmt.Sprintf("%d,%d", k, v) - strarr = append(strarr, str) - } - str_concat := strings.Join(strarr, "_") - - p.SqlStruct.PackData = str_concat - p.SqlStruct.RewardInfo = strings.Join(p.Data.RewardInfo, ";") - p.SqlStruct.DwUin = p.M_Player.M_DwUin - p.SqlStruct.Score = p.Data.Score - // if p.IsHaveDataDb { - // db.FormatAllMemUpdateDb(&p.SqlStruct, "t_player_AD_Pack", "dwUin") - // } else { - // db.FormatAllMemInsertDb(&p.SqlStruct, "t_player_AD_Pack") - // } - p.IsHaveDataDb = true - return true -} - -func (p *PlayerAdPackData) ReqAdPackData(player *Player) { - - p.Data.CurSvrTime = int32(time.Now().Unix()) - agent := p.GetPlayer().GetAgentByPlayer() - data, _ := proto.Marshal(&p.Data) - G_getGameLogic().PackResInfo(agent, "ResAdPackData", data) - -} - -func (p *PlayerAdPackData) IsAllGetReward() bool { - for _, v := range p.Data.PackData { - if v == 0 { - return false - } - } - return true -} - -func (p *PlayerAdPackData) ReqWatchAdPack(buf []byte) { - req := &msg.ReqWatchAdPack{} - res := &msg.ResWatchAdPack{} - proto.Unmarshal(buf, req) - - if p.Data.PackData[req.ID] == 0 { - p.Data.PackData[req.ID] = 1 - p.Data.Score = p.Data.Score + 1 - if p.IsAllGetReward() && p.SqlStruct.CurTurns < int32(p.Turns) { - p.Data.PackData[1] = 0 - p.Data.PackData[2] = 0 - p.Data.PackData[3] = 0 - p.Data.PackData[4] = 0 - p.Data.PackData[5] = 0 - p.Data.PackData[6] = 0 - p.RandomGenAdPackReward() - p.SqlStruct.CurTurns = p.SqlStruct.CurTurns + 1 - res.RewardInfo = p.Data.RewardInfo - res.PackData = p.Data.PackData - res.Score = p.Data.Score - res.IsNew = 1 - } else { - if p.IsAllGetReward() { - p.SqlStruct.CurTurns = p.SqlStruct.CurTurns + 1 - } - res.IsNew = 0 - res.RewardInfo = p.Data.RewardInfo - res.PackData = p.Data.PackData - res.Score = p.Data.Score - } - } else { - res.ResultCode = MergeConst.Protocol_Ad_Pack_Geted - } - p.SaveDataFromDB("") - - agent := p.GetPlayer().GetAgentByPlayer() - data, _ := proto.Marshal(res) - G_getGameLogic().PackResInfo(agent, "ResWatchAdPack", data) -} - -///////////////////////// - -type PlayerSingleData struct { - *PlayerData - Data msg.ResPlayerSingleData - MsqlStruck db.SqlSingleDataStruct -} - -func (p *PlayerSingleData) LoadDataFromDB(dwUin interface{}) bool { - - sqlStr := "SELECT * FROM t_player_single_data WHERE dwUin = ?" - - if err := db.SqlDb.Get(&p.MsqlStruck, sqlStr, dwUin.(int32)); err != nil { - - p.IsHaveDataDb = false - } else { - p.IsHaveDataDb = true - } - - timeStamp := time.Now().Unix() - t := time.Unix(timeStamp, 0).Local() - - if !p.IsHaveDataDb { - - p.Data.NewbiePackBuyID = 0 - p.Data.NewbiePackOpenTime = 0 - p.Data.NoAdCnt = 0 - p.Data.NoAdOpenSvrTime = 0 - p.Data.WatchAdCnt = 0 - p.Data.WatchAdOpenTime = 0 - p.Data.LastWatchAdCnt = 0 - p.Data.AllPayCnt = 0 - } else { - p.Data.NewbiePackBuyID = p.MsqlStruck.NewbiePackBuyID - p.Data.NewbiePackOpenTime = p.MsqlStruck.NewbiePackOpenTime - p.Data.NoAdCnt = p.MsqlStruck.NoAdCnt - p.Data.NoAdOpenSvrTime = p.MsqlStruck.NoAdOpenSvrTime - p.Data.WatchAdCnt = p.MsqlStruck.WatchAdCnt - p.Data.WatchAdOpenTime = p.MsqlStruck.WatchAdOpenTime - p.Data.LastWatchAdCnt = p.MsqlStruck.LastWatchAdCnt - - AllPayCnt, _ := strconv.ParseFloat(p.MsqlStruck.AllPayCnt, 64) - p.Data.AllPayCnt = float32(AllPayCnt) - - zero := int32(timeStamp - int64(t.Hour())*3600 - int64(t.Minute())*60 - int64(t.Second())) - if zero > p.Data.NoAdOpenSvrTime { - p.Data.NoAdCnt = 0 - p.Data.NoAdOpenSvrTime = zero - } - if zero > p.Data.WatchAdOpenTime { - p.Data.LastWatchAdCnt = p.Data.WatchAdCnt - p.Data.WatchAdCnt = 0 - p.Data.WatchAdOpenTime = zero - } - } - - p.Reconnect(false) - return true -} -func (p *PlayerSingleData) Reconnect(b bool) { - - GoUtil.RegisterEvent(MergeConst.Notify_Daily_Renew, p.Notify_Daily_Renew, p) -} - -func (p *PlayerSingleData) ReqPlayerSingleData(player *Player) { - if player != p.M_Player { - return - } - - p.Data.CurSvrTime = int32(time.Now().Unix()) - agent := p.GetPlayer().GetAgentByPlayer() - data, _ := proto.Marshal(&p.Data) - G_getGameLogic().PackResInfo(agent, "ResPlayerSingleData", data) - -} - -func (p *PlayerSingleData) ReqOpenNewbiePack(buf []byte) { - req := &msg.ReqOpenNewbiePack{} - res := &msg.ResOpenNewbiePack{} - proto.Unmarshal(buf, req) - - if p.Data.NewbiePackOpenTime > 0 { - res.ResultCode = MergeConst.Protocol_Newbie_Pack_Opened - } else { - res.ResultCode = 0 - p.Data.NewbiePackOpenTime = int32(time.Now().Unix()) - p.Data.NewbiePackBuyID = 0 - res.NewbiePackOpenTime = p.Data.NewbiePackOpenTime - res.NewbiePackBuyID = 0 - } - p.SaveDataFromDB("") - - agent := p.GetPlayer().GetAgentByPlayer() - data, _ := proto.Marshal(res) - G_getGameLogic().PackResInfo(agent, "ResOpenNewbiePack", data) -} - -func (p *PlayerSingleData) ReqBuyNewbiePack(buf []byte) { - req := &msg.ReqBuyNewbiePack{} - res := &msg.ResBuyNewbiePack{} - proto.Unmarshal(buf, req) - cur := int32(time.Now().Unix()) - - if p.Data.NewbiePackOpenTime+3600*24 < cur { - res.ResultCode = MergeConst.Protocol_Newbie_Pack_OutLine - } else { - res.ResultCode = 0 - p.Data.NewbiePackBuyID = req.NewbiePackBuyID - res.NewbiePackBuyID = req.NewbiePackBuyID - } - p.SaveDataFromDB("") - - agent := p.GetPlayer().GetAgentByPlayer() - data, _ := proto.Marshal(res) - G_getGameLogic().PackResInfo(agent, "ResBuyNewbiePack", data) -} - -func (p *PlayerSingleData) ReqAddNoAdCnt(buf []byte) { - req := &msg.ReqAddNoAdCnt{} - res := &msg.ResAddNoAdCnt{} - proto.Unmarshal(buf, req) - res.NoAdCnt = p.Data.NoAdCnt + 1 - p.Data.NoAdCnt = res.NoAdCnt - - p.SaveDataFromDB("") - - agent := p.GetPlayer().GetAgentByPlayer() - data, _ := proto.Marshal(res) - G_getGameLogic().PackResInfo(agent, "ResAddNoAdCnt", data) -} - -func (p *PlayerSingleData) AddAllPayCnt(add float32) { - p.Data.AllPayCnt = p.Data.AllPayCnt + add - p.SaveDataFromDB("") -} - -func (p *PlayerSingleData) GetLastWatchAdCnt() int32 { - return p.Data.LastWatchAdCnt -} - -func (p *PlayerSingleData) ReqAddWatchAdCnt(buf []byte) { - req := &msg.ReqAddWatchAdCnt{} - res := &msg.ResAddWatchAdCnt{} - proto.Unmarshal(buf, req) - res.WatchAdCnt = p.Data.WatchAdCnt + 1 - p.Data.WatchAdCnt = res.WatchAdCnt - - p.SaveDataFromDB("") - - agent := p.GetPlayer().GetAgentByPlayer() - data, _ := proto.Marshal(res) - G_getGameLogic().PackResInfo(agent, "ResAddWatchAdCnt", data) -} - -func (p *PlayerSingleData) Notify_Daily_Renew(param []interface{}) { - zero := int32(G_GameLogicPtr.DailyTaskTimestamp) - p.Data.NoAdCnt = 0 - p.Data.NoAdOpenSvrTime = zero - p.Data.LastWatchAdCnt = p.Data.WatchAdCnt - p.Data.WatchAdCnt = 0 - p.Data.WatchAdOpenTime = zero - - notify := &msg.NotifyPlayerSingleData{} - notify.NewbiePackBuyID = p.Data.NewbiePackBuyID - notify.NewbiePackOpenTime = p.Data.NewbiePackOpenTime - notify.NoAdCnt = p.Data.NoAdCnt - notify.NoAdOpenSvrTime = p.Data.NoAdOpenSvrTime - notify.WatchAdCnt = p.Data.WatchAdCnt - notify.WatchAdOpenTime = p.Data.WatchAdOpenTime - notify.LastWatchAdCnt = p.Data.LastWatchAdCnt - notify.AllPayCnt = p.Data.AllPayCnt - notify.CurSvrTime = int32(time.Now().Unix()) - - agent := p.GetPlayer().GetAgentByPlayer() - data, _ := proto.Marshal(notify) - G_getGameLogic().PackResInfo(agent, "NotifyPlayerSingleData", data) - p.SaveDataFromDB("") - GoUtil.CallEvent(MergeConst.Notify_Renew_Ad_Pack, []interface{}{p.GetPlayer()}) -} - -func (p *PlayerSingleData) ClearData() bool { - p.SaveDataFromDB("") - GoUtil.RemoveEvent(MergeConst.Notify_Daily_Renew, p.Notify_Daily_Renew, p) - return true -} - -func (p *PlayerSingleData) SaveDataFromDB(Key interface{}) bool { - - return true -} - -///////////////////////////////////////////// - -type PlayerChargeData struct { - *PlayerData - Data msg.ResPlayerPayData - SqlStruct []db.SqlChargeStruct - RenewDailyTime int32 - Turns int -} - -func (p *PlayerChargeData) LoadDataFromDB(dwUin interface{}) bool { - - sqlStr := "SELECT * FROM t_player_Charge_Data WHERE dwUin = ?" - - p.Data.PlayerPayData = []*msg.PlayerPayItem{} - if err := db.SqlDb.Select(&p.SqlStruct, sqlStr, dwUin.(int32)); err != nil { - - p.IsHaveDataDb = false - } else { - p.IsHaveDataDb = true - } - - if p.IsHaveDataDb { - for i := 0; i < len(p.SqlStruct); i++ { - item := &msg.PlayerPayItem{} - item.PayTime = p.SqlStruct[i].PayTime - v, _ := strconv.ParseFloat(p.SqlStruct[i].PayValue, 64) - item.PayValue = float32(v) - item.AutoId = p.SqlStruct[i].Autoid - p.Data.PlayerPayData = append(p.Data.PlayerPayData, item) - } - deleteList := p.GetNeedDeleteList() - p.DeleteOutlinePay(deleteList, "t_player_Charge_Data") - } - p.Reconnect(false) - return true -} - -func (p *PlayerChargeData) GetNeedDeleteList() []int32 { - deleteList := []int32{} - for i := 0; i < len(p.Data.PlayerPayData); i++ { - if p.Data.PlayerPayData[i].PayTime+35*3600*24 < int32(time.Now().Unix()) { - deleteList = append(deleteList, p.Data.PlayerPayData[i].AutoId) - } - } - return deleteList -} - -func (p *PlayerChargeData) DeleteOutlinePay(deleteList []int32, tableName string) { - sqlStr := "DELETE FROM " + tableName + " WHERE auto_id = ?" - for i := 0; i < len(deleteList); i++ { - - result, err := db.SqlDb.Exec(sqlStr, deleteList[i]) - if err != nil { - fmt.Printf("exec failed, err:%v\n", err) - return - } - affectedRows, err := result.RowsAffected() - if err != nil { - fmt.Printf("get affected failed, err:%v\n", err) - return - } - fmt.Printf("delete data success, affected rows:%d\n", affectedRows) - } -} - -func (p *PlayerChargeData) ClearData() bool { - p.SaveDataFromDB("") - - return true -} - -func (p *PlayerChargeData) Reconnect(b bool) { - -} - -func (p *PlayerChargeData) SaveDataFromDB(Key interface{}) bool { - - p.IsHaveDataDb = true - return true -} - -func (p *PlayerChargeData) ReqPlayerPayData(player *Player) { - deleteList := p.GetNeedDeleteList() - p.DeleteOutlinePay(deleteList, "t_player_Charge_Data") - - p.Data.CurSvrTime = int32(time.Now().Unix()) - agent := p.GetPlayer().GetAgentByPlayer() - data, _ := proto.Marshal(&p.Data) - G_getGameLogic().PackResInfo(agent, "ResPlayerPayData", data) - -} - -func (p *PlayerChargeData) ReqAddPay(buf []byte) { - req := &msg.ReqAddPay{} - res := &msg.ResAddPay{} - proto.Unmarshal(buf, req) - - item := db.SqlChargeStruct{} - item.PayTime = int32(time.Now().Unix()) - item.PayValue = fmt.Sprintf("%f", req.Add) - item.DwUin = p.GetPlayer().M_DwUin - - msgItem := &msg.PlayerPayItem{} - msgItem.PayTime = item.PayTime - msgItem.PayValue = req.Add - - res.Add = req.Add - InsertId, err := db.FormatAllMemInsertDb(&item, "t_player_Charge_Data") - if err != nil { - - } else { - msgItem.AutoId = int32(InsertId) - p.Data.PlayerPayData = append(p.Data.PlayerPayData, msgItem) - p.GetPlayer().GetIFGameData("PlayerSingleData").(*PlayerSingleData).AddAllPayCnt(req.Add) - } - p.SaveDataFromDB("") - - agent := p.GetPlayer().GetAgentByPlayer() - data, _ := proto.Marshal(res) - G_getGameLogic().PackResInfo(agent, "ResAddPay", data) -} diff --git a/src/server/game/PlayerUnlockingChestMod.go b/src/server/game/PlayerUnlockingChestMod.go deleted file mode 100644 index c5e0fab5..00000000 --- a/src/server/game/PlayerUnlockingChestMod.go +++ /dev/null @@ -1,227 +0,0 @@ -package game - -import ( - "fmt" - mergeDataCfg "server/conf/mergeData" - "server/db" - "server/msg" - "server/pkg/github.com/name5566/leaf/timer" - "time" - - "google.golang.org/protobuf/proto" -) - -type PlayerUnlockingChestData struct { - *PlayerData - Data msg.ResUnlockingChestID - MLeafTimer *timer.Timer - Mdispatr *timer.Dispatcher -} - -func (p *PlayerUnlockingChestData) LoadDataFromDB(dwUin interface{}) bool { - - sqlStr := "SELECT * FROM t_player_chest_data WHERE dwUin = ?" - sqlStruck := db.SqlChestStruct{} - p.Mdispatr = timer.NewDispatcher(1) - if err := db.SqlDb.Get(&sqlStruck, sqlStr, dwUin.(int32)); err != nil { - - p.IsHaveDataDb = false - } else { - p.IsHaveDataDb = true - } - p.Data.DwUin = dwUin.(int32) - p.Data.ChestID = sqlStruck.ChestID - p.Data.UnlockStartTime = sqlStruck.UnlockStartTime - p.Data.CurSvrTime = int32(time.Now().Unix()) - - p.Reconnect(false) - return true -} -func (p *PlayerUnlockingChestData) Reconnect(b bool) { - if p.Data.ChestID > 0 { - chessKey := p.GetPlayer().GetIFGameData("PlayerChessData").(*PlayerChessData).GetKeyByEmitID(p.Data.ChestID) - if chessKey == "" { - p.Data.ChestID = 0 - p.Data.UnlockStartTime = 0 - return - } - MergeId := p.GetPlayer().GetIFGameData("PlayerChessData").(*PlayerChessData).GetValueByKey(chessKey) - item, _ := mergeDataCfg.GetOne(int(MergeId)) - cool := item.CoolTime - deltaTime := time.Now().Unix() - (int64)(p.Data.UnlockStartTime) - if deltaTime >= (int64)(cool) { //注意后面读表 - if p.M_Player.GetGameData("PlayerChessData") == nil { - data := &PlayerChessData{PlayerData: NewPlayerData("PlayerChessData", p.M_Player)} - ok := data.LoadDataFromDB(p.M_Player.M_DwUin) - if ok { - p.M_Player.playerdata["PlayerChessData"] = data - p.M_Player.playerdataIF["PlayerChessData"] = data - } - } - - p.GetPlayer().GetIFGameData("PlayerChessData").(*PlayerChessData).SetValueByKey(chessKey) - fmt.Println("chessKey:", chessKey) - p.Data.ChestID = 0 - p.Data.UnlockStartTime = 0 - if b { - p.NotifyUnlockingChestData() - } - } else { - go func() { - // 注释内容也可以使用 - t1 := (int64)(cool) - deltaTime - - p.MLeafTimer = p.Mdispatr.AfterFunc(time.Duration(t1)*time.Second, func() { - p.NotifyUnlockingChestData() - p.MLeafTimer = nil - }) - (<-p.Mdispatr.ChanTimer).Cb() - }() - } - p.NotifyInitUnlockingChestID() - } -} - -func (p *PlayerUnlockingChestData) RenewData() { - if p.Data.ChestID > 0 { - chessKey := p.GetPlayer().GetIFGameData("PlayerChessData").(*PlayerChessData).GetKeyByEmitID(p.Data.ChestID) - MergeId := p.GetPlayer().GetIFGameData("PlayerChessData").(*PlayerChessData).GetValueByKey(chessKey) - // MergeId := p.M_Player.GetIFGameData("PlayerEmitDetailData").(*PlayerEmitDetailData).GetMergeIDByChestid(p.Data.ChestID) - item, _ := mergeDataCfg.GetOne(int(MergeId)) - cool := item.CoolTime - deltaTime := time.Now().Unix() - (int64)(p.Data.UnlockStartTime) - if p.MLeafTimer != nil { - p.MLeafTimer.Disabled() - p.Mdispatr.ChanTimer <- p.MLeafTimer - p.MLeafTimer.Stop() - p.MLeafTimer = nil - } - if deltaTime >= (int64)(cool) { //注意后面读表 - - p.GetPlayer().GetIFGameData("PlayerChessData").(*PlayerChessData).SetValueByKey(chessKey) - - p.Data.ChestID = 0 - p.Data.UnlockStartTime = 0 - } else { - go func() { - // 注释内容也可以使用 - t1 := (int64)(cool) - deltaTime - - p.MLeafTimer = p.Mdispatr.AfterFunc(time.Duration(t1)*time.Second, func() { - p.NotifyUnlockingChestData() - p.MLeafTimer = nil - }) - (<-p.Mdispatr.ChanTimer).Cb() - }() - } - p.NotifyInitUnlockingChestID() - } -} - -func (p *PlayerUnlockingChestData) NotifyInitUnlockingChestID() { - notify := &msg.NotifyInitUnlockingChestID{} - notify.ChestID = p.Data.ChestID - notify.UnlockStartTime = p.Data.UnlockStartTime - notify.DwUin = p.M_Player.M_DwUin - notify.CurSvrTime = int32(time.Now().Unix()) - agent := p.GetPlayer().GetAgentByPlayer() - data, _ := proto.Marshal(notify) - G_GameLogicPtr.PackResInfo(agent, "NotifyInitUnlockingChestID", data) -} - -func (p *PlayerUnlockingChestData) ClearData() bool { - p.SaveDataFromDB("") - if p.MLeafTimer != nil { - p.MLeafTimer.Disabled() - p.Mdispatr.ChanTimer <- p.MLeafTimer - p.MLeafTimer.Stop() - p.MLeafTimer = nil - } - return true -} -func (p *PlayerUnlockingChestData) SaveDataFromDB(Key interface{}) bool { - - sqlStruck := db.SqlChestStruct{} - sqlStruck.DwUin = p.M_Player.M_DwUin - sqlStruck.ChestID = p.Data.ChestID - sqlStruck.UnlockStartTime = p.Data.UnlockStartTime - - if p.IsHaveDataDb { - db.FormatAllMemUpdateDb(&sqlStruck, "t_player_chest_data", "dwUin") - } else { - db.FormatAllMemInsertDb(&sqlStruck, "t_player_chest_data") - } - p.IsHaveDataDb = true - return true -} - -func (p *PlayerUnlockingChestData) ResUnlockingChestID(buf []byte) { - update := &msg.ReqUnlockingChestID{} - proto.Unmarshal(buf, update) - p.Data.ChestID = update.ChestID - p.Data.UnlockStartTime = int32(time.Now().Unix()) - // G_GameLogicPtr.Mlogger.Debug("ResUnlockingChestID1:", p.Data.ChestID, update.MergeID) - p.M_Player.GetIFGameData("PlayerEmitDetailData").(*PlayerEmitDetailData).SetMergeIDByChestid(update.ChestID, update.MergeID) - // G_GameLogicPtr.Mlogger.Debug("ResUnlockingChestID2:", p.Data.ChestID, update.MergeID) - p.RenewData() - // G_GameLogicPtr.Mlogger.Debug("ResUnlockingChestID3:", p.Data.ChestID, update.MergeID) - agent := p.GetPlayer().GetAgentByPlayer() - data, _ := proto.Marshal(&p.Data) - G_GameLogicPtr.PackResInfo(agent, "ResUnlockingChestID", data) -} - -func (p *PlayerUnlockingChestData) ResChestUnlockCD(buf []byte) { - update := &msg.ReqChestUnlockCD{} - proto.Unmarshal(buf, update) - - res := &msg.ResChestUnlockCD{} - res.DwUin = p.GetPlayer().M_DwUin - res.ChestID = update.ChestID - res.Type = update.Type - res.CurSvrTime = int32(time.Now().Unix()) - ////ad - if res.Type == 3 { - p.Data.UnlockStartTime = p.Data.UnlockStartTime - 60*30 - res.UnlockStartTime = p.Data.UnlockStartTime - p.RenewData() - } - ///diamond - if res.Type == 2 { - p.Data.UnlockStartTime = 0 - p.RenewData() - } - - if res.Type == 1 { - p.Data.ChestID = 0 - p.Data.UnlockStartTime = 0 - if p.MLeafTimer != nil { - p.MLeafTimer.Disabled() - p.Mdispatr.ChanTimer <- p.MLeafTimer - p.MLeafTimer.Stop() - p.MLeafTimer = nil - } - } - - agent := p.GetPlayer().GetAgentByPlayer() - data, _ := proto.Marshal(res) - G_GameLogicPtr.PackResInfo(agent, "ResChestUnlockCD", data) -} - -func (p *PlayerUnlockingChestData) NotifyUnlockingChestData() { - - chessKey := p.GetPlayer().GetIFGameData("PlayerChessData").(*PlayerChessData).GetKeyByEmitID(p.Data.ChestID) - p.GetPlayer().GetIFGameData("PlayerChessData").(*PlayerChessData).SetValueByKey(chessKey) - - notify := &msg.NotifyUnlockingChestData{} - notify.DwUin = p.GetPlayer().M_DwUin - notify.ChestID = 0 - notify.UnlockStartTime = 0 - p.Data.ChestID = 0 - p.Data.UnlockStartTime = 0 - notify.CurSvrTime = int32(time.Now().Unix()) - - agent := p.GetPlayer().GetAgentByPlayer() - data, _ := proto.Marshal(notify) - G_GameLogicPtr.PackResInfo(agent, "NotifyUnlockingChestData", data) - -} diff --git a/src/server/game/RegisterNetworkFunc.go b/src/server/game/RegisterNetworkFunc.go index d1e4c122..bfe7f5f2 100644 --- a/src/server/game/RegisterNetworkFunc.go +++ b/src/server/game/RegisterNetworkFunc.go @@ -9,7 +9,6 @@ import ( mergeDataCfg "server/conf/mergeData" userCfg "server/conf/user" "server/db" - "server/game/internal" "server/game/mod/card" "server/game/mod/friend" "server/game/mod/item" @@ -19,7 +18,6 @@ import ( "server/msg" "strconv" - "server/pkg/github.com/name5566/leaf/gate" "server/pkg/github.com/name5566/leaf/log" "google.golang.org/protobuf/proto" @@ -44,6 +42,23 @@ func ReqPlayerBaseInfofunction(args []interface{}) error { return nil } +func ReqPlayerBriefProfileDataFunc(args []interface{}) error { + _, player, buf := ParseArgs(args) + detail := &msg.ReqPlayerBriefProfileData{} + proto.Unmarshal(buf, detail) + Uid := int(detail.DwUin) + PlayerSimpleData := G_GameLogicPtr.GetSimplePlayerByUid(Uid) + player.PushClientRes(&msg.ResPlayerBriefProfileData{ + DwUin: player.M_DwUin, + ImageFrame: int32(PlayerSimpleData.Avatar), + ImageIcon: int32(PlayerSimpleData.Face), + DecorateCnt: int32(PlayerSimpleData.Decorate), + PicURL: PlayerSimpleData.FaceBookPic, + ActiveTime: int32(max(PlayerSimpleData.Loginout, PlayerSimpleData.Login)), + }) + return nil +} + // 移除广告 func ReqRemoveAdFunc(args []interface{}) error { _, player, buf := ParseArgs(args) @@ -60,32 +75,6 @@ func UpdateBaseItemInfofunction(args []interface{}) error { return nil } -// 获取解锁发射器信息 -func ReqPlayerEmitUnlockDatafunction(args []interface{}) error { - _, player, buf := ParseArgs(args) - - detail := &msg.ReqPlayerEmitUnlockData{} - proto.Unmarshal(buf, detail) - if player.GetGameData("PlayerEmitUnlockData") == nil { - data := &PlayerEmitUnlockData{PlayerData: NewPlayerData("PlayerEmitUnlockData", player)} - ok := data.LoadDataFromDB(player.M_DwUin) - if ok { - player.playerdata["PlayerEmitUnlockData"] = data - player.playerdataIF["PlayerEmitUnlockData"] = data - } - } - player.GetIFGameData("PlayerEmitUnlockData").(*PlayerEmitUnlockData).ResPlayerEmitUnlockData(player) - return nil -} - -// 更新发射器解锁信息 -func UpdatePlayerEmitUnlockDatafunction(args []interface{}) error { - _, player, buf := ParseArgs(args) - data := player.GetIFGameData("PlayerEmitUnlockData") - data.(*PlayerEmitUnlockData).UpdatePlayerEmitUnlockData(buf) - return nil -} - // 请求玩家棋盘信息 func ReqPlayerChessDataFunc(args []interface{}) error { _, player, buf := ParseArgs(args) @@ -104,1350 +93,6 @@ func ReqPlayerChessDataFunc(args []interface{}) error { return nil } -// 请求棋子种类信息 -func ResChessColorDataFunc(args []interface{}) error { - _, player, buf := ParseArgs(args) - detail := &msg.ReqChessColorData{} - proto.Unmarshal(buf, detail) - if player.GetGameData("PlayerChessData") == nil { - data := &PlayerChessData{PlayerData: NewPlayerData("PlayerChessData", player)} - ok := data.LoadDataFromDB(player.M_DwUin) - if ok { - player.playerdata["PlayerChessData"] = data - player.playerdataIF["PlayerChessData"] = data - } - } - player.GetIFGameData("PlayerChessData").(*PlayerChessData).ResChessColorData(player) - return nil -} - -// 更新棋子种类信息 -func UpdateChessColorDataFunc(args []interface{}) error { - _, player, buf := ParseArgs(args) - data := player.GetIFGameData("PlayerChessData") - data.(*PlayerChessData).UpdateChessColorData(buf) - return nil -} - -// 氢气玩家礼包数据 -func ReqPlayerGiftDataFunc(args []interface{}) error { - _, player, buf := ParseArgs(args) - - detail := &msg.ReqPlayerGiftData{} - proto.Unmarshal(buf, detail) - - if player.GetGameData("PlayerGiftData") == nil { - data := &PlayerGiftData{PlayerData: NewPlayerData("PlayerGiftData", player)} - ok := data.LoadDataFromDB(player.M_DwUin) - if ok { - player.playerdata["PlayerGiftData"] = data - player.playerdataIF["PlayerGiftData"] = data - } - } - player.GetIFGameData("PlayerGiftData").(*PlayerGiftData).ResPlayerGiftData(player) - return nil -} - -// 更新玩家礼包数据 -func UpdatePlayerGiftDataFunc(args []interface{}) error { - _, player, buf := ParseArgs(args) - - data := player.GetIFGameData("PlayerGiftData") - data.(*PlayerGiftData).UpdatePlayerGiftData(buf) - return nil -} - -// 获取解锁的木箱信息 -func ReqUnlockingChestIDFunc(args []interface{}) error { - _, player, buf := ParseArgs(args) - - data := player.GetIFGameData("PlayerUnlockingChestData") - G_getGameLogic().Mlogger.Debug("ReqUnlockingChestIDFunc:", data) - data.(*PlayerUnlockingChestData).ResUnlockingChestID(buf) - return nil -} - -// 请求木箱解锁cd -func ReqChestUnlockCDFunc(args []interface{}) error { - _, player, buf := ParseArgs(args) - - data := player.GetIFGameData("PlayerUnlockingChestData") - data.(*PlayerUnlockingChestData).ResChestUnlockCD(buf) - return nil -} - -// 请求发射器合成地图 -func ReqEmitMergeMapFunc(args []interface{}) error { - _, player, buf := ParseArgs(args) - - data := player.GetIFGameData("PlayerEmitDetailData") - data.(*PlayerEmitDetailData).ResEmitMergeMap(buf) - return nil -} - -// 请求发射器地图 -func ReqResEmitCountMapFunc(args []interface{}) error { - _, player, buf := ParseArgs(args) - - data := player.GetIFGameData("PlayerEmitDetailData") - data.(*PlayerEmitDetailData).ResEmitCountMap(buf) - return nil -} - -// 请求发射器 -func ReqEmitCDStartDataFunc(args []interface{}) error { - _, player, buf := ParseArgs(args) - data := player.GetIFGameData("PlayerEmitDetailData") - data.(*PlayerEmitDetailData).ResEmitCDStartData(buf) - return nil -} - -func UpdateEmitMergeMapFunc(args []interface{}) error { - _, player, buf := ParseArgs(args) - data := player.GetIFGameData("PlayerEmitDetailData") - data.(*PlayerEmitDetailData).UpdateEmitMergeMap(buf) - return nil -} - -func ReqEmitSubCDFunc(args []interface{}) error { - _, player, buf := ParseArgs(args) - data := player.GetIFGameData("PlayerEmitDetailData") - data.(*PlayerEmitDetailData).ReqEmitSubCD(buf) - return nil -} - -func UpdateEmitCountMapFunc(args []interface{}) error { - _, player, buf := ParseArgs(args) - data := player.GetIFGameData("PlayerEmitDetailData") - data.(*PlayerEmitDetailData).UpdateEmitCountMap(buf) - return nil -} -func ReqShopDatafunc(args []interface{}) error { - _, player, buf := ParseArgs(args) - - detail := &msg.ReqShopData{} - proto.Unmarshal(buf, detail) - - if player.GetGameData("PlayerShopData") == nil { - data := &PlayerShopData{PlayerData: NewPlayerData("PlayerShopData", player)} - ok := data.LoadDataFromDB(player.M_DwUin) - if ok { - player.playerdata["PlayerShopData"] = data - player.playerdataIF["PlayerShopData"] = data - } - } - player.GetIFGameData("PlayerShopData").(*PlayerShopData).ResShopData(player) - return nil -} - -func ReqShopBuyFunc(args []interface{}) error { - _, player, buf := ParseArgs(args) - data := player.GetIFGameData("PlayerShopData") - data.(*PlayerShopData).ResShopBuy(buf) - return nil -} - -func ReqRenewItemBuyCntFunc(args []interface{}) error { - _, player, buf := ParseArgs(args) - data := player.GetIFGameData("PlayerShopData") - data.(*PlayerShopData).ResRenewItemBuyCnt(buf) - return nil -} - -func ReqBriefEmailDataFunc(args []interface{}) error { - _, player, buf := ParseArgs(args) - - detail := &msg.ReqBriefEmailData{} - proto.Unmarshal(buf, detail) - - if player.GetGameData("PlayerEmailData") == nil { - data := &PlayerEmailData{PlayerData: NewPlayerData("PlayerEmailData", player)} - ok := data.LoadDataFromDB(player.M_DwUin) - if ok { - player.playerdata["PlayerEmailData"] = data - player.playerdataIF["PlayerEmailData"] = data - } - } - player.GetIFGameData("PlayerEmailData").(*PlayerEmailData).ResBriefEmailData() - return nil - -} - -func ReqDetailEmailDataFunc(args []interface{}) error { - _, player, buf := ParseArgs(args) - data := player.GetIFGameData("PlayerEmailData") - data.(*PlayerEmailData).ResDetailEmailData(buf) - return nil -} - -func ReqGetEmailRewardFunc(args []interface{}) error { - _, player, buf := ParseArgs(args) - data := player.GetIFGameData("PlayerEmailData") - data.(*PlayerEmailData).ResGetEmailReward(buf) - return nil -} - -func ReqDeleteEmailFunc(args []interface{}) error { - _, player, buf := ParseArgs(args) - data := player.GetIFGameData("PlayerEmailData") - data.(*PlayerEmailData).ResDeleteEmail(buf) - return nil -} - -func ReqGetLimitPassportRewardFunc(args []interface{}) error { - _, player, buf := ParseArgs(args) - data := player.GetIFGameData("PlayerPassportData") - data.(*PlayerPassportData).ResGetLimitPassportReward(buf) - return nil -} - -func ReqBuyLimitPromotionRewardFunc(args []interface{}) error { - _, player, buf := ParseArgs(args) - data := player.GetIFGameData("PlayerPromotionData") - data.(*PlayerPromotionData).ResBuyLimitPromotionReward(buf) - return nil -} - -func ReqBuyInfinitePackFunc(args []interface{}) error { - _, player, buf := ParseArgs(args) - // data := player.GetIFGameData("PlayerInfinitePackData") - // data.(*PlayerInfinitePackData).ResBuyInfinitePack(buf) - - player.GetIFGameData("PlayerNewInfinitePackData").(*PlayerNewInfinitePackData).ResBuyInfinitePack(buf) - return nil -} - -func ReqPayPassportFunc(args []interface{}) error { - _, player, buf := ParseArgs(args) - - data := player.GetIFGameData("PlayerPassportData") - data.(*PlayerPassportData).ResPayPassport(buf) - return nil -} - -func ReqActiveAddStarFunc(args []interface{}) error { - _, player, buf := ParseArgs(args) - data := player.GetIFGameData("PlayerPassportData") - data.(*PlayerPassportData).ResActiveAddStar(buf) - return nil -} - -func ReqLimitPassportDetailFunc(args []interface{}) error { - _, player, buf := ParseArgs(args) - if player.GetGameData("PlayerPassportData") == nil { - actor := &PlayerPassportData{PlayerActiveData: NewActiveData("PlayerPassportData", player)} - ok := actor.LoadDataFromDB(player.M_DwUin) - if ok { - player.playerdata["PlayerPassportData"] = actor - player.playerdataIF["PlayerPassportData"] = actor - } - } else { - data := player.GetIFGameData("PlayerPassportData").(*PlayerPassportData) - if data.MisDirty { - data.ClearData() - data.LoadDataFromDB(player.M_DwUin) - data.MisDirty = false - } - } - data := player.GetIFGameData("PlayerPassportData") - data.(*PlayerPassportData).ResLimitPassportDetail(buf) - return nil -} - -func ReqPromotionDetailFunc(args []interface{}) error { - _, player, buf := ParseArgs(args) - if player.GetGameData("PlayerPromotionData") == nil { - actor := &PlayerPromotionData{PlayerActiveData: NewActiveData("PlayerPromotionData", player)} - ok := actor.LoadDataFromDB(player.M_DwUin) - if ok { - player.playerdata["PlayerPromotionData"] = actor - player.playerdataIF["PlayerPromotionData"] = actor - } - } else { - data := player.GetIFGameData("PlayerPromotionData").(*PlayerPromotionData) - if data.MisDirty { - data.ClearData() - data.LoadDataFromDB(player.M_DwUin) - data.MisDirty = false - } - } - data := player.GetIFGameData("PlayerPromotionData") - data.(*PlayerPromotionData).ResPromotionDetail(buf) - return nil -} - -func ReqInfinitePackDetailFunc(args []interface{}) error { - _, player, buf := ParseArgs(args) - if player.GetGameData("PlayerNewInfinitePackData") == nil { - data := &PlayerNewInfinitePackData{PlayerData: NewPlayerData("PlayerNewInfinitePackData", player)} - ok := data.LoadDataFromDB(player.M_DwUin) - if ok { - player.playerdata["PlayerNewInfinitePackData"] = data - player.playerdataIF["PlayerNewInfinitePackData"] = data - } - } - - player.GetIFGameData("PlayerNewInfinitePackData").(*PlayerNewInfinitePackData).ResInfinitePackDetail(buf) - - // if player.GetGameData("PlayerInfinitePackData") == nil { - // actor := &PlayerInfinitePackData{PlayerActiveData: NewActiveData("PlayerInfinitePackData", player)} - // ok := actor.LoadDataFromDB(player.M_DwUin) - // if ok { - // player.playerdata["PlayerInfinitePackData"] = actor - // player.playerdataIF["PlayerInfinitePackData"] = actor - // } - // } else { - // data := player.GetIFGameData("PlayerInfinitePackData").(*PlayerInfinitePackData) - // if data.MisDirty { - // data.ClearData() - // data.LoadDataFromDB(player.M_DwUin) - // data.MisDirty = false - // } - // } - // data := player.GetIFGameData("PlayerInfinitePackData") - // data.(*PlayerInfinitePackData).ResInfinitePackDetail(buf) - return nil -} - -func ReqCardCollectDetailFunc(args []interface{}) error { - _, player, buf := ParseArgs(args) - if player.GetGameData("PlayerCardCollectData") == nil { - actor := &PlayerCardCollectData{PlayerActiveData: NewActiveData("PlayerCardCollectData", player)} - ok := actor.LoadDataFromDB(player.M_DwUin) - if ok { - player.playerdata["PlayerCardCollectData"] = actor - player.playerdataIF["PlayerCardCollectData"] = actor - } - } else { - data := player.GetIFGameData("PlayerCardCollectData").(*PlayerCardCollectData) - if data.MisDirty { - data.ClearData() - data.LoadDataFromDB(player.M_DwUin) - data.MisDirty = false - } - } - data := player.GetIFGameData("PlayerCardCollectData") - data.(*PlayerCardCollectData).ResCardCollectDetail(buf) - return nil -} - -func ReqGetCardAlbumRewardFunc(args []interface{}) error { - _, player, buf := ParseArgs(args) - - if player.GetGameData("PlayerCardCollectData") == nil { - data := &PlayerCardCollectData{PlayerActiveData: NewActiveData("PlayerCardCollectData", player)} - ok := data.LoadDataFromDB(player.M_DwUin) - if ok { - player.playerdata["PlayerCardCollectData"] = data - player.playerdataIF["PlayerCardCollectData"] = data - } - } - player.GetIFGameData("PlayerCardCollectData").(*PlayerCardCollectData).ResGetCardAlbumReward(buf) - return nil -} - -func ReqGetAllCardRewardFunc(args []interface{}) error { - _, player, buf := ParseArgs(args) - - if player.GetGameData("PlayerCardCollectData") == nil { - data := &PlayerCardCollectData{PlayerActiveData: NewActiveData("PlayerCardCollectData", player)} - ok := data.LoadDataFromDB(player.M_DwUin) - if ok { - player.playerdata["PlayerCardCollectData"] = data - player.playerdataIF["PlayerCardCollectData"] = data - } - } - player.GetIFGameData("PlayerCardCollectData").(*PlayerCardCollectData).ResGetAllCardReward(buf) - return nil -} - -func ReqAddCardFunc(args []interface{}) error { - _, player, buf := ParseArgs(args) - - if player.GetGameData("PlayerCardCollectData") == nil { - data := &PlayerCardCollectData{PlayerActiveData: NewActiveData("PlayerCardCollectData", player)} - ok := data.LoadDataFromDB(player.M_DwUin) - if ok { - player.playerdata["PlayerCardCollectData"] = data - player.playerdataIF["PlayerCardCollectData"] = data - } - } - player.GetIFGameData("PlayerCardCollectData").(*PlayerCardCollectData).ReqAddCard(buf) - return nil -} - -func ReqUnpackCardFunc(args []interface{}) error { - _, player, buf := ParseArgs(args) - - if player.GetGameData("PlayerCardCollectData") == nil { - data := &PlayerCardCollectData{PlayerActiveData: NewActiveData("PlayerCardCollectData", player)} - ok := data.LoadDataFromDB(player.M_DwUin) - if ok { - player.playerdata["PlayerCardCollectData"] = data - player.playerdataIF["PlayerCardCollectData"] = data - } - } - player.GetIFGameData("PlayerCardCollectData").(*PlayerCardCollectData).ResUnpackCard(buf) - return nil -} - -func ReqBuyStickerItemFunc(args []interface{}) error { - _, player, buf := ParseArgs(args) - - if player.GetGameData("PlayerCardCollectData") == nil { - data := &PlayerCardCollectData{PlayerActiveData: NewActiveData("PlayerCardCollectData", player)} - ok := data.LoadDataFromDB(player.M_DwUin) - if ok { - player.playerdata["PlayerCardCollectData"] = data - player.playerdataIF["PlayerCardCollectData"] = data - } - } - player.GetIFGameData("PlayerCardCollectData").(*PlayerCardCollectData).ReqBuyStickerItem(buf) - return nil -} - -func ReqAddMasterCardFunc(args []interface{}) error { - _, player, buf := ParseArgs(args) - - if player.GetGameData("PlayerCardCollectData") == nil { - data := &PlayerCardCollectData{PlayerActiveData: NewActiveData("PlayerCardCollectData", player)} - ok := data.LoadDataFromDB(player.M_DwUin) - if ok { - player.playerdata["PlayerCardCollectData"] = data - player.playerdataIF["PlayerCardCollectData"] = data - } - } - player.GetIFGameData("PlayerCardCollectData").(*PlayerCardCollectData).ReqAddMasterCard(buf) - return nil -} - -func ReqUseMasterCardFunc(args []interface{}) error { - _, player, buf := ParseArgs(args) - - if player.GetGameData("PlayerCardCollectData") == nil { - data := &PlayerCardCollectData{PlayerActiveData: NewActiveData("PlayerCardCollectData", player)} - ok := data.LoadDataFromDB(player.M_DwUin) - if ok { - player.playerdata["PlayerCardCollectData"] = data - player.playerdataIF["PlayerCardCollectData"] = data - } - } - player.GetIFGameData("PlayerCardCollectData").(*PlayerCardCollectData).ReqUseMasterCard(buf) - return nil -} - -// //////卡牌交换 - -func ReqGetDonateCardFunc(args []interface{}) error { - _, player, buf := ParseArgs(args) - - if player.GetGameData("PlayerCardCollectData") == nil { - data := &PlayerCardCollectData{PlayerActiveData: NewActiveData("PlayerCardCollectData", player)} - ok := data.LoadDataFromDB(player.M_DwUin) - if ok { - player.playerdata["PlayerCardCollectData"] = data - player.playerdataIF["PlayerCardCollectData"] = data - } - } - player.GetIFGameData("PlayerCardCollectData").(*PlayerCardCollectData).ReqGetDonateCard(buf) - return nil -} - -func ReqReceiptCardFunc(args []interface{}) error { - _, player, buf := ParseArgs(args) - - if player.GetGameData("PlayerCardCollectData") == nil { - data := &PlayerCardCollectData{PlayerActiveData: NewActiveData("PlayerCardCollectData", player)} - ok := data.LoadDataFromDB(player.M_DwUin) - if ok { - player.playerdata["PlayerCardCollectData"] = data - player.playerdataIF["PlayerCardCollectData"] = data - } - } - player.GetIFGameData("PlayerCardCollectData").(*PlayerCardCollectData).ReqReceiptCard(buf) - return nil -} - -func ReqGetExchangeCardFunc(args []interface{}) error { - _, player, buf := ParseArgs(args) - - if player.GetGameData("PlayerCardCollectData") == nil { - data := &PlayerCardCollectData{PlayerActiveData: NewActiveData("PlayerCardCollectData", player)} - ok := data.LoadDataFromDB(player.M_DwUin) - if ok { - player.playerdata["PlayerCardCollectData"] = data - player.playerdataIF["PlayerCardCollectData"] = data - } - } - player.GetIFGameData("PlayerCardCollectData").(*PlayerCardCollectData).ReqGetExchangeCard(buf) - return nil -} - -func ReqRefuseExchangeFunc(args []interface{}) error { - _, player, buf := ParseArgs(args) - - if player.GetGameData("PlayerCardCollectData") == nil { - data := &PlayerCardCollectData{PlayerActiveData: NewActiveData("PlayerCardCollectData", player)} - ok := data.LoadDataFromDB(player.M_DwUin) - if ok { - player.playerdata["PlayerCardCollectData"] = data - player.playerdataIF["PlayerCardCollectData"] = data - } - } - player.GetIFGameData("PlayerCardCollectData").(*PlayerCardCollectData).ReqRefuseExchange(buf) - return nil -} - -func ReqRequestCardFunc(args []interface{}) error { - _, player, buf := ParseArgs(args) - - if player.GetGameData("PlayerCardCollectData") == nil { - data := &PlayerCardCollectData{PlayerActiveData: NewActiveData("PlayerCardCollectData", player)} - ok := data.LoadDataFromDB(player.M_DwUin) - if ok { - player.playerdata["PlayerCardCollectData"] = data - player.playerdataIF["PlayerCardCollectData"] = data - } - } - player.GetIFGameData("PlayerCardCollectData").(*PlayerCardCollectData).ReqRequestCard(buf) - return nil -} - -func ReqCompleteRequestCardFunc(args []interface{}) error { - _, player, buf := ParseArgs(args) - - if player.GetGameData("PlayerCardCollectData") == nil { - data := &PlayerCardCollectData{PlayerActiveData: NewActiveData("PlayerCardCollectData", player)} - ok := data.LoadDataFromDB(player.M_DwUin) - if ok { - player.playerdata["PlayerCardCollectData"] = data - player.playerdataIF["PlayerCardCollectData"] = data - } - } - player.GetIFGameData("PlayerCardCollectData").(*PlayerCardCollectData).ReqCompleteRequestCard(buf) - return nil -} - -func ReqRefuseRequestCardFunc(args []interface{}) error { - _, player, buf := ParseArgs(args) - - if player.GetGameData("PlayerCardCollectData") == nil { - data := &PlayerCardCollectData{PlayerActiveData: NewActiveData("PlayerCardCollectData", player)} - ok := data.LoadDataFromDB(player.M_DwUin) - if ok { - player.playerdata["PlayerCardCollectData"] = data - player.playerdataIF["PlayerCardCollectData"] = data - } - } - player.GetIFGameData("PlayerCardCollectData").(*PlayerCardCollectData).ReqRefuseRequestCard(buf) - return nil -} - -func ReqGetRequestCardFunc(args []interface{}) error { - _, player, buf := ParseArgs(args) - - if player.GetGameData("PlayerCardCollectData") == nil { - data := &PlayerCardCollectData{PlayerActiveData: NewActiveData("PlayerCardCollectData", player)} - ok := data.LoadDataFromDB(player.M_DwUin) - if ok { - player.playerdata["PlayerCardCollectData"] = data - player.playerdataIF["PlayerCardCollectData"] = data - } - } - player.GetIFGameData("PlayerCardCollectData").(*PlayerCardCollectData).ReqGetRequestCard(buf) - return nil -} - -///////////////////// - -func Req7DayLoginDetailFunc(args []interface{}) error { - _, player, buf := ParseArgs(args) - if player.GetGameData("Player7DayLoginData") == nil { - actor := &Player7DayLoginData{PlayerActiveData: NewActiveData("Player7DayLoginData", player)} - ok := actor.LoadDataFromDB(player.M_DwUin) - if ok { - player.playerdata["Player7DayLoginData"] = actor - player.playerdataIF["Player7DayLoginData"] = actor - } - } else { - data := player.GetIFGameData("Player7DayLoginData").(*Player7DayLoginData) - if data.MisDirty { - data.ClearData() - data.LoadDataFromDB(player.M_DwUin) - data.MisDirty = false - } - } - data := player.GetIFGameData("Player7DayLoginData") - data.(*Player7DayLoginData).Res7DayLoginDetail(buf) - return nil -} - -func ReqGet7DayLoginPackFunc(args []interface{}) error { - _, player, buf := ParseArgs(args) - - if player.GetGameData("Player7DayLoginData") == nil { - data := &Player7DayLoginData{PlayerActiveData: NewActiveData("Player7DayLoginData", player)} - ok := data.LoadDataFromDB(player.M_DwUin) - if ok { - player.playerdata["Player7DayLoginData"] = data - player.playerdataIF["Player7DayLoginData"] = data - } - } - player.GetIFGameData("Player7DayLoginData").(*Player7DayLoginData).ResGet7DayLoginPack(buf) - return nil -} - -func Req7DayCallbackSignal(args []interface{}) error { - _, player, buf := ParseArgs(args) - if player.GetGameData("Player7DayCallBackData") == nil { - data := &Player7DayCallBackData{PlayerData: NewPlayerData("Player7DayCallBackData", player)} - ok := data.LoadDataFromDB(player.M_DwUin) - if ok { - player.playerdata["Player7DayCallBackData"] = data - player.playerdataIF["Player7DayCallBackData"] = data - } - } - player.GetIFGameData("Player7DayCallBackData").(*Player7DayCallBackData).Req7DayCallbackSignal(buf) - return nil -} - -func ReqLevelUpPackInfoFunc(args []interface{}) error { - a := args[0].(gate.Agent) - p, _ := internal.Agents.Load(a) - - player := p.(*Player) - if player.GetGameData("PlayerLevelUpPackData") == nil { - data := &PlayerLevelUpPackData{PlayerData: NewPlayerData("PlayerLevelUpPackData", player)} - ok := data.LoadDataFromDB(player.M_DwUin) - if ok { - player.playerdata["PlayerLevelUpPackData"] = data - player.playerdataIF["PlayerLevelUpPackData"] = data - } - } - player.GetIFGameData("PlayerLevelUpPackData").(*PlayerLevelUpPackData).ResLevelUpPackInfo(player) - return nil -} - -func ReqBuyLevelUpPackFunc(args []interface{}) error { - _, player, buf := ParseArgs(args) - data := player.GetIFGameData("PlayerLevelUpPackData") - data.(*PlayerLevelUpPackData).ReqBuyLevelUpPack(buf) - return nil -} - -func ReqGrowthFundInfoFunc(args []interface{}) error { - a := args[0].(gate.Agent) - p, _ := internal.Agents.Load(a) - - player := p.(*Player) - if player.GetGameData("PlayerGrowthFundData") == nil { - data := &PlayerGrowthFundData{PlayerData: NewPlayerData("PlayerGrowthFundData", player)} - ok := data.LoadDataFromDB(player.M_DwUin) - if ok { - player.playerdata["PlayerGrowthFundData"] = data - player.playerdataIF["PlayerGrowthFundData"] = data - } - } - player.GetIFGameData("PlayerGrowthFundData").(*PlayerGrowthFundData).ResGrowthFundInfo(player) - return nil -} - -func ReqBuyGrowthFundFunc(args []interface{}) error { - _, player, buf := ParseArgs(args) - data := player.GetIFGameData("PlayerGrowthFundData") - data.(*PlayerGrowthFundData).ReqBuyGrowthFund(buf) - return nil -} - -func ReqGetGrowthFundWardFunc(args []interface{}) error { - _, player, buf := ParseArgs(args) - data := player.GetIFGameData("PlayerGrowthFundData") - data.(*PlayerGrowthFundData).ReqGetGrowthFundWard(buf) - return nil -} - -func ReqOfflineReconnectFunc(args []interface{}) error { - a := args[0].(gate.Agent) - - buf := args[1].([]byte) - - req := &msg.ReqOfflineReconnect{} - proto.Unmarshal(buf, req) - - res := &msg.ResOfflineReconnect{} - res.DwUin = req.DwUin - - if player, ok := G_GameLogicPtr.M_Players[req.DwUin]; ok { - agent := player.GetAgentByPlayer() - if agent != a { - player.SetAgent(a) - internal.AsignPlayerToAgents(a, player) - player.PAMgr.InitActiveMgr(player) - internal.Agents.Delete(agent) - } - - res.Result = 3 - } else { - player := G_GameLogicPtr.FindOfflinePlayer(req.DwUin) - if player != nil { - res.Result = 1 - G_GameLogicPtr.RebindPlayerAndAgent(a, player) - } else { - res.Result = 2 - } - } - - data, _ := proto.Marshal(res) - G_GameLogicPtr.PackResInfo(a, "ResOfflineReconnect", data) - return nil -} - -func ReqOpenNewPigFunc(args []interface{}) error { - a := args[0].(gate.Agent) - p, _ := internal.Agents.Load(a) - // buf := args[1].([]byte) - player := p.(*Player) - - if player.GetGameData("PlayerPigData") == nil { - data := &PlayerPigData{PlayerData: NewPlayerData("PlayerPigData", player)} - ok := data.LoadDataFromDB(player.M_DwUin) - if ok { - player.playerdata["PlayerPigData"] = data - player.playerdataIF["PlayerPigData"] = data - } - } - player.GetIFGameData("PlayerPigData").(*PlayerPigData).ResOpenNewPig(player) - return nil -} - -func ReqPigDetailInfoFunc(args []interface{}) error { - a := args[0].(gate.Agent) - p, _ := internal.Agents.Load(a) - // buf := args[1].([]byte) - player := p.(*Player) - - if player.GetGameData("PlayerPigData") == nil { - data := &PlayerPigData{PlayerData: NewPlayerData("PlayerPigData", player)} - ok := data.LoadDataFromDB(player.M_DwUin) - if ok { - player.playerdata["PlayerPigData"] = data - player.playerdataIF["PlayerPigData"] = data - } - } - player.GetIFGameData("PlayerPigData").(*PlayerPigData).ResPigDetailInfo(player) - return nil -} - -func UpdateFinishOrderDiamondFunc(args []interface{}) error { - _, player, buf := ParseArgs(args) - - if player.GetGameData("PlayerPigData") == nil { - data := &PlayerPigData{PlayerData: NewPlayerData("PlayerPigData", player)} - ok := data.LoadDataFromDB(player.M_DwUin) - if ok { - player.playerdata["PlayerPigData"] = data - player.playerdataIF["PlayerPigData"] = data - } - } - player.GetIFGameData("PlayerPigData").(*PlayerPigData).UpdateFinishOrderDiamond(buf) - return nil -} - -func ReqGetPigRewardFunc(args []interface{}) error { - _, player, buf := ParseArgs(args) - - if player.GetGameData("PlayerPigData") == nil { - data := &PlayerPigData{PlayerData: NewPlayerData("PlayerPigData", player)} - ok := data.LoadDataFromDB(player.M_DwUin) - if ok { - player.playerdata["PlayerPigData"] = data - player.playerdataIF["PlayerPigData"] = data - } - } - player.GetIFGameData("PlayerPigData").(*PlayerPigData).ResGetPigReward(buf) - return nil -} - -func ReqDropPigRewardFunc(args []interface{}) error { - _, player, buf := ParseArgs(args) - - if player.GetGameData("PlayerPigData") == nil { - data := &PlayerPigData{PlayerData: NewPlayerData("PlayerPigData", player)} - ok := data.LoadDataFromDB(player.M_DwUin) - if ok { - player.playerdata["PlayerPigData"] = data - player.playerdataIF["PlayerPigData"] = data - } - } - player.GetIFGameData("PlayerPigData").(*PlayerPigData).ResDropPigReward(buf) - return nil -} - -func ReqSupremeGiftInfoFunc(args []interface{}) error { - a := args[0].(gate.Agent) - p, _ := internal.Agents.Load(a) - - player := p.(*Player) - - if player.GetGameData("PlayerSupermeGiftData") == nil { - data := &PlayerSupermeGiftData{PlayerData: NewPlayerData("PlayerSupermeGiftData", player)} - ok := data.LoadDataFromDB(player.M_DwUin) - if ok { - player.playerdata["PlayerSupermeGiftData"] = data - player.playerdataIF["PlayerSupermeGiftData"] = data - } - } - player.GetIFGameData("PlayerSupermeGiftData").(*PlayerSupermeGiftData).ResSupremeGiftInfo(player) - return nil -} - -func ReqBuySupremeGiftFunc(args []interface{}) error { - _, player, buf := ParseArgs(args) - - player.GetIFGameData("PlayerSupermeGiftData").(*PlayerSupermeGiftData).ReqBuySupremeGift(buf) - return nil -} - -///////////////////////// - -func ReqIllustratedInfoFunc(args []interface{}) error { - a := args[0].(gate.Agent) - p, _ := internal.Agents.Load(a) - // buf := args[1].([]byte) - player := p.(*Player) - - if player.GetGameData("PlayerIllustrateData") == nil { - data := &PlayerIllustrateData{PlayerData: NewPlayerData("PlayerIllustrateData", player)} - ok := data.LoadDataFromDB(player.M_DwUin) - if ok { - player.playerdata["PlayerIllustrateData"] = data - player.playerdataIF["PlayerIllustrateData"] = data - } - } - player.GetIFGameData("PlayerIllustrateData").(*PlayerIllustrateData).ResIllustratedInfo(player) - return nil -} - -func ReqGetIllustrateItemRewardFunc(args []interface{}) error { - _, player, buf := ParseArgs(args) - - if player.GetGameData("PlayerIllustrateData") == nil { - data := &PlayerIllustrateData{PlayerData: NewPlayerData("PlayerIllustrateData", player)} - ok := data.LoadDataFromDB(player.M_DwUin) - if ok { - player.playerdata["PlayerIllustrateData"] = data - player.playerdataIF["PlayerIllustrateData"] = data - } - } - player.GetIFGameData("PlayerIllustrateData").(*PlayerIllustrateData).ReqGetIllustrateItemReward(buf) - return nil -} - -func UpdateIllustrateItemFunc(args []interface{}) error { - _, player, buf := ParseArgs(args) - - if player.GetGameData("PlayerIllustrateData") == nil { - data := &PlayerIllustrateData{PlayerData: NewPlayerData("PlayerIllustrateData", player)} - ok := data.LoadDataFromDB(player.M_DwUin) - if ok { - player.playerdata["PlayerIllustrateData"] = data - player.playerdataIF["PlayerIllustrateData"] = data - } - } - player.GetIFGameData("PlayerIllustrateData").(*PlayerIllustrateData).UpdateIllustrateItem(buf) - return nil -} - -// ////////////////////// -func ResDailyTaskDataFunc(args []interface{}) error { - _, player, buf := ParseArgs(args) - - detail := &msg.ReqBriefEmailData{} - proto.Unmarshal(buf, detail) - - if player.GetGameData("ResMileStoneData") == nil { - data := &PlayerDailyTaskData{PlayerData: NewPlayerData("PlayerDailyTaskData", player)} - ok := data.LoadDataFromDB(player.M_DwUin) - if ok { - player.playerdata["PlayerDailyTaskData"] = data - player.playerdataIF["PlayerDailyTaskData"] = data - } - } - player.GetIFGameData("PlayerDailyTaskData").(*PlayerDailyTaskData).ResDailyTaskData(player) - return nil -} - -func UpdateDailyTaskDataFunc(args []interface{}) error { - _, player, buf := ParseArgs(args) - - if player.GetGameData("PlayerDailyTaskData") == nil { - data := &PlayerDailyTaskData{PlayerData: NewPlayerData("PlayerDailyTaskData", player)} - ok := data.LoadDataFromDB(player.M_DwUin) - if ok { - player.playerdata["PlayerDailyTaskData"] = data - player.playerdataIF["PlayerDailyTaskData"] = data - } - } - player.GetIFGameData("PlayerDailyTaskData").(*PlayerDailyTaskData).UpdateDailyTaskData(buf) - return nil -} - -func RenewDailyTaskDataFunc(args []interface{}) error { - _, player, buf := ParseArgs(args) - - if player.GetGameData("PlayerDailyTaskData") == nil { - data := &PlayerDailyTaskData{PlayerData: NewPlayerData("PlayerDailyTaskData", player)} - ok := data.LoadDataFromDB(player.M_DwUin) - if ok { - player.playerdata["PlayerDailyTaskData"] = data - player.playerdataIF["PlayerDailyTaskData"] = data - } - } - player.GetIFGameData("PlayerDailyTaskData").(*PlayerDailyTaskData).RenewDailyTaskData(buf) - return nil -} - -func RenewWeekyActiveDataFunc(args []interface{}) error { - _, player, buf := ParseArgs(args) - - if player.GetGameData("PlayerDailyTaskData") == nil { - data := &PlayerDailyTaskData{PlayerData: NewPlayerData("PlayerDailyTaskData", player)} - ok := data.LoadDataFromDB(player.M_DwUin) - if ok { - player.playerdata["PlayerDailyTaskData"] = data - player.playerdataIF["PlayerDailyTaskData"] = data - } - } - player.GetIFGameData("PlayerDailyTaskData").(*PlayerDailyTaskData).RenewWeekyActiveData(buf) - return nil -} - -// /// -// ////////////////////// -func ResMileStoneDataFunc(args []interface{}) error { - _, player, buf := ParseArgs(args) - - detail := &msg.ResMileStoneData{} - proto.Unmarshal(buf, detail) - - if player.GetGameData("PlayerMilestoneData") == nil { - data := &PlayerMilestoneData{PlayerData: NewPlayerData("PlayerMilestoneData", player)} - ok := data.LoadDataFromDB(player.M_DwUin) - if ok { - player.playerdata["PlayerMilestoneData"] = data - player.playerdataIF["PlayerMilestoneData"] = data - } - } - player.GetIFGameData("PlayerMilestoneData").(*PlayerMilestoneData).ResMileStoneData(player) - return nil -} - -func UpdateMileStoneDataFunc(args []interface{}) error { - _, player, buf := ParseArgs(args) - - if player.GetGameData("PlayerMilestoneData") == nil { - data := &PlayerMilestoneData{PlayerData: NewPlayerData("PlayerMilestoneData", player)} - ok := data.LoadDataFromDB(player.M_DwUin) - if ok { - player.playerdata["PlayerMilestoneData"] = data - player.playerdataIF["PlayerMilestoneData"] = data - } - } - player.GetIFGameData("PlayerMilestoneData").(*PlayerMilestoneData).UpdateMileStoneData(buf) - return nil -} - -func RenewMileStoneDataFunc(args []interface{}) error { - _, player, buf := ParseArgs(args) - - if player.GetGameData("PlayerMilestoneData") == nil { - data := &PlayerMilestoneData{PlayerData: NewPlayerData("PlayerMilestoneData", player)} - ok := data.LoadDataFromDB(player.M_DwUin) - if ok { - player.playerdata["PlayerMilestoneData"] = data - player.playerdataIF["PlayerMilestoneData"] = data - } - } - player.GetIFGameData("PlayerMilestoneData").(*PlayerMilestoneData).RenewMileStoneData(buf) - return nil -} - -func ReqChampshipDataFunc(args []interface{}) error { - _, player, buf := ParseArgs(args) - - G_GameLogicPtr.MChampshipsManager.ReqChampshipData(player, buf) - return nil -} - -func ReqPlayerChampshipData(args []interface{}) error { - _, player, buf := ParseArgs(args) - - G_GameLogicPtr.MChampshipsManager.ReqPlayerChampshipData(player, buf) - return nil -} -func ReqChampshipAddScoreFunc(args []interface{}) error { - _, player, buf := ParseArgs(args) - - G_GameLogicPtr.MChampshipsManager.ReqChampshipAddScore(player, buf) - return nil -} - -func ReqChampshipAddTimeFunc(args []interface{}) error { - _, player, buf := ParseArgs(args) - - G_GameLogicPtr.MChampshipsManager.ReqChampshipAddTime(player, buf) - return nil -} - -// ////////////// -func ReqAdPackDataFunc(args []interface{}) error { - a := args[0].(gate.Agent) - p, _ := internal.Agents.Load(a) - player := p.(*Player) - - if player.GetGameData("PlayerAdPackData") == nil { - data := &PlayerAdPackData{PlayerData: NewPlayerData("PlayerAdPackData", player)} - ok := data.LoadDataFromDB(player.M_DwUin) - if ok { - player.playerdata["PlayerAdPackData"] = data - player.playerdataIF["PlayerAdPackData"] = data - } - } - player.GetIFGameData("PlayerAdPackData").(*PlayerAdPackData).ReqAdPackData(player) - return nil -} - -func ReqWatchAdPackFunc(args []interface{}) error { - _, player, buf := ParseArgs(args) - - if player.GetGameData("PlayerAdPackData") == nil { - data := &PlayerAdPackData{PlayerData: NewPlayerData("PlayerAdPackData", player)} - ok := data.LoadDataFromDB(player.M_DwUin) - if ok { - player.playerdata["PlayerAdPackData"] = data - player.playerdataIF["PlayerAdPackData"] = data - } - } - player.GetIFGameData("PlayerAdPackData").(*PlayerAdPackData).ReqWatchAdPack(buf) - return nil -} - -///////////// - -func ReqPlayerSingleDataFunc(args []interface{}) error { - a := args[0].(gate.Agent) - p, _ := internal.Agents.Load(a) - player := p.(*Player) - - if player.GetGameData("PlayerSingleData") == nil { - data := &PlayerSingleData{PlayerData: NewPlayerData("PlayerSingleData", player)} - ok := data.LoadDataFromDB(player.M_DwUin) - if ok { - player.playerdata["PlayerSingleData"] = data - player.playerdataIF["PlayerSingleData"] = data - } - } - player.GetIFGameData("PlayerSingleData").(*PlayerSingleData).ReqPlayerSingleData(player) - return nil -} - -func ReqOpenNewbiePackFunc(args []interface{}) error { - _, player, buf := ParseArgs(args) - - if player.GetGameData("PlayerSingleData") == nil { - data := &PlayerSingleData{PlayerData: NewPlayerData("PlayerSingleData", player)} - ok := data.LoadDataFromDB(player.M_DwUin) - if ok { - player.playerdata["PlayerSingleData"] = data - player.playerdataIF["PlayerSingleData"] = data - } - } - player.GetIFGameData("PlayerSingleData").(*PlayerSingleData).ReqOpenNewbiePack(buf) - return nil -} - -func ReqBuyNewbiePackFunc(args []interface{}) error { - _, player, buf := ParseArgs(args) - - if player.GetGameData("PlayerSingleData") == nil { - data := &PlayerSingleData{PlayerData: NewPlayerData("PlayerSingleData", player)} - ok := data.LoadDataFromDB(player.M_DwUin) - if ok { - player.playerdata["PlayerSingleData"] = data - player.playerdataIF["PlayerSingleData"] = data - } - } - player.GetIFGameData("PlayerSingleData").(*PlayerSingleData).ReqBuyNewbiePack(buf) - return nil -} - -func ReqAddWatchAdCntFunc(args []interface{}) error { - _, player, buf := ParseArgs(args) - - if player.GetGameData("PlayerSingleData") == nil { - data := &PlayerSingleData{PlayerData: NewPlayerData("PlayerSingleData", player)} - ok := data.LoadDataFromDB(player.M_DwUin) - if ok { - player.playerdata["PlayerSingleData"] = data - player.playerdataIF["PlayerSingleData"] = data - } - } - player.GetIFGameData("PlayerSingleData").(*PlayerSingleData).ReqAddWatchAdCnt(buf) - return nil -} - -func ReqAddNoAdCntFunc(args []interface{}) error { - _, player, buf := ParseArgs(args) - - if player.GetGameData("PlayerSingleData") == nil { - data := &PlayerSingleData{PlayerData: NewPlayerData("PlayerSingleData", player)} - ok := data.LoadDataFromDB(player.M_DwUin) - if ok { - player.playerdata["PlayerSingleData"] = data - player.playerdataIF["PlayerSingleData"] = data - } - } - player.GetIFGameData("PlayerSingleData").(*PlayerSingleData).ReqAddNoAdCnt(buf) - return nil -} - -// //////////// -func ReqPlayerPayDataFunc(args []interface{}) error { - a := args[0].(gate.Agent) - p, _ := internal.Agents.Load(a) - player := p.(*Player) - - if player.GetGameData("PlayerChargeData") == nil { - data := &PlayerChargeData{PlayerData: NewPlayerData("PlayerChargeData", player)} - ok := data.LoadDataFromDB(player.M_DwUin) - if ok { - player.playerdata["PlayerChargeData"] = data - player.playerdataIF["PlayerChargeData"] = data - } - } - player.GetIFGameData("PlayerChargeData").(*PlayerChargeData).ReqPlayerPayData(player) - return nil -} - -func ReqAddPayFunc(args []interface{}) error { - _, player, buf := ParseArgs(args) - - if player.GetGameData("PlayerChargeData") == nil { - data := &PlayerChargeData{PlayerData: NewPlayerData("PlayerChargeData", player)} - ok := data.LoadDataFromDB(player.M_DwUin) - if ok { - player.playerdata["PlayerChargeData"] = data - player.playerdataIF["PlayerChargeData"] = data - } - } - player.GetIFGameData("PlayerChargeData").(*PlayerChargeData).ReqAddPay(buf) - return nil -} - -// //////////// -func ReqFriendDataFunc(args []interface{}) error { - a := args[0].(gate.Agent) - p, _ := internal.Agents.Load(a) - player := p.(*Player) - // buf := args[1].([]byte) - - if player.GetGameData("PlayerFriendData") == nil { - data := &PlayerFriendData{PlayerData: NewPlayerData("PlayerFriendData", player)} - ok := data.LoadDataFromDB(player.M_DwUin) - if ok { - player.playerdata["PlayerFriendData"] = data - player.playerdataIF["PlayerFriendData"] = data - } - } - player.GetIFGameData("PlayerFriendData").(*PlayerFriendData).ReqFriendData(player) - return nil -} - -func ReqWillPlayerDetailFunc(args []interface{}) error { - _, player, buf := ParseArgs(args) - - if player.GetGameData("PlayerFriendData") == nil { - data := &PlayerFriendData{PlayerData: NewPlayerData("PlayerFriendData", player)} - ok := data.LoadDataFromDB(player.M_DwUin) - if ok { - player.playerdata["PlayerFriendData"] = data - player.playerdataIF["PlayerFriendData"] = data - } - } - player.GetIFGameData("PlayerFriendData").(*PlayerFriendData).ReqWillPlayerDetail(buf) - return nil -} - -func ReqAddFriendDataFunc(args []interface{}) error { - _, player, buf := ParseArgs(args) - - if player.GetGameData("PlayerFriendData") == nil { - data := &PlayerFriendData{PlayerData: NewPlayerData("PlayerFriendData", player)} - ok := data.LoadDataFromDB(player.M_DwUin) - if ok { - player.playerdata["PlayerFriendData"] = data - player.playerdataIF["PlayerFriendData"] = data - } - } - player.GetIFGameData("PlayerFriendData").(*PlayerFriendData).ReqAddFriendData(buf) - return nil -} - -func ReqAllAddFriendInfoFunc(args []interface{}) error { - _, player, buf := ParseArgs(args) - - if player.GetGameData("PlayerFriendData") == nil { - data := &PlayerFriendData{PlayerData: NewPlayerData("PlayerFriendData", player)} - ok := data.LoadDataFromDB(player.M_DwUin) - if ok { - player.playerdata["PlayerFriendData"] = data - player.playerdataIF["PlayerFriendData"] = data - } - } - player.GetIFGameData("PlayerFriendData").(*PlayerFriendData).ReqAllAddFriendInfo(buf) - return nil -} - -func ReqAgreeFriendReqFunc(args []interface{}) error { - _, player, buf := ParseArgs(args) - - if player.GetGameData("PlayerFriendData") == nil { - data := &PlayerFriendData{PlayerData: NewPlayerData("PlayerFriendData", player)} - ok := data.LoadDataFromDB(player.M_DwUin) - if ok { - player.playerdata["PlayerFriendData"] = data - player.playerdataIF["PlayerFriendData"] = data - } - } - player.GetIFGameData("PlayerFriendData").(*PlayerFriendData).ReqAgreeFriendReq(buf) - return nil -} - -func ReqAutoFBAddFriend(args []interface{}) error { - _, player, buf := ParseArgs(args) - - if player.GetGameData("PlayerFriendData") == nil { - data := &PlayerFriendData{PlayerData: NewPlayerData("PlayerFriendData", player)} - ok := data.LoadDataFromDB(player.M_DwUin) - if ok { - player.playerdata["PlayerFriendData"] = data - player.playerdataIF["PlayerFriendData"] = data - } - } - player.GetIFGameData("PlayerFriendData").(*PlayerFriendData).ReqAutoFBAddFriend(buf) - return nil -} - -func ReqFriendTreasureData(args []interface{}) error { - _, player, buf := ParseArgs(args) - - if player.GetGameData("PlayerFriendData") == nil { - data := &PlayerFriendData{PlayerData: NewPlayerData("PlayerFriendData", player)} - ok := data.LoadDataFromDB(player.M_DwUin) - if ok { - player.playerdata["PlayerFriendData"] = data - player.playerdataIF["PlayerFriendData"] = data - } - } - player.GetIFGameData("PlayerFriendData").(*PlayerFriendData).ReqFriendTreasureData(buf) - return nil -} - -func ReqUpdateFriendStar(args []interface{}) error { - _, player, buf := ParseArgs(args) - - if player.GetGameData("PlayerFriendData") == nil { - data := &PlayerFriendData{PlayerData: NewPlayerData("PlayerFriendData", player)} - ok := data.LoadDataFromDB(player.M_DwUin) - if ok { - player.playerdata["PlayerFriendData"] = data - player.playerdataIF["PlayerFriendData"] = data - } - } - player.GetIFGameData("PlayerFriendData").(*PlayerFriendData).ReqUpdateFriendStar(buf) - return nil -} - -func ReqRecommendFriendList(args []interface{}) error { - _, player, buf := ParseArgs(args) - - if player.GetGameData("PlayerFriendData") == nil { - data := &PlayerFriendData{PlayerData: NewPlayerData("PlayerFriendData", player)} - ok := data.LoadDataFromDB(player.M_DwUin) - if ok { - player.playerdata["PlayerFriendData"] = data - player.playerdataIF["PlayerFriendData"] = data - } - } - player.GetIFGameData("PlayerFriendData").(*PlayerFriendData).ReqRecommendFriendList(buf) - return nil -} - -func ReqRefuseFriendReqFunc(args []interface{}) error { - _, player, buf := ParseArgs(args) - - if player.GetGameData("PlayerFriendData") == nil { - data := &PlayerFriendData{PlayerData: NewPlayerData("PlayerFriendData", player)} - ok := data.LoadDataFromDB(player.M_DwUin) - if ok { - player.playerdata["PlayerFriendData"] = data - player.playerdataIF["PlayerFriendData"] = data - } - } - player.GetIFGameData("PlayerFriendData").(*PlayerFriendData).ReqRefuseFriendReq(buf) - return nil -} - -func ReqDeleteFriendFunc(args []interface{}) error { - _, player, buf := ParseArgs(args) - - if player.GetGameData("PlayerFriendData") == nil { - data := &PlayerFriendData{PlayerData: NewPlayerData("PlayerFriendData", player)} - ok := data.LoadDataFromDB(player.M_DwUin) - if ok { - player.playerdata["PlayerFriendData"] = data - player.playerdataIF["PlayerFriendData"] = data - } - } - player.GetIFGameData("PlayerFriendData").(*PlayerFriendData).ReqDeleteFriend(buf) - return nil -} - -func ReqPlayerProfileDataFunc(args []interface{}) error { - G_GameLogicPtr.MPlayerProfileManager.ReqPlayerProfileData(args) - return nil -} - -func ReqUpdatePlayerProfileFunc(args []interface{}) error { - G_GameLogicPtr.MPlayerProfileManager.ReqUpdatePlayerProfile(args) - return nil -} - -func ReqPlayerBriefProfileDataFunc(args []interface{}) error { - G_GameLogicPtr.MPlayerProfileManager.ReqPlayerBriefProfileData(args) - return nil -} - -func ReqUpdateFBPicURLFunc(args []interface{}) error { - G_GameLogicPtr.MPlayerProfileManager.ReqUpdateFBPicURL(args) - return nil -} - -func ReqFriendEventDataFunc(args []interface{}) error { - _, player, buf := ParseArgs(args) - - if player.GetGameData("PlayerFriendEventData") == nil { - data := &PlayerFriendEventData{PlayerData: NewPlayerData("PlayerFriendEventData", player)} - ok := data.LoadDataFromDB(player.M_DwUin) - if ok { - player.playerdata["PlayerFriendEventData"] = data - player.playerdataIF["PlayerFriendEventData"] = data - } - } - player.GetIFGameData("PlayerFriendEventData").(*PlayerFriendEventData).ReqFriendEventData(buf) - return nil -} - func ReqBindFacebookAccount(args []interface{}) error { _, player, buf := ParseArgs(args) @@ -1508,158 +153,6 @@ func ReqSynGameData(args []interface{}) error { return nil } -func ReqPlayerPetData(args []interface{}) error { - _, player, _ := ParseArgs(args) - - if player.GetGameData("PlayerPetData") == nil { - data := &PlayerPetData{PlayerData: NewPlayerData("PlayerPetData", player)} - ok := data.LoadDataFromDB(player.M_DwUin) - if ok { - player.playerdata["PlayerPetData"] = data - player.playerdataIF["PlayerPetData"] = data - } - } - player.GetIFGameData("PlayerPetData").(*PlayerPetData).ReqPlayerPetData(player) - return nil -} - -func ReqUpdatePetProfile(args []interface{}) error { - _, player, buf := ParseArgs(args) - - if player.GetGameData("PlayerPetData") == nil { - data := &PlayerPetData{PlayerData: NewPlayerData("PlayerPetData", player)} - ok := data.LoadDataFromDB(player.M_DwUin) - if ok { - player.playerdata["PlayerPetData"] = data - player.playerdataIF["PlayerPetData"] = data - } - } - player.GetIFGameData("PlayerPetData").(*PlayerPetData).ReqUpdatePetProfile(buf) - return nil -} - -////////////// - -func ReqPetHomeData(args []interface{}) error { - _, player, _ := ParseArgs(args) - - if player.GetGameData("PlayerPetHomeData") == nil { - data := &PlayerPetHomeData{PlayerData: NewPlayerData("PlayerPetHomeData", player)} - ok := data.LoadDataFromDB(player.M_DwUin) - if ok { - player.playerdata["PlayerPetHomeData"] = data - player.playerdataIF["PlayerPetHomeData"] = data - } - } - player.GetIFGameData("PlayerPetHomeData").(*PlayerPetHomeData).ReqPetHomeData(player) - return nil -} - -func ReqOpenOtherPetHome(args []interface{}) error { - _, player, buf := ParseArgs(args) - - if player.GetGameData("PlayerPetHomeData") == nil { - data := &PlayerPetHomeData{PlayerData: NewPlayerData("PlayerPetHomeData", player)} - ok := data.LoadDataFromDB(player.M_DwUin) - if ok { - player.playerdata["PlayerPetHomeData"] = data - player.playerdataIF["PlayerPetHomeData"] = data - } - } - player.GetIFGameData("PlayerPetHomeData").(*PlayerPetHomeData).ReqOpenOtherPetHome(buf) - return nil -} - -func ReqUnlockDecorate(args []interface{}) error { - _, player, buf := ParseArgs(args) - - if player.GetGameData("PlayerPetHomeData") == nil { - data := &PlayerPetHomeData{PlayerData: NewPlayerData("PlayerPetHomeData", player)} - ok := data.LoadDataFromDB(player.M_DwUin) - if ok { - player.playerdata["PlayerPetHomeData"] = data - player.playerdataIF["PlayerPetHomeData"] = data - } - } - player.GetIFGameData("PlayerPetHomeData").(*PlayerPetHomeData).ReqUnlockDecorate(buf) - return nil -} - -func ReqSaveSelectDecorate(args []interface{}) error { - _, player, buf := ParseArgs(args) - - if player.GetGameData("PlayerPetHomeData") == nil { - data := &PlayerPetHomeData{PlayerData: NewPlayerData("PlayerPetHomeData", player)} - ok := data.LoadDataFromDB(player.M_DwUin) - if ok { - player.playerdata["PlayerPetHomeData"] = data - player.playerdataIF["PlayerPetHomeData"] = data - } - } - player.GetIFGameData("PlayerPetHomeData").(*PlayerPetHomeData).ReqSaveSelectDecorate(buf) - return nil -} - -func ReqOpenSelfPet(args []interface{}) error { - _, player, buf := ParseArgs(args) - - if player.GetGameData("PlayerPetHomeData") == nil { - data := &PlayerPetHomeData{PlayerData: NewPlayerData("PlayerPetHomeData", player)} - ok := data.LoadDataFromDB(player.M_DwUin) - if ok { - player.playerdata["PlayerPetHomeData"] = data - player.playerdataIF["PlayerPetHomeData"] = data - } - } - player.GetIFGameData("PlayerPetHomeData").(*PlayerPetHomeData).ReqOpenSelfPet(buf) - return nil -} - -func ReqPetHomeInterActST(args []interface{}) error { - _, player, buf := ParseArgs(args) - - if player.GetGameData("PlayerPetHomeData") == nil { - data := &PlayerPetHomeData{PlayerData: NewPlayerData("PlayerPetHomeData", player)} - ok := data.LoadDataFromDB(player.M_DwUin) - if ok { - player.playerdata["PlayerPetHomeData"] = data - player.playerdataIF["PlayerPetHomeData"] = data - } - } - player.GetIFGameData("PlayerPetHomeData").(*PlayerPetHomeData).ReqPetHomeInterActST(buf) - return nil -} - -func ReqShiftVisitPet(args []interface{}) error { - _, player, buf := ParseArgs(args) - - if player.GetGameData("PlayerPetHomeData") == nil { - data := &PlayerPetHomeData{PlayerData: NewPlayerData("PlayerPetHomeData", player)} - ok := data.LoadDataFromDB(player.M_DwUin) - if ok { - player.playerdata["PlayerPetHomeData"] = data - player.playerdataIF["PlayerPetHomeData"] = data - } - } - player.GetIFGameData("PlayerPetHomeData").(*PlayerPetHomeData).ReqShiftVisitPet(buf) - return nil -} - -func ReqCallBackPet(args []interface{}) error { - _, player, buf := ParseArgs(args) - - if player.GetGameData("PlayerPetHomeData") == nil { - data := &PlayerPetHomeData{PlayerData: NewPlayerData("PlayerPetHomeData", player)} - ok := data.LoadDataFromDB(player.M_DwUin) - if ok { - player.playerdata["PlayerPetHomeData"] = data - player.playerdataIF["PlayerPetHomeData"] = data - } - } - player.GetIFGameData("PlayerPetHomeData").(*PlayerPetHomeData).ReqCallBackPet(buf) - return nil -} - func RegSetEneryFunc(args []interface{}) error { _, player, buf := ParseArgs(args) req := &msg.ReqSetEnergyMul{} diff --git a/src/server/game/external.go b/src/server/game/external.go index cb2e478d..031495b7 100644 --- a/src/server/game/external.go +++ b/src/server/game/external.go @@ -120,15 +120,8 @@ func HandleClientReq(args []interface{}) { if ResLogin.DwUin > 0 { if OldPlayer, ok := G_GameLogicPtr.M_Players[ResLogin.DwUin]; ok { G_GameLogicPtr.ReplaceExistPlayerAndAgent(a, OldPlayer) - OldPlayer.PAMgr.InitActiveMgr(OldPlayer) } else { - player := G_GameLogicPtr.FindOfflinePlayer(ResLogin.DwUin) - if player != nil { - G_GameLogicPtr.RebindPlayerAndAgent(a, player) - player.PAMgr.InitActiveMgr(player) - } else { - G_GameLogicPtr.CreateNewPlayer(a, detail.UserName) - } + G_GameLogicPtr.CreateNewPlayer(a, detail.UserName) } } diff --git a/src/server/game/mod/order/Order.go b/src/server/game/mod/order/Order.go index d7073b65..f31267aa 100644 --- a/src/server/game/mod/order/Order.go +++ b/src/server/game/mod/order/Order.go @@ -337,7 +337,7 @@ func (o *OrderMod) CreateExtraOrder(AddChess, AddNewEmit, ChessList []int) bool } //额外订单补充1;CDEG发射器首次合成时,生成其对应2及棋子订单,完成后生成3及,再完成生成4及的; if b1 { - ChessColor := mergeDataCfg.GetEmitProduceType(OrderEmit) + ChessColor := mergeDataCfg.GetEmitProduceChessType(OrderEmit) ChessId := mergeDataCfg.GetChessIdByLvAndColor(2, ChessColor[0]) if ChessId != 0 { o.addOrder([]int{ChessId}, diff_low, Preheat_type) diff --git a/src/server/pkg/github.com/name5566/leaf/gate/gate.go b/src/server/pkg/github.com/name5566/leaf/gate/gate.go index a5c77f80..937ccd9f 100644 --- a/src/server/pkg/github.com/name5566/leaf/gate/gate.go +++ b/src/server/pkg/github.com/name5566/leaf/gate/gate.go @@ -94,7 +94,6 @@ func (a *agent) Run() { for { data, err := a.conn.ReadMsg() if err != nil { - log.Debug("read messagefdsdf: %v", err) break }