Merge branch 'sdk' into online
This commit is contained in:
commit
8fce417c9a
@ -12,6 +12,7 @@ func init() {
|
|||||||
|
|
||||||
type ClusterJoinData struct {
|
type ClusterJoinData struct {
|
||||||
ServerId int
|
ServerId int
|
||||||
|
Country int
|
||||||
RemoteAddr string
|
RemoteAddr string
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -90,3 +90,18 @@ func GetRankReward(Rank int) []*item.Item {
|
|||||||
}
|
}
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func GetMaxRewardId() int {
|
||||||
|
data, err := gamedata.GetData(CFG_CHAMPSHIP_JACKPOT)
|
||||||
|
if err != nil {
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
MaxId := 0
|
||||||
|
for k := range data {
|
||||||
|
Id := GoUtil.Int(k)
|
||||||
|
if Id > MaxId {
|
||||||
|
MaxId = Id
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return MaxId
|
||||||
|
}
|
||||||
|
|||||||
@ -47,6 +47,14 @@ func GetADReward(ChargeId int) ([]*item.Item, int) {
|
|||||||
return nil, 0
|
return nil, 0
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func GetWeeklyDiscountDay() int {
|
||||||
|
data, err := gamedata.GetDataByKey(CFG_CHARGE_CONST, "weekly_discount_day")
|
||||||
|
if err != nil {
|
||||||
|
return -1
|
||||||
|
}
|
||||||
|
return gamedata.GetIntValue(data, "Value")
|
||||||
|
}
|
||||||
|
|
||||||
func GetMoneyCharge(ChargeId int) float64 {
|
func GetMoneyCharge(ChargeId int) float64 {
|
||||||
data, err := gamedata.GetDataByIntKey(CFG_CHARGE, ChargeId)
|
data, err := gamedata.GetDataByIntKey(CFG_CHARGE, ChargeId)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@ -81,6 +89,41 @@ func GetEnergyShopId(ChargeId int) int {
|
|||||||
return 0
|
return 0
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func GetWeeklyInfo(Pos int) (int, int) {
|
||||||
|
data, err := gamedata.GetDataByKey(CFG_CHARGE_CONST, "weekly_chess_shop")
|
||||||
|
if err != nil {
|
||||||
|
return 0, 0
|
||||||
|
}
|
||||||
|
r := data["Value"].([]interface{})
|
||||||
|
for _, v := range r {
|
||||||
|
v1 := v.(map[string]interface{})
|
||||||
|
Id := GoUtil.Int(v1["Id"])
|
||||||
|
if Id == Pos {
|
||||||
|
return GoUtil.Int(v1["Discount"]), GoUtil.Int(v1["Limit"])
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return 0, 0
|
||||||
|
}
|
||||||
|
|
||||||
|
func GetWeeklyInfoAll() map[int]gamedata.WeeklyDiscountInfo {
|
||||||
|
data, err := gamedata.GetDataByKey(CFG_CHARGE_CONST, "weekly_chess_shop")
|
||||||
|
if err != nil {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
r := data["Value"].([]interface{})
|
||||||
|
res := make(map[int]gamedata.WeeklyDiscountInfo)
|
||||||
|
for _, v := range r {
|
||||||
|
v1 := v.(map[string]interface{})
|
||||||
|
Id := GoUtil.Int(v1["Id"])
|
||||||
|
res[Id] = gamedata.WeeklyDiscountInfo{
|
||||||
|
Id: GoUtil.Int(v1["Id"]),
|
||||||
|
Discount: GoUtil.Int(v1["Discount"]),
|
||||||
|
WeeklyLimit: GoUtil.Int(v1["Limit"]),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return res
|
||||||
|
}
|
||||||
|
|
||||||
func GetEnergyShopReward(ChargeId int, First bool) []*item.Item {
|
func GetEnergyShopReward(ChargeId int, First bool) []*item.Item {
|
||||||
data, err := gamedata.GetData(CFG_ENERGY_SHOP)
|
data, err := gamedata.GetData(CFG_ENERGY_SHOP)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@ -291,3 +334,16 @@ func GetPetCoinShopReward(ChargeId int) []*item.Item {
|
|||||||
}
|
}
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func GetWeeklyDiscountStartEnd() (int64, int64) {
|
||||||
|
data, err := gamedata.GetDataByKey(CFG_CHARGE_CONST, "weekly_discount_time")
|
||||||
|
if err != nil {
|
||||||
|
return 0, 0
|
||||||
|
}
|
||||||
|
str := gamedata.GetStringValue(data, "Value")
|
||||||
|
strArr := strings.Split(str, "|")
|
||||||
|
if len(strArr) != 2 {
|
||||||
|
return 0, 0
|
||||||
|
}
|
||||||
|
return GoUtil.ParseTime(strArr[0]), GoUtil.ParseTime(strArr[1])
|
||||||
|
}
|
||||||
|
|||||||
122
src/server/conf/pass/passCfg.go
Normal file
122
src/server/conf/pass/passCfg.go
Normal file
@ -0,0 +1,122 @@
|
|||||||
|
package passCfg
|
||||||
|
|
||||||
|
import (
|
||||||
|
"server/game/mod/item"
|
||||||
|
"server/gamedata"
|
||||||
|
"slices"
|
||||||
|
)
|
||||||
|
|
||||||
|
const (
|
||||||
|
CFG_PASS_TEMPLATE = "PassTemplate"
|
||||||
|
CFG_PASS = "Pass"
|
||||||
|
)
|
||||||
|
|
||||||
|
func init() {
|
||||||
|
gamedata.InitCfg(CFG_PASS_TEMPLATE)
|
||||||
|
gamedata.InitCfg(CFG_PASS)
|
||||||
|
}
|
||||||
|
|
||||||
|
func GetTemplate(Id int) int {
|
||||||
|
data, err := gamedata.GetDataByIntKey(CFG_PASS_TEMPLATE, Id)
|
||||||
|
if err != nil {
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
return gamedata.GetIntValue(data, "Template")
|
||||||
|
}
|
||||||
|
|
||||||
|
func GetActivityItemId(Id int) int {
|
||||||
|
data, err := gamedata.GetDataByIntKey(CFG_PASS_TEMPLATE, Id)
|
||||||
|
if err != nil {
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
return gamedata.GetIntValue(data, "ItemId")
|
||||||
|
}
|
||||||
|
|
||||||
|
func GetLowChargeId(Id int) int {
|
||||||
|
data, err := gamedata.GetDataByIntKey(CFG_PASS_TEMPLATE, Id)
|
||||||
|
if err != nil {
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
return gamedata.GetIntValue(data, "LowChargeId")
|
||||||
|
}
|
||||||
|
|
||||||
|
func GetHighChargeId(Id int) int {
|
||||||
|
data, err := gamedata.GetDataByIntKey(CFG_PASS_TEMPLATE, Id)
|
||||||
|
if err != nil {
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
return gamedata.GetIntValue(data, "HighChargeId")
|
||||||
|
}
|
||||||
|
|
||||||
|
func GetNewLevel(Template int, Score int, Reward []int) []int {
|
||||||
|
data, err := gamedata.GetData(CFG_PASS)
|
||||||
|
if err != nil {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
NewReward := make([]int, 0)
|
||||||
|
for _, v := range data {
|
||||||
|
if gamedata.GetIntValue(v, "Template") != Template {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
LevelScore := gamedata.GetIntValue(v, "TotalScore")
|
||||||
|
Index := gamedata.GetIntValue(v, "Level")
|
||||||
|
if Score >= LevelScore && !slices.Contains(Reward, Index) {
|
||||||
|
NewReward = append(NewReward, Index)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return NewReward
|
||||||
|
}
|
||||||
|
|
||||||
|
func GetFreeChargeItems(Template int, Reward []int) []*item.Item {
|
||||||
|
data, err := gamedata.GetData(CFG_PASS)
|
||||||
|
if err != nil {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
Items := make([]*item.Item, 0)
|
||||||
|
for _, v := range data {
|
||||||
|
if gamedata.GetIntValue(v, "Template") != Template {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
Index := gamedata.GetIntValue(v, "Level")
|
||||||
|
if slices.Contains(Reward, Index) {
|
||||||
|
Items = append(Items, gamedata.GetItemList(data, "FreeReward")...)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return Items
|
||||||
|
}
|
||||||
|
|
||||||
|
func GetLowChargeItems(Template int, Reward []int) []*item.Item {
|
||||||
|
data, err := gamedata.GetData(CFG_PASS)
|
||||||
|
if err != nil {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
Items := make([]*item.Item, 0)
|
||||||
|
for _, v := range data {
|
||||||
|
if gamedata.GetIntValue(v, "Template") != Template {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
Index := gamedata.GetIntValue(v, "Level")
|
||||||
|
if slices.Contains(Reward, Index) {
|
||||||
|
Items = append(Items, gamedata.GetItemList(data, "LowReward")...)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return Items
|
||||||
|
}
|
||||||
|
|
||||||
|
func GetHighChargeItems(Template int, Reward []int) []*item.Item {
|
||||||
|
data, err := gamedata.GetData(CFG_PASS)
|
||||||
|
if err != nil {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
Items := make([]*item.Item, 0)
|
||||||
|
for _, v := range data {
|
||||||
|
if gamedata.GetIntValue(v, "Template") != Template {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
Index := gamedata.GetIntValue(v, "Level")
|
||||||
|
if slices.Contains(Reward, Index) {
|
||||||
|
Items = append(Items, gamedata.GetItemList(data, "HighReward")...)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return Items
|
||||||
|
}
|
||||||
@ -40,12 +40,33 @@ func init() {
|
|||||||
gamedata.InitCfg(CFG_PLAYROOM_ORDERITEM)
|
gamedata.InitCfg(CFG_PLAYROOM_ORDERITEM)
|
||||||
}
|
}
|
||||||
|
|
||||||
func GetShopItem(Id int) (int, []*item.Item) {
|
func GetShopItem(Id int) (int, []*item.Item, int, int) {
|
||||||
data, err := gamedata.GetDataByIntKey(CFG_PLAYROOM_SHOP, Id)
|
data, err := gamedata.GetDataByIntKey(CFG_PLAYROOM_SHOP, Id)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return 0, nil
|
return 0, nil, 0, 0
|
||||||
}
|
}
|
||||||
return gamedata.GetIntValue(data, "ItemId"), gamedata.GetItemList(data, "Cost")
|
return gamedata.GetIntValue(data, "ItemId"), gamedata.GetItemList(data, "Cost"), gamedata.GetIntValue(data, "Discount"), gamedata.GetIntValue(data, "Limit")
|
||||||
|
}
|
||||||
|
|
||||||
|
func GetShopWeeklyLimit() map[int]gamedata.WeeklyDiscountInfo {
|
||||||
|
r := make(map[int]gamedata.WeeklyDiscountInfo)
|
||||||
|
data, err := gamedata.GetData(CFG_PLAYROOM_SHOP)
|
||||||
|
if err != nil {
|
||||||
|
return r
|
||||||
|
}
|
||||||
|
for k, v := range data {
|
||||||
|
Id := GoUtil.Int(k)
|
||||||
|
Limit := gamedata.GetIntValue(v, "Limit")
|
||||||
|
if Limit == 0 {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
r[Id] = gamedata.WeeklyDiscountInfo{
|
||||||
|
Id: Id,
|
||||||
|
Discount: gamedata.GetIntValue(v, "Discount"),
|
||||||
|
WeeklyLimit: Limit,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return r
|
||||||
}
|
}
|
||||||
|
|
||||||
func GetShopWish(Id int) int {
|
func GetShopWish(Id int) int {
|
||||||
|
|||||||
@ -7,6 +7,7 @@ import (
|
|||||||
itemCfg "server/conf/item"
|
itemCfg "server/conf/item"
|
||||||
mailCfg "server/conf/mail"
|
mailCfg "server/conf/mail"
|
||||||
miningCfg "server/conf/mining"
|
miningCfg "server/conf/mining"
|
||||||
|
passCfg "server/conf/pass"
|
||||||
raceCfg "server/conf/race"
|
raceCfg "server/conf/race"
|
||||||
"server/game/mod/activity"
|
"server/game/mod/activity"
|
||||||
"server/game/mod/item"
|
"server/game/mod/item"
|
||||||
@ -26,7 +27,7 @@ func ActivityLogin(p *Player) {
|
|||||||
ItemNum := ItemMod.GetItem(ItemId)
|
ItemNum := ItemMod.GetItem(ItemId)
|
||||||
if ItemNum != 0 {
|
if ItemNum != 0 {
|
||||||
ItemMod.AddItem(ItemId, -ItemNum)
|
ItemMod.AddItem(ItemId, -ItemNum)
|
||||||
SendActivityMail(p, ItemId, ItemNum, ActivityId)
|
SendActivityMail(p, ItemId, ItemNum, ActivityId, nil)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// 猜颜色
|
// 猜颜色
|
||||||
@ -38,7 +39,7 @@ func ActivityLogin(p *Player) {
|
|||||||
ItemNum := ItemMod.GetItem(ItemId)
|
ItemNum := ItemMod.GetItem(ItemId)
|
||||||
if ItemNum != 0 {
|
if ItemNum != 0 {
|
||||||
ItemMod.AddItem(ItemId, -ItemNum)
|
ItemMod.AddItem(ItemId, -ItemNum)
|
||||||
SendActivityMail(p, ItemId, ItemNum, ActivityId)
|
SendActivityMail(p, ItemId, ItemNum, ActivityId, nil)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -51,22 +52,38 @@ func ActivityLogin(p *Player) {
|
|||||||
ItemNum := ItemMod.GetItem(ItemId)
|
ItemNum := ItemMod.GetItem(ItemId)
|
||||||
if ItemNum != 0 {
|
if ItemNum != 0 {
|
||||||
ItemMod.AddItem(ItemId, -ItemNum)
|
ItemMod.AddItem(ItemId, -ItemNum)
|
||||||
SendActivityMail(p, ItemId, ItemNum, ActivityId)
|
SendActivityMail(p, ItemId, ItemNum, ActivityId, nil)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// 通行证
|
||||||
|
ActivityId = GetActivityId(p, activity.ACT_TYPE_PASS)
|
||||||
|
PassMod := p.PlayMod.getPassMod()
|
||||||
|
OldId = PassMod.Login(ActivityId)
|
||||||
|
if OldId != 0 {
|
||||||
|
ItemId := passCfg.GetActivityItemId(OldId)
|
||||||
|
ItemNum := PassMod.Num
|
||||||
|
RewardItems, _ := PassMod.GetRewardItems()
|
||||||
|
if ItemNum != 0 {
|
||||||
|
ItemMod.AddItem(ItemId, -ItemNum)
|
||||||
|
SendActivityMail(p, ItemId, ItemNum, ActivityId, RewardItems)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func SendActivityMail(p *Player, ItemId, ItemNum, ActivityId int) {
|
func SendActivityMail(p *Player, ItemId, ItemNum, ActivityId int, RewardItems []*item.Item) {
|
||||||
MailMod := p.PlayMod.getMailMod()
|
MailMod := p.PlayMod.getMailMod()
|
||||||
ItemName, ItemNameEn := itemCfg.GetItemName(ItemId)
|
ItemName, ItemNameEn := itemCfg.GetItemName(ItemId)
|
||||||
ActivityTitle, ActivityTitleEn := activityCfg.GetActivityTitle(ActivityId)
|
ActivityTitle, ActivityTitleEn := activityCfg.GetActivityTitle(ActivityId)
|
||||||
mt, mc, mt_en, mc_en := mailCfg.GetRecallMail(ActivityTitle, ActivityTitleEn, ItemName, ItemNameEn)
|
mt, mc, mt_en, mc_en := mailCfg.GetRecallMail(ActivityTitle, ActivityTitleEn, ItemName, ItemNameEn)
|
||||||
Items := []*item.Item{item.NewItem(ItemId, ItemNum)}
|
Items := []*item.Item{item.NewItem(ItemId, ItemNum)}
|
||||||
|
Items = append(Items, RewardItems...)
|
||||||
MailMod.Send(mt, "", mc, mt_en, "", mc_en, Items, mail.MAIL_TYPE_NORMAL)
|
MailMod.Send(mt, "", mc, mt_en, "", mc_en, Items, mail.MAIL_TYPE_NORMAL)
|
||||||
}
|
}
|
||||||
|
|
||||||
// 活动模块 零点更新
|
// 活动模块 零点更新
|
||||||
func ActivityZeroUpdate(p *Player) {
|
func ActivityZeroUpdate(p *Player) {
|
||||||
|
ActivityLogin(p)
|
||||||
ActivityInfo := GetActivityInfo(p, activity.ACT_TYPE_MINING)
|
ActivityInfo := GetActivityInfo(p, activity.ACT_TYPE_MINING)
|
||||||
if ActivityInfo != nil {
|
if ActivityInfo != nil {
|
||||||
MiningMod := p.PlayMod.getMiningMod()
|
MiningMod := p.PlayMod.getMiningMod()
|
||||||
@ -114,16 +131,16 @@ func GetActivityInfoById(p *Player, Id int) *ActivityInfo {
|
|||||||
func GetActivityStatus(p *Player, actType int) int {
|
func GetActivityStatus(p *Player, actType int) int {
|
||||||
ActivityInfo := GetActivityInfo(p, actType)
|
ActivityInfo := GetActivityInfo(p, actType)
|
||||||
if ActivityInfo == nil {
|
if ActivityInfo == nil {
|
||||||
return 0
|
return ACT_STATUS_NOT_START
|
||||||
}
|
}
|
||||||
Now := GoUtil.Now()
|
Now := GoUtil.Now()
|
||||||
if Now < ActivityInfo.StartT {
|
if Now < ActivityInfo.StartT {
|
||||||
return 0
|
return ACT_STATUS_NOT_START
|
||||||
}
|
}
|
||||||
if Now > ActivityInfo.EndT {
|
if Now > ActivityInfo.EndT {
|
||||||
return 2
|
return ACT_STATUS_END
|
||||||
}
|
}
|
||||||
return 1
|
return ACT_STATUS_START
|
||||||
}
|
}
|
||||||
|
|
||||||
func MiningBackData(p *Player) {
|
func MiningBackData(p *Player) {
|
||||||
@ -218,6 +235,26 @@ func RedBackData(p *Player) {
|
|||||||
p.PushClientRes(&msg.ResActRed{Red: result})
|
p.PushClientRes(&msg.ResActRed{Red: result})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func ActPassBackData(p *Player) {
|
||||||
|
ActivityInfo := GetActivityInfo(p, activity.ACT_TYPE_PASS)
|
||||||
|
if ActivityInfo == nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
Status := GetActivityStatus(p, activity.ACT_TYPE_PASS)
|
||||||
|
Template := passCfg.GetTemplate(ActivityInfo.Id)
|
||||||
|
PassMod := p.PlayMod.getPassMod()
|
||||||
|
p.PushClientRes(&msg.ResActPass{
|
||||||
|
Id: int32(ActivityInfo.Id),
|
||||||
|
Status: int32(Status),
|
||||||
|
Template: int32(Template),
|
||||||
|
EndTime: int32(ActivityInfo.EndT),
|
||||||
|
LowPass: PassMod.LowPass > 0,
|
||||||
|
HighPass: PassMod.HighPass > 0,
|
||||||
|
Score: int32(PassMod.Num),
|
||||||
|
Reward: GoUtil.IntToInt32(PassMod.Reward),
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
func GetActivityItem(p *Player, ActType []int) []*item.Item {
|
func GetActivityItem(p *Player, ActType []int) []*item.Item {
|
||||||
Items := make([]*item.Item, 0)
|
Items := make([]*item.Item, 0)
|
||||||
for _, v := range ActType {
|
for _, v := range ActType {
|
||||||
@ -240,6 +277,10 @@ func GetActivityItem(p *Player, ActType []int) []*item.Item {
|
|||||||
ItemId := raceCfg.GetCoin(ActivityInfo.Id)
|
ItemId := raceCfg.GetCoin(ActivityInfo.Id)
|
||||||
Item := item.NewItem(ItemId, 1)
|
Item := item.NewItem(ItemId, 1)
|
||||||
Items = append(Items, Item)
|
Items = append(Items, Item)
|
||||||
|
case activity.ACT_TYPE_PASS:
|
||||||
|
ItemId := passCfg.GetActivityItemId(ActivityInfo.Id)
|
||||||
|
Item := item.NewItem(ItemId, 1)
|
||||||
|
Items = append(Items, Item)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return Items
|
return Items
|
||||||
|
|||||||
@ -3,6 +3,8 @@ package game
|
|||||||
import (
|
import (
|
||||||
"server/GoUtil"
|
"server/GoUtil"
|
||||||
activityCfg "server/conf/activity"
|
activityCfg "server/conf/activity"
|
||||||
|
passCfg "server/conf/pass"
|
||||||
|
"server/game/mod/activity"
|
||||||
"server/game/mod/item"
|
"server/game/mod/item"
|
||||||
MsgMod "server/game/mod/msg"
|
MsgMod "server/game/mod/msg"
|
||||||
"server/game/mod/piggyBank"
|
"server/game/mod/piggyBank"
|
||||||
@ -18,6 +20,7 @@ func Charge(p *Player, ChargeId int) {
|
|||||||
PlayroomFire(p, ChargeId) // 游乐场
|
PlayroomFire(p, ChargeId) // 游乐场
|
||||||
ActivityFire(p, ChargeId) // 活动礼包
|
ActivityFire(p, ChargeId) // 活动礼包
|
||||||
ADPetWorkFire(p, ChargeId) // 广告宠物工作
|
ADPetWorkFire(p, ChargeId) // 广告宠物工作
|
||||||
|
PassFire(p, ChargeId)
|
||||||
OrderMod := p.PlayMod.getOrderMod()
|
OrderMod := p.PlayMod.getOrderMod()
|
||||||
OrderMod.SetIsCharge() // 设置订单模块为充值状态
|
OrderMod.SetIsCharge() // 设置订单模块为充值状态
|
||||||
p.QuestTrigger(&quest.Trigger{Label: quest.TRIGGER_LABEL_PURCHASE, A: []interface{}{}})
|
p.QuestTrigger(&quest.Trigger{Label: quest.TRIGGER_LABEL_PURCHASE, A: []interface{}{}})
|
||||||
@ -36,13 +39,12 @@ func SendCharge(p *Player, d *ChargeExtra) {
|
|||||||
func ADPetWorkFire(p *Player, ChargeId int) {
|
func ADPetWorkFire(p *Player, ChargeId int) {
|
||||||
ChargeMod := p.PlayMod.getChargeMod()
|
ChargeMod := p.PlayMod.getChargeMod()
|
||||||
Item := ChargeMod.FireAdReward(ChargeId)
|
Item := ChargeMod.FireAdReward(ChargeId)
|
||||||
if Item == nil {
|
if Item != nil {
|
||||||
return
|
err := p.HandleItem(Item, msg.ITEM_POP_LABEL_ActivityGift.String())
|
||||||
}
|
if err != nil {
|
||||||
err := p.HandleItem(Item, msg.ITEM_POP_LABEL_ActivityGift.String())
|
log.Debug("ChargeFire err : %s", err)
|
||||||
if err != nil {
|
return
|
||||||
log.Debug("ChargeFire err : %s", err)
|
}
|
||||||
return
|
|
||||||
}
|
}
|
||||||
p.PlayMod.save()
|
p.PlayMod.save()
|
||||||
p.PushClientRes(ChargeMod.BackData())
|
p.PushClientRes(ChargeMod.BackData())
|
||||||
@ -74,6 +76,36 @@ func ActivityFire(p *Player, ChargeId int) {
|
|||||||
p.BackDataActivity()
|
p.BackDataActivity()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func PassFire(p *Player, ChargeId int) {
|
||||||
|
ActivityStatus := GetActivityStatus(p, activity.ACT_TYPE_PASS)
|
||||||
|
if ActivityStatus != ACT_STATUS_START {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
ActivityInfo := GetActivityInfo(p, activity.ACT_TYPE_PASS)
|
||||||
|
if ActivityInfo == nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
LowChargeId := passCfg.GetLowChargeId(ActivityInfo.Id)
|
||||||
|
PassMod := p.PlayMod.getPassMod()
|
||||||
|
Items := []*item.Item{}
|
||||||
|
if ChargeId == LowChargeId {
|
||||||
|
Items = PassMod.GetLowChargeItems()
|
||||||
|
}
|
||||||
|
HighChargeId := passCfg.GetHighChargeId(ActivityInfo.Id)
|
||||||
|
if ChargeId == HighChargeId {
|
||||||
|
Items = PassMod.GetHighChargeItems()
|
||||||
|
}
|
||||||
|
if len(Items) == 0 {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
err := p.HandleItem(Items, msg.ITEM_POP_LABEL_PassCharge.String())
|
||||||
|
if err != nil {
|
||||||
|
log.Debug("PassFire err : %s", err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
p.PlayMod.save()
|
||||||
|
}
|
||||||
|
|
||||||
func PlayroomFire(p *Player, ChargeId int) {
|
func PlayroomFire(p *Player, ChargeId int) {
|
||||||
PlayroomMod := p.PlayMod.getPlayroomMod()
|
PlayroomMod := p.PlayMod.getPlayroomMod()
|
||||||
Item := PlayroomMod.Fire(ChargeId)
|
Item := PlayroomMod.Fire(ChargeId)
|
||||||
|
|||||||
@ -143,7 +143,6 @@ func (gl *GameLogic) OpenTimestampTick() {
|
|||||||
gl.NoonFlush()
|
gl.NoonFlush()
|
||||||
})
|
})
|
||||||
//gl.CreateDailyLogFile()
|
//gl.CreateDailyLogFile()
|
||||||
|
|
||||||
go func() {
|
go func() {
|
||||||
for k := range gl.Mdispatr.ChanTimer {
|
for k := range gl.Mdispatr.ChanTimer {
|
||||||
k.Cb()
|
k.Cb()
|
||||||
@ -478,6 +477,43 @@ func (ad *GameLogic) GetResSimplePlayerByUid(Id int) *msg.ResPlayerSimple {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (ad *GameLogic) GetResFriendPlayerByUid(Id int) *msg.ResFriendPlayerSimple {
|
||||||
|
Idstr := strconv.Itoa(Id)
|
||||||
|
Value, _ := db.RedisGetKey(Idstr)
|
||||||
|
player := &PlayerSimpleData{}
|
||||||
|
player.Uid = Id
|
||||||
|
if Value == "" {
|
||||||
|
p := new(Player)
|
||||||
|
err := p.GetSimpleData(Id, player)
|
||||||
|
if err != nil {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
value, _ := json.Marshal(player)
|
||||||
|
db.RedisSetKey(Idstr, string(value), 0)
|
||||||
|
} else {
|
||||||
|
err := json.Unmarshal([]byte(Value), player)
|
||||||
|
if err != nil {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return &msg.ResFriendPlayerSimple{
|
||||||
|
Uid: int64(player.Uid),
|
||||||
|
Name: player.Name,
|
||||||
|
Level: int32(player.Level),
|
||||||
|
Avatar: int32(player.Avatar),
|
||||||
|
Face: int32(player.Face),
|
||||||
|
Decorate: int32(player.Decorate),
|
||||||
|
Login: int32(player.Login),
|
||||||
|
Loginout: int32(player.Loginout),
|
||||||
|
Emoji: GoUtil.MapIntToInt32(player.Emoji),
|
||||||
|
Facebook: player.FaceBook,
|
||||||
|
Playroom: GoUtil.MapIntToInt32(player.Playroom),
|
||||||
|
DressSet: GoUtil.MapIntToInt32(player.DressSet),
|
||||||
|
Friend: GoUtil.IntToInt32(player.Friend),
|
||||||
|
Physiology: GoUtil.MapIntToInt32(player.Physiology),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// 初始化服务器协程
|
// 初始化服务器协程
|
||||||
func G_getGameLogic() *GameLogic {
|
func G_getGameLogic() *GameLogic {
|
||||||
if !isInitGameLogic {
|
if !isInitGameLogic {
|
||||||
@ -670,6 +706,7 @@ func (ad *GameLogic) RegisterNetWorkFunc() {
|
|||||||
|
|
||||||
RegisterMsgProcessFunc("ReqRemoveAd", ReqRemoveAdFunc)
|
RegisterMsgProcessFunc("ReqRemoveAd", ReqRemoveAdFunc)
|
||||||
RegisterMsgProcessFunc("ReqPlayerBriefProfileData", ReqPlayerBriefProfileDataFunc)
|
RegisterMsgProcessFunc("ReqPlayerBriefProfileData", ReqPlayerBriefProfileDataFunc)
|
||||||
|
RegisterMsgProcessFunc("ReqFriendPlayerSimple", ReqFriendPlayerSimple)
|
||||||
// RegisterMsgProcessFunc("ReqOfflineReconnect", ReqOfflineReconnectFunc)
|
// RegisterMsgProcessFunc("ReqOfflineReconnect", ReqOfflineReconnectFunc)
|
||||||
RegisterMsgProcessFunc("ReqPlayerAsset", ReqPlayerAsset)
|
RegisterMsgProcessFunc("ReqPlayerAsset", ReqPlayerAsset)
|
||||||
RegisterMsgProcessFunc("ReqId2Verify", ReqId2Verify) // 身份证验证
|
RegisterMsgProcessFunc("ReqId2Verify", ReqId2Verify) // 身份证验证
|
||||||
@ -851,6 +888,9 @@ func (ad *GameLogic) RegisterNetWorkFunc() {
|
|||||||
RegisterMsgProcessFunc("ReqCatnipPlay", ReqCatnipPlay) // 猫草大作战游戏转盘
|
RegisterMsgProcessFunc("ReqCatnipPlay", ReqCatnipPlay) // 猫草大作战游戏转盘
|
||||||
RegisterMsgProcessFunc("ReqCatnipReward", ReqCatnipReward) // 猫草大作战领取奖励
|
RegisterMsgProcessFunc("ReqCatnipReward", ReqCatnipReward) // 猫草大作战领取奖励
|
||||||
RegisterMsgProcessFunc("ReqCatnipGrandReward", ReqCatnipGrandReward) // 猫草大作战领取大奖
|
RegisterMsgProcessFunc("ReqCatnipGrandReward", ReqCatnipGrandReward) // 猫草大作战领取大奖
|
||||||
|
// 活动通行证
|
||||||
|
RegisterMsgProcessFunc("ReqActPass", ReqActPass) // 请求活动通行证数据
|
||||||
|
RegisterMsgProcessFunc("ReqActPassReward", ReqActPassReward) // 领取活动通行证奖励
|
||||||
// #region playroom
|
// #region playroom
|
||||||
RegisterMsgProcessFunc("ReqPlayroom", ReqPlayroom) // 请求playroom数据
|
RegisterMsgProcessFunc("ReqPlayroom", ReqPlayroom) // 请求playroom数据
|
||||||
RegisterMsgProcessFunc("ReqPlayroomInfo", ReqPlayroomInfo) // 请求playroom拜访信息
|
RegisterMsgProcessFunc("ReqPlayroomInfo", ReqPlayroomInfo) // 请求playroom拜访信息
|
||||||
|
|||||||
@ -17,6 +17,7 @@ import (
|
|||||||
"server/game/mod/activity"
|
"server/game/mod/activity"
|
||||||
"server/game/mod/avatar"
|
"server/game/mod/avatar"
|
||||||
"server/game/mod/card"
|
"server/game/mod/card"
|
||||||
|
"server/game/mod/chess"
|
||||||
"server/game/mod/decorate"
|
"server/game/mod/decorate"
|
||||||
"server/game/mod/emoji"
|
"server/game/mod/emoji"
|
||||||
"server/game/mod/face"
|
"server/game/mod/face"
|
||||||
@ -146,6 +147,24 @@ func ReqGmCommand_(player *Player, Command string) error {
|
|||||||
"PayTime": GoUtil.Now(),
|
"PayTime": GoUtil.Now(),
|
||||||
})
|
})
|
||||||
Charge(player, ChargeId)
|
Charge(player, ChargeId)
|
||||||
|
case "AddPart":
|
||||||
|
ChessMod := player.PlayMod.getChessMod()
|
||||||
|
ChessMod.PartBag.List[1505] = chess.PartBagGrid{
|
||||||
|
Num: 10000,
|
||||||
|
PartId: 1505,
|
||||||
|
}
|
||||||
|
ChessMod.PartBag.List[1515] = chess.PartBagGrid{
|
||||||
|
Num: 10000,
|
||||||
|
PartId: 1515,
|
||||||
|
}
|
||||||
|
ChessMod.PartBag.List[1525] = chess.PartBagGrid{
|
||||||
|
Num: 10000,
|
||||||
|
PartId: 1525,
|
||||||
|
}
|
||||||
|
ChessMod.PartBag.List[1535] = chess.PartBagGrid{
|
||||||
|
Num: 10000,
|
||||||
|
PartId: 1535,
|
||||||
|
}
|
||||||
case "AllFace":
|
case "AllFace":
|
||||||
Now := GoUtil.Now()
|
Now := GoUtil.Now()
|
||||||
FaceMod := player.PlayMod.getFaceMod()
|
FaceMod := player.PlayMod.getFaceMod()
|
||||||
@ -507,6 +526,13 @@ func ReqGmCommand_(player *Player, Command string) error {
|
|||||||
case "resetCompensation":
|
case "resetCompensation":
|
||||||
compensationMod := player.PlayMod.getCompensationMod()
|
compensationMod := player.PlayMod.getCompensationMod()
|
||||||
compensationMod.C20250910 = false
|
compensationMod.C20250910 = false
|
||||||
|
case "resetWeekly":
|
||||||
|
ChargeMod := player.PlayMod.getChargeMod()
|
||||||
|
ChargeMod.WeeklyDiscount = make(map[int]int)
|
||||||
|
player.PushClientRes(ChargeMod.BackData())
|
||||||
|
PlayroomMod := player.PlayMod.getPlayroomMod()
|
||||||
|
PlayroomMod.WeeklyDiscount = make(map[int]int)
|
||||||
|
PlayroomBackData(player)
|
||||||
case "resetCode":
|
case "resetCode":
|
||||||
BaseMod := player.PlayMod.getBaseMod()
|
BaseMod := player.PlayMod.getBaseMod()
|
||||||
BaseMod.AddCode = fmt.Sprintf("MMM-%s-%s", "156", GoUtil.UniqueStringFromInt(int(BaseMod.Uid)))
|
BaseMod.AddCode = fmt.Sprintf("MMM-%s-%s", "156", GoUtil.UniqueStringFromInt(int(BaseMod.Uid)))
|
||||||
|
|||||||
@ -12,6 +12,7 @@ import (
|
|||||||
"server/GoUtil"
|
"server/GoUtil"
|
||||||
activityCfg "server/conf/activity"
|
activityCfg "server/conf/activity"
|
||||||
cardCfg "server/conf/card"
|
cardCfg "server/conf/card"
|
||||||
|
chargeCfg "server/conf/charge"
|
||||||
guesscolorCfg "server/conf/guessColor"
|
guesscolorCfg "server/conf/guessColor"
|
||||||
itemCfg "server/conf/item"
|
itemCfg "server/conf/item"
|
||||||
limitedTimeEventCfg "server/conf/limitedTimeEvent"
|
limitedTimeEventCfg "server/conf/limitedTimeEvent"
|
||||||
@ -20,6 +21,7 @@ import (
|
|||||||
playroomCfg "server/conf/playroom"
|
playroomCfg "server/conf/playroom"
|
||||||
"server/db"
|
"server/db"
|
||||||
"server/game/mod/activity"
|
"server/game/mod/activity"
|
||||||
|
"server/game/mod/friend"
|
||||||
"server/game/mod/item"
|
"server/game/mod/item"
|
||||||
"server/game/mod/limitedTimeEvent"
|
"server/game/mod/limitedTimeEvent"
|
||||||
MsgMod "server/game/mod/msg"
|
MsgMod "server/game/mod/msg"
|
||||||
@ -379,6 +381,7 @@ func (p *Player) Login() {
|
|||||||
LimitedTimePiggyBankTrigger(p)
|
LimitedTimePiggyBankTrigger(p)
|
||||||
BaseMod := p.PlayMod.getBaseMod()
|
BaseMod := p.PlayMod.getBaseMod()
|
||||||
FaceMod := p.PlayMod.getFaceMod()
|
FaceMod := p.PlayMod.getFaceMod()
|
||||||
|
ChargeMod := p.PlayMod.getChargeMod()
|
||||||
AvatarMod := p.PlayMod.getAvatarMod()
|
AvatarMod := p.PlayMod.getAvatarMod()
|
||||||
PlayBaseMod := p.GetPlayerBaseMod()
|
PlayBaseMod := p.GetPlayerBaseMod()
|
||||||
GuideTaskMod := p.PlayMod.getGuideTaskMod()
|
GuideTaskMod := p.PlayMod.getGuideTaskMod()
|
||||||
@ -389,13 +392,31 @@ func (p *Player) Login() {
|
|||||||
ActivityLogin(p) // 活动登录
|
ActivityLogin(p) // 活动登录
|
||||||
p.Compensation()
|
p.Compensation()
|
||||||
SyncMailMsg(p) // 同步邮件
|
SyncMailMsg(p) // 同步邮件
|
||||||
BaseMod.Login()
|
Duration := BaseMod.Login()
|
||||||
|
ChargeMod.Login(Duration)
|
||||||
GuideTaskMod.Login()
|
GuideTaskMod.Login()
|
||||||
FaceMod.Login(PlayBaseMod.GetRegisterTime())
|
FaceMod.Login(PlayBaseMod.GetRegisterTime())
|
||||||
AvatarMod.Login(PlayBaseMod.GetRegisterTime())
|
AvatarMod.Login(PlayBaseMod.GetRegisterTime())
|
||||||
HandbookItem := p.PlayMod.getCardMod().Login(G_GameLogicPtr.SeverInfo.OpenTime)
|
HandbookItem := p.PlayMod.getCardMod().Login(G_GameLogicPtr.SeverInfo.OpenTime)
|
||||||
p.HandleItem(HandbookItem, msg.ITEM_POP_LABEL_AllCollectRewardHB.String())
|
p.HandleItem(HandbookItem, msg.ITEM_POP_LABEL_AllCollectRewardHB.String())
|
||||||
LoignBack(p) // 登录补发
|
// 每周优惠特殊处理
|
||||||
|
WeeklyStartTime, WeeklyEndTime := chargeCfg.GetWeeklyDiscountStartEnd()
|
||||||
|
now := GoUtil.Now()
|
||||||
|
if now >= WeeklyStartTime && now <= WeeklyEndTime {
|
||||||
|
ChargeMod.WeeklyEndTime = WeeklyEndTime
|
||||||
|
}
|
||||||
|
if WeeklyStartTime > now {
|
||||||
|
go func() {
|
||||||
|
time.Sleep(time.Duration(WeeklyStartTime-now) * time.Second)
|
||||||
|
ChargeMod.WeeklyEndTime = WeeklyEndTime
|
||||||
|
p.PushClientRes(ChargeMod.BackData())
|
||||||
|
PlayroomBackData(p)
|
||||||
|
}()
|
||||||
|
}
|
||||||
|
if Duration > 604800 {
|
||||||
|
FriendMod := p.PlayMod.getFriendMod()
|
||||||
|
FriendMod.AddActLog(friend.ACT_LOG_TYPE_LOST_USER_RETURN, "")
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (p *Player) Outline() {
|
func (p *Player) Outline() {
|
||||||
@ -677,6 +698,8 @@ func (p *Player) HandleItem(itemList []*item.Item, Label string) error {
|
|||||||
"avatar_id": Effect[0],
|
"avatar_id": Effect[0],
|
||||||
"income_from": Label,
|
"income_from": Label,
|
||||||
})
|
})
|
||||||
|
FriendMod := p.PlayMod.getFriendMod()
|
||||||
|
FriendMod.AddActLog(friend.ACT_LOG_TYPE_GET_NEW_AVATAR_FRAME, "")
|
||||||
p.PlayerDecoLog("avatar", Effect[0], Label)
|
p.PlayerDecoLog("avatar", Effect[0], Label)
|
||||||
BackDataType[item.ITEM_TYPE_AVATAR] = struct{}{}
|
BackDataType[item.ITEM_TYPE_AVATAR] = struct{}{}
|
||||||
case item.ITEM_TYPE_EMOJI: // 表情
|
case item.ITEM_TYPE_EMOJI: // 表情
|
||||||
@ -686,6 +709,8 @@ func (p *Player) HandleItem(itemList []*item.Item, Label string) error {
|
|||||||
"emoji_id": Effect[0],
|
"emoji_id": Effect[0],
|
||||||
"income_from": Label,
|
"income_from": Label,
|
||||||
})
|
})
|
||||||
|
FriendMod := p.PlayMod.getFriendMod()
|
||||||
|
FriendMod.AddActLog(friend.ACT_LOG_TYPE_GET_NEW_EMOTION, "")
|
||||||
p.PlayerDecoLog("emoji", Effect[0], Label)
|
p.PlayerDecoLog("emoji", Effect[0], Label)
|
||||||
BackDataType[item.ITEM_TYPE_EMOJI] = struct{}{}
|
BackDataType[item.ITEM_TYPE_EMOJI] = struct{}{}
|
||||||
case item.ITEM_TYPE_FACE: // 头像
|
case item.ITEM_TYPE_FACE: // 头像
|
||||||
@ -695,6 +720,8 @@ func (p *Player) HandleItem(itemList []*item.Item, Label string) error {
|
|||||||
"face_id": Effect[0],
|
"face_id": Effect[0],
|
||||||
"income_from": Label,
|
"income_from": Label,
|
||||||
})
|
})
|
||||||
|
FriendMod := p.PlayMod.getFriendMod()
|
||||||
|
FriendMod.AddActLog(friend.ACT_LOG_TYPE_GET_NEW_AVATAR, "")
|
||||||
p.PlayerDecoLog("face", Effect[0], Label)
|
p.PlayerDecoLog("face", Effect[0], Label)
|
||||||
BackDataType[item.ITEM_TYPE_FACE] = struct{}{}
|
BackDataType[item.ITEM_TYPE_FACE] = struct{}{}
|
||||||
case item.ITEM_TYPE_ACTIVITY_RACE: // 活动竞速
|
case item.ITEM_TYPE_ACTIVITY_RACE: // 活动竞速
|
||||||
@ -718,6 +745,8 @@ func (p *Player) HandleItem(itemList []*item.Item, Label string) error {
|
|||||||
PlayroomMod.AddCollect(Effect, Label)
|
PlayroomMod.AddCollect(Effect, Label)
|
||||||
BackDataType[item.ITEM_TYPE_PLAYROOM_DECORATION] = struct{}{}
|
BackDataType[item.ITEM_TYPE_PLAYROOM_DECORATION] = struct{}{}
|
||||||
Type, Name := playroomCfg.GetDecoInfo(Effect)
|
Type, Name := playroomCfg.GetDecoInfo(Effect)
|
||||||
|
FriendMod := p.PlayMod.getFriendMod()
|
||||||
|
FriendMod.AddActLog(friend.ACT_LOG_TYPE_GET_NEW_DECORATION, "")
|
||||||
p.TeLog("room_deco_get", map[string]interface{}{
|
p.TeLog("room_deco_get", map[string]interface{}{
|
||||||
"room_deco_type": Type,
|
"room_deco_type": Type,
|
||||||
"room_deco_name": Name,
|
"room_deco_name": Name,
|
||||||
@ -730,6 +759,8 @@ func (p *Player) HandleItem(itemList []*item.Item, Label string) error {
|
|||||||
BackDataType[item.ITEM_TYPE_PLAYROOM_DRESS] = struct{}{}
|
BackDataType[item.ITEM_TYPE_PLAYROOM_DRESS] = struct{}{}
|
||||||
Type := playroomCfg.GetDressPart(Effect)
|
Type := playroomCfg.GetDressPart(Effect)
|
||||||
Name := playroomCfg.GetDressName(Effect)
|
Name := playroomCfg.GetDressName(Effect)
|
||||||
|
FriendMod := p.PlayMod.getFriendMod()
|
||||||
|
FriendMod.AddActLog(friend.ACT_LOG_TYPE_GET_NEW_COSTUME, "")
|
||||||
p.TeLog("pet_deco_get", map[string]interface{}{
|
p.TeLog("pet_deco_get", map[string]interface{}{
|
||||||
"pet_deco_type": Type,
|
"pet_deco_type": Type,
|
||||||
"pet_deco_name": Name,
|
"pet_deco_name": Name,
|
||||||
@ -768,6 +799,14 @@ func (p *Player) HandleItem(itemList []*item.Item, Label string) error {
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
BackDataType[item.ITEM_TYPE_PLAYROOM_DRESS_SET] = struct{}{}
|
BackDataType[item.ITEM_TYPE_PLAYROOM_DRESS_SET] = struct{}{}
|
||||||
|
case item.ITEM_TYPE_ACT_PASS: // 活动通行证
|
||||||
|
ActivityInfo := GetActivityInfo(p, activity.ACT_TYPE_PASS)
|
||||||
|
if ActivityInfo == nil {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
PassMod := p.PlayMod.getPassMod()
|
||||||
|
PassMod.AddExp(v.Num)
|
||||||
|
ActPassBackData(p)
|
||||||
default:
|
default:
|
||||||
err := ItemMod.AddItem(v.Id, v.Num)
|
err := ItemMod.AddItem(v.Id, v.Num)
|
||||||
p.TeLog("asset_change", map[string]interface{}{
|
p.TeLog("asset_change", map[string]interface{}{
|
||||||
@ -833,6 +872,7 @@ func (p *Player) LoginBackData() {
|
|||||||
p.PushClientRes(p.PlayMod.mod_list.SevenLogin.BackData())
|
p.PushClientRes(p.PlayMod.mod_list.SevenLogin.BackData())
|
||||||
p.PushClientRes(p.PlayMod.mod_list.LimitedTimeEvent.ProgressBackData())
|
p.PushClientRes(p.PlayMod.mod_list.LimitedTimeEvent.ProgressBackData())
|
||||||
p.PushClientRes(p.PlayMod.mod_list.Charge.BackData())
|
p.PushClientRes(p.PlayMod.mod_list.Charge.BackData())
|
||||||
|
p.PushClientRes(p.PlayMod.mod_list.Charge.PetWorkBackData())
|
||||||
p.PushClientRes(p.PlayMod.mod_list.Endless.BackData())
|
p.PushClientRes(p.PlayMod.mod_list.Endless.BackData())
|
||||||
p.PushClientRes(p.PlayMod.mod_list.PiggyBank.BackData())
|
p.PushClientRes(p.PlayMod.mod_list.PiggyBank.BackData())
|
||||||
p.PushClientRes(p.PlayMod.mod_list.Item.BackData())
|
p.PushClientRes(p.PlayMod.mod_list.Item.BackData())
|
||||||
@ -928,6 +968,8 @@ func (p *Player) UpdateUserInfo() {
|
|||||||
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()
|
simple.CardInfo = CardMod.GetCardList()
|
||||||
|
simple.ActLog = p.PlayMod.getFriendMod().GetActLogLast()
|
||||||
|
simple.Physiology = p.PlayMod.getPlayroomMod().GetPhysiologyList()
|
||||||
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)
|
||||||
|
|||||||
@ -2,6 +2,7 @@ package game
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"server/GoUtil"
|
"server/GoUtil"
|
||||||
|
playroomCfg "server/conf/playroom"
|
||||||
"server/game/mod/item"
|
"server/game/mod/item"
|
||||||
proto "server/msg"
|
proto "server/msg"
|
||||||
)
|
)
|
||||||
@ -122,6 +123,20 @@ func PlayroomBackData(p *Player) {
|
|||||||
Label: v.Label,
|
Label: v.Label,
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
weeklyDiscount := make(map[int32]*proto.WeeklyDiscountInfo)
|
||||||
|
ChargeMod := p.PlayMod.getChargeMod()
|
||||||
|
if ChargeMod.IsWeeklyDiscountDay() {
|
||||||
|
w1 := playroomCfg.GetShopWeeklyLimit()
|
||||||
|
for k, v := range w1 {
|
||||||
|
limitNum := PlayroomMod.WeeklyDiscount[k]
|
||||||
|
weeklyDiscount[int32(k)] = &proto.WeeklyDiscountInfo{
|
||||||
|
Id: int32(k),
|
||||||
|
Discount: int32(v.Discount),
|
||||||
|
Count: int32(v.WeeklyLimit - limitNum),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
r.WeeklyDiscount = weeklyDiscount
|
||||||
r.PetAir = PetAir
|
r.PetAir = PetAir
|
||||||
r.PetAirSet = int32(PlayroomMod.GetPetAirSet())
|
r.PetAirSet = int32(PlayroomMod.GetPetAirSet())
|
||||||
r.Chip = ChipMessage
|
r.Chip = ChipMessage
|
||||||
|
|||||||
@ -196,20 +196,18 @@ func (p *PlayerBaseData) ReqRemoveAd(player *Player, buf []byte) {
|
|||||||
func (p *PlayerBaseData) ResPlayerBaseInfo(player *Player) {
|
func (p *PlayerBaseData) ResPlayerBaseInfo(player *Player) {
|
||||||
BaseMod := player.PlayMod.getBaseMod()
|
BaseMod := player.PlayMod.getBaseMod()
|
||||||
player.PushClientRes(&msg.ResPlayerBaseInfo{
|
player.PushClientRes(&msg.ResPlayerBaseInfo{
|
||||||
DwUin: p.Data.DwUin,
|
DwUin: p.Data.DwUin,
|
||||||
Energy: int32(BaseMod.Energy),
|
Energy: int32(BaseMod.Energy),
|
||||||
Star: int32(BaseMod.Star),
|
Star: int32(BaseMod.Star),
|
||||||
RecoverTime: int32(BaseMod.RecoverTime),
|
RecoverTime: int32(BaseMod.RecoverTime),
|
||||||
Diamond: int32(BaseMod.Diamond),
|
Diamond: int32(BaseMod.Diamond),
|
||||||
Level: int32(BaseMod.Level),
|
Level: int32(BaseMod.Level),
|
||||||
Exp: int32(BaseMod.Exp),
|
Exp: int32(BaseMod.Exp),
|
||||||
LoginTime: int32(BaseMod.LoginTime),
|
LoginTime: int32(BaseMod.LoginTime),
|
||||||
LogoutTime: int32(BaseMod.LogoutTime),
|
LogoutTime: int32(BaseMod.LogoutTime),
|
||||||
FaceBookId: p.Data.FaceBookId,
|
RegisterTime: int32(p.GetRegisterTime()),
|
||||||
|
FaceBookId: p.Data.FaceBookId,
|
||||||
})
|
})
|
||||||
agent := player.GetAgentByPlayer()
|
|
||||||
data, _ := proto.Marshal(&p.Data)
|
|
||||||
G_getGameLogic().PackResInfo(agent, "ResPlayerBaseInfo", data)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func (p *PlayerBaseData) ReqBindFacebookAccount(player *Player, buf []byte) {
|
func (p *PlayerBaseData) ReqBindFacebookAccount(player *Player, buf []byte) {
|
||||||
|
|||||||
@ -234,10 +234,14 @@ func (p *PlayerChessData) HandleChess(player *Player, handle_list []*msg.ChessHa
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, nil, err
|
return nil, nil, err
|
||||||
}
|
}
|
||||||
|
get_star_num := 0
|
||||||
|
if len(items) > 0 && items[0].Id == item.ITEM_STAR_ID {
|
||||||
|
get_star_num = items[0].Num
|
||||||
|
}
|
||||||
player.TeLog("sell_item", map[string]interface{}{
|
player.TeLog("sell_item", map[string]interface{}{
|
||||||
"merge_item_id": ChessId,
|
"merge_item_id": ChessId,
|
||||||
"product_name": mergeDataCfg.GetNameById(ChessId),
|
"product_name": mergeDataCfg.GetNameById(ChessId),
|
||||||
"get_star_num": items[0].Num,
|
"get_star_num": get_star_num,
|
||||||
})
|
})
|
||||||
itemList = item.Merge(itemList, items)
|
itemList = item.Merge(itemList, items)
|
||||||
case msg.HANDLE_TYPE_REMOVE: //移除棋子
|
case msg.HANDLE_TYPE_REMOVE: //移除棋子
|
||||||
|
|||||||
@ -931,10 +931,6 @@ func EmitRetireTrigger2(p *Player) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func LoignBack(p *Player) {
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
func Benchmark(player *Player) {
|
func Benchmark(player *Player) {
|
||||||
ChampshipMod := player.PlayMod.getChampshipMod()
|
ChampshipMod := player.PlayMod.getChampshipMod()
|
||||||
ChampshipMod.AddScore([]int{949, 941, 10})
|
ChampshipMod.AddScore([]int{949, 941, 10})
|
||||||
|
|||||||
@ -34,6 +34,7 @@ import (
|
|||||||
"server/game/mod/mail"
|
"server/game/mod/mail"
|
||||||
"server/game/mod/mining"
|
"server/game/mod/mining"
|
||||||
"server/game/mod/order"
|
"server/game/mod/order"
|
||||||
|
"server/game/mod/pass"
|
||||||
"server/game/mod/piggyBank"
|
"server/game/mod/piggyBank"
|
||||||
"server/game/mod/playroom"
|
"server/game/mod/playroom"
|
||||||
"server/game/mod/race"
|
"server/game/mod/race"
|
||||||
@ -84,6 +85,7 @@ type PlayerModList struct {
|
|||||||
Compensation compensation.Compensation // 补偿
|
Compensation compensation.Compensation // 补偿
|
||||||
Catnip catnip.CatnipMod // 猫草大作战
|
Catnip catnip.CatnipMod // 猫草大作战
|
||||||
GuideTask guideTask.GuideTaskMod // 引导任务
|
GuideTask guideTask.GuideTaskMod // 引导任务
|
||||||
|
Pass pass.PassMod // 通行证
|
||||||
}
|
}
|
||||||
|
|
||||||
func (p *PlayerModData) LoadDataFromDB(dwUin interface{}) bool {
|
func (p *PlayerModData) LoadDataFromDB(dwUin interface{}) bool {
|
||||||
@ -184,6 +186,7 @@ func (p *PlayerModData) InitMod(player *Player) (bool, error) {
|
|||||||
p.ModList.Catnip.InitData()
|
p.ModList.Catnip.InitData()
|
||||||
p.ModList.Compensation.InitData()
|
p.ModList.Compensation.InitData()
|
||||||
p.ModList.GuideTask.InitData()
|
p.ModList.GuideTask.InitData()
|
||||||
|
p.ModList.Pass.InitData()
|
||||||
return is_update, nil
|
return is_update, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -385,3 +388,7 @@ func (p *PlayerMod) getCatnipMod() *catnip.CatnipMod {
|
|||||||
func (p *PlayerMod) getGuideTaskMod() *guideTask.GuideTaskMod {
|
func (p *PlayerMod) getGuideTaskMod() *guideTask.GuideTaskMod {
|
||||||
return &p.mod_list.GuideTask
|
return &p.mod_list.GuideTask
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (p *PlayerMod) getPassMod() *pass.PassMod {
|
||||||
|
return &p.mod_list.Pass
|
||||||
|
}
|
||||||
|
|||||||
@ -7,6 +7,7 @@ import (
|
|||||||
"server/GoUtil"
|
"server/GoUtil"
|
||||||
"server/conf"
|
"server/conf"
|
||||||
cardCfg "server/conf/card"
|
cardCfg "server/conf/card"
|
||||||
|
champshipCfg "server/conf/champship"
|
||||||
collectCfg "server/conf/collect"
|
collectCfg "server/conf/collect"
|
||||||
decorateCfg "server/conf/decorate"
|
decorateCfg "server/conf/decorate"
|
||||||
emojiCfg "server/conf/emoji"
|
emojiCfg "server/conf/emoji"
|
||||||
@ -78,6 +79,28 @@ func ReqPlayerBriefProfileDataFunc(player *Player, buf []byte) error {
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func ReqFriendPlayerSimple(player *Player, buf []byte) error {
|
||||||
|
detail := &msg.ReqFriendPlayerSimple{}
|
||||||
|
proto.Unmarshal(buf, detail)
|
||||||
|
Uid := int(detail.Uid)
|
||||||
|
PlayerSimpleData := G_GameLogicPtr.GetResFriendPlayerByUid(Uid)
|
||||||
|
if PlayerSimpleData == nil {
|
||||||
|
log.Debug("玩家不存在, Uid:%d", Uid)
|
||||||
|
return errors.New("玩家不存在")
|
||||||
|
}
|
||||||
|
FriendMod := player.PlayMod.getFriendMod()
|
||||||
|
PlayerSimpleData.AddTime = FriendMod.GetAddTime(Uid)
|
||||||
|
PlayerSimpleData.Interact = FriendMod.GetInteractTime(Uid)
|
||||||
|
LastActLog := FriendMod.GetActLogLast()
|
||||||
|
PlayerSimpleData.Last = &msg.ActLog{
|
||||||
|
Type: int32(LastActLog.Type),
|
||||||
|
Time: LastActLog.Time,
|
||||||
|
Param: LastActLog.Param,
|
||||||
|
}
|
||||||
|
player.PushClientRes(PlayerSimpleData)
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
// 移除广告
|
// 移除广告
|
||||||
func ReqRemoveAdFunc(player *Player, buf []byte) error {
|
func ReqRemoveAdFunc(player *Player, buf []byte) error {
|
||||||
player.PlayerBaseMod.ReqRemoveAd(player, buf)
|
player.PlayerBaseMod.ReqRemoveAd(player, buf)
|
||||||
@ -491,6 +514,19 @@ func ReqDecorate(player *Player, buf []byte) error {
|
|||||||
"deco_step_id": fmt.Sprintf("%d_%d", AreaId, DecorateId),
|
"deco_step_id": fmt.Sprintf("%d_%d", AreaId, DecorateId),
|
||||||
"material_cost": PartItem,
|
"material_cost": PartItem,
|
||||||
})
|
})
|
||||||
|
FriendMod := player.PlayMod.getFriendMod()
|
||||||
|
if AreaId == 1 && DecorateId == 20 {
|
||||||
|
FriendMod.AddActLog(friend.ACT_LOG_TYPE_COMPLETE_RESTROOM, "")
|
||||||
|
}
|
||||||
|
if AreaId == 1 && DecorateId == 29 {
|
||||||
|
FriendMod.AddActLog(friend.ACT_LOG_TYPE_COMPLETE_RESTAURANT, "")
|
||||||
|
}
|
||||||
|
if AreaId == 1 && DecorateId == 36 {
|
||||||
|
FriendMod.AddActLog(friend.ACT_LOG_TYPE_COMPLETE_BATHROOM, "")
|
||||||
|
}
|
||||||
|
if AreaId == 1 && DecorateId == 44 {
|
||||||
|
FriendMod.AddActLog(friend.ACT_LOG_TYPE_COMPLETE_CLOAKROOM, "")
|
||||||
|
}
|
||||||
|
|
||||||
player.PlayMod.save()
|
player.PlayMod.save()
|
||||||
player.PushClientRes(DecorateMod.BackData())
|
player.PushClientRes(DecorateMod.BackData())
|
||||||
@ -1078,7 +1114,8 @@ func ReqCardCollectReward(player *Player, buf []byte) error {
|
|||||||
})
|
})
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
FriendMod := player.PlayMod.getFriendMod()
|
||||||
|
FriendMod.AddActLog(friend.ACT_LOG_TYPE_COMPLETE_CARD_ALBUM, fmt.Sprintf("%d", int(req.Color)))
|
||||||
if chess != 0 {
|
if chess != 0 {
|
||||||
player.PlayMod.getChessMod().AddChessBuff(chess)
|
player.PlayMod.getChessMod().AddChessBuff(chess)
|
||||||
player.PushClientRes(player.PlayMod.getOrderMod().BackData())
|
player.PushClientRes(player.PlayMod.getOrderMod().BackData())
|
||||||
@ -1159,6 +1196,8 @@ func ReqAllCollectReward(player *Player, buf []byte) error {
|
|||||||
})
|
})
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
FriendMod := player.PlayMod.getFriendMod()
|
||||||
|
FriendMod.AddActLog(friend.ACT_LOG_TYPE_COMPLETE_ALL_CARDS, "all")
|
||||||
player.PlayMod.save()
|
player.PlayMod.save()
|
||||||
player.TeLog("ReqAllCollectReward", map[string]interface{}{
|
player.TeLog("ReqAllCollectReward", map[string]interface{}{
|
||||||
"item_list": itemList,
|
"item_list": itemList,
|
||||||
@ -1426,7 +1465,8 @@ func ReqBuyEnergy(player *Player, buf []byte) error {
|
|||||||
req := &msg.ReqBuyEnergy{}
|
req := &msg.ReqBuyEnergy{}
|
||||||
proto.Unmarshal(buf, req)
|
proto.Unmarshal(buf, req)
|
||||||
BaseMod := player.PlayMod.getBaseMod()
|
BaseMod := player.PlayMod.getBaseMod()
|
||||||
Item, Energy, Diamond := BaseMod.BuyEnergy(int(req.Energy))
|
ChargeMod := player.PlayMod.getChargeMod()
|
||||||
|
Item, Energy, Diamond := ChargeMod.BuyEnergy()
|
||||||
err := player.HandleItem(Item, msg.ITEM_POP_LABEL_BuyEnergy.String())
|
err := player.HandleItem(Item, msg.ITEM_POP_LABEL_BuyEnergy.String())
|
||||||
if err != nil {
|
if err != nil {
|
||||||
player.SendErrClienRes(&msg.ResBuyEnergy{
|
player.SendErrClienRes(&msg.ResBuyEnergy{
|
||||||
@ -1681,7 +1721,6 @@ func ReqSearchPlayer(player *Player, buf []byte) error {
|
|||||||
player.PushClientRes(&msg.ResSearchPlayer{
|
player.PushClientRes(&msg.ResSearchPlayer{
|
||||||
List: l2,
|
List: l2,
|
||||||
})
|
})
|
||||||
|
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -2708,6 +2747,11 @@ func ReqChampshipReward(player *Player, buf []byte) error {
|
|||||||
player.PushClientRes(&msg.ResChampshipReward{
|
player.PushClientRes(&msg.ResChampshipReward{
|
||||||
Code: msg.RES_CODE_SUCCESS,
|
Code: msg.RES_CODE_SUCCESS,
|
||||||
})
|
})
|
||||||
|
MaxId := champshipCfg.GetMaxRewardId()
|
||||||
|
if MaxId == ChampshipMod.Reward {
|
||||||
|
FriendMod := player.PlayMod.getFriendMod()
|
||||||
|
FriendMod.AddActLog(friend.ACT_LOG_TYPE_GET_CHAMPIONSHIP_PRIZE, "")
|
||||||
|
}
|
||||||
player.TeLog("championship_reward", map[string]interface{}{
|
player.TeLog("championship_reward", map[string]interface{}{
|
||||||
"season_id": GoUtil.ZeroTimestamp(),
|
"season_id": GoUtil.ZeroTimestamp(),
|
||||||
"champship_step_id": ChampshipMod.Reward,
|
"champship_step_id": ChampshipMod.Reward,
|
||||||
@ -2871,6 +2915,10 @@ func ReqChampshipRankReward(player *Player, buf []byte) error {
|
|||||||
})
|
})
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
if MyLastRank <= 5 {
|
||||||
|
FriendMod := player.PlayMod.getFriendMod()
|
||||||
|
FriendMod.AddActLog(friend.ACT_LOG_TYPE_GET_CHAMPIONSHIP_RANK, GoUtil.String(MyLastRank))
|
||||||
|
}
|
||||||
player.PlayMod.save()
|
player.PlayMod.save()
|
||||||
BackChampship(player)
|
BackChampship(player)
|
||||||
player.PushClientRes(&msg.ResChampshipRankReward{
|
player.PushClientRes(&msg.ResChampshipRankReward{
|
||||||
@ -3596,8 +3644,9 @@ func ReqPlayroomSelectReward(player *Player, buf []byte) error {
|
|||||||
"is_chip": true,
|
"is_chip": true,
|
||||||
"item_list": Items,
|
"item_list": Items,
|
||||||
})
|
})
|
||||||
|
FriendMod := player.PlayMod.getFriendMod()
|
||||||
|
FriendMod.AddActLog(friend.ACT_LOG_TYPE_GET_VISIT_GAME_PRIZE_1, "")
|
||||||
PlayroomMod.ResetGame()
|
PlayroomMod.ResetGame()
|
||||||
|
|
||||||
player.PlayerDecoSetLog("emoji", int(req.EmojiId), "playroom_select_reward")
|
player.PlayerDecoSetLog("emoji", int(req.EmojiId), "playroom_select_reward")
|
||||||
PlayroomBackData(player)
|
PlayroomBackData(player)
|
||||||
player.PlayMod.save()
|
player.PlayMod.save()
|
||||||
@ -3778,6 +3827,10 @@ func ReqPlayroomFlipReward(player *Player, buf []byte) error {
|
|||||||
if LimitedTimeEventMod.CheckExist(limitedTimeEvent.EVENT_TYPE_PET_THIEF) && Result == playroom.FLIP_TYPE_GOLD {
|
if LimitedTimeEventMod.CheckExist(limitedTimeEvent.EVENT_TYPE_PET_THIEF) && Result == playroom.FLIP_TYPE_GOLD {
|
||||||
player.GetPetThiefReward(Target)
|
player.GetPetThiefReward(Target)
|
||||||
}
|
}
|
||||||
|
if Result == playroom.FLIP_TYPE_GOLD {
|
||||||
|
FriendMod := player.PlayMod.getFriendMod()
|
||||||
|
FriendMod.AddActLog(friend.ACT_LOG_TYPE_GET_VISIT_GAME_PRIZE, "")
|
||||||
|
}
|
||||||
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 {
|
||||||
player.SendErrClienRes(&msg.ResPlayroomFlip{
|
player.SendErrClienRes(&msg.ResPlayroomFlip{
|
||||||
@ -4072,7 +4125,8 @@ func ReqPlayroomShop(player *Player, buf []byte) error {
|
|||||||
req := &msg.ReqPlayroomShop{}
|
req := &msg.ReqPlayroomShop{}
|
||||||
proto.Unmarshal(buf, req)
|
proto.Unmarshal(buf, req)
|
||||||
PlayroomMod := player.PlayMod.getPlayroomMod()
|
PlayroomMod := player.PlayMod.getPlayroomMod()
|
||||||
AddItems, LoseItem, err := PlayroomMod.ShopBuy(int(req.Id), int(req.Num))
|
ChargeMod := player.PlayMod.getChargeMod()
|
||||||
|
AddItems, LoseItem, err := PlayroomMod.ShopBuy(int(req.Id), int(req.Num), ChargeMod.IsWeeklyDiscountDay())
|
||||||
if err != nil {
|
if err != nil {
|
||||||
player.SendErrClienRes(&msg.ResPlayroomShop{
|
player.SendErrClienRes(&msg.ResPlayroomShop{
|
||||||
Code: msg.RES_CODE_FAIL,
|
Code: msg.RES_CODE_FAIL,
|
||||||
@ -4115,6 +4169,7 @@ func ReqPlayroomShop(player *Player, buf []byte) error {
|
|||||||
player.PetItemGetLog(AddItems, LoseItem, "Shop")
|
player.PetItemGetLog(AddItems, LoseItem, "Shop")
|
||||||
player.PlayMod.save()
|
player.PlayMod.save()
|
||||||
player.PushClientRes(PlayroomMod.NotifyMood())
|
player.PushClientRes(PlayroomMod.NotifyMood())
|
||||||
|
PlayroomBackData(player)
|
||||||
player.PushClientRes(&msg.ResPlayroomShop{
|
player.PushClientRes(&msg.ResPlayroomShop{
|
||||||
Code: msg.RES_CODE_SUCCESS,
|
Code: msg.RES_CODE_SUCCESS,
|
||||||
})
|
})
|
||||||
@ -4237,6 +4292,8 @@ func ReqFriendTreasureEnd(player *Player, buf []byte) error {
|
|||||||
)
|
)
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
FriendMod := player.PlayMod.getFriendMod()
|
||||||
|
FriendMod.AddActLog(friend.ACT_LOG_TYPE_OPEN_PET_TREASURE, "")
|
||||||
player.TeLog("pet_treasure_open", map[string]interface{}{
|
player.TeLog("pet_treasure_open", map[string]interface{}{
|
||||||
"pet_treasure_step": FriendTreasureMod.Shift,
|
"pet_treasure_step": FriendTreasureMod.Shift,
|
||||||
"pet_treasure_box": FriendTreasureMod.BoxItems,
|
"pet_treasure_box": FriendTreasureMod.BoxItems,
|
||||||
@ -5142,3 +5199,31 @@ func ReqCatnipRefuse(player *Player, buf []byte) error {
|
|||||||
})
|
})
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func ReqActPass(player *Player, buf []byte) error {
|
||||||
|
ActPassBackData(player)
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func ReqActPassReward(player *Player, buf []byte) error {
|
||||||
|
PassMod := player.PlayMod.getPassMod()
|
||||||
|
Items, NewLevel := PassMod.GetRewardItems()
|
||||||
|
err := player.HandleItem(Items, msg.ITEM_POP_LABEL_ActPassReward.String())
|
||||||
|
if err != nil {
|
||||||
|
player.SendErrClienRes(&msg.ResActPassReward{
|
||||||
|
Code: msg.RES_CODE_FAIL,
|
||||||
|
Msg: err.Error(),
|
||||||
|
})
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
player.TeLog("act_pass_reward", map[string]interface{}{
|
||||||
|
"NewLevel": NewLevel,
|
||||||
|
"Items": Items,
|
||||||
|
})
|
||||||
|
player.PlayMod.save()
|
||||||
|
player.PushClientRes(&msg.ResActPassReward{
|
||||||
|
Code: msg.RES_CODE_SUCCESS,
|
||||||
|
RewardLevel: GoUtil.IntToInt32(NewLevel),
|
||||||
|
})
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|||||||
@ -2,6 +2,7 @@ package game
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"encoding/gob"
|
"encoding/gob"
|
||||||
|
"server/game/mod/friend"
|
||||||
"server/game/mod/limitedTimeEvent"
|
"server/game/mod/limitedTimeEvent"
|
||||||
"server/game/mod/msg"
|
"server/game/mod/msg"
|
||||||
)
|
)
|
||||||
@ -28,6 +29,8 @@ type PlayerSimpleData struct {
|
|||||||
Upvote int
|
Upvote int
|
||||||
DressSet map[int]int
|
DressSet map[int]int
|
||||||
CardInfo []int
|
CardInfo []int
|
||||||
|
ActLog *friend.ActLogInfo
|
||||||
|
Physiology map[int]int
|
||||||
}
|
}
|
||||||
|
|
||||||
type VarGoldCard struct {
|
type VarGoldCard struct {
|
||||||
|
|||||||
@ -142,6 +142,7 @@ func AdminPlayerInfo(args []interface{}) error {
|
|||||||
res["Bonus"] = player.PlayMod.getLimitedTimeEventMod().Progress
|
res["Bonus"] = player.PlayMod.getLimitedTimeEventMod().Progress
|
||||||
res["Code"] = player.PlayMod.getBaseMod().AddCode
|
res["Code"] = player.PlayMod.getBaseMod().AddCode
|
||||||
res["ChessMap"] = player.PlayMod.getChessMod().ChessMap
|
res["ChessMap"] = player.PlayMod.getChessMod().ChessMap
|
||||||
|
res["ActLog"] = player.PlayMod.getFriendMod().ActivityLog
|
||||||
OrderMap := make(map[int]interface{})
|
OrderMap := make(map[int]interface{})
|
||||||
Index := 0
|
Index := 0
|
||||||
for k, v := range player.PlayMod.getOrderMod().OrderList {
|
for k, v := range player.PlayMod.getOrderMod().OrderList {
|
||||||
|
|||||||
@ -23,6 +23,7 @@ const (
|
|||||||
ACT_TYPE_ADD_GIFT = 5 // 加送礼包
|
ACT_TYPE_ADD_GIFT = 5 // 加送礼包
|
||||||
ACT_TYPE_SUPER_GIFT = 6 // 超值加购礼包
|
ACT_TYPE_SUPER_GIFT = 6 // 超值加购礼包
|
||||||
ACT_TYPE_CATNIP = 7 // 猫草大作战
|
ACT_TYPE_CATNIP = 7 // 猫草大作战
|
||||||
|
ACT_TYPE_PASS = 8 // 通行证
|
||||||
)
|
)
|
||||||
|
|
||||||
const (
|
const (
|
||||||
|
|||||||
@ -63,13 +63,18 @@ func (b *Base) InitData(Uid int, Ip string) {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func (b *Base) Login() {
|
func (b *Base) Login() int64 {
|
||||||
Now := GoUtil.Now()
|
Now := GoUtil.Now()
|
||||||
if !GoUtil.IsSameDay(b.LoginTime, Now) {
|
if !GoUtil.IsSameDay(b.LoginTime, Now) {
|
||||||
b.LoginDay += 1
|
b.LoginDay += 1
|
||||||
}
|
}
|
||||||
|
logoutDuration := Now - b.LogoutTime
|
||||||
|
if b.LogoutTime == 0 {
|
||||||
|
logoutDuration = 0
|
||||||
|
}
|
||||||
b.LoginTime = Now
|
b.LoginTime = Now
|
||||||
b.LogoutTime = 0
|
b.LogoutTime = 0
|
||||||
|
return logoutDuration
|
||||||
}
|
}
|
||||||
|
|
||||||
func (b *Base) GetSeed() bool {
|
func (b *Base) GetSeed() bool {
|
||||||
|
|||||||
@ -32,9 +32,13 @@ type ChargeMod struct {
|
|||||||
|
|
||||||
Gift map[int]int // 礼包
|
Gift map[int]int // 礼包
|
||||||
|
|
||||||
Ad bool // 是否购买免广告
|
Ad bool // 是否购买免广告
|
||||||
AdEndTime int64
|
AdEndTime int64
|
||||||
WishList *WishList
|
PetWorkTime int64 // 宠物打工时间
|
||||||
|
LastWorkTime int64 // 上次打工时间
|
||||||
|
WishList *WishList
|
||||||
|
WeeklyDiscount map[int]int // 每周折扣购买次数
|
||||||
|
WeeklyEndTime int64
|
||||||
}
|
}
|
||||||
|
|
||||||
type WishList struct {
|
type WishList struct {
|
||||||
@ -92,12 +96,20 @@ func (c *ChargeMod) InitData() {
|
|||||||
SendList: make([]int64, 0),
|
SendList: make([]int64, 0),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if c.WeeklyDiscount == nil {
|
||||||
|
c.WeeklyDiscount = make(map[int]int)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c *ChargeMod) GetMaxCharge() float64 {
|
func (c *ChargeMod) GetMaxCharge() float64 {
|
||||||
return c.MaxCharge
|
return c.MaxCharge
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (c *ChargeMod) Login(LogoutTime int64) {
|
||||||
|
c.LastWorkTime = min(LogoutTime, c.PetWorkTime)
|
||||||
|
c.PetWorkTime -= c.LastWorkTime
|
||||||
|
}
|
||||||
|
|
||||||
// 零点更新
|
// 零点更新
|
||||||
func (c *ChargeMod) ZeroUpdate(Emit []int) {
|
func (c *ChargeMod) ZeroUpdate(Emit []int) {
|
||||||
Now := GoUtil.Now()
|
Now := GoUtil.Now()
|
||||||
@ -124,6 +136,10 @@ func (c *ChargeMod) ZeroUpdate(Emit []int) {
|
|||||||
c.SpecialShop[i] = &SepcialShop{Grade: SpecialGrade, Count: SpecialShopCount}
|
c.SpecialShop[i] = &SepcialShop{Grade: SpecialGrade, Count: SpecialShopCount}
|
||||||
}
|
}
|
||||||
c.WishList.SendList = make([]int64, 0)
|
c.WishList.SendList = make([]int64, 0)
|
||||||
|
c.WeeklyDiscount = make(map[int]int)
|
||||||
|
if c.IsWeeklyDiscountDay() && c.WeeklyEndTime < Now {
|
||||||
|
c.WeeklyEndTime = GoUtil.ZeroTimestamp() + 7*24*3600
|
||||||
|
}
|
||||||
c.InitChessShop(Emit)
|
c.InitChessShop(Emit)
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -253,6 +269,7 @@ func (c *ChargeMod) FireAdReward(ChargeId int) []*item.Item {
|
|||||||
} else {
|
} else {
|
||||||
c.AdEndTime += int64(PetWorkDay * 24 * 3600)
|
c.AdEndTime += int64(PetWorkDay * 24 * 3600)
|
||||||
}
|
}
|
||||||
|
c.PetWorkTime += int64(PetWorkDay * 24 * 3600)
|
||||||
c.Ad = true
|
c.Ad = true
|
||||||
}
|
}
|
||||||
return Items
|
return Items
|
||||||
@ -293,6 +310,17 @@ func (c *ChargeMod) BackData() *msg.ResCharge {
|
|||||||
Uid: c.WishList.SendList,
|
Uid: c.WishList.SendList,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
WeeklyDiscount := make(map[int32]*msg.WeeklyDiscountInfo)
|
||||||
|
WeeklyDiscountInfo := chargeCfg.GetWeeklyInfoAll()
|
||||||
|
for k, v := range WeeklyDiscountInfo {
|
||||||
|
LimitNum := c.WeeklyDiscount[k]
|
||||||
|
WeeklyDiscount[int32(k)] = &msg.WeeklyDiscountInfo{
|
||||||
|
Discount: int32(v.Discount),
|
||||||
|
Count: int32(v.WeeklyLimit - LimitNum),
|
||||||
|
Id: int32(k),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return &msg.ResCharge{
|
return &msg.ResCharge{
|
||||||
Charge: float32(c.Charge),
|
Charge: float32(c.Charge),
|
||||||
Total: int32(c.Total),
|
Total: int32(c.Total),
|
||||||
@ -308,6 +336,9 @@ func (c *ChargeMod) BackData() *msg.ResCharge {
|
|||||||
MonthCharge: float32(c.MonthCharge),
|
MonthCharge: float32(c.MonthCharge),
|
||||||
Wish: resWish,
|
Wish: resWish,
|
||||||
AdEndTime: c.AdEndTime,
|
AdEndTime: c.AdEndTime,
|
||||||
|
WeeklyDiscount: WeeklyDiscount,
|
||||||
|
PetWorkRemainTime: c.PetWorkTime,
|
||||||
|
WeeklyEndTime: c.WeeklyEndTime,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -369,6 +400,24 @@ func (c *ChargeMod) InitChessShop(Emit []int) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (c *ChargeMod) BuyEnergy() ([]*item.Item, []*item.Item, int) {
|
||||||
|
diamond := 40
|
||||||
|
if c.IsWeeklyDiscountDay() {
|
||||||
|
LimitNum := c.WeeklyDiscount[0]
|
||||||
|
Discount, WeeklyLimit := chargeCfg.GetWeeklyInfo(0)
|
||||||
|
if LimitNum < WeeklyLimit {
|
||||||
|
diamond = int(math.Ceil(float64(diamond) * float64(Discount) / 100.0))
|
||||||
|
c.WeeklyDiscount[0] = LimitNum + 1
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return []*item.Item{
|
||||||
|
item.NewItem(item.ITEM_DIAMOND_ID, -diamond),
|
||||||
|
item.NewItem(item.ITEM_ENERGY_ID, 100),
|
||||||
|
}, []*item.Item{
|
||||||
|
item.NewItem(item.ITEM_ENERGY_ID, 100),
|
||||||
|
}, diamond
|
||||||
|
}
|
||||||
|
|
||||||
func (c *ChargeMod) BuyChess(Chess int) ([]*item.Item, []*item.Item, int, error) {
|
func (c *ChargeMod) BuyChess(Chess int) ([]*item.Item, []*item.Item, int, error) {
|
||||||
v, ok := c.ChessShop[Chess]
|
v, ok := c.ChessShop[Chess]
|
||||||
if !ok {
|
if !ok {
|
||||||
@ -379,8 +428,21 @@ func (c *ChargeMod) BuyChess(Chess int) ([]*item.Item, []*item.Item, int, error)
|
|||||||
return nil, nil, 0, fmt.Errorf("BuyChess chess count less zero id:%d", Chess)
|
return nil, nil, 0, fmt.Errorf("BuyChess chess count less zero id:%d", Chess)
|
||||||
}
|
}
|
||||||
v.Count--
|
v.Count--
|
||||||
|
diamond := v.Diamond
|
||||||
|
if c.IsWeeklyDiscountDay() {
|
||||||
|
LimitNum := c.WeeklyDiscount[Chess]
|
||||||
|
Discount, WeeklyLimit := chargeCfg.GetWeeklyInfo(Chess)
|
||||||
|
if LimitNum < WeeklyLimit {
|
||||||
|
diamond = int(math.Ceil(float64(diamond) * float64(Discount) / 100))
|
||||||
|
if diamond == v.Diamond {
|
||||||
|
diamond -= 1
|
||||||
|
}
|
||||||
|
diamond = max(1, diamond)
|
||||||
|
c.WeeklyDiscount[Chess] = LimitNum + 1
|
||||||
|
}
|
||||||
|
}
|
||||||
return []*item.Item{
|
return []*item.Item{
|
||||||
item.NewItem(item.ITEM_DIAMOND_ID, v.Diamond),
|
item.NewItem(item.ITEM_DIAMOND_ID, diamond),
|
||||||
}, []*item.Item{
|
}, []*item.Item{
|
||||||
item.NewItem(v.Id, 1),
|
item.NewItem(v.Id, 1),
|
||||||
}, v.Id, nil
|
}, v.Id, nil
|
||||||
@ -398,7 +460,7 @@ func (c *ChargeMod) AddWish(Id, Type int) ([]*item.Item, error) {
|
|||||||
ItemId := 0
|
ItemId := 0
|
||||||
switch Type {
|
switch Type {
|
||||||
case PLAYROOM_SHOP:
|
case PLAYROOM_SHOP:
|
||||||
ItemId, _ = playroomCfg.GetShopItem(Id)
|
ItemId, _, _, _ = playroomCfg.GetShopItem(Id)
|
||||||
}
|
}
|
||||||
if ItemId == 0 {
|
if ItemId == 0 {
|
||||||
return nil, fmt.Errorf("AddWish itemid not exist id:%d", Id)
|
return nil, fmt.Errorf("AddWish itemid not exist id:%d", Id)
|
||||||
@ -448,3 +510,21 @@ func (c *ChargeMod) AddWishCount() {
|
|||||||
}
|
}
|
||||||
c.WishList.Count++
|
c.WishList.Count++
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (c *ChargeMod) IsWeeklyDiscountDay() bool {
|
||||||
|
Day := chargeCfg.GetWeeklyDiscountDay()
|
||||||
|
if Day == -1 {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
Weekday, _ := GoUtil.GetWeekdayAndHour()
|
||||||
|
return Weekday == Day || c.WeeklyEndTime > GoUtil.Now()
|
||||||
|
}
|
||||||
|
|
||||||
|
func (c *ChargeMod) PetWorkBackData() *msg.LogoutPetWork {
|
||||||
|
res := &msg.LogoutPetWork{
|
||||||
|
WorkTime: c.LastWorkTime,
|
||||||
|
RemainTime: c.PetWorkTime,
|
||||||
|
}
|
||||||
|
c.LastWorkTime = 0
|
||||||
|
return res
|
||||||
|
}
|
||||||
|
|||||||
@ -10,7 +10,7 @@ import (
|
|||||||
)
|
)
|
||||||
|
|
||||||
type FriendMod struct {
|
type FriendMod struct {
|
||||||
FriendList map[int]struct{} // 好友列表
|
FriendList map[int]struct{} // TODO 废弃 好友列表
|
||||||
NewFriendList map[int]*FriendInfo // 好友列表
|
NewFriendList map[int]*FriendInfo // 好友列表
|
||||||
ApplyList map[int]int64 // 好友请求列表
|
ApplyList map[int]int64 // 好友请求列表
|
||||||
SendApply map[int]int64 // 发送的申请
|
SendApply map[int]int64 // 发送的申请
|
||||||
@ -21,6 +21,13 @@ type FriendMod struct {
|
|||||||
Id int64 // 已同步msg ID
|
Id int64 // 已同步msg ID
|
||||||
Npc []int // npc id
|
Npc []int // npc id
|
||||||
Bubble map[int]*BubbleInfo // 气泡
|
Bubble map[int]*BubbleInfo // 气泡
|
||||||
|
ActivityLog []*ActLogInfo // 活动日志
|
||||||
|
}
|
||||||
|
|
||||||
|
type ActLogInfo struct {
|
||||||
|
Type int
|
||||||
|
Time int64
|
||||||
|
Param string
|
||||||
}
|
}
|
||||||
|
|
||||||
type BubbleInfo struct {
|
type BubbleInfo struct {
|
||||||
@ -97,6 +104,43 @@ const (
|
|||||||
APPLY_TYPE_WISH = 1 // 心愿单请求
|
APPLY_TYPE_WISH = 1 // 心愿单请求
|
||||||
)
|
)
|
||||||
|
|
||||||
|
const (
|
||||||
|
ACT_LOG_TYPE_FIRST_LOGIN = 1 // 首次登入游戏
|
||||||
|
ACT_LOG_TYPE_COMPLETE_RESTROOM = 2 // 完成休息室
|
||||||
|
ACT_LOG_TYPE_COMPLETE_RESTAURANT = 3 // 完成餐厅
|
||||||
|
ACT_LOG_TYPE_COMPLETE_BATHROOM = 4 // 完成浴室
|
||||||
|
ACT_LOG_TYPE_COMPLETE_CLOAKROOM = 5 // 完成衣帽间
|
||||||
|
ACT_LOG_TYPE_GET_NEW_AVATAR = 6 // 获得新头像
|
||||||
|
ACT_LOG_TYPE_GET_NEW_AVATAR_FRAME = 7 // 获得新头像框
|
||||||
|
ACT_LOG_TYPE_GET_NEW_EMOTION = 8 // 获得新表情
|
||||||
|
ACT_LOG_TYPE_GET_NEW_DECORATION = 9 // 获得新装饰品
|
||||||
|
ACT_LOG_TYPE_GET_NEW_COSTUME = 10 // 获得新服装
|
||||||
|
ACT_LOG_TYPE_COMPLETE_CARD_ALBUM = 11 // 完成卡册收集
|
||||||
|
ACT_LOG_TYPE_COMPLETE_ALL_CARDS = 12 // 完成全卡牌收集
|
||||||
|
ACT_LOG_TYPE_GET_CHAMPIONSHIP_RANK = 13 // 获得锦标赛名次
|
||||||
|
ACT_LOG_TYPE_GET_CHAMPIONSHIP_PRIZE = 14 // 获得锦标赛大奖
|
||||||
|
ACT_LOG_TYPE_GET_LIMITED_ACTIVITY_PRIZE = 15 // 获得限时活动大奖
|
||||||
|
ACT_LOG_TYPE_JOIN_FRIEND_COOP_ACTIVITY = 16 // 参加好友合作类活动
|
||||||
|
ACT_LOG_TYPE_GET_VISIT_GAME_PRIZE = 17 // 获得拜访小游戏大奖 翻牌
|
||||||
|
ACT_LOG_TYPE_GET_VISIT_GAME_PRIZE_1 = 18 // 获得拜访小游戏大奖 除了翻牌
|
||||||
|
ACT_LOG_TYPE_OPEN_PET_TREASURE = 19 // 打开宠物宝藏
|
||||||
|
ACT_LOG_TYPE_VISIT_UPVOTE = 20 // 拜访时点赞
|
||||||
|
ACT_LOG_TYPE_COMPLETE_HANDBOOK_ACHIEVEMENT = 21 // 完成图鉴收集成就
|
||||||
|
ACT_LOG_TYPE_COMPLETE_CHAPTER_SCENES = 22 // 完成第X章所有场景
|
||||||
|
ACT_LOG_TYPE_LOST_USER_RETURN = 23 // 流失用户回归
|
||||||
|
ACT_LOG_TYPE_ACCEPT_MY_INVITE_REGISTER = 24 // 接受"我"的邀请注册
|
||||||
|
ACT_LOG_TYPE_BECOME_MY_FRIEND = 25 // 成为"我"的好友
|
||||||
|
ACT_LOG_TYPE_SEND_CARD_TO_ME = 26 // 向"我"赠送卡牌
|
||||||
|
ACT_LOG_TYPE_CARD_EXCHANGE_WITH_ME = 27 // 与"我"达成卡牌交换
|
||||||
|
ACT_LOG_TYPE_APPEAR_IN_MY_PET_TREASURE = 28 // 出现在"我"的宠物宝藏中并被选中
|
||||||
|
ACT_LOG_TYPE_VISIT_MY_CAT_PRIVATE_TREASURE = 29 // 拜访"我"并玩了猫猫私房宝
|
||||||
|
ACT_LOG_TYPE_VISIT_MY_OTHER_GAME_WIN = 30 // 拜访"我"并玩了猫猫私房宝以外的小游戏,成功装箱
|
||||||
|
ACT_LOG_TYPE_VISIT_MY_OTHER_GAME_LOSE = 31 // 拜访"我"并玩了猫猫私房宝以外的小游戏,未成功装箱
|
||||||
|
ACT_LOG_TYPE_UPVOTE_MY_COLLECTION_INFO = 32 // 为"我"的全收集信息点赞
|
||||||
|
ACT_LOG_TYPE_UPVOTE_MY_ROOM = 33 // 为"我"的房间点赞
|
||||||
|
ACT_LOG_TYPE_JOIN_COOP_ACTIVITY_WITH_ME = 34 // 与"我"一起参加好友合作类活动
|
||||||
|
)
|
||||||
|
|
||||||
type LogInfo struct {
|
type LogInfo struct {
|
||||||
Id int
|
Id int
|
||||||
Uid int
|
Uid int
|
||||||
@ -111,6 +155,10 @@ func (f *FriendMod) InitData() {
|
|||||||
if f.FriendList == nil {
|
if f.FriendList == nil {
|
||||||
f.FriendList = make(map[int]struct{})
|
f.FriendList = make(map[int]struct{})
|
||||||
}
|
}
|
||||||
|
if len(f.ActivityLog) == 0 {
|
||||||
|
f.ActivityLog = make([]*ActLogInfo, 0)
|
||||||
|
f.AddActLog(ACT_LOG_TYPE_FIRST_LOGIN, "")
|
||||||
|
}
|
||||||
if f.ApplyList == nil {
|
if f.ApplyList == nil {
|
||||||
f.ApplyList = make(map[int]int64)
|
f.ApplyList = make(map[int]int64)
|
||||||
}
|
}
|
||||||
@ -181,6 +229,13 @@ func (f *FriendMod) GetInteractTime(id int) int64 {
|
|||||||
return LastTime
|
return LastTime
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (f *FriendMod) GetAddTime(id int) int64 {
|
||||||
|
if _, ok := f.NewFriendList[id]; !ok {
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
return f.NewFriendList[id].AddTime
|
||||||
|
}
|
||||||
|
|
||||||
func (f *FriendMod) AddFriend(id int) {
|
func (f *FriendMod) AddFriend(id int) {
|
||||||
f.NewFriendList[id] = &FriendInfo{
|
f.NewFriendList[id] = &FriendInfo{
|
||||||
AddTime: GoUtil.Now(),
|
AddTime: GoUtil.Now(),
|
||||||
@ -328,6 +383,17 @@ func (f *FriendMod) ResetGoldCardEx() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (f *FriendMod) AddActLog(Type int, Param string) {
|
||||||
|
f.ActivityLog = append(f.ActivityLog, &ActLogInfo{
|
||||||
|
Type: Type,
|
||||||
|
Time: GoUtil.Now(),
|
||||||
|
Param: Param,
|
||||||
|
})
|
||||||
|
if len(f.ActivityLog) > 20 {
|
||||||
|
f.ActivityLog = f.ActivityLog[len(f.ActivityLog)-20:]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
func (f *FriendMod) Upvote(Id int) ([]*item.Item, int, error) {
|
func (f *FriendMod) Upvote(Id int) ([]*item.Item, int, error) {
|
||||||
info := &LogInfo{}
|
info := &LogInfo{}
|
||||||
for _, v := range f.Log {
|
for _, v := range f.Log {
|
||||||
@ -401,3 +467,10 @@ func (f *FriendMod) ApplyWish(Uid int64) error {
|
|||||||
}
|
}
|
||||||
return fmt.Errorf("wish apply not exist")
|
return fmt.Errorf("wish apply not exist")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (f *FriendMod) GetActLogLast() *ActLogInfo {
|
||||||
|
if len(f.ActivityLog) == 0 {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
return f.ActivityLog[len(f.ActivityLog)-1]
|
||||||
|
}
|
||||||
|
|||||||
@ -2,6 +2,7 @@ package item
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
|
"math"
|
||||||
"server/msg"
|
"server/msg"
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -56,6 +57,7 @@ const (
|
|||||||
ITEM_TYPE_PLAYROOM_DECORATION_SET = 113 // playroom装饰套装
|
ITEM_TYPE_PLAYROOM_DECORATION_SET = 113 // playroom装饰套装
|
||||||
ITEM_TYPE_PLAYROOM_DRESS_SET = 114 // playroom服饰套装
|
ITEM_TYPE_PLAYROOM_DRESS_SET = 114 // playroom服饰套装
|
||||||
ITEM_TYPE_PLAYROOM_BOX = 115 // playroom宝箱
|
ITEM_TYPE_PLAYROOM_BOX = 115 // playroom宝箱
|
||||||
|
ITEM_TYPE_ACT_PASS = 116 // 通行证活动道具
|
||||||
)
|
)
|
||||||
|
|
||||||
func (i *ItemMod) InitData() {
|
func (i *ItemMod) InitData() {
|
||||||
@ -182,7 +184,6 @@ func Merge(Item1, Item2 []*Item) []*Item {
|
|||||||
}
|
}
|
||||||
return res
|
return res
|
||||||
}
|
}
|
||||||
|
|
||||||
func MutilItem(i []*Item, num int) []*Item {
|
func MutilItem(i []*Item, num int) []*Item {
|
||||||
if i == nil {
|
if i == nil {
|
||||||
return nil
|
return nil
|
||||||
@ -196,3 +197,17 @@ func MutilItem(i []*Item, num int) []*Item {
|
|||||||
}
|
}
|
||||||
return res
|
return res
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func MutilItemFloat(i []*Item, num float64) []*Item {
|
||||||
|
if i == nil {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
res := make([]*Item, 0)
|
||||||
|
for _, v := range i {
|
||||||
|
res = append(res, &Item{
|
||||||
|
Id: v.Id,
|
||||||
|
Num: int(math.Round(float64(v.Num) * num)),
|
||||||
|
})
|
||||||
|
}
|
||||||
|
return res
|
||||||
|
}
|
||||||
|
|||||||
86
src/server/game/mod/pass/Pass.go
Normal file
86
src/server/game/mod/pass/Pass.go
Normal file
@ -0,0 +1,86 @@
|
|||||||
|
package pass
|
||||||
|
|
||||||
|
import (
|
||||||
|
"server/GoUtil"
|
||||||
|
passCfg "server/conf/pass"
|
||||||
|
"server/game/mod/item"
|
||||||
|
)
|
||||||
|
|
||||||
|
type PassMod struct {
|
||||||
|
LowPass int64 // 低级通行证
|
||||||
|
HighPass int64 // 高级通行证
|
||||||
|
Num int // 积分
|
||||||
|
Reward []int // 免费奖励领取情况
|
||||||
|
Id int
|
||||||
|
}
|
||||||
|
|
||||||
|
func (p *PassMod) InitData() {
|
||||||
|
}
|
||||||
|
|
||||||
|
func (p *PassMod) ZeroUpdate(Id int) {
|
||||||
|
p.Login(Id)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (p *PassMod) GetRewardItems() ([]*item.Item, []int) {
|
||||||
|
NewLevel := passCfg.GetNewLevel(passCfg.GetTemplate(p.Id), p.Num, p.Reward)
|
||||||
|
if len(NewLevel) == 0 {
|
||||||
|
return nil, nil
|
||||||
|
}
|
||||||
|
Items := make([]*item.Item, 0)
|
||||||
|
Items = append(Items, passCfg.GetFreeChargeItems(passCfg.GetTemplate(p.Id), p.Reward)...)
|
||||||
|
if p.LowPass != 0 {
|
||||||
|
Items = append(Items, passCfg.GetLowChargeItems(passCfg.GetTemplate(p.Id), p.Reward)...)
|
||||||
|
}
|
||||||
|
if p.HighPass != 0 {
|
||||||
|
Items = append(Items, passCfg.GetHighChargeItems(passCfg.GetTemplate(p.Id), p.Reward)...)
|
||||||
|
}
|
||||||
|
p.Reward = append(p.Reward, NewLevel...)
|
||||||
|
return Items, NewLevel
|
||||||
|
}
|
||||||
|
|
||||||
|
func (p *PassMod) Login(Id int) int {
|
||||||
|
OldId := p.Id
|
||||||
|
if Id == 0 {
|
||||||
|
p.Id = 0
|
||||||
|
return OldId
|
||||||
|
}
|
||||||
|
if p.Id == Id {
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
p.Id = Id
|
||||||
|
p.LowPass = 0
|
||||||
|
p.HighPass = 0
|
||||||
|
p.Num = 0
|
||||||
|
p.Reward = make([]int, 0)
|
||||||
|
return p.Id
|
||||||
|
}
|
||||||
|
|
||||||
|
func (p *PassMod) GetLowChargeItems() []*item.Item {
|
||||||
|
if p.LowPass != 0 {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
Template := passCfg.GetTemplate(p.Id)
|
||||||
|
if Template == 0 {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
Items := passCfg.GetLowChargeItems(Template, p.Reward)
|
||||||
|
p.LowPass = GoUtil.Now()
|
||||||
|
return Items
|
||||||
|
}
|
||||||
|
|
||||||
|
func (p *PassMod) GetHighChargeItems() []*item.Item {
|
||||||
|
if p.HighPass != 0 {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
Template := passCfg.GetTemplate(p.Id)
|
||||||
|
if Template == 0 {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
Items := passCfg.GetHighChargeItems(Template, p.Reward)
|
||||||
|
p.HighPass = GoUtil.Now()
|
||||||
|
return Items
|
||||||
|
}
|
||||||
|
|
||||||
|
func (p *PassMod) AddExp(Score int) {
|
||||||
|
p.Num += Score
|
||||||
|
}
|
||||||
@ -2,6 +2,7 @@ package playroom
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
|
"math"
|
||||||
"server/GoUtil"
|
"server/GoUtil"
|
||||||
limitedTimeEventCfg "server/conf/limitedTimeEvent"
|
limitedTimeEventCfg "server/conf/limitedTimeEvent"
|
||||||
playroomCfg "server/conf/playroom"
|
playroomCfg "server/conf/playroom"
|
||||||
@ -60,6 +61,7 @@ type PlayroomMod struct {
|
|||||||
FilterVisitor bool // 是否过滤访客
|
FilterVisitor bool // 是否过滤访客
|
||||||
TodayVisitedUsers []int // 今日已拜访过的用户
|
TodayVisitedUsers []int // 今日已拜访过的用户
|
||||||
ADItem map[int]*ItemInfo
|
ADItem map[int]*ItemInfo
|
||||||
|
WeeklyDiscount map[int]int // 每周折扣
|
||||||
}
|
}
|
||||||
|
|
||||||
type DressInfo struct {
|
type DressInfo struct {
|
||||||
@ -292,6 +294,9 @@ func (p *PlayroomMod) InitData() {
|
|||||||
if p.ADItem == nil {
|
if p.ADItem == nil {
|
||||||
p.ADItem = make(map[int]*ItemInfo)
|
p.ADItem = make(map[int]*ItemInfo)
|
||||||
}
|
}
|
||||||
|
if p.WeeklyDiscount == nil {
|
||||||
|
p.WeeklyDiscount = make(map[int]int)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (p *PlayroomMod) ZeroUpdate() {
|
func (p *PlayroomMod) ZeroUpdate() {
|
||||||
@ -302,6 +307,7 @@ func (p *PlayroomMod) ZeroUpdate() {
|
|||||||
p.DailyTaskReward = make([]int, 0)
|
p.DailyTaskReward = make([]int, 0)
|
||||||
p.TodayVisitedUsers = make([]int, 0)
|
p.TodayVisitedUsers = make([]int, 0)
|
||||||
p.ADItem = make(map[int]*ItemInfo)
|
p.ADItem = make(map[int]*ItemInfo)
|
||||||
|
p.WeeklyDiscount = make(map[int]int)
|
||||||
p.InitDailyTask()
|
p.InitDailyTask()
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -900,7 +906,6 @@ func (p *PlayroomMod) GetFlipReward() ([]*item.Item, int, int, error) {
|
|||||||
|
|
||||||
func (p *PlayroomMod) BuyItem(Id int) ([]*item.Item, []*item.Item) {
|
func (p *PlayroomMod) BuyItem(Id int) ([]*item.Item, []*item.Item) {
|
||||||
return playroomCfg.GetBuyItem(Id)
|
return playroomCfg.GetBuyItem(Id)
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func (p *PlayroomMod) UnLock(Lv int) bool {
|
func (p *PlayroomMod) UnLock(Lv int) bool {
|
||||||
@ -928,13 +933,21 @@ func (p *PlayroomMod) UnLock(Lv int) bool {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// shop
|
// shop
|
||||||
func (p *PlayroomMod) ShopBuy(Id, Num int) ([]*item.Item, []*item.Item, error) {
|
func (p *PlayroomMod) ShopBuy(Id, Num int, WeeklyDiscount bool) ([]*item.Item, []*item.Item, error) {
|
||||||
AddItemId, CostItem := playroomCfg.GetShopItem(Id)
|
AddItemId, CostItem, Discount, Limit := playroomCfg.GetShopItem(Id)
|
||||||
if AddItemId == 0 {
|
if AddItemId == 0 {
|
||||||
return nil, nil, fmt.Errorf("ShopBuy AddItemId is 0")
|
return nil, nil, fmt.Errorf("ShopBuy AddItemId is 0")
|
||||||
}
|
}
|
||||||
NewCostItem := item.MutilItem(CostItem, Num)
|
NewCostItem := CostItem[0].Num * Num
|
||||||
return []*item.Item{item.NewItem(AddItemId, Num)}, NewCostItem, nil
|
if WeeklyDiscount {
|
||||||
|
LimitNum := p.WeeklyDiscount[Id]
|
||||||
|
if LimitNum < Limit {
|
||||||
|
NewCostItem = int(math.Ceil(float64(NewCostItem) * float64(Discount) / 100))
|
||||||
|
}
|
||||||
|
p.WeeklyDiscount[Id] = LimitNum + Num
|
||||||
|
}
|
||||||
|
CostItem[0].Num = NewCostItem
|
||||||
|
return []*item.Item{item.NewItem(AddItemId, Num)}, CostItem, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (p *PlayroomMod) UnlockDress(Type, Id int) error {
|
func (p *PlayroomMod) UnlockDress(Type, Id int) error {
|
||||||
|
|||||||
@ -67,3 +67,9 @@ type PetOrderItem struct {
|
|||||||
Num int
|
Num int
|
||||||
Grade []int
|
Grade []int
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type WeeklyDiscountInfo struct {
|
||||||
|
Id int
|
||||||
|
Discount int
|
||||||
|
WeeklyLimit int
|
||||||
|
}
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue
Block a user