修改宠物怪盗优化
This commit is contained in:
parent
c6b40c145c
commit
52e1427b08
@ -236,6 +236,23 @@ func SliceEqual(a, b []int) bool {
|
|||||||
return true
|
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 {
|
func InitNumSlice(start, end int) []int {
|
||||||
result := make([]int, 0, end-start+1)
|
result := make([]int, 0, end-start+1)
|
||||||
for i := start; i <= end; i++ {
|
for i := start; i <= end; i++ {
|
||||||
|
|||||||
@ -793,6 +793,7 @@ func (p *Player) GetSimpleData(Uid int, simple *PlayerSimpleData) error {
|
|||||||
func (p *Player) UpdateUserInfo() {
|
func (p *Player) UpdateUserInfo() {
|
||||||
simple := &PlayerSimpleData{}
|
simple := &PlayerSimpleData{}
|
||||||
Base := p.GetPlayerBaseMod()
|
Base := p.GetPlayerBaseMod()
|
||||||
|
CardMod := p.PlayMod.getCardMod()
|
||||||
BaseMod := p.PlayMod.getBaseMod()
|
BaseMod := p.PlayMod.getBaseMod()
|
||||||
simple.Name = p.PlayMod.getBaseMod().NickName
|
simple.Name = p.PlayMod.getBaseMod().NickName
|
||||||
simple.Avatar = p.PlayMod.getAvatarMod().SetId
|
simple.Avatar = p.PlayMod.getAvatarMod().SetId
|
||||||
@ -814,6 +815,7 @@ func (p *Player) UpdateUserInfo() {
|
|||||||
simple.Friend = p.PlayMod.getFriendMod().GetSimpleFriendList()
|
simple.Friend = p.PlayMod.getFriendMod().GetSimpleFriendList()
|
||||||
simple.Upvote = p.PlayMod.getPlayroomMod().Upvote
|
simple.Upvote = p.PlayMod.getPlayroomMod().Upvote
|
||||||
simple.DressSet = p.PlayMod.getPlayroomMod().DressSet
|
simple.DressSet = p.PlayMod.getPlayroomMod().DressSet
|
||||||
|
simple.CardInfo = CardMod.GetCardList()
|
||||||
value, _ := json.Marshal(simple)
|
value, _ := json.Marshal(simple)
|
||||||
IdStr := strconv.Itoa(int(p.M_DwUin))
|
IdStr := strconv.Itoa(int(p.M_DwUin))
|
||||||
db.RedisSetKey(IdStr, string(value), 0)
|
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)
|
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
|
Items1 := Items
|
||||||
LimitedTimeEventMod := player.PlayMod.getLimitedTimeEventMod()
|
LimitedTimeEventMod := player.PlayMod.getLimitedTimeEventMod()
|
||||||
if LimitedTimeEventMod.CheckExist(limitedTimeEvent.EVENT_TYPE_PET_THIEF) {
|
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())
|
err = player.HandleItem(Items1, msg.ITEM_POP_LABEL_PlayroomFlip.String())
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|||||||
@ -27,6 +27,7 @@ type PlayerSimpleData struct {
|
|||||||
Friend []int
|
Friend []int
|
||||||
Upvote int
|
Upvote int
|
||||||
DressSet map[int]int
|
DressSet map[int]int
|
||||||
|
CardInfo []int
|
||||||
}
|
}
|
||||||
|
|
||||||
type VarGoldCard struct {
|
type VarGoldCard struct {
|
||||||
|
|||||||
@ -579,3 +579,13 @@ func (c *CardMod) SeasonFirstReward() ([]*item.Item, error) {
|
|||||||
c.SeasonFirst = true
|
c.SeasonFirst = true
|
||||||
return cardCfg.GetSeasonFirstReward(), nil
|
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