军团活动:修改粮草先行
This commit is contained in:
@@ -8,8 +8,7 @@ import { Record, UserGuildActivityRecModel } from "../../db/UserGuildActivityRec
|
||||
import { GateMembersRec, CityParam, Member, WoodenHorse } from "../../domain/battleField/guildActivity";
|
||||
import { DicGuildActivity } from "../../pubUtils/dictionary/DicGuildActivity";
|
||||
import { getAllServers, getRoleOnlineInfo } from "../redisService";
|
||||
import { SimpleGuildRankParam, SimpleRoleRankParam, SimpleGuildRankWithTimeParam, GuildRankInfo, RoleRankInfo } from "../../domain/rank";
|
||||
import { getGuildChannelSid, getWorldChannelSid, getCityChannelSid } from "../chatChannelService";
|
||||
import { SimpleGuildRankParam, SimpleRoleRankParam, GuildRankInfo, RoleRankInfo } from "../../domain/rank";
|
||||
import { pinus } from "pinus";
|
||||
import { GuildActivityRecordModel } from "../../db/GuildActivityRec";
|
||||
import { genAuction } from "../auctionService";
|
||||
@@ -22,7 +21,6 @@ import { RaceActivityObject } from "./raceActivityObj";
|
||||
import { Rank } from "../rankService";
|
||||
import { BossInstanceModel } from "../../db/BossInstance";
|
||||
import { UserGuildModel } from "../../db/UserGuild";
|
||||
import { raceActivityEnd } from "../timeTaskService";
|
||||
import { addActive } from "../guildService";
|
||||
import { ActivePlayer, GuildRecord, ServerRecordModel } from "../../db/ServerRecords";
|
||||
import { Attack } from "../../domain/battleField/pvp";
|
||||
@@ -222,25 +220,6 @@ export async function getCityActivityRank(guildCode: string, serverId: number, c
|
||||
|
||||
return { guildRank, myGuildRank, memberRank, myMemberRank }
|
||||
}
|
||||
|
||||
export async function getRaceActivityRank(guildCode: string, serverId: number) {
|
||||
let r = new Rank(REDIS_KEY.RACE_ACTIVITY, { serverId }, true);
|
||||
r.setGenerFieldsFun(generField);
|
||||
let { myRank, ranks } = await r.getRankListWithMyRank({ guildCode });
|
||||
if (!myRank) {
|
||||
myRank = await r.generMyRankWithGuild(guildCode, 0, 0);
|
||||
}
|
||||
|
||||
return { guildRank: ranks, myGuildRank: myRank }
|
||||
}
|
||||
|
||||
|
||||
function generField(params: GuildRankInfo) {
|
||||
let { rank, code, name, num, time } = params;
|
||||
let param = new SimpleGuildRankWithTimeParam(rank, code, name, { distance: num / 1000, time: Math.floor(time), startTime: 0, durability: 0 });
|
||||
return param;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取和自己同屏的5个木牛流马
|
||||
* @param guildCode
|
||||
@@ -248,17 +227,18 @@ function generField(params: GuildRankInfo) {
|
||||
*/
|
||||
export async function getWoodenHorseList(guildCode: string, serverId: number) {
|
||||
let obj = getRaceActivityObj();
|
||||
let r = new Rank(REDIS_KEY.RACE_ACTIVITY, { serverId }, true, 5);
|
||||
let { myGuildRank, guildRank } = await obj.getRanks(serverId, guildCode);
|
||||
|
||||
let myRank = await r.getMyRank({ guildCode });
|
||||
let myRank = myGuildRank?.rank||0;
|
||||
let startRank = myRank - 2 > 0 ? myRank - 2 : 1;
|
||||
let endRank = startRank + 4;
|
||||
let range = <GuildRankInfo[]>await r.getRankByRange(startRank, endRank);
|
||||
let woodenHorseList = new Array<WoodenHorse>();
|
||||
for (let { code } of range) {
|
||||
let woodenHorse = await obj.getWoodenHorse(code, serverId);
|
||||
if (woodenHorse) {
|
||||
woodenHorseList.push(woodenHorse);
|
||||
for (let { rank, code } of guildRank) {
|
||||
if(rank >= startRank && rank <= endRank) {
|
||||
let woodenHorse = await obj.getWoodenHorse(code, serverId);
|
||||
if (woodenHorse) {
|
||||
woodenHorseList.push(woodenHorse);
|
||||
}
|
||||
}
|
||||
}
|
||||
return woodenHorseList;
|
||||
@@ -618,33 +598,10 @@ export async function sendGuildCityDeclare(cityId: number, declareGuildCode: str
|
||||
*/
|
||||
export async function calWoodenHorseAndSend(serverId: number) {
|
||||
console.log('calWoodenHorseAndSend');
|
||||
let guildKey = REDIS_KEY.RACE_ACTIVITY;
|
||||
let obj = getRaceActivityObj();
|
||||
let calResult = new Map<string, WoodenHorse>();
|
||||
for(let [code] of obj.getAllWoodenHorses()) {
|
||||
let _obj = await obj.getWoodenHorse(code, serverId);
|
||||
if(_obj) calResult.set(code, _obj);
|
||||
}
|
||||
let { guildRank: ranks } = await obj.getRanks(serverId);
|
||||
|
||||
let fun = async function (param: GuildRankInfo) {
|
||||
let { rank, code, name } = param;
|
||||
let _obj = calResult.get(code);
|
||||
return new SimpleGuildRankWithTimeParam(rank, code, name, _obj);
|
||||
}
|
||||
let r = new Rank(REDIS_KEY.RACE_ACTIVITY, { serverId }, true);
|
||||
r.setGenerFieldsFun(fun);
|
||||
let ranks = <GuildRankInfo[]>await r.getRankByRange();
|
||||
let map = new Map<number, WoodenHorse[]>();
|
||||
|
||||
let guildRank = new Array<SimpleGuildRankWithTimeParam>();
|
||||
let l = ranks.length > 10 ? 10 : ranks.length;
|
||||
for (let i = 0; i < l; i++) {
|
||||
let { rank, code, name, num } = ranks[i]
|
||||
let _obj = await obj.getWoodenHorse(code, serverId);
|
||||
let param = new SimpleGuildRankWithTimeParam(rank, code, name, _obj);
|
||||
guildRank.push(param);
|
||||
}
|
||||
|
||||
// 找到往前和往后2艘船
|
||||
for (let i = 0; i < ranks.length; i++) {
|
||||
let { code } = ranks[i];
|
||||
@@ -670,15 +627,13 @@ export async function calWoodenHorseAndSend(serverId: number) {
|
||||
// console.log('send', woodenHorseList.length);
|
||||
let curRank = ranks[rank];
|
||||
let wh = await obj.getWoodenHorse(curRank.code, serverId);
|
||||
let myGuildRank = new SimpleGuildRankWithTimeParam(curRank.rank, curRank.code, curRank.name, wh);
|
||||
let events = obj.getEvents(curRank.code, wh ? wh.distance : 0);
|
||||
await sendMessageToGuildWithSuc(curRank.code, PUSH_ROUTE.GUILD_RACE_UPDATE, { timestamp: Date.now(), woodenHorseList, guildRank, myGuildRank, events });
|
||||
await sendMessageToGuildWithSuc(curRank.code, PUSH_ROUTE.GUILD_RACE_UPDATE, { timestamp: Date.now(), woodenHorseList, guildRank: ranks, myGuildRank: curRank, events });
|
||||
|
||||
map.delete(rank);
|
||||
}
|
||||
}
|
||||
}
|
||||
calResult.clear();
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -703,17 +658,21 @@ export async function raceActivitySettleReward(guildCode: string, woodenHorse: W
|
||||
let { serverId, durability, distance } = woodenHorse;
|
||||
let obj = getRaceActivityObj();
|
||||
// 计算排名,计算耐久,发送奖励
|
||||
let r = new Rank(REDIS_KEY.RACE_ACTIVITY, { serverId }, true);
|
||||
let { guildRank, myGuildRank } = await obj.getRanks(serverId, guildCode);
|
||||
let rank = myGuildRank?.rank||0;
|
||||
|
||||
let r = new Rank(REDIS_KEY.RACE_ACTIVITY, { serverId });
|
||||
await r.setRankWithGuildInfo2(guildCode, myGuildRank.num, myGuildRank.sortTime, myGuildRank.durability);
|
||||
|
||||
let isSuccess = distance >= GUILDACTIVITY.RACEACTIVITY_LENGTH; // 血条未击破则没有占领军团
|
||||
let myGuildRank = await r.getMyRank({ guildCode });
|
||||
let members = obj.getMembersOfGuild(guildCode);
|
||||
|
||||
let rewards = getGuildAuctionRewards(GUILD_ACTIVITY_TYPE.RACE_ACTIVITY, myGuildRank);
|
||||
let rewards = getGuildAuctionRewards(GUILD_ACTIVITY_TYPE.RACE_ACTIVITY, rank);
|
||||
let rec = await GuildActivityRecordModel.updateInfo(guildCode, GUILD_ACTIVITY_TYPE.RACE_ACTIVITY, {
|
||||
memberCnt: members.length, members,
|
||||
isSuccess, isCompleted: true, rank: myGuildRank,
|
||||
isSuccess, isCompleted: true, rank,
|
||||
rewards: rewards.map(cur => cur.goods),
|
||||
woodenHorse,
|
||||
woodenHorse: woodenHorse.getTreatTime(),
|
||||
});
|
||||
if (rec) {
|
||||
// 奖励加入拍卖行
|
||||
@@ -723,9 +682,7 @@ export async function raceActivitySettleReward(guildCode: string, woodenHorse: W
|
||||
let honour = dic.honour + Math.floor(durability * GUILDACTIVITY.RACEACTIVITY_DURABILITY_REWARD);
|
||||
|
||||
for(let { roleId } of members) {
|
||||
await updateUserRecAndSendHonour(honour, 0, myGuildRank, roleId, members);
|
||||
|
||||
let onlineUser = await getRoleOnlineInfo(roleId);
|
||||
await updateUserRecAndSendHonour(honour, 0, rank, roleId, members);
|
||||
// 发放活跃
|
||||
await addActive(roleId, serverId, GUILD_POINT_WAYS.ACTIVITY); //获得活跃值
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user