日志打点

This commit is contained in:
hahwu 2025-09-19 12:09:39 +08:00
parent c1137f6a72
commit 95a4c869ff
10 changed files with 182 additions and 22 deletions

View File

@ -1,6 +1,7 @@
package GuideTaskCfg
import (
"server/GoUtil"
"server/game/mod/item"
"server/gamedata"
"server/pkg/github.com/name5566/leaf/log"
@ -42,6 +43,13 @@ func GetTaskActive(Id int) int {
}
return gamedata.GetIntValue(data, "Active")
}
func GetUnlock(Id int) int {
data, err := gamedata.GetDataByIntKey(GUIDE_TASK_TASK, Id)
if err != nil {
return 0
}
return gamedata.GetIntValue(data, "Unlock")
}
func GetActiveReward(Id int) ([]*item.Item, int) {
data, err := gamedata.GetDataByIntKey(GUIDE_TASK_ACTIVE, Id)
@ -50,6 +58,23 @@ func GetActiveReward(Id int) ([]*item.Item, int) {
}
return gamedata.GetItemList(data, "Items"), gamedata.GetIntValue(data, "Active")
}
func GetActiveReward2(reward []int, Active int) []*item.Item {
data, err := gamedata.GetData(GUIDE_TASK_ACTIVE)
if err != nil {
return nil
}
for k, v := range data {
active := gamedata.GetIntValue(v, "Active")
if active < Active {
continue
}
if GoUtil.InArray(GoUtil.Int(k), reward) {
continue
}
return gamedata.GetItemList(v, "Items")
}
return nil
}
func GetUnlockLv() int {
data, err := gamedata.GetDataByKey(GUIDE_TASK_CONST, "UnlockLv")

View File

@ -81,6 +81,14 @@ func GetOrderNum(Level int) int {
return 0
}
func GetStartOrderInfo(Id int) (int, int) {
data, err := gamedata.GetDataByIntKey(CFG_START_ORDER, Id)
if err != nil {
return -1, -1
}
return gamedata.GetIntValue(data, "group"), gamedata.GetIntValue(data, "step")
}
func GetStartOrderList() []*gamedata.StartOrderData {
ret := make([]*gamedata.StartOrderData, 0)
data, err := gamedata.GetData(CFG_START_ORDER)
@ -95,6 +103,8 @@ func GetStartOrderList() []*gamedata.StartOrderData {
Appear: gamedata.GetStringValue(v, "appear"),
Preview: gamedata.GetStringValue(v, "preview"),
Items: gamedata.GetItemList(v, "reward"),
Group: gamedata.GetIntValue(v, "group"),
Step: gamedata.GetIntValue(v, "step"),
})
}
sort.Slice(ret, func(i, j int) bool {

View File

@ -65,6 +65,38 @@ func GetLevUpExp(lv int) (int, int) {
return gamedata.GetIntValue(data, "Exp"), gamedata.GetIntValue(data, "PExp")
}
func GetNewLevUpExp(lv int, Exp int, PetExt int) (int, int) {
ExpLv := lv
PetLv := lv
for {
data1, err := gamedata.GetDataByIntKey(CFG_NAME, ExpLv)
if err != nil {
break
}
ExpNeed := gamedata.GetIntValue(data1, "Exp")
if Exp >= ExpNeed {
Exp -= ExpNeed
ExpLv++
} else {
break
}
}
for {
data2, err := gamedata.GetDataByIntKey(CFG_NAME, PetLv)
if err != nil {
break
}
PetNeed := gamedata.GetIntValue(data2, "PExp")
if PetExt >= PetNeed {
PetExt -= PetNeed
PetLv++
} else {
break
}
}
return ExpLv, PetLv
}
// 获取能量回复时间
func GetRecover(lv int) int {
data, err := gamedata.GetDataByIntKey(CFG_NAME, lv)

View File

@ -537,9 +537,12 @@ func (p *PlayerBaseData) AddExp(player *Player, exp int, pexp int) (int, error)
player.TeLog("level_up", map[string]interface{}{
"after_level": BaseMod.Level,
})
NewExpLv, NewPetLv := userCfg.GetNewLevUpExp(BaseMod.Level, BaseMod.Exp, BaseMod.PExp)
player.TeLog("property_level_up", map[string]interface{}{
"property_level": BaseMod.Level,
"property_level_reward": userCfg.GetUnlock(int(BaseMod.Level)),
"story_level": NewExpLv,
"pet_level": NewPetLv,
})
player.HandleInUserRank()
}

View File

@ -75,7 +75,7 @@ func handle(p *Player, m *msg.Msg) error {
PlayroomBackData(p)
p.TeLog("friend_add", map[string]interface{}{
"player_id": m.From,
"add_type": "invite add friend",
"add_type": "发起申请",
})
p.PlayMod.save()
case msg.HANDLE_TYPE_INVITE_FRIEND: // 邀请好友
@ -403,7 +403,7 @@ func HandleFriendMsg(p *Player, m *msg.Msg) error {
PlayroomBackData(p)
p.TeLog("friend_add", map[string]interface{}{
"player_id": m.From,
"add_type": "agree",
"add_type": "接受申请",
})
p.AddLog(m.From, friend.LOG_TYPE_FRIEND_BECOME, "", m.SendT)
case msg.HANDLE_TYPE_DEL: // 删除好友
@ -985,6 +985,68 @@ func (player *Player) GetPetOrderItemExp() int {
}
return playroomCfg.GetPetOrderItemExpByList(itemList)
}
// 触发生成新的固定订单
func (player *Player) TriggerOrder(lv int, Type string, Emit []int, EnergyMul int) error {
OrderMod := player.PlayMod.getOrderMod()
TriggerOrderList := orderCfg.GetStartOrderList()
FixedOrder := 0
for _, v := range OrderMod.OrderList {
if v.Type == order.Fixed_type {
FixedOrder++
}
}
OrderList := make(map[int]order.Order, len(OrderMod.OrderList))
for k, v := range OrderMod.OrderList {
OrderList[k] = v
}
// 触发生成新的固定订单
for _, v := range TriggerOrderList {
if GoUtil.InArray(v.Id, OrderMod.FinishOrder) {
continue
}
orderInfo, exists := OrderList[v.Id]
if exists && v.Preview == "" {
continue
}
// 预览条件不为空且未存在且未完成
if v.Preview != "" && !exists && !GoUtil.InArray(v.Id, OrderMod.FinishOrder) {
if OrderMod.CheckCondition(lv, v.Preview, Type, Emit, FixedOrder, OrderList) {
OrderMod.AddFixOrder(v.Id, v.MergeList, order.Preview_type, v.Items)
player.TeLog("preset_order_birth", map[string]interface{}{
"order_id": v.Id,
"order_item_id": v.MergeList,
"preset_order_group": v.Group,
"preset_order_step": v.Step,
})
}
}
if v.Appear != "" {
if OrderMod.CheckCondition(lv, v.Appear, Type, Emit, FixedOrder, OrderList) {
Type := order.Fixed_type
OrderType := orderCfg.GetOrderType(v.Id)
if OrderType != 0 {
Type = OrderType
}
if exists {
orderInfo.Type = order.Fixed_type
OrderMod.OrderList[v.Id] = orderInfo
} else {
OrderMod.AddFixOrder(v.Id, v.MergeList, Type, v.Items)
if v.Id == 78 {
OrderMod.Retire("D")
OrderMod.AutoEmit = append(OrderMod.AutoEmit, "D")
}
if v.Id == 79 {
OrderMod.Retire("I")
OrderMod.AutoEmit = append(OrderMod.AutoEmit, "I")
}
}
}
}
}
return nil
}
func (player *Player) AddOrder() {
BaseMod := player.PlayMod.getBaseMod()
OrderMod := player.PlayMod.getOrderMod()

View File

@ -10,10 +10,12 @@ import (
collectCfg "server/conf/collect"
decorateCfg "server/conf/decorate"
emojiCfg "server/conf/emoji"
GuideTaskCfg "server/conf/guideTask"
handbookCfg "server/conf/handbook"
limitedTimeEventCfg "server/conf/limitedTimeEvent"
mergeDataCfg "server/conf/mergeData"
miningCfg "server/conf/mining"
orderCfg "server/conf/order"
playroomCfg "server/conf/playroom"
"server/db"
"server/game/internal"
@ -337,6 +339,7 @@ func ReqRewardOrder(player *Player, buf []byte) error {
if OrderType != order.Preview_type && OrderType != order.Fixed_type {
preset_order_group = -1
}
preset_order_group, preset_order_step := orderCfg.GetStartOrderInfo(int(req.OrderId))
player.TeLog("order_finish", map[string]interface{}{
"order_id": int(req.OrderId),
"order_item_id": mergeList,
@ -345,6 +348,7 @@ func ReqRewardOrder(player *Player, buf []byte) error {
"order_item_reward": order_item_reward,
"order_star_value": Star,
"preset_order_group": preset_order_group,
"preset_order_step": preset_order_step,
})
player.PetItemGetLog(Item, nil, "Order")
EmitRetireTrigger2(player)
@ -1212,7 +1216,7 @@ func ReqGetDailyTaskReward(player *Player, buf []byte) error {
"task_id": int(req.Id),
"item_list": itemList,
"task_type": "daily",
"task_score_reward": 0,
"task_score_reward": DailyTaskMod.GetWeekReward2(),
})
return nil
}
@ -1286,9 +1290,11 @@ func ReqGetGuideTaskReward(player *Player, buf []byte) error {
})
return err
}
player.TeLog("ReqGetGuideTaskReward", map[string]interface{}{
"task_id": int(req.Id),
"item_list": itemList,
player.TeLog("new_player_task", map[string]interface{}{
"task_id": int(req.Id),
"item_list": itemList,
"task_gruop": GuideTaskCfg.GetUnlock(int(req.Id)),
"task_score_reward": GuideTaskCfg.GetActiveReward2(GuideTaskMod.Reward, GuideTaskMod.Active),
})
player.PlayMod.save()
player.PushClientRes(GuideTaskMod.BackData())
@ -1701,10 +1707,6 @@ func ReqApplyFriend(player *Player, buf []byte) error {
BaseMod := player.PlayMod.getBaseMod()
PlayroomMod.AddRoomPointInvite(BaseMod.GetLevel())
PlayroomBackData(player)
player.TeLog("friend_add", map[string]interface{}{
"player_id": Uid,
"add_type": "apply",
})
return nil
}
@ -1736,7 +1738,7 @@ func ReqAgreeFriend(player *Player, buf []byte) error {
})
player.TeLog("friend_add", map[string]interface{}{
"player_id": Uid,
"add_type": "agree",
"add_type": "接受申请",
})
player.AddLog(Uid, friend.LOG_TYPE_FRIEND_BECOME, "", GoUtil.Now())
FriendApplyBackData(player)
@ -3026,7 +3028,7 @@ func ReqAutoAddInviteFriend(player *Player, buf []byte) error {
PlayroomBackData(player)
player.TeLog("friend_add", map[string]interface{}{
"player_id": req.Id,
"add_type": "invite add friend",
"add_type": "邀请注册",
})
return nil
}
@ -3067,7 +3069,7 @@ func ReqAutoAddInviteFriend2(player *Player, buf []byte) error {
PlayroomBackData(player)
player.TeLog("friend_add", map[string]interface{}{
"player_id": req.Id,
"add_type": "invite add friend",
"add_type": "邀请注册",
})
return nil
}
@ -3077,7 +3079,7 @@ func ReqSelectLimitEvent(player *Player, buf []byte) error {
proto.Unmarshal(buf, req)
LimitedTimeEventMod := player.PlayMod.getLimitedTimeEventMod()
BaseMod := player.PlayMod.getBaseMod()
Items, EventName, slot_order_number, err := LimitedTimeEventMod.SelectProgressReward(int(req.Id), BaseMod.GetLevel(), BaseMod.GetEnergy())
Items, EventType, OrderNum, RewardList, err := LimitedTimeEventMod.SelectProgressReward(int(req.Id), BaseMod.GetLevel(), BaseMod.GetEnergy())
if err != nil {
player.SendErrClienRes(&msg.ResSelectLimitEvent{
Code: msg.RES_CODE_FAIL,
@ -3094,9 +3096,9 @@ func ReqSelectLimitEvent(player *Player, buf []byte) error {
return err
}
player.TeLog("time_limited_slot", map[string]interface{}{
"slot_order_number": slot_order_number,
"slot_reward_list": EventName,
"slot_reward": EventName,
"slot_order_number": OrderNum,
"slot_reward_list": RewardList,
"slot_reward": limitedTimeEventCfg.GetEventName(EventType),
})
player.PlayMod.save()
player.PushClientRes(LimitedTimeEventMod.BackData())
@ -3916,9 +3918,10 @@ func ReqPlayroomTask(player *Player, buf []byte) error {
})
return err
}
Type := playroomCfg.GetDailyTaskType(int(req.Id))
player.TeLog("room_daily_task", map[string]interface{}{
"task_id": req.Id,
"is_reward": PlayroomMod.DailyTaskCanReward(int(req.Id)),
"is_reward": PlayroomMod.DailyTaskCanReward(Type),
})
player.PlayMod.save()
player.PushClientRes(&msg.ResPlayroomTask{

View File

@ -192,3 +192,23 @@ func (dt *DailyTaskMod) GetWeekReward(id int) ([]*item.Item, error) {
}
return nil, fmt.Errorf("task not finish")
}
func (dt *DailyTaskMod) GetWeekReward2() []*item.Item {
max := 0
for id := range dt.WeekReward {
if id > max {
max = id
}
}
max++
if v, ok := dt.WeekReward[max]; ok {
NeedActive := dailyTaskCfg.GetTaskActiveById(max)
if dt.Active < NeedActive {
return nil
}
if !v.Status {
return v.Items
}
}
return nil
}

View File

@ -350,13 +350,14 @@ func (l *LimitedTimeEventMod) AddProgress(Lv int) {
}
// 选择进度奖励
func (l *LimitedTimeEventMod) SelectProgressReward(Id, Lv, Energy int) ([]*item.Item, int, int, error) {
func (l *LimitedTimeEventMod) SelectProgressReward(Id, Lv, Energy int) ([]*item.Item, int, int, map[int]int, error) {
RewardId, ok := l.ProgressReward[Id]
RewardList := l.ProgressReward
if !ok {
return nil, 0, 0, fmt.Errorf("RewardId not exist")
return nil, 0, 0, nil, fmt.Errorf("RewardId not exist")
}
r2 := l.ProgressMax
Item := limitedTimeEventCfg.GetProgressReward(RewardId)
OrderNum := l.ProgressMax
l.LastSelect = RewardId
l.ProgressReward = make(map[int]int)
l.Progress = 0
@ -389,7 +390,7 @@ func (l *LimitedTimeEventMod) SelectProgressReward(Id, Lv, Energy int) ([]*item.
}
l.LastOption = r
l.FirstReward = true
return Item, limitedTimeEventCfg.GetProgressRewardType(RewardId), r2, nil
return Item, limitedTimeEventCfg.GetProgressRewardType(RewardId), OrderNum, RewardList, nil
}
func (l *LimitedTimeEventMod) RemoveSuperOrder() bool {

View File

@ -500,6 +500,9 @@ func (o *OrderMod) addOrder(ChessList []int, Diff int, Type int) int {
func (o *OrderMod) AddExtraOrder(ChessList []int) {
o.addOrder(ChessList, DIFF_LOW, Extra_type)
}
func (o *OrderMod) AddFixOrder(Id int, ChessList []int, Type int, Items []*item.Item) {
o.addFixOrder(Id, ChessList, Type, Items)
}
func (o *OrderMod) addFixOrder(Id int, ChessList []int, Type int, Items []*item.Item) {
Order := Order{
MergeId: ChessList,

View File

@ -24,6 +24,7 @@ type StartOrderData struct {
Step int `json:"step"`
Appear string `json:"appear"`
Preview string `json:"preview"`
Group int `json:"group"`
Items []*item.Item
}