pet_home_server/src/server/game/PlayerBaseMod.go
2025-12-04 18:49:46 +08:00

669 lines
20 KiB
Go

package game
import (
"context"
"database/sql"
"errors"
"server/MergeConst"
baseCfg "server/conf/base"
userCfg "server/conf/user"
"server/db"
"server/game/mod/item"
"server/game/mod/limitedTimeEvent"
Msg "server/game/mod/msg"
"server/game/mod/order"
"server/game/mod/quest"
"server/msg"
"server/pkg/github.com/name5566/leaf/log"
"time"
"google.golang.org/protobuf/proto"
)
type PlayerBaseData struct {
p *Player
Data msg.ResPlayerBaseInfo
}
func (p *PlayerBaseData) GetData() interface{} {
return &p.Data
}
func (p *PlayerBaseData) BackUp() msg.ResPlayerBaseInfo {
return msg.ResPlayerBaseInfo{
Diamond: p.Data.Diamond,
DwUin: p.Data.DwUin,
Energy: p.Data.Energy,
Star: p.Data.Star,
RecoverTime: p.Data.RecoverTime,
Level: p.Data.Level,
Exp: p.Data.Exp,
StartOrderId: p.Data.StartOrderId,
MusicCode: p.Data.MusicCode,
Guild: p.Data.Guild,
PackUnlockCount: p.Data.PackUnlockCount,
LastPlayTime: p.Data.LastPlayTime,
EnergyBuyCount: p.Data.EnergyBuyCount,
LoginTime: p.Data.LoginTime,
UserName: p.Data.UserName,
LogoutTime: p.Data.LogoutTime,
Todayolinetime: p.Data.Todayolinetime,
Rolecreatetime: p.Data.Rolecreatetime,
LastChampGroupID: p.Data.LastChampGroupID,
ChampshipsGroupID: p.Data.ChampshipsGroupID,
NoAd: p.Data.NoAd,
FaceBookId: p.Data.FaceBookId,
}
}
func (p *PlayerBaseData) Recover(old *PlayerBaseData) *PlayerBaseData {
old.Data = msg.ResPlayerBaseInfo{
Diamond: p.Data.Diamond,
DwUin: p.Data.DwUin,
Energy: p.Data.Energy,
Star: p.Data.Star,
RecoverTime: p.Data.RecoverTime,
Level: p.Data.Level,
Exp: p.Data.Exp,
StartOrderId: p.Data.StartOrderId,
MusicCode: p.Data.MusicCode,
Guild: p.Data.Guild,
PackUnlockCount: p.Data.PackUnlockCount,
LastPlayTime: p.Data.LastPlayTime,
EnergyBuyCount: p.Data.EnergyBuyCount,
LoginTime: p.Data.LoginTime,
UserName: p.Data.UserName,
LogoutTime: p.Data.LogoutTime,
Todayolinetime: p.Data.Todayolinetime,
Rolecreatetime: p.Data.Rolecreatetime,
LastChampGroupID: p.Data.LastChampGroupID,
ChampshipsGroupID: p.Data.ChampshipsGroupID,
NoAd: p.Data.NoAd,
FaceBookId: p.Data.FaceBookId,
}
return old
}
func (p *PlayerBaseData) LoadDataFromDB(UserName interface{}) bool {
sqlStr := "SELECT * FROM t_player_baseinfo WHERE user_name = ?"
sqlStruck := db.ResPlayerBaseInfo{}
if err := db.SqlDb.Get(&sqlStruck, sqlStr, UserName); err != nil {
log.Debug("PlayerBaseData get data failed, err:%v\n", err)
return false
}
p.Data.Diamond = sqlStruck.Diamond
p.Data.DwUin = sqlStruck.DwUin
p.Data.Energy = sqlStruck.Energy
p.Data.Star = sqlStruck.Star
p.Data.RecoverTime = sqlStruck.RecoverTime
p.Data.Level = sqlStruck.Level
p.Data.Exp = sqlStruck.Exp
p.Data.StartOrderId = sqlStruck.StartOrderId
p.Data.MusicCode = sqlStruck.MusicCode
p.Data.Guild = sqlStruck.Guild
p.Data.PackUnlockCount = sqlStruck.PackUnlockCount
p.Data.LastPlayTime = sqlStruck.LastPlayTime
p.Data.EnergyBuyCount = sqlStruck.EnergyBuyCount
p.Data.UserName = sqlStruck.UserName
p.Data.LogoutTime = sqlStruck.LogoutTime
p.Data.Todayolinetime = sqlStruck.Todayolinetime
p.Data.Rolecreatetime = sqlStruck.Rolecreatetime
p.Data.LastChampGroupID = sqlStruck.LastChampGroupID
p.Data.ChampshipsGroupID = sqlStruck.ChampshipsGroupID
p.Data.NoAd = sqlStruck.NoAd
p.Data.FaceBookId = sqlStruck.FaceBookId
return true
}
func (p *PlayerBaseData) SaveDataFromDB(Key interface{}) bool {
BaseMod := p.p.PlayMod.getBaseMod()
sqlStruck := db.ResPlayerBaseInfo{}
sqlStruck.Diamond = int32(BaseMod.Diamond)
sqlStruck.DwUin = p.Data.DwUin
sqlStruck.Energy = int32(BaseMod.Energy)
sqlStruck.Star = int32(BaseMod.Star)
sqlStruck.RecoverTime = int32(BaseMod.RecoverTime)
sqlStruck.Level = int32(BaseMod.Level)
sqlStruck.Exp = int32(BaseMod.Exp)
sqlStruck.StartOrderId = p.Data.StartOrderId
sqlStruck.MusicCode = p.Data.MusicCode
sqlStruck.Guild = p.Data.Guild
sqlStruck.PackUnlockCount = p.Data.PackUnlockCount
sqlStruck.LastPlayTime = p.Data.LastPlayTime
sqlStruck.EnergyBuyCount = p.Data.EnergyBuyCount
sqlStruck.LoginTime = int32(BaseMod.LoginTime)
sqlStruck.UserName = p.Data.UserName
sqlStruck.LogoutTime = int32(BaseMod.LogoutTime)
sqlStruck.Todayolinetime = p.Data.Todayolinetime
sqlStruck.Rolecreatetime = p.Data.Rolecreatetime
sqlStruck.NoAd = p.Data.NoAd
sqlStruck.ChampshipsGroupID = p.Data.ChampshipsGroupID
sqlStruck.LastChampGroupID = p.Data.LastChampGroupID
sqlStruck.FaceBookId = p.Data.FaceBookId
sqlStruck.NickName = BaseMod.NickName
db.FormatAllMemUpdateDb(&sqlStruck, "t_player_baseinfo", "dwUin")
return true
}
func (p *PlayerBaseData) GetMaxEnergyMul(player *Player) int {
BaseMod := player.PlayMod.getBaseMod()
MaxEnergyMul := baseCfg.GetMaxEnergyMul(BaseMod.GetLevel(), BaseMod.GetEnergy())
if player.PlayMod.getLimitedTimeEventMod().CheckExist(limitedTimeEvent.EVENT_TYPE_HIGH_ROLLER) {
MaxEnergyMul = 11
}
return MaxEnergyMul
}
func (p *PlayerBaseData) GetMaxEnergy() int {
BaseMod := p.p.PlayMod.getBaseMod()
return userCfg.GetEnergyMax(BaseMod.Level)
}
// 更新游戏道具
func (p *PlayerBaseData) UpdateBaseItemInfo(update *msg.UpdateBaseItemInfo) {
for k, v := range update.MUpdateItem {
switch k {
case 4:
p.Data.EnergyBuyCount = v
case 8:
p.Data.Guild = v
case 9:
p.Data.PackUnlockCount = v
case 10:
p.Data.EmitOrderCnt = v
case 11:
p.Data.LastPlayTime = v
}
}
}
func (p *PlayerBaseData) ReqRemoveAd(player *Player, buf []byte) {
req := &msg.ReqRemoveAd{}
res := &msg.ResRemoveAd{}
proto.Unmarshal(buf, req)
p.Data.NoAd = 1
res.ResultCode = 0
agent := player.GetAgentByPlayer()
data, _ := proto.Marshal(res)
G_getGameLogic().PackResInfo(agent, "ResRemoveAd", data)
}
func (p *PlayerBaseData) ResPlayerBaseInfo(player *Player) {
BaseMod := player.PlayMod.getBaseMod()
player.PushClientRes(&msg.ResPlayerBaseInfo{
DwUin: p.Data.DwUin,
Energy: int32(BaseMod.Energy),
Star: int32(BaseMod.Star),
RecoverTime: int32(BaseMod.RecoverTime),
Diamond: int32(BaseMod.Diamond),
Level: int32(BaseMod.Level),
Exp: int32(BaseMod.Exp),
LoginTime: int32(BaseMod.LoginTime),
LogoutTime: int32(BaseMod.LogoutTime),
RegisterTime: int32(p.GetRegisterTime()),
FaceBookId: p.Data.FaceBookId,
})
}
func (p *PlayerBaseData) ReqBindFacebookAccount(player *Player, buf []byte) {
req := &msg.ReqBindFacebookAccount{}
res := &msg.ResBindFacebookAccount{}
err := proto.Unmarshal(buf, req)
if err != nil {
return
}
sqlStr := "SELECT * FROM t_player_baseinfo WHERE FaceBookId = ?"
sqlStruck := db.ResPlayerBaseInfo{}
isHaveOther := false
if err := db.SqlDb.Get(&sqlStruck, sqlStr, req.BindAccountId); err != nil {
isHaveOther = false
} else {
isHaveOther = true
}
if isHaveOther {
if sqlStruck.DwUin == p.Data.DwUin {
res.ResultCode = MergeConst.Protocol_FaceBook_Binded
} else {
res.ResultCode = MergeConst.Protocol_FaceBook_Binded_other
}
} else {
res.ResultCode = 0
p.Data.FaceBookId = req.BindAccountId
res.BindAccountId = req.BindAccountId
player.TeLog("platform_connect", map[string]interface{}{
"platform_type": "Facebook",
"platform_id": req.BindAccountId,
"is_reward": false,
})
}
BaseMod := player.PlayMod.getBaseMod()
BaseMod.FackBookId = req.BindAccountId
agent := player.GetAgentByPlayer()
data, _ := proto.Marshal(res)
p.SaveDataFromDB("")
G_getGameLogic().PackResInfo(agent, "ResBindFacebookAccount", data)
}
func (p *PlayerBaseData) ReqUnBindFacebook(player *Player, buf []byte) {
req := &msg.ReqUnBindFacebook{}
res := &msg.ResUnBindFacebook{}
err := proto.Unmarshal(buf, req)
if err != nil {
return
}
res.ResultCode = 0
res.BindAccountId = req.BindAccountId
p.Data.FaceBookId = ""
BaseMod := player.PlayMod.getBaseMod()
BaseMod.FackBookId = ""
agent := player.GetAgentByPlayer()
data, _ := proto.Marshal(res)
G_getGameLogic().PackResInfo(agent, "ResUnBindFacebook", data)
p.SaveDataFromDB("")
player.TeLog("platform_disconnect", map[string]interface{}{
"platform_type": "Facebook",
"platform_id": req.BindAccountId,
})
}
func (p *PlayerBaseData) ReqOnlyBindFacebook(player *Player, buf []byte) {
req := &msg.ReqOnlyBindFacebook{}
res := &msg.ResOnlyBindFacebook{}
err := proto.Unmarshal(buf, req)
if err != nil {
return
}
sqlStr := "SELECT * FROM t_player_baseinfo WHERE FaceBookId = ?"
sqlStruck := db.ResPlayerBaseInfo{}
isHaveOther := false
err = db.SqlDb.Get(&sqlStruck, sqlStr, req.BindAccountId)
if err != nil {
isHaveOther = false
} else {
isHaveOther = true
}
if isHaveOther {
if sqlStruck.DwUin == p.Data.DwUin {
res.ResultCode = MergeConst.Protocol_FaceBook_Binded
} else {
sqlStruck.FaceBookId = ""
// 修改双方的faceBookId
ctx := context.Background()
txOptions := &sql.TxOptions{}
tx, _ := db.SqlDb.BeginTx(ctx, txOptions)
sqlStr := "update t_player_baseinfo set FaceBookId = ? where dwUin = ?"
_, err := tx.Exec(sqlStr, "", sqlStruck.DwUin)
if err != nil {
tx.Rollback()
return
}
sqlStr = "update t_player_baseinfo set FaceBookId = ? where dwUin = ?"
_, err = tx.Exec(sqlStr, req.BindAccountId, p.Data.DwUin)
if err != nil {
tx.Rollback()
return
}
tx.Commit()
FriendMgrSend(&Msg.Msg{
Type: Msg.HANDLE_TYPE_FACEBOOK_UNBIND,
To: int(sqlStruck.DwUin),
})
res.ResultCode = 0
p.Data.FaceBookId = req.BindAccountId
res.BindAccountId = req.BindAccountId
player.TeLog("platform_connect", map[string]interface{}{
"platform_type": "Facebook",
"platform_id": req.BindAccountId,
"is_reward": false,
})
}
} else {
res.ResultCode = 0
p.Data.FaceBookId = req.BindAccountId
res.BindAccountId = req.BindAccountId
}
BaseMod := player.PlayMod.getBaseMod()
BaseMod.FackBookId = req.BindAccountId
p.SaveDataFromDB("")
agent := player.GetAgentByPlayer()
data, _ := proto.Marshal(res)
G_getGameLogic().PackResInfo(agent, "ResOnlyBindFacebook", data)
}
func (p *PlayerBaseData) ReqSynGameData(player *Player, buf []byte) {
req := &msg.ReqSynGameData{}
res := &msg.ResSynGameData{}
err := proto.Unmarshal(buf, req)
if err != nil {
return
}
sqlStr := "SELECT * FROM t_player_baseinfo WHERE FaceBookId = ?"
sqlStruck := db.ResPlayerBaseInfo{}
isHaveOther := false
if err := db.SqlDb.Get(&sqlStruck, sqlStr, req.NewFBId); err != nil {
isHaveOther = false
} else {
isHaveOther = true
}
if sqlStruck.DwUin == player.M_DwUin {
return
}
OldPlayer := G_GameLogicPtr.GetPlayer(sqlStruck.DwUin)
if OldPlayer != nil {
agent := OldPlayer.GetAgentByPlayer()
// notify := &msg.ForceKickOut{}
notify := &msg.ResSynGameData{}
data, _ := proto.Marshal(notify)
if agent != nil {
G_getGameLogic().PackResInfo(agent, "ResSynGameData", data)
}
OldPlayer.ClearData()
G_GameLogicPtr.M_Players.Delete(sqlStruck.DwUin)
}
if isHaveOther {
if sqlStruck.DwUin == p.Data.DwUin {
res.ResultCode = MergeConst.Protocol_FaceBook_Binded
} else {
ReplaceName := sqlStruck.UserName
UserName := p.Data.UserName
res.ResultCode = 0
// 修改双方的账号
ctx := context.Background()
txOptions := &sql.TxOptions{}
tx, _ := db.SqlDb.BeginTx(ctx, txOptions)
sqlStr1 := "SELECT * FROM t_account WHERE user_name = ?"
sqlAccStruck1 := db.Db_Account{}
err2 := db.SqlDb.Get(&sqlAccStruck1, sqlStr1, UserName)
if err2 == nil {
sqlAccStruck1.UserName = ""
_, err := db.SqlDb.Exec("update t_account set user_name = ? where auto_id = ?", sqlAccStruck1.UserName, sqlAccStruck1.AutoId)
if err != nil {
tx.Rollback()
return
}
}
p.Data.UserName = ""
_, err := db.SqlDb.Exec("update t_player_baseinfo set user_name = ? , FaceBookId = ? where dwUin = ?", "", "", p.Data.DwUin)
if err != nil {
tx.Rollback()
return
}
sqlStruck.FaceBookId = req.NewFBId
sqlStruck.UserName = UserName
_, err = db.SqlDb.Exec("update t_player_baseinfo set user_name = ?, FaceBookId = ? where dwUin = ?", UserName, req.NewFBId, sqlStruck.DwUin)
if err != nil {
tx.Rollback()
return
}
sqlStr := "SELECT * FROM t_account WHERE user_name = ?"
sqlAccStruck := db.Db_Account{}
err2 = db.SqlDb.Get(&sqlAccStruck, sqlStr, ReplaceName)
if err2 == nil {
sqlAccStruck.UserName = UserName
_, err := db.SqlDb.Exec("update t_account set user_name = ? where auto_id = ?", sqlAccStruck.UserName, sqlAccStruck.AutoId)
if err != nil {
tx.Rollback()
return
}
}
tx.Commit()
}
} else {
res.ResultCode = 0
}
p.p.TeLog("ReqSynGameData", map[string]interface{}{
"platform_type": "facebook",
})
p.SaveDataFromDB("")
agent := player.GetAgentByPlayer()
data, _ := proto.Marshal(res)
G_getGameLogic().PackResInfo(agent, "ResSynGameData", data)
}
func (p *PlayerBaseData) ClearData() bool {
p.Data.LogoutTime = int32(time.Now().Unix())
p.SaveDataFromDB("")
return true
}
func (p *PlayerBaseData) GetRegisterTime() int64 {
return int64(p.Data.Rolecreatetime)
}
// 增加减少体力
func (p *PlayerBaseData) AddEnergy(player *Player, cnt int) error {
BaseMod := p.p.PlayMod.getBaseMod()
NewEnergy := BaseMod.Energy + cnt
if NewEnergy < 0 {
return errors.New("能量不足")
}
if cnt < 0 {
player.QuestTrigger(&quest.Trigger{Label: quest.TRIGGER_LABEL_ENERGY, A: []interface{}{-cnt}})
// BaseMod.FormatEnergyMul(NewEnergy)
p.p.PushClientRes(BaseMod.BackData())
}
if BaseMod.Energy >= p.GetMaxEnergy() && NewEnergy < p.GetMaxEnergy() {
Recover := userCfg.GetRecover(int(BaseMod.Level))
player.CallEvent(time.Duration(Recover)*time.Second, func() {
player.lock.Lock()
defer player.lock.Unlock()
LimitedTimeEnergyAdd(player)
}, "AddEnergy")
BaseMod.RecoverTime = time.Now().Unix()
}
BaseMod.Energy = NewEnergy
return nil
}
// 增加减少星星
func (p *PlayerBaseData) AddStar(player *Player, cnt int) error {
BaseMod := p.p.PlayMod.getBaseMod()
NewStar := BaseMod.Star + cnt
if NewStar < 0 {
return errors.New("星星不足")
}
if cnt > 0 {
player.QuestTrigger(&quest.Trigger{Label: quest.TRIGGER_LABEL_STAR, A: []interface{}{cnt}})
}
BaseMod.Star = NewStar
player.UpdateUserInfo()
return nil
}
// 增加减少钻石
func (p *PlayerBaseData) AddDiamond(cnt int) error {
BaseMod := p.p.PlayMod.getBaseMod()
NewDiamond := BaseMod.Diamond + cnt
if NewDiamond < 0 {
return errors.New("钻石不足")
}
BaseMod.Diamond = NewDiamond
return nil
}
// 增加经验
func (p *PlayerBaseData) AddExp(player *Player, exp int, pexp int) (int, error) {
BaseMod := player.PlayMod.getBaseMod()
BaseMod.Exp += exp
BaseMod.PExp += pexp
upLv := 0
upExp, upPExp := userCfg.GetLevUpExp(BaseMod.Level)
Num := 0
UpLevelItem := make([]*item.Item, 0)
for BaseMod.Exp >= upExp && BaseMod.PExp >= upPExp {
if Num > 100 {
break
}
Num++
BaseMod.Level++
BaseMod.Exp -= upExp
BaseMod.PExp -= upPExp
upExp, upPExp = userCfg.GetLevUpExp(BaseMod.Level)
// 日常任务解锁
DailyTaskMod := player.PlayMod.getDailyTaskMod()
DecorateMod := player.PlayMod.getDecorateMod()
if DailyTaskMod.LevUpTrigger(BaseMod.Level, DecorateMod.GetAreaId()) {
player.PushClientRes(DailyTaskMod.BackData())
}
upLv = BaseMod.Level
Items := userCfg.GetLevUpReward(upLv)
UpLevelItem = item.Merge(UpLevelItem, Items)
// 棋盘背包解锁
player.PushClientRes(p.BackAsset())
ChessMod := player.PlayMod.getChessMod()
if ChessMod.TriggerChessBagUnlock(int(BaseMod.Level)) {
player.PushClientRes(ChessMod.BackData())
}
GuideTaskMod := player.PlayMod.getGuideTaskMod()
if GuideTaskMod.Unlock(BaseMod.Level) {
player.PushClientRes(GuideTaskMod.BackData())
}
ChargeMod := player.PlayMod.getChargeMod()
ChargeMod.TriggerChargeUnlock(int(BaseMod.Level), ChessMod.GetEmitList())
player.ChargeBackData()
OrderMod := player.PlayMod.getOrderMod()
player.TriggerOrder(BaseMod.Level, order.TRIGGER_TYPE_LV, ChessMod.GetOrderEmit(), player.PlayMod.getBaseMod().GetEnergyMul())
player.PushClientRes(OrderMod.BackData())
// 重载活动
player.initAcitivity()
player.BackDataActivity()
player.QuestTrigger(&quest.Trigger{Label: quest.TRIGGER_LABEL_UPLV})
player.TeLog("level_up", map[string]interface{}{
"after_level": BaseMod.Level,
})
NewExpLv, NewPetLv := userCfg.GetNewLevUpExp(BaseMod.Level, BaseMod.Exp, BaseMod.PExp)
player.TeLog("property_level_up", map[string]interface{}{
"property_level": BaseMod.Level,
"property_level_reward": userCfg.GetUnlock(int(BaseMod.Level)),
"story_level": NewExpLv,
"pet_level": NewPetLv,
})
player.HandleInUserRank()
}
if len(UpLevelItem) > 0 {
err := player.HandleItem(UpLevelItem, msg.ITEM_POP_LABEL_LevUpReward.String())
if err != nil {
return 0, err
}
}
EmitRetireTrigger2(player)
player.InitOrderItem()
player.PushClientRes(p.BackAsset())
return upLv, nil
}
func (p *PlayerBaseData) GetLevel() int {
BaseMod := p.p.PlayMod.getBaseMod()
return BaseMod.Level
}
func (p *PlayerBaseData) GetExp() int {
BaseMod := p.p.PlayMod.getBaseMod()
return BaseMod.Exp
}
func (p *PlayerBaseData) GetDiamond() int {
BaseMod := p.p.PlayMod.getBaseMod()
return BaseMod.Diamond
}
func (p *PlayerBaseData) GetEnergy() int {
BaseMod := p.p.PlayMod.getBaseMod()
return BaseMod.Energy
}
func (p *PlayerBaseData) SetEnergy(Energy int) {
BaseMod := p.p.PlayMod.getBaseMod()
BaseMod.Energy = Energy
}
func (p *PlayerBaseData) GetStar() int {
BaseMod := p.p.PlayMod.getBaseMod()
return BaseMod.Star
}
func (p *PlayerBaseData) BackAsset() *msg.ResPlayerAsset {
BaseMod := p.p.PlayMod.getBaseMod()
return &msg.ResPlayerAsset{
DwUin: BaseMod.Uid,
Diamond: int32(BaseMod.Diamond),
Energy: int32(BaseMod.Energy),
Star: int32(BaseMod.Star),
RecoverTime: int32(BaseMod.RecoverTime),
Level: int32(BaseMod.Level),
Exp: int32(BaseMod.Exp),
Login: int32(BaseMod.LoginTime),
Logout: int32(BaseMod.LogoutTime),
PExp: int32(BaseMod.PExp),
LoginDay: int32(BaseMod.LoginDay),
}
}
func (p *PlayerBaseData) GetSevenLoginAdd() int {
BaseMod := p.p.PlayMod.getBaseMod()
return userCfg.GetSevenloginAdd(BaseMod.GetLevel())
}
func (p *PlayerBaseData) GetLastLoginTime() int {
BaseMod := p.p.PlayMod.getBaseMod()
return int(BaseMod.LoginTime)
}
func (p *PlayerBaseData) GetName() string {
return p.Data.UserName
}
func (p *PlayerBaseData) GetLoginTime() int64 {
BaseMod := p.p.PlayMod.getBaseMod()
return int64(BaseMod.LoginTime)
}
func (p *PlayerBaseData) GetDataByUid(Uid interface{}) bool {
sqlStr := "SELECT * FROM t_player_baseinfo WHERE dwUin = ?"
sqlStruck := db.ResPlayerBaseInfo{}
if err := db.SqlDb.Get(&sqlStruck, sqlStr, Uid); err != nil {
// log.Debug("get data failed, err:%v\n", err)
return false
}
p.Data.Diamond = sqlStruck.Diamond
p.Data.DwUin = sqlStruck.DwUin
p.Data.Energy = sqlStruck.Energy
p.Data.Star = sqlStruck.Star
p.Data.RecoverTime = sqlStruck.RecoverTime
p.Data.Level = sqlStruck.Level
p.Data.Exp = sqlStruck.Exp
p.Data.StartOrderId = sqlStruck.StartOrderId
p.Data.MusicCode = sqlStruck.MusicCode
p.Data.Guild = sqlStruck.Guild
p.Data.PackUnlockCount = sqlStruck.PackUnlockCount
p.Data.LastPlayTime = sqlStruck.LastPlayTime
p.Data.EnergyBuyCount = sqlStruck.EnergyBuyCount
p.Data.LoginTime = sqlStruck.LoginTime
p.Data.UserName = sqlStruck.UserName
p.Data.LogoutTime = sqlStruck.LogoutTime
p.Data.Todayolinetime = sqlStruck.Todayolinetime
p.Data.Rolecreatetime = sqlStruck.Rolecreatetime
p.Data.LastChampGroupID = sqlStruck.LastChampGroupID
p.Data.ChampshipsGroupID = sqlStruck.ChampshipsGroupID
p.Data.NoAd = sqlStruck.NoAd
p.Data.FaceBookId = sqlStruck.FaceBookId
return true
}