717 lines
24 KiB
Go
717 lines
24 KiB
Go
package game
|
|
|
|
import (
|
|
"bytes"
|
|
"encoding/gob"
|
|
"fmt"
|
|
"os"
|
|
"server/conf"
|
|
avatarCfg "server/conf/avatar"
|
|
cardCfg "server/conf/card"
|
|
chargeCfg "server/conf/charge"
|
|
emojiCfg "server/conf/emoji"
|
|
faceCfg "server/conf/face"
|
|
languageCfg "server/conf/language"
|
|
mergeDataCfg "server/conf/merge_data"
|
|
notification_cfg "server/conf/notification"
|
|
playroomCfg "server/conf/playroom"
|
|
"server/db"
|
|
"server/game/mod/activity"
|
|
"server/game/mod/avatar"
|
|
"server/game/mod/card"
|
|
"server/game/mod/chess"
|
|
"server/game/mod/decorate"
|
|
"server/game/mod/emoji"
|
|
"server/game/mod/face"
|
|
"server/game/mod/friend"
|
|
"server/game/mod/handbook"
|
|
"server/game/mod/item"
|
|
MsgMod "server/game/mod/msg"
|
|
"server/game/mod/order"
|
|
"server/game/mod/playroom"
|
|
GoUtil "server/game_util"
|
|
"server/msg"
|
|
"strconv"
|
|
"strings"
|
|
"time"
|
|
|
|
"gitea.bywaystudios.com/pet_home/leaf/log"
|
|
)
|
|
|
|
func ReqGmCommand(player *Player, req *msg.ReqGmCommand) error {
|
|
return ReqGmCommand_(player, req.Command)
|
|
}
|
|
func ReqGmCommand_(player *Player, Command string) error {
|
|
// defer func() {
|
|
// if err := recover(); err != nil {
|
|
// log.Error("ReqGmCommand panic: %v", err)
|
|
// }
|
|
// }()
|
|
if conf.Server.GameName != "pet_home" && conf.Server.GameName != "merge_pet_sdk" && conf.Server.GameName != "Merge_Pet_Local" && conf.Server.GameName != "pet_home_local" {
|
|
return fmt.Errorf("Player %d ReqGmCommand not support in game %s, command %s", player.M_DwUin, conf.Server.GameName, Command)
|
|
}
|
|
player.TeLog("gm", map[string]interface{}{
|
|
"command": Command,
|
|
})
|
|
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, 0)
|
|
player.PushClientRes(&player.GetPlayerBaseMod().Data)
|
|
case "addDailyActive":
|
|
num, _ := strconv.Atoi(arg[1])
|
|
DailyMod := player.PlayMod.getDailyTaskMod()
|
|
DailyMod.Active = num
|
|
player.PushClientRes(DailyMod.BackData())
|
|
case "triggerOrder":
|
|
OrderMod := player.PlayMod.getOrderMod()
|
|
ChessMod := player.PlayMod.getChessMod()
|
|
OrderMod.TriggerOrder(player.GetPlayerBaseMod().GetLevel(), order.TRIGGER_TYPE_ORDER, ChessMod.GetEmitList(), 1)
|
|
player.PushClientRes(OrderMod.BackData())
|
|
case "setlv":
|
|
num, _ := strconv.Atoi(arg[1])
|
|
player.PlayMod.getBaseMod().Level = num
|
|
player.PlayMod.getBaseMod().Exp = 0
|
|
player.PushClientRes(player.PlayerBaseMod.BackAsset())
|
|
player.InitActivity()
|
|
player.PlayMod.getGuideTaskMod().Unlock(num)
|
|
player.PlayMod.getOrderMod().TriggerOrder(num, order.TRIGGER_TYPE_LV, nil, 1)
|
|
player.PushClientRes(player.PlayMod.getOrderMod().BackData())
|
|
player.BackDataActivity()
|
|
case "zeroUpdate":
|
|
VarMod := player.PlayMod.getVarMod()
|
|
VarMod.DailyResetTime = 0
|
|
player.ZeroUpdate(nil)
|
|
player.LoginBackData()
|
|
case "addChampshipLog":
|
|
num, _ := strconv.Atoi(arg[1])
|
|
player.AddLog(num, friend.LOG_TYPE_PLAYROOM_CHAMPSHIP, fmt.Sprintf("%d_%d", 1, 1), GoUtil.Now())
|
|
case "serverZeroUpdate":
|
|
VarMod := player.PlayMod.getVarMod()
|
|
VarMod.DailyResetTime = 0
|
|
player.ZeroUpdate(nil)
|
|
G_GameLogicPtr.ZeroFlush()
|
|
case "resetActivity":
|
|
ActivityMod := player.PlayMod.getActivityMod()
|
|
ActivityMod.Var = nil
|
|
ActivityMod.InitData()
|
|
player.PlayMod.save()
|
|
player.InitActivity()
|
|
player.BackDataActivity()
|
|
case "weekUpdate":
|
|
VarMod := player.PlayMod.getVarMod()
|
|
VarMod.WeeklyResetTime = 0
|
|
player.ZeroUpdate(nil)
|
|
G_GameLogicPtr.ZeroFlush()
|
|
player.PushClientRes(player.GetDailyTaskMod().BackData())
|
|
case "setSevenLoginActive":
|
|
num, _ := strconv.Atoi(arg[1])
|
|
player.PlayMod.getSevenLoginMod().Active = num
|
|
player.PushClientRes(player.PlayMod.getSevenLoginMod().BackData())
|
|
case "pay":
|
|
ChargeId, _ := strconv.Atoi(arg[1])
|
|
player.TeLog("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(),
|
|
})
|
|
player.Charge(ChargeId)
|
|
case "AddPart":
|
|
ChessMod := player.PlayMod.getChessMod()
|
|
if ChessMod.PartBag.List == nil {
|
|
ChessMod.PartBag.List = make(map[int]chess.PartBagGrid)
|
|
}
|
|
ChessMod.PartBag.List[1505] = chess.PartBagGrid{
|
|
Num: 100,
|
|
PartId: 1505,
|
|
}
|
|
ChessMod.PartBag.List[1515] = chess.PartBagGrid{
|
|
Num: 100,
|
|
PartId: 1515,
|
|
}
|
|
ChessMod.PartBag.List[1525] = chess.PartBagGrid{
|
|
Num: 100,
|
|
PartId: 1525,
|
|
}
|
|
ChessMod.PartBag.List[1535] = chess.PartBagGrid{
|
|
Num: 100,
|
|
PartId: 1535,
|
|
}
|
|
case "AllFace":
|
|
Now := GoUtil.Now()
|
|
FaceMod := player.PlayMod.getFaceMod()
|
|
FaceList := faceCfg.GetAllId()
|
|
FaceMod.List = make(map[int]*face.Face)
|
|
for _, v := range FaceList {
|
|
FaceMod.List[v] = &face.Face{
|
|
AddTime: Now,
|
|
}
|
|
}
|
|
|
|
AvatarMod := player.PlayMod.getAvatarMod()
|
|
AvatarMod.List = make(map[int]*avatar.Avatar)
|
|
AvatarList := avatarCfg.GetAllId()
|
|
|
|
for _, v := range AvatarList {
|
|
AvatarMod.List[v] = &avatar.Avatar{
|
|
AddTime: Now,
|
|
}
|
|
}
|
|
player.BackUserInfo()
|
|
case "resetFace":
|
|
FaceMod := player.PlayMod.getFaceMod()
|
|
FaceMod.List = nil
|
|
FaceMod.InitData()
|
|
|
|
AvatarMod := player.PlayMod.getAvatarMod()
|
|
AvatarMod.List = nil
|
|
AvatarMod.InitData()
|
|
case "initEmoji":
|
|
EmojiMod := player.PlayMod.getEmojiMod()
|
|
InitId := emojiCfg.GetInitList()
|
|
now := GoUtil.Now()
|
|
for _, v := range InitId {
|
|
EmojiMod.List[v] = &emoji.Emoji{
|
|
AddTime: now,
|
|
}
|
|
}
|
|
case "addEmoji":
|
|
EmojiMod := player.PlayMod.getEmojiMod()
|
|
InitId := emojiCfg.GetAllList()
|
|
now := GoUtil.Now()
|
|
for _, v := range InitId {
|
|
EmojiMod.List[v] = &emoji.Emoji{
|
|
AddTime: now,
|
|
}
|
|
}
|
|
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, order.Common_type)
|
|
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":
|
|
SendMsgToCenterAsync(&MsgMod.Msg{
|
|
HandleType: MsgMod.HANDLE_MOD_CHAMPSHIP_GROUP,
|
|
})
|
|
case "inrank":
|
|
ChampshipMod := player.PlayMod.getChampshipMod()
|
|
num, _ := strconv.Atoi(arg[1])
|
|
Score := float64(num)
|
|
// 更新排行榜
|
|
m := &MsgMod.Msg{
|
|
Type: MsgMod.HANDLE_TYPE_CHAMPSHIP_INRANK,
|
|
SendT: GoUtil.Now(),
|
|
Extra: CRank{
|
|
Uid: int(player.M_DwUin),
|
|
Score: Score,
|
|
H: ChampshipMod.GetH(),
|
|
N: ChampshipMod.GetN(),
|
|
},
|
|
End: GoUtil.ZeroTimestamp() + 86400, // 第二天零点删除
|
|
HandleType: MsgMod.HANDLE_MDO_CHAMPSHIP_INRANK,
|
|
}
|
|
SendMsgToCenterAsync(m)
|
|
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 "handbook":
|
|
HandbookMod := player.PlayMod.getHandbookMod()
|
|
for _, v := range mergeDataCfg.GetAllId() {
|
|
HandbookMod.SetHandbook(v)
|
|
HandbookMod.BookList[v] = handbook.STATUS_REWARD
|
|
}
|
|
case "setLogin":
|
|
Id, _ := strconv.Atoi(arg[1])
|
|
BaseMod := player.PlayMod.getBaseMod()
|
|
BaseMod.LoginTime = int64(Id)
|
|
case "setLogout":
|
|
Id, _ := strconv.Atoi(arg[1])
|
|
BaseMod := player.PlayMod.getBaseMod()
|
|
BaseMod.LogoutTime = int64(Id)
|
|
case "setRegister":
|
|
Id, _ := strconv.Atoi(arg[1])
|
|
player.PlayerBaseMod.Data.Rolecreatetime = int32(Id)
|
|
case "handbookReward":
|
|
HandbookMod := player.PlayMod.getHandbookMod()
|
|
for _, v := range mergeDataCfg.GetAllId() {
|
|
HandbookMod.BookList[v] = handbook.STATUS_REWARD
|
|
}
|
|
player.PushClientRes(HandbookMod.BackData())
|
|
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 := player.GetActivityInfo(activity.ACT_TYPE_MINING)
|
|
MiningMod.ZeroUpdate(ActivityInfo.Id)
|
|
player.MiningBackData()
|
|
case "miningSetPass":
|
|
MiningMod := player.PlayMod.getMiningMod()
|
|
Id, _ := strconv.Atoi(arg[1])
|
|
MiningMod.Pass = Id
|
|
MiningMod.Mining = 0
|
|
MiningMod.Map = nil
|
|
MiningMod.Gem = nil
|
|
player.MiningBackData()
|
|
case "catnipReload":
|
|
CatnipMod := player.PlayMod.getCatnipMod()
|
|
CatnipMod.ZeroUpdate(-1)
|
|
ActivityInfo := player.GetActivityInfo(activity.ACT_TYPE_CATNIP)
|
|
CatnipMod.ZeroUpdate(ActivityInfo.Id)
|
|
case "guessColorReload":
|
|
GuessColorMod := player.PlayMod.getGuessColorMod()
|
|
GuessColorMod.ZeroUpdate(-1)
|
|
ActivityInfo := player.GetActivityInfo(activity.ACT_TYPE_GUESS_COLOR)
|
|
GuessColorMod.ZeroUpdate(ActivityInfo.Id)
|
|
player.GuessColorBackData()
|
|
case "raceReload":
|
|
RaceMod := player.PlayMod.getRaceMod()
|
|
RaceMod.ZeroUpdate(-1)
|
|
ActivityInfo := player.GetActivityInfo(activity.ACT_TYPE_RACE)
|
|
RaceMod.ZeroUpdate(ActivityInfo.Id)
|
|
player.RaceBackData()
|
|
case "raceAdd":
|
|
RaceMod := player.PlayMod.getRaceMod()
|
|
RaceMod.AddCoin(100)
|
|
player.RaceBackData()
|
|
case "playroomReset":
|
|
PlayroomMod := playroom.PlayroomMod{}
|
|
PlayroomMod.InitData(player.M_DwUin, player.PlayerBaseMod.GetRegisterTime())
|
|
player.PlayMod.mod_list.Playroom = PlayroomMod
|
|
case "resetCollect":
|
|
CollectMod := player.PlayMod.getCollectMod()
|
|
CollectMod.Reward = make([]int, 0)
|
|
CollectMod.Jackpot = make([]int, 0)
|
|
CollectMod.InitData()
|
|
case "playroomCollect":
|
|
CollectList := playroomCfg.GetDecorateList()
|
|
PlayroomMod := player.PlayMod.getPlayroomMod()
|
|
PlayroomMod.NewCollect = make(map[int]*playroom.CollectInfo, 0)
|
|
for _, v := range CollectList {
|
|
PlayroomMod.AddCollect(v, "Gm")
|
|
}
|
|
case "playroomDress":
|
|
PlayroomMod := player.PlayMod.getPlayroomMod()
|
|
PlayroomMod.NewDress = make(map[int]*playroom.DressInfo, 0)
|
|
DressList := playroomCfg.GetDressList()
|
|
for _, v := range DressList {
|
|
Part := playroomCfg.GetDressPart(v)
|
|
PlayroomMod.UnlockDress(Part, v)
|
|
}
|
|
player.PlayroomBackData()
|
|
case "playroomAir":
|
|
PlayroomMod := player.PlayMod.getPlayroomMod()
|
|
PlayroomMod.NewPetAir = make(map[int]*playroom.PetAirInfo, 0)
|
|
AirList := playroomCfg.GetAirList()
|
|
for _, v := range AirList {
|
|
PlayroomMod.UnlockPetAir(v)
|
|
}
|
|
player.PlayroomBackData()
|
|
case "resetRetire":
|
|
ChessMod := player.PlayMod.getChessMod()
|
|
ChessMod.Retire = make(map[string]int)
|
|
ChessMod.RetireChessMap = make(map[string][]int)
|
|
case "cleanBuff":
|
|
ChessMod := player.PlayMod.getChessMod()
|
|
ChessMod.ChessBuff = []int{}
|
|
player.PushClientRes(ChessMod.BackData())
|
|
case "addPlayroomPoint":
|
|
PlayroomMod := player.PlayMod.getPlayroomMod()
|
|
Num, _ := strconv.Atoi(arg[1])
|
|
PlayroomMod.RoomPoint += Num
|
|
player.PlayroomBackData()
|
|
case "resetPlayroomUnlock":
|
|
PlayroomMod := player.PlayMod.getPlayroomMod()
|
|
PlayroomMod.UnlockList = make(map[int]int64)
|
|
player.PlayroomBackData()
|
|
case "addChip":
|
|
PlayroomMod := player.PlayMod.getPlayroomMod()
|
|
PlayroomMod.AddChip(100100001, 1, 0)
|
|
player.PushClientRes(PlayroomMod.NotifyLose())
|
|
case "save":
|
|
player.PlayMod.ClearData(player)
|
|
case "logout":
|
|
player.PushAndSendClienRes(&msg.ForceKickOut{})
|
|
player.ClearData()
|
|
case "resetFriend":
|
|
FriendMod := player.PlayMod.getFriendMod()
|
|
FriendMod.FriendList = make(map[int]struct{})
|
|
FriendMod.NewApplyList = make(map[int]*friend.ApplyInfo)
|
|
FriendMod.Card = make(map[string]*card.CardInfo)
|
|
FriendMod.SendApply = make(map[int]int64)
|
|
FriendMod.NewFriendList = make(map[int]*friend.FriendInfo)
|
|
FriendMod.Npc = nil
|
|
FriendMod.Id = 0
|
|
FriendMod.Log = nil
|
|
FriendMod.InitData(player.M_DwUin)
|
|
player.FriendListBackData()
|
|
player.FriendLogBackData()
|
|
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)
|
|
CardMod.Handbook[v] = card.HANDBOOK_STATUS_GET
|
|
}
|
|
player.PushClientRes(CardMod.NotifyCard())
|
|
case "resetRankUser":
|
|
db.RedisDelKey(RANK_USER)
|
|
db.RedisDelKey(fmt.Sprintf("%s_%s", RANK_COUNTRY_USER, conf.Server.CountryCode))
|
|
case "addFriendStar":
|
|
FriendTreasureMod := player.PlayMod.getFriendTreasureMod()
|
|
FriendTreasureMod.AddStar(200, player.GetOrderFactor())
|
|
case "comfortOrder":
|
|
BaseMod := player.PlayMod.getBaseMod()
|
|
BaseMod.LogoutTime = GoUtil.Now() - 7*86400
|
|
player.TriggerComfortOrder()
|
|
player.PushClientRes(player.PlayMod.getOrderMod().BackData())
|
|
case "resetGuide":
|
|
GuildMod := player.PlayMod.getGuideMod()
|
|
GuildMod.Reward = make(map[int]int)
|
|
player.PushClientRes(GuildMod.BackData())
|
|
case "resetDecoratePart":
|
|
DecorateMod := player.PlayMod.getDecorateMod()
|
|
DecorateMod.PartCost = make(map[int]*decorate.PartCostInfo)
|
|
DecorateMod.PartClassPool = []int{}
|
|
DecorateMod.PartPool = make(map[int]int)
|
|
DecorateMod.InitData()
|
|
player.PushClientRes(DecorateMod.BackData())
|
|
case "setDecorateArea":
|
|
S, _ := strconv.Atoi(arg[1])
|
|
DecorateMod := player.PlayMod.getDecorateMod()
|
|
DecorateMod.AreaId = S
|
|
DecorateMod.FinishList = make(map[int]struct{})
|
|
DecorateMod.Progress = 0
|
|
DecorateMod.PartCost = make(map[int]*decorate.PartCostInfo)
|
|
DecorateMod.PartClassPool = []int{}
|
|
DecorateMod.PartPool = make(map[int]int)
|
|
DecorateMod.InitData()
|
|
player.PushClientRes(DecorateMod.BackData())
|
|
case "setDecorateProgress":
|
|
S, _ := strconv.Atoi(arg[1])
|
|
DecorateMod := player.PlayMod.getDecorateMod()
|
|
DecorateMod.FinishList = make(map[int]struct{})
|
|
for i := 1; i <= S; i++ {
|
|
DecorateMod.FinishList[i] = struct{}{}
|
|
}
|
|
DecorateMod.Progress = S
|
|
player.PushClientRes(DecorateMod.BackData())
|
|
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 "resetFastCD":
|
|
LimitedTimeEventMod := player.PlayMod.getLimitedTimeEventMod()
|
|
LimitedTimeEventMod.ResetFastProduceCD()
|
|
EndTime, Times := LimitedTimeEventMod.GetFastProduceInfo()
|
|
player.PushClientRes(&msg.ResFastProduceInfo{
|
|
EndTime: EndTime,
|
|
Num: int32(Times),
|
|
})
|
|
case "resetNpc":
|
|
FriendMod := player.PlayMod.getFriendMod()
|
|
FriendMod.Npc = []int{}
|
|
player.FriendListBackData()
|
|
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.M_DwUin = int64(GoUtil.Int(arg[1]))
|
|
err := p1.InitPlayerOnly()
|
|
if err != nil {
|
|
log.Error("failed to initialize player: %v", err)
|
|
return err
|
|
}
|
|
BaseMod := p1.PlayMod.getBaseMod()
|
|
BaseMod.Uid = player.M_DwUin
|
|
BaseMod.NickName = player.PlayMod.getBaseMod().NickName
|
|
BaseMod.Account = player.PlayMod.getBaseMod().Account
|
|
BaseMod.LoginTime = GoUtil.Now()
|
|
BaseMod.AddCode = fmt.Sprintf("MMM-%s-%s", BaseMod.CountryCode, GoUtil.UniqueStringFromInt(int(BaseMod.Uid)))
|
|
// deep copy p1.PlayMod.mod_list to avoid sharing internal pointers
|
|
var modCopy PlayerModList
|
|
var buf bytes.Buffer
|
|
enc := gob.NewEncoder(&buf)
|
|
if err := enc.Encode(p1.PlayMod.mod_list); err != nil {
|
|
log.Error("failed to encode mod_list: %v", err)
|
|
return err
|
|
}
|
|
dec := gob.NewDecoder(&buf)
|
|
if err := dec.Decode(&modCopy); err != nil {
|
|
log.Error("failed to decode mod_list: %v", err)
|
|
return err
|
|
}
|
|
player.PlayMod.mod_list = modCopy
|
|
player.PlayMod.mod_list.Base = *BaseMod
|
|
case "orderMerge": // 获取order订单的mergeId
|
|
OrderMod := player.PlayMod.getOrderMod()
|
|
items := make([]*item.Item, 0)
|
|
for _, v := range OrderMod.OrderList {
|
|
for _, j := range v.MergeId {
|
|
items = append(items, &item.Item{
|
|
Id: j,
|
|
Num: 1,
|
|
})
|
|
}
|
|
}
|
|
player.HandleItem(items, msg.ITEM_POP_LABEL_GM.String())
|
|
case "resetCompensation":
|
|
compensationMod := player.PlayMod.getCompensationMod()
|
|
compensationMod.C20250910 = false
|
|
case "resetWeekly":
|
|
ChargeMod := player.PlayMod.getChargeMod()
|
|
ChargeMod.WeeklyDiscount = make(map[int]int)
|
|
player.ChargeBackData()
|
|
PlayroomMod := player.PlayMod.getPlayroomMod()
|
|
PlayroomMod.WeeklyDiscount = make(map[int]int)
|
|
player.PlayroomBackData()
|
|
case "resetPlayer":
|
|
de := time.Now().Format("2006-01-02 15:04:05")
|
|
BaseMod := player.PlayMod.getBaseMod()
|
|
account := BaseMod.Account
|
|
newAccount := fmt.Sprintf("%s_reset_%s", account, de)
|
|
err := db.ResetAccountData(account, newAccount)
|
|
if err != nil {
|
|
log.Error("resetPlayer err:%s", err.Error())
|
|
return err
|
|
}
|
|
log.Debug("player reset: old account: %s; new account %s", account, newAccount)
|
|
BaseMod.Account = newAccount
|
|
player.GetPlayerBaseMod().Data.UserName = newAccount
|
|
player.PushAndSendClienRes(&msg.ForceKickOut{})
|
|
case "mapping":
|
|
if len(arg) < 2 {
|
|
return fmt.Errorf("mapping command requires an argument")
|
|
}
|
|
BaseMod := player.PlayMod.getBaseMod()
|
|
account := BaseMod.Account
|
|
err := db.MappingAccountData(account, arg[1])
|
|
if err != nil {
|
|
log.Error("resetPlayer err:%s", err.Error())
|
|
return err
|
|
}
|
|
log.Debug("player reset: old account: %s; new account %s", account, arg[1])
|
|
BaseMod.Account = ""
|
|
player.GetPlayerBaseMod().Data.UserName = ""
|
|
player.PushAndSendClienRes(&msg.ForceKickOut{})
|
|
player.ClearData()
|
|
case "resetCode":
|
|
BaseMod := player.PlayMod.getBaseMod()
|
|
BaseMod.Uid = player.GetPlayerBaseMod().Data.DwUin
|
|
BaseMod.AddCode = fmt.Sprintf("MMM-%s-%s", BaseMod.CountryCode, GoUtil.UniqueStringFromInt(int(BaseMod.Uid)))
|
|
player.BackUserInfo()
|
|
case "debug":
|
|
player.HandleInUserRank()
|
|
case "addLimitEvent":
|
|
Id, _ := strconv.Atoi(arg[1])
|
|
Cd, _ := strconv.Atoi(arg[2])
|
|
LimitedTimeEventMod := player.PlayMod.getLimitedTimeEventMod()
|
|
LimitedTimeEventMod.AddEvent(Id, Cd)
|
|
player.PushClientRes(LimitedTimeEventMod.BackData())
|
|
case "resetTriggerMail":
|
|
player.PlayMod.mod_list.Mail.TriggerMail = make([]int, 0, 8)
|
|
case "notification":
|
|
Id, _ := strconv.Atoi(arg[1])
|
|
SetFriendApplyNotification(Id, 2)
|
|
NotifyFriendApply(Id, int(player.M_DwUin))
|
|
NotifyPetroomGame(Id)
|
|
case "notificationTest":
|
|
Id, _ := strconv.Atoi(arg[1])
|
|
PlayerSimpleData := G_GameLogicPtr.GetSimplePlayerByUid(Id)
|
|
if PlayerSimpleData == nil {
|
|
return nil
|
|
}
|
|
titlekey, infokey := notification_cfg.GetFriendApplyNotificationMsg()
|
|
title := languageCfg.GetLanguage(msg.LANG_TYPE(PlayerSimpleData.Lang), titlekey)
|
|
info := languageCfg.GetLanguage(msg.LANG_TYPE(PlayerSimpleData.Lang), infokey)
|
|
BaseMod := player.PlayMod.getBaseMod()
|
|
GoUtil.NotifyPlayer(GoUtil.Int(PlayerSimpleData.Account), 1, title, fmt.Sprintf(info, BaseMod.NickName))
|
|
|
|
titlekey, infokey = notification_cfg.GetPetroomGameNotificationMsg()
|
|
title = languageCfg.GetLanguage(msg.LANG_TYPE(PlayerSimpleData.Lang), titlekey)
|
|
info = languageCfg.GetLanguage(msg.LANG_TYPE(PlayerSimpleData.Lang), infokey)
|
|
GoUtil.NotifyPlayer(GoUtil.Int(PlayerSimpleData.Account), NOTIFY_TYPE_PETROOM_GAME, fmt.Sprintf(title, PlayerSimpleData.PetName), fmt.Sprintf(info, PlayerSimpleData.PetName))
|
|
case "resetWeekReward":
|
|
SevenMod := player.PlayMod.getSevenLoginMod()
|
|
SevenMod.WeekResetTime = 0
|
|
SevenMod.MonthResetTime = 0
|
|
PlayerBaseMod := player.GetPlayerBaseMod()
|
|
SevenMod.ZeroUpdate(PlayerBaseMod.GetSevenLoginAdd(), PlayerBaseMod.GetLastLoginTime(), player.GetOrderFactor(), player.GetBaseMod().GetLevel())
|
|
player.PushClientRes(SevenMod.BackData())
|
|
case "addInvite":
|
|
Id, _ := strconv.Atoi(arg[1])
|
|
player.PlayMod.getInviteMod().AddInvite(Id)
|
|
player.PushClientRes(player.PlayMod.getInviteMod().NotifySuccess())
|
|
case "resetCatReturnGift":
|
|
CatReturnGiftMod := player.GetCatReturnGiftMod()
|
|
CatReturnGiftMod.AId = 0
|
|
player.CatReturnGiftLogin()
|
|
player.CatReturnGiftBackData()
|
|
case "championshipResult":
|
|
uid, _ := strconv.Atoi(arg[1])
|
|
FriendMgrSend(&MsgMod.Msg{
|
|
Type: MsgMod.HANDLE_TYPE_CHAMPSHIP_RESULT,
|
|
SendT: GoUtil.ZeroTimestamp(),
|
|
To: int(player.M_DwUin),
|
|
From: uid,
|
|
Extra: []int{2, 145},
|
|
})
|
|
case "resetKv":
|
|
player.PlayMod.mod_list.Kv.Data = make(map[int]string)
|
|
case "debugBeckmarkMsg":
|
|
for i := 0; i < 1000000; i++ {
|
|
for j := 0; j < 10; j++ {
|
|
FriendMgrSend(&MsgMod.Msg{
|
|
Type: MsgMod.HANDLE_TYPE_APPLY,
|
|
SendT: GoUtil.ZeroTimestamp(),
|
|
To: 10000 + i,
|
|
From: 10000 + j,
|
|
})
|
|
}
|
|
}
|
|
case "catScore":
|
|
score := GoUtil.Int(arg[1])
|
|
player.GetCatReturnGiftMod().AddScore(score)
|
|
player.CatReturnGiftBackData()
|
|
case "debugLogoutMsg":
|
|
toUid, _ := strconv.Atoi(arg[1])
|
|
uidList, err := db.GetDebugPlayer(toUid)
|
|
if err != nil {
|
|
log.Error("GetDebugPlayer err:%s", err.Error())
|
|
return err
|
|
}
|
|
for _, uid := range uidList {
|
|
FriendMgrSend(&MsgMod.Msg{
|
|
Type: MsgMod.HANDLE_TYPE_APPLY,
|
|
SendT: GoUtil.Now(),
|
|
From: uid,
|
|
To: toUid,
|
|
})
|
|
FriendMgrSend(&MsgMod.Msg{
|
|
Type: MsgMod.HANDLE_TYPE_HANDBOOK_COLLECTION,
|
|
SendT: GoUtil.Now(),
|
|
From: uid,
|
|
To: toUid,
|
|
})
|
|
}
|
|
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
|
|
}
|