pet_home_server/src/server/game/gm_handler.go
2026-03-30 20:20:06 +08:00

706 lines
23 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"
"server/pkg/github.com/name5566/leaf/log"
"strconv"
"strings"
"time"
"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 {
// 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.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)
err := p1.InitPlayer(arg[1])
if err != nil {
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])
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 "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 "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 "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
}