图鉴附属点赞功能

This commit is contained in:
hahwu 2025-03-06 11:13:42 +08:00
parent 65eb41e01a
commit 668703d3f4
9 changed files with 3300 additions and 2895 deletions

View File

@ -0,0 +1,35 @@
package handbookCfg
import (
"server/game/mod/item"
"server/gamedata"
"server/pkg/github.com/name5566/leaf/log"
)
const (
CFG_HANDBOOK = "Handbook"
CFG_HANDBOOK_CONST = "HandbookConst"
)
func init() {
gamedata.InitCfg(CFG_HANDBOOK)
gamedata.InitCfg(CFG_HANDBOOK_CONST)
}
func GetHandbookReward(Type string) []*item.Item {
data, err := gamedata.GetDataByKey(CFG_HANDBOOK, Type)
if err != nil {
log.Debug("GetHandbookReward err:%v", err)
return nil
}
return gamedata.GetItemList(data, "Items")
}
func GetHandbookCollectReward() []*item.Item {
data, err := gamedata.GetDataByKey(CFG_HANDBOOK_CONST, "collect_item")
if err != nil {
log.Debug("GetHandbookCollectReward err:%v", err)
return nil
}
return gamedata.GetItemList(data, "Value")
}

View File

@ -646,7 +646,7 @@ func (ad *GameLogic) RegisterNetWorkFunc() {
//领取图鉴奖励
RegisterMsgProcessFunc("ReqGetHandbookReward", ReqGetHandbookReward) //领取图鉴奖励
RegisterMsgProcessFunc("RegHandbookAllReward", RegHandbookAllReward) //领取图鉴收集奖励
//领取订单奖励
RegisterMsgProcessFunc("ReqRewardOrder", ReqRewardOrder) // 领取订单奖励
RegisterMsgProcessFunc("ReqDelOrder", ReqDelOrder) // 删除订单
@ -709,6 +709,7 @@ func (ad *GameLogic) RegisterNetWorkFunc() {
RegisterMsgProcessFunc("ReqFriendCardMsg", ReqFriendCardMsg) // 请求好友卡牌申请列表
RegisterMsgProcessFunc("ReqFriendTimeLine", ReqFriendTimeLine) // 请求好友时间线
RegisterMsgProcessFunc("ReqFriendRecommend", ReqFriendRecommend) // 获取推荐好友
RegisterMsgProcessFunc("ReqFriendTLUpvote", ReqFriendTLUpvote) // 请求时间线点赞
RegisterMsgProcessFunc("ReqSearchPlayer", ReqSearchPlayer) // 搜索好友
RegisterMsgProcessFunc("ReqApplyFriend", ReqApplyFriend) // 申请好友

View File

@ -223,6 +223,9 @@ func handle(p *Player, m *msg.Msg) error {
Items = m.Extra.([]*item.Item)
}
p.HandleItem(Items, proto.ITEM_POP_LABEL_Friendtreasure.String())
case msg.HANDLE_TYPE_HANDBOOK_COLLECTION: // 图鉴收集奖励
data := m.Extra.(msg.HandbookMsg)
p.AddLog(m.From, friend.LOG_TYPE_PLAYROOM_VISIT, fmt.Sprintf("%s", data.Type))
}
// #region 以下是处理系统请求
return nil
@ -373,6 +376,7 @@ func FriendLogBackData(p *Player) {
Time: int32(v.Time),
Param: v.Param,
Id: int32(v.Id),
Upvote: v.Upvote,
})
}
p.PushClientRes(&proto.ResFriendTimeLine{
@ -869,3 +873,14 @@ func GetUidByFaceBook(Fb string) (int, error) {
log.Debug("Fb :%s;Uid :%d", Fb, R.Uid)
return R.Uid, err
}
func NotifyAllFriend(p *Player, m *msg.Msg) {
FriendMod := p.PlayMod.getFriendMod()
for k := range FriendMod.FriendList {
if k == int(p.M_DwUin) {
continue
}
m.To = k
FriendMgrSend(m)
}
}

View File

@ -7,6 +7,7 @@ import (
"server/GoUtil"
cardCfg "server/conf/card"
decorateCfg "server/conf/decorate"
handbookCfg "server/conf/handbook"
mergeDataCfg "server/conf/mergeData"
miningCfg "server/conf/mining"
playroomCfg "server/conf/playroom"
@ -143,8 +144,8 @@ func ReqGetHandbookReward(player *Player, buf []byte) error {
})
return err
}
var itemList []*item.Item
itemList = append(itemList, &item.Item{Id: item.ITEM_ENERGY_ID, Num: 5})
itemList := handbookCfg.GetHandbookCollectReward()
err = player.HandleItem(itemList, msg.ITEM_POP_LABEL_HandbookReward.String())
if err != nil {
player.SendErrClienRes(&msg.ResGetHandbookReward{
@ -165,6 +166,41 @@ func ReqGetHandbookReward(player *Player, buf []byte) error {
return nil
}
func RegHandbookAllReward(player *Player, buf []byte) error {
req := &msg.RegHandbookAllReward{}
proto.Unmarshal(buf, req)
Items, err := player.PlayMod.getHandbookMod().CollectItem(req.Type)
if err != nil {
player.SendErrClienRes(&msg.ResHandbookAllReward{
Code: msg.RES_CODE_FAIL,
Msg: err.Error(),
})
return err
}
err = player.HandleItem(Items, msg.ITEM_POP_LABEL_HandbookAllReward.String())
if err != nil {
player.SendErrClienRes(&msg.ResHandbookAllReward{
Code: msg.RES_CODE_FAIL,
Msg: err.Error(),
})
return err
}
player.PushClientRes(&msg.ResHandbookAllReward{
Code: msg.RES_CODE_SUCCESS,
})
NotifyAllFriend(player, &MsqMod.Msg{
Type: MsqMod.HANDLE_TYPE_HANDBOOK_COLLECTION,
From: int(player.M_DwUin),
SendT: GoUtil.Now(),
Extra: MsqMod.HandbookMsg{
Type: req.Type,
},
})
player.PushClientRes(player.PlayMod.getHandbookMod().BackData())
player.PlayMod.save()
return nil
}
// 领取订单奖励
func ReqRewardOrder(player *Player, buf []byte) error {
req := &msg.ReqRewardOrder{}
@ -2397,6 +2433,37 @@ func ReqFriendTimeLine(player *Player, buf []byte) error {
return nil
}
func ReqFriendTLUpvote(player *Player, buf []byte) error {
req := &msg.ReqFriendTLUpvote{}
proto.Unmarshal(buf, req)
FriendMod := player.PlayMod.getFriendMod()
Items, err := FriendMod.Upvote(int(req.Id))
if err != nil {
player.SendErrClienRes(&msg.ResFriendTLUpvote{
Code: msg.RES_CODE_FAIL,
Msg: err.Error(),
})
return err
}
err = player.HandleItem(Items, msg.ITEM_POP_LABEL_TLUpvote.String())
if err != nil {
player.SendErrClienRes(&msg.ResFriendTLUpvote{
Code: msg.RES_CODE_FAIL,
Msg: err.Error(),
})
return err
}
player.PlayMod.save()
player.PushClientRes(&msg.ResFriendTLUpvote{
Code: msg.RES_CODE_SUCCESS,
Id: req.Id,
})
player.TeLog("friend_upvote", map[string]interface{}{
"player_id": int(req.Id),
})
return nil
}
func ReqChampshipRankReward(player *Player, buf []byte) error {
MyLastRank := G_GameLogicPtr.ChampshipMgr.getLastMyRank(int(player.M_DwUin))
ChampshipMod := player.PlayMod.getChampshipMod()

View File

@ -1,9 +1,11 @@
package friend
import (
"fmt"
"server/GoUtil"
cardCfg "server/conf/card"
"server/game/mod/card"
"server/game/mod/item"
)
type FriendMod struct {
@ -30,6 +32,7 @@ const (
LOG_TYPE_CARD_EX_SUCCESS_2 = 11 // 卡牌交换成功
LOG_TYPE_FRIEND_DELETE = 14 // 删除好友
LOG_TYPE_PLAYROOM_VISIT = 15 // 拜访玩家
LOG_TYPE_HANDBOOK = 16 // 图鉴收集
)
const (
@ -40,11 +43,12 @@ const (
)
type LogInfo struct {
Id int
Uid int
Type int
Time int64
Param string
Id int
Uid int
Type int
Time int64
Param string
Upvote bool // 点赞
}
func (f *FriendMod) InitData() {
@ -163,3 +167,15 @@ func (f *FriendMod) ResetGoldCardEx() {
}
}
}
func (f *FriendMod) Upvote(Id int) ([]*item.Item, error) {
info := f.Log[Id]
if info == nil {
return nil, fmt.Errorf("log not exist")
}
if info.Upvote {
return nil, fmt.Errorf("already upvote")
}
info.Upvote = true
return []*item.Item{item.NewItem(item.ITEM_ENERGY_ID, 1)}, nil
}

View File

@ -2,12 +2,16 @@ package handbook
import (
"errors"
"fmt"
handbookCfg "server/conf/handbook"
startMergeCfg "server/conf/startMerge"
"server/game/mod/item"
"server/msg"
)
type Handbook struct {
BookList map[int]int `json:"BookList"`
Collect map[string]struct{}
}
const (
@ -16,6 +20,9 @@ const (
)
func (h *Handbook) InitData() {
if h.Collect == nil {
h.Collect = make(map[string]struct{})
}
if h.BookList == nil {
h.BookList = make(map[int]int)
InitChess := startMergeCfg.GetInitChessList()
@ -51,6 +58,18 @@ func (h *Handbook) GetHandbookReward(Id int) error {
return nil
}
func (h *Handbook) CollectItem(Id string) ([]*item.Item, error) {
if _, ok := h.Collect[Id]; ok {
return nil, fmt.Errorf("已经领取过该奖励")
}
h.Collect[Id] = struct{}{}
Reward := handbookCfg.GetHandbookReward(Id)
if Reward == nil {
return nil, fmt.Errorf("奖励不存在")
}
return Reward, nil
}
func (h *Handbook) BackData() *msg.Handbook {
var BookList []*msg.HandbookInfo
for k, v := range h.BookList {

View File

@ -71,6 +71,8 @@ const (
FRIEND_TREASURE_HANDLE //好友宝藏操作
HANDLE_TYPE_MAIL_ADD //添加邮件
HANDLE_TYPE_MAIL_RELOAD //重新加载邮件
HANDLE_TYPE_HANDBOOK_COLLECTION //图鉴收集
)
const (

View File

@ -0,0 +1,5 @@
package msg
type HandbookMsg struct {
Type string
}

File diff suppressed because it is too large Load Diff