修改宠物怪盗优化
This commit is contained in:
parent
c6b40c145c
commit
52e1427b08
@ -236,6 +236,23 @@ func SliceEqual(a, b []int) bool {
|
||||
return true
|
||||
}
|
||||
|
||||
// IsContainSlice checks if all elements of s2 are contained in s.
|
||||
func IsContainSlice(s []int, s2 []int) bool {
|
||||
if len(s2) == 0 {
|
||||
return true
|
||||
}
|
||||
if len(s) < len(s2) {
|
||||
return false
|
||||
}
|
||||
for _, v := range s2 {
|
||||
if !InArray(v, s) {
|
||||
return false
|
||||
}
|
||||
s = SubSlices(s, []int{v})
|
||||
}
|
||||
return true
|
||||
}
|
||||
|
||||
func InitNumSlice(start, end int) []int {
|
||||
result := make([]int, 0, end-start+1)
|
||||
for i := start; i <= end; i++ {
|
||||
|
||||
@ -793,6 +793,7 @@ func (p *Player) GetSimpleData(Uid int, simple *PlayerSimpleData) error {
|
||||
func (p *Player) UpdateUserInfo() {
|
||||
simple := &PlayerSimpleData{}
|
||||
Base := p.GetPlayerBaseMod()
|
||||
CardMod := p.PlayMod.getCardMod()
|
||||
BaseMod := p.PlayMod.getBaseMod()
|
||||
simple.Name = p.PlayMod.getBaseMod().NickName
|
||||
simple.Avatar = p.PlayMod.getAvatarMod().SetId
|
||||
@ -814,6 +815,7 @@ func (p *Player) UpdateUserInfo() {
|
||||
simple.Friend = p.PlayMod.getFriendMod().GetSimpleFriendList()
|
||||
simple.Upvote = p.PlayMod.getPlayroomMod().Upvote
|
||||
simple.DressSet = p.PlayMod.getPlayroomMod().DressSet
|
||||
simple.CardInfo = CardMod.GetCardList()
|
||||
value, _ := json.Marshal(simple)
|
||||
IdStr := strconv.Itoa(int(p.M_DwUin))
|
||||
db.RedisSetKey(IdStr, string(value), 0)
|
||||
|
||||
@ -946,3 +946,54 @@ 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 {
|
||||
Star := cardCfg.GetStarById(v)
|
||||
if Star < 2 || Star > 4 {
|
||||
continue
|
||||
}
|
||||
StarList = append(StarList, v)
|
||||
}
|
||||
return StarList
|
||||
}
|
||||
|
||||
@ -3461,7 +3461,8 @@ func ReqPlayroomFlipReward(player *Player, buf []byte) error {
|
||||
Items1 := Items
|
||||
LimitedTimeEventMod := player.PlayMod.getLimitedTimeEventMod()
|
||||
if LimitedTimeEventMod.CheckExist(limitedTimeEvent.EVENT_TYPE_PET_THIEF) {
|
||||
Items1 = item.Merge(Items1, Items1)
|
||||
ThiefItem := player.GetPetThiefReward(Target)
|
||||
Items1 = item.Merge(Items1, ThiefItem)
|
||||
}
|
||||
err = player.HandleItem(Items1, msg.ITEM_POP_LABEL_PlayroomFlip.String())
|
||||
if err != nil {
|
||||
|
||||
@ -27,6 +27,7 @@ type PlayerSimpleData struct {
|
||||
Friend []int
|
||||
Upvote int
|
||||
DressSet map[int]int
|
||||
CardInfo []int
|
||||
}
|
||||
|
||||
type VarGoldCard struct {
|
||||
|
||||
@ -579,3 +579,13 @@ func (c *CardMod) SeasonFirstReward() ([]*item.Item, error) {
|
||||
c.SeasonFirst = true
|
||||
return cardCfg.GetSeasonFirstReward(), nil
|
||||
}
|
||||
|
||||
func (c *CardMod) GetCardList() []int {
|
||||
cardList := make([]int, 0)
|
||||
for k, v := range c.CardList {
|
||||
if v > 0 {
|
||||
cardList = append(cardList, k)
|
||||
}
|
||||
}
|
||||
return cardList
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user