Merge branch 'sdk' into online

This commit is contained in:
hahwu 2025-03-17 18:49:18 +08:00
commit d773192b85
10 changed files with 86 additions and 21 deletions

View File

@ -52,7 +52,9 @@ func RandSlice(slice []int) int {
return slice[Id]
}
func RandSliceNum(slice []int, num int) []int {
func RandSliceNum(s []int, num int) []int {
slice := make([]int, len(s))
copy(slice, s)
r := make([]int, 0, num)
if num <= 0 || len(slice) < num {
return slice
@ -82,7 +84,9 @@ func RandSliceNum2(s []interface{}, num int) []interface{} {
return r
}
func RandSliceNumNonAdjacent(slice []int, num int) []int {
func RandSliceNumNonAdjacent(s []int, num int) []int {
slice := make([]int, len(s))
copy(slice, s)
if len(slice) < 2*num {
return nil
}

View File

@ -93,6 +93,14 @@ func RedisZRangeWithScores(key string, start, stop int64) ([]redis.Z, error) {
return val, nil
}
func RedisZRevRangeWithScores(key string, start, stop int64) ([]redis.Z, error) {
val, err := Rdb.ZRevRangeWithScores(ctx, key, start, stop).Result()
if err != nil {
return nil, err
}
return val, nil
}
func RedisZRankWithScores(key, member string) (int64, float64, error) {
val, err := Rdb.ZRank(ctx, key, member).Result()
if err != nil {

View File

@ -474,7 +474,10 @@ func (p *Player) HandleItem(itemList []*item.Item, Label string) error {
ResCard := make([]*msg.CardPack, 0)
ResItem := make([]*msg.ItemInfo, 0)
ItemMod := p.PlayMod.getItemMod()
AvatarMod := p.PlayMod.getAvatarMod()
EmojiMod := p.PlayMod.getEmojiMod()
FaceMod := p.PlayMod.getFaceMod()
BackDataType := map[int]struct{}{}
for _, v := range itemList {
if v.Num == 0 {
continue
@ -625,14 +628,30 @@ func (p *Player) HandleItem(itemList []*item.Item, Label string) error {
"piggy_bank_id": Effect,
"income_from": Label,
})
case item.ITEM_TYPE_AVATAR:
case item.ITEM_TYPE_AVATAR: // 头像框
Effect := itemCfg.GetItemEffectList(v.Id)
AvatarMod := p.PlayMod.getAvatarMod()
AvatarMod.Unlock(Effect[0], Effect[1])
p.TeLog("avatarIcon_income", map[string]interface{}{
"avatar_id": Effect[0],
"income_from": Label,
})
BackDataType[item.ITEM_TYPE_AVATAR] = struct{}{}
case item.ITEM_TYPE_EMOJI: // 表情
Effect := itemCfg.GetItemEffectList(v.Id)
EmojiMod.Unlock(Effect[0], Effect[1])
p.TeLog("emoji_income", map[string]interface{}{
"emoji_id": Effect[0],
"income_from": Label,
})
BackDataType[item.ITEM_TYPE_EMOJI] = struct{}{}
case item.ITEM_TYPE_FACE: // 头像
Effect := itemCfg.GetItemEffectList(v.Id)
FaceMod.Unlock(Effect[0], Effect[1])
p.TeLog("face_income", map[string]interface{}{
"face_id": Effect[0],
"income_from": Label,
})
BackDataType[item.ITEM_TYPE_FACE] = struct{}{}
case item.ITEM_TYPE_ACTIVITY_RACE: // 活动竞速
RaceMod := p.PlayMod.getRaceMod()
RaceMod.AddCoin(v.Num)
@ -662,6 +681,14 @@ func (p *Player) HandleItem(itemList []*item.Item, Label string) error {
Lable: Label,
})
}
for k := range BackDataType {
switch k {
case item.ITEM_TYPE_AVATAR:
case item.ITEM_TYPE_EMOJI:
case item.ITEM_TYPE_FACE:
BackUserInfo(p)
}
}
CardMod := p.PlayMod.getCardMod()
p.PushClientRes(CardMod.NotifyCard())
p.PushClientRes(ItemMod.NotifyItem())

View File

@ -281,7 +281,7 @@ func getChesslvRange(Emit int, EnergyMul int) (int, int) {
func triggerComposeChess(player *Player, ChessId, EnergyMul int, Emit []int) {
OrderMod := player.PlayMod.getOrderMod()
if OrderMod.Step != 12 {
if OrderMod.Step < 12 {
return
}
if !checkChess(ChessId, EnergyMul, Emit) {

View File

@ -117,7 +117,7 @@ func (r *RankMgr) getRankInfo(m *msg.Msg) (interface{}, error) {
}
func (r *RankMgr) getRedisRankInfo(m *msg.Msg) (interface{}, error) {
RedisList, err := db.RedisZRangeWithScores(RANK_USER, 0, 100)
RedisList, err := db.RedisZRevRangeWithScores(RANK_USER, 0, 100)
if err != nil {
return &RankInfo{}, nil
}

View File

@ -364,7 +364,7 @@ func ReqDelOrder(player *Player, buf []byte) error {
req := &msg.ReqDelOrder{}
proto.Unmarshal(buf, req)
OrderMod := player.PlayMod.getOrderMod()
err := OrderMod.DelOrder(int(req.OrderId))
DelOrder, err := OrderMod.DelOrder(int(req.OrderId))
if err != nil {
player.SendErrClienRes(&msg.ResDelOrder{
Code: msg.RES_CODE_FAIL,
@ -375,6 +375,10 @@ func ReqDelOrder(player *Player, buf []byte) error {
player.PushAndSendClienRes(&msg.ResDelOrder{
Code: msg.RES_CODE_SUCCESS,
})
player.TeLog("order_delete", map[string]interface{}{
"order_id": int(req.OrderId),
"order": DelOrder,
})
player.PushClientRes(OrderMod.BackData())
return nil
}
@ -741,9 +745,12 @@ func ReqUpgradeChess(player *Player, buf []byte) error {
})
return err
}
Handbook := player.PlayMod.getHandbookMod()
Handbook.SetHandbook(NewChess)
triggerComposeChess(player, NewChess, player.PlayMod.getBaseMod().EnergyMul, player.PlayMod.getChessMod().GetEmitList())
player.PlayMod.save()
player.PushClientRes(ChessMod.BackData())
player.PushClientRes(Handbook.BackData())
player.PushClientRes(&msg.ResUpgradeChess{
Code: msg.RES_CODE_SUCCESS,
})

View File

@ -196,15 +196,26 @@ func UnitOrder2(p *Player, Lv, EnergyMul int) float64 {
return Energy / float64(5000)
}
func UnitOrder3(player *Player) error {
triggerComposeChess(player, 15, player.PlayMod.getBaseMod().EnergyMul, player.PlayMod.getChessMod().GetEmitList())
func UnitChess1(p *Player) error {
ChessMod := p.PlayMod.getChessMod()
p.PushClientRes(ChessMod.BackData())
EmitRetireTrigger1(p)
DailyTaskMod := p.PlayMod.getDailyTaskMod()
p.PushClientRes(DailyTaskMod.BackData())
return nil
}
func UnitPlayroom(p *Player) error {
PlayroomMod := p.PlayMod.getPlayroomMod()
PlayroomMod.Physiology[1].Num = 10
PlayroomMod.Physiology[1].Time = 1738978968
LimitedTimePlayroomTrigger(p)
PlayroomMod.UnLock(15)
PlayroomBackData(p)
return nil
}
func UnitDailyTask(p *Player) error {
DailyTaskMod := p.PlayMod.getDailyTaskMod()
for i := 0; i < 1000; i++ {
DailyTaskMod.WeekUpdate()
}
return nil
}

View File

@ -29,6 +29,12 @@ const (
CHESS_UPGRADE = 708 // 升级器
)
const (
EMIT_RETIRE_START = 1
EMIT_RETIRE_ING = 2
EMIT_RETIRE_END = 3
)
type ChessBorad struct {
ChessList []int
EmitList map[int]int
@ -254,7 +260,7 @@ func (cb *ChessBorad) GetEmitList() []int {
if EmitID == "" {
continue
}
if cb.Retire[EmitID] == 2 {
if cb.Retire[EmitID] == EMIT_RETIRE_END {
continue
}
EmitType := mergeDataCfg.GetEmitType(k)
@ -473,7 +479,7 @@ func (cb *ChessBorad) BeginRetire(EmitType string) error {
if ok {
return errors.New("chess has been retired")
}
cb.Retire[EmitType] = 1
cb.Retire[EmitType] = EMIT_RETIRE_START
return nil
}
@ -493,7 +499,7 @@ func (cb *ChessBorad) RetireOrder(EmitType string) error {
sort.Sort(sort.Reverse(sort.IntSlice(chess)))
cb.RetireChessMap[EmitType] = chess
cb.Retire[EmitType] = 2
cb.Retire[EmitType] = EMIT_RETIRE_ING
return nil
}
@ -502,7 +508,7 @@ func (cb *ChessBorad) FinishRetire(EmitType string) error {
if !ok {
return errors.New("chess has not been retired")
}
cb.Retire[EmitType] = 3
cb.Retire[EmitType] = EMIT_RETIRE_END
return nil
}

View File

@ -40,6 +40,8 @@ const (
ITEM_TYPE_ACTIVITY = 106 // 活动道具
ITEM_TYPE_ACTIVITY_RACE = 107 // 竞赛活动道具
ITEM_TYPE_PLAYROOM_VISIT = 108 // playroom拜访道具
ITEM_TYPE_EMOJI = 109 // 表情
ITEM_TYPE_FACE = 110 // 头像
)
func (i *ItemMod) InitData() {

View File

@ -658,16 +658,16 @@ func (o *OrderMod) Retire(EmitId string) {
o.EmitShuffle = nil
}
func (o *OrderMod) DelOrder(OrderId int) error {
func (o *OrderMod) DelOrder(OrderId int) (*Order, error) {
Order, ok := o.OrderList[OrderId]
if !ok {
return fmt.Errorf("order not exist")
return nil, fmt.Errorf("order not exist")
}
if Order.Type != Clean_Order_type {
return fmt.Errorf("order type wrong")
return nil, fmt.Errorf("order type wrong")
}
delete(o.OrderList, OrderId)
return nil
return &Order, nil
}
func (o *OrderMod) CreateComfortOrder(lv int, Emit []int, EnergyMul, Diff, ChessNum int) error {