Merge branch 'develop' into sdk

This commit is contained in:
hahwu 2025-07-03 18:59:58 +08:00
commit 12390f9abb
18 changed files with 269 additions and 67 deletions

View File

@ -138,15 +138,15 @@ func GetSpecialShopGrade(Money float64, Type int) int {
})
}
sort.Slice(l, func(i, j int) bool {
return l[i].money < l[j].money
return l[i].money > l[j].money
})
for _, v := range l {
if Money < v.money {
if Money <= v.money {
return v.id
}
}
return 0
return l[0].id
}
func GetUnlockShopLv() int {

View File

@ -118,6 +118,16 @@ func GetOneKeyDecorateUnlockLv() int {
return gamedata.GetIntValue(data, "Value")
}
// 获取每次装饰增加的体力值
func GetDecorateAddEnergy() int {
data, err := gamedata.GetDataByKey(DECORATE_CONST, "AddEnergy")
if err != nil {
log.Debug("GetDecorateAddEnergy not found")
return 0
}
return gamedata.GetIntValue(data, "Value")
}
func GetAreaPerPExp(AreaId int) int {
data, err := gamedata.GetDataByIntKey(DECORATE_AREA, AreaId)
if err != nil {

View File

@ -548,3 +548,35 @@ func GetOrderItem(Star int) map[int][]gamedata.PetOrderItem {
}
return r
}
func GetOrderItemList() []int {
data, err := gamedata.GetData(CFG_PLAYROOM_ORDERITEM)
if err != nil {
log.Debug("GetOrderItemList err:%v", err)
return nil
}
r := make([]int, 0)
for k := range data {
Id := GoUtil.Int(k)
if Id == 0 {
log.Debug("GetOrderItemList Id is 0")
continue
}
r = append(r, Id)
}
return r
}
func GetPetOrderItemExpByList(ItemList []*item.Item) int {
r := 0
for _, v := range ItemList {
data, err := gamedata.GetDataByIntKey(CFG_PLAYROOM_ORDERITEM, v.Id)
if err != nil {
// log.Debug("GetPetOrderItemExpByList err:%v", err)
continue
}
Star := gamedata.GetIntValue(data, "Star")
r += Star * v.Num
}
return r
}

View File

@ -2,7 +2,7 @@
"AppID": 1,
"LogLevel": "debug",
"LogPath": "./log",
"TCPAddr": ":3605",
"TCPAddr": ":3601",
"WSAddr": ":3566",
"MySqlAddr": "127.0.0.1",
"MySqlPort": "3306",

View File

@ -76,6 +76,7 @@ func (f *FriendMgr) Init() {
f.RegisterHandler(msg.HANDLE_TYPE_TREASURE_RESULT, f.sendToPlayer)
f.RegisterHandler(msg.HANDLE_TYPE_FACEBOOK_UNBIND, f.sendToPlayer)
f.RegisterHandler(msg.HANDLE_TYPE_PLAYROOM_KISS, f.sendToPlayerOnline)
f.RegisterHandler(msg.HANDLE_TYPE_PLAYROOM_GAME, f.sendToPlayerOnline)
f.RegisterHandler(msg.HANDLE_TYPE_VAR_USER_GET, f.GetVarUserData)
f.RegisterHandler(msg.HANDLE_TYPE_VAR_USER_SET, f.SetVarUserData)
@ -178,6 +179,9 @@ func sendToPlayerOnline(m *msg.Msg) error {
}
func FriendMgrSend(m1 *msg.Msg) error {
if m1.SendT == 0 {
m1.SendT = GoUtil.Now()
}
m := m1.Clone()
ToServer := GoUtil.GetServerIdByUid(m.To)
if ToServer != conf.Server.ServerID {

View File

@ -93,7 +93,7 @@ func ReqGmCommand_(player *Player, Command string) error {
player.LoginBackData()
case "addChampshipLog":
num, _ := strconv.Atoi(arg[1])
player.AddLog(num, friend.LOG_TYPE_PLAYROOM_CHAMPSHIP, fmt.Sprintf("%d_%d", 1, 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
@ -328,6 +328,19 @@ func ReqGmCommand_(player *Player, Command string) error {
a := player.GetAgent()
a.Close()
player.ClearData()
case "resetFriend":
FriendMod := player.PlayMod.getFriendMod()
FriendMod.FriendList = make(map[int]struct{})
FriendMod.ApplyList = make(map[int]int64)
FriendMod.Card = make(map[string]*card.CardInfo)
FriendMod.SendApply = make(map[int]int64)
FriendMod.NewFriendList = make(map[int]*friend.FriendInfo)
FriendMod.Npc = []int{}
FriendMod.Id = 0
FriendMod.Log = make([]*friend.LogInfo, 0)
FriendMod.InitData()
FriendListBackData(player)
FriendLogBackData(player)
case "addFriend":
FriendMod := player.PlayMod.getFriendMod()
Uid, _ := strconv.Atoi(arg[1])

View File

@ -741,6 +741,7 @@ func (p *Player) LoginBackData() {
p.PushClientRes(p.PlayMod.mod_list.Base.BackData())
p.PushClientRes(p.PlayMod.mod_list.Chess.BackData())
p.PushClientRes(p.PlayMod.mod_list.Order.BackData())
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.SevenLogin.BackData())
@ -845,7 +846,9 @@ func (p *Player) UpdateUserInfo() {
func (p *Player) HandleInUserRank() {
DecorateMod := p.PlayMod.getDecorateMod()
Score := DecorateMod.GetDecorateNum()
Score := float64(DecorateMod.GetDecorateNum())
BaseMod := p.PlayMod.getBaseMod()
Score += float64(BaseMod.GetLevel()) * 1000000 // 等级加成
// 更新排行榜
m := &MsgMod.Msg{
Type: MsgMod.HANDLE_TYPE_RANK,
@ -879,7 +882,7 @@ func (p *Player) HandleInChampshipRank() {
G_GameLogicPtr.ChampshipMgrSend(m)
}
func (p *Player) AddLog(Uid int, Type int, Param string) {
func (p *Player) AddLog(Uid int, Type int, Param string, Time int64) {
FriendMod := p.PlayMod.getFriendMod()
Id := FriendMod.AddLog(Uid, Type, Param)
p.PlayMod.save()
@ -889,7 +892,7 @@ func (p *Player) AddLog(Uid int, Type int, Param string) {
Type: int32(Type),
Param: Param,
Id: int32(Id),
Time: int32(GoUtil.Now()),
Time: int32(Time),
},
})
}

View File

@ -522,13 +522,14 @@ func (p *PlayerBaseData) AddExp(player *Player, exp int, pexp int) (int, error)
player.initAcitivity()
player.BackDataActivity()
player.QuestTrigger(&quest.Trigger{Label: quest.TRIGGER_LABEL_UPLV})
p.p.TeLog("level_up", map[string]interface{}{
player.TeLog("level_up", map[string]interface{}{
"after_level": BaseMod.Level,
})
p.p.TeLog("property_level_up", map[string]interface{}{
player.TeLog("property_level_up", map[string]interface{}{
"property_level": BaseMod.Level,
"property_level_reward": userCfg.GetUnlock(int(BaseMod.Level)),
})
player.HandleInUserRank()
}
if len(UpLevelItem) > 0 {
err := player.HandleItem(UpLevelItem, msg.ITEM_POP_LABEL_LevUpReward.String())

View File

@ -77,12 +77,14 @@ func handle(p *Player, m *msg.Msg) error {
case msg.HANDLE_TYPE_INVITE_FRIEND: // 邀请好友
InviteMod := p.PlayMod.getInviteMod()
InviteMod.AddInvite(m.From)
p.AddLog(m.From, friend.LOG_TYPE_FRIEND_INVITE, "", m.SendT)
p.PlayMod.save()
p.PushClientRes(InviteMod.NotifySuccess())
case msg.HANDLE_TYPE_SEND_CARD: // B收到A赠送的卡牌
CardInfo := m.Extra.(card.CardInfo)
FriendMod := p.PlayMod.getFriendMod()
FriendMod.SetCardInfo(&CardInfo)
FriendMod.Interact(CardInfo.AUid, friend.INTERACT_TYPE_CARD, m.SendT)
p.PushClientRes(
&proto.NotifyFriendCard{
Info: GetCardInfoMsg(&CardInfo),
@ -149,6 +151,7 @@ func handle(p *Player, m *msg.Msg) error {
FriendMod := p.PlayMod.getFriendMod()
CardInfo := m.Extra.(card.CardInfo)
FriendMod.SetCardInfo(&CardInfo)
FriendMod.Interact(CardInfo.AUid, friend.INTERACT_TYPE_EX, m.SendT)
p.PlayMod.save()
p.PushClientRes(
&proto.NotifyFriendCard{
@ -200,25 +203,33 @@ func handle(p *Player, m *msg.Msg) error {
BackChampship(p)
case msg.HANDLE_TYPE_CHAMPSHIP_RESULT: // # 好友锦标赛结果
Extra := m.Extra.([]int)
p.AddLog(m.From, friend.LOG_TYPE_PLAYROOM_CHAMPSHIP, fmt.Sprintf("%d_%d", Extra[0], Extra[1]))
p.AddLog(m.From, friend.LOG_TYPE_PLAYROOM_CHAMPSHIP, fmt.Sprintf("%d_%d", Extra[0], Extra[1]), m.SendT)
case msg.HANDLE_TYPE_TREASURE_RESULT: // # 好友宝藏结果
p.AddLog(m.From, friend.LOG_TYPE_TREASURE, fmt.Sprintf("%d", m.Extra.(int)))
p.AddLog(m.From, friend.LOG_TYPE_TREASURE, fmt.Sprintf("%d", m.Extra.(int)), m.SendT)
case msg.HANDLE_TYPE_MAIL: // 邮件操作
SyncMailMsg(p)
case msg.HANDLE_TYPE_PLAYROOM_LOSE: // # 玩家输了
PlayroomMod := p.PlayMod.getPlayroomMod()
Items := m.Item
IsChip := false
GameId := playroom.GAME_TYPE_HOOK
if m.Extra != nil {
IsChip = m.Extra.(bool)
if val, ok := m.Extra.(int); ok {
GameId = val
}
}
if IsChip {
if len(Items) == 0 {
return nil
}
if GameId == playroom.GAME_TYPE_HOOK {
PlayroomMod.AddChip(m.From, m.SendT)
p.AddLog(m.From, friend.LOG_TYPE_PLAYROOM_CAT_WIN, fmt.Sprintf("%d_%d", Items[0].Id, Items[0].Num), m.SendT)
} else {
p.AddLog(m.From, friend.LOG_TYPE_PLAYROOM_VISIT, fmt.Sprintf("%d_%d", Items[0].Id, Items[0].Num), m.SendT)
}
PlayroomMod.AddMood(playroom.MOOD_TYPE_FOOD, -50)
PlayroomMod.AddMood(playroom.MOOD_TYPE_CLEAN, -50)
PlayroomMod.AddVisitor(m.From, m.SendT)
p.AddLog(m.From, friend.LOG_TYPE_PLAYROOM_VISIT, fmt.Sprintf("%d_%d", Items[0].Id, Items[0].Num))
if len(Items) > 0 && Items[0].Id == item.ITEM_STAR_ID {
BaseMod := p.PlayMod.getBaseMod()
StarNum := BaseMod.GetStar()
@ -227,9 +238,15 @@ func handle(p *Player, m *msg.Msg) error {
} else {
PlayroomMod.Lose(Items)
}
FriendMod := p.PlayMod.getFriendMod()
FriendMod.Interact(m.From, friend.INTERACT_TYPE_VISIT, m.SendT)
p.UpdateUserInfo()
p.Kafka(PLAYROOM_LOST, map[string]interface{}{"uid": m.From, "item": Items})
p.PushClientRes(PlayroomMod.NotifyLose())
case msg.HANDLE_TYPE_PLAYROOM_GAME:
FriendMod := p.PlayMod.getFriendMod()
p.AddLog(m.From, friend.LOG_TYPE_PLAYROOM_CAT_LOSE, "", m.SendT)
FriendMod.Interact(m.From, friend.INTERACT_TYPE_VISIT, m.SendT)
case msg.FRIEND_TREASURE_HANDLE: // # 好友宝藏
Items := make([]*item.Item, 0)
if m.Extra != nil {
@ -238,9 +255,11 @@ func handle(p *Player, m *msg.Msg) error {
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_HANDBOOK, data.Type)
p.AddLog(m.From, friend.LOG_TYPE_HANDBOOK, data.Type, m.SendT)
case msg.HANDLE_TYPE_HANDBOOK_UPVOTE: // 图鉴点赞
p.AddLog(m.From, friend.LOG_TYPE_HANDBOOK_UPVOTE, "")
FriendMod := p.PlayMod.getFriendMod()
FriendMod.Interact(m.From, friend.INTERACT_TYPE_UPVOTE, m.SendT)
p.AddLog(m.From, friend.LOG_TYPE_HANDBOOK_UPVOTE, "", m.SendT)
case msg.HANDLE_TYPE_SEND_CHARGE: // 收到好友赠送的充值礼包
C := &ChargeExtra{}
if m.Extra != nil {
@ -251,7 +270,7 @@ func handle(p *Player, m *msg.Msg) error {
mt, mc, mt_en, mc_en := mailCfg.GetChargeSendMail(PlayerSimpleData.Name)
Items := ChargeItem(p, C.ChargeId)
MailId := MailMod.Send(mt, "", mc, mt_en, "", mc_en, Items, mail.MAIL_TYPE_GIFT)
p.AddLog(m.From, friend.LOG_TYPE_CHARGE_SEND, fmt.Sprintf("%d", MailId))
p.AddLog(m.From, friend.LOG_TYPE_CHARGE_SEND, fmt.Sprintf("%d", MailId), m.SendT)
p.PushClientRes(MailMod.NotifyMail(MailId))
case msg.HANDLE_TYPE_CHARGE_RECEIVE: // 收到好友的感谢信
Content := ""
@ -262,20 +281,22 @@ func handle(p *Player, m *msg.Msg) error {
MailMod := p.PlayMod.getMailMod()
mt, mc, mt_en, mc_en := mailCfg.GetChargeReceiveMail(PlayerSimpleData.Name, Content)
MailId := MailMod.Send(mt, "", mc, mt_en, "", mc_en, nil, mail.MAIL_TYPE_NORMAL)
p.AddLog(m.From, friend.LOG_TYPE_CHARGE_RECEIVE, fmt.Sprintf("%d", MailId))
p.AddLog(m.From, friend.LOG_TYPE_CHARGE_RECEIVE, fmt.Sprintf("%d", MailId), m.SendT)
p.PushClientRes(MailMod.NotifyMail(MailId))
case msg.HANDLE_TYPE_WISHLIST_SEND: // 发送愿望单请求
FriendMod := p.PlayMod.getFriendMod()
FriendMod.AddWishApply(int64(m.From))
case msg.HANDLE_TYPE_PLAYROOM_UPVOTE: // playroom点赞
p.AddLog(m.From, friend.LOG_TYPE_PLAYROOM_UPVOTE, "")
p.AddLog(m.From, friend.LOG_TYPE_PLAYROOM_UPVOTE, "", m.SendT)
PlayroomMod := p.PlayMod.getPlayroomMod()
PlayroomMod.AddUpvote()
FriendMod := p.PlayMod.getFriendMod()
FriendMod.Interact(m.From, friend.INTERACT_TYPE_VISIT, m.SendT)
p.UpdateUserInfo()
case msg.HANDLE_TYPE_WISHLIST_AGREE:
ChargeMod := p.PlayMod.getChargeMod()
ChargeMod.AddWishCount()
p.AddLog(m.From, friend.LOG_TYPE_WISH, "")
p.AddLog(m.From, friend.LOG_TYPE_WISH, "", m.SendT)
p.PushClientRes(ChargeMod.BackData())
case msg.HANDLE_TYPE_PLAYROOM_KISS: // playroom亲吻
p.NotifyPlayroomKiss()
@ -298,7 +319,7 @@ func HandleFriendMsg(p *Player, m *msg.Msg) error {
switch m.Type {
case msg.HANDLE_TYPE_APPLY: // 好友申请
FriendMod.AddFriendApply(m.From)
p.AddLog(m.From, friend.LOG_TYPE_FRIEND_APPLY, "")
p.AddLog(m.From, friend.LOG_TYPE_FRIEND_APPLY, "", m.SendT)
p.PushClientRes(&proto.ResFriendApplyNotify{
Player: PlayerSimpleData,
Type: friend.FRIEND_NOTIFY_APPLY,
@ -318,10 +339,10 @@ func HandleFriendMsg(p *Player, m *msg.Msg) error {
"player_id": m.From,
"add_type": "agree",
})
p.AddLog(m.From, friend.LOG_TYPE_FRIEND_BECOME, "")
p.AddLog(m.From, friend.LOG_TYPE_FRIEND_BECOME, "", m.SendT)
case msg.HANDLE_TYPE_DEL: // 删除好友
FriendMod.DelFriend(m.From)
p.AddLog(m.From, friend.LOG_TYPE_FRIEND_APPLY, "")
p.AddLog(m.From, friend.LOG_TYPE_FRIEND_APPLY, "", m.SendT)
p.PushClientRes(&proto.ResFriendApplyNotify{
Player: PlayerSimpleData,
Type: friend.FRIEND_NOTIFY_DEL,
@ -408,6 +429,7 @@ func FriendListBackData(p *Player) {
ps := G_GameLogicPtr.GetResSimplePlayerByUid(k)
if ps != nil {
ps.AddTime = v.AddTime
ps.Interact = FriendMod.GetInteractTime(k)
fl = append(fl, ps)
}
}
@ -841,18 +863,36 @@ func NotifyChampshipResult(Uid, Rank int) {
Type: msg.HANDLE_TYPE_CHAMPSHIP_RESULT,
From: Uid,
To: v,
SendT: GoUtil.Now(),
Extra: []int{Rank, GoUtil.GetServerOpenDay()},
}
FriendMgrSend(Msg)
}
}
func (player *Player) GetPetOrderItemExp() int {
OrderItemCfgList := playroomCfg.GetOrderItemList()
itemList := make([]*item.Item, 0)
ItemMod := player.PlayMod.getItemMod()
for _, v := range OrderItemCfgList {
Num := ItemMod.GetItem(v)
if Num <= 0 {
continue
}
itemList = append(itemList, &item.Item{
Id: v,
Num: Num,
})
}
return playroomCfg.GetPetOrderItemExpByList(itemList)
}
func (player *Player) FormatOrderReward() {
Exp, PExp := userCfg.GetLevUpExp(player.GetPlayerBaseMod().GetLevel())
BaseMod := player.PlayMod.getBaseMod()
DecorateMod := player.PlayMod.getDecorateMod()
ExpCoin := (Exp - BaseMod.GetExp()) * decorateCfg.GetAreaPerPExp(DecorateMod.GetAreaId())
PExpCoin := (PExp - BaseMod.GetPExp()) * 50
ExpCoin := (Exp-BaseMod.GetExp())*decorateCfg.GetAreaPerPExp(DecorateMod.GetAreaId()) - BaseMod.GetStar()
PExpCoin := (PExp-BaseMod.GetPExp())*50 - player.GetPetOrderItemExp()
OrderMod := player.PlayMod.getOrderMod()
if ExpCoin > PExpCoin || BaseMod.GetLevel() < 6 {
for k, v := range OrderMod.GetOrderList() {

View File

@ -416,7 +416,6 @@ func ReqDecorate(player *Player, buf []byte) error {
})
return err
}
AddItem, err := DecorateMod.Decorate(AreaId, DecorateId) // 装饰
if err != nil {
player.SendErrClienRes(&msg.ResDecorate{
@ -425,6 +424,9 @@ func ReqDecorate(player *Player, buf []byte) error {
})
return err
}
EnergyItem := DecorateMod.GetDecorateAddEnergy(1)
AddItem = item.Merge(AddItem, EnergyItem)
err = player.HandleItem(AddItem, msg.ITEM_POP_LABEL_DecorateAdd.String()) // 增加道具
if err != nil {
player.SendErrClienRes(&msg.ResDecorate{
@ -490,7 +492,8 @@ func ReqDecorateAll(player *Player, buf []byte) error {
})
return err
}
EnergyItem := DecorateMod.GetDecorateAddEnergy(DecorateNum)
AddItem = item.Merge(AddItem, EnergyItem)
err = player.HandleItem(AddItem, msg.ITEM_POP_LABEL_DecorateAdd.String()) // 增加道具
if err != nil {
player.SendErrClienRes(&msg.ResDecorateAll{
@ -1462,7 +1465,7 @@ func ReqSearchPlayer(player *Player, buf []byte) error {
if player.PlayMod.getFriendMod().CheckFriend(int(v.DwUin)) {
continue
}
if player.PlayMod.getFriendMod().CheckApply(int(v.DwUin)) {
if player.PlayMod.getFriendMod().CheckSendApply(int(v.DwUin)) {
continue
}
SearchPlayer := G_GameLogicPtr.GetResSimplePlayerByUid(int(v.DwUin))
@ -1555,7 +1558,7 @@ func ReqAgreeFriend(player *Player, buf []byte) error {
Uid: req.Uid,
Player: G_GameLogicPtr.GetResSimplePlayerByUid(int(req.Uid)),
})
player.AddLog(Uid, friend.LOG_TYPE_FRIEND_BECOME, "")
player.AddLog(Uid, friend.LOG_TYPE_FRIEND_BECOME, "", GoUtil.Now())
FriendApplyBackData(player)
PlayroomMod := player.PlayMod.getPlayroomMod()
PlayroomMod.AddRoomPointAdd()
@ -1582,7 +1585,7 @@ func ReqDelFriend(player *Player, buf []byte) error {
Code: msg.RES_CODE_SUCCESS,
Uid: req.Uid,
})
player.AddLog(Uid, friend.LOG_TYPE_FRIEND_DELETE, "")
player.AddLog(Uid, friend.LOG_TYPE_FRIEND_DELETE, "", GoUtil.Now())
FriendListBackData(player)
player.TeLog("friend_delete", map[string]interface{}{
"player_id": Uid,
@ -1673,7 +1676,7 @@ func ReqCardGive(player *Player, buf []byte) error {
Type: card.TYPE_CARD_GIVE,
Status: card.STATUS_CARD_GIVE_1,
}
player.AddLog(Uid, friend.LOG_TYPE_CARD_GIVE, strconv.Itoa(CardId))
player.AddLog(Uid, friend.LOG_TYPE_CARD_GIVE, strconv.Itoa(CardId), GoUtil.Now())
err = CardMod.AddRequestCard(CardInfo) // 添加请求卡牌
if err != nil {
player.SendErrClienRes(&msg.ResCardGive{
@ -1744,6 +1747,7 @@ func ReqAgreeCardGive(player *Player, buf []byte) error {
Code: msg.RES_CODE_SUCCESS,
Id: req.Id,
})
player.AddLog(CardInfo.AUid, friend.LOG_TYPE_CARD_GIVE_ACCEPT, strconv.Itoa(CardInfo.CardId), GoUtil.Now())
player.PlayMod.save()
player.TeLog("card_require_reply", map[string]interface{}{
"card_id": CardInfo.CardId,
@ -1804,7 +1808,7 @@ func ReqCardSend(player *Player, buf []byte) error {
End: GoUtil.Now() + 86400,
Extra: *CardInfo,
}
player.AddLog(int(req.Uid), friend.LOG_TYPE_CARD_SEND, strconv.Itoa(CardId))
player.AddLog(int(req.Uid), friend.LOG_TYPE_CARD_SEND, strconv.Itoa(CardId), GoUtil.Now())
player.PushClientRes(&msg.ResCardSend{
Code: msg.RES_CODE_SUCCESS,
})
@ -1837,7 +1841,7 @@ func ReqCardExchange(player *Player, buf []byte) error {
End: GoUtil.Now() + 86400,
Extra: *CardInfo,
}
player.AddLog(int(req.Uid), friend.LOG_TYPE_CARD_EX_SEND, fmt.Sprintf("%d", int(req.CardId)))
player.AddLog(int(req.Uid), friend.LOG_TYPE_CARD_EX_SEND, fmt.Sprintf("%d", int(req.CardId)), GoUtil.Now())
player.PushClientRes(&msg.ResCardExchange{
Code: msg.RES_CODE_SUCCESS,
@ -1889,7 +1893,7 @@ func ReqSelectCardExchange(player *Player, buf []byte) error {
}
}
FriendMod.DelCardInfo(req.Id)
player.AddLog(CardInfo.AUid, friend.LOG_TYPE_CARD_SELECT_SEND, fmt.Sprintf("%d", CardInfo.ExId))
player.AddLog(CardInfo.AUid, friend.LOG_TYPE_CARD_SELECT_SEND, fmt.Sprintf("%d", CardInfo.ExId), GoUtil.Now())
err := player.SubCard(CardId)
if err != nil {
player.SendErrClienRes(&msg.ResSelectCardExchange{
@ -1909,6 +1913,7 @@ func ReqSelectCardExchange(player *Player, buf []byte) error {
Type: MsqMod.HANDLE_TYPE_SELECT_EX_CARD,
From: int(player.M_DwUin),
To: CardInfo.AUid,
SendT: GoUtil.Now(),
Extra: *CardInfo,
}
FriendMgrSend(m)
@ -1948,7 +1953,7 @@ func ReqAgreeCardExchange(player *Player, buf []byte) error {
return err
}
}
player.AddLog(CardInfo.BUid, friend.LOG_TYPE_CARD_EX_SUCCESS_1, fmt.Sprintf("%d_%d", CardInfo.CardId, CardInfo.ExId))
player.AddLog(CardInfo.BUid, friend.LOG_TYPE_CARD_EX_SUCCESS_1, fmt.Sprintf("%d_%d", CardInfo.CardId, CardInfo.ExId), GoUtil.Now())
CardInfo.Status = card.STATUS_CARD_EX_3
CardInfo.EndTime = 0
player.PlayMod.save()
@ -1962,6 +1967,7 @@ func ReqAgreeCardExchange(player *Player, buf []byte) error {
From: int(player.M_DwUin),
To: CardInfo.BUid,
Extra: *CardInfo,
SendT: GoUtil.Now(),
}
player.PushClientRes(CardMod.NotifyCard())
player.PushClientRes(CardMod.NotifyTimes())
@ -2001,6 +2007,7 @@ func ReqRefuseCardSelect(player *Player, buf []byte) error {
From: int(player.M_DwUin),
To: CardInfo.AUid,
Extra: *CardInfo,
SendT: GoUtil.Now(),
}
FriendMgrSend(m)
player.PushClientRes(&msg.ResRefuseCardSelect{
@ -2046,6 +2053,7 @@ func ReqRefuseCardExchange(player *Player, buf []byte) error {
From: int(player.M_DwUin),
To: CardInfo.BUid,
Extra: *CardInfo,
SendT: GoUtil.Now(),
}
player.PushClientRes(CardMod.NotifyCard())
player.PushClientRes(CardMod.NotifyTimes())
@ -2069,9 +2077,7 @@ func ReqGetFriendCard(player *Player, buf []byte) error {
}
FriendMod.DelCardInfo(req.Id)
player.AddCard(CardInfo.CardId)
// if CardInfo.ExId != 0 {
// player.AddLog(CardInfo.BUid, friend.LOG_TYPE_CARD_EX_SUCCESS_2, fmt.Sprintf("%d_%d", CardInfo.ExId, CardInfo.CardId))
// }
player.AddLog(CardInfo.AUid, friend.LOG_TYPE_CARD_SEND_ACCEPT, fmt.Sprintf("%d", CardInfo.CardId), GoUtil.Now())
player.PlayMod.save()
player.PushClientRes(&msg.ResGetFriendCard{
Code: msg.RES_CODE_SUCCESS,
@ -2090,6 +2096,7 @@ func ReqRank(player *Player, buf []byte) error {
From: int(player.M_DwUin),
Type: MsqMod.HANDLE_TYPE_RANK_INFO,
Extra: RankMsg{RankType: int(req.Type)},
SendT: GoUtil.Now(),
}
RankInfo := G_GameLogicPtr.RankMgrCall(m).(*RankInfo)
res := make(map[int32]*msg.ResPlayerSimple)
@ -2719,9 +2726,10 @@ func ReqSelfInvited(player *Player, buf []byte) error {
req := &msg.ReqSelfInvited{}
proto.Unmarshal(buf, req)
G_GameLogicPtr.FriendMgrSend(&MsqMod.Msg{
Type: MsqMod.HANDLE_TYPE_INVITE_FRIEND,
From: int(player.M_DwUin),
To: int(req.InviterId),
Type: MsqMod.HANDLE_TYPE_INVITE_FRIEND,
From: int(player.M_DwUin),
To: int(req.InviterId),
SendT: GoUtil.Now(),
})
player.PushClientRes(&msg.ResSelfInvited{
ResultCode: 1,
@ -2779,9 +2787,10 @@ func ReqAutoAddInviteFriend(player *Player, buf []byte) error {
ResultCode: 1,
})
G_GameLogicPtr.FriendMgrSend(&MsqMod.Msg{
From: int(player.M_DwUin),
To: Uid,
Type: MsqMod.HANDLE_TYPE_INVITE_ADD_FRIEND,
From: int(player.M_DwUin),
To: Uid,
Type: MsqMod.HANDLE_TYPE_INVITE_ADD_FRIEND,
SendT: GoUtil.Now(),
})
PlayroomMod := player.PlayMod.getPlayroomMod()
PlayroomMod.AddRoomPointAdd()
@ -2818,9 +2827,10 @@ func ReqAutoAddInviteFriend2(player *Player, buf []byte) error {
ResultCode: 1,
})
G_GameLogicPtr.FriendMgrSend(&MsqMod.Msg{
From: int(player.M_DwUin),
To: Uid,
Type: MsqMod.HANDLE_TYPE_INVITE_ADD_FRIEND,
From: int(player.M_DwUin),
To: Uid,
Type: MsqMod.HANDLE_TYPE_INVITE_ADD_FRIEND,
SendT: GoUtil.Now(),
})
PlayroomMod := player.PlayMod.getPlayroomMod()
PlayroomMod.AddRoomPointAdd()
@ -3215,7 +3225,7 @@ func ReqPlayroomSetRoom(player *Player, buf []byte) error {
return nil
}
// 玩游戏
// 玩游戏 Desprecated
func ReqPlayroomGame(player *Player, buf []byte) error {
req := &msg.ReqPlayroomGame{}
proto.Unmarshal(buf, req)
@ -3251,9 +3261,13 @@ func ReqPlayroomGame(player *Player, buf []byte) error {
})
return err
}
G_GameLogicPtr.FriendMgrSend(&MsqMod.Msg{
From: int(player.M_DwUin),
To: Target,
Type: MsqMod.HANDLE_TYPE_PLAYROOM_GAME,
SendT: GoUtil.Now(),
})
player.PlayMod.save()
// PlayroomBackData(player)
// PlayroomVisit(player, PlayroomMod.GetTarget())
ItemsMsg := make(map[int32]*msg.ItemInfo, 0)
for k, v := range PlayroomMod.GameReward {
ItemsMsg[int32(k)] = &msg.ItemInfo{
@ -3290,7 +3304,7 @@ func ReqPlayroomSelectReward(player *Player, buf []byte) error {
Type: MsqMod.HANDLE_TYPE_PLAYROOM_LOSE,
SendT: GoUtil.Now(),
Item: Items,
Extra: true,
Extra: PlayroomMod.GetGameId(),
})
G_GameLogicPtr.SetUserData(Target, VAR_OP_CHIP, 1)
PlayroomMod.ResetGame()
@ -3481,7 +3495,7 @@ func ReqPlayroomFlipReward(player *Player, buf []byte) error {
Type: MsqMod.HANDLE_TYPE_PLAYROOM_LOSE,
SendT: GoUtil.Now(),
Item: Items,
Extra: false,
Extra: PlayroomMod.GetGameId(),
})
player.PlayMod.save()
PlayroomBackData(player)
@ -3826,6 +3840,7 @@ func ReqFriendTreasureFilp(player *Player, buf []byte) error {
To: int(Uid),
Type: MsqMod.HANDLE_TYPE_TREASURE_RESULT,
Extra: Items[0].Num,
SendT: GoUtil.Now(),
})
}
@ -4195,13 +4210,17 @@ func ReqAddNpc(player *Player, buf []byte) error {
proto.Unmarshal(buf, req)
FriendMod := player.PlayMod.getFriendMod()
FriendMod.SetNpc(int(req.NpcId))
if len(FriendMod.Npc) == 1 { // 首次添加NPC 视为邀请好友成功
InviteMod := player.PlayMod.getInviteMod()
InviteMod.AddInvite(int(req.NpcId))
}
player.PlayMod.save()
FriendListBackData(player)
PlayroomMod := player.PlayMod.getPlayroomMod()
PlayroomMod.AddRoomPointInvite()
PlayroomMod.AddRoomPointAdd()
PlayroomBackData(player)
player.AddLog(int(req.NpcId), friend.LOG_TYPE_FRIEND_BECOME_NPC, GoUtil.String(req.NpcId))
player.AddLog(int(req.NpcId), friend.LOG_TYPE_FRIEND_BECOME_NPC, GoUtil.String(req.NpcId), GoUtil.Now())
player.PushClientRes(&msg.ResAddNpc{
Code: msg.RES_CODE_SUCCESS,
NpcId: req.NpcId,

View File

@ -77,6 +77,11 @@ type ChargeExtra struct {
ChargeId int // 充值id
}
type GameResult struct {
t int // 游戏类型
r int // 1:赢 2:输 3:平
}
func init() {
gob.Register(&limitedTimeEvent.MoneyCat{})
gob.Register(&limitedTimeEvent.LuckyCat{})

View File

@ -6,6 +6,7 @@ import (
cardCfg "server/conf/card"
"server/game/mod/item"
"server/msg"
"server/pkg/github.com/name5566/leaf/log"
)
type CardMod struct {
@ -236,6 +237,10 @@ func (c *CardMod) BackData() *msg.ResCardInfo {
}
ExUid = append(ExUid, int64(k))
}
if c.EndTime < GoUtil.Now() {
log.Debug("CardMod BackData EndTime < Now, reset card data")
}
return &msg.ResCardInfo{
CardList: cardList,
ExStar: int32(c.ExchangeStar),
@ -425,10 +430,10 @@ func (c *CardMod) ExchangeCard(From, To, CardId int) (*CardInfo, error) {
if err != nil {
return nil, err
}
_, ok := c.ExCard[To]
if ok {
return nil, fmt.Errorf("ExchangeCard already exchange")
}
// _, ok := c.ExCard[To]
// if ok {
// return nil, fmt.Errorf("ExchangeCard already exchange")
// }
CardInfo := &CardInfo{
Id: Id,
AUid: From,

View File

@ -112,7 +112,7 @@ func (c *ChargeMod) ZeroUpdate(Emit []int) {
SpecialShopCount := chargeCfg.GetSpecialShopCount()
for i := 1; i <= 2; i++ {
if c.Total == 0 {
c.SpecialShop[i] = &SepcialShop{Grade: SpecialGrade, Count: 2}
c.SpecialShop[i] = &SepcialShop{Grade: SpecialGrade, Count: 1}
continue
}
m := c.SpecialCharge
@ -299,11 +299,12 @@ func (c *ChargeMod) InitChessShop(Emit []int) {
for _, v := range ColorList {
ColorType := mergeDataCfg.GetColorType(v)
r := make([]*Rand, 0)
if ColorType == mergeDataCfg.CHESS_PRODUCT_MAIN_TYPE {
switch ColorType {
case mergeDataCfg.CHESS_PRODUCT_MAIN_TYPE:
r = getChessMainRand(v)
} else if ColorType == mergeDataCfg.CHESS_PRODUCT_SECONDARY_TYPE {
case mergeDataCfg.CHESS_PRODUCT_SECONDARY_TYPE:
r = getChessSecondaryRand(v)
} else if ColorType == mergeDataCfg.CHESS_PRODUCT_SUB_TYPE {
case mergeDataCfg.CHESS_PRODUCT_SUB_TYPE:
r = getChessSubRand(v)
}
RandList = append(RandList, r...)

View File

@ -48,6 +48,12 @@ func (d *Decorate) Decorate(areaId int, decorateId int) ([]*item.Item, error) {
return Item, nil
}
// 获取装饰增加体力
func (d *Decorate) GetDecorateAddEnergy(cnt int) []*item.Item {
EnergyNum := decorateCfg.GetDecorateAddEnergy()
return []*item.Item{item.NewItem(item.ITEM_ENERGY_ID, EnergyNum*cnt)}
}
// 获取装饰消耗
func (d *Decorate) GetDecorateCostItem(AreaId, DecorateId int) ([]*item.Item, int) {
Item := decorateCfg.GetStarCost(AreaId, DecorateId)

View File

@ -22,7 +22,13 @@ type FriendMod struct {
}
type FriendInfo struct {
AddTime int64
AddTime int64
Interact []*Interact // 拜访记录
}
type Interact struct {
VisitTime int64 // 拜访时间
Type int // 1:拜访 2:点赞
}
type ApplyInfo struct {
@ -31,6 +37,15 @@ type ApplyInfo struct {
Uid int64
}
// 24小时内与玩家进行过以下互动的用户若被选中参加本次宠物宝藏在其头像旁添加礼物盒
const (
INTERACT_TYPE_VISIT = 1 // 拜访过玩家的Pet Playroom并进行过小游戏或点赞的用户
INTERACT_TYPE_UPVOTE = 2 // 为玩家的图鉴全收集信息点过赞的用户
INTERACT_TYPE_CARD = 3 // 向玩家赠送过卡牌的用户
INTERACT_TYPE_EX = 4 // 向玩家发起过卡牌交换
INTERACT_TYPE_WISH = 5 // 邀请玩家一同参加活动的用户
)
const (
LOG_TYPE_FRIEND_APPLY = 1 // 收到申请好友
LOG_TYPE_FRIEND_BECOME = 2 // 成为好友
@ -44,7 +59,7 @@ const (
LOG_TYPE_CARD_EX_SUCCESS_1 = 10 // 卡牌交换成功
LOG_TYPE_CARD_EX_SUCCESS_2 = 11 // 卡牌交换成功
LOG_TYPE_FRIEND_DELETE = 14 // 删除好友
LOG_TYPE_PLAYROOM_VISIT = 15 // 拜访玩家
LOG_TYPE_PLAYROOM_VISIT = 15 // 非小猫游戏,他人偷走了玩家的猫币
LOG_TYPE_HANDBOOK = 16 // 图鉴收集
LOG_TYPE_HANDBOOK_UPVOTE = 17 // 图鉴点赞
LOG_TYPE_CHARGE_SEND = 18 // 赠送充值礼物
@ -54,6 +69,11 @@ const (
LOG_TYPE_PLAYROOM_UPVOTE = 22 // playroom点赞
LOG_TYPE_PLAYROOM_CHAMPSHIP = 23 // 竞标赛排名
LOG_TYPE_TREASURE = 24 // 好友宝藏
LOG_TYPE_CARD_SEND_ACCEPT = 25 // 收到赠送卡牌
LOG_TYPE_PLAYROOM_CAT_WIN = 26 // 小猫游戏,给小猫成功装箱
LOG_TYPE_PLAYROOM_CAT_LOSE = 27 // 小猫游戏,装箱小猫未成功
LOG_TYPE_CARD_GIVE_ACCEPT = 28 // 接受卡牌请求
LOG_TYPE_FRIEND_INVITE = 29 // 邀请注册
)
const (
@ -117,6 +137,36 @@ func (f *FriendMod) SetSyncId(Id int64) {
f.Id = Id
}
func (f *FriendMod) Interact(id, t int, T int64) {
if _, ok := f.NewFriendList[id]; !ok {
return
}
for _, v := range f.NewFriendList[id].Interact {
if v.Type == t && v.VisitTime < T {
v.VisitTime = T
return
}
}
f.NewFriendList[id].Interact = append(f.NewFriendList[id].Interact, &Interact{
VisitTime: T,
Type: t,
})
}
func (f *FriendMod) GetInteractTime(id int) int64 {
if _, ok := f.NewFriendList[id]; !ok {
return 0
}
LastTime := int64(0)
// 获取最近一次拜访或点赞的时间
for _, v := range f.NewFriendList[id].Interact {
if v.VisitTime > LastTime {
LastTime = v.VisitTime
}
}
return LastTime
}
func (f *FriendMod) AddFriend(id int) {
f.NewFriendList[id] = &FriendInfo{
AddTime: GoUtil.Now(),

View File

@ -92,6 +92,7 @@ const (
HANDLE_TYPE_VAR_USER_GET // 获取玩家数据
HANDLE_TYPE_PLAYROOM_KISS // playroom亲吻
HANDLE_TYPE_PLAYROOM_GAME // playroom游戏
)
const (

View File

@ -466,6 +466,9 @@ func (p *PlayroomMod) ResetGame() {
p.InteractNum = 0
p.RevengeUid = 0
}
func (p *PlayroomMod) GetGameId() int {
return p.GameId
}
func (p *PlayroomMod) ResetLose() {
p.LoseItem = make([]*item.Item, 0)

View File

@ -12149,6 +12149,7 @@ type ResPlayerSimple struct {
Facebook string `protobuf:"bytes,9,opt,name=Facebook,proto3" json:"Facebook,omitempty"`
Emoji map[int32]int32 `protobuf:"bytes,10,rep,name=Emoji,proto3" json:"Emoji,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"` // 表情
AddTime int64 `protobuf:"varint,11,opt,name=AddTime,proto3" json:"AddTime,omitempty"` // 添加时间
Interact int64 `protobuf:"varint,12,opt,name=Interact,proto3" json:"Interact,omitempty"` // 最后一次互动的时间
unknownFields protoimpl.UnknownFields
sizeCache protoimpl.SizeCache
}
@ -12260,6 +12261,13 @@ func (x *ResPlayerSimple) GetAddTime() int64 {
return 0
}
func (x *ResPlayerSimple) GetInteract() int64 {
if x != nil {
return x.Interact
}
return 0
}
type ResPlayerRank struct {
state protoimpl.MessageState `protogen:"open.v1"`
Uid int64 `protobuf:"varint,1,opt,name=Uid,proto3" json:"Uid,omitempty"`
@ -24222,7 +24230,7 @@ const file_proto_Gameapi_proto_rawDesc = "" +
"\x03Uid\x18\x01 \x01(\tR\x03Uid\"T\n" +
"\x0fResSearchPlayer\x12\x12\n" +
"\x04Code\x18\x01 \x01(\x05R\x04Code\x12-\n" +
"\x04List\x18\x02 \x03(\v2\x19.tutorial.ResPlayerSimpleR\x04List\"\xf3\x02\n" +
"\x04List\x18\x02 \x03(\v2\x19.tutorial.ResPlayerSimpleR\x04List\"\x8f\x03\n" +
"\x0fResPlayerSimple\x12\x10\n" +
"\x03Uid\x18\x01 \x01(\x03R\x03Uid\x12\x12\n" +
"\x04Name\x18\x02 \x01(\tR\x04Name\x12\x12\n" +
@ -24235,7 +24243,8 @@ const file_proto_Gameapi_proto_rawDesc = "" +
"\bFacebook\x18\t \x01(\tR\bFacebook\x12:\n" +
"\x05Emoji\x18\n" +
" \x03(\v2$.tutorial.ResPlayerSimple.EmojiEntryR\x05Emoji\x12\x18\n" +
"\aAddTime\x18\v \x01(\x03R\aAddTime\x1a8\n" +
"\aAddTime\x18\v \x01(\x03R\aAddTime\x12\x1a\n" +
"\bInteract\x18\f \x01(\x03R\bInteract\x1a8\n" +
"\n" +
"EmojiEntry\x12\x10\n" +
"\x03key\x18\x01 \x01(\x05R\x03key\x12\x14\n" +