Merge branch 'develop' into sdk
This commit is contained in:
commit
4f984125c5
@ -1,6 +1,7 @@
|
||||
package avatarCfg
|
||||
|
||||
import (
|
||||
"math/rand"
|
||||
"server/gamedata"
|
||||
"server/pkg/github.com/name5566/leaf/log"
|
||||
"strconv"
|
||||
@ -31,6 +32,15 @@ func GetInitList() []int {
|
||||
return r
|
||||
}
|
||||
|
||||
func GetRandInitId() int {
|
||||
list := GetInitList()
|
||||
if len(list) == 0 {
|
||||
return 0
|
||||
}
|
||||
index := rand.Intn(len(list))
|
||||
return list[index]
|
||||
}
|
||||
|
||||
func CheckExist(Id int) bool {
|
||||
data, err := gamedata.GetData(CFG_AVATAR)
|
||||
if err != nil {
|
||||
|
||||
@ -47,7 +47,7 @@ func GetChessScore(ChessLv int) int {
|
||||
return gamedata.GetIntValue(data, "Score")
|
||||
}
|
||||
|
||||
func GetReward(Reward, Score, activityId int) (int, []*item.Item) {
|
||||
func GetReward(Reward, Score, activityId, orderFactor int) (int, []*item.Item) {
|
||||
data, err := gamedata.GetData(CFG_CHAMPSHIP_JACKPOT)
|
||||
if err != nil {
|
||||
log.Debug("GetReward err:%v, Reward=%d, Score=%d", err, Reward, Score)
|
||||
@ -64,10 +64,18 @@ func GetReward(Reward, Score, activityId int) (int, []*item.Item) {
|
||||
if Reward >= Id {
|
||||
continue
|
||||
}
|
||||
if Score >= gamedata.GetIntValue(v, "Total") {
|
||||
if Score < gamedata.GetIntValue(v, "Total") {
|
||||
continue
|
||||
}
|
||||
Items := item.ParseItem(gamedata.GetValue(v, "Items"))
|
||||
r = item.Merge(r, Items)
|
||||
NewReward = max(NewReward, Id)
|
||||
starReward := gamedata.GetIntValue(v, "StarReward")
|
||||
if starReward > 0 {
|
||||
starnum := int((float64(starReward) * float64(orderFactor) / 500)) * 5
|
||||
if starnum > 0 {
|
||||
r = append(r, item.NewItem(item.ITEM_STAR_ID, starnum))
|
||||
}
|
||||
}
|
||||
}
|
||||
return NewReward, r
|
||||
|
||||
@ -36,6 +36,21 @@ func GetStarCost(AreaId, SortId int) int {
|
||||
return 0
|
||||
}
|
||||
|
||||
func GetStarCostByAreaId(AreaId int) int {
|
||||
data, err := gamedata.GetData(DECORATE_COST)
|
||||
if err != nil {
|
||||
log.Debug("GetStarCost err:%v, AreaId=%d", err, AreaId)
|
||||
return 0
|
||||
}
|
||||
var total int
|
||||
for _, v := range data {
|
||||
if gamedata.GetIntValue(v, "AreaId") == AreaId {
|
||||
total += gamedata.GetIntValue(v, "CostCount")
|
||||
}
|
||||
}
|
||||
return total
|
||||
}
|
||||
|
||||
func GetAreaId(id int) int {
|
||||
value, err := gamedata.GetDataByIntKey("DecorateCost", id)
|
||||
if err != nil {
|
||||
|
||||
@ -1,6 +1,7 @@
|
||||
package faceCfg
|
||||
|
||||
import (
|
||||
"math/rand"
|
||||
"server/gamedata"
|
||||
"server/pkg/github.com/name5566/leaf/log"
|
||||
"strconv"
|
||||
@ -35,6 +36,15 @@ func GetInitList() []int {
|
||||
return r
|
||||
}
|
||||
|
||||
func GetRandInitId() int {
|
||||
list := GetInitList()
|
||||
if len(list) == 0 {
|
||||
return 0
|
||||
}
|
||||
index := rand.Intn(len(list))
|
||||
return list[index]
|
||||
}
|
||||
|
||||
func CheckExist(Id int) bool {
|
||||
data, err := gamedata.GetData(CFG_FACE)
|
||||
if err != nil {
|
||||
|
||||
@ -46,6 +46,14 @@ func GetLoseItem(Id int) []*item.Item {
|
||||
return gamedata.GetItemList(data, "ItemCost")
|
||||
}
|
||||
|
||||
func GetStartItemNum(Id int) int {
|
||||
data, err := gamedata.GetDataByIntKey(CFG_MINING_TEMPLATE, Id)
|
||||
if err != nil {
|
||||
return 0
|
||||
}
|
||||
return gamedata.GetIntValue(data, "StartItemNum")
|
||||
}
|
||||
|
||||
func GetPassArea(Id int) int {
|
||||
data, err := gamedata.GetDataByIntKey(CFG_MINING_PASS, Id)
|
||||
if err != nil {
|
||||
@ -88,7 +96,7 @@ func GetRandItem() []*item.Item {
|
||||
return gamedata.GetItemList(Info, "Items")
|
||||
}
|
||||
|
||||
func GetPassItem(Id int, needStar int) []*item.Item {
|
||||
func GetPassItem(Id int, orderFactor int) []*item.Item {
|
||||
data, err := gamedata.GetDataByIntKey(CFG_MINING_PASS, Id)
|
||||
if err != nil {
|
||||
return nil
|
||||
@ -97,7 +105,7 @@ func GetPassItem(Id int, needStar int) []*item.Item {
|
||||
starReward := gamedata.GetIntValue(data, "StarReward")
|
||||
var starnum int
|
||||
if starReward > 0 {
|
||||
starnum = int(needStar * starReward / 100)
|
||||
starnum = int((float64(starReward) * float64(orderFactor) / 500)) * 5
|
||||
if starnum > 0 {
|
||||
items = append(items, &item.Item{
|
||||
Id: item.ITEM_STAR_ID,
|
||||
@ -108,7 +116,7 @@ func GetPassItem(Id int, needStar int) []*item.Item {
|
||||
return items
|
||||
}
|
||||
|
||||
func GetPassItemList(needStar int) map[int][]*item.Item {
|
||||
func GetPassItemList(orderFactor int) map[int][]*item.Item {
|
||||
data, err := gamedata.GetData(CFG_MINING_PASS)
|
||||
if err != nil {
|
||||
return nil
|
||||
@ -116,7 +124,7 @@ func GetPassItemList(needStar int) map[int][]*item.Item {
|
||||
result := make(map[int][]*item.Item)
|
||||
for k := range data {
|
||||
Id := GoUtil.Int(k)
|
||||
result[Id] = GetPassItem(Id, needStar)
|
||||
result[Id] = GetPassItem(Id, orderFactor)
|
||||
}
|
||||
return result
|
||||
}
|
||||
|
||||
@ -1,6 +1,7 @@
|
||||
package orderCfg
|
||||
|
||||
import (
|
||||
"math"
|
||||
"server/gamedata"
|
||||
"sort"
|
||||
"strconv"
|
||||
@ -33,8 +34,7 @@ func GetOrderK(Lv int) int {
|
||||
}
|
||||
Energy := gamedata.GetIntValue(data, "Energy")
|
||||
K := gamedata.GetFloatValue(data, "K")
|
||||
a := float64(Energy)*K/10 + 0.5
|
||||
return int(a) * 10
|
||||
return int(math.Round(float64(Energy)*K/10) * 10)
|
||||
}
|
||||
|
||||
func GetOrderFactor(Scene int) int {
|
||||
|
||||
@ -219,6 +219,20 @@ func RedisZRevRangeWithScores(key string, start, stop int64) ([]redis.Z, error)
|
||||
return val, nil
|
||||
}
|
||||
|
||||
func RedisZGetByIndexWithScore(key string, index int64) (*redis.Z, error) {
|
||||
if RdbRead == nil {
|
||||
return nil, nil
|
||||
}
|
||||
val, err := RdbRead.ZRangeWithScores(ctx, key, index, index).Result()
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
if len(val) == 0 {
|
||||
return nil, nil
|
||||
}
|
||||
return &val[0], nil
|
||||
}
|
||||
|
||||
func RedisZRankWithScores(key, member string) (int64, float64, error) {
|
||||
if RdbRead == nil {
|
||||
return 0, 0, nil
|
||||
@ -234,6 +248,17 @@ func RedisZRankWithScores(key, member string) (int64, float64, error) {
|
||||
return val, score, nil
|
||||
}
|
||||
|
||||
func RedisZCard(key string) (int64, error) {
|
||||
if RdbRead == nil {
|
||||
return 0, nil
|
||||
}
|
||||
val, err := RdbRead.ZCard(ctx, key).Result()
|
||||
if err != nil {
|
||||
return 0, err
|
||||
}
|
||||
return val, nil
|
||||
}
|
||||
|
||||
func RedisDel(key string) {
|
||||
if RdbWrite == nil {
|
||||
log.Debug("redis write client is nil")
|
||||
|
||||
@ -9,6 +9,7 @@ import (
|
||||
guesscolorCfg "server/conf/guess_color"
|
||||
languageCfg "server/conf/language"
|
||||
miningCfg "server/conf/mining"
|
||||
orderCfg "server/conf/order"
|
||||
passCfg "server/conf/pass"
|
||||
raceCfg "server/conf/race"
|
||||
"server/game/mod/activity"
|
||||
@ -16,6 +17,7 @@ import (
|
||||
"server/game/mod/mail"
|
||||
GoUtil "server/game_util"
|
||||
"server/msg"
|
||||
"server/pkg/github.com/name5566/leaf/log"
|
||||
)
|
||||
|
||||
// 活动模块 登录
|
||||
@ -77,6 +79,16 @@ func (p *Player) ActivityLogin() {
|
||||
p.SendActivityMail(ItemId, ItemNum, PassActivityId, RewardItems)
|
||||
}
|
||||
}
|
||||
|
||||
// 初始化活动道具
|
||||
initItem := p.GetMiningMod().GetInitItem()
|
||||
if len(initItem) > 0 {
|
||||
err := p.HandleItem(initItem, "")
|
||||
if err != nil {
|
||||
log.Debug("ActivityLogin initItem err : %s", err)
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
// 发送活动邮件
|
||||
@ -188,8 +200,8 @@ func (p *Player) MiningBackData() {
|
||||
Status := p.GetActivityStatus(activity.ACT_TYPE_MINING)
|
||||
Template := miningCfg.GetTemplate(ActivityInfo.Id)
|
||||
DecorateMod := p.PlayMod.getDecorateMod()
|
||||
needStar := DecorateMod.GetNextNeedStar()
|
||||
passRewardList := miningCfg.GetPassItemList(needStar)
|
||||
orderFactor := orderCfg.GetOrderFactor(DecorateMod.GetAreaId())
|
||||
passRewardList := miningCfg.GetPassItemList(orderFactor)
|
||||
resPassRewardList := make(map[int32]*msg.ItemList)
|
||||
for k, v := range passRewardList {
|
||||
resPassRewardList[int32(k)] = item.ItemListToMsg(v)
|
||||
|
||||
@ -3,9 +3,14 @@ package game
|
||||
import (
|
||||
"fmt"
|
||||
"math"
|
||||
"math/rand"
|
||||
|
||||
avatarCfg "server/conf/avatar"
|
||||
champshipCfg "server/conf/champship"
|
||||
faceCfg "server/conf/face"
|
||||
randnameCfg "server/conf/randname"
|
||||
"server/db"
|
||||
"server/game/mod/friend"
|
||||
"server/game/mod/msg"
|
||||
GoUtil "server/game_util"
|
||||
proto "server/msg"
|
||||
@ -55,6 +60,11 @@ type ChampshipRobot struct {
|
||||
Time int64
|
||||
Score float64
|
||||
PerScore float64
|
||||
Playroom map[int]int
|
||||
DressSet map[int]int
|
||||
FurSet int
|
||||
ActLog *friend.ActLogInfo
|
||||
PetName string
|
||||
}
|
||||
|
||||
type GroupInfo struct {
|
||||
@ -276,6 +286,14 @@ func (c *ChampshipMgr) GetPreRankMsg(Uid int) *proto.ResChampshipPreRank {
|
||||
if Robot == nil {
|
||||
continue
|
||||
}
|
||||
last := &proto.ActLog{}
|
||||
if Robot.ActLog != nil {
|
||||
last = &proto.ActLog{
|
||||
Type: int32(Robot.ActLog.Type),
|
||||
Time: Robot.ActLog.Time,
|
||||
Param: Robot.ActLog.Param,
|
||||
}
|
||||
}
|
||||
RL[int32(k+1)] = &proto.ResPlayerRank{
|
||||
Uid: int64(v.Uid),
|
||||
Score: float32(v.Score),
|
||||
@ -284,12 +302,25 @@ func (c *ChampshipMgr) GetPreRankMsg(Uid int) *proto.ResChampshipPreRank {
|
||||
Face: int32(Robot.Face),
|
||||
Level: int32(Robot.Level),
|
||||
Type: int32(v.Type),
|
||||
PlayroomSet: GoUtil.MapIntToInt32(Robot.Playroom),
|
||||
DressSet: GoUtil.MapIntToInt32(Robot.DressSet),
|
||||
FurSet: int32(Robot.FurSet),
|
||||
PetName: Robot.PetName,
|
||||
Last: last,
|
||||
}
|
||||
} else {
|
||||
SimplePlayer := G_GameLogicPtr.GetResSimplePlayerByUid(v.Uid)
|
||||
SimplePlayer := G_GameLogicPtr.GetSimplePlayerByUid(v.Uid)
|
||||
if SimplePlayer == nil {
|
||||
continue
|
||||
}
|
||||
last := &proto.ActLog{}
|
||||
if SimplePlayer.ActLog != nil {
|
||||
last = &proto.ActLog{
|
||||
Type: int32(SimplePlayer.ActLog.Type),
|
||||
Time: SimplePlayer.ActLog.Time,
|
||||
Param: SimplePlayer.ActLog.Param,
|
||||
}
|
||||
}
|
||||
RL[int32(k+1)] = &proto.ResPlayerRank{
|
||||
Uid: int64(v.Uid),
|
||||
Score: float32(v.Score),
|
||||
@ -298,6 +329,11 @@ func (c *ChampshipMgr) GetPreRankMsg(Uid int) *proto.ResChampshipPreRank {
|
||||
Face: int32(SimplePlayer.Face),
|
||||
Level: int32(SimplePlayer.Level),
|
||||
Type: int32(v.Type),
|
||||
PlayroomSet: GoUtil.MapIntToInt32(SimplePlayer.Playroom),
|
||||
DressSet: GoUtil.MapIntToInt32(SimplePlayer.DressSet),
|
||||
FurSet: int32(SimplePlayer.PetFur),
|
||||
PetName: SimplePlayer.PetName,
|
||||
Last: last,
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -335,6 +371,14 @@ func (c *ChampshipMgr) GetRankMsg(Uid int) *proto.ResChampshipRank {
|
||||
if Robot == nil {
|
||||
continue
|
||||
}
|
||||
last := &proto.ActLog{}
|
||||
if Robot.ActLog != nil {
|
||||
last = &proto.ActLog{
|
||||
Type: int32(Robot.ActLog.Type),
|
||||
Time: Robot.ActLog.Time,
|
||||
Param: Robot.ActLog.Param,
|
||||
}
|
||||
}
|
||||
RL[int32(k+1)] = &proto.ResPlayerRank{
|
||||
Uid: int64(v.Uid),
|
||||
Score: float32(v.Score),
|
||||
@ -343,12 +387,25 @@ func (c *ChampshipMgr) GetRankMsg(Uid int) *proto.ResChampshipRank {
|
||||
Face: int32(Robot.Face),
|
||||
Level: int32(Robot.Level),
|
||||
Type: int32(v.Type),
|
||||
PlayroomSet: GoUtil.MapIntToInt32(Robot.Playroom),
|
||||
DressSet: GoUtil.MapIntToInt32(Robot.DressSet),
|
||||
FurSet: int32(Robot.FurSet),
|
||||
PetName: Robot.PetName,
|
||||
Last: last,
|
||||
}
|
||||
} else {
|
||||
SimplePlayer := G_GameLogicPtr.GetResSimplePlayerByUid(v.Uid)
|
||||
SimplePlayer := G_GameLogicPtr.GetSimplePlayerByUid(v.Uid)
|
||||
if SimplePlayer == nil {
|
||||
continue
|
||||
}
|
||||
last := &proto.ActLog{}
|
||||
if SimplePlayer.ActLog != nil {
|
||||
last = &proto.ActLog{
|
||||
Type: int32(SimplePlayer.ActLog.Type),
|
||||
Time: SimplePlayer.ActLog.Time,
|
||||
Param: SimplePlayer.ActLog.Param,
|
||||
}
|
||||
}
|
||||
RL[int32(k+1)] = &proto.ResPlayerRank{
|
||||
Uid: int64(v.Uid),
|
||||
Score: float32(v.Score),
|
||||
@ -357,6 +414,11 @@ func (c *ChampshipMgr) GetRankMsg(Uid int) *proto.ResChampshipRank {
|
||||
Face: int32(SimplePlayer.Face),
|
||||
Level: int32(SimplePlayer.Level),
|
||||
Type: int32(v.Type),
|
||||
PlayroomSet: GoUtil.MapIntToInt32(SimplePlayer.Playroom),
|
||||
DressSet: GoUtil.MapIntToInt32(SimplePlayer.DressSet),
|
||||
FurSet: int32(SimplePlayer.PetFur),
|
||||
PetName: SimplePlayer.PetName,
|
||||
Last: last,
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -434,6 +496,9 @@ func (c *ChampshipMgr) group(iszero bool) (interface{}, error) {
|
||||
for j := StartId; j <= ChampshipData.AutoId; j++ { // 填充机器人
|
||||
RobotNum := 30 - len(ChampshipData.Rank[j])
|
||||
RobotList := CreateRobotList(i, RobotNum, j)
|
||||
for i := 0; i < RobotNum; i++ {
|
||||
FormatRobotInfo(RobotList[i], i+1)
|
||||
}
|
||||
for _, v := range RobotList {
|
||||
ChampshipData.Robot[ChampshipData.RobotId] = v
|
||||
ChampshipData.Rank[j] = append(ChampshipData.Rank[j], &ChampshipRank{
|
||||
@ -837,21 +902,68 @@ func CreateRobot(M float64, GroupId int) *ChampshipRobot {
|
||||
PerScore = math.Round((M/10*0.34)/(float64(GoUtil.NextZeroTimestampDuration())/1800)*100) / 100
|
||||
Score = 2
|
||||
}
|
||||
|
||||
num, err := db.RedisZCard(RANK_USER)
|
||||
if err != nil {
|
||||
num = 0
|
||||
}
|
||||
id := rand.Intn(int(num)) + 1
|
||||
rinfo, err := db.RedisZGetByIndexWithScore(RANK_USER, int64(id))
|
||||
playerSimpleData := G_GameLogicPtr.GetSimplePlayerByUid(GoUtil.Int(rinfo.Member))
|
||||
return &ChampshipRobot{
|
||||
Max: M / 10,
|
||||
Type: Type,
|
||||
Name: randnameCfg.GetRandName(),
|
||||
Avatar: GoUtil.RandNum(1, 10),
|
||||
Face: GoUtil.RandNum(1, 10),
|
||||
Avatar: avatarCfg.GetRandInitId(),
|
||||
Face: faceCfg.GetRandInitId(),
|
||||
Level: GoUtil.RandNum(1, 10),
|
||||
GroupId: GroupId,
|
||||
Time: GoUtil.Now(),
|
||||
Score: Score,
|
||||
PerScore: PerScore,
|
||||
Playroom: playerSimpleData.Playroom,
|
||||
DressSet: playerSimpleData.DressSet,
|
||||
FurSet: playerSimpleData.PetFur,
|
||||
}
|
||||
}
|
||||
|
||||
func FormatRobotInfo(Robot *ChampshipRobot, index int) {
|
||||
num, err := db.RedisZCard(RANK_USER)
|
||||
if err != nil {
|
||||
num = 0
|
||||
}
|
||||
x := int(num) / 30
|
||||
if index > int(x) {
|
||||
index = int(x)
|
||||
}
|
||||
start := int64((index - 1) * x)
|
||||
end := int64(index*x - 1)
|
||||
rinfo, err := db.RedisZRevRangeWithScores(RANK_USER, start, end)
|
||||
if err != nil {
|
||||
log.Error("FormatRobotInfo RedisZRevRangeWithScores error: %v, start %d, end %d", err, start, end)
|
||||
return
|
||||
}
|
||||
if len(rinfo) == 0 {
|
||||
log.Error("FormatRobotInfo RedisZRevRangeWithScores no data, start %d, end %d", start, end)
|
||||
return
|
||||
}
|
||||
id := rand.Intn(len(rinfo))
|
||||
if id >= len(rinfo) {
|
||||
id = len(rinfo) - 1
|
||||
}
|
||||
playerSimpleData := G_GameLogicPtr.GetSimplePlayerByUid(GoUtil.Int(rinfo[id].Member))
|
||||
if playerSimpleData == nil {
|
||||
return
|
||||
}
|
||||
Robot.Level = playerSimpleData.Level
|
||||
Robot.Avatar = playerSimpleData.Avatar
|
||||
Robot.Face = playerSimpleData.Face
|
||||
Robot.Playroom = playerSimpleData.Playroom
|
||||
Robot.DressSet = playerSimpleData.DressSet
|
||||
Robot.FurSet = playerSimpleData.PetFur
|
||||
Robot.ActLog = playerSimpleData.ActLog
|
||||
Robot.PetName = playerSimpleData.PetName
|
||||
}
|
||||
|
||||
func (c *ChampshipMgr) SetRankCache(Uid int) {
|
||||
PreRank := c.unsafe_getLastMyRank(Uid)
|
||||
Rank := c.unsafe_getMyRank(Uid)
|
||||
|
||||
@ -80,7 +80,7 @@ func (p *Player) ActivityFire(ChargeId int) {
|
||||
return
|
||||
}
|
||||
p.PlayMod.save()
|
||||
p.initAcitivity()
|
||||
p.initActivity()
|
||||
p.BackDataActivity()
|
||||
}
|
||||
|
||||
|
||||
@ -101,7 +101,7 @@ func ReqGmCommand_(player *Player, Command string) error {
|
||||
player.PlayMod.getBaseMod().Level = num
|
||||
player.PlayMod.getBaseMod().Exp = 0
|
||||
player.PushClientRes(player.PlayerBaseMod.BackAsset())
|
||||
player.initAcitivity()
|
||||
player.initActivity()
|
||||
player.PlayMod.getGuideTaskMod().Unlock(num)
|
||||
player.PlayMod.getOrderMod().TriggerOrder(num, order.TRIGGER_TYPE_LV, nil, 1)
|
||||
player.PushClientRes(player.PlayMod.getOrderMod().BackData())
|
||||
@ -124,7 +124,7 @@ func ReqGmCommand_(player *Player, Command string) error {
|
||||
ActivityMod.Var = nil
|
||||
ActivityMod.InitData()
|
||||
player.PlayMod.save()
|
||||
player.initAcitivity()
|
||||
player.initActivity()
|
||||
player.BackDataActivity()
|
||||
case "weekUpdate":
|
||||
VarMod := player.PlayMod.getVarMod()
|
||||
@ -417,7 +417,7 @@ func ReqGmCommand_(player *Player, Command string) error {
|
||||
FriendMod.Npc = nil
|
||||
FriendMod.Id = 0
|
||||
FriendMod.Log = nil
|
||||
FriendMod.InitData()
|
||||
FriendMod.InitData(player.M_DwUin)
|
||||
player.FriendListBackData()
|
||||
player.FriendLogBackData()
|
||||
case "addFriend":
|
||||
|
||||
@ -553,6 +553,7 @@ func (p *Player) handle(m *msg.Msg) error {
|
||||
Face: GoUtil.IntToInt32(faceList),
|
||||
Count: GoUtil.Int32(info["apply_count"]),
|
||||
FacebookPic: facebookPic,
|
||||
Uids: applyUids,
|
||||
})
|
||||
}
|
||||
otherUids, ok := info["other_uids"].([]int64)
|
||||
@ -574,6 +575,7 @@ func (p *Player) handle(m *msg.Msg) error {
|
||||
Face: GoUtil.IntToInt32(faceList),
|
||||
Count: GoUtil.Int32(info["other_count"]),
|
||||
FacebookPic: facebookPic,
|
||||
Uids: otherUids,
|
||||
})
|
||||
}
|
||||
default:
|
||||
@ -631,7 +633,7 @@ func ClusterSendMsg(ServerId int, m *msg.Msg) {
|
||||
func GetCardInfoMsg(CardInfo *card.CardInfo) *proto.ResFriendCard {
|
||||
Uid := 0
|
||||
if CardInfo.Type == card.TYPE_CARD_SEND {
|
||||
Uid = CardInfo.BUid
|
||||
Uid = CardInfo.AUid
|
||||
}
|
||||
|
||||
if CardInfo.Type == card.TYPE_CARD_GIVE {
|
||||
@ -1133,7 +1135,7 @@ func (player *Player) InitOrderItem() {
|
||||
continue
|
||||
}
|
||||
Star := order.GetOrderStar(v.MergeId, ChessMod.GetStarEmitList())
|
||||
Star = int(float64(Star)*float64(OrderFactor)/1000+0.5) * 10
|
||||
Star = int(float64(Star)*float64(OrderFactor)/1000) * 10
|
||||
v.Items = []*item.Item{{Id: item.ITEM_STAR_ID, Num: Star}}
|
||||
OrderMod.OrderList[k] = v
|
||||
}
|
||||
@ -1273,13 +1275,18 @@ func (p *Player) AddHighOrder() {
|
||||
ChessMap[Color] = v
|
||||
}
|
||||
}
|
||||
|
||||
RetireProduceColor := ChessMod.GetRetireProduceColor()
|
||||
for Color, ChessId := range ChessMap {
|
||||
EmitId := order.GetEmitByColor(ChessMod.GetOrderEmit(), Color)
|
||||
_, ChessMaxLv := getChesslvRange(EmitId, BaseMod.GetEnergyMul(), OrderMod.IsCharge)
|
||||
NewLev2 := mergeDataCfg.DynamicLev(ChessMaxLv, EmitId, Color)
|
||||
NewLev3 := order.AdjustLev(NewLev2, BaseMod.GetEnergyMul())
|
||||
ChessLv := mergeDataCfg.GetLvById(ChessId)
|
||||
chessColor := mergeDataCfg.GetColorById(ChessId)
|
||||
// 退役产物不生成订单
|
||||
if GoUtil.InStringArray(chessColor, RetireProduceColor) {
|
||||
continue
|
||||
}
|
||||
if NewLev3 >= ChessLv {
|
||||
continue
|
||||
}
|
||||
@ -1318,10 +1325,16 @@ func (p *Player) AddHighOrder2() {
|
||||
}
|
||||
ChessMap[v]++
|
||||
}
|
||||
RetireProduceColor := ChessMod.GetRetireProduceColor()
|
||||
for ChessId, Num := range ChessMap {
|
||||
if Num < 2 {
|
||||
continue
|
||||
}
|
||||
chessColor := mergeDataCfg.GetColorById(ChessId)
|
||||
// 退役产物不生成订单
|
||||
if GoUtil.InStringArray(chessColor, RetireProduceColor) {
|
||||
continue
|
||||
}
|
||||
add := true
|
||||
for _, v := range OrderMod.GetOrderList() {
|
||||
if GoUtil.SliceEqual(v.MergeId, []int{ChessId, ChessId}) || GoUtil.SliceEqual(v.MergeId, []int{ChessId, ChessId, ChessId}) {
|
||||
|
||||
@ -1,20 +1,18 @@
|
||||
package activity
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
activityCfg "server/conf/activity"
|
||||
"server/game/mod/item"
|
||||
GoUtil "server/game_util"
|
||||
)
|
||||
|
||||
// 活动礼包
|
||||
func (a *Activity) Fire(Id int) ([]*item.Item, error) {
|
||||
AId := activityCfg.GetActivityGiftId(Id)
|
||||
Var := a.getGiftVar(AId)
|
||||
if Var.Buy {
|
||||
return nil, fmt.Errorf("Id%d已购买", Id)
|
||||
}
|
||||
Var.Buy = true
|
||||
Var.Time = GoUtil.Now()
|
||||
// AId := activityCfg.GetActivityGiftId(Id)
|
||||
// Var := a.getGiftVar(AId)
|
||||
// if Var.Buy {
|
||||
// return nil, fmt.Errorf("Id%d已购买", Id)
|
||||
// }
|
||||
// Var.Buy = true
|
||||
// Var.Time = GoUtil.Now()
|
||||
return activityCfg.GetActivityGiftItems(Id), nil
|
||||
}
|
||||
|
||||
@ -56,8 +56,8 @@ func (c *ChampshipMod) AddScore(Chess []int) {
|
||||
c.Score += score
|
||||
}
|
||||
|
||||
func (c *ChampshipMod) GetReward(activityId int) []*item.Item {
|
||||
Reward, Items := champshipCfg.GetReward(c.Reward, c.Score, activityId)
|
||||
func (c *ChampshipMod) GetReward(activityId, orderFactor int) []*item.Item {
|
||||
Reward, Items := champshipCfg.GetReward(c.Reward, c.Score, activityId, orderFactor)
|
||||
c.Reward = Reward
|
||||
c.Max = max(c.Max, c.Reward)
|
||||
return Items
|
||||
|
||||
@ -288,6 +288,26 @@ func (c *ChargeMod) FireAdReward(ChargeId int) []*item.Item {
|
||||
return Items
|
||||
}
|
||||
|
||||
func (c *ChargeMod) AddAdTime(PetWorkDay int) {
|
||||
if PetWorkDay > 0 {
|
||||
Now := GoUtil.Now()
|
||||
if c.AdEndTime < Now {
|
||||
c.AdEndTime = Now + int64(PetWorkDay*secondsIn1Day)
|
||||
} else {
|
||||
c.AdEndTime += int64(PetWorkDay * secondsIn1Day)
|
||||
}
|
||||
c.PetWorkTime += int64(PetWorkDay * secondsIn1Day)
|
||||
c.Ad = true
|
||||
}
|
||||
}
|
||||
|
||||
func (c *ChargeMod) CheckAd() bool {
|
||||
if !c.Ad {
|
||||
return false
|
||||
}
|
||||
return true
|
||||
}
|
||||
|
||||
// 免费商店
|
||||
func (c *ChargeMod) FireFreeShop() ([]*item.Item, error) {
|
||||
if c.FreeShop >= 2 {
|
||||
|
||||
@ -725,3 +725,13 @@ func (cb *ChessBorad) GetRetireReward(Id string) ([]*item.Item, error) {
|
||||
cb.RetireReward[Id] = true
|
||||
return mergeDataCfg.GetRetireReward(), nil
|
||||
}
|
||||
|
||||
func (cb *ChessBorad) GetRetireProduceColor() []string {
|
||||
color := make([]string, 0, len(cb.Retire))
|
||||
for k, v := range cb.Retire {
|
||||
if v == EMIT_RETIRE_ING {
|
||||
color = append(color, mergeDataCfg.GetEmitTypeByColor(k))
|
||||
}
|
||||
}
|
||||
return color
|
||||
}
|
||||
|
||||
@ -132,6 +132,10 @@ func (d *Decorate) GetNextNeedStar() int {
|
||||
return 0
|
||||
}
|
||||
|
||||
func (d *Decorate) GetAreaCost() int {
|
||||
return decorateCfg.GetStarCostByAreaId(d.AreaId)
|
||||
}
|
||||
|
||||
// 一键装饰
|
||||
func (d *Decorate) DecorateAll(Star int, DecorateOffIsExist bool) ([]*item.Item, []*item.Item, int, []int, []interface{}, int) {
|
||||
DecorateAll := decorateCfg.GetAllSortIdByAreaId(d.AreaId)
|
||||
|
||||
@ -189,7 +189,7 @@ type LogInfo struct {
|
||||
}
|
||||
|
||||
// 初始化数据
|
||||
func (f *FriendMod) InitData() {
|
||||
func (f *FriendMod) InitData(M_DwUin int64) {
|
||||
if f.FriendList == nil {
|
||||
f.FriendList = make(map[int]struct{})
|
||||
}
|
||||
@ -224,6 +224,26 @@ func (f *FriendMod) InitData() {
|
||||
if f.NewApplyList == nil {
|
||||
f.NewApplyList = make(map[int]*ApplyInfo)
|
||||
}
|
||||
for k, v := range f.Card {
|
||||
if v.AUid != 0 && !f.CheckFriend(v.AUid) && v.AUid != int(M_DwUin) {
|
||||
delete(f.Card, k)
|
||||
continue
|
||||
}
|
||||
if v.BUid != 0 && !f.CheckFriend(v.BUid) && v.BUid != int(M_DwUin) {
|
||||
delete(f.Card, k)
|
||||
continue
|
||||
}
|
||||
}
|
||||
|
||||
if len(f.ReplyList) > 0 {
|
||||
validReplyList := make([]*ReplyInfo, 0, len(f.ReplyList))
|
||||
for _, v := range f.ReplyList {
|
||||
if f.CheckFriend(v.Uid) {
|
||||
validReplyList = append(validReplyList, v)
|
||||
}
|
||||
}
|
||||
f.ReplyList = validReplyList
|
||||
}
|
||||
f.version()
|
||||
}
|
||||
|
||||
@ -302,6 +322,9 @@ func (f *FriendMod) Interact(id, t int, T int64) {
|
||||
VisitTime: T,
|
||||
Type: t,
|
||||
})
|
||||
if len(f.NewFriendList[id].Interact) > 30 {
|
||||
f.NewFriendList[id].Interact = f.NewFriendList[id].Interact[len(f.NewFriendList[id].Interact)-30:]
|
||||
}
|
||||
}
|
||||
|
||||
// 获取好友交互时间
|
||||
|
||||
@ -59,6 +59,7 @@ const (
|
||||
ITEM_TYPE_PLAYROOM_BOX = 115 // playroom宝箱
|
||||
ITEM_TYPE_ACT_PASS = 116 // 通行证活动道具
|
||||
ITEM_TYPE_PET_FUR = 117 // 宠物毛皮
|
||||
ITEM_TYPE_AD_CARD = 118 // 免广告卡
|
||||
)
|
||||
|
||||
func (i *Item) String() string {
|
||||
|
||||
@ -274,7 +274,19 @@ func (l *LimitedTimeEventMod) GetChestReward(MergeList, EmitList []int) []*item.
|
||||
}
|
||||
|
||||
// 获取场景冲刺奖励
|
||||
func (l *LimitedTimeEventMod) GetSceneDashReward() (int, []*item.Item) {
|
||||
func (l *LimitedTimeEventMod) GetSceneDashReward() (int, []*item.Item, error) {
|
||||
limitInfo, ok := l.EventList[EVENT_TYPE_SENCE_DASH]
|
||||
if !ok {
|
||||
return 0, nil, fmt.Errorf("sence dash not active")
|
||||
}
|
||||
if limitInfo.Info == nil {
|
||||
return 0, nil, fmt.Errorf("sence dash info error")
|
||||
}
|
||||
times := GoUtil.Int(limitInfo.Info["Times"])
|
||||
if times <= 0 {
|
||||
return 0, nil, fmt.Errorf("no dash times")
|
||||
}
|
||||
limitInfo.Info["Times"] = times - 1
|
||||
ProbList := limitedTimeEventCfg.GetSenceJackpotProb()
|
||||
Id := GoUtil.RandMap(ProbList)
|
||||
Items := limitedTimeEventCfg.GetSenceJackpotReward(Id)
|
||||
@ -282,7 +294,7 @@ func (l *LimitedTimeEventMod) GetSceneDashReward() (int, []*item.Item) {
|
||||
// 多个奖励时,随机选择一个
|
||||
Items = []*item.Item{GoUtil.RandItem(Items)}
|
||||
}
|
||||
return Id, Items
|
||||
return Id, Items, nil
|
||||
}
|
||||
|
||||
// 获取连击快手奖励
|
||||
@ -434,6 +446,10 @@ func (l *LimitedTimeEventMod) GetCatTrickReward() ([]*item.Item, error) {
|
||||
// #region 事件信息初始化
|
||||
func initEventInfo(E *LTEInfo, EventType int) {
|
||||
switch EventType {
|
||||
case EVENT_TYPE_SENCE_DASH:
|
||||
E.Info = map[string]interface{}{
|
||||
"Times": 0,
|
||||
}
|
||||
case EVENT_TYPE_FAST_PRODUCE:
|
||||
E.Info = map[string]interface{}{
|
||||
"Times": 0,
|
||||
@ -515,6 +531,9 @@ func getLimitEventMsg(t int, e *LTEInfo) *msg.LimitEvent {
|
||||
case EVENT_TYPE_PAYBACK_DAY:
|
||||
d := e.D.(*PaybackDay)
|
||||
Param[msg.LimitEventParam_PAYBACK_DAY_COUNT.String()] = int32(d.Count)
|
||||
case EVENT_TYPE_SENCE_DASH:
|
||||
Times := GoUtil.Int(e.Info["Times"])
|
||||
Param[msg.LimitEventParam_SENCE_DASH_TIMES.String()] = int32(Times)
|
||||
}
|
||||
return &msg.LimitEvent{
|
||||
EndTime: EndTime,
|
||||
@ -537,3 +556,15 @@ func (l *LimitedTimeEventMod) GetCatDaySaleEndTime() int64 {
|
||||
}
|
||||
return v.StartT + v.Remian
|
||||
}
|
||||
|
||||
func (l *LimitedTimeEventMod) AddSenceDashTimes() bool {
|
||||
SenceInfo, ok := l.EventList[EVENT_TYPE_SENCE_DASH]
|
||||
if !ok {
|
||||
return false
|
||||
}
|
||||
if SenceInfo.Info == nil {
|
||||
return false
|
||||
}
|
||||
SenceInfo.Info["Times"] = GoUtil.Int(SenceInfo.Info["Times"]) + 1
|
||||
return true
|
||||
}
|
||||
|
||||
@ -12,6 +12,7 @@ type MiningMod struct {
|
||||
Gem []int
|
||||
Pass int
|
||||
Mining int
|
||||
InitItem bool
|
||||
}
|
||||
|
||||
func (m *MiningMod) InitData() {
|
||||
@ -34,9 +35,26 @@ func (m *MiningMod) Login(Id int) int {
|
||||
m.Gem = nil
|
||||
m.Pass = 1
|
||||
m.Mining = 0
|
||||
m.InitItem = false
|
||||
return OldId
|
||||
}
|
||||
|
||||
func (m *MiningMod) GetInitItem() []*item.Item {
|
||||
if m.InitItem {
|
||||
return nil
|
||||
}
|
||||
if m.Id == 0 {
|
||||
return nil
|
||||
}
|
||||
initItemNum := miningCfg.GetStartItemNum(m.Id)
|
||||
initItemId := miningCfg.GetActivityItemId(m.Id)
|
||||
if initItemNum > 0 && initItemId > 0 {
|
||||
m.InitItem = true
|
||||
return []*item.Item{item.NewItem(initItemId, initItemNum)}
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func (m *MiningMod) ZeroUpdate(Id int) {
|
||||
m.Login(Id)
|
||||
}
|
||||
@ -81,12 +99,12 @@ func (m *MiningMod) Take(Map map[int32]string, Gem int) ([]*item.Item, error) {
|
||||
return Items, nil
|
||||
}
|
||||
|
||||
func (m *MiningMod) GetReward(needStar int) ([]*item.Item, int, error) {
|
||||
func (m *MiningMod) GetReward(orderFactor int) ([]*item.Item, int, error) {
|
||||
GemList := miningCfg.GetPassGem(m.Pass)
|
||||
if len(m.Gem) < len(GemList) {
|
||||
return nil, 0, fmt.Errorf("gem is not full")
|
||||
}
|
||||
Items := miningCfg.GetPassItem(m.Pass, needStar)
|
||||
Items := miningCfg.GetPassItem(m.Pass, orderFactor)
|
||||
m.Pass++
|
||||
Ming := m.Mining
|
||||
m.Mining = 0
|
||||
|
||||
@ -564,22 +564,22 @@ func (o *OrderMod) CreateExtraOrder(AddChess, AddNewEmit, ChessList []int, Energ
|
||||
}
|
||||
b3 := false
|
||||
//额外订单补充2;当玩家的棋盘中出现2个相同的满级产物时,立刻生成一个对应的收购订单;
|
||||
for k := range MaxLvChess {
|
||||
ChessNum := GoUtil.GetElemNum(ChessList, k)
|
||||
if ChessNum >= 2 && Level >= 12 {
|
||||
b2 := true
|
||||
for _, v := range o.OrderList {
|
||||
if GoUtil.SliceEqual(v.MergeId, []int{k, k}) {
|
||||
b2 = false
|
||||
break
|
||||
}
|
||||
}
|
||||
if b2 {
|
||||
b3 = true
|
||||
o.addOrder([]int{k, k}, DIFF_LOW, Extra_type)
|
||||
}
|
||||
}
|
||||
}
|
||||
// for k := range MaxLvChess {
|
||||
// ChessNum := GoUtil.GetElemNum(ChessList, k)
|
||||
// if ChessNum >= 2 && Level >= 12 {
|
||||
// b2 := true
|
||||
// for _, v := range o.OrderList {
|
||||
// if GoUtil.SliceEqual(v.MergeId, []int{k, k}) {
|
||||
// b2 = false
|
||||
// break
|
||||
// }
|
||||
// }
|
||||
// if b2 {
|
||||
// b3 = true
|
||||
// o.addOrder([]int{k, k}, DIFF_LOW, Extra_type)
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
//额外订单补充1;CDEG发射器首次合成时,生成其对应2及棋子订单,完成后生成3及,再完成生成4及的;
|
||||
if b1 {
|
||||
ChessColor := mergeDataCfg.GetEmitProduceChessType(OrderEmit)
|
||||
|
||||
@ -12,6 +12,7 @@ import (
|
||||
"server/game/mod/face"
|
||||
"server/game/mod/friend"
|
||||
"server/game/mod/fur"
|
||||
"server/game/mod/item"
|
||||
limitedTimeEvent "server/game/mod/limited_time_event"
|
||||
"server/game/mod/mail"
|
||||
"server/game/mod/mining"
|
||||
@ -90,3 +91,7 @@ func (p *Player) GetMiningMod() *mining.MiningMod {
|
||||
func (p *Player) GetDailyTaskMod() *dailyTask.DailyTaskMod {
|
||||
return p.PlayMod.getDailyTaskMod()
|
||||
}
|
||||
|
||||
func (p *Player) GetItemMod() *item.ItemMod {
|
||||
return p.PlayMod.getItemMod()
|
||||
}
|
||||
|
||||
@ -394,6 +394,9 @@ func (p *Player) FriendLogBackData() {
|
||||
Uid: int64(v.Uid),
|
||||
}
|
||||
}
|
||||
if !FriendMod.CheckFriend(v.Uid) && v.Uid > 10000 {
|
||||
continue
|
||||
}
|
||||
reply = append(reply, &proto.ResFriendReply{
|
||||
Player: ps,
|
||||
Type: int32(v.Type),
|
||||
@ -414,6 +417,12 @@ func (p *Player) FriendCardBackData() {
|
||||
FriendMod := p.PlayMod.getFriendMod()
|
||||
msgList := make([]*proto.ResFriendCard, 0, len(FriendMod.Card))
|
||||
for _, v := range FriendMod.Card {
|
||||
if !FriendMod.CheckFriend(v.AUid) && v.AUid != int(p.M_DwUin) {
|
||||
continue
|
||||
}
|
||||
if !FriendMod.CheckFriend(v.BUid) && v.BUid != int(p.M_DwUin) {
|
||||
continue
|
||||
}
|
||||
msgList = append(msgList, GetCardInfoMsg(v))
|
||||
}
|
||||
p.PushClientRes(&proto.ResFriendCardMsg{
|
||||
|
||||
@ -561,7 +561,7 @@ func (p *PlayerBaseData) AddExp(player *Player, exp int, pexp int) (int, error)
|
||||
player.TriggerOrder(BaseMod.Level, order.TRIGGER_TYPE_LV, ChessMod.GetOrderEmit(), player.PlayMod.getBaseMod().GetEnergyMul())
|
||||
player.PushClientRes(OrderMod.BackData())
|
||||
// 重载活动
|
||||
player.initAcitivity()
|
||||
player.initActivity()
|
||||
player.BackDataActivity()
|
||||
player.QuestTrigger(&quest.Trigger{Label: quest.TRIGGER_LABEL_UPLV})
|
||||
player.TeLog("level_up", map[string]interface{}{
|
||||
|
||||
@ -248,7 +248,7 @@ func (p *Player) InitPlayer(UserName string) error {
|
||||
log.Debug("AddFunc failed:", err)
|
||||
}
|
||||
p.McronSave.Start()
|
||||
p.initAcitivity()
|
||||
p.initActivity()
|
||||
p.ZeroUpdate(nil)
|
||||
p.NoonUpdate(nil)
|
||||
p.Login()
|
||||
@ -307,7 +307,7 @@ func (p *Player) InitPlayerByUid(Uid int) error {
|
||||
log.Debug("AddFunc failed:", err)
|
||||
}
|
||||
p.McronSave.Start()
|
||||
p.initAcitivity()
|
||||
p.initActivity()
|
||||
p.ZeroUpdate(nil)
|
||||
p.NoonUpdate(nil)
|
||||
p.Login()
|
||||
@ -384,7 +384,7 @@ func (p *Player) ZeroUpdate(a []interface{}) {
|
||||
}
|
||||
p.PlayroomBackData()
|
||||
p.PlayMod.getChampshipMod().ZeroUpdate()
|
||||
p.initAcitivity()
|
||||
p.initActivity()
|
||||
p.ActivityZeroUpdate()
|
||||
|
||||
// 每日任务
|
||||
@ -907,6 +907,11 @@ func (p *Player) HandleItem(itemList []*item.Item, Label string) error {
|
||||
"fur_coin_cost": fur_cfg.GetFurShopCostNum(v.Id),
|
||||
"pet_fur_get_type": Label,
|
||||
})
|
||||
case item.ITEM_TYPE_AD_CARD: // 广告卡
|
||||
ChargeMod := p.PlayMod.getChargeMod()
|
||||
Effect := itemCfg.GetItemEffect(v.Id)
|
||||
ChargeMod.AddAdTime(Effect)
|
||||
BackDataType[item.ITEM_TYPE_AD_CARD] = struct{}{}
|
||||
default:
|
||||
err := ItemMod.AddItem(v.Id, v.Num)
|
||||
p.TeLog("asset_change", map[string]interface{}{
|
||||
@ -949,6 +954,8 @@ func (p *Player) HandleItem(itemList []*item.Item, Label string) error {
|
||||
case item.ITEM_TYPE_PET_FUR:
|
||||
FurMod := p.PlayMod.getFurMod()
|
||||
p.PushClientRes(FurMod.BackData())
|
||||
case item.ITEM_TYPE_AD_CARD:
|
||||
p.ChargeBackData()
|
||||
}
|
||||
}
|
||||
p.PetItemUseLog(itemList)
|
||||
@ -1164,7 +1171,7 @@ func (p *Player) TeLog(Type string, Param map[string]interface{}) {
|
||||
}
|
||||
|
||||
// 初始化活动
|
||||
func (p *Player) initAcitivity() {
|
||||
func (p *Player) initActivity() {
|
||||
p.activity = make(map[int]*ActivityInfo)
|
||||
ActivityList := activityCfg.GetActivityList()
|
||||
Level := p.GetPlayerBaseMod().GetLevel()
|
||||
@ -1186,6 +1193,7 @@ func (p *Player) initAcitivity() {
|
||||
Title: v.Title,
|
||||
}
|
||||
}
|
||||
p.ActivityLogin()
|
||||
}
|
||||
|
||||
func (p *Player) BackDataActivity() {
|
||||
|
||||
@ -206,7 +206,7 @@ func (p *PlayerModData) InitMod(player *Player) (bool, error) {
|
||||
p.ModList.Base.InitData(int(p.Data.DwUin), Ip)
|
||||
p.ModList.SevenLogin.InitData()
|
||||
p.ModList.LimitedTimeEvent.InitData(BaseMod.GetLevel())
|
||||
p.ModList.Friend.InitData()
|
||||
p.ModList.Friend.InitData(p.ModList.Base.Uid)
|
||||
p.ModList.Mail.InitData()
|
||||
p.ModList.Charge.InitData()
|
||||
p.ModList.Endless.InitData()
|
||||
|
||||
@ -539,7 +539,12 @@ func ReqDecorate(player *Player, buf []byte) error {
|
||||
"item_list": AddItem,
|
||||
})
|
||||
}
|
||||
// 跨越场景
|
||||
if DecorateMod.GetAreaId() != AreaId { // 解锁上报
|
||||
LimitEventMod := player.PlayMod.getLimitedTimeEventMod()
|
||||
if LimitEventMod.AddSenceDashTimes() {
|
||||
player.PushClientRes(LimitEventMod.BackData())
|
||||
}
|
||||
player.TeLog("plot_unlock", map[string]interface{}{
|
||||
"plot_id": DecorateMod.GetAreaId(),
|
||||
})
|
||||
@ -636,6 +641,15 @@ func ReqDecorateAll(player *Player, buf []byte) error {
|
||||
player.TeLog("scene_reward", v.(map[string]interface{}))
|
||||
}
|
||||
}
|
||||
if DecorateMod.GetAreaId() != AreaId { // 解锁上报
|
||||
LimitEventMod := player.PlayMod.getLimitedTimeEventMod()
|
||||
if LimitEventMod.AddSenceDashTimes() {
|
||||
player.PushClientRes(LimitEventMod.BackData())
|
||||
}
|
||||
player.TeLog("plot_unlock", map[string]interface{}{
|
||||
"plot_id": DecorateMod.GetAreaId(),
|
||||
})
|
||||
}
|
||||
|
||||
player.PlayMod.save()
|
||||
player.PushClientRes(DecorateMod.BackData())
|
||||
@ -1755,9 +1769,16 @@ func ReqLimitSenceReward(player *Player, buf []byte) error {
|
||||
return fmt.Errorf("not exist")
|
||||
|
||||
}
|
||||
Id, Items := limitedTimeEventMod.GetSceneDashReward()
|
||||
Id, Items, err := limitedTimeEventMod.GetSceneDashReward()
|
||||
if err != nil {
|
||||
player.SendErrClienRes(&msg.ResLimitSenceReward{
|
||||
Code: msg.RES_CODE_FAIL,
|
||||
Msg: err.Error(),
|
||||
})
|
||||
return err
|
||||
}
|
||||
player.args["ResItemPopId"] = Id
|
||||
err := player.HandleItem(Items, msg.ITEM_POP_LABEL_LimitSenceReward.String())
|
||||
err = player.HandleItem(Items, msg.ITEM_POP_LABEL_LimitSenceReward.String())
|
||||
if err != nil {
|
||||
player.SendErrClienRes(&msg.ResLimitSenceReward{
|
||||
Code: msg.RES_CODE_FAIL,
|
||||
@ -2739,8 +2760,10 @@ func ReqShippingOrder(player *Player, buf []byte) error {
|
||||
func ReqChampshipReward(player *Player, buf []byte) error {
|
||||
ChampshipMod := player.PlayMod.getChampshipMod()
|
||||
todayActivityId, _ := player.GetChampshipActivityId()
|
||||
DecorateMod := player.PlayMod.getDecorateMod()
|
||||
orderFactor := orderCfg.GetOrderFactor(DecorateMod.GetAreaId())
|
||||
RewardId := ChampshipMod.Reward
|
||||
itemList := ChampshipMod.GetReward(todayActivityId)
|
||||
itemList := ChampshipMod.GetReward(todayActivityId, orderFactor)
|
||||
err := player.HandleItem(itemList, msg.ITEM_POP_LABEL_ChampshipReward.String())
|
||||
if err != nil {
|
||||
player.SendErrClienRes(&msg.ResChampshipReward{
|
||||
@ -3165,8 +3188,8 @@ func ReqMiningReward(player *Player, buf []byte) error {
|
||||
return fmt.Errorf("activity not start")
|
||||
}
|
||||
DecorateMod := player.PlayMod.getDecorateMod()
|
||||
needStar := DecorateMod.GetNextNeedStar()
|
||||
itemList, Mining, err := MiningMod.GetReward(needStar)
|
||||
orderFactor := orderCfg.GetOrderFactor(DecorateMod.GetAreaId())
|
||||
itemList, Mining, err := MiningMod.GetReward(orderFactor)
|
||||
if err != nil {
|
||||
player.SendErrClienRes(&msg.ResMiningReward{
|
||||
Code: msg.RES_CODE_FAIL,
|
||||
@ -3417,12 +3440,12 @@ func ReqPlayroomInfo(player *Player, buf []byte) error {
|
||||
} else {
|
||||
PlayroomMod.SetGameId(playroom.GAME_TYPE_FILP)
|
||||
DecorateMod := player.PlayMod.getDecorateMod()
|
||||
needStar := DecorateMod.GetNextNeedStar()
|
||||
needStar := DecorateMod.GetAreaCost()
|
||||
highReward := int(float64(needStar) * 0.75)
|
||||
if highReward < PlayerData.Star {
|
||||
PlayroomMod.SetGameRewardFlip(max(int(float64(needStar)*0.1), 10), max(int(float64(needStar)*0.3), 10), max(int(float64(needStar)*0.75), 10))
|
||||
PlayroomMod.SetGameRewardFlip(max(int(float64(needStar)*0.1), 10), max(int(float64(needStar)*0.3), 50), max(int(float64(needStar)*0.75), 100))
|
||||
} else {
|
||||
PlayroomMod.SetGameRewardFlip(max(10, int(float64(PlayerData.Star)*0.1)), max(10, int(float64(PlayerData.Star)*0.5)), max(PlayerData.Star, 10))
|
||||
PlayroomMod.SetGameRewardFlip(max(10, int(float64(PlayerData.Star)*0.1)), max(50, int(float64(PlayerData.Star)*0.5)), max(PlayerData.Star, 100))
|
||||
}
|
||||
}
|
||||
player.PlayMod.save()
|
||||
@ -4622,7 +4645,7 @@ func ReqActivityReward(player *Player, buf []byte) error {
|
||||
"Items": Items,
|
||||
})
|
||||
player.PlayMod.save()
|
||||
player.initAcitivity()
|
||||
player.initActivity()
|
||||
player.BackDataActivity()
|
||||
player.PushClientRes(&msg.ResActivityReward{
|
||||
Code: msg.RES_CODE_SUCCESS,
|
||||
|
||||
@ -1,6 +1,7 @@
|
||||
package test
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
champshipCfg "server/conf/champship"
|
||||
"server/game"
|
||||
"testing"
|
||||
@ -35,3 +36,14 @@ func TestReqChampshipReward(t *testing.T) {
|
||||
ChampshipMod.Score = 1000
|
||||
game.ReqChampshipReward(p1, nil)
|
||||
}
|
||||
|
||||
func TestChampionshipCreateRobot(t *testing.T) {
|
||||
RobotNum := 30
|
||||
i := 5
|
||||
j := 1
|
||||
RobotList := game.CreateRobotList(i, RobotNum, j)
|
||||
for i := 0; i < RobotNum; i++ {
|
||||
game.FormatRobotInfo(RobotList[i], i+1)
|
||||
}
|
||||
fmt.Print("success")
|
||||
}
|
||||
|
||||
@ -15,7 +15,7 @@ func TestGetStarEmitList(t *testing.T) {
|
||||
OrderMod := p1.GetOrderMod()
|
||||
OrderMod.OrderList = map[int]order.Order{
|
||||
1: {
|
||||
MergeId: []int{25, 25},
|
||||
MergeId: []int{15, 15},
|
||||
},
|
||||
}
|
||||
p1.InitOrderItem()
|
||||
|
||||
@ -3,7 +3,9 @@ package test
|
||||
import (
|
||||
"fmt"
|
||||
"server/backend"
|
||||
avatarCfg "server/conf/avatar"
|
||||
decorateCfg "server/conf/decorate"
|
||||
faceCfg "server/conf/face"
|
||||
languageCfg "server/conf/language"
|
||||
notification_cfg "server/conf/notification"
|
||||
"server/db"
|
||||
@ -256,3 +258,14 @@ func TestMsgFormat(t *testing.T) {
|
||||
}
|
||||
fmt.Printf("Msg: %v\n", m)
|
||||
}
|
||||
|
||||
func TestRandFace(t *testing.T) {
|
||||
face := faceCfg.GetRandInitId()
|
||||
avatar := avatarCfg.GetRandInitId()
|
||||
fmt.Printf("Random Face ID: %d, Random Avatar ID: %d\n", face, avatar)
|
||||
}
|
||||
|
||||
func TestChampionShipCreateRobot(t *testing.T) {
|
||||
robot := game.CreateRobot(1.0, 1)
|
||||
fmt.Printf("Created Robot: %v\n", robot)
|
||||
}
|
||||
|
||||
@ -46,3 +46,11 @@ func TestReqApplyFriend(t *testing.T) {
|
||||
game.ReqApplyFriend(p1, buf)
|
||||
p1.FriendListBackData()
|
||||
}
|
||||
|
||||
func TestFriendBackData(t *testing.T) {
|
||||
p1 := new(game.Player)
|
||||
p1.InitPlayerByUid(100001)
|
||||
p1.M_DwUin = 100100129
|
||||
p1.FriendLogBackData()
|
||||
p1.FriendCardBackData()
|
||||
}
|
||||
|
||||
@ -28,3 +28,17 @@ func TestFast(t *testing.T) {
|
||||
}
|
||||
t.Logf("Fast produce items: %v", items)
|
||||
}
|
||||
|
||||
func TestSenceDash(t *testing.T) {
|
||||
p := new(game.Player)
|
||||
p.InitPlayer("3625212")
|
||||
LimitEventMod := p.GetLimitEventMod()
|
||||
LimitEventMod.AddEvent(limitedTimeEvent.EVENT_TYPE_SENCE_DASH, 60)
|
||||
LimitEventMod.AddSenceDashTimes() // 模拟一次场景冲刺
|
||||
Id, items, err := LimitEventMod.GetSceneDashReward()
|
||||
if err != nil {
|
||||
t.Errorf("GetSceneDashReward error: %v", err)
|
||||
return
|
||||
}
|
||||
t.Logf("Scene dash reward: Id=%d, items=%v", Id, items)
|
||||
}
|
||||
|
||||
@ -18,3 +18,9 @@ func TestGetPassReward(t *testing.T) {
|
||||
}
|
||||
player.MiningBackData()
|
||||
}
|
||||
|
||||
func TestInitActivityItem(t *testing.T) {
|
||||
player := new(game.Player)
|
||||
player.GetBaseMod().Level = 15
|
||||
player.Login()
|
||||
}
|
||||
|
||||
@ -40,3 +40,15 @@ func TestChestRain(t *testing.T) {
|
||||
f := LimitEventMod.GetMeteorReward([]int{226}, ChessMod.GetStarEmitList())
|
||||
fmt.Printf("chest rain reward:%v", f)
|
||||
}
|
||||
|
||||
func TestInitOrderItem(t *testing.T) {
|
||||
p1 := new(game.Player)
|
||||
p1.InitPlayer("3625212")
|
||||
OrderMod := p1.GetOrderMod()
|
||||
OrderMod.OrderList = make(map[int]order.Order)
|
||||
OrderMod.OrderList[1] = order.Order{
|
||||
MergeId: []int{15, 15},
|
||||
}
|
||||
p1.InitOrderItem()
|
||||
fmt.Printf("order item:%v", OrderMod.OrderList[1].Items)
|
||||
}
|
||||
|
||||
16
src/server/test/playroom_test.go
Normal file
16
src/server/test/playroom_test.go
Normal file
@ -0,0 +1,16 @@
|
||||
package test
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"server/game"
|
||||
"testing"
|
||||
)
|
||||
|
||||
func TestPlayroomFlipGame(t *testing.T) {
|
||||
p1 := new(game.Player)
|
||||
p1.InitPlayerByUid(100001)
|
||||
DecorateMod := p1.GetDecorateMod()
|
||||
needStar := DecorateMod.GetAreaCost()
|
||||
highReward := int(float64(needStar) * 0.75)
|
||||
fmt.Printf("needStar: %d, highReward: %d\n", needStar, highReward)
|
||||
}
|
||||
Loading…
Reference in New Issue
Block a user