playroom优化
This commit is contained in:
parent
a7fef8e6f1
commit
b4dfeb2a09
@ -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 {
|
||||
|
||||
@ -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 {
|
||||
|
||||
@ -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)
|
||||
|
||||
@ -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{
|
||||
|
||||
@ -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) {
|
||||
|
||||
@ -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
|
||||
}
|
||||
|
||||
@ -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})
|
||||
}
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user