playroom优化
This commit is contained in:
parent
a7fef8e6f1
commit
b4dfeb2a09
@ -5,6 +5,7 @@ import (
|
|||||||
"server/game/mod/item"
|
"server/game/mod/item"
|
||||||
"server/gamedata"
|
"server/gamedata"
|
||||||
"server/pkg/github.com/name5566/leaf/log"
|
"server/pkg/github.com/name5566/leaf/log"
|
||||||
|
"strings"
|
||||||
)
|
)
|
||||||
|
|
||||||
const (
|
const (
|
||||||
@ -101,28 +102,82 @@ func GetTriggerCd() int {
|
|||||||
return gamedata.GetIntValue(data, "Value")
|
return gamedata.GetIntValue(data, "Value")
|
||||||
}
|
}
|
||||||
|
|
||||||
func GetNormalItem() (int, int) {
|
func GetFoodItem() []int {
|
||||||
data1, err := gamedata.GetDataByKey(CFG_PLAYROOM_CONST, "NormalFoodId")
|
r := make([]int, 0)
|
||||||
|
data, err := gamedata.GetDataByKey(CFG_PLAYROOM_CONST, "Food")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return 0, 0
|
return []int{}
|
||||||
}
|
}
|
||||||
data2, err := gamedata.GetDataByKey(CFG_PLAYROOM_CONST, "NormalCleanId")
|
for _, v := range strings.Split(gamedata.GetStringValue(data, "Value"), ",") {
|
||||||
if err != nil {
|
if v == "" {
|
||||||
return 0, 0
|
continue
|
||||||
}
|
}
|
||||||
return gamedata.GetIntValue(data1, "Value"), gamedata.GetIntValue(data2, "Value")
|
Id := GoUtil.Int(v)
|
||||||
|
r = append(r, Id)
|
||||||
|
}
|
||||||
|
return r
|
||||||
}
|
}
|
||||||
|
|
||||||
func GetPremiumItem() (int, int) {
|
func GetCleanItem() []int {
|
||||||
data1, err := gamedata.GetDataByKey(CFG_PLAYROOM_CONST, "PremiumFoodId")
|
r := make([]int, 0)
|
||||||
|
data, err := gamedata.GetDataByKey(CFG_PLAYROOM_CONST, "Clean")
|
||||||
if err != nil {
|
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 {
|
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 {
|
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{} {
|
func (ad *GameLogic) FriendMgrCall(m *MsgMod.Msg) interface{} {
|
||||||
result, err := ad.FriendMgr.Call(m)
|
result, err := ad.FriendMgr.Call(m)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|||||||
@ -3,7 +3,6 @@ package game
|
|||||||
import (
|
import (
|
||||||
"server/GoUtil"
|
"server/GoUtil"
|
||||||
"server/game/mod/item"
|
"server/game/mod/item"
|
||||||
"server/game/mod/msg"
|
|
||||||
proto "server/msg"
|
proto "server/msg"
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -127,18 +126,9 @@ func PlayroomVisit(p *Player, Uid int) {
|
|||||||
r.Upvote = GoUtil.InArray(Uid, PlayroomMod.UpvoteList)
|
r.Upvote = GoUtil.InArray(Uid, PlayroomMod.UpvoteList)
|
||||||
r.Items = Items
|
r.Items = Items
|
||||||
r.Status = int32(PlayroomMod.GameStatus)
|
r.Status = int32(PlayroomMod.GameStatus)
|
||||||
data := FriendMgrCall(&msg.Msg{
|
data := G_GameLogicPtr.GetUserData(Uid)
|
||||||
From: int(p.M_DwUin),
|
r.UpvoteCount = int32(data.Upvote)
|
||||||
To: Uid,
|
r.Chip = int32(data.Chip)
|
||||||
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)
|
|
||||||
r.DressSet = GoUtil.MapIntToInt32(PlayerData.DressSet)
|
r.DressSet = GoUtil.MapIntToInt32(PlayerData.DressSet)
|
||||||
|
|
||||||
p.PushClientRes(r)
|
p.PushClientRes(r)
|
||||||
|
|||||||
@ -223,8 +223,8 @@ func ReqRewardOrder(player *Player, buf []byte) error {
|
|||||||
if OrderType == order.Trigger_type { // playroom触发式订单获取额外道具
|
if OrderType == order.Trigger_type { // playroom触发式订单获取额外道具
|
||||||
Item1 := PlayroomMod.GetReward()
|
Item1 := PlayroomMod.GetReward()
|
||||||
Item = item.Merge(Item, Item1)
|
Item = item.Merge(Item, Item1)
|
||||||
P1, P2 := playroomCfg.GetPremiumItem()
|
IdList := playroomCfg.GetPremiumItem()
|
||||||
if P1 == Item1[0].Id || P2 == Item1[0].Id {
|
if GoUtil.InArray(Item[0].Id, IdList) {
|
||||||
Star = int(math.Ceil(float64(Star) * 0.8))
|
Star = int(math.Ceil(float64(Star) * 0.8))
|
||||||
} else {
|
} else {
|
||||||
Star = int(math.Ceil(float64(Star) * 0.6))
|
Star = int(math.Ceil(float64(Star) * 0.6))
|
||||||
@ -3252,6 +3252,7 @@ func ReqPlayroomSelectReward(player *Player, buf []byte) error {
|
|||||||
SendT: GoUtil.Now(),
|
SendT: GoUtil.Now(),
|
||||||
Extra: Items,
|
Extra: Items,
|
||||||
})
|
})
|
||||||
|
G_GameLogicPtr.SetUserData(Target, VAR_OP_CHIP, 1)
|
||||||
PlayroomMod.ResetGame()
|
PlayroomMod.ResetGame()
|
||||||
player.PlayMod.save()
|
player.PlayMod.save()
|
||||||
PlayroomBackData(player)
|
PlayroomBackData(player)
|
||||||
@ -3440,7 +3441,6 @@ func ReqPlayroomFlipReward(player *Player, buf []byte) error {
|
|||||||
SendT: GoUtil.Now(),
|
SendT: GoUtil.Now(),
|
||||||
Extra: Items,
|
Extra: Items,
|
||||||
})
|
})
|
||||||
G_GameLogicPtr.SetUserData(Target, VAR_OP_CHIP, 1)
|
|
||||||
player.PlayMod.save()
|
player.PlayMod.save()
|
||||||
PlayroomBackData(player)
|
PlayroomBackData(player)
|
||||||
player.PushClientRes(&msg.ResPlayroomFlipReward{
|
player.PushClientRes(&msg.ResPlayroomFlipReward{
|
||||||
|
|||||||
@ -86,7 +86,9 @@ func (f *VarMgr) GetUserVar(key string) *VarUserData {
|
|||||||
if v, ok := f.getData().UserVar[key]; ok {
|
if v, ok := f.getData().UserVar[key]; ok {
|
||||||
return v
|
return v
|
||||||
}
|
}
|
||||||
return &VarUserData{}
|
data := &VarUserData{}
|
||||||
|
f.getData().UserVar[key] = data
|
||||||
|
return data
|
||||||
}
|
}
|
||||||
|
|
||||||
func (f *VarMgr) DelVar(key string) {
|
func (f *VarMgr) DelVar(key string) {
|
||||||
|
|||||||
@ -76,6 +76,14 @@ func (i *ItemMod) GetItem(id int) int {
|
|||||||
return i.Data[id]
|
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 {
|
func (i *ItemMod) CheckItem(id, num int) bool {
|
||||||
return i.Data[id] >= num
|
return i.Data[id] >= num
|
||||||
}
|
}
|
||||||
|
|||||||
@ -2,7 +2,6 @@ package playroom
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
"math"
|
|
||||||
"server/GoUtil"
|
"server/GoUtil"
|
||||||
limitedTimeEventCfg "server/conf/limitedTimeEvent"
|
limitedTimeEventCfg "server/conf/limitedTimeEvent"
|
||||||
playroomCfg "server/conf/playroom"
|
playroomCfg "server/conf/playroom"
|
||||||
@ -333,40 +332,29 @@ func (p *PlayroomMod) CreateOrderReward(Star int, itemMod *item.ItemMod) {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
p.Reward = make([]*item.Item, 0)
|
p.Reward = make([]*item.Item, 0)
|
||||||
NormalFoodId, NormalCleanId := playroomCfg.GetNormalItem()
|
FoodItem := playroomCfg.GetFoodItem()
|
||||||
PremiumFoodId, PremiumCleanId := playroomCfg.GetPremiumItem()
|
CleanItem := playroomCfg.GetCleanItem()
|
||||||
|
ToyItem := playroomCfg.GetToyItem()
|
||||||
|
DailyItem := playroomCfg.GetDailyItem()
|
||||||
|
|
||||||
NormalFoodNum := itemMod.GetItem(NormalFoodId)
|
FoodItemNum := itemMod.GetItemNumByList(FoodItem)
|
||||||
NormalCleanNum := itemMod.GetItem(NormalCleanId)
|
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)
|
Prob := GoUtil.RandSlice(sortList[0].Id)
|
||||||
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)
|
|
||||||
p.Reward = append(p.Reward, &item.Item{Id: Prob, Num: 1})
|
p.Reward = append(p.Reward, &item.Item{Id: Prob, Num: 1})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user