Merge branch 'develop' into sdk
This commit is contained in:
commit
8d0b43cb11
@ -32,6 +32,8 @@ const (
|
||||
CONDITION_LT = "<" // 小于
|
||||
CONDITION_GE = ">=" // 大于等于
|
||||
CONDITION_LE = "<=" // 小于等于
|
||||
|
||||
LETTER = "GhCvgqSNTUMVeRfwakiYmcxWKtJQpZrDIBXnPyLsAFdzjHbulE"
|
||||
)
|
||||
|
||||
// 加密字符串
|
||||
@ -312,3 +314,214 @@ func UniqueInts(input []int) []int {
|
||||
}
|
||||
return result
|
||||
}
|
||||
|
||||
/*
|
||||
#codebase: GoUtil
|
||||
修改函数UniqueStringFromInt
|
||||
|
||||
功能说明:
|
||||
将整数转换为包含字母和数字的唯一字符串
|
||||
|
||||
算法步骤:
|
||||
1. 将输入整数格式化为5位数字符串(不足前补0)
|
||||
2. 分割字符串:前2位、中2位、最后1位
|
||||
3. 将各段转为整数,作为字母表索引
|
||||
4. 从预定义字母表中选择对应字符
|
||||
5. 随机生成2个数字字符
|
||||
6. 随机插入数字字符到字母串中
|
||||
7. 返回最终唯一标识字符串
|
||||
*/
|
||||
|
||||
func UniqueStringFromInt(n int) string {
|
||||
n = n % 100000 // 确保n在0-99999范围内
|
||||
str := fmt.Sprintf("%05d", n)
|
||||
a1 := str[0:2]
|
||||
a2 := str[2:4]
|
||||
a3 := str[4:5]
|
||||
|
||||
s1, _ := strconv.Atoi(a1)
|
||||
s2, _ := strconv.Atoi(a2)
|
||||
s3, _ := strconv.Atoi(a3)
|
||||
|
||||
// 修改索引计算逻辑
|
||||
var letter1, letter2 string
|
||||
if s1 >= len(LETTER) {
|
||||
letter1 = string(LETTER[s1%len(LETTER)]) + strconv.Itoa(s1/len(LETTER))
|
||||
} else {
|
||||
letter1 = string(LETTER[s1])
|
||||
}
|
||||
|
||||
if s2 >= len(LETTER) {
|
||||
idx := (s2) % len(LETTER)
|
||||
letter2 = string(LETTER[idx]) + strconv.Itoa(s2/len(LETTER))
|
||||
} else {
|
||||
letter2 = string(LETTER[s2])
|
||||
}
|
||||
|
||||
letter3 := string(LETTER[s3+20])
|
||||
letter := fmt.Sprintf("%s%s%s", letter1, letter2, letter3)
|
||||
lastLetter := 5 - len(letter)
|
||||
indices := rand.Perm(8)[:2]
|
||||
chars := []byte{byte('2' + indices[0]), byte('2' + indices[1])}
|
||||
if lastLetter > 0 {
|
||||
for i := 0; i < lastLetter; i++ {
|
||||
insertPos1 := rand.Intn(len(letter) + 1)
|
||||
letter = letter[:insertPos1] + string(chars[0]) + letter[insertPos1:]
|
||||
}
|
||||
}
|
||||
pos := rand.Intn(len(LETTER))
|
||||
letter += string(LETTER[pos])
|
||||
return fmt.Sprintf("%s-%s", letter[:3], letter[3:])
|
||||
}
|
||||
|
||||
// 反解析 UniqueStringFromInt 生成的字符串,返回原始整数(0-99999),失败返回 -1
|
||||
func ParseUniqueStringToInt(s string) int {
|
||||
arr := strings.Split(s, "-")
|
||||
// 去除字符串中大于1的数字
|
||||
s1 := arr[2] + arr[3]
|
||||
s1 = s1[:len(s1)-1] // 去掉最后一个字符
|
||||
s2 := ""
|
||||
for _, ch := range s1 {
|
||||
if ch < '2' || ch > '9' {
|
||||
s2 += string(ch)
|
||||
}
|
||||
}
|
||||
index1 := 0
|
||||
s3 := ""
|
||||
for i := 0; i < len(s2); i++ {
|
||||
index := strings.Index(LETTER, string(s2[i]))
|
||||
|
||||
if i < len(s2)-1 && s2[i+1] == '1' {
|
||||
index += len(LETTER)
|
||||
i++
|
||||
}
|
||||
index1++
|
||||
if i == len(s2)-1 {
|
||||
index -= 20 // 最后一位是字母,减去20
|
||||
s3 += fmt.Sprintf("%d", index)
|
||||
} else {
|
||||
s3 += fmt.Sprintf("%02d", index)
|
||||
}
|
||||
|
||||
}
|
||||
return Int(s3)
|
||||
}
|
||||
|
||||
func GenerateShuffledAlphabet() string {
|
||||
// 包含所有大小写字母的字符串
|
||||
alphabet := "abcdefghijklmnpqrstuvwxyzABCDEFGHIJKLMNPQRSTUVWXYZ"
|
||||
|
||||
// 转换为字节切片以便打乱
|
||||
bytes := []byte(alphabet)
|
||||
|
||||
// 使用当前时间作为随机种子
|
||||
rand.Seed(time.Now().UnixNano())
|
||||
|
||||
// Fisher-Yates 洗牌算法
|
||||
for i := len(bytes) - 1; i > 0; i-- {
|
||||
j := rand.Intn(i + 1)
|
||||
bytes[i], bytes[j] = bytes[j], bytes[i]
|
||||
}
|
||||
|
||||
return string(bytes)
|
||||
}
|
||||
|
||||
// 根据IP获取国家名称
|
||||
func GetCountryByIP(ip string) (string, error) {
|
||||
return "", nil
|
||||
// resp, err := http.Get("https://ipapi.co/" + ip + "/country_name/")
|
||||
// if err != nil {
|
||||
// return "", err
|
||||
// }
|
||||
// defer resp.Body.Close()
|
||||
// buf := new(bytes.Buffer)
|
||||
// buf.ReadFrom(resp.Body)
|
||||
// return strings.TrimSpace(buf.String()), nil
|
||||
}
|
||||
|
||||
// 根据国家名称获取ISO 3166-1国家码
|
||||
func GetISOCodeByCountry(country string) (string, error) {
|
||||
// 简单映射,可以扩展为更完整的映射表
|
||||
countryMap := map[string]string{
|
||||
"Afghanistan": "004", // 阿富汗
|
||||
"Albania": "008", // 阿尔巴尼亚
|
||||
"Algeria": "012", // 阿尔及利亚
|
||||
"Angola": "024", // 安哥拉
|
||||
"Argentina": "032", // 阿根廷
|
||||
"Austria": "040", // 奥地利
|
||||
"Azerbaijan": "031", // 阿塞拜疆
|
||||
"Bahrain": "048", // 巴林
|
||||
"Bangladesh": "050", // 孟加拉国
|
||||
"Belgium": "056", // 比利时
|
||||
"Bolivia": "068", // 玻利维亚
|
||||
"Bosnia and Herzegovina": "070", // 波斯尼亚和黑塞哥维那
|
||||
"Brazil": "076", // 巴西
|
||||
"Bulgaria": "100", // 保加利亚
|
||||
"Canada": "124", // 加拿大
|
||||
"Chile": "152", // 智利
|
||||
"China": "156", // 中国
|
||||
"Colombia": "170", // 哥伦比亚
|
||||
"Costa Rica": "188", // 哥斯达黎加
|
||||
"Croatia": "191", // 克罗地亚
|
||||
"Cuba": "192", // 古巴
|
||||
"Denmark": "208", // 丹麦
|
||||
"Ecuador": "218", // 厄瓜多尔
|
||||
"Egypt": "818", // 埃及
|
||||
"Ethiopia": "231", // 埃塞俄比亚
|
||||
"Finland": "246", // 芬兰
|
||||
"France": "250", // 法国
|
||||
"Germany": "276", // 德国
|
||||
"Ghana": "288", // 加纳
|
||||
"Greece": "300", // 希腊
|
||||
"Hungary": "348", // 匈牙利
|
||||
"India": "356", // 印度
|
||||
"Indonesia": "360", // 印度尼西亚
|
||||
"Iran": "364", // 伊朗
|
||||
"Iraq": "368", // 伊拉克
|
||||
"Italy": "380", // 意大利
|
||||
"Japan": "392", // 日本
|
||||
"Jordan": "400", // 约旦
|
||||
"Kenya": "404", // 肯尼亚
|
||||
"Kuwait": "414", // 科威特
|
||||
"Lebanon": "422", // 黎巴嫩
|
||||
"Malaysia": "458", // 马来西亚
|
||||
"Mexico": "484", // 墨西哥
|
||||
"Morocco": "504", // 摩洛哥
|
||||
"Nigeria": "566", // 尼日利亚
|
||||
"Norway": "578", // 挪威
|
||||
"Pakistan": "586", // 巴基斯坦
|
||||
"Peru": "604", // 秘鲁
|
||||
"Philippines": "608", // 菲律宾
|
||||
"Poland": "616", // 波兰
|
||||
"Portugal": "620", // 葡萄牙
|
||||
"Qatar": "634", // 卡塔尔
|
||||
"Romania": "642", // 罗马尼亚
|
||||
"Russia": "643", // 俄罗斯
|
||||
"Saudi Arabia": "682", // 沙特阿拉伯
|
||||
"South Africa": "710", // 南非
|
||||
"South Korea": "410", // 韩国
|
||||
"Spain": "724", // 西班牙
|
||||
"Sweden": "752", // 瑞典
|
||||
"Switzerland": "756", // 瑞士
|
||||
"Thailand": "764", // 泰国
|
||||
"Turkey": "792", // 土耳其
|
||||
"Ukraine": "804", // 乌克兰
|
||||
"United Kingdom": "826", // 英国
|
||||
"United States": "840", // 美国
|
||||
"Vietnam": "704", // 越南
|
||||
"Zimbabwe": "716", // 津巴布韦
|
||||
}
|
||||
if code, ok := countryMap[country]; ok {
|
||||
return code, nil
|
||||
}
|
||||
return "", fmt.Errorf("country code not found for %s", country)
|
||||
}
|
||||
|
||||
// 综合函数:根据IP获取ISO 3166-1国家码
|
||||
func GetISOCodeByIP(ip string) (string, error) {
|
||||
country, err := GetCountryByIP(ip)
|
||||
if err != nil {
|
||||
return "", err
|
||||
}
|
||||
return GetISOCodeByCountry(country)
|
||||
}
|
||||
|
||||
@ -51,8 +51,8 @@ var Server struct {
|
||||
KafkaHost string
|
||||
KafkaPort string
|
||||
Version string
|
||||
|
||||
IdVerify bool
|
||||
CountryCode string
|
||||
IdVerify bool
|
||||
}
|
||||
|
||||
func init() {
|
||||
|
||||
@ -29,10 +29,10 @@
|
||||
"RedisPort" :"6379",
|
||||
"RedisPwd" :"",
|
||||
"GoogleVerify":false,
|
||||
|
||||
"RemoteAddr":"host.docker.internal:9001",
|
||||
"Partition":3,
|
||||
"KafkaHost":"kafka-server",
|
||||
"CountryCode":"004",
|
||||
"KafkaPort":"9092",
|
||||
"Version":"1.0.0",
|
||||
"IdVerify":false
|
||||
|
||||
35
src/server/game/CompensationFunc.go
Normal file
35
src/server/game/CompensationFunc.go
Normal file
@ -0,0 +1,35 @@
|
||||
package game
|
||||
|
||||
import (
|
||||
"server/game/mod/compensation"
|
||||
"server/game/mod/mail"
|
||||
)
|
||||
|
||||
func (p *Player) Compensation() {
|
||||
p.Compensation20250716()
|
||||
}
|
||||
|
||||
func (p *Player) Compensation20250716() {
|
||||
compensationMod := p.PlayMod.getCompensationMod()
|
||||
if compensationMod.Is20250716() {
|
||||
return // 已经领取过补偿
|
||||
}
|
||||
PlayerBaseMod := p.GetPlayerBaseMod()
|
||||
items := compensationMod.Compensation20250716(PlayerBaseMod.GetName())
|
||||
if len(items) == 0 {
|
||||
return // 没有补偿物品
|
||||
}
|
||||
|
||||
MailMod := p.PlayMod.getMailMod()
|
||||
MailMod.SendMail(&mail.MailStruct{
|
||||
Title: compensation.Compensation20250716_Mail_Config.Title,
|
||||
SubTitle: "",
|
||||
Content: compensation.Compensation20250716_Mail_Config.Content,
|
||||
TitleEn: compensation.Compensation20250716_Mail_Config.Title,
|
||||
SubTitleEn: "",
|
||||
ContentEn: compensation.Compensation20250716_Mail_Config.Content,
|
||||
Items: items,
|
||||
Type: mail.MAIL_TYPE_NORMAL,
|
||||
})
|
||||
p.PlayMod.save()
|
||||
}
|
||||
@ -150,6 +150,8 @@ func (f *FriendMgr) SetVarUserData(m *msg.Msg) (interface{}, error) {
|
||||
data.Upvote++
|
||||
case VAR_OP_CHIP:
|
||||
data.Chip += VarOp.Data.(int)
|
||||
case VAR_OP_CHIP_SET:
|
||||
data.Chip = VarOp.Data.(int)
|
||||
case VAR_OP_KISS:
|
||||
data.Kiss = VarOp.Data.(int)
|
||||
}
|
||||
|
||||
@ -217,6 +217,13 @@ func (ad *GameLogic) NewAccountInsertDataToDB() bool {
|
||||
Uid: insertId,
|
||||
EventName: "register",
|
||||
})
|
||||
G_GameLogicPtr.AddLog(&Log{
|
||||
Uid: insertId,
|
||||
EventName: "register_info",
|
||||
Param: map[string]interface{}{
|
||||
"username": ad.Db_AccountInfo.UserName,
|
||||
},
|
||||
})
|
||||
return true
|
||||
}
|
||||
|
||||
@ -736,6 +743,7 @@ func (ad *GameLogic) RegisterNetWorkFunc() {
|
||||
RegisterMsgProcessFunc("ReqFriendTLUpvote", ReqFriendTLUpvote) // 请求时间线点赞
|
||||
RegisterMsgProcessFunc("ReqAddNpc", ReqAddNpc) // 增加npc
|
||||
RegisterMsgProcessFunc("ReqWishApply", ReqWishApply) // 同意好友心愿单请求
|
||||
RegisterMsgProcessFunc("ReqFriendByCode", ReqFriendByCode) // 根据邀请码查询好友
|
||||
|
||||
RegisterMsgProcessFunc("ReqSearchPlayer", ReqSearchPlayer) // 搜索好友
|
||||
RegisterMsgProcessFunc("ReqApplyFriend", ReqApplyFriend) // 申请好友
|
||||
@ -800,30 +808,31 @@ func (ad *GameLogic) RegisterNetWorkFunc() {
|
||||
RegisterMsgProcessFunc("ReqRaceStart", ReqRaceStart)
|
||||
|
||||
// #region playroom
|
||||
RegisterMsgProcessFunc("ReqPlayroom", ReqPlayroom) // 请求playroom数据
|
||||
RegisterMsgProcessFunc("ReqPlayroomInfo", ReqPlayroomInfo) // 请求playroom拜访信息
|
||||
RegisterMsgProcessFunc("ReqPlayroomDressSet", ReqPlayroomDressSet) // 设置服装
|
||||
RegisterMsgProcessFunc("ReqPlayroomPetAirSet", ReqPlayroomPetAirSet) // 获取宠物空气
|
||||
RegisterMsgProcessFunc("ReqPlayroomGame", ReqPlayroomGame) // 游戏结果
|
||||
RegisterMsgProcessFunc("ReqPlayroomInteract", ReqPlayroomInteract) // 宠物交互
|
||||
RegisterMsgProcessFunc("ReqPlayroomSetRoom", ReqPlayroomSetRoom) // playroom装饰
|
||||
RegisterMsgProcessFunc("ReqPlayroomSelectReward", ReqPlayroomSelectReward) // playroom选择奖励
|
||||
RegisterMsgProcessFunc("ReqPlayroomLose", ReqPlayroomLose) // 处理偷取的棋子
|
||||
RegisterMsgProcessFunc("ReqPlayroomWork", ReqPlayroomWork) // 宠物工作
|
||||
RegisterMsgProcessFunc("ReqPlayroomRest", ReqPlayroomRest) // 宠物休息
|
||||
RegisterMsgProcessFunc("ReqPlayroomDraw", ReqPlayroomDraw) // 转盘
|
||||
RegisterMsgProcessFunc("ReqPlayroomFlip", ReqPlayroomFlip) // 翻牌
|
||||
RegisterMsgProcessFunc("ReqPlayroomFlipReward", ReqPlayroomFlipReward) // 翻牌奖励
|
||||
RegisterMsgProcessFunc("ReqPlayroomChip", ReqPlayroomChip) // 消除碎片
|
||||
RegisterMsgProcessFunc("ReqPlayroomOutline", ReqPlayroomOutline) // 打工离线
|
||||
RegisterMsgProcessFunc("ReqPlayroomWrokOutline", ReqPlayroomWrokOutline) // 打工离线完成
|
||||
RegisterMsgProcessFunc("ReqPlayroomShop", ReqPlayroomShop) // playroom 商店
|
||||
RegisterMsgProcessFunc("ReqPlayroomBuyItem", ReqPlayroomBuyItem) // 购买playroom物品
|
||||
RegisterMsgProcessFunc("ReqPlayroomUpvote", ReqPlayroomUpvote) // 点赞别人的playroom
|
||||
RegisterMsgProcessFunc("ReqPlayroomUnlock", ReqPlayroomUnlock) // 解锁房间
|
||||
RegisterMsgProcessFunc("ReqPlayroomTask", ReqPlayroomTask) // playroom任务
|
||||
RegisterMsgProcessFunc("ReqPlayroomTaskReward", ReqPlayroomTaskReward) // 领取任务奖励
|
||||
|
||||
RegisterMsgProcessFunc("ReqPlayroom", ReqPlayroom) // 请求playroom数据
|
||||
RegisterMsgProcessFunc("ReqPlayroomInfo", ReqPlayroomInfo) // 请求playroom拜访信息
|
||||
RegisterMsgProcessFunc("ReqPlayroomDressSet", ReqPlayroomDressSet) // 设置服装
|
||||
RegisterMsgProcessFunc("ReqPlayroomPetAirSet", ReqPlayroomPetAirSet) // 获取宠物空气
|
||||
RegisterMsgProcessFunc("ReqPlayroomGame", ReqPlayroomGame) // 游戏结果
|
||||
RegisterMsgProcessFunc("ReqPlayroomInteract", ReqPlayroomInteract) // 宠物交互
|
||||
RegisterMsgProcessFunc("ReqPlayroomSetRoom", ReqPlayroomSetRoom) // playroom装饰
|
||||
RegisterMsgProcessFunc("ReqPlayroomSelectReward", ReqPlayroomSelectReward) // playroom选择奖励
|
||||
RegisterMsgProcessFunc("ReqPlayroomLose", ReqPlayroomLose) // 处理偷取的棋子
|
||||
RegisterMsgProcessFunc("ReqPlayroomWork", ReqPlayroomWork) // 宠物工作
|
||||
RegisterMsgProcessFunc("ReqPlayroomRest", ReqPlayroomRest) // 宠物休息
|
||||
RegisterMsgProcessFunc("ReqPlayroomDraw", ReqPlayroomDraw) // 转盘
|
||||
RegisterMsgProcessFunc("ReqPlayroomFlip", ReqPlayroomFlip) // 翻牌
|
||||
RegisterMsgProcessFunc("ReqPlayroomFlipReward", ReqPlayroomFlipReward) // 翻牌奖励
|
||||
RegisterMsgProcessFunc("ReqPlayroomChip", ReqPlayroomChip) // 消除碎片
|
||||
RegisterMsgProcessFunc("ReqPlayroomOutline", ReqPlayroomOutline) // 打工离线
|
||||
RegisterMsgProcessFunc("ReqPlayroomWrokOutline", ReqPlayroomWrokOutline) // 打工离线完成
|
||||
RegisterMsgProcessFunc("ReqPlayroomShop", ReqPlayroomShop) // playroom 商店
|
||||
RegisterMsgProcessFunc("ReqPlayroomBuyItem", ReqPlayroomBuyItem) // 购买playroom物品
|
||||
RegisterMsgProcessFunc("ReqPlayroomUpvote", ReqPlayroomUpvote) // 点赞别人的playroom
|
||||
RegisterMsgProcessFunc("ReqPlayroomUnlock", ReqPlayroomUnlock) // 解锁房间
|
||||
RegisterMsgProcessFunc("ReqPlayroomTask", ReqPlayroomTask) // playroom任务
|
||||
RegisterMsgProcessFunc("ReqPlayroomTaskReward", ReqPlayroomTaskReward) // 领取任务奖励
|
||||
RegisterMsgProcessFunc("ReqPlayroomGameShowReward", ReqPlayroomGameShowReward) // 展示游戏结果数据
|
||||
RegisterMsgProcessFunc("ReqPlayroomGuide", ReqPlayroomGuide) // 展示游戏结果数据
|
||||
// 宠物宝藏
|
||||
RegisterMsgProcessFunc("ReqFriendTreasure", ReqFriendTreasure) // 请求好友宝藏数据
|
||||
RegisterMsgProcessFunc("ReqFriendTreasureStart", ReqFriendTreasureStart) // 开始游戏
|
||||
|
||||
@ -320,7 +320,7 @@ func ReqGmCommand_(player *Player, Command string) error {
|
||||
PlayroomBackData(player)
|
||||
case "addChip":
|
||||
PlayroomMod := player.PlayMod.getPlayroomMod()
|
||||
PlayroomMod.AddChip(1, 1)
|
||||
PlayroomMod.AddChip(100100001, 1, 0)
|
||||
player.PushClientRes(PlayroomMod.NotifyLose())
|
||||
case "save":
|
||||
player.PlayMod.ClearData(player)
|
||||
@ -463,7 +463,13 @@ func ReqGmCommand_(player *Player, Command string) error {
|
||||
}
|
||||
}
|
||||
player.HandleItem(items, msg.ITEM_POP_LABEL_GM.String())
|
||||
|
||||
case "resetCompensation":
|
||||
compensationMod := player.PlayMod.getCompensationMod()
|
||||
compensationMod.C20250716 = false
|
||||
case "resetCode":
|
||||
BaseMod := player.PlayMod.getBaseMod()
|
||||
BaseMod.AddCode = fmt.Sprintf("MMM-%s-%s", "156", GoUtil.UniqueStringFromInt(int(BaseMod.Uid)))
|
||||
BackUserInfo(player)
|
||||
default:
|
||||
return fmt.Errorf("Player %d ReqGmCommand:%v not found", player.M_DwUin, arg)
|
||||
}
|
||||
|
||||
@ -397,6 +397,7 @@ func (p *Player) Login() {
|
||||
FaceMod.Login(PlayBaseMod.GetRegisterTime())
|
||||
AvatarMod.Login(PlayBaseMod.GetRegisterTime())
|
||||
HandbookItem := p.PlayMod.getCardMod().Login(G_GameLogicPtr.SeverInfo.OpenTime)
|
||||
p.Compensation()
|
||||
p.HandleItem(HandbookItem, msg.ITEM_POP_LABEL_AllCollectRewardHB.String())
|
||||
}
|
||||
|
||||
@ -708,7 +709,7 @@ func (p *Player) HandleItem(itemList []*item.Item, Label string) error {
|
||||
})
|
||||
default:
|
||||
err := ItemMod.AddItem(v.Id, v.Num)
|
||||
p.TeLog("item_change", map[string]interface{}{
|
||||
p.TeLog("asset_change", map[string]interface{}{
|
||||
"item_id": v.Id,
|
||||
"change_type": change_type,
|
||||
"change_num": math.Abs(float64(v.Num)),
|
||||
@ -1047,3 +1048,10 @@ func (p *Player) SubCard(Id int) error {
|
||||
})
|
||||
return nil
|
||||
}
|
||||
|
||||
func (p *Player) GetIp() string {
|
||||
if p.GetAgent() == nil {
|
||||
return ""
|
||||
}
|
||||
return p.GetAgent().RemoteAddr().String()
|
||||
}
|
||||
|
||||
@ -72,7 +72,8 @@ func PlayroomBackData(p *Player) {
|
||||
ChipMessage := make([]*proto.ChipInfo, 0)
|
||||
for _, v := range PlayroomMod.ChipList {
|
||||
ChipMessage = append(ChipMessage, &proto.ChipInfo{
|
||||
Uid: int64(v.Uid),
|
||||
Uid: int64(v.Uid),
|
||||
EmojiId: int32(v.Emoji),
|
||||
})
|
||||
}
|
||||
data := G_GameLogicPtr.GetUserData(int(p.M_DwUin))
|
||||
@ -147,3 +148,25 @@ func (p *Player) NotifyPlayroomKiss() {
|
||||
}
|
||||
p.PushClientRes(m)
|
||||
}
|
||||
|
||||
func BackUserInfo(p *Player) {
|
||||
BaseMod := p.PlayMod.getBaseMod()
|
||||
FaceMod := p.PlayMod.getFaceMod()
|
||||
AvatarMod := p.PlayMod.getAvatarMod()
|
||||
DecorateMod := p.PlayMod.getDecorateMod()
|
||||
p.PushClientRes(&proto.UserInfo{
|
||||
Uid: p.M_DwUin,
|
||||
Nickname: BaseMod.NickName,
|
||||
Avatar: int32(AvatarMod.SetId),
|
||||
Face: int32(FaceMod.SetId),
|
||||
DecorateCnt: int32(DecorateMod.DecorateNum),
|
||||
AvatarList: AvatarMod.BackData(),
|
||||
FaceList: FaceMod.BackData(),
|
||||
EmojiList: p.PlayMod.getEmojiMod().BackData(),
|
||||
SetEmoji: p.PlayMod.getEmojiMod().GetEmojiSet(),
|
||||
Login: int32(BaseMod.GetLoginTime()),
|
||||
PetName: BaseMod.PetName,
|
||||
IdNum: BaseMod.IdCardNum,
|
||||
AddCode: BaseMod.AddCode,
|
||||
})
|
||||
}
|
||||
|
||||
@ -177,7 +177,6 @@ func (p *PlayerBaseData) UpdateBaseItemInfo(update *msg.UpdateBaseItemInfo) {
|
||||
p.Data.LastPlayTime = v
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
func (p *PlayerBaseData) ReqRemoveAd(player *Player, buf []byte) {
|
||||
@ -417,6 +416,9 @@ func (p *PlayerBaseData) ReqSynGameData(player *Player, buf []byte) {
|
||||
res.ResultCode = 0
|
||||
|
||||
}
|
||||
p.p.TeLog("ReqSynGameData", map[string]interface{}{
|
||||
"platform_type": "facebook",
|
||||
})
|
||||
p.SaveDataFromDB("")
|
||||
agent := player.GetAgentByPlayer()
|
||||
data, _ := proto.Marshal(res)
|
||||
|
||||
@ -212,19 +212,21 @@ func handle(p *Player, m *msg.Msg) error {
|
||||
PlayroomMod := p.PlayMod.getPlayroomMod()
|
||||
Items := m.Item
|
||||
GameId := playroom.GAME_TYPE_HOOK
|
||||
Emoji := 0
|
||||
if m.Extra != nil {
|
||||
if val, ok := m.Extra.(int); ok {
|
||||
GameId = val
|
||||
if val, ok := m.Extra.(GameResult); ok {
|
||||
GameId = val.T
|
||||
Emoji = val.Emoji
|
||||
}
|
||||
}
|
||||
if len(Items) == 0 {
|
||||
return nil
|
||||
}
|
||||
if GameId == playroom.GAME_TYPE_HOOK {
|
||||
PlayroomMod.AddChip(m.From, m.SendT)
|
||||
p.AddLog(m.From, friend.LOG_TYPE_PLAYROOM_CAT_WIN, fmt.Sprintf("%d_%d", Items[0].Id, Items[0].Num), m.SendT)
|
||||
if GameId == playroom.GAME_TYPE_HOOK || GameId == playroom.GAME_TYPE_HIDE {
|
||||
PlayroomMod.AddChip(m.From, m.SendT, Emoji)
|
||||
p.AddLog(m.From, friend.LOG_TYPE_PLAYROOM_CAT_WIN, fmt.Sprintf("%d_%d_%d", Items[0].Id, Items[0].Num, Emoji), m.SendT)
|
||||
} else {
|
||||
p.AddLog(m.From, friend.LOG_TYPE_PLAYROOM_VISIT, fmt.Sprintf("%d_%d", Items[0].Id, Items[0].Num), m.SendT)
|
||||
p.AddLog(m.From, friend.LOG_TYPE_PLAYROOM_VISIT, fmt.Sprintf("%d_%d_%d", Items[0].Id, Items[0].Num, Emoji), m.SendT)
|
||||
}
|
||||
PlayroomMod.AddMood(playroom.MOOD_TYPE_FOOD, -50)
|
||||
PlayroomMod.AddMood(playroom.MOOD_TYPE_CLEAN, -50)
|
||||
@ -245,7 +247,13 @@ func handle(p *Player, m *msg.Msg) error {
|
||||
p.PushClientRes(PlayroomMod.NotifyLose())
|
||||
case msg.HANDLE_TYPE_PLAYROOM_GAME:
|
||||
FriendMod := p.PlayMod.getFriendMod()
|
||||
p.AddLog(m.From, friend.LOG_TYPE_PLAYROOM_CAT_LOSE, "", m.SendT)
|
||||
Emoji := 0
|
||||
if m.Extra != nil {
|
||||
if val, ok := m.Extra.(GameResult); ok {
|
||||
Emoji = val.Emoji
|
||||
}
|
||||
}
|
||||
p.AddLog(m.From, friend.LOG_TYPE_PLAYROOM_CAT_LOSE, fmt.Sprintf("%d", Emoji), m.SendT)
|
||||
FriendMod.Interact(m.From, friend.INTERACT_TYPE_VISIT, m.SendT)
|
||||
case msg.FRIEND_TREASURE_HANDLE: // # 好友宝藏
|
||||
Items := make([]*item.Item, 0)
|
||||
@ -586,27 +594,6 @@ func CancelOrder(p *Player, OrderSn string) error {
|
||||
return nil
|
||||
}
|
||||
|
||||
func BackUserInfo(p *Player) {
|
||||
BaseMod := p.PlayMod.getBaseMod()
|
||||
FaceMod := p.PlayMod.getFaceMod()
|
||||
AvatarMod := p.PlayMod.getAvatarMod()
|
||||
DecorateMod := p.PlayMod.getDecorateMod()
|
||||
p.PushClientRes(&proto.UserInfo{
|
||||
Uid: p.M_DwUin,
|
||||
Nickname: BaseMod.NickName,
|
||||
Avatar: int32(AvatarMod.SetId),
|
||||
Face: int32(FaceMod.SetId),
|
||||
DecorateCnt: int32(DecorateMod.DecorateNum),
|
||||
AvatarList: AvatarMod.BackData(),
|
||||
FaceList: FaceMod.BackData(),
|
||||
EmojiList: p.PlayMod.getEmojiMod().BackData(),
|
||||
SetEmoji: p.PlayMod.getEmojiMod().GetEmojiSet(),
|
||||
Login: int32(BaseMod.GetLoginTime()),
|
||||
PetName: BaseMod.PetName,
|
||||
IdNum: BaseMod.IdCardNum,
|
||||
})
|
||||
}
|
||||
|
||||
func GetCardInfoMsg(CardInfo *card.CardInfo) *proto.ResFriendCard {
|
||||
Uid := 0
|
||||
if CardInfo.Type == card.TYPE_CARD_SEND {
|
||||
@ -741,9 +728,6 @@ func GetRecommendPlayer(p *Player, Num int) []int {
|
||||
PlayerList1 := make([]int, 0)
|
||||
FriendMod := p.PlayMod.getFriendMod()
|
||||
for _, v := range PlayerList {
|
||||
if v.Score < 15 {
|
||||
continue
|
||||
}
|
||||
if v.Uid == int(p.M_DwUin) {
|
||||
continue
|
||||
}
|
||||
@ -1085,3 +1069,22 @@ func ExcludeCardStar(CardList []int) []int {
|
||||
}
|
||||
return StarList
|
||||
}
|
||||
|
||||
func (p *Player) GetPlayroomGameReward(Type, SelectId int) []*item.Item {
|
||||
PlayroomMod := p.PlayMod.getPlayroomMod()
|
||||
BaseMod := p.PlayMod.getBaseMod()
|
||||
Level := BaseMod.GetLevel()
|
||||
Items := make([]*item.Item, 0)
|
||||
if Type == playroom.GAME_RESULT_LOSE {
|
||||
Items = append(Items, item.NewItem(item.ITEM_STAR_ID, 20))
|
||||
}
|
||||
if Type == playroom.GAME_RESULT_LOW {
|
||||
Items = append(Items, item.NewItem(item.ITEM_STAR_ID, Level*2))
|
||||
}
|
||||
if Type == playroom.GAME_RESULT_MIDDLE {
|
||||
Items = append(Items, item.NewItem(item.ITEM_STAR_ID, Level*3))
|
||||
} else {
|
||||
Items = PlayroomMod.SelectReward(SelectId)
|
||||
}
|
||||
return Items
|
||||
}
|
||||
|
||||
@ -13,6 +13,7 @@ import (
|
||||
"server/game/mod/charge"
|
||||
"server/game/mod/chess"
|
||||
"server/game/mod/collect"
|
||||
"server/game/mod/compensation"
|
||||
"server/game/mod/dailyTask"
|
||||
"server/game/mod/decorate"
|
||||
"server/game/mod/emoji"
|
||||
@ -77,6 +78,7 @@ type PlayerModList struct {
|
||||
Emoji emoji.EmojiMod // 表情
|
||||
Collect collect.Collect // 收集
|
||||
Activity activity.Activity // 活动
|
||||
Compensation compensation.Compensation // 补偿
|
||||
}
|
||||
|
||||
func (p *PlayerModData) LoadDataFromDB(dwUin interface{}) bool {
|
||||
@ -148,7 +150,7 @@ func (p *PlayerModData) InitMod(player *Player) (bool, error) {
|
||||
BaseMod.FackBookId = PlayerBaseMod.Data.FaceBookId
|
||||
is_update = true
|
||||
}
|
||||
|
||||
Ip := p.GetPlayer().GetIp()
|
||||
p.ModList.Handbook.InitData()
|
||||
p.ModList.Order.InitData()
|
||||
p.ModList.Decorate.InitData()
|
||||
@ -158,7 +160,7 @@ func (p *PlayerModData) InitMod(player *Player) (bool, error) {
|
||||
p.ModList.DailyTask.InitData()
|
||||
p.ModList.Face.InitData()
|
||||
p.ModList.Avatar.InitData()
|
||||
p.ModList.Base.InitData(int(p.Data.DwUin))
|
||||
p.ModList.Base.InitData(int(p.Data.DwUin), Ip)
|
||||
p.ModList.SevenLogin.InitData()
|
||||
p.ModList.LimitedTimeEvent.InitData(BaseMod.GetLevel())
|
||||
p.ModList.Friend.InitData()
|
||||
@ -361,3 +363,6 @@ func (p *PlayerMod) getCollectMod() *collect.Collect {
|
||||
func (p *PlayerMod) getActivityMod() *activity.Activity {
|
||||
return &p.mod_list.Activity
|
||||
}
|
||||
func (p *PlayerMod) getCompensationMod() *compensation.Compensation {
|
||||
return &p.mod_list.Compensation
|
||||
}
|
||||
|
||||
@ -5,6 +5,7 @@ import (
|
||||
"fmt"
|
||||
"math"
|
||||
"server/GoUtil"
|
||||
"server/conf"
|
||||
cardCfg "server/conf/card"
|
||||
collectCfg "server/conf/collect"
|
||||
decorateCfg "server/conf/decorate"
|
||||
@ -74,6 +75,7 @@ func ReqPlayerBriefProfileDataFunc(player *Player, buf []byte) error {
|
||||
// 移除广告
|
||||
func ReqRemoveAdFunc(player *Player, buf []byte) error {
|
||||
player.PlayerBaseMod.ReqRemoveAd(player, buf)
|
||||
player.TeLog("remove_ad", map[string]interface{}{})
|
||||
return nil
|
||||
}
|
||||
|
||||
@ -209,6 +211,10 @@ func RegHandbookAllReward(player *Player, buf []byte) error {
|
||||
Type: req.Type,
|
||||
},
|
||||
})
|
||||
player.TeLog("collection_all_reward", map[string]interface{}{
|
||||
"type": req.Type,
|
||||
"item_list": Items,
|
||||
})
|
||||
player.PushClientRes(player.PlayMod.getHandbookMod().BackData())
|
||||
player.PlayMod.save()
|
||||
return nil
|
||||
@ -571,7 +577,7 @@ func ReqDecorateReward(player *Player, buf []byte) error {
|
||||
func UpdatePlayerChessDataFunc(player *Player, buf []byte) error {
|
||||
data := &PlayerChessData{}
|
||||
err := data.UpdatePlayerChessData(player, buf)
|
||||
if err != nil {
|
||||
if err == nil {
|
||||
player.TeLog("outsync_event", map[string]interface{}{
|
||||
"outsync_event": "UpdatePlayerChessDataFunc",
|
||||
})
|
||||
@ -611,11 +617,11 @@ func ReqGetChessFromBuff(player *Player, buf []byte) error {
|
||||
Code: msg.RES_CODE_FAIL,
|
||||
Msg: err.Error(),
|
||||
})
|
||||
player.TeLog("outsync_event", map[string]interface{}{
|
||||
"outsync_event": "ReqGetChessFromBuff",
|
||||
})
|
||||
return err
|
||||
}
|
||||
player.TeLog("ReqGetChessFromBuff", map[string]interface{}{
|
||||
"chess_id": ChessId,
|
||||
})
|
||||
Update = OrderMod.CreateExtraOrder([]int{ChessId}, AddNewEmit, ChessMod.GetUnlockChessList(), BaseMod.GetEnergyMul())
|
||||
if Update {
|
||||
player.PushClientRes(OrderMod.BackData())
|
||||
@ -651,11 +657,13 @@ func ReqPutChessInBag(player *Player, buf []byte) error {
|
||||
Code: msg.RES_CODE_FAIL,
|
||||
Msg: err.Error(),
|
||||
})
|
||||
player.TeLog("outsync_event", map[string]interface{}{
|
||||
"outsync_event": "ReqPutChessInBag",
|
||||
})
|
||||
return err
|
||||
}
|
||||
player.TeLog("ReqPutChessInBag", map[string]interface{}{
|
||||
"chess_id": req.ChessId,
|
||||
"bag_id": req.BagId,
|
||||
"emit_id": req.EmitId,
|
||||
})
|
||||
player.PlayMod.save()
|
||||
player.PushClientRes(ChessMod.BackData())
|
||||
player.PushClientRes(&msg.ResPutChessInBag{
|
||||
@ -669,7 +677,7 @@ func ReqTakeChessOutBag(player *Player, buf []byte) error {
|
||||
req := &msg.ReqTakeChessOutBag{}
|
||||
proto.Unmarshal(buf, req)
|
||||
ChessMod := player.PlayMod.getChessMod()
|
||||
err := ChessMod.TakeChessOutBag(int(req.BagId))
|
||||
ChessId, err := ChessMod.TakeChessOutBag(int(req.BagId))
|
||||
if err != nil {
|
||||
player.SendErrClienRes(&msg.ResTakeChessOutBag{
|
||||
Code: msg.RES_CODE_FAIL,
|
||||
@ -684,11 +692,12 @@ func ReqTakeChessOutBag(player *Player, buf []byte) error {
|
||||
Code: msg.RES_CODE_FAIL,
|
||||
Msg: err.Error(),
|
||||
})
|
||||
player.TeLog("outsync_event", map[string]interface{}{
|
||||
"outsync_event": "ReqTakeChessOutBag",
|
||||
})
|
||||
return err
|
||||
}
|
||||
player.TeLog("ReqTakeChessOutBag", map[string]interface{}{
|
||||
"bag_id": req.BagId,
|
||||
"chess_id": ChessId,
|
||||
})
|
||||
player.PlayMod.save()
|
||||
player.PushClientRes(ChessMod.BackData())
|
||||
player.PushClientRes(&msg.ResTakeChessOutBag{
|
||||
@ -753,11 +762,12 @@ func ReqSeparateChess(player *Player, buf []byte) error {
|
||||
Code: msg.RES_CODE_FAIL,
|
||||
Msg: err.Error(),
|
||||
})
|
||||
player.TeLog("outsync_event", map[string]interface{}{
|
||||
"outsync_event": "ReqSeparateChess",
|
||||
})
|
||||
return err
|
||||
}
|
||||
player.TeLog("ReqSeparateChess", map[string]interface{}{
|
||||
"chess_id": req.ChessId,
|
||||
"new_chess": NewChess,
|
||||
})
|
||||
player.PlayMod.save()
|
||||
player.PushClientRes(ChessMod.BackData())
|
||||
player.PushClientRes(&msg.ResSeparateChess{
|
||||
@ -791,11 +801,12 @@ func ReqUpgradeChess(player *Player, buf []byte) error {
|
||||
Code: msg.RES_CODE_FAIL,
|
||||
Msg: err.Error(),
|
||||
})
|
||||
player.TeLog("outsync_event", map[string]interface{}{
|
||||
"outsync_event": "ReqUpgradeChess",
|
||||
})
|
||||
return err
|
||||
}
|
||||
player.TeLog("ReqUpgradeChess", map[string]interface{}{
|
||||
"chess_id": req.ChessId,
|
||||
"new_chess": NewChess,
|
||||
})
|
||||
Handbook := player.PlayMod.getHandbookMod()
|
||||
Handbook.SetHandbook(NewChess)
|
||||
triggerComposeChess(player, NewChess, player.PlayMod.getBaseMod().EnergyMul, player.PlayMod.getChessMod().GetEmitList())
|
||||
@ -806,9 +817,6 @@ func ReqUpgradeChess(player *Player, buf []byte) error {
|
||||
Code: msg.RES_CODE_SUCCESS,
|
||||
})
|
||||
player.PushClientRes(Handbook.BackData())
|
||||
player.TeLog("upgrade_use", map[string]interface{}{
|
||||
"upgrade_item_id": int(req.ChessId),
|
||||
})
|
||||
player.UpdateUserInfo()
|
||||
return nil
|
||||
}
|
||||
@ -849,9 +857,6 @@ func ReqChessEx(player *Player, buf []byte) error {
|
||||
Code: msg.RES_CODE_FAIL,
|
||||
Msg: err.Error(),
|
||||
})
|
||||
player.TeLog("outsync_event", map[string]interface{}{
|
||||
"outsync_event": "ReqChessEx",
|
||||
})
|
||||
return err
|
||||
}
|
||||
// 限时事件气泡 幸运猫
|
||||
@ -886,7 +891,12 @@ func ReqChessEx(player *Player, buf []byte) error {
|
||||
"star": req.CostStar,
|
||||
})
|
||||
}
|
||||
|
||||
player.TeLog("ReqChessEx", map[string]interface{}{
|
||||
"old_chess_id": int(req.OldChessId),
|
||||
"new_chess_id": int(req.NewChessId),
|
||||
"cost_dia": req.CostDia,
|
||||
"cost_star": req.CostStar,
|
||||
})
|
||||
player.PlayMod.save()
|
||||
player.PushClientRes(ChessMod.BackData())
|
||||
player.PushClientRes(&msg.ResChessEx{
|
||||
@ -923,12 +933,13 @@ func ReqSourceChest(player *Player, buf []byte) error {
|
||||
Code: msg.RES_CODE_FAIL,
|
||||
Msg: err.Error(),
|
||||
})
|
||||
player.TeLog("outsync_event", map[string]interface{}{
|
||||
"outsync_event": "ReqSourceChest",
|
||||
})
|
||||
return err
|
||||
}
|
||||
player.PlayMod.save()
|
||||
player.TeLog("ReqSourceChest", map[string]interface{}{
|
||||
"chest_id": ChestId,
|
||||
"item_list": Items,
|
||||
})
|
||||
player.PushClientRes(ChessMod.BackData())
|
||||
player.PushClientRes(&msg.ResSourceChest{
|
||||
Code: msg.RES_CODE_SUCCESS,
|
||||
@ -965,6 +976,10 @@ func ReqCardSeasonFirstReward(player *Player, buf []byte) error {
|
||||
})
|
||||
return err
|
||||
}
|
||||
player.TeLog("ReqCardSeasonFirstReward", map[string]interface{}{
|
||||
"season_id": CardMod.EndTime,
|
||||
"item_list": itemList,
|
||||
})
|
||||
player.PlayMod.save()
|
||||
player.PushClientRes(&msg.ResCardSeasonFirstReward{
|
||||
Code: msg.RES_CODE_SUCCESS,
|
||||
@ -1034,6 +1049,10 @@ func ReqExStarReward(player *Player, buf []byte) error {
|
||||
})
|
||||
return err
|
||||
}
|
||||
player.TeLog("ReqExStarReward", map[string]interface{}{
|
||||
"ex_star_id": int(req.Id),
|
||||
"item_list": itemList,
|
||||
})
|
||||
player.PlayMod.save()
|
||||
player.PushClientRes(&msg.ResExStarReward{
|
||||
Code: msg.RES_CODE_SUCCESS,
|
||||
@ -1071,6 +1090,10 @@ func ReqAllCollectReward(player *Player, buf []byte) error {
|
||||
return err
|
||||
}
|
||||
player.PlayMod.save()
|
||||
player.TeLog("ReqAllCollectReward", map[string]interface{}{
|
||||
"item_list": itemList,
|
||||
"item_list2": itemList2,
|
||||
})
|
||||
player.PushClientRes(CardMod.BackData())
|
||||
player.PushClientRes(&msg.ResAllCollectReward{
|
||||
Code: msg.RES_CODE_SUCCESS,
|
||||
@ -1100,6 +1123,10 @@ func ReqGuideReward(player *Player, buf []byte) error {
|
||||
})
|
||||
return err
|
||||
}
|
||||
player.TeLog("ReqGuideReward", map[string]interface{}{
|
||||
"guide_id": int(req.Id),
|
||||
"item_list": itemList,
|
||||
})
|
||||
player.PlayMod.save()
|
||||
player.PushClientRes(GuideMod.BackData())
|
||||
player.PushClientRes(&msg.ResGuideReward{
|
||||
@ -1165,6 +1192,12 @@ func ReqGetDailyWeekReward(player *Player, buf []byte) error {
|
||||
})
|
||||
return err
|
||||
}
|
||||
player.TeLog("ReqGetDailyWeekReward", map[string]interface{}{
|
||||
"task_id": int(req.Id),
|
||||
"item_list": itemList,
|
||||
"task_type": "week",
|
||||
"task_score_reward": 0,
|
||||
})
|
||||
player.PlayMod.save()
|
||||
player.PushClientRes(DailyTaskMod.BackData())
|
||||
player.PushClientRes(&msg.ResGetDailyWeekReward{
|
||||
@ -1233,6 +1266,9 @@ func ReqSetFace(player *Player, buf []byte) error {
|
||||
player.PushClientRes(&msg.ResSetFace{
|
||||
Code: msg.RES_CODE_SUCCESS,
|
||||
})
|
||||
player.TeLog("face_set", map[string]interface{}{
|
||||
"face_id": int(req.Face),
|
||||
})
|
||||
BackUserInfo(player)
|
||||
player.UpdateUserInfo()
|
||||
return nil
|
||||
@ -1282,6 +1318,9 @@ func ReqGetEnergyByAD(player *Player, buf []byte) error {
|
||||
})
|
||||
return err
|
||||
}
|
||||
player.TeLog("ReqGetEnergyByAD", map[string]interface{}{
|
||||
"item_list": Item,
|
||||
})
|
||||
player.PlayMod.save()
|
||||
player.PushClientRes(BaseMod.BackData())
|
||||
player.PushClientRes(&msg.ResGetEnergyByAD{
|
||||
@ -1347,6 +1386,11 @@ func ReqGetMonthLoginReward(player *Player, buf []byte) error {
|
||||
})
|
||||
return err
|
||||
}
|
||||
player.TeLog("ReqGetMonthLoginReward", map[string]interface{}{
|
||||
"reward_type": "month",
|
||||
"reward_step": int(req.Id),
|
||||
"item_list": itemList,
|
||||
})
|
||||
player.PlayMod.save()
|
||||
player.PushClientRes(SevenLoginMod.BackData())
|
||||
player.PushClientRes(&msg.ResGetMonthLoginReward{
|
||||
@ -1387,6 +1431,12 @@ func ReqFastProduceReward(player *Player, buf []byte) error {
|
||||
return err
|
||||
}
|
||||
player.PlayMod.save()
|
||||
player.TeLog("ReqFastProduceReward", map[string]interface{}{
|
||||
"energy": int(req.Energy),
|
||||
"item_list": itemList,
|
||||
"end_time": EndTime,
|
||||
"times": Times,
|
||||
})
|
||||
player.PushClientRes(LimitedTimeEventMod.BackData())
|
||||
player.PushClientRes(&msg.ResFastProduceReward{
|
||||
Code: msg.RES_CODE_SUCCESS,
|
||||
@ -1416,6 +1466,10 @@ func ReqLimitSenceReward(player *Player, buf []byte) error {
|
||||
})
|
||||
return err
|
||||
}
|
||||
player.TeLog("ReqLimitSenceReward", map[string]interface{}{
|
||||
"event_type": limitedTimeEvent.EVENT_TYPE_SENCE_DASH,
|
||||
"item_list": Items,
|
||||
})
|
||||
player.PlayMod.save()
|
||||
player.PushClientRes(&msg.ResLimitSenceReward{
|
||||
Code: msg.RES_CODE_SUCCESS,
|
||||
@ -1559,6 +1613,10 @@ func ReqAgreeFriend(player *Player, buf []byte) error {
|
||||
Uid: req.Uid,
|
||||
Player: G_GameLogicPtr.GetResSimplePlayerByUid(int(req.Uid)),
|
||||
})
|
||||
player.TeLog("friend_add", map[string]interface{}{
|
||||
"player_id": Uid,
|
||||
"add_type": "agree",
|
||||
})
|
||||
player.AddLog(Uid, friend.LOG_TYPE_FRIEND_BECOME, "", GoUtil.Now())
|
||||
FriendApplyBackData(player)
|
||||
PlayroomMod := player.PlayMod.getPlayroomMod()
|
||||
@ -1776,6 +1834,9 @@ func ReqRefuseCardGive(player *Player, buf []byte) error {
|
||||
Code: msg.RES_CODE_SUCCESS,
|
||||
Id: req.Id,
|
||||
})
|
||||
player.TeLog("ReqRefuseCardGive", map[string]interface{}{
|
||||
"card_id": CardInfo.CardId,
|
||||
})
|
||||
m := &MsqMod.Msg{
|
||||
Type: MsqMod.HANDLE_TYPE_REG_CARD_REFUSE,
|
||||
From: int(player.M_DwUin),
|
||||
@ -1813,6 +1874,10 @@ func ReqCardSend(player *Player, buf []byte) error {
|
||||
player.PushClientRes(&msg.ResCardSend{
|
||||
Code: msg.RES_CODE_SUCCESS,
|
||||
})
|
||||
player.TeLog("card_send", map[string]interface{}{
|
||||
"card_id": CardId,
|
||||
"player_id_target": int(req.Uid),
|
||||
})
|
||||
player.PushClientRes(CardMod.NotifyCard())
|
||||
player.PlayMod.save()
|
||||
player.PushClientRes(CardMod.NotifyTimes())
|
||||
@ -2181,6 +2246,11 @@ func ReqGetMailReward(player *Player, buf []byte) error {
|
||||
})
|
||||
return err
|
||||
}
|
||||
player.TeLog("mail_reward", map[string]interface{}{
|
||||
"mail_id": req.Id,
|
||||
"item_list": itemList,
|
||||
})
|
||||
|
||||
player.PlayMod.save()
|
||||
player.PushClientRes(MailMod.NotifyMail(int(req.Id)))
|
||||
player.PushClientRes(&msg.ResGetMailReward{
|
||||
@ -2923,6 +2993,7 @@ func ReqMiningTake(player *Player, buf []byte) error {
|
||||
})
|
||||
return err
|
||||
}
|
||||
player.TeLog("ReqMiningTake", map[string]interface{}{})
|
||||
player.PlayMod.save()
|
||||
player.NotifyRed(ACT_TYPE_MINING)
|
||||
MiningBackData(player)
|
||||
@ -3006,6 +3077,10 @@ func ReqGuessColorTake(player *Player, buf []byte) error {
|
||||
return err
|
||||
}
|
||||
GuessColorMod.Take(req.Map.Map, req.OMap)
|
||||
player.TeLog("ReqGuessColorTake", map[string]interface{}{
|
||||
"map": req.Map.Map,
|
||||
"o_map": req.OMap,
|
||||
})
|
||||
player.PlayMod.save()
|
||||
GuessColorBackData(player)
|
||||
player.NotifyRed(ACT_TYPE_GUESS_COLOR)
|
||||
@ -3041,6 +3116,9 @@ func ReqGuessColorReward(player *Player, buf []byte) error {
|
||||
})
|
||||
return err
|
||||
}
|
||||
player.TeLog("guess_color_finish", map[string]interface{}{
|
||||
"item_list": itemList,
|
||||
})
|
||||
player.PlayMod.save()
|
||||
GuessColorBackData(player)
|
||||
return nil
|
||||
@ -3094,6 +3172,9 @@ func ReqRaceReward(player *Player, buf []byte) error {
|
||||
return err
|
||||
}
|
||||
RaceBackData(player)
|
||||
player.TeLog("ReqRaceReward", map[string]interface{}{
|
||||
"item_list": Items,
|
||||
})
|
||||
player.PushClientRes(&msg.ResRaceReward{
|
||||
Code: msg.RES_CODE_SUCCESS,
|
||||
})
|
||||
@ -3124,8 +3205,7 @@ func ReqPlayroomInfo(player *Player, buf []byte) error {
|
||||
PlayerData := G_GameLogicPtr.GetSimplePlayerByUid(Targer)
|
||||
PlayroomMod.SetTarget(Targer)
|
||||
player.QuestTrigger(&quest.Trigger{Label: quest.TRIGGER_LABEL_VISITROOM})
|
||||
if PlayerData.Loginout > 0 && PlayerData.Loginout < GoUtil.Now()-int64(playroomCfg.GetGameOutline()) { // todo DEBUG
|
||||
log.Debug("ReqPlayroomInfo PlayerData.Loginout:%v, %v", PlayerData.Loginout, playroomCfg.GetGameOutline())
|
||||
if PlayerData.Loginout > 0 && PlayerData.Loginout < GoUtil.Now()-int64(playroomCfg.GetGameOutline()) {
|
||||
GameType := PlayroomMod.RandGameType()
|
||||
PlayroomMod.SetGameId(GameType)
|
||||
Star := min(500, max(PlayerData.Star/10, 10))
|
||||
@ -3199,6 +3279,10 @@ func ReqPlayroomInteract(player *Player, buf []byte) error {
|
||||
G_GameLogicPtr.SetUserData(int(player.M_DwUin), VAR_OP_KISS, 0)
|
||||
LimitedTimePlayroomTrigger_(player, PType)
|
||||
player.NotifyPlayroomKiss()
|
||||
player.TeLog("playroom_interact", map[string]interface{}{
|
||||
"interact_id": int(req.Id),
|
||||
"interact_type": int(req.Type),
|
||||
})
|
||||
player.PushClientRes(&msg.ResPlayroomInteract{
|
||||
Code: msg.RES_CODE_SUCCESS,
|
||||
InteractNum: int32(PlayroomMod.InteractNum),
|
||||
@ -3240,21 +3324,8 @@ func ReqPlayroomGame(player *Player, buf []byte) error {
|
||||
})
|
||||
return fmt.Errorf("no target")
|
||||
}
|
||||
PlayerData := G_GameLogicPtr.GetSimplePlayerByUid(Target)
|
||||
Items := make([]*item.Item, 0)
|
||||
if req.Type == playroom.GAME_RESULT_LOSE {
|
||||
Items = append(Items, item.NewItem(item.ITEM_STAR_ID, 20))
|
||||
PlayroomMod.ResetGame()
|
||||
}
|
||||
if req.Type == playroom.GAME_RESULT_LOW {
|
||||
Items = append(Items, item.NewItem(item.ITEM_STAR_ID, PlayerData.Level*2))
|
||||
PlayroomMod.ResetGame()
|
||||
}
|
||||
if req.Type == playroom.GAME_RESULT_MIDDLE {
|
||||
Items = append(Items, item.NewItem(item.ITEM_STAR_ID, PlayerData.Level*3))
|
||||
PlayroomMod.ResetGame()
|
||||
}
|
||||
|
||||
Items := player.GetPlayroomGameReward(int(req.Type), 0)
|
||||
PlayroomMod.ResetGame()
|
||||
err := player.HandleItem(Items, msg.ITEM_POP_LABEL_PlayroomGame.String())
|
||||
if err != nil {
|
||||
player.SendErrClienRes(&msg.ResPlayroomGame{
|
||||
@ -3268,6 +3339,10 @@ func ReqPlayroomGame(player *Player, buf []byte) error {
|
||||
To: Target,
|
||||
Type: MsqMod.HANDLE_TYPE_PLAYROOM_GAME,
|
||||
SendT: GoUtil.Now(),
|
||||
Extra: GameResult{
|
||||
T: PlayroomMod.GetGameId(),
|
||||
Emoji: int(req.EmojiId),
|
||||
},
|
||||
})
|
||||
player.PlayMod.save()
|
||||
ItemsMsg := make(map[int32]*msg.ItemInfo, 0)
|
||||
@ -3277,6 +3352,12 @@ func ReqPlayroomGame(player *Player, buf []byte) error {
|
||||
Num: int32(v.Num),
|
||||
}
|
||||
}
|
||||
player.TeLog("playroom_game", map[string]interface{}{
|
||||
"game_id": PlayroomMod.GetGameId(),
|
||||
"emoji_id": req.EmojiId,
|
||||
"game_type": req.Type,
|
||||
"reward": Items,
|
||||
})
|
||||
player.PushClientRes(&msg.ResPlayroomGame{
|
||||
Code: msg.RES_CODE_SUCCESS,
|
||||
Type: req.Type,
|
||||
@ -3290,7 +3371,7 @@ func ReqPlayroomSelectReward(player *Player, buf []byte) error {
|
||||
req := &msg.ReqPlayroomSelectReward{}
|
||||
proto.Unmarshal(buf, req)
|
||||
PlayroomMod := player.PlayMod.getPlayroomMod()
|
||||
Items := PlayroomMod.SelectReward(int(req.Id))
|
||||
Items := player.GetPlayroomGameReward(playroom.GAME_RESULT_HIGH, int(req.Id))
|
||||
err := player.HandleItem(Items, msg.ITEM_POP_LABEL_PlayroomGame.String())
|
||||
if err != nil {
|
||||
player.SendErrClienRes(&msg.ResPlayroomSelectReward{
|
||||
@ -3299,18 +3380,36 @@ func ReqPlayroomSelectReward(player *Player, buf []byte) error {
|
||||
})
|
||||
return err
|
||||
}
|
||||
GameId := PlayroomMod.GetGameId()
|
||||
Target := PlayroomMod.GetTarget()
|
||||
if GameId == 0 || Target == 0 {
|
||||
player.SendErrClienRes(&msg.ResPlayroomSelectReward{
|
||||
Code: msg.RES_CODE_FAIL,
|
||||
Msg: "no game or target",
|
||||
})
|
||||
return fmt.Errorf("no game or target")
|
||||
}
|
||||
G_GameLogicPtr.FriendMgrSend(&MsqMod.Msg{
|
||||
From: int(player.M_DwUin),
|
||||
To: Target,
|
||||
Type: MsqMod.HANDLE_TYPE_PLAYROOM_LOSE,
|
||||
SendT: GoUtil.Now(),
|
||||
Item: Items,
|
||||
Extra: PlayroomMod.GetGameId(),
|
||||
Extra: GameResult{
|
||||
T: PlayroomMod.GetGameId(),
|
||||
Emoji: int(req.EmojiId),
|
||||
},
|
||||
})
|
||||
G_GameLogicPtr.SetUserData(Target, VAR_OP_CHIP, 1)
|
||||
PlayroomMod.ResetGame()
|
||||
player.PlayMod.save()
|
||||
player.TeLog("playroom_select_reward", map[string]interface{}{
|
||||
"reward_id": req.Id,
|
||||
"emoji_id": req.EmojiId,
|
||||
"game_id": PlayroomMod.GetGameId(),
|
||||
"reward": Items,
|
||||
"target_id": Target,
|
||||
})
|
||||
PlayroomBackData(player)
|
||||
PlayroomVisit(player, PlayroomMod.GetTarget())
|
||||
player.PushClientRes(&msg.ResPlayroomSelectReward{
|
||||
@ -3354,7 +3453,9 @@ func ReqPlayroomWork(player *Player, buf []byte) error {
|
||||
return err
|
||||
}
|
||||
player.QuestTrigger(&quest.Trigger{Label: quest.TRIGGER_LABEL_PETWORK})
|
||||
|
||||
player.TeLog("playroom_work", map[string]interface{}{
|
||||
"work_item": Items,
|
||||
})
|
||||
player.PlayMod.save()
|
||||
player.PushClientRes(PlayroomMod.NotifyWork())
|
||||
// PlayroomBackData(player)
|
||||
@ -3369,6 +3470,7 @@ func ReqPlayroomRest(player *Player, buf []byte) error {
|
||||
PlayroomMod := player.PlayMod.getPlayroomMod()
|
||||
PlayroomMod.Rest()
|
||||
player.PlayMod.save()
|
||||
player.TeLog("playroom_rest", map[string]interface{}{})
|
||||
player.PushClientRes(PlayroomMod.NotifyWork())
|
||||
return nil
|
||||
}
|
||||
@ -3428,7 +3530,12 @@ func ReqPlayroomChip(player *Player, buf []byte) error {
|
||||
})
|
||||
return err
|
||||
}
|
||||
G_GameLogicPtr.SetUserData(int(player.M_DwUin), VAR_OP_CHIP, -ChipNum)
|
||||
player.TeLog("playroom_chip", map[string]interface{}{
|
||||
"chip_num": ChipNum,
|
||||
"uid": req.Uid,
|
||||
})
|
||||
|
||||
G_GameLogicPtr.SetUserData(int(player.M_DwUin), VAR_OP_CHIP_SET, len(PlayroomMod.ChipList))
|
||||
player.PlayMod.save()
|
||||
PlayroomBackData(player)
|
||||
player.PushClientRes(&msg.ResPlayroomChip{
|
||||
@ -3497,7 +3604,16 @@ func ReqPlayroomFlipReward(player *Player, buf []byte) error {
|
||||
Type: MsqMod.HANDLE_TYPE_PLAYROOM_LOSE,
|
||||
SendT: GoUtil.Now(),
|
||||
Item: Items,
|
||||
Extra: PlayroomMod.GetGameId(),
|
||||
Extra: GameResult{
|
||||
T: playroom.GAME_TYPE_FILP,
|
||||
Emoji: int(req.EmojiId),
|
||||
},
|
||||
})
|
||||
player.TeLog("playroom_flip_reward", map[string]interface{}{
|
||||
"reward": Items,
|
||||
"target_id": Target,
|
||||
"emoji_id": req.EmojiId,
|
||||
"game_id": playroom.GAME_TYPE_FILP,
|
||||
})
|
||||
player.PlayMod.save()
|
||||
PlayroomBackData(player)
|
||||
@ -3536,8 +3652,10 @@ func ReqPlayroomBuyItem(player *Player, buf []byte) error {
|
||||
})
|
||||
return err
|
||||
}
|
||||
player.TeLog("playroom_buy_item", map[string]interface{}{
|
||||
"item_id": req.Id,
|
||||
})
|
||||
player.PlayMod.save()
|
||||
// PlayroomBackData(player)
|
||||
player.PushClientRes(&msg.ResPlayroomBuyItem{
|
||||
Code: msg.RES_CODE_SUCCESS,
|
||||
})
|
||||
@ -3631,6 +3749,10 @@ func ReqPlayroomTask(player *Player, buf []byte) error {
|
||||
})
|
||||
return err
|
||||
}
|
||||
player.TeLog("playroom_task", map[string]interface{}{
|
||||
"task_id": req.Id,
|
||||
"reward": Items,
|
||||
})
|
||||
player.PlayMod.save()
|
||||
player.PushClientRes(&msg.ResPlayroomTask{
|
||||
Code: msg.RES_CODE_SUCCESS,
|
||||
@ -3661,6 +3783,11 @@ func ReqPlayroomTaskReward(player *Player, buf []byte) error {
|
||||
})
|
||||
return err
|
||||
}
|
||||
player.TeLog("playroom_task_reward", map[string]interface{}{
|
||||
"task_type": req.Type,
|
||||
"reward_id": Id,
|
||||
"reward": Items,
|
||||
})
|
||||
player.PlayMod.save()
|
||||
player.PushClientRes(&msg.ResPlayroomTaskReward{
|
||||
Code: msg.RES_CODE_SUCCESS,
|
||||
@ -3779,6 +3906,11 @@ func ReqPlayroomShop(player *Player, buf []byte) error {
|
||||
})
|
||||
return err
|
||||
}
|
||||
player.TeLog("playroom_shop", map[string]interface{}{
|
||||
"shop_id": req.Id,
|
||||
"num": req.Num,
|
||||
"reward": AddItems,
|
||||
})
|
||||
player.PlayMod.save()
|
||||
PlayroomBackData(player)
|
||||
player.PushClientRes(&msg.ResPlayroomShop{
|
||||
@ -3812,7 +3944,7 @@ func ReqFriendTreasureStart(player *Player, buf []byte) error {
|
||||
})
|
||||
return fmt.Errorf("not enough star")
|
||||
}
|
||||
|
||||
player.TeLog("friend_treasure_start", map[string]interface{}{})
|
||||
player.QuestTrigger(&quest.Trigger{Label: quest.TRIGGER_LABEL_PETTREASURE})
|
||||
FriendTreasureMod.InitGame(req.List, req.List2)
|
||||
player.PlayMod.save()
|
||||
@ -3856,7 +3988,11 @@ func ReqFriendTreasureFilp(player *Player, buf []byte) error {
|
||||
)
|
||||
return err
|
||||
}
|
||||
|
||||
player.TeLog("friend_treasure_filp", map[string]interface{}{
|
||||
"pos": req.Pos,
|
||||
"items": Items,
|
||||
"uid": Uid,
|
||||
})
|
||||
player.PlayMod.save()
|
||||
player.PushClientRes(&msg.ResFriendTreasureFilp{
|
||||
Code: msg.RES_CODE_SUCCESS,
|
||||
@ -3898,6 +4034,10 @@ func ReqFriendTreasureEnd(player *Player, buf []byte) error {
|
||||
)
|
||||
return err
|
||||
}
|
||||
player.TeLog("friend_treasure_end", map[string]interface{}{
|
||||
"items": Items,
|
||||
"num": FriendItemNum,
|
||||
})
|
||||
player.PlayMod.save()
|
||||
player.PushClientRes(&msg.ResFriendTreasureEnd{
|
||||
Code: msg.RES_CODE_SUCCESS,
|
||||
@ -3935,6 +4075,10 @@ func ReqCardHandbookReward(player *Player, buf []byte) error {
|
||||
})
|
||||
return err
|
||||
}
|
||||
player.TeLog("card_handbook_reward", map[string]interface{}{
|
||||
"CardId": int(req.CardId),
|
||||
"Items": Items,
|
||||
})
|
||||
player.PlayMod.save()
|
||||
player.PushClientRes(&msg.ResCardHandbookReward{
|
||||
Code: msg.RES_CODE_SUCCESS,
|
||||
@ -3956,6 +4100,10 @@ func ReqSetEmoji(player *Player, buf []byte) error {
|
||||
})
|
||||
return err
|
||||
}
|
||||
player.TeLog("set_emoji", map[string]interface{}{
|
||||
"Id": int(req.Id),
|
||||
"Type": int(req.Type),
|
||||
})
|
||||
player.PlayMod.save()
|
||||
player.PushClientRes(&msg.ResSetEmoji{
|
||||
Code: msg.RES_CODE_SUCCESS,
|
||||
@ -4222,6 +4370,9 @@ func ReqAddNpc(player *Player, buf []byte) error {
|
||||
PlayroomMod.AddRoomPointInvite()
|
||||
PlayroomMod.AddRoomPointAdd()
|
||||
PlayroomBackData(player)
|
||||
player.TeLog("add_npc", map[string]interface{}{
|
||||
"NpcId": int(req.NpcId),
|
||||
})
|
||||
player.AddLog(int(req.NpcId), friend.LOG_TYPE_FRIEND_BECOME_NPC, GoUtil.String(req.NpcId), GoUtil.Now())
|
||||
player.PushClientRes(&msg.ResAddNpc{
|
||||
Code: msg.RES_CODE_SUCCESS,
|
||||
@ -4268,6 +4419,11 @@ func ReqAddWish(player *Player, buf []byte) error {
|
||||
return err
|
||||
}
|
||||
}
|
||||
player.TeLog("wish_add", map[string]interface{}{
|
||||
"Id": int(req.Id),
|
||||
"Type": int(req.Type),
|
||||
"Items": Items,
|
||||
})
|
||||
player.PlayMod.save()
|
||||
player.PushClientRes(&msg.ResAddWish{
|
||||
Code: msg.RES_CODE_SUCCESS,
|
||||
@ -4449,3 +4605,78 @@ func ReqId2Verify(player *Player, buf []byte) error {
|
||||
})
|
||||
return nil
|
||||
}
|
||||
|
||||
func ReqFriendByCode(player *Player, buf []byte) error {
|
||||
req := &msg.ReqFriendByCode{}
|
||||
proto.Unmarshal(buf, req)
|
||||
if req.Code == "" {
|
||||
player.SendErrClienRes(&msg.ResFriendByCode{
|
||||
Code: msg.RES_CODE_FAIL,
|
||||
Msg: "code is empty",
|
||||
})
|
||||
return fmt.Errorf("code is empty")
|
||||
}
|
||||
CodeNum := GoUtil.ParseUniqueStringToInt(req.Code)
|
||||
if CodeNum <= 0 {
|
||||
player.SendErrClienRes(&msg.ResFriendByCode{
|
||||
Code: msg.RES_CODE_FAIL,
|
||||
Msg: "code is invalid",
|
||||
})
|
||||
return fmt.Errorf("code is invalid")
|
||||
}
|
||||
Uid := int64(CodeNum) + int64(conf.Server.ServerID*100000) + int64(conf.Server.AppID*100000000)
|
||||
if Uid == player.M_DwUin {
|
||||
player.SendErrClienRes(&msg.ResFriendByCode{
|
||||
Code: msg.RES_CODE_FAIL,
|
||||
Msg: "can not add yourself",
|
||||
})
|
||||
return fmt.Errorf("can not add yourself")
|
||||
}
|
||||
|
||||
PlayerSimpleData := G_GameLogicPtr.GetResSimplePlayerByUid(int(Uid))
|
||||
if PlayerSimpleData == nil {
|
||||
player.SendErrClienRes(&msg.ResFriendByCode{
|
||||
Code: msg.RES_CODE_FAIL,
|
||||
Msg: "player not exist",
|
||||
})
|
||||
return fmt.Errorf("player not exist")
|
||||
}
|
||||
player.PushClientRes(&msg.ResFriendByCode{
|
||||
Code: msg.RES_CODE_SUCCESS,
|
||||
Player: PlayerSimpleData,
|
||||
})
|
||||
return nil
|
||||
}
|
||||
|
||||
func ReqPlayroomGameShowReward(player *Player, buf []byte) error {
|
||||
req := &msg.ReqPlayroomGameShowReward{}
|
||||
proto.Unmarshal(buf, req)
|
||||
Items := player.GetPlayroomGameReward(int(req.Type), int(req.SelectId))
|
||||
player.PushClientRes(&msg.ResPlayroomGameShowReward{
|
||||
Items: item.ItemToMsg(Items),
|
||||
})
|
||||
return nil
|
||||
}
|
||||
|
||||
func ReqPlayroomGuide(player *Player, buf []byte) error {
|
||||
req := &msg.ReqPlayroomGuide{}
|
||||
proto.Unmarshal(buf, req)
|
||||
PlayroomMod := player.PlayMod.getPlayroomMod()
|
||||
err := PlayroomMod.Guide(int(req.Type))
|
||||
if err != nil {
|
||||
player.SendErrClienRes(&msg.ResPlayroomGuide{
|
||||
Code: msg.RES_CODE_FAIL,
|
||||
Msg: err.Error(),
|
||||
})
|
||||
return err
|
||||
}
|
||||
player.TeLog("playroom_guide", map[string]interface{}{
|
||||
"Physiology": req.Type,
|
||||
})
|
||||
player.PlayMod.save()
|
||||
player.PushClientRes(PlayroomMod.NotifyMood())
|
||||
player.PushClientRes(&msg.ResPlayroomGuide{
|
||||
Code: msg.RES_CODE_SUCCESS,
|
||||
})
|
||||
return nil
|
||||
}
|
||||
|
||||
@ -78,8 +78,9 @@ type ChargeExtra struct {
|
||||
}
|
||||
|
||||
type GameResult struct {
|
||||
t int // 游戏类型
|
||||
r int // 1:赢 2:输 3:平
|
||||
T int // 游戏类型
|
||||
R int // 1:赢 2:输 3:平
|
||||
Emoji int // 表情
|
||||
}
|
||||
|
||||
func init() {
|
||||
@ -88,4 +89,8 @@ func init() {
|
||||
gob.Register(&msg.HandbookMsg{})
|
||||
gob.Register(&limitedTimeEvent.CatTrick{})
|
||||
gob.Register(&VarOpration{})
|
||||
gob.Register(&VarUserData{})
|
||||
gob.Register(&ActivityInfo{})
|
||||
gob.Register(&ChargeExtra{})
|
||||
gob.Register(&GameResult{})
|
||||
}
|
||||
|
||||
@ -25,9 +25,10 @@ const (
|
||||
)
|
||||
|
||||
const (
|
||||
VAR_OP_UPVOTE = 1
|
||||
VAR_OP_CHIP = 2
|
||||
VAR_OP_KISS = 3
|
||||
VAR_OP_UPVOTE = 1
|
||||
VAR_OP_CHIP = 2
|
||||
VAR_OP_KISS = 3
|
||||
VAR_OP_CHIP_SET = 4
|
||||
)
|
||||
|
||||
func (f *VarMgr) Init() {
|
||||
|
||||
@ -29,6 +29,11 @@ var AdminFuncMap = map[string]func([]interface{}) error{
|
||||
}
|
||||
|
||||
func AdminProcess(Func string, args []interface{}) {
|
||||
defer func() {
|
||||
if r := recover(); r != nil {
|
||||
GoUtil.SendFeishuFatal(0, Func, fmt.Sprintf("fatal : %s", r))
|
||||
}
|
||||
}()
|
||||
if f, ok := AdminFuncMap[Func]; ok {
|
||||
err := f(args)
|
||||
if err != nil {
|
||||
|
||||
@ -3,6 +3,7 @@ package base
|
||||
import (
|
||||
"fmt"
|
||||
"server/GoUtil"
|
||||
"server/conf"
|
||||
baseCfg "server/conf/base"
|
||||
"server/game/mod/item"
|
||||
"server/msg"
|
||||
@ -41,12 +42,21 @@ type Base struct {
|
||||
Lang msg.LANG_TYPE // 语言
|
||||
IdCardName string
|
||||
IdCardNum string
|
||||
AddCode string // 用于添加好友的code
|
||||
}
|
||||
|
||||
func (b *Base) InitData(Uid int) {
|
||||
// b.EnergyMul = 1
|
||||
// b.IsFirstBuy = false
|
||||
// b.EnergyBuy = 0
|
||||
func (b *Base) InitData(Uid int, Ip string) {
|
||||
if b.AddCode == "" && Ip != "" {
|
||||
Code, _ := GoUtil.GetCountryByIP(Ip)
|
||||
CountryCode := conf.Server.CountryCode
|
||||
if CountryCode == "" {
|
||||
CountryCode = "000"
|
||||
}
|
||||
if Code != "" && len(Code) == 3 {
|
||||
CountryCode = Code
|
||||
}
|
||||
b.AddCode = fmt.Sprintf("MMM-%s-%s", CountryCode, GoUtil.UniqueStringFromInt(Uid))
|
||||
}
|
||||
if b.NickName == "" {
|
||||
b.NickName = fmt.Sprintf("Player_%d", Uid)
|
||||
}
|
||||
|
||||
@ -435,21 +435,21 @@ func (cb *ChessBorad) PutChessInBag(Grid, ChessId, EmitId int) error {
|
||||
return nil
|
||||
}
|
||||
|
||||
func (cb *ChessBorad) TakeChessOutBag(Grid int) error {
|
||||
func (cb *ChessBorad) TakeChessOutBag(Grid int) (int, error) {
|
||||
if Grid < 0 {
|
||||
cb.RemoveHonor(-Grid)
|
||||
cb.AddChess(-Grid)
|
||||
return nil
|
||||
return 0, nil
|
||||
}
|
||||
GridInfo, ok := cb.ChessBag.List[Grid]
|
||||
if !ok {
|
||||
return errors.New("ChessBag Grid unlock")
|
||||
return 0, errors.New("ChessBag Grid unlock")
|
||||
}
|
||||
if GridInfo.ChessId == 0 {
|
||||
return errors.New("ChessBag Grid is empty")
|
||||
return 0, errors.New("ChessBag Grid is empty")
|
||||
}
|
||||
cb.ChessBag.List[Grid] = ChessBagGrid{}
|
||||
return cb.AddChess(GridInfo.ChessId)
|
||||
return GridInfo.ChessId, cb.AddChess(GridInfo.ChessId)
|
||||
}
|
||||
|
||||
func (cb *ChessBorad) GetOrderEmit() []int {
|
||||
|
||||
66
src/server/game/mod/compensation/compensation.go
Normal file
66
src/server/game/mod/compensation/compensation.go
Normal file
@ -0,0 +1,66 @@
|
||||
package compensation
|
||||
|
||||
import (
|
||||
"server/GoUtil"
|
||||
"server/game/mod/item"
|
||||
)
|
||||
|
||||
type Compensation struct {
|
||||
C20250716 bool // 2025年7月16日补偿
|
||||
}
|
||||
|
||||
func (c *Compensation) InitData() {
|
||||
|
||||
}
|
||||
|
||||
func (c *Compensation) Is20250716() bool {
|
||||
return c.C20250716
|
||||
}
|
||||
|
||||
func (c *Compensation) Set20250716() {
|
||||
c.C20250716 = true
|
||||
}
|
||||
|
||||
func (c *Compensation) Compensation20250716(UserName string) []*item.Item {
|
||||
c.Set20250716()
|
||||
// 获取补偿物品
|
||||
items := make([]*item.Item, 0, len(Compensation20250716_UserList))
|
||||
for i := 1; i <= len(Compensation20250716_UserList); i++ {
|
||||
if GoUtil.InStringArray(UserName, Compensation20250716_UserList[i]) {
|
||||
return Compensation20250716_Mail_Item[i]
|
||||
}
|
||||
}
|
||||
return items
|
||||
}
|
||||
|
||||
var Compensation20250716_UserList = map[int][]string{
|
||||
// 大R
|
||||
1: {"xinshou76", "4920601d6e34e87038919438e242d52e", "93c80508360e35b7571f1a0a03f56a776370cfa0"},
|
||||
// 中R
|
||||
2: {"xinshou75", "9c65224bb7ed95148260db8f0fe3a0bd", "2efc5e0f7517c825cd7e4702085f885b", "b559595638f42a679284fef0374a549e", "26e701c36fbb004ee00dcccd9bd8cf0f", "51afdcc7d1b0d60044f3a33389f2c734", "ed0f5c193171226d343eae6996fa5ebf", "5c80e4c852b9a4cd1e28c6bcc04f308f", "48289bca7f497297b885203b2cc037bb", "5de84a24101ee25a3ac33168c8083abe", "a9264ed76dafbed52ed9e7afe63d4129", "051d7f087832091750d7d9cc00a5e04a", "04b4de4d67f2ed0399c6abffb956cade", "41c70beb9f22bada780feada5e62bbd1", "fc085d60508bc2e39fc51e5640d75516", "7c0fcfac6e9e8e056b983a30e4f30a09", "20d4b2aed241eda005679a1671bedeac", "857706a740154c8023ea9201d08b8864", "7f47313cd3dcd45a06ad985f2cb27cae", "057bf7221b86d61cce1f80558b929090", "95328e05928a61493c801e05e9e6270a", "491d7d28ce106938aee8b1e1a19b4ae5", "823943647d9adc4d8ddeb596614c0cfb", "d6ce7a43a045d4cd71dbc687787bd0bf", "c75a5faa056b819ad5bb41f4a3ba4a38", "e5815e97add54cb3ceca7dbd2e45bf97", "2cd42018cf56cb9d5a355aff14137b31", "820b48695d2dac1656a84d73e420178b", "2bf69272d55fb9d9d9e15894fb4694a4", "424ccad8b512d91d2f29c80939424564", "a51377da6a792ff69f6faf937e3417ce", "f5ff321d2b2c073e64042852a15dd9b1", "5d80e08adde8e9d59bc79501b16afe20", "53d8041da3964505857ddd1b3cdecf94", "0cc86c12b97d15019dfe25a3285a3e96", "235eb2c144e5b9edf6c44e8ab96082dd", "ed5bbc10a0fba93e591a35a2ec0291c5", "831ab28d8820675ad109c9b184ce9013", "445007c8ca0cc7a12d44d7abdff5cce3", "63f081723bd0e847d1434f5a04598683", "54e715c5c1f4ed795c9c17593de1b7e7", "addb314c66e16f13ddae30896b96c703", "6fc757735b67cf08a7a5ec3baf2a75a3", "2f50d795ddaab2eab1907b5f252705ac", "2137703e941d639f61aeded20f9dbb2b", "02439d94926af2d1473c75f74a00e119", "bd5f5f3e57bd3924e914cdbbc34cce5c", "ab5b80213f12aaaf6d07be2f1932ec43", "ceeb48146b3ebcad66a4cc036ed54d22", "a71625538207fa2b95bb9e8e21449c43", "a0ce6002bb25c2ae0f090a90018fc54c", "a3f5aef9e7dad7d5aa605a49430835b1", "1cf2a5325fa89bb9bb8be2c8616cb9d7", "b04b3963228f85182b6e62c3ef6d8144", "1e8dde7c182488128a5106c5e2d30b42", "71f91ead33b74f7d45be1e37c519286f", "dead5b7820a93351f2e97fe55c0ea5b4", "8732360803535d860fc16d7911c909a1", "7f957a374879d6a2fb635928ce89a525", "0d8ade527e8f3679392260d07b2912e5", "7bf0a3e6df56f0f209814f6547865f55", "d2438f28296a975d52b7d60d287e84ad", "6cafd1059a6c45a31f19f42ed092d633", "55655483cd1cce10b3461d947062f801", "08e04219504d9f37d32e2cfba2874762", "a3d83249211bc380a8ff97f8ab47583a", "c7b75f7ab09002bd245a6a182cbc18df", "d5ded02c0489e177e8f698e5204cfa3d", "e05933874f35069eb0632a433da36ca7", "684ad5e04c21c5a11ac77f2eda19847a", "bd269aa65aa8db830ecbba58bc64902d", "4ec2fd320c4c5ff36dc52fc88720b395", "863db41256074f9656ebbd46fbd85290", "411ca5c6b78844dea836aa399f42ed27", "f0cb8a1825c417e2f7b06a58cac75143", "fd9df16ee523e74d8003f46e47dcb642", "f4a9060aea89d38e2e3f01660491f5c5", "34ed9d69301c301953b2b88dcd13ee9a", "347376f2bf14f156e24fbc4a7285f81c", "dc264e609290d0f94f3e16ca37bbe0c9", "26347928b465b7ba373e9ba641b48199", "f29998d94e79b86c7c3d8937fa9e91e8", "d23081f6510236f4e4be9fb6d5304a6a", "e6718d5d9280570cc31d7a6473143e38", "8083f7ee7c1258aed3db5f40531c334c", "bcdd1c131475dcea35cab935057772eb", "eeb59425fc240ec52454e7dda9889633", "120e7116d570a2554b65f28e724ae758", "675899c81cfece5caa982844538b0191", "9a08781243dba23cbe85bf47c64aa8c4", "0bf5220563363300c6cf43ed20cb5ae7", "c071328705938dc141c8d646d345bf99", "659d71e3896f2f2c98c86c730d394f0b", "96fe50777f7562384e5d71eb010eae7c", "f621506531e0d8cf2bf343ec87042960", "38738aed39f8cea218bc055b5a400cc3", "970653b0d90e2fd43465f436c27845b5", "d7d93978b35d4af85daba89530bf668a", "5d50835ff8c5fdbecd4e92423b5754d3", "ee5648d165c5bab14896741b632b641b", "0b193cbcc1aa07dee619c5d74fdaf92e", "515701c302a9ac871e5b83af734cbdbc", "276c9182dd46575aeb66aac4cef03b7c", "464483a547102c193a44045c9e68fc54", "f421c2c4e1ef383e96df09476502bdaf", "b34e90cbbc0d6f9bf4d6ef80114c5b73", "7d204e48d8c2615c257c2520769fe6ca"},
|
||||
// 未付费 18级以上
|
||||
3: {"xinshou79", "8c22f4e8d8edb80d591e716cf016a01a", "ad154577c6ed0c1234c971931fe44353", "cd5fc4cfb76993f1fb62f430895805b5", "ce2107e0f2d5e7c8095928127da643e9", "d95d63f6cbafa348dca4398c61eb7edc", "3c62b0c0e554a16fc54bd9c09a6c76b7", "af31d50b8c98869e9fde4562de7e3b89", "8b3dd61d65a21da33efd3fb9b0a99b55", "0351a4df40069b71de39a9be8c46e705", "786bf20cb74a4e1b9ddfa3035c96aa34", "7b3a3e96d92b48e6fc7fb8dc54c6f177", "05442D5E8EF144F8", "huang015", "585797c5605a8ad80f677312f3c76d64", "acbe55ba2c95f1cb72f4ed4d598cb4b2", "8770ee5ad6e7180ca831f9b23ae0fb2a", "6dea915a82fed9186e6461d2ed2da2aa", "c6bcac871e44dca717c2fd6fab7480d0", "dc9904a54b46116e6534e2c91b8e5164", "dd59d0d8f0e1384e14635035cf17c668", "379a4d820d6e52a7cb781c8f2d7eef5d", "729b80c2155f49043b266744065b5941", "6b997d889562961b44d62bc3e99b8af5"},
|
||||
// 未付费 7-17级
|
||||
4: {"xinshou80", "764abc676187b5fb45cb2218b4076e32", "5c790273c5e51e9b8247f4614f6f4f1f", "bdcde03b4dc399118ce1e546690d8c61", "eaf25de5835afb920984eb09297103dd", "8b321645bb2df7ac618c085c849be2e6", "1f2066cb8fd35f6e8cc00c58f919f012", "f75ef1bf55789c8851338712aa1a3c25", "ac5d178c66ddaad2b04d82183dc902f7", "9baad73794e1e7f6f7284cb3fe679160", "20d207e40820d7879baa0781294ff021", "507416eb227f7f012a728f190537530b", "32beaaad0fa90c6dcafc456663d9d417", "7e4dcb931c89033cceac11a1b24b7d45", "b33892d661937e3bd1c3be62120fbf51", "7aed3a3c4703bf898bc20c360f38d09d", "172a008cab6d3606962bcb7add5b1553", "e838a9130e0bf7e0e2680eb825c0ff5a", "167d1a2c6944c65be30c2feb43bdedea", "fcf00eb8002da8ddc6cc72b9de48de55", "3edb0a525ae8a708d12ce15e8d606351", "2901b8332f6a39785194f52dbdecb420", "8efb7602f08d08351798e60791926d79", "8664fc8e96eea3cff44be59a72980635", "a40fedab76a2912bd896fcd8048a3842", "99c592a99716450e59a910d6c5192c7f", "bc3c3b7ca9e5de311ed337d6c3d617c6", "b12acbb51580947a7c1869070dea0d75", "c0ad232262fb2b912ade9aa1412e5406", "0f7e7c8a43f8f502356329ca4fe01a8d", "1eb7a5f2f9390a36b92488645baa6544", "0d56e34bac14cd02ecf98e880234485b", "cf9152a0206da604126c848e3abe3173", "d6c787411fc914c546092a6a6ee33873", "5c427a9e417dea683874bb9117a83899", "3eafdc409abd63f6fa40fcee615bb886", "ea224eb2ab657afe381535c8935b58dd", "717810be22b82f567e14f00c6eecdae7", "f38ce2b02121c800395a19e28174d3b4", "fcd7bce06319b6a590e04baca8958260", "4c5aca1ed18bd529e92792cc9e82d659", "6695418802da285c421eafc09c48256b", "fcb93bd158d212ec031b6f1ae05ab724", "b701386139828ec8f3a3db11731b0f81", "915d608525150d974f7f85bdf0f7b4e1", "0b2244d9b6c01cbb0daf685080d6d975"},
|
||||
}
|
||||
|
||||
var Compensation20250716_Mail_Item = map[int][]*item.Item{
|
||||
1: {item.NewItem(item.ITEM_DIAMOND_ID, 500), item.NewItem(item.ITEM_ENERGY_ID, 5000)}, // 大R
|
||||
2: {item.NewItem(item.ITEM_DIAMOND_ID, 200), item.NewItem(item.ITEM_ENERGY_ID, 3000)}, // 中R
|
||||
3: {item.NewItem(item.ITEM_DIAMOND_ID, 100), item.NewItem(item.ITEM_ENERGY_ID, 1500)}, // 未付费 18级以上
|
||||
4: {item.NewItem(item.ITEM_ENERGY_ID, 500)}, // 未付费 7-17级
|
||||
}
|
||||
|
||||
type MailConfig struct {
|
||||
Title string
|
||||
Content string
|
||||
Items []*item.Item
|
||||
}
|
||||
|
||||
var Compensation20250716_Mail_Config = MailConfig{
|
||||
Title: "Update Issue reply",
|
||||
Content: `Dear players, sorry about the update issues due to our release process and strategy changes—some even lost data. We take this issue very seriously.
|
||||
We truly appreciate your support, so we've prepared a special compensation just for you. Please check it
|
||||
We're already working on fixing things to make future updates smoother and more stable.
|
||||
Thanks again for sticking with us. Enjoy your game! `,
|
||||
}
|
||||
@ -62,7 +62,8 @@ type MoneyCat struct {
|
||||
}
|
||||
|
||||
type LuckyCat struct {
|
||||
Earnings int
|
||||
Earnings int
|
||||
MaxEarings int
|
||||
}
|
||||
|
||||
type CatTrick struct {
|
||||
@ -475,8 +476,10 @@ func initEventInfo(E *LTEInfo, EventType int) {
|
||||
Mul: 1.1,
|
||||
}
|
||||
case EVENT_TYPE_LUCKY_CAT:
|
||||
MaxEarning := limitedTimeEventCfg.GetLuckyCatMaxEarning(int(E.Remian))
|
||||
E.D = &LuckyCat{
|
||||
Earnings: 0,
|
||||
Earnings: 0,
|
||||
MaxEarings: MaxEarning,
|
||||
}
|
||||
case EVENT_TYPE_PAYBACK_DAY:
|
||||
|
||||
@ -504,6 +507,10 @@ func addEventInfo(E *LTEInfo, EventType, Duration int) {
|
||||
Id: len(d.List) + 1,
|
||||
Type: limitedTimeEventCfg.GetCatTrickType(Duration),
|
||||
})
|
||||
case EVENT_TYPE_LUCKY_CAT:
|
||||
MaxEarning := limitedTimeEventCfg.GetLuckyCatMaxEarning(Duration)
|
||||
d := E.D.(*LuckyCat)
|
||||
d.MaxEarings += MaxEarning
|
||||
case EVENT_TYPE_PAYBACK_DAY:
|
||||
d := E.D.(*PaybackDay)
|
||||
d.count += limitedTimeEventCfg.GetPaybackDay()
|
||||
@ -524,6 +531,9 @@ func getLimitEventMsg(t int, e *LTEInfo) *msg.LimitEvent {
|
||||
d := e.D.(*MoneyCat)
|
||||
Cd = int(d.EndTime)
|
||||
Mul = d.Mul
|
||||
case EVENT_TYPE_LUCKY_CAT:
|
||||
d := e.D.(*LuckyCat)
|
||||
Param[msg.LimitEventParam_LUCKY_CAT_EARNINGS.String()] = int32(d.MaxEarings)
|
||||
case EVENT_TYPE_CAT_TRICK:
|
||||
d := e.D.(*CatTrick)
|
||||
Energy := d.Energy
|
||||
|
||||
@ -45,6 +45,37 @@ func (m *MailMod) InitData() {
|
||||
}
|
||||
}
|
||||
|
||||
type MailStruct struct {
|
||||
Title string
|
||||
SubTitle string
|
||||
Content string
|
||||
TitleEn string
|
||||
SubTitleEn string
|
||||
ContentEn string
|
||||
Items []*item.Item
|
||||
Type int
|
||||
}
|
||||
|
||||
func (m *MailMod) SendMail(mail *MailStruct) int {
|
||||
if mail == nil {
|
||||
return 0
|
||||
}
|
||||
m.AutoId++
|
||||
m.List[m.AutoId] = &MailInfo{
|
||||
Title: mail.Title,
|
||||
SubTitle: mail.SubTitle,
|
||||
Content: mail.Content,
|
||||
TitleEn: mail.TitleEn,
|
||||
SubTitleEn: mail.SubTitleEn,
|
||||
ContentEn: mail.ContentEn,
|
||||
Items: mail.Items,
|
||||
Send: GoUtil.Now(),
|
||||
Type: mail.Type,
|
||||
Status: MAIL_STATUS_IDLE,
|
||||
}
|
||||
return m.AutoId
|
||||
}
|
||||
|
||||
// 发送邮件
|
||||
func (m *MailMod) Send(Title, SubTitle, Content, TitleEn, SubTitleEn, ContentEn string, Items []*item.Item, t int) int {
|
||||
m.AutoId++
|
||||
|
||||
@ -98,8 +98,9 @@ const (
|
||||
)
|
||||
|
||||
type ChipInfo struct {
|
||||
Uid int
|
||||
Time int64
|
||||
Uid int
|
||||
Time int64
|
||||
Emoji int
|
||||
}
|
||||
|
||||
type Mood struct {
|
||||
@ -327,11 +328,11 @@ func (p *PlayroomMod) GetChip() int {
|
||||
return len(p.ChipList)
|
||||
}
|
||||
|
||||
func (p *PlayroomMod) AddChip(Uid int, Time int64) {
|
||||
func (p *PlayroomMod) AddChip(Uid int, Time int64, Emoji int) {
|
||||
if len(p.ChipList) >= playroomCfg.GetChipNum() {
|
||||
return
|
||||
}
|
||||
p.ChipList = append(p.ChipList, &ChipInfo{Uid: Uid, Time: Time})
|
||||
p.ChipList = append(p.ChipList, &ChipInfo{Uid: Uid, Time: Time, Emoji: Emoji})
|
||||
p.RevengeUid = int64(Uid)
|
||||
}
|
||||
|
||||
@ -898,3 +899,11 @@ func (p *PlayroomMod) BackDataTask() []*msg.DailyTask {
|
||||
})
|
||||
return DailyTask
|
||||
}
|
||||
|
||||
func (p *PlayroomMod) Guide(Type int) error {
|
||||
if _, ok := p.Physiology[Type]; !ok {
|
||||
return fmt.Errorf("Guide Type is not ok")
|
||||
}
|
||||
p.Physiology[Type].Num = 0
|
||||
return nil
|
||||
}
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue
Block a user