军团活动:修改诸侯混战城门血量计算公式

This commit is contained in:
luying
2022-06-10 17:55:15 +08:00
parent dc90eddac0
commit 962932adca
9 changed files with 97 additions and 11 deletions
@@ -186,7 +186,7 @@ export class CityActivityHandler {
const dbCities = await GuildActivityCityModel.getAllCities(serverId); const dbCities = await GuildActivityCityModel.getAllCities(serverId);
let cityStatus = pubGetCityStatus(guildCode, cityId, dicCity, dbCities); let cityStatus = pubGetCityStatus(guildCode, cityId, dicCity, dbCities);
// 全服活跃统计 // 全服活跃统计
await ServerRecordModel.addActiveGuild(serverId, guildCode); await ServerRecordModel.addActiveGuild(serverId, roleId, guildCode);
// 任务 // 任务
await checkTask(serverId, roleId, sid, TASK_TYPE.GUILD_ACTIVITY, { aid: this.aid }); await checkTask(serverId, roleId, sid, TASK_TYPE.GUILD_ACTIVITY, { aid: this.aid });
@@ -92,7 +92,7 @@ export class GateActivityHandler {
let r = new Rank(REDIS_KEY.GATE_ACTIVITY, { serverId }, true); let r = new Rank(REDIS_KEY.GATE_ACTIVITY, { serverId }, true);
let guildScore = await r.getMyScore({ guildCode }); let guildScore = await r.getMyScore({ guildCode });
// 全服活跃统计 // 全服活跃统计
await ServerRecordModel.addActiveGuild(serverId, guildCode); await ServerRecordModel.addActiveGuild(serverId, roleId, guildCode);
// 任务 // 任务
await checkTask(serverId, roleId, sid, TASK_TYPE.GUILD_ACTIVITY, { aid: this.aid }); await checkTask(serverId, roleId, sid, TASK_TYPE.GUILD_ACTIVITY, { aid: this.aid });
@@ -106,7 +106,7 @@ export class RaceActivityHandler {
await sendMessageToGuildWithSuc(guildCode, PUSH_ROUTE.GUILD_RACE_JOIN, { timestamp: Date.now(), woodenHorse }); await sendMessageToGuildWithSuc(guildCode, PUSH_ROUTE.GUILD_RACE_JOIN, { timestamp: Date.now(), woodenHorse });
// 全服活跃统计 // 全服活跃统计
await ServerRecordModel.addActiveGuild(serverId, guildCode); await ServerRecordModel.addActiveGuild(serverId, roleId, guildCode);
// 任务 // 任务
await checkTask(serverId, roleId, sid, TASK_TYPE.GUILD_ACTIVITY, { aid: this.aid }); await checkTask(serverId, roleId, sid, TASK_TYPE.GUILD_ACTIVITY, { aid: this.aid });
@@ -26,6 +26,7 @@ import { ActivePlayer, GuildRecord, ServerRecordModel } from "../../db/ServerRec
import { Attack } from "../../domain/battleField/pvp"; import { Attack } from "../../domain/battleField/pvp";
import { getHonourObject } from "../role/rewardService"; import { getHonourObject } from "../role/rewardService";
import { sendMessageToCityWithSuc, sendMessageToGuildWithSuc, sendMessageToServerWithSuc } from "../pushService"; import { sendMessageToCityWithSuc, sendMessageToGuildWithSuc, sendMessageToServerWithSuc } from "../pushService";
import { saveGuildGateHpLog } from "../../pubUtils/logUtil";
let gateActivityObj: GateActivityObject; let gateActivityObj: GateActivityObject;
let cityActivityObj: CityActivityObject; let cityActivityObj: CityActivityObject;
@@ -780,12 +781,15 @@ export async function getCityActivityGateHp(serverId: number, cityId: number) {
let serverRecord = await ServerRecordModel.findTodayData(serverId); let serverRecord = await ServerRecordModel.findTodayData(serverId);
if(!serverRecord) return dicCityActivity.hp; if(!serverRecord) return dicCityActivity.hp;
let activePlayerCnt = 1, activePlayerCe = 0, activeTopPlayerCnt = 1, activeGuildCnt = 1; let activePlayerCnt = 50; // 前一天参与军团活动的玩家
let activeGuildCnt = 5; // 前一天参与军团活动的军团
let activePlayerCe = 0; // 前一天前十玩家的最强战力和
let activeTopPlayerCnt = 1; // 前一天最强玩家数量
if(serverRecord) { if(serverRecord) {
if(serverRecord.activePlayerCnt > 0) activePlayerCnt = serverRecord.activePlayerCnt;
if(serverRecord.activePlayerCe > 0) activePlayerCe = serverRecord.activePlayerCe; if(serverRecord.activePlayerCe > 0) activePlayerCe = serverRecord.activePlayerCe;
if(serverRecord.activePlayers?.length > 0) activeTopPlayerCnt = serverRecord.activePlayers?.length; if(serverRecord.activePlayers?.length > 0) activeTopPlayerCnt = serverRecord.activePlayers?.length;
if(serverRecord.activeGuildCodes?.length > 0) activeGuildCnt = serverRecord.activeGuildCodes?.length; if(serverRecord.activeGuildCodes?.length > 0) activeGuildCnt = serverRecord.activeGuildCodes?.length;
if(serverRecord.activeGuildMembers?.length > 0) activePlayerCnt = serverRecord.activeGuildMembers?.length;
} }
console.log(`getCityActivityGateHp: activePlayerCnt ${activePlayerCnt}, activePlayerCe ${activePlayerCe}, activeTopPlayerCnt ${activeTopPlayerCnt} activeGuildCnt ${activeGuildCnt}`); console.log(`getCityActivityGateHp: activePlayerCnt ${activePlayerCnt}, activePlayerCe ${activePlayerCe}, activeTopPlayerCnt ${activeTopPlayerCnt} activeGuildCnt ${activeGuildCnt}`);
@@ -803,6 +807,9 @@ export async function getCityActivityGateHp(serverId: number, cityId: number) {
let gateHp = Math.floor(gateHpBase * (activePlayerCnt/activeGuildCnt) * N); let gateHp = Math.floor(gateHpBase * (activePlayerCnt/activeGuildCnt) * N);
console.log(`getCityActivityGateHp: gateHp ${gateHp}`); console.log(`getCityActivityGateHp: gateHp ${gateHp}`);
saveGuildGateHpLog(serverId, cityId, { activePlayerCnt, activePlayerCe, activeTopPlayerCnt, activeGuildCnt, atk, A, hpBase: gateHpBase, N, gateHp });
if(gateHp <= dicCityActivity.hp) { if(gateHp <= dicCityActivity.hp) {
gateHp = dicCityActivity.hp; gateHp = dicCityActivity.hp;
} }
@@ -18,6 +18,7 @@ import { GUILDACTIVITY } from '../pubUtils/dicParam';
import { ServerRecordModel } from '../db/ServerRecords'; import { ServerRecordModel } from '../db/ServerRecords';
import { sendMessageToGuildWithSuc, sendMessageToUsersWithSuc } from './pushService'; import { sendMessageToGuildWithSuc, sendMessageToUsersWithSuc } from './pushService';
import { AttributeCal } from '../domain/roleField/attribute'; import { AttributeCal } from '../domain/roleField/attribute';
import { saveGuildBossHpLog } from '../pubUtils/logUtil';
/** /**
* 获得boss界面 * 获得boss界面
@@ -231,6 +232,7 @@ export async function getBossHp(serverId: number, guildCode: string, dicBossBase
bossHp = minBossHp; bossHp = minBossHp;
} }
console.log(`getBossHp B ${B}`); console.log(`getBossHp B ${B}`);
saveGuildBossHpLog(serverId, warId, guildCode, { minBossHp, bossHpRatio, hp, activeCe, playerCnt, subCe, B, bossHp })
return { ratio: B, bossHp: zoomInDamage(bossHp) }; return { ratio: B, bossHp: zoomInDamage(bossHp) };
} }
+2
View File
@@ -1092,6 +1092,8 @@ export enum LOG_TYPE {
PAY = 'pay', // 充值 PAY = 'pay', // 充值
ITEM_CHANGE = 'itemChange', // 道具变动 ITEM_CHANGE = 'itemChange', // 道具变动
RECEIVE_MAIL = 'receiveMail', // 领取邮件 RECEIVE_MAIL = 'receiveMail', // 领取邮件
GATE_HP = 'gateHp', // 诸侯混战城门
BOSS_HP = 'bossHp', // 演武台boss血量
} }
export enum CE_CHANGE_REASON { export enum CE_CHANGE_REASON {
+5 -2
View File
@@ -53,6 +53,9 @@ export default class ServerRecord extends BaseModel {
@prop({ required: true, type: String, default: [] }) @prop({ required: true, type: String, default: [] })
activeGuildCodes: string[]; // 前一天参与军团活动的军团 activeGuildCodes: string[]; // 前一天参与军团活动的军团
@prop({ required: true, type: String, default: [] })
activeGuildMembers: string[]; // 前一天参与军团活动的玩家
@prop({ required: true, type: GuildRecord, _id: false }) @prop({ required: true, type: GuildRecord, _id: false })
activeGuilds: GuildRecord[]; activeGuilds: GuildRecord[];
@@ -62,9 +65,9 @@ export default class ServerRecord extends BaseModel {
return rec; return rec;
} }
public static async addActiveGuild(serverId: number, guildCode: string) { public static async addActiveGuild(serverId: number, roleId: string, guildCode: string) {
let tomorrow = getZeroPoint() + 86400; let tomorrow = getZeroPoint() + 86400;
let rec: ServerRecordType = await ServerRecordModel.findOneAndUpdate({ serverId, today: tomorrow }, { $addToSet: { activeGuildCodes: guildCode } }, { new: true, upsert: true }).lean(); let rec: ServerRecordType = await ServerRecordModel.findOneAndUpdate({ serverId, today: tomorrow }, { $addToSet: { activeGuildCodes: guildCode, activeGuildMembers: roleId } }, { new: true, upsert: true }).lean();
return rec; return rec;
} }
+59 -3
View File
@@ -9,6 +9,46 @@ class MalReward {
count: number; count: number;
} }
export class GateHpLog {
@prop({ required: false })
activePlayerCnt: number;
@prop({ required: false })
activePlayerCe: number;
@prop({ required: false })
activeTopPlayerCnt: number;
@prop({ required: false })
activeGuildCnt: number;
@prop({ required: false })
atk: number;
@prop({ required: false })
A: number;
@prop({ required: false })
hpBase: number;
@prop({ required: false })
N: number;
@prop({ required: false })
gateHp: number;
}
export class BossHpLog {
@prop({ required: false })
minBossHp: number;
@prop({ required: false })
bossHpRatio: number;
@prop({ required: false })
hp: number;
@prop({ required: false })
activeCe: number;
@prop({ required: false })
playerCnt: number;
@prop({ required: false })
subCe: number;
@prop({ required: false })
B: number;
@prop({ required: false })
bossHp: number;
}
/** /**
* 玩家充值订单 * 玩家充值订单
*/ */
@@ -19,16 +59,16 @@ export default class UserLog extends BaseModel {
@prop({ required: true }) @prop({ required: true })
type: string; // 类型 LOG_TYPE type: string; // 类型 LOG_TYPE
@prop({ required: true }) @prop({ required: false })
uid: number; // uid uid: number; // uid
@prop({ required: true }) @prop({ required: true })
serverId: number; // 小区id serverId: number; // 小区id
@prop({ required: true }) @prop({ required: false })
roleId: string; // 角色id roleId: string; // 角色id
@prop({ required: true }) @prop({ required: false })
roleName: string; // 角色名 roleName: string; // 角色名
@prop({ required: false }) @prop({ required: false })
@@ -101,6 +141,22 @@ export default class UserLog extends BaseModel {
@prop({ required: false }) @prop({ required: false })
mailSendName: string; // 邮件发件人 mailSendName: string; // 邮件发件人
// 诸侯混战城门血条记录
@prop({ required: false })
cityId: number; // 城id
@prop({ required: false, type: GateHpLog, _id: false })
gateHp: GateHpLog; // 诸侯混战血量参数
// 军团boss血量记录
@prop({ required: false })
guildCode: string; // 军团code
@prop({ required: false })
warId: number; // 城id
@prop({ required: false, type: BossHpLog, _id: false })
bossHp: BossHpLog; // 诸侯混战血量参数
public static async createRecord(params: UserLogModelTypeParam) { public static async createRecord(params: UserLogModelTypeParam) {
const r = await UserLogModel.insertMany(params); const r = await UserLogModel.insertMany(params);
+17 -1
View File
@@ -1,6 +1,6 @@
import { ACTIVITY_TYPE, CURRENCY_BY_TYPE, CURRENCY_TYPE, HERO_SYSTEM_TYPE, LOG_TYPE } from "../consts"; import { ACTIVITY_TYPE, CURRENCY_BY_TYPE, CURRENCY_TYPE, HERO_SYSTEM_TYPE, LOG_TYPE } from "../consts";
import { RoleModel, RoleType, RoleUpdate } from "../db/Role"; import { RoleModel, RoleType, RoleUpdate } from "../db/Role";
import { UserLogModel } from "../db/UserLog"; import { UserLogModel, GateHpLog, BossHpLog } from "../db/UserLog";
import { UserOrderModelType } from "../db/UserOrder"; import { UserOrderModelType } from "../db/UserOrder";
import { Figure } from "../domain/dbGeneral"; import { Figure } from "../domain/dbGeneral";
import { MailParam } from "../domain/roleField/mail"; import { MailParam } from "../domain/roleField/mail";
@@ -109,4 +109,20 @@ export async function saveMailLog(session: any, mails: MailParam[]) {
} catch (e) { } catch (e) {
console.error(e); console.error(e);
} }
}
export async function saveGuildGateHpLog(serverId: number, cityId: number, log: GateHpLog) {
try {
await UserLogModel.createRecord({ type: LOG_TYPE.GATE_HP, serverId, cityId, gateHp: log });
} catch (e) {
console.error(e);
}
}
export async function saveGuildBossHpLog(serverId: number, warId: number, guildCode: string, log: BossHpLog) {
try {
await UserLogModel.createRecord({ type: LOG_TYPE.BOSS_HP, serverId, warId, guildCode, bossHp: log });
} catch (e) {
console.error(e);
}
} }