宠物怪盗优化
This commit is contained in:
parent
c65ba4d019
commit
4f24b30ba8
@ -6,6 +6,7 @@ import (
|
||||
"server/gamedata"
|
||||
"server/pkg/github.com/name5566/leaf/log"
|
||||
"sort"
|
||||
"strings"
|
||||
)
|
||||
|
||||
const (
|
||||
@ -330,6 +331,22 @@ func GetHighRollerNeedEnergy() int {
|
||||
return gamedata.GetIntValue(data, "Value")
|
||||
}
|
||||
|
||||
func GetThiefProb() int {
|
||||
data, err := gamedata.GetDataByKey(CFG_LIMITED_TIME_EVENT_CONST, "Thief_Prob")
|
||||
if err != nil {
|
||||
log.Debug("GetThiefProb err:%v", err)
|
||||
return 0
|
||||
}
|
||||
value := gamedata.GetStringValue(data, "Value")
|
||||
a1 := strings.Split(value, "|")
|
||||
prob := make(map[int]int)
|
||||
for _, v := range a1 {
|
||||
a2 := strings.Split(v, ":")
|
||||
prob[GoUtil.Int(a2[0])] = GoUtil.Int(a2[1])
|
||||
}
|
||||
return GoUtil.RandMap(prob)
|
||||
}
|
||||
|
||||
// 招财猫
|
||||
|
||||
func GetMoneyCat(Id int) (float64, int) {
|
||||
|
||||
@ -11,6 +11,7 @@ import (
|
||||
cardCfg "server/conf/card"
|
||||
chargeCfg "server/conf/charge"
|
||||
decorateCfg "server/conf/decorate"
|
||||
limitedTimeEventCfg "server/conf/limitedTimeEvent"
|
||||
mailCfg "server/conf/mail"
|
||||
mergeDataCfg "server/conf/mergeData"
|
||||
playroomCfg "server/conf/playroom"
|
||||
@ -1078,45 +1079,6 @@ func (player *Player) GetPetOrderReward(Star int, Items []*item.Item) []*item.It
|
||||
return player.GetPetOrderReward(Star, Items)
|
||||
}
|
||||
|
||||
func (p *Player) GetPetThiefReward(Target int) []*item.Item {
|
||||
PlayerSimpleData := G_GameLogicPtr.GetSimplePlayerByUid(Target)
|
||||
if PlayerSimpleData == nil {
|
||||
log.Error("GetPetThiefReward Target %d not exist", Target)
|
||||
return nil
|
||||
}
|
||||
CardMod := p.PlayMod.getCardMod()
|
||||
CardList := ExcludeCardStar(CardMod.GetCardList())
|
||||
TargetCardList := ExcludeCardStar(PlayerSimpleData.CardInfo)
|
||||
if len(TargetCardList) == 0 {
|
||||
return []*item.Item{
|
||||
{Id: item.ITEM_STAR_ID, Num: 50},
|
||||
}
|
||||
}
|
||||
if GoUtil.IsContainSlice(CardList, TargetCardList) {
|
||||
CardId := GoUtil.RandSliceNum(TargetCardList, 1)[0]
|
||||
ItemId := cardCfg.GetItemIdByCardId(CardId)
|
||||
return []*item.Item{
|
||||
{Id: ItemId, Num: 1},
|
||||
}
|
||||
} else {
|
||||
CardList2 := GoUtil.SubSlices(TargetCardList, CardList)
|
||||
if len(CardList2) == 0 {
|
||||
return []*item.Item{
|
||||
{Id: item.ITEM_STAR_ID, Num: 50},
|
||||
}
|
||||
}
|
||||
CardId := GoUtil.RandSliceNum(CardList2, 1)[0]
|
||||
ItemId := cardCfg.GetItemIdByCardId(CardId)
|
||||
if ItemId == 0 {
|
||||
log.Error("GetPetThiefReward ItemId %d not exist", ItemId)
|
||||
return nil
|
||||
}
|
||||
return []*item.Item{
|
||||
{Id: ItemId, Num: 1},
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func ExcludeCardStar(CardList []int) []int {
|
||||
StarList := make([]int, 0)
|
||||
for _, v := range CardList {
|
||||
@ -1146,3 +1108,42 @@ func (p *Player) GetPlayroomGameReward(Type, SelectId int) []*item.Item {
|
||||
}
|
||||
return Items
|
||||
}
|
||||
|
||||
func (p *Player) GetPetThiefReward(Target int) error {
|
||||
PlayerData := G_GameLogicPtr.GetSimplePlayerByUid(Target)
|
||||
if PlayerData == nil {
|
||||
return fmt.Errorf("target %d not exist", Target)
|
||||
}
|
||||
CardStar := limitedTimeEventCfg.GetThiefProb()
|
||||
starMap := make(map[int][]int, 0)
|
||||
cardList := []int{}
|
||||
for _, v := range PlayerData.CardInfo {
|
||||
Star := cardCfg.GetStarById(v)
|
||||
starMap[Star] = append(starMap[Star], v)
|
||||
}
|
||||
for {
|
||||
if l, ok := starMap[CardStar]; ok {
|
||||
cardList = l
|
||||
break
|
||||
}
|
||||
if CardStar <= 1 {
|
||||
break
|
||||
}
|
||||
CardStar--
|
||||
}
|
||||
ItemId := 0
|
||||
if len(cardList) == 0 {
|
||||
List := cardCfg.GetCardListByStar(0, 1, 0)
|
||||
CardId := GoUtil.RandSlice(List)
|
||||
ItemId = cardCfg.GetItemIdByCardId(CardId)
|
||||
if ItemId == 0 {
|
||||
log.Error("LimitEventPetTheif ItemId %d not exist", ItemId)
|
||||
return fmt.Errorf("ItemId %d not exist", ItemId)
|
||||
}
|
||||
} else {
|
||||
CardId := GoUtil.RandSlice(cardList)
|
||||
ItemId = cardCfg.GetItemIdByCardId(CardId)
|
||||
}
|
||||
p.HandleItem([]*item.Item{{Id: ItemId, Num: 1}}, proto.ITEM_POP_LABEL_PetTheif.String())
|
||||
return nil
|
||||
}
|
||||
|
||||
@ -3445,9 +3445,12 @@ func ReqPlayroomSelectReward(player *Player, buf []byte) error {
|
||||
Emoji: int(req.EmojiId),
|
||||
},
|
||||
})
|
||||
LimitedTimeEventMod := player.PlayMod.getLimitedTimeEventMod()
|
||||
if LimitedTimeEventMod.CheckExist(limitedTimeEvent.EVENT_TYPE_PET_THIEF) {
|
||||
player.GetPetThiefReward(Target)
|
||||
}
|
||||
G_GameLogicPtr.SetUserData(Target, VAR_OP_CHIP, 1)
|
||||
PlayroomMod.ResetGame()
|
||||
player.PlayMod.save()
|
||||
player.TeLog("finish_mini_game", map[string]interface{}{
|
||||
"mini_game_type": PlayroomMod.GetGameId(),
|
||||
"is_chip": true,
|
||||
@ -3455,6 +3458,7 @@ func ReqPlayroomSelectReward(player *Player, buf []byte) error {
|
||||
})
|
||||
player.PlayerDecoSetLog("emoji", int(req.EmojiId), "playroom_select_reward")
|
||||
PlayroomBackData(player)
|
||||
player.PlayMod.save()
|
||||
player.PushClientRes(&msg.ResPlayroomSelectReward{
|
||||
Code: msg.RES_CODE_SUCCESS,
|
||||
})
|
||||
@ -3630,8 +3634,7 @@ func ReqPlayroomFlipReward(player *Player, buf []byte) error {
|
||||
Items1 := Items
|
||||
LimitedTimeEventMod := player.PlayMod.getLimitedTimeEventMod()
|
||||
if LimitedTimeEventMod.CheckExist(limitedTimeEvent.EVENT_TYPE_PET_THIEF) {
|
||||
ThiefItem := player.GetPetThiefReward(Target)
|
||||
Items1 = item.Merge(Items1, ThiefItem)
|
||||
player.GetPetThiefReward(Target)
|
||||
}
|
||||
err = player.HandleItem(Items1, msg.ITEM_POP_LABEL_PlayroomFlip.String())
|
||||
if err != nil {
|
||||
|
||||
@ -479,7 +479,6 @@ func initEventInfo(E *LTEInfo, EventType int) {
|
||||
MaxEarings: MaxEarning,
|
||||
}
|
||||
case EVENT_TYPE_PAYBACK_DAY:
|
||||
|
||||
E.D = &PaybackDay{
|
||||
count: limitedTimeEventCfg.GetPaybackDay(),
|
||||
}
|
||||
|
||||
@ -95,6 +95,7 @@ const (
|
||||
ITEM_POP_LABEL_CatnipGrandReward ITEM_POP_LABEL = 68 // 猫草大作战大奖奖励
|
||||
ITEM_POP_LABEL_CatnipPlay ITEM_POP_LABEL = 69 // 猫草大作战玩法奖励
|
||||
ITEM_POP_LABEL_FriendTReward ITEM_POP_LABEL = 70 // 好友时间线奖励
|
||||
ITEM_POP_LABEL_PetTheif ITEM_POP_LABEL = 71 // 宠物小偷奖励
|
||||
)
|
||||
|
||||
// Enum value maps for ITEM_POP_LABEL.
|
||||
@ -171,6 +172,7 @@ var (
|
||||
68: "CatnipGrandReward",
|
||||
69: "CatnipPlay",
|
||||
70: "FriendTReward",
|
||||
71: "PetTheif",
|
||||
}
|
||||
ITEM_POP_LABEL_value = map[string]int32{
|
||||
"Playroom": 0,
|
||||
@ -244,6 +246,7 @@ var (
|
||||
"CatnipGrandReward": 68,
|
||||
"CatnipPlay": 69,
|
||||
"FriendTReward": 70,
|
||||
"PetTheif": 71,
|
||||
}
|
||||
)
|
||||
|
||||
@ -27061,7 +27064,7 @@ const file_proto_Gameapi_proto_rawDesc = "" +
|
||||
"\vReqAdminBan\x12\x10\n" +
|
||||
"\x03Uid\x18\x01 \x01(\x03R\x03Uid\x12\x12\n" +
|
||||
"\x04Time\x18\x02 \x01(\x03R\x04Time\x12\x16\n" +
|
||||
"\x06Reason\x18\x03 \x01(\tR\x06Reason*\xc8\n" +
|
||||
"\x06Reason\x18\x03 \x01(\tR\x06Reason*\xd6\n" +
|
||||
"\n" +
|
||||
"\x0eITEM_POP_LABEL\x12\f\n" +
|
||||
"\bPlayroom\x10\x00\x12\r\n" +
|
||||
@ -27142,7 +27145,8 @@ const file_proto_Gameapi_proto_rawDesc = "" +
|
||||
"\x11CatnipGrandReward\x10D\x12\x0e\n" +
|
||||
"\n" +
|
||||
"CatnipPlay\x10E\x12\x11\n" +
|
||||
"\rFriendTReward\x10F*B\n" +
|
||||
"\rFriendTReward\x10F\x12\f\n" +
|
||||
"\bPetTheif\x10G*B\n" +
|
||||
"\vHANDLE_TYPE\x12\a\n" +
|
||||
"\x03ADD\x10\x00\x12\v\n" +
|
||||
"\aCOMPOSE\x10\x01\x12\a\n" +
|
||||
|
||||
Loading…
Reference in New Issue
Block a user