playroom优化

This commit is contained in:
hahwu 2025-05-16 16:26:10 +08:00
parent a7fef8e6f1
commit b4dfeb2a09
7 changed files with 119 additions and 63 deletions

View File

@ -5,6 +5,7 @@ import (
"server/game/mod/item"
"server/gamedata"
"server/pkg/github.com/name5566/leaf/log"
"strings"
)
const (
@ -101,28 +102,82 @@ func GetTriggerCd() int {
return gamedata.GetIntValue(data, "Value")
}
func GetNormalItem() (int, int) {
data1, err := gamedata.GetDataByKey(CFG_PLAYROOM_CONST, "NormalFoodId")
func GetFoodItem() []int {
r := make([]int, 0)
data, err := gamedata.GetDataByKey(CFG_PLAYROOM_CONST, "Food")
if err != nil {
return 0, 0
return []int{}
}
data2, err := gamedata.GetDataByKey(CFG_PLAYROOM_CONST, "NormalCleanId")
if err != nil {
return 0, 0
for _, v := range strings.Split(gamedata.GetStringValue(data, "Value"), ",") {
if v == "" {
continue
}
return gamedata.GetIntValue(data1, "Value"), gamedata.GetIntValue(data2, "Value")
Id := GoUtil.Int(v)
r = append(r, Id)
}
return r
}
func GetPremiumItem() (int, int) {
data1, err := gamedata.GetDataByKey(CFG_PLAYROOM_CONST, "PremiumFoodId")
func GetCleanItem() []int {
r := make([]int, 0)
data, err := gamedata.GetDataByKey(CFG_PLAYROOM_CONST, "Clean")
if err != nil {
return 0, 0
return []int{}
}
data2, err := gamedata.GetDataByKey(CFG_PLAYROOM_CONST, "PremiumCleanId")
for _, v := range strings.Split(gamedata.GetStringValue(data, "Value"), ",") {
if v == "" {
continue
}
Id := GoUtil.Int(v)
r = append(r, Id)
}
return r
}
func GetToyItem() []int {
r := make([]int, 0)
data, err := gamedata.GetDataByKey(CFG_PLAYROOM_CONST, "Clean")
if err != nil {
return 0, 0
return []int{}
}
return gamedata.GetIntValue(data1, "Value"), gamedata.GetIntValue(data2, "Value")
for _, v := range strings.Split(gamedata.GetStringValue(data, "Value"), ",") {
if v == "" {
continue
}
Id := GoUtil.Int(v)
r = append(r, Id)
}
return r
}
func GetDailyItem() []int {
r := make([]int, 0)
data, err := gamedata.GetDataByKey(CFG_PLAYROOM_CONST, "Daily")
if err != nil {
return []int{}
}
for _, v := range strings.Split(gamedata.GetStringValue(data, "Value"), ",") {
if v == "" {
continue
}
Id := GoUtil.Int(v)
r = append(r, Id)
}
return r
}
func GetPremiumItem() []int {
r := make([]int, 0)
data, err := gamedata.GetDataByKey(CFG_PLAYROOM_CONST, "PremiumItem")
if err != nil {
return []int{}
}
for _, v := range strings.Split(gamedata.GetStringValue(data, "Value"), ",") {
if v == "" {
continue
}
Id := GoUtil.Int(v)
r = append(r, Id)
}
return r
}
func GetVisitorItem() int {

View File

@ -275,6 +275,19 @@ func (ad *GameLogic) SetUserData(Uid int, Op int, Data interface{}) {
})
}
func (ad *GameLogic) GetUserData(Uid int) *VarUserData {
result, err := ad.FriendMgr.Call(&MsgMod.Msg{
From: Uid,
To: Uid,
Type: MsgMod.HANDLE_TYPE_VAR_USER_GET,
SendT: GoUtil.Now(),
})
if err != nil {
return &VarUserData{}
}
return result.(*VarUserData)
}
func (ad *GameLogic) FriendMgrCall(m *MsgMod.Msg) interface{} {
result, err := ad.FriendMgr.Call(m)
if err != nil {

View File

@ -3,7 +3,6 @@ package game
import (
"server/GoUtil"
"server/game/mod/item"
"server/game/mod/msg"
proto "server/msg"
)
@ -127,18 +126,9 @@ func PlayroomVisit(p *Player, Uid int) {
r.Upvote = GoUtil.InArray(Uid, PlayroomMod.UpvoteList)
r.Items = Items
r.Status = int32(PlayroomMod.GameStatus)
data := FriendMgrCall(&msg.Msg{
From: int(p.M_DwUin),
To: Uid,
Type: msg.HANDLE_TYPE_VAR_USER_GET,
})
if data == nil {
data = &VarUserData{
Upvote: 0,
}
}
r.UpvoteCount = int32(data.(*VarUserData).Upvote)
r.Chip = int32(data.(*VarUserData).Chip)
data := G_GameLogicPtr.GetUserData(Uid)
r.UpvoteCount = int32(data.Upvote)
r.Chip = int32(data.Chip)
r.DressSet = GoUtil.MapIntToInt32(PlayerData.DressSet)
p.PushClientRes(r)

View File

@ -223,8 +223,8 @@ func ReqRewardOrder(player *Player, buf []byte) error {
if OrderType == order.Trigger_type { // playroom触发式订单获取额外道具
Item1 := PlayroomMod.GetReward()
Item = item.Merge(Item, Item1)
P1, P2 := playroomCfg.GetPremiumItem()
if P1 == Item1[0].Id || P2 == Item1[0].Id {
IdList := playroomCfg.GetPremiumItem()
if GoUtil.InArray(Item[0].Id, IdList) {
Star = int(math.Ceil(float64(Star) * 0.8))
} else {
Star = int(math.Ceil(float64(Star) * 0.6))
@ -3252,6 +3252,7 @@ func ReqPlayroomSelectReward(player *Player, buf []byte) error {
SendT: GoUtil.Now(),
Extra: Items,
})
G_GameLogicPtr.SetUserData(Target, VAR_OP_CHIP, 1)
PlayroomMod.ResetGame()
player.PlayMod.save()
PlayroomBackData(player)
@ -3440,7 +3441,6 @@ func ReqPlayroomFlipReward(player *Player, buf []byte) error {
SendT: GoUtil.Now(),
Extra: Items,
})
G_GameLogicPtr.SetUserData(Target, VAR_OP_CHIP, 1)
player.PlayMod.save()
PlayroomBackData(player)
player.PushClientRes(&msg.ResPlayroomFlipReward{

View File

@ -86,7 +86,9 @@ func (f *VarMgr) GetUserVar(key string) *VarUserData {
if v, ok := f.getData().UserVar[key]; ok {
return v
}
return &VarUserData{}
data := &VarUserData{}
f.getData().UserVar[key] = data
return data
}
func (f *VarMgr) DelVar(key string) {

View File

@ -76,6 +76,14 @@ func (i *ItemMod) GetItem(id int) int {
return i.Data[id]
}
func (i *ItemMod) GetItemNumByList(IdList []int) int {
var num int
for _, id := range IdList {
num += i.Data[id]
}
return num
}
func (i *ItemMod) CheckItem(id, num int) bool {
return i.Data[id] >= num
}

View File

@ -2,7 +2,6 @@ package playroom
import (
"fmt"
"math"
"server/GoUtil"
limitedTimeEventCfg "server/conf/limitedTimeEvent"
playroomCfg "server/conf/playroom"
@ -333,40 +332,29 @@ func (p *PlayroomMod) CreateOrderReward(Star int, itemMod *item.ItemMod) {
return
}
p.Reward = make([]*item.Item, 0)
NormalFoodId, NormalCleanId := playroomCfg.GetNormalItem()
PremiumFoodId, PremiumCleanId := playroomCfg.GetPremiumItem()
FoodItem := playroomCfg.GetFoodItem()
CleanItem := playroomCfg.GetCleanItem()
ToyItem := playroomCfg.GetToyItem()
DailyItem := playroomCfg.GetDailyItem()
NormalFoodNum := itemMod.GetItem(NormalFoodId)
NormalCleanNum := itemMod.GetItem(NormalCleanId)
FoodItemNum := itemMod.GetItemNumByList(FoodItem)
CleanItemNum := itemMod.GetItemNumByList(CleanItem)
ToyItemNum := itemMod.GetItemNumByList(ToyItem)
DailyItemNum := itemMod.GetItemNumByList(DailyItem)
type d struct {
Id []int
Num int
}
sortList := make([]d, 0)
sortList = append(sortList, d{Id: FoodItem, Num: FoodItemNum})
sortList = append(sortList, d{Id: CleanItem, Num: CleanItemNum})
sortList = append(sortList, d{Id: ToyItem, Num: ToyItemNum})
sortList = append(sortList, d{Id: DailyItem, Num: DailyItemNum})
sort.Slice(sortList, func(i, j int) bool {
return sortList[i].Num < sortList[j].Num
})
PremiumFoodNum := itemMod.GetItem(PremiumFoodId)
PremiumCleanNum := itemMod.GetItem(PremiumCleanId)
p.TriggerTime = GoUtil.Now()
if NormalFoodNum == 0 {
p.Reward = append(p.Reward, &item.Item{Id: NormalFoodId, Num: 1})
return
}
if NormalCleanNum == 0 {
p.Reward = append(p.Reward, &item.Item{Id: NormalCleanId, Num: 1})
return
}
if PremiumFoodNum == 0 {
p.Reward = append(p.Reward, &item.Item{Id: PremiumFoodId, Num: 1})
return
}
if PremiumCleanNum == 0 {
p.Reward = append(p.Reward, &item.Item{Id: PremiumCleanId, Num: 1})
return
}
var RandSlice []int
if math.Abs(float64((NormalCleanNum+PremiumCleanNum)-(NormalFoodNum+PremiumFoodNum))) > 3 {
RandSlice := GoUtil.IfTrue((NormalCleanNum+PremiumCleanNum) > (NormalFoodNum+PremiumFoodNum), []int{PremiumCleanId, NormalCleanId}, []int{NormalFoodId, PremiumFoodId}).([]int)
Prob := GoUtil.RandSlice(RandSlice)
p.Reward = append(p.Reward, &item.Item{Id: Prob, Num: 1})
return
}
RandSlice = []int{NormalFoodId, NormalCleanId, PremiumFoodId, PremiumCleanId}
Prob := GoUtil.RandSlice(RandSlice)
Prob := GoUtil.RandSlice(sortList[0].Id)
p.Reward = append(p.Reward, &item.Item{Id: Prob, Num: 1})
}