package game import ( "encoding/gob" "fmt" "os" "server/GoUtil" "server/conf" cardCfg "server/conf/card" chargeCfg "server/conf/charge" playroomCfg "server/conf/playroom" "server/db" "server/game/mod/card" "server/game/mod/friend" "server/game/mod/item" MsgMod "server/game/mod/msg" "server/game/mod/playroom" "server/msg" "server/pkg/github.com/name5566/leaf/log" "strconv" "strings" "google.golang.org/protobuf/proto" ) func ReqGmCommand(player *Player, buf []byte) error { detail := &msg.ReqGmCommand{} proto.Unmarshal(buf, detail) return ReqGmCommand_(player, detail.Command) } func ReqGmCommand_(player *Player, Command string) error { arg := strings.Split(Command, " ") switch arg[0] { case "additem": id, _ := strconv.Atoi(arg[1]) num, _ := strconv.Atoi(arg[2]) player.HandleItem([]*item.Item{item.NewItem(id, num)}, msg.ITEM_POP_LABEL_GM.String()) case "subitem": id, _ := strconv.Atoi(arg[1]) num, _ := strconv.Atoi(arg[2]) player.HandleItem([]*item.Item{item.NewItem(id, -num)}, msg.ITEM_POP_LABEL_GM.String()) case "reset_order": player.PlayMod.mod_list.Order.Step = 0 player.PlayMod.mod_list.Order.InitData() player.PushClientRes(player.PlayMod.mod_list.Order.BackData()) case "add_card_star": num, _ := strconv.Atoi(arg[1]) player.PlayMod.mod_list.Card.ExchangeStar += num player.PushClientRes(player.PlayMod.mod_list.Card.BackData()) case "add_card": Id, _ := strconv.Atoi(arg[1]) player.PlayMod.mod_list.Card.AddCard(Id) player.PushClientRes(player.PlayMod.mod_list.Card.NotifyCard()) case "reset_card_reward": player.PlayMod.mod_list.Card.CollectReward = make(map[int]struct{}) player.PlayMod.mod_list.Card.AllCollect = 0 player.PushClientRes(player.PlayMod.mod_list.Card.BackData()) case "addexp": num, _ := strconv.Atoi(arg[1]) player.GetPlayerBaseMod().AddExp(player, num) player.PushClientRes(&player.GetPlayerBaseMod().Data) case "addDailyActive": num, _ := strconv.Atoi(arg[1]) DailyMod := player.PlayMod.getDailyTaskMod() DailyMod.Active = num player.PushClientRes(DailyMod.BackData()) case "setlv": num, _ := strconv.Atoi(arg[1]) player.PlayMod.getBaseMod().Level = num player.PlayMod.getBaseMod().Exp = 0 player.PushClientRes(player.PlayerBaseMod.BackAsset()) case "zeroUpdate": VarMod := player.PlayMod.getVarMod() VarMod.DailyResetTime = 0 player.ZeroUpdate(nil) // G_GameLogicPtr.ZeroFlush() case "weekUpdate": VarMod := player.PlayMod.getVarMod() VarMod.WeeklyResetTime = 0 player.ZeroUpdate(nil) G_GameLogicPtr.ZeroFlush() case "setSevenLoginActive": num, _ := strconv.Atoi(arg[1]) player.PlayMod.getSevenLoginMod().Active = num case "pay": ChargeId, _ := strconv.Atoi(arg[1]) player.Kafka("pay", map[string]interface{}{ "ProductId": ChargeId, "AppId": conf.Server.AppID, "Uid": player.M_DwUin, "ServerId": conf.Server.ServerID, "Price": chargeCfg.GetMoneyCharge(ChargeId), "PayType": 3, "OrderId": "gm", "PayChannelOrderId": "gm", "CreateTime": GoUtil.Now(), "PayTime": GoUtil.Now(), }) Charge(player, ChargeId) case "resetFace": FaceMod := player.PlayMod.getFaceMod() FaceMod.List = nil FaceMod.InitData() AvatarMod := player.PlayMod.getAvatarMod() AvatarMod.List = nil AvatarMod.InitData() case "createOrder": Lv := player.GetPlayerBaseMod().GetLevel() EmitList := player.PlayMod.getChessMod().GetEmitList() EnergyMul := player.PlayMod.getBaseMod().GetEnergyMul() OrderMod := player.PlayMod.getOrderMod() OrderMod.LastOrder.Type = 1 OrderMod.CreateOrder(Lv, EmitList, EnergyMul) player.PushClientRes(player.PlayMod.getOrderMod().BackData()) case "resetCardReq": CardMod := player.PlayMod.getCardMod() CardMod.ReqFriend = make(map[int]*card.CardInfo) CardMod.ExCard = make(map[int]*card.CardInfo) CardMod.ExTimes = 10 CardMod.ReqTimes = 10 player.AddCard(1) player.AddCard(2) player.AddCard(3) FriendMod := player.PlayMod.getFriendMod() FriendMod.Card = make(map[string]*card.CardInfo) player.PushClientRes(CardMod.NotifyCard()) case "subCard": ChargeId, _ := strconv.Atoi(arg[1]) CardMod := player.PlayMod.getCardMod() player.SubCard(ChargeId) player.PushClientRes(CardMod.NotifyCard()) case "setProgress": num, _ := strconv.Atoi(arg[1]) player.PlayMod.getLimitedTimeEventMod().Progress = num case "setProgressReward": BaseMod := player.PlayMod.getBaseMod() LimitedTimeEventMod := player.PlayMod.getLimitedTimeEventMod() LimitedTimeEventMod.Progress = 5 for i := 1; i < 5; i++ { LimitedTimeEventMod.AddProgress(BaseMod.GetLevel()) } player.PushClientRes(LimitedTimeEventMod.ProgressBackData()) case "champshipGroup": G_GameLogicPtr.ChampshipMgrSend(&MsgMod.Msg{ Type: MsgMod.HANDLE_TYPE_CHAMPSHIP_GROUP, }) case "clearRank": num, _ := strconv.Atoi(arg[1]) G_GameLogicPtr.RankMgr.ClearRank(num) case "resetUserInfo": Rank := G_GameLogicPtr.RankMgr.getRank(RANK_TYPE_USER) for _, v := range Rank { Idstr := strconv.Itoa(v.Uid) db.RedisDelKey(Idstr) G_GameLogicPtr.GetResSimplePlayerByUid(v.Uid) } case "champshipZero": G_GameLogicPtr.ChampshipMgrSend(&MsgMod.Msg{ Type: MsgMod.SERVER_ZERO_UPDATE, }) case "resetEmitOrder": OrderMod := player.PlayMod.getOrderMod() OrderMod.EimtOrder = make(map[string]struct{}) HandbookMod := player.PlayMod.getHandbookMod() delete(HandbookMod.BookList, 125) case "deleteOrder": Id, _ := strconv.Atoi(arg[1]) OrderMod := player.PlayMod.getOrderMod() delete(OrderMod.OrderList, Id) player.PushClientRes(OrderMod.BackData()) case "miningReload": MiningMod := player.PlayMod.getMiningMod() MiningMod.ZeroUpdate(-1) ActivityInfo := GetActivityInfo(player, ACT_TYPE_MINING) MiningMod.ZeroUpdate(ActivityInfo.Id) MiningBackData(player) case "guessColorReload": GuessColorMod := player.PlayMod.getGuessColorMod() GuessColorMod.ZeroUpdate(-1) ActivityInfo := GetActivityInfo(player, ACT_TYPE_GUESS_COLOR) GuessColorMod.ZeroUpdate(ActivityInfo.Id) GuessColorBackData(player) case "raceReload": RaceMod := player.PlayMod.getRaceMod() RaceMod.ZeroUpdate(-1) ActivityInfo := GetActivityInfo(player, ACT_TYPE_RACE) RaceMod.ZeroUpdate(ActivityInfo.Id) case "playroomTrigger": PlayroomOrderTrigger(player) case "playroomReset": PlayroomMod := playroom.PlayroomMod{} PlayroomMod.InitData() player.PlayMod.mod_list.Playroom = PlayroomMod case "playroomCollect": CollectList := playroomCfg.GetDecorateList() PlayroomMod := player.PlayMod.getPlayroomMod() PlayroomMod.Collect = make(map[int]int) for _, v := range CollectList { PlayroomMod.AddCollect(v) } case "resetRetire": ChessMod := player.PlayMod.getChessMod() ChessMod.Retire = make(map[string]int) ChessMod.RetireChessMap = make(map[string][]int) case "addChip": PlayroomMod := player.PlayMod.getPlayroomMod() PlayroomMod.AddChip() player.PushClientRes(PlayroomMod.NotifyLose()) case "save": player.PlayMod.ClearData(player) case "outline": a := player.GetAgent() a.Close() player.ClearData() case "addFriend": FriendMod := player.PlayMod.getFriendMod() Uid, _ := strconv.Atoi(arg[1]) FriendMod.AddFriend(Uid) case "addAddCard": CardMod := player.PlayMod.getCardMod() CardList := cardCfg.GetAllCardId(CardMod.Round) for _, v := range CardList { player.AddCard(v) } case "resetRankUser": O := G_GameLogicPtr.RankMgr.getAllRank(RANK_TYPE_USER) for _, v := range O { Uid := strconv.Itoa(v.Uid) TimeSort := fmt.Sprintf("0.%d", RANK_TIME_SORT-GoUtil.Now()) TimeSortF, _ := strconv.ParseFloat(TimeSort, 64) db.RedisZAdd(RANK_USER, Uid, v.Score+TimeSortF) } case "addFriendStar": FriendTreasureMod := player.PlayMod.getFriendTreasureMod() FriendTreasureMod.AddStar(200) case "comfortOrder": BaseMod := player.PlayMod.getBaseMod() BaseMod.LogoutTime = GoUtil.Now() - 7*86400 TriggerComfortOrder(player) player.PushClientRes(player.PlayMod.getOrderMod().BackData()) case "setDecorateArea": S, _ := strconv.Atoi(arg[1]) DecorateMod := player.PlayMod.getDecorateMod() DecorateMod.AreaId = S DecorateMod.FinishList = make(map[int]struct{}) DecorateMod.Progress = 0 case "resetCardSeasonFirst": CardMod := player.PlayMod.getCardMod() CardMod.SeasonFirst = false case "addPhysiology": PlayroomMod := player.PlayMod.getPlayroomMod() Type, _ := strconv.Atoi(arg[1]) Num, _ := strconv.Atoi(arg[2]) PlayroomMod.AddPhysiology(Type, Num) case "resetTriggerTime": PlayroomMod := player.PlayMod.getPlayroomMod() PlayroomMod.TriggerTime = 0 case "resetTimeline": FriendMod := player.PlayMod.getFriendMod() FriendMod.Log = make([]*friend.LogInfo, 0) case "recoverUser": file, err := os.OpenFile(conf.Server.GameConfPath+"user.info", os.O_RDWR|os.O_CREATE, 0666) if err != nil { log.Error("Failed to open user.info file: %v", err) return err } // file.Write(buf.Bytes()) defer file.Close() Uid := player.M_DwUin file.Seek(0, 0) decoder := gob.NewDecoder(file) modList := PlayerModList{} err = decoder.Decode(&modList) player.PlayMod.mod_list = modList if err != nil { log.Error("Failed to decode user.info file: %v", err) return err } BaseMod := player.PlayMod.getBaseMod() BaseMod.Uid = Uid case "copyUser": p1 := new(Player) p1.InitPlayer(arg[1]) BaseMod := p1.PlayMod.getBaseMod() BaseMod.Uid = player.M_DwUin BaseMod.NickName = player.PlayMod.getBaseMod().NickName BaseMod.LoginTime = GoUtil.Now() player.PlayMod.mod_list = p1.PlayMod.mod_list default: return fmt.Errorf("Player %d ReqGmCommand:%v not found", player.M_DwUin, arg) } log.Debug("Player %d ReqGmCommand:%v", player.M_DwUin, arg) player.PlayMod.save() return nil }