项目更新

This commit is contained in:
hahwu 2024-11-25 15:01:25 +08:00
parent a516884a65
commit 891d9f40c1
25 changed files with 3722 additions and 2258 deletions

View File

@ -3,6 +3,7 @@ package GoUtil
import (
"bytes"
"encoding/gob"
"fmt"
"math/rand"
"reflect"
"strconv"
@ -177,3 +178,8 @@ func RandString(n int) string {
}
return string(b)
}
// 生成索要卡牌唯一id
func CreateCardId(From, To, CardId int) string {
return fmt.Sprintf("%d_%d_%d_%d_%s", From, To, CardId, Now(), RandString(3))
}

View File

@ -10,12 +10,27 @@ const (
CFG_CHAMPSHIP_SCORE = "ChampshipScore"
CFG_CHAMPSHIP_RANK = "ChampshipRank"
CFG_CHAMPSHIP_JACKPOT = "ChampshipJackpot"
CFG_CHAMPSHIP_GROUP = "ChampshipGroup"
)
func init() {
gamedata.InitCfg(CFG_CHAMPSHIP_SCORE)
gamedata.InitCfg(CFG_CHAMPSHIP_RANK)
gamedata.InitCfg(CFG_CHAMPSHIP_JACKPOT)
gamedata.InitCfg(CFG_CHAMPSHIP_GROUP)
}
func GetGroupId(N int) int {
data, err := gamedata.GetData(CFG_CHAMPSHIP_GROUP)
if err != nil {
return 0
}
for k, v := range data {
if N >= gamedata.GetIntValue(v, "Min") && N <= gamedata.GetIntValue(v, "Max") {
return GoUtil.Int(k)
}
}
return 0
}
func GetChessScore(ChessLv int) int {
@ -45,3 +60,16 @@ func GetReward(Reward, Score int) (int, []*item.Item) {
}
return Reward, r
}
func GetRankReward(Rank int) []*item.Item {
data, err := gamedata.GetData(CFG_CHAMPSHIP_RANK)
if err != nil {
return nil
}
for _, v := range data {
if Rank >= gamedata.GetIntValue(v, "Min") && Rank <= gamedata.GetIntValue(v, "Max") {
return item.ParseItem(gamedata.GetStringValue(v, "Items"))
}
}
return nil
}

View File

@ -0,0 +1,422 @@
package game
import (
"server/GoUtil"
champshipCfg "server/conf/champship"
"server/game/mod/msg"
"sort"
"time"
)
const (
RANK_PLAYER_ROBOT = 2
)
type ChampshipMgr struct {
*ServerMod
}
type ChampshipData struct {
AutoId int
RobotId int
Rank map[int][]*ChampshipRank // 锦标赛排行榜
Last map[int][]*ChampshipRank // 锦标赛排行榜 备份
Pool map[int]*GroupInfo // 锦标赛未分配玩家
GroupInfo map[int]int // 锦标赛分组信息
Robot map[int]*ChampshipRobot // 机器人
}
type ChampshipRank struct {
Uid int
Score float64
Time int64
Type int
}
type ChampshipRobot struct {
Max float64
Type int
Name string
Avatar int
Face int
Level int
GroupId int
Time int64
Score float64
}
type GroupInfo struct {
Uid int
Score float64
Time int64
N int
H int
}
type CRank struct {
Uid int
Score float64
N int
H int
}
func (c *ChampshipMgr) Init() {
c.key = CHAMPSHIP_MGR_KEY
c.data = &ChampshipData{
Rank: make(map[int][]*ChampshipRank, 0),
Last: make(map[int][]*ChampshipRank, 0),
Pool: make(map[int]*GroupInfo, 0),
Robot: make(map[int]*ChampshipRobot, 0),
}
// 注册处理函数
c.init()
c.RegisterHandler(msg.HANDLE_TYPE_CHAMPSHIP_GROUP, c.group)
c.RegisterHandler(msg.HANDLE_TYPE_CHAMPSHIP_INRANK, c.inRank)
Now := GoUtil.Now()
ZeroTime := GoUtil.ZeroTimestamp()
Remain := max(Now-ZeroTime, 3000)
Remain1 := 1800 - Remain%1800
c.mDispatr.AfterFunc(time.Duration(Remain1), func() {
c.Send(&msg.Msg{
Type: msg.HANDLE_TYPE_CHAMPSHIP_GROUP,
})
})
}
func (c *ChampshipMgr) ZeroUpdate(m *msg.Msg) (interface{}, error) {
c.getData().Last = c.getData().Rank
c.getData().Rank = make(map[int][]*ChampshipRank, 0)
c.update = true
return nil, nil
}
// 分组
func (c *ChampshipMgr) group(m *msg.Msg) (interface{}, error) {
ChampshipData := c.getData()
g := make(map[int][]int, 0)
for k, v := range ChampshipData.Pool {
x := 0
n := champshipCfg.GetGroupId(v.N)
h := champshipCfg.GetGroupId(v.H)
if n < h {
x = min(max(n-1, h-2), 1)
} else {
x = n
}
_, ok := g[x]
if !ok {
g[x] = make([]int, 0)
}
g[x] = append(g[x], k)
}
for i := 11; i > 0; i-- {
if len(g[i]) == 0 {
continue
}
if len(g[i]) < 10 && i > 1 {
g[i-1] = append(g[i-1], g[i]...)
}
ChampshipData.AutoId++
StartId := ChampshipData.AutoId
for j := 0; j < len(g[i]); j++ {
ChampshipData.GroupInfo[g[i][j]] = ChampshipData.AutoId
UserData := ChampshipData.Pool[g[i][j]]
ChampshipData.Rank[ChampshipData.AutoId] = append(ChampshipData.Rank[ChampshipData.AutoId], &ChampshipRank{
Uid: UserData.Uid,
Score: UserData.Score,
Time: UserData.Time,
})
sort.Slice(ChampshipData.Rank[ChampshipData.AutoId], func(i, j int) bool { // 排序 从大到小 数值相等按时间排序
if ChampshipData.Rank[ChampshipData.AutoId][i].Score > ChampshipData.Rank[ChampshipData.AutoId][j].Score {
return true
} else if ChampshipData.Rank[ChampshipData.AutoId][i].Score == ChampshipData.Rank[ChampshipData.AutoId][j].Score {
return ChampshipData.Rank[ChampshipData.AutoId][i].Time < ChampshipData.Rank[ChampshipData.AutoId][j].Time
}
return false
})
if (j+1)/10 == 0 {
ChampshipData.AutoId++
}
}
for j := StartId; j <= ChampshipData.AutoId; j++ {
RobotNum := 30 - len(ChampshipData.Rank[j])
RobotList := CreateRobotList(i, RobotNum, j)
for _, v := range RobotList {
ChampshipData.Robot[ChampshipData.RobotId] = v
ChampshipData.Rank[ChampshipData.AutoId] = append(ChampshipData.Rank[ChampshipData.AutoId], &ChampshipRank{
Uid: ChampshipData.RobotId,
Score: v.Score,
Time: v.Time,
Type: RANK_PLAYER_ROBOT,
})
sort.Slice(ChampshipData.Rank[ChampshipData.AutoId], func(i, j int) bool { // 排序 从大到小 数值相等按时间排序
if ChampshipData.Rank[ChampshipData.AutoId][i].Score > ChampshipData.Rank[ChampshipData.AutoId][j].Score {
return true
} else if ChampshipData.Rank[ChampshipData.AutoId][i].Score == ChampshipData.Rank[ChampshipData.AutoId][j].Score {
return ChampshipData.Rank[ChampshipData.AutoId][i].Time < ChampshipData.Rank[ChampshipData.AutoId][j].Time
}
return false
})
ChampshipData.RobotId++
}
}
}
T := time.Now()
H := T.Hour()
if H != 0 {
c.mDispatr.AfterFunc(time.Duration(1800), func() {
c.Send(&msg.Msg{
Type: msg.HANDLE_TYPE_CHAMPSHIP_GROUP,
})
})
}
return nil, nil
}
func (c *ChampshipMgr) getGroupId(Uid int) int {
ChampshipData := c.getData()
GroupId, ok := ChampshipData.GroupInfo[Uid]
if ok {
return GroupId
}
return 0
}
// 进去榜单
func (c *ChampshipMgr) inRank(m *msg.Msg) (interface{}, error) {
ChampshipData := c.getData()
data := m.Extra.(CRank)
GroupId := c.getGroupId(data.Uid)
if GroupId == 0 {
ChampshipData.Pool[data.Uid] = &GroupInfo{
Uid: data.Uid,
Score: data.Score,
Time: GoUtil.Now(),
N: data.N,
H: data.H,
}
return nil, nil
}
_, ok := ChampshipData.Rank[GroupId]
if !ok {
ChampshipData.Rank[GroupId] = make([]*ChampshipRank, 0)
}
ChampshipData.Rank[GroupId] = append(ChampshipData.Rank[GroupId], &ChampshipRank{
Uid: data.Uid,
Score: data.Score,
Time: GoUtil.Now(),
})
sort.Slice(ChampshipData.Rank[GroupId], func(i, j int) bool { // 排序 从大到小 数值相等按时间排序
if ChampshipData.Rank[GroupId][i].Score > ChampshipData.Rank[GroupId][j].Score {
return true
} else if ChampshipData.Rank[GroupId][i].Score == ChampshipData.Rank[GroupId][j].Score {
return ChampshipData.Rank[GroupId][i].Time < ChampshipData.Rank[GroupId][j].Time
}
return false
})
return nil, nil
}
func (c *ChampshipMgr) getData() *ChampshipData {
return c.data.(*ChampshipData)
}
func CreateRobotList(G, Num, GroupId int) []*ChampshipRobot {
r := make([]*ChampshipRobot, 0)
switch G {
case 1:
r = append(r, CreateRobot(float64(GoUtil.RandNum(12181, 21680)), GroupId))
r = append(r, CreateRobot(float64(GoUtil.RandNum(7531, 12180)), GroupId))
r = append(r, CreateRobot(float64(GoUtil.RandNum(4631, 7530)), GroupId))
r = append(r, CreateRobot(float64(GoUtil.RandNum(2781, 4630)), GroupId))
for i := 0; i <= 6; i++ {
r = append(r, CreateRobot(float64(GoUtil.RandNum(1731, 2780)), GroupId))
}
for i := 0; i <= 5; i++ {
r = append(r, CreateRobot(float64(GoUtil.RandNum(241, 580)), GroupId))
}
for i := 0; i <= Num-15; i++ {
r = append(r, CreateRobot(float64(GoUtil.RandNum(20, 240)), GroupId))
}
case 2:
r = append(r, CreateRobot(float64(GoUtil.RandNum(12181, 21680)), GroupId))
r = append(r, CreateRobot(float64(GoUtil.RandNum(7531, 12180)), GroupId))
r = append(r, CreateRobot(float64(GoUtil.RandNum(4631, 7530)), GroupId))
r = append(r, CreateRobot(float64(GoUtil.RandNum(2781, 4630)), GroupId))
for i := 0; i <= 6; i++ {
r = append(r, CreateRobot(float64(GoUtil.RandNum(1731, 2780)), GroupId))
}
n := Num - 10
x := n / 2
for i := 0; i <= x; i++ {
r = append(r, CreateRobot(float64(GoUtil.RandNum(241, 580)), GroupId))
}
for i := 0; i <= n-x; i++ {
r = append(r, CreateRobot(float64(GoUtil.RandNum(20, 240)), GroupId))
}
case 3:
r = append(r, CreateRobot(float64(GoUtil.RandNum(12181, 21680)), GroupId))
r = append(r, CreateRobot(float64(GoUtil.RandNum(7531, 12180)), GroupId))
r = append(r, CreateRobot(float64(GoUtil.RandNum(4631, 7530)), GroupId))
r = append(r, CreateRobot(float64(GoUtil.RandNum(2781, 4630)), GroupId))
for i := 0; i <= 6; i++ {
r = append(r, CreateRobot(float64(GoUtil.RandNum(1731, 2780)), GroupId))
}
n := Num - 10
x := n / 3
for i := 0; i <= x; i++ {
r = append(r, CreateRobot(float64(GoUtil.RandNum(581, 1730)), GroupId))
}
for i := 0; i <= x; i++ {
r = append(r, CreateRobot(float64(GoUtil.RandNum(241, 580)), GroupId))
}
for i := 0; i <= n-x*2; i++ {
r = append(r, CreateRobot(float64(GoUtil.RandNum(20, 240)), GroupId))
}
case 4:
r = append(r, CreateRobot(float64(GoUtil.RandNum(12181, 21680)), GroupId))
r = append(r, CreateRobot(float64(GoUtil.RandNum(7531, 12180)), GroupId))
r = append(r, CreateRobot(float64(GoUtil.RandNum(4631, 7530)), GroupId))
r = append(r, CreateRobot(float64(GoUtil.RandNum(2781, 4630)), GroupId))
n := Num - 4
x := n / 4
for i := 0; i <= x; i++ {
r = append(r, CreateRobot(float64(GoUtil.RandNum(1731, 2780)), GroupId))
}
for i := 0; i <= x; i++ {
r = append(r, CreateRobot(float64(GoUtil.RandNum(581, 1730)), GroupId))
}
for i := 0; i <= x; i++ {
r = append(r, CreateRobot(float64(GoUtil.RandNum(241, 580)), GroupId))
}
for i := 0; i <= n-x*3; i++ {
r = append(r, CreateRobot(float64(GoUtil.RandNum(20, 240)), GroupId))
}
case 5:
r = append(r, CreateRobot(float64(GoUtil.RandNum(12181, 21680)), GroupId))
r = append(r, CreateRobot(float64(GoUtil.RandNum(7531, 12180)), GroupId))
r = append(r, CreateRobot(float64(GoUtil.RandNum(4631, 7530)), GroupId))
n := Num - 3
x := n / 5
for i := 0; i <= x; i++ {
r = append(r, CreateRobot(float64(GoUtil.RandNum(2781, 4630)), GroupId))
}
for i := 0; i <= x; i++ {
r = append(r, CreateRobot(float64(GoUtil.RandNum(1731, 2780)), GroupId))
}
for i := 0; i <= x; i++ {
r = append(r, CreateRobot(float64(GoUtil.RandNum(581, 1730)), GroupId))
}
for i := 0; i <= x; i++ {
r = append(r, CreateRobot(float64(GoUtil.RandNum(241, 580)), GroupId))
}
for i := 0; i <= n-x*4; i++ {
r = append(r, CreateRobot(float64(GoUtil.RandNum(20, 240)), GroupId))
}
case 6:
r = append(r, CreateRobot(float64(GoUtil.RandNum(12181, 21680)), GroupId))
r = append(r, CreateRobot(float64(GoUtil.RandNum(7531, 12180)), GroupId))
n := Num - 2
x := n / 6
for i := 0; i <= x; i++ {
r = append(r, CreateRobot(float64(GoUtil.RandNum(4631, 7530)), GroupId))
}
for i := 0; i <= x; i++ {
r = append(r, CreateRobot(float64(GoUtil.RandNum(2781, 4630)), GroupId))
}
for i := 0; i <= x; i++ {
r = append(r, CreateRobot(float64(GoUtil.RandNum(1731, 2780)), GroupId))
}
for i := 0; i <= x; i++ {
r = append(r, CreateRobot(float64(GoUtil.RandNum(581, 1730)), GroupId))
}
for i := 0; i <= x; i++ {
r = append(r, CreateRobot(float64(GoUtil.RandNum(241, 580)), GroupId))
}
for i := 0; i <= Num-len(r); i++ {
r = append(r, CreateRobot(float64(GoUtil.RandNum(20, 240)), GroupId))
}
case 7:
r = append(r, CreateRobot(float64(GoUtil.RandNum(12181, 21680)), GroupId))
n := Num - 1
x := n / 7
for i := 0; i <= x; i++ {
r = append(r, CreateRobot(float64(GoUtil.RandNum(7531, 12180)), GroupId))
}
for i := 0; i <= x; i++ {
r = append(r, CreateRobot(float64(GoUtil.RandNum(4631, 7530)), GroupId))
}
for i := 0; i <= x; i++ {
r = append(r, CreateRobot(float64(GoUtil.RandNum(2781, 4630)), GroupId))
}
for i := 0; i <= x; i++ {
r = append(r, CreateRobot(float64(GoUtil.RandNum(1731, 2780)), GroupId))
}
for i := 0; i <= x; i++ {
r = append(r, CreateRobot(float64(GoUtil.RandNum(581, 1730)), GroupId))
}
for i := 0; i <= x; i++ {
r = append(r, CreateRobot(float64(GoUtil.RandNum(241, 580)), GroupId))
}
for i := 0; i <= Num-len(r); i++ {
r = append(r, CreateRobot(float64(GoUtil.RandNum(20, 240)), GroupId))
}
case 8, 9, 10, 11:
M10 := GoUtil.RandMap(map[int]int{0: 98, 1: 2})
if M10 == 1 {
r = append(r, CreateRobot(float64(GoUtil.RandNum(35131, 64980)), GroupId))
}
x := Num / 8
for i := 0; i <= x; i++ {
r = append(r, CreateRobot(float64(GoUtil.RandNum(12181, 21680)), GroupId))
}
for i := 0; i <= x; i++ {
r = append(r, CreateRobot(float64(GoUtil.RandNum(7531, 12180)), GroupId))
}
for i := 0; i <= x; i++ {
r = append(r, CreateRobot(float64(GoUtil.RandNum(4631, 7530)), GroupId))
}
for i := 0; i <= x; i++ {
r = append(r, CreateRobot(float64(GoUtil.RandNum(2781, 4630)), GroupId))
}
for i := 0; i <= x; i++ {
r = append(r, CreateRobot(float64(GoUtil.RandNum(1731, 2780)), GroupId))
}
for i := 0; i <= x; i++ {
r = append(r, CreateRobot(float64(GoUtil.RandNum(581, 1730)), GroupId))
}
for i := 0; i <= x; i++ {
r = append(r, CreateRobot(float64(GoUtil.RandNum(241, 580)), GroupId))
}
for i := 0; i <= Num-len(r); i++ {
r = append(r, CreateRobot(float64(GoUtil.RandNum(20, 240)), GroupId))
}
}
return r
}
func CreateRobot(M float64, GroupId int) *ChampshipRobot {
Type := GoUtil.RandMap(map[int]int{1: 25, 2: 50, 3: 25})
Score := M / 10
if Type == 2 {
Score = M / 10 * 0.66
}
return &ChampshipRobot{
Max: M,
Type: Type,
Name: "Lily",
Avatar: 1,
Face: 1,
Level: 1,
GroupId: GroupId,
Time: GoUtil.Now(),
Score: Score,
}
}

View File

@ -27,6 +27,12 @@ func (f *FriendMgr) Init() {
}
// 注册处理函数
f.init()
if f.data.(*FirendData).List == nil {
f.data.(*FirendData).List = make(map[int][]*msg.Msg)
}
if f.data.(*FirendData).ClusterMsg == nil {
f.data.(*FirendData).ClusterMsg = make(map[int][]*msg.Msg)
}
f.RegisterHandler(msg.HANDLE_TYPE_APPLY, f.sendToPlayer)
f.RegisterHandler(msg.HADNLE_TYPE_AGREE, f.sendToPlayer)
f.RegisterHandler(msg.HANDLE_TYPE_DEL, f.sendToPlayer)
@ -44,6 +50,7 @@ func (f *FriendMgr) Init() {
f.RegisterHandler(msg.HANDLE_TYPE_ARGREE_EX_CARD, f.sendToPlayer)
f.RegisterHandler(msg.HANDLE_TYPE_REFUSE_SELECT_CARD, f.sendToPlayer)
f.RegisterHandler(msg.HANDLE_TYPE_REFUSE_EX_CARD, f.sendToPlayer)
f.RegisterHandler(msg.HANDLE_TYPE_SEND_CARD, f.sendToPlayer)
}

View File

@ -365,7 +365,7 @@ func (ad *GameLogic) GetSimplePlayerByUid(Id int) *PlayerSimpleData {
p := new(Player)
p.GetSimpleData(Id, player)
value, _ := json.Marshal(player)
db.RedisSetKey(Idstr, string(value), 0)
db.RedisSetKey(Idstr, string(value), 300)
} else {
err := json.Unmarshal([]byte(Value), player)
if err != nil {
@ -393,11 +393,14 @@ func (ad *GameLogic) GetResSimplePlayerByUid(Id int) *msg.ResPlayerSimple {
}
return &msg.ResPlayerSimple{
Uid: int32(player.Uid),
Name: player.Name,
Level: int32(player.Level),
Avatar: int32(player.Avatar),
Face: int32(player.Face),
Uid: int32(player.Uid),
Name: player.Name,
Level: int32(player.Level),
Avatar: int32(player.Avatar),
Face: int32(player.Face),
Decorate: int32(player.Decorate),
Login: int32(player.Login),
Loginout: int32(player.Loginout),
}
}
@ -907,6 +910,10 @@ func (ad *GameLogic) RegisterNetWorkFunc() {
RegisterMsgProcessFunc("ReqUnlockDecorate", ReqUnlockDecorate)
RegisterMsgProcessFunc("ReqSaveSelectDecorate", ReqSaveSelectDecorate)
// 玩家
RegisterMsgProcessFunc("ReqUserInfo", ReqUserInfo)
RegisterMsgProcessFunc("ReqSetName", ReqSetName) // 设置名字
// 棋盘
RegisterMsgProcessFunc("ReqSetEnergyMul", RegSetEneryFunc) //设置能量倍数
RegisterMsgProcessFunc("ReqChessEx", ReqChessEx) // 转换棋子
@ -964,6 +971,12 @@ func (ad *GameLogic) RegisterNetWorkFunc() {
RegisterMsgProcessFunc("ReqLimitSenceReward", ReqLimitSenceReward)
// 好友
RegisterMsgProcessFunc("ReqFriendList", ReqFriendList) // 请求好友列表
RegisterMsgProcessFunc("ReqFriendApply", ReqFriendApply) // 请求申请好友列表
RegisterMsgProcessFunc("ReqFriendCardMsg", ReqFriendCardMsg) // 请求好友卡牌申请列表
RegisterMsgProcessFunc("ReqFriendTimeLine", ReqFriendTimeLine) // 请求好友时间线
RegisterMsgProcessFunc("ReqFriendRecommend", ReqFriendRecommend) // 获取推荐好友
RegisterMsgProcessFunc("ReqSearchPlayer", ReqSearchPlayer) // 搜索好友
RegisterMsgProcessFunc("ReqApplyFriend", ReqApplyFriend) // 申请好友
RegisterMsgProcessFunc("ReqAgreeFriend", ReqAgreeFriend) // 同意申请
@ -992,7 +1005,8 @@ func (ad *GameLogic) RegisterNetWorkFunc() {
RegisterMsgProcessFunc("ReqPiggyBankReward", ReqPiggyBankReward) // 小猪存钱罐领取奖励
// 锦标赛
RegisterMsgProcessFunc("ReqChampshipReward", ReqChampshipReward) // 领取锦标赛奖励
RegisterMsgProcessFunc("ReqChampshipReward", ReqChampshipReward) // 领取锦标赛奖励
RegisterMsgProcessFunc("ReqChampshipRankReward", ReqChampshipRankReward) // 领取锦标赛排行榜奖励
}

View File

@ -58,9 +58,8 @@ func ReqGmCommand(args []interface{}) error {
CardMod.ReqTimes = 10
FriendMod := player.PlayMod.getFriendMod()
FriendMod.ApplyCard = make(map[int]*card.CardInfo)
FriendMod.ExchangeCard = make(map[int]*card.CardInfo)
FriendMod.SelectCard = make(map[int]*card.CardInfo)
FriendMod.Card = make(map[string]*card.CardInfo)
}
return nil
}

View File

@ -7,4 +7,6 @@ type PlayerSimpleData struct {
Level int
Face int
Decorate int
Login int64
Loginout int64
}

View File

@ -266,7 +266,11 @@ func (p *Player) InitPlayer(UserName string) error {
log.Debug("load PlayerModData failed:", UserName)
return errors.New("load PlayerModData failed")
}
IsUpdate := modData.InitMod()
IsUpdate, err := modData.InitMod()
if err != nil {
log.Debug("InitMod failed:", err)
return err
}
p.PlayMod.mod_list = modData.ModList
p.PlayMod.is_update = IsUpdate
@ -292,7 +296,7 @@ func (p *Player) InitPlayer(UserName string) error {
}()
p.McronSave = cron.New()
_, err := p.McronSave.AddFunc("@every 1m", p.AutoSaveData)
_, err = p.McronSave.AddFunc("@every 1m", p.AutoSaveData)
if err != nil {
log.Debug("AddFunc failed:", err)
}
@ -523,6 +527,9 @@ func (p *Player) HandleItem(itemList []*item.Item, Label string) error {
}
p.PushClientRes(ChessMod.BackData())
case item.ITEM_TYPE_LIMIED_TIME_EVENT: // 限时事件
if p.GetPlayerBaseMod().GetLevel() < 6 { // 等级小于6级不触发
continue
}
EffectList := itemCfg.GetItemEffectList(v.Id)
LimitedTimeEventMod := p.PlayMod.getLimitedTimeEventMod()
if len(EffectList) < 2 {
@ -559,6 +566,15 @@ func (p *Player) HandleItem(itemList []*item.Item, Label string) error {
Lable: Label,
})
}
NotifyCard := &msg.ResNotifyCard{}
NotifyCard.Card = make(map[int32]int32)
for _, v := range ResCard {
for _, c := range v.Card {
NotifyCard.Card[c]++
}
}
p.PushClientRes(NotifyCard)
if is_update {
p.PushClientRes(p.GetPlayerBaseMod().BackAsset())
@ -576,8 +592,6 @@ func (p *Player) LoginBackData() {
p.PushClientRes(p.PlayMod.mod_list.Card.BackData())
p.PushClientRes(p.PlayMod.mod_list.Decorate.BackData())
p.PushClientRes(p.PlayMod.mod_list.DailyTask.BackData())
p.PushClientRes(p.PlayMod.mod_list.Face.BackData())
p.PushClientRes(p.PlayMod.mod_list.Avatar.BackData())
p.PushClientRes(p.PlayMod.mod_list.SevenLogin.BackData())
p.PushClientRes(p.PlayMod.mod_list.Activity.BackData())
p.PushClientRes(p.PlayMod.mod_list.LimitedTimeEvent.ProgressBackData())
@ -586,8 +600,9 @@ func (p *Player) LoginBackData() {
p.PushClientRes(p.PlayMod.mod_list.PiggyBank.BackData())
p.PushClientRes(p.GetPlayerBaseMod().BackAsset())
p.PushClientRes(p.GetPlayerBaseMod().BackKv())
p.PushClientRes(p.PlayMod.mod_list.Champship.BackData())
MyRank := G_GameLogicPtr.RankMgr.getMyRank(RANK_TYPE_CHAMPSHIP, int(p.M_DwUin))
p.PushClientRes(p.PlayMod.mod_list.Champship.BackData(MyRank))
BackUserInfo(p)
}
// 获取玩家简单数据
@ -626,7 +641,9 @@ func (p *Player) GetSimpleData(Uid int, simple *PlayerSimpleData) error {
simple.Avatar = p.PlayMod.getAvatarMod().SetId
simple.Face = p.PlayMod.getFaceMod().SetId
simple.Level = p.GetPlayerBaseMod().GetLevel()
simple.Decorate = p.PlayMod.getDecorateMod().GetAreaId()*1000 + p.PlayMod.getDecorateMod().GetProgress()
simple.Decorate = p.PlayMod.getDecorateMod().DecorateNum
simple.Login = int64(Base.Data.LoginTime)
simple.Loginout = int64(Base.Data.LogoutTime)
return nil
}
@ -658,7 +675,7 @@ func (p *Player) HandleInChampshipRank() {
Extra: RankMsg{
Uid: int(p.M_DwUin),
Score: Score,
RankType: RANK_TYPE_USER,
RankType: RANK_TYPE_CHAMPSHIP,
},
}
G_GameLogicPtr.RankMgrSend(m)

View File

@ -458,11 +458,11 @@ func (p *PlayerLevelUpPackData) SaveDataFromDB(Key interface{}) bool {
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")
}
// if p.IsHaveDataDb {
// db.FormatAllMemUpdateDb(&sqlStruck, "t_player_lv_Pack", "dwUin")
// } else {
// db.FormatAllMemInsertDb(&sqlStruck, "t_player_lv_Pack")
// }
p.IsHaveDataDb = true
return true
}
@ -539,11 +539,11 @@ func (p *PlayerGrowthFundData) SaveDataFromDB(Key interface{}) bool {
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")
}
// if p.IsHaveDataDb {
// db.FormatAllMemUpdateDb(&sqlStruck, "t_player_growth_fund", "dwUin")
// } else {
// db.FormatAllMemInsertDb(&sqlStruck, "t_player_growth_fund")
// }
p.IsHaveDataDb = true
return true
}
@ -1315,11 +1315,11 @@ func (p *PlayerPetData) ClearData() bool {
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")
}
// 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
}

View File

@ -180,11 +180,11 @@ func (p *PlayerFriendData) SaveDataFromDB(Key interface{}) bool {
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")
}
// if p.IsHaveDataDb {
// db.FormatAllMemUpdateDb(&sqlStruck, "t_player_Friend_Data", "dwUin")
// } else {
// db.FormatAllMemInsertDb(&sqlStruck, "t_player_Friend_Data")
// }
p.IsHaveDataDb = true
return true
}

View File

@ -1,6 +1,7 @@
package game
import (
"encoding/json"
"fmt"
"server/GoUtil"
"server/MergeConst"
@ -13,6 +14,7 @@ import (
proto "server/msg"
"server/pkg/github.com/name5566/leaf/log"
"sort"
"strconv"
)
// 处理玩家异步请求
@ -42,11 +44,25 @@ func handle(p *Player, m *msg.Msg) error {
switch m.Type {
case msg.HANDLE_TYPE_DEL, msg.HANDLE_TYPE_APPLY, msg.HADNLE_TYPE_AGREE, msg.HANDLE_TYPE_REQ_CARD:
return HandleFriendMsg(p, m)
case msg.HANDLE_TYPE_SEND_CARD: // B收到A赠送的卡牌
CardInfo := m.Extra.(*card.CardInfo)
FriendMod := p.PlayMod.getFriendMod()
FriendMod.SetCardInfo(CardInfo)
p.PushClientRes(
&proto.NotifyFriendCard{
Info: GetCardInfoMsg(CardInfo),
},
)
p.PlayMod.save()
case msg.HANDLE_TYPE_AGREE_CARD: // A收到B同意卡牌
CardInfo := m.Extra.(*card.CardInfo)
CardMod := p.PlayMod.getCardMod()
CardMod.AddCard(CardInfo.CardId)
OtherUid, err := CardMod.DelRequestCard(CardInfo.BUid)
FriendMod := p.PlayMod.getFriendMod()
FriendMod.SetCardInfo(CardInfo)
if err != nil { // 同意失败,请求已失效
msg := &msg.Msg{Type: msg.HANDLE_TYPE_AGREE_CARD_FAIL, From: CardInfo.AUid, End: CardInfo.EndTime}
FriendMgrSend(msg)
@ -57,6 +73,11 @@ func handle(p *Player, m *msg.Msg) error {
FriendMgrSend(msg)
}
p.PlayMod.save()
p.PushClientRes(
&proto.NotifyFriendCard{
Info: GetCardInfoMsg(CardInfo),
},
)
p.PushClientRes(CardMod.BackData())
case msg.HANDLE_TYPE_REG_CARD_REFUSE: // A收到B拒绝索要卡牌
CardInfo := m.Extra.(*card.CardInfo)
@ -67,29 +88,35 @@ func handle(p *Player, m *msg.Msg) error {
case msg.HANDLE_TYPE_EX_CARD: // B收到A置换卡牌
FriendMod := p.PlayMod.getFriendMod()
CardInfo := m.Extra.(*card.CardInfo)
if CardInfo.Type == card.TYPE_GIVE { // A卡牌白送
CardMod := p.PlayMod.getCardMod()
CardMod.AddCard(CardInfo.CardId)
p.PushClientRes(CardMod.BackData())
} else {
FriendMod.SetCardExchange(CardInfo)
}
FriendMod.SetCardInfo(CardInfo)
p.PlayMod.save()
p.PushClientRes(
&proto.NotifyFriendCard{
Info: GetCardInfoMsg(CardInfo),
},
)
FriendCardBackData(p)
case msg.HANDLE_TYPE_SELECT_EX_CARD: // A收到B选择卡牌进行置换
FriendMod := p.PlayMod.getFriendMod()
CardInfo := m.Extra.(*card.CardInfo)
FriendMod.CardSelectExchange(CardInfo)
FriendMod.SetCardInfo(CardInfo)
p.PlayMod.save()
p.PushClientRes(
&proto.NotifyFriendCard{
Info: GetCardInfoMsg(CardInfo),
},
)
FriendCardBackData(p)
case msg.HANDLE_TYPE_ARGREE_EX_CARD: // B收到A同意置换卡牌
CardMod := p.PlayMod.getCardMod()
CardInfo := m.Extra.(*card.CardInfo)
CardMod.AddCard(CardInfo.CardId)
FriendMod := p.PlayMod.getFriendMod()
FriendMod.DelCardExchange(CardInfo.AUid)
FriendMod.SetCardInfo(CardInfo)
p.PushClientRes(
&proto.NotifyFriendCard{
Info: GetCardInfoMsg(CardInfo),
},
)
p.PlayMod.save()
p.PushClientRes(CardMod.BackData())
case msg.HANDLE_TYPE_REFUSE_SELECT_CARD: // A收到B拒绝置换卡牌
CardMod := p.PlayMod.getCardMod()
CardInfo := m.Extra.(*card.CardInfo)
@ -103,7 +130,7 @@ func handle(p *Player, m *msg.Msg) error {
CardInfo := m.Extra.(*card.CardInfo)
CardMod.AddCard(CardInfo.ExId)
FriendMod := p.PlayMod.getFriendMod()
FriendMod.DelCardExchange(CardInfo.AUid)
FriendMod.DelCardInfo(CardInfo.Id)
p.PlayMod.save()
p.PushClientRes(CardMod.BackData())
case msg.HANDLE_TYPE_MAIL: // 邮件操作
@ -142,34 +169,35 @@ func HandleFriendMsg(p *Player, m *msg.Msg) error {
FriendMod.HandleMsg(m)
PlayerSimpleData := G_GameLogicPtr.GetResSimplePlayerByUid(m.From)
switch m.Type {
case msg.HANDLE_TYPE_RANK_NOTIFY:
p.PushClientRes(p.PlayMod.getChampshipMod().BackData())
case msg.HANDLE_TYPE_APPLY:
case msg.HANDLE_TYPE_RANK_NOTIFY: // 排行榜更新
MyRank := G_GameLogicPtr.RankMgr.getMyRank(RANK_TYPE_CHAMPSHIP, int(p.M_DwUin))
p.PushClientRes(p.PlayMod.getChampshipMod().BackData(MyRank))
case msg.HANDLE_TYPE_APPLY: // 好友申请
FriendMod.AddFriendApply(m.From)
p.PushClientRes(&proto.ResFriendApplyNotify{
Player: PlayerSimpleData,
Type: friend.FRIEND_NOTIFY_APPLY,
})
case msg.HADNLE_TYPE_AGREE:
case msg.HADNLE_TYPE_AGREE: // 同意好友申请
FriendMod.AgreeApply(m.From)
p.PushClientRes(&proto.ResFriendApplyNotify{
Player: PlayerSimpleData,
Type: friend.FRIEND_NOTIFY_APPLY,
})
case msg.HANDLE_TYPE_DEL:
case msg.HANDLE_TYPE_DEL: // 删除好友
FriendMod.DelFriend(m.From)
p.PushClientRes(&proto.ResFriendApplyNotify{
Player: PlayerSimpleData,
Type: friend.FRIEND_NOTIFY_APPLY,
})
case msg.HANDLE_TYPE_REFUSE:
case msg.HANDLE_TYPE_REFUSE: // 拒绝好友申请
p.PushClientRes(&proto.ResFriendApplyNotify{
Player: PlayerSimpleData,
Type: friend.FRIEND_NOTIFY_REFUSE,
})
case msg.HANDLE_TYPE_REQ_CARD:
case msg.HANDLE_TYPE_REQ_CARD: // 卡牌申请
CardInfo := m.Extra.(*card.CardInfo)
FriendMod.CardGiveApply(CardInfo)
FriendMod.SetCardInfo(CardInfo)
}
return nil
}
@ -258,29 +286,9 @@ func FriendLogBackData(p *Player) {
func FriendCardBackData(p *Player) {
FriendMod := p.PlayMod.getFriendMod()
var msgList []*proto.ResFriendCard
for _, v := range FriendMod.ApplyCard {
ps := G_GameLogicPtr.GetSimplePlayerByUid(v.BUid)
msgList = append(msgList, &proto.ResFriendCard{
Uid: int32(v.AUid),
Name: ps.Name,
Face: int32(ps.Face),
Avatar: int32(ps.Avatar),
Level: int32(ps.Level),
CardId: int32(v.CardId),
Time: int32(v.EndTime),
})
}
for _, v := range FriendMod.ExchangeCard {
ps := G_GameLogicPtr.GetSimplePlayerByUid(v.BUid)
msgList = append(msgList, &proto.ResFriendCard{
Uid: int32(v.AUid),
Name: ps.Name,
Face: int32(ps.Face),
Avatar: int32(ps.Avatar),
Level: int32(ps.Level),
CardId: int32(v.CardId),
Time: int32(v.EndTime),
})
for _, v := range FriendMod.Card {
m := GetCardInfoMsg(v)
msgList = append(msgList, m)
}
p.PushClientRes(&proto.ResFriendCardMsg{
MsgList: msgList,
@ -324,14 +332,73 @@ func GoogleVerify(p *Player, OrderSn, PayOrderSn string, Status int) (*db.SqlCha
return Order, nil
}
// func PlayerFriendRecommend(p *Player) {
// FriendMod := p.PlayMod.getFriendMod()
// n := 0
// if len(FriendMod.FriendList) < 10 {
// n = 3
// } else {
// n = int(3 - float64(len(FriendMod.FriendList))*0.1)
// }
func BackUserInfo(p *Player) {
BaseMod := p.PlayMod.getBaseMod()
FaceMod := p.PlayMod.getFaceMod()
AvatarMod := p.PlayMod.getAvatarMod()
DecorateMod := p.PlayMod.getDecorateMod()
PlayerBaseMod := p.GetPlayerBaseMod()
p.PushClientRes(&proto.UserInfo{
Uid: int32(p.M_DwUin),
Nickname: BaseMod.NickName,
Avatar: int32(AvatarMod.SetId),
Face: int32(FaceMod.SetId),
DecorateCnt: int32(DecorateMod.DecorateNum),
AvatarList: AvatarMod.BackData(),
FaceList: FaceMod.BackData(),
Login: PlayerBaseMod.Data.LoginTime,
})
}
// UserList := G_GameLogicPtr.RankMgr.getRank(RANK_TYPE_USER)
// }
func UpdateUserInfo(p *Player) {
simple := &PlayerSimpleData{}
Base := p.GetPlayerBaseMod()
simple.Name = p.GetPlayerBaseMod().GetName()
simple.Avatar = p.PlayMod.getAvatarMod().SetId
simple.Face = p.PlayMod.getFaceMod().SetId
simple.Level = p.GetPlayerBaseMod().GetLevel()
simple.Decorate = p.PlayMod.getDecorateMod().DecorateNum
simple.Login = int64(Base.Data.LoginTime)
simple.Loginout = int64(Base.Data.LogoutTime)
value, _ := json.Marshal(simple)
IdStr := strconv.Itoa(int(p.M_DwUin))
db.RedisSetKey(IdStr, string(value), 0)
}
func GetCardInfoMsg(CardInfo *card.CardInfo) *proto.ResFriendCard {
Uid := 0
if CardInfo.Type == card.TYPE_CARD_SEND {
Uid = CardInfo.BUid
}
if CardInfo.Type == card.TYPE_CARD_GIVE {
if CardInfo.Status == card.STATUS_CARD_GIVE_1 {
Uid = CardInfo.BUid
} else {
Uid = CardInfo.AUid
}
}
if CardInfo.Type == card.TYPE_CARD_EX {
if CardInfo.Status == card.STATUS_CARD_EX_2 {
Uid = CardInfo.AUid
} else {
Uid = CardInfo.BUid
}
}
ps := G_GameLogicPtr.GetSimplePlayerByUid(Uid)
return &proto.ResFriendCard{
Uid: int32(Uid),
Name: ps.Name,
Face: int32(ps.Face),
Avatar: int32(ps.Avatar),
Level: int32(ps.Level),
CardId: int32(CardInfo.CardId),
ExCardId: int32(CardInfo.ExId),
Time: int32(CardInfo.StartTime),
Type: int32(CardInfo.Type),
Status: int32(CardInfo.Status),
Id: CardInfo.Id,
}
}

View File

@ -94,14 +94,15 @@ func (p *PlayerModData) Reconnect(b bool) []byte {
return []byte{}
}
func (p *PlayerModData) InitMod() bool {
func (p *PlayerModData) InitMod() (bool, error) {
playerModList := PlayerModList{}
buf := bytes.NewBuffer(p.Data.ModData)
decoder := gob.NewDecoder(buf)
err := decoder.Decode(&playerModList)
// err := json.Unmarshal([]byte(p.Data.ModData), &playerModList)
if err != nil {
fmt.Printf("playmod get data failed, err:%v\n", err)
log.Debug("playmod get data failed, err:%v\n", err)
return false, fmt.Errorf("playmod get data failed, err:%v\n", err)
}
p.ModList = playerModList
is_update := false
@ -139,7 +140,7 @@ func (p *PlayerModData) InitMod() bool {
p.ModList.Charge.InitData()
p.ModList.Endless.InitData()
return is_update
return is_update, nil
}
type PlayerMod struct {

View File

@ -854,11 +854,11 @@ func (p *PlayerAdPackData) SaveDataFromDB(Key interface{}) bool {
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")
}
// 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
}

View File

@ -12,8 +12,9 @@ type RankMgr struct {
}
type RankData struct {
List map[int][]*Rank // 玩家排行榜
BackData map[int][]*Rank // 玩家排行榜 备份
List map[int][]*Rank // 玩家排行榜
Champship map[int][]*Rank // 锦标赛排行榜
BackData map[int][]*Rank // 玩家排行榜 备份
}
const (
@ -68,6 +69,35 @@ func (r *RankMgr) getRank(RankType int) []*Rank {
return []*Rank{}
}
func (r *RankMgr) getLastChampshipRank() []*Rank {
if v, ok := r.getData().BackData[RANK_TYPE_CHAMPSHIP]; ok {
return v
}
return []*Rank{}
}
func (r *RankMgr) getMyRank(Uid, RankType int) int {
if d, ok := r.getData().List[RankType]; ok {
for k, v := range d {
if v.Uid == Uid {
return k + 1
}
}
}
return 0
}
func (r *RankMgr) getLastChampship(Uid int) int {
if d, ok := r.getData().List[RANK_TYPE_CHAMPSHIP]; ok {
for k, v := range d {
if v.Uid == Uid {
return k + 1
}
}
}
return 0
}
// 设置榜单数据
func (r *RankMgr) setRank(RankType int, data []*Rank) {
r.getData().List[RankType] = data

View File

@ -2026,12 +2026,12 @@ func ReqRewardOrder(args []interface{}) error {
// 限时事件增加进度
LimitedTimeEventMod.AddProgress(player.GetPlayerBaseMod().GetLevel())
MyRank := G_GameLogicPtr.RankMgr.getMyRank(RANK_TYPE_CHAMPSHIP, int(player.M_DwUin))
player.HandleInChampshipRank()
player.PlayMod.save()
player.PushClientRes(PiggyBankMod.BackData())
player.PushClientRes(OrderMod.BackData())
player.PushClientRes(ChampshipMod.BackData())
player.PushClientRes(ChampshipMod.BackData(MyRank))
player.PushClientRes(LimitedTimeEventMod.BackData())
return nil
}
@ -2062,10 +2062,6 @@ func ReqDecorate(args []interface{}) error {
})
return err
}
// if limitedTimeEventMod.CheckExist(limitedTimeEvent.EVENT_TYPE_SENCE_DASH) { // 场景冲刺奖励
// _, Items := limitedTimeEventMod.GetSceneDashReward(DecorateMod.GetAreaId(), DecorateMod.GetProgress())
// AddItem = item.Merge(AddItem, Items)
// }
err = player.HandleItem(AddItem, "DecorateAdd") // 增加道具
if err != nil {
player.SendErrClienRes(&msg.ResDecorate{
@ -2102,6 +2098,8 @@ func ReqDecorate(args []interface{}) error {
Code: msg.RES_CODE_SUCCESS,
})
player.HandleInUserRank()
BackUserInfo(player)
UpdateUserInfo(player)
return nil
}
@ -2500,10 +2498,11 @@ func ReqSetAvatar(args []interface{}) error {
return err
}
player.PlayMod.save()
player.PushClientRes(avatarMod.BackData())
player.PushClientRes(&msg.ResSetAvatar{
Code: msg.RES_CODE_SUCCESS,
})
BackUserInfo(player)
UpdateUserInfo(player)
return nil
}
@ -2522,10 +2521,11 @@ func ReqSetFace(args []interface{}) error {
return err
}
player.PlayMod.save()
player.PushClientRes(FaceMod.BackData())
player.PushClientRes(&msg.ResSetFace{
Code: msg.RES_CODE_SUCCESS,
})
BackUserInfo(player)
UpdateUserInfo(player)
return nil
}
@ -2826,7 +2826,6 @@ func ReqCardGive(args []interface{}) error {
CardMod := player.PlayMod.getCardMod()
EndTime := GoUtil.Now() + 86400
Id := CardMod.CreateRequestCardId(int(player.M_DwUin), int(req.CardId), EndTime)
FriendMod := player.PlayMod.getFriendMod()
err := CardMod.RequestCard()
@ -2853,6 +2852,7 @@ func ReqCardGive(args []interface{}) error {
})
return fmt.Errorf("card id empty")
}
Id := GoUtil.CreateCardId(int(player.M_DwUin), 0, int(req.CardId))
for _, v := range req.Uid {
Uid := int(v)
if !FriendMod.CheckFriend(Uid) {
@ -2863,12 +2863,14 @@ func ReqCardGive(args []interface{}) error {
return fmt.Errorf("not friend")
}
CardInfo := &card.CardInfo{
Id: Id,
AUid: int(player.M_DwUin),
BUid: Uid,
CardId: CardId,
EndTime: EndTime,
Type: card.TYPE_REQ,
Id: Id,
AUid: int(player.M_DwUin),
BUid: Uid,
CardId: CardId,
StartTime: GoUtil.Now(),
EndTime: EndTime,
Type: card.TYPE_CARD_GIVE,
Status: card.STATUS_CARD_GIVE_1,
}
err = CardMod.AddRequestCard(CardInfo) // 添加请求卡牌
if err != nil {
@ -2888,6 +2890,7 @@ func ReqCardGive(args []interface{}) error {
}
FriendMgrSend(m)
}
player.PushClientRes(&msg.ResCardGive{
Code: msg.RES_CODE_SUCCESS,
})
@ -2902,7 +2905,7 @@ func ReqAgreeCardGive(args []interface{}) error {
req := &msg.ReqAgreeCardGive{}
proto.Unmarshal(buf, req)
FriendMod := player.PlayMod.getFriendMod()
CardInfo := FriendMod.GetCardGiveId(int(req.Uid))
CardInfo := FriendMod.GetCardInfo(req.Id)
if CardInfo == nil {
player.SendErrClienRes(&msg.ResAgreeCardGive{
Code: msg.RES_CODE_FAIL,
@ -2919,6 +2922,8 @@ func ReqAgreeCardGive(args []interface{}) error {
})
return fmt.Errorf("card not exist")
}
CardInfo.Status = card.STATUS_CARD_GIVE_2
CardInfo.EndTime = 0
m := &MsqMod.Msg{
Type: MsqMod.HANDLE_TYPE_AGREE_CARD,
From: int(player.M_DwUin),
@ -2927,6 +2932,9 @@ func ReqAgreeCardGive(args []interface{}) error {
Extra: CardInfo,
}
FriendMgrSend(m)
player.PushClientRes(&msg.ResNotifyCard{
Card: map[int32]int32{int32(CardInfo.CardId): -1},
})
player.PushClientRes(CardMod.BackData())
player.PushClientRes(&msg.ResAgreeCardGive{
Code: msg.RES_CODE_SUCCESS,
@ -2941,7 +2949,7 @@ func ReqRefuseCardGive(args []interface{}) error {
req := &msg.ReqRefuseCardGive{}
proto.Unmarshal(buf, req)
FriendMod := player.PlayMod.getFriendMod()
CardInfo := FriendMod.RefuseCardGive(int(req.Uid))
CardInfo := FriendMod.GetCardInfo(req.Id)
if CardInfo == nil {
player.SendErrClienRes(&msg.ResRefuseCardGive{
Code: msg.RES_CODE_FAIL,
@ -2949,6 +2957,7 @@ func ReqRefuseCardGive(args []interface{}) error {
})
return fmt.Errorf("card apply not exist")
}
FriendMod.DelCardInfo(req.Id)
player.PlayMod.save()
player.PushClientRes(&msg.ResRefuseCardGive{
Code: msg.RES_CODE_SUCCESS,
@ -2964,6 +2973,42 @@ func ReqRefuseCardGive(args []interface{}) error {
return nil
}
// 赠送卡牌
func ReqCardSend(args []interface{}) error {
_, player, buf := ParseArgs(args)
req := &msg.ReqCardExchange{}
proto.Unmarshal(buf, req)
CardMod := player.PlayMod.getCardMod()
CardId := int(req.CardId)
CardInfo, err := CardMod.SendCard(int(player.M_DwUin), int(req.Uid), CardId)
if err != nil {
player.SendErrClienRes(&msg.ResCardExchange{
Code: msg.RES_CODE_FAIL,
Msg: err.Error(),
})
return err
}
m := &MsqMod.Msg{
Type: MsqMod.HANDLE_TYPE_SEND_CARD,
From: int(player.M_DwUin),
To: int(req.Uid),
SendT: GoUtil.Now(),
End: GoUtil.Now() + 86400,
Extra: CardInfo,
}
setRedisLock(CardInfo.Id, "", time.Second*86400)
player.PushClientRes(CardMod.BackData())
player.PushClientRes(&msg.ResCardExchange{
Code: msg.RES_CODE_SUCCESS,
})
player.PushClientRes(&msg.ResNotifyCard{
Card: map[int32]int32{int32(CardInfo.CardId): -1},
})
player.PlayMod.save()
FriendMgrSend(m)
return nil
}
// 卡牌交换
func ReqCardExchange(args []interface{}) error {
_, player, buf := ParseArgs(args)
@ -2971,7 +3016,7 @@ func ReqCardExchange(args []interface{}) error {
proto.Unmarshal(buf, req)
CardMod := player.PlayMod.getCardMod()
CardId := int(req.CardId)
CardInfo, err := CardMod.ExchangeCard(int(player.M_DwUin), int(req.Uid), CardId, int(req.Type))
CardInfo, err := CardMod.ExchangeCard(int(player.M_DwUin), int(req.Uid), CardId)
if err != nil {
player.SendErrClienRes(&msg.ResCardExchange{
Code: msg.RES_CODE_FAIL,
@ -2992,6 +3037,9 @@ func ReqCardExchange(args []interface{}) error {
player.PushClientRes(&msg.ResCardExchange{
Code: msg.RES_CODE_SUCCESS,
})
player.PushClientRes(&msg.ResNotifyCard{
Card: map[int32]int32{int32(CardInfo.CardId): -1},
})
player.PlayMod.save()
FriendMgrSend(m)
return nil
@ -3005,7 +3053,7 @@ func ReqSelectCardExchange(args []interface{}) error {
CardId := int(req.CardId)
CardMod := player.PlayMod.getCardMod()
FriendMod := player.PlayMod.getFriendMod()
CardInfo := FriendMod.GetCardExchange(int(req.Uid))
CardInfo := FriendMod.GetCardInfo(req.Id)
if CardInfo == nil || CardInfo.EndTime < GoUtil.Now() {
player.SendErrClienRes(&msg.ResSelectCardExchange{
Code: msg.RES_CODE_FAIL,
@ -3021,7 +3069,8 @@ func ReqSelectCardExchange(args []interface{}) error {
return fmt.Errorf("card already selected")
}
CardInfo.ExId = CardId
FriendMod.SetCardExchange(CardInfo)
CardInfo.Status = card.STATUS_CARD_EX_2
FriendMod.SetCardInfo(CardInfo)
err := CardMod.SubCard(CardId)
if err != nil {
player.SendErrClienRes(&msg.ResSelectCardExchange{
@ -3035,25 +3084,27 @@ func ReqSelectCardExchange(args []interface{}) error {
player.PushClientRes(&msg.ResSelectCardExchange{
Code: msg.RES_CODE_SUCCESS,
})
player.PushClientRes(&msg.ResNotifyCard{
Card: map[int32]int32{int32(CardId): -1},
})
m := &MsqMod.Msg{
Type: MsqMod.HANDLE_TYPE_SELECT_EX_CARD,
From: int(player.M_DwUin),
To: int(req.Uid),
To: CardInfo.AUid,
Extra: CardInfo,
}
FriendMgrSend(m)
return nil
}
// 同意卡牌交换
func ReqAgreeCardExchange(args []interface{}) error {
_, player, buf := ParseArgs(args)
req := &msg.ReqSelectCardExchange{}
proto.Unmarshal(buf, req)
Uid := int(req.Uid)
CardMod := player.PlayMod.getCardMod()
FriendMod := player.PlayMod.getFriendMod()
CardInfo := FriendMod.GetSelectInfo(Uid)
CardInfo := FriendMod.GetCardInfo(req.Id)
if CardInfo == nil || CardInfo.EndTime < GoUtil.Now() {
player.SendErrClienRes(&msg.ResAgreeCardExchange{
@ -3064,7 +3115,9 @@ func ReqAgreeCardExchange(args []interface{}) error {
}
CardMod.AddCard(CardInfo.ExId)
CardMod.DelExCard(CardInfo)
FriendMod.DelSelectInfo(CardInfo)
FriendMod.DelCardInfo(req.Id)
CardInfo.Status = card.STATUS_CARD_EX_3
CardInfo.EndTime = 0
player.PlayMod.save()
player.PushClientRes(CardMod.BackData())
player.PushClientRes(&msg.ResAgreeCardExchange{
@ -3073,20 +3126,23 @@ func ReqAgreeCardExchange(args []interface{}) error {
m := &MsqMod.Msg{
Type: MsqMod.HANDLE_TYPE_ARGREE_EX_CARD,
From: int(player.M_DwUin),
To: Uid,
To: CardInfo.BUid,
Extra: CardInfo,
}
player.PushClientRes(&msg.ResNotifyCard{
Card: map[int32]int32{int32(CardInfo.ExId): 1},
})
FriendMgrSend(m)
return nil
}
// 拒绝选择卡牌
func ReqRefuseCardSelect(args []interface{}) error {
_, player, buf := ParseArgs(args)
req := &msg.ReqRefuseCardSelect{}
proto.Unmarshal(buf, req)
Uid := int(req.Uid)
FriendMod := player.PlayMod.getFriendMod()
CardInfo := FriendMod.GetCardExchange(Uid)
CardInfo := FriendMod.GetCardInfo(req.Id)
if CardInfo == nil {
player.SendErrClienRes(&msg.ResRefuseCardSelect{
Code: msg.RES_CODE_FAIL,
@ -3094,11 +3150,11 @@ func ReqRefuseCardSelect(args []interface{}) error {
})
return fmt.Errorf("exchange time out")
}
FriendMod.DelCardExchange(Uid)
FriendMod.DelCardInfo(req.Id)
m := &MsqMod.Msg{
Type: MsqMod.HANDLE_TYPE_REFUSE_SELECT_CARD,
From: int(player.M_DwUin),
To: Uid,
To: CardInfo.AUid,
Extra: CardInfo,
}
FriendMgrSend(m)
@ -3109,14 +3165,14 @@ func ReqRefuseCardSelect(args []interface{}) error {
return nil
}
// 拒绝进行交换
func ReqRefuseCardExchange(args []interface{}) error {
_, player, buf := ParseArgs(args)
req := &msg.ReqRefuseCardExchange{}
proto.Unmarshal(buf, req)
Uid := int(req.Uid)
CardMod := player.PlayMod.getCardMod()
FriendMod := player.PlayMod.getFriendMod()
CardInfo := FriendMod.GetSelectInfo(Uid)
CardInfo := FriendMod.GetCardInfo(req.Id)
if CardInfo == nil || CardInfo.EndTime < GoUtil.Now() {
player.SendErrClienRes(&msg.ResRefuseCardExchange{
Code: msg.RES_CODE_FAIL,
@ -3124,7 +3180,8 @@ func ReqRefuseCardExchange(args []interface{}) error {
})
return fmt.Errorf("exchange time out")
}
FriendMod.DelSelectInfo(CardInfo)
FriendMod.DelCardInfo(req.Id)
CardMod.AddCard(CardInfo.CardId)
CardMod.DelExCard(CardInfo)
player.PlayMod.save()
@ -3135,13 +3192,49 @@ func ReqRefuseCardExchange(args []interface{}) error {
m := &MsqMod.Msg{
Type: MsqMod.HANDLE_TYPE_REFUSE_EX_CARD,
From: int(player.M_DwUin),
To: Uid,
To: CardInfo.BUid,
Extra: CardInfo,
}
player.PushClientRes(&msg.ResNotifyCard{
Card: map[int32]int32{int32(CardInfo.CardId): 1},
})
FriendMgrSend(m)
return nil
}
func ReqGetFriendCard(args []interface{}) error {
_, player, buf := ParseArgs(args)
req := &msg.ReqRefuseCardExchange{}
proto.Unmarshal(buf, req)
CardMod := player.PlayMod.getCardMod()
FriendMod := player.PlayMod.getFriendMod()
CardInfo := FriendMod.GetCardInfo(req.Id)
if CardInfo == nil || CardInfo.EndTime != 0 {
player.SendErrClienRes(&msg.ResRefuseCardExchange{
Code: msg.RES_CODE_FAIL,
Msg: "exchange time out",
})
return fmt.Errorf("exchange time out")
}
CardId := 0
if CardInfo.Type == card.TYPE_CARD_EX {
CardId = CardInfo.ExId
} else {
CardId = CardInfo.CardId
}
FriendMod.DelCardInfo(req.Id)
CardMod.AddCard(CardId)
player.PlayMod.save()
player.PushClientRes(CardMod.BackData())
player.PushClientRes(&msg.ResRefuseCardExchange{
Code: msg.RES_CODE_SUCCESS,
})
player.PushClientRes(&msg.ResNotifyCard{
Card: map[int32]int32{int32(CardId): 1},
})
return nil
}
// 请求玩家榜单
func ReqRank(args []interface{}) error {
_, player, buf := ParseArgs(args)
@ -3164,6 +3257,24 @@ func ReqRank(args []interface{}) error {
return nil
}
// 请求昨日竞标赛榜单
func ReqChampshipRank(args []interface{}) error {
_, player, buf := ParseArgs(args)
req := &msg.ReqRank{}
proto.Unmarshal(buf, req)
rankList := G_GameLogicPtr.RankMgr.getLastChampshipRank()
res := make(map[int32]*msg.ResPlayerSimple)
for k, rank := range rankList {
res[int32(k+1)] = G_GameLogicPtr.GetResSimplePlayerByUid(rank.Uid)
}
player.PushClientRes(&msg.ResRank{
Type: req.Type,
RankList: res,
})
return nil
}
// 请求邮件列表
func ReqMailList(args []interface{}) error {
_, player, _ := ParseArgs(args)
@ -3431,8 +3542,9 @@ func ReqChampshipReward(args []interface{}) error {
})
return err
}
MyRank := G_GameLogicPtr.RankMgr.getMyRank(RANK_TYPE_CHAMPSHIP, int(player.M_DwUin))
player.PlayMod.save()
player.PushClientRes(ChampshipMod.BackData())
player.PushClientRes(ChampshipMod.BackData(MyRank))
player.PushClientRes(&msg.ResChampshipReward{
Code: msg.RES_CODE_SUCCESS,
})
@ -3541,3 +3653,52 @@ func ReqFriendTimeLine(args []interface{}) error {
FriendLogBackData(player)
return nil
}
func ReqChampshipRankReward(args []interface{}) error {
_, player, _ := ParseArgs(args)
MyRank := G_GameLogicPtr.RankMgr.getLastChampship(int(player.M_DwUin))
ChampshipMod := player.PlayMod.getChampshipMod()
itemList, err := ChampshipMod.GetRankReward(MyRank)
if err != nil {
player.SendErrClienRes(&msg.ResChampshipRankReward{
Code: msg.RES_CODE_FAIL,
Msg: err.Error(),
})
return err
}
err = player.HandleItem(itemList, "ChampshipRankReward")
if err != nil {
player.SendErrClienRes(&msg.ResChampshipRankReward{
Code: msg.RES_CODE_FAIL,
Msg: err.Error(),
})
return err
}
player.PlayMod.save()
player.PushClientRes(ChampshipMod.BackData(MyRank))
player.PushClientRes(&msg.ResChampshipRankReward{
Code: msg.RES_CODE_SUCCESS,
})
return nil
}
func ReqSetName(args []interface{}) error {
_, player, buf := ParseArgs(args)
req := &msg.ReqSetName{}
proto.Unmarshal(buf, req)
BaseMod := player.PlayMod.getBaseMod()
BaseMod.SetNickName(req.Name)
player.PushClientRes(&msg.ResSetName{
ResultCode: msg.RES_CODE_SUCCESS,
})
player.PlayMod.save()
BackUserInfo(player)
UpdateUserInfo(player)
return nil
}
func ReqUserInfo(args []interface{}) error {
_, player, _ := ParseArgs(args)
BackUserInfo(player)
return nil
}

View File

@ -12,11 +12,11 @@ import (
)
const (
FRIEND_MGR_KEY = "FRIEND_MGR"
RANK_MGR_KEY = "RANK_MGR"
MAIL_MGR_KEY = "MAIL_MGR"
PER_SAVE_TIME = 1
FRIEND_MGR_KEY = "FRIEND_MGR"
RANK_MGR_KEY = "RANK_MGR"
MAIL_MGR_KEY = "MAIL_MGR"
CHAMPSHIP_MGR_KEY = "CHAMPSHIP_MGR"
PER_SAVE_TIME = 1
)
type ServerMod struct {

View File

@ -22,7 +22,7 @@ func (a *AvatarMod) InitData() {
for _, v := range InitId {
a.List[v] = Avatar{}
}
a.SetId = InitId[0]
a.SetId = 1
}
}
@ -34,7 +34,7 @@ func (a *AvatarMod) SetAvatar(Id int) error {
return nil
}
func (a *AvatarMod) BackData() *msg.ResAvatarInfo {
func (a *AvatarMod) BackData() []*msg.AvatarInfo {
l := make([]*msg.AvatarInfo, 0)
for k, v := range a.List {
l = append(l, &msg.AvatarInfo{
@ -43,8 +43,5 @@ func (a *AvatarMod) BackData() *msg.ResAvatarInfo {
})
}
// 返回数据
return &msg.ResAvatarInfo{
AvatarList: l,
SetId: int32(a.SetId),
}
return l
}

View File

@ -14,6 +14,7 @@ type Base struct {
EnergyMul int
IsFirstBuy bool
EnergyBuy int
NickName string
}
func (b *Base) InitData() {
@ -30,6 +31,10 @@ func (b *Base) SetEnergyMul(mul int) {
b.EnergyMul = mul
}
func (b *Base) SetNickName(Name string) {
b.NickName = Name
}
func (b *Base) GetIsFirstBuy() bool {
return b.IsFirstBuy
}

View File

@ -22,22 +22,40 @@ type CardMod struct {
ExCard map[int]*CardInfo // 交换卡牌
}
type CardInfo struct {
Id string
AUid int
BUid int
CardId int
ExId int
Type int
EndTime int64
}
const (
MASTER_CARD_NORMAL = 6
MASTER_CARD_GOLD = 7
)
const (
TYPE_REQ = 0
TYPE_GIVE = 1
TYPE_EXCHANGE = 2
TYPE_CARD_GIVE = 1 // 请求卡牌
TYPE_CARD_SEND = 2 // 赠送卡牌
TYPE_CARD_EX = 3 // 卡牌交换
)
const (
STATUS_CARD_GIVE_1 = 1 // 请求中
STATUS_CARD_GIVE_2 = 2 // 对方同意,等待领取
STATUS_CARD_SEND_1 = 1 // 赠送成功 等待领取
STATUS_CARD_EX_1 = 1 // 发起交换
STATUS_CARD_EX_2 = 2 // 选择卡牌交换
STATUS_CARD_EX_3 = 3 // 交换成功,等待领取
)
type CardInfo struct {
Id string
AUid int
BUid int
CardId int
ExId int
Type int
EndTime int64
StartTime int64
Status int
}
func (c *CardMod) InitData() {
// 初始化数据
if c.CardList == nil {
@ -242,11 +260,6 @@ func (c *CardMod) RequestCard() error {
return nil
}
// 生成索要卡牌唯一id
func (c *CardMod) CreateRequestCardId(Uid, CardId int, EndTime int64) string {
return fmt.Sprint(Uid, "_", CardId, "_", EndTime)
}
// 增加请求卡牌记录
func (c *CardMod) AddRequestCard(CardInfo *CardInfo) error {
_, ok := c.ReqFriend[CardInfo.BUid]
@ -278,9 +291,9 @@ func (c *CardMod) AddExTimes() {
}
// 交换卡牌
func (c *CardMod) ExchangeCard(From, To, CardId, Type int) (*CardInfo, error) {
func (c *CardMod) ExchangeCard(From, To, CardId int) (*CardInfo, error) {
Now := GoUtil.Now()
Id := fmt.Sprintf("%d_%d_%d_%d", From, To, CardId, Now)
Id := GoUtil.CreateCardId(From, To, CardId)
err := c.SubCard(CardId)
if c.ExTimes <= 0 {
return nil, fmt.Errorf("ExchangeCard times not enough")
@ -293,9 +306,37 @@ func (c *CardMod) ExchangeCard(From, To, CardId, Type int) (*CardInfo, error) {
if ok {
return nil, fmt.Errorf("ExchangeCard already exchange")
}
CardInfo := &CardInfo{Id: Id, AUid: From, BUid: To, CardId: CardId, Type: Type, EndTime: Now + 86400}
if Type == TYPE_EXCHANGE {
c.ExCard[To] = CardInfo
CardInfo := &CardInfo{
Id: Id,
AUid: From,
BUid: To,
CardId: CardId,
Type: TYPE_CARD_EX,
EndTime: Now + 86400,
}
c.ExCard[To] = CardInfo
return CardInfo, nil
}
func (c *CardMod) SendCard(From, To, CardId int) (*CardInfo, error) {
Now := GoUtil.Now()
Id := GoUtil.CreateCardId(From, To, CardId)
err := c.SubCard(CardId)
if c.ExTimes <= 0 {
return nil, fmt.Errorf("SendCard times not enough")
}
c.ExTimes--
if err != nil {
return nil, err
}
CardInfo := &CardInfo{
Id: Id,
AUid: From,
BUid: To,
CardId: CardId,
Type: TYPE_CARD_EX,
StartTime: Now,
Status: STATUS_CARD_SEND_1,
}
return CardInfo, nil
}

View File

@ -1,6 +1,7 @@
package champship
import (
"fmt"
"server/GoUtil"
champshipCfg "server/conf/champship"
mergeDataCfg "server/conf/mergeData"
@ -11,7 +12,7 @@ import (
type ChampshipMod struct {
Score int
Reward int
RankReward int64
RankReward bool
}
func (c *ChampshipMod) InitData() {}
@ -19,12 +20,21 @@ func (c *ChampshipMod) InitData() {}
func (c *ChampshipMod) ZeroUpdate() {
c.Score = 0
c.Reward = 0
c.RankReward = false
}
func (c *ChampshipMod) GetScore() int {
return c.Score
}
func (c *ChampshipMod) GetRankReward(Rank int) ([]*item.Item, error) {
if c.RankReward {
return nil, fmt.Errorf("rank reward has been received")
}
c.RankReward = true
return champshipCfg.GetRankReward(Rank), nil
}
func (c *ChampshipMod) AddScore(Chess []int) {
score := 0
for _, v := range Chess {
@ -41,11 +51,12 @@ func (c *ChampshipMod) GetReward() []*item.Item {
return Items
}
func (c *ChampshipMod) BackData() *msg.ResChampship {
func (c *ChampshipMod) BackData(MyRank int) *msg.ResChampship {
return &msg.ResChampship{
Score: int32(c.Score),
Reward: int32(c.Reward),
EndTime: int32(GoUtil.ZeroTimestamp() + 86400), // 零点结束
Period: int32(GoUtil.GetServerOpenDay()),
Rank: int32(MyRank),
}
}

View File

@ -9,9 +9,10 @@ import (
)
type Decorate struct {
AreaId int
FinishList map[int]struct{}
Progress int
AreaId int
FinishList map[int]struct{}
Progress int
DecorateNum int
}
func (d *Decorate) InitData() {
@ -41,6 +42,7 @@ func (d *Decorate) Decorate(areaId int, decorateId int) ([]*item.Item, error) {
d.Progress = 0
d.FinishList = make(map[int]struct{})
}
d.DecorateNum++
return Item, nil
}

View File

@ -22,7 +22,7 @@ func (f *FaceMod) InitData() {
for _, v := range InitId {
f.List[v] = Face{}
}
f.SetId = InitId[0]
f.SetId = 1
}
}
@ -34,7 +34,7 @@ func (f *FaceMod) SetFace(Id int) error {
return nil
}
func (f *FaceMod) BackData() *msg.ResFaceInfo {
func (f *FaceMod) BackData() []*msg.FaceInfo {
l := make([]*msg.FaceInfo, 0)
for k, v := range f.List {
l = append(l, &msg.FaceInfo{
@ -42,9 +42,5 @@ func (f *FaceMod) BackData() *msg.ResFaceInfo {
EndTime: v.Ts,
})
}
// 返回数据
return &msg.ResFaceInfo{
FaceList: l,
SetId: int32(f.SetId),
}
return l
}

View File

@ -7,12 +7,10 @@ import (
)
type FriendMod struct {
FriendList map[int]struct{} // 好友列表
Apply map[int]struct{} // 请求列表
ApplyCard map[int]*card.CardInfo // 收到的申请交换
ExchangeCard map[int]*card.CardInfo // 申请交换
SelectCard map[int]*card.CardInfo // 选择交换
Log []*LogInfo // 日志
FriendList map[int]struct{} // 好友列表
Apply map[int]struct{} // 请求列表
Card map[string]*card.CardInfo // 收到的申请交换
Log []*LogInfo // 日志
}
const (
@ -40,14 +38,8 @@ func (f *FriendMod) InitData() {
if f.Apply == nil {
f.Apply = make(map[int]struct{})
}
if f.ApplyCard == nil {
f.ApplyCard = make(map[int]*card.CardInfo)
}
if f.ExchangeCard == nil {
f.ExchangeCard = make(map[int]*card.CardInfo)
}
if f.SelectCard == nil {
f.SelectCard = make(map[int]*card.CardInfo)
if f.Card == nil {
f.Card = make(map[string]*card.CardInfo)
}
}
@ -57,49 +49,20 @@ func (f *FriendMod) AddFriend(id int) {
f.Log = append(f.Log, &LogInfo{Uid: id, Type: LOG_TYPE_ADD, Time: GoUtil.Now()})
}
func (f *FriendMod) GetCardGiveId(Uid int) *card.CardInfo {
for _, v := range f.ApplyCard {
if v.AUid == Uid {
return v
}
}
return nil
}
func (f *FriendMod) CardGiveApply(CardInfo *card.CardInfo) {
f.ApplyCard[CardInfo.AUid] = CardInfo
}
func (f *FriendMod) SetCardExchange(CardInfo *card.CardInfo) {
f.ExchangeCard[CardInfo.AUid] = CardInfo
}
func (f *FriendMod) GetCardExchange(Uid int) *card.CardInfo {
v, ok := f.ExchangeCard[Uid]
func (f *FriendMod) GetCardInfo(Id string) *card.CardInfo {
v, ok := f.Card[Id]
if !ok {
return nil
}
return v
}
func (f *FriendMod) DelCardExchange(Uid int) {
delete(f.ExchangeCard, Uid)
func (f *FriendMod) SetCardInfo(CardInfo *card.CardInfo) {
f.Card[CardInfo.Id] = CardInfo
}
func (f *FriendMod) CardSelectExchange(CardInfo *card.CardInfo) {
f.SelectCard[CardInfo.BUid] = CardInfo
}
func (f *FriendMod) GetSelectInfo(Uid int) *card.CardInfo {
v, ok := f.SelectCard[Uid]
if !ok {
return nil
}
return v
}
func (f *FriendMod) DelSelectInfo(CardInfo *card.CardInfo) {
delete(f.SelectCard, CardInfo.BUid)
func (f *FriendMod) DelCardInfo(Id string) {
delete(f.Card, Id)
}
func (f *FriendMod) DelFriend(id int) {
@ -127,7 +90,7 @@ func (f *FriendMod) HandleMsg(m *msg.Msg) {
delete(f.FriendList, m.From)
case msg.HANDLE_TYPE_REQ_CARD:
CardInfo := m.Extra.(*card.CardInfo)
f.CardGiveApply(CardInfo)
f.SetCardInfo(CardInfo)
}
}
@ -135,14 +98,6 @@ func (f *FriendMod) CheckApply(id int) bool {
_, ok := f.Apply[id]
return ok
}
func (f *FriendMod) RefuseCardGive(Uid int) *card.CardInfo {
v, ok := f.ApplyCard[Uid]
if !ok {
return nil
}
delete(f.ApplyCard, Uid)
return v
}
func (f *FriendMod) AddFriendApply(UId int) {
f.Apply[UId] = struct{}{}

View File

@ -33,13 +33,16 @@ const (
HANDLE_TYPE_REFUSE_SELECT_CARD = 10 //B拒绝选择置换卡牌
HANDLE_TYPE_REFUSE_EX_CARD = 11 //A拒绝置换卡牌
HANDLE_TYPE_SEND_CARD = 15 //赠送卡牌
// 榜单操作
HANDLE_TYPE_RANK = 101 //榜单操作
HANDLE_TYPE_RANK_INFO = 102 //榜单信息
HANDLE_TYPE_RANK_NOTIFY = 103 //榜单信息
// 邮件操作
HANDLE_TYPE_MAIL = 201 //邮件操作
// 锦标赛
HANDLE_TYPE_CHAMPSHIP_GROUP = 301 //锦标赛分组操作
HANDLE_TYPE_CHAMPSHIP_INRANK = 302 //锦标赛入榜操作
//server mod handle
SERVER_ZERO_UPDATE = 1000 //zero update
)

File diff suppressed because it is too large Load Diff