xy-server/game/core/PaiHangMgr.ts

1280 lines
51 KiB
TypeScript
Raw Normal View History

2025-04-23 09:34:08 +08:00
import GameUtil from "./GameUtil";
import BangMgr from "../bang/BangMgr";
import DB from "../utils/DB";
import Launch from "./Launch";
import SKDataUtil from "../gear/SKDataUtil";
import ChargeSum from "./ChargeSum";
import SKLogger from "../gear/SKLogger";
import PlayerMgr from "../object/PlayerMgr";
import Equip from "../object/Equip";
import { EEquipIndex, ERaceType } from "../role/EEnum";
export default class PaiHangMgr {
static shared = new PaiHangMgr();
vecLevel: any[];
vecMoney: any[];
vecBang: any[];
shuiLuRank: any[];
// 竞技场排行
jingJiRank: any[];
jingjilist: any[];
// 装备评价榜
humenEquipRank: any = []; // 人族
skyEquipRank: any = []; // 仙族
demonEquipRank: any = []; // 魔族
ghostEquipRank: any = []; // 鬼族
dragonEquipRank: any = [];// 龙族
murderRank: any = [];// 红名榜
daysPrisoner: any = [];// 天牢犯人
bind_player_list: any = [];
equip: any;
weaponRank: any = []; //装备排行榜
nicklaceRank: any = [] //项链排行榜
clothesRank: any = []
helmetRank:any = []
shoesRank:any = []
capeRank:any = []
pendantRank:any = []
beltRank:any = []
ringRank :any = []
constructor() {
this.vecLevel = [];
this.vecMoney = [];
this.vecBang = [];
this.shuiLuRank = [];
this.jingJiRank = [];
this.jingjilist = [];
this.humenEquipRank = []; // 人族
this.skyEquipRank = []; // 仙族
this.demonEquipRank = []; // 魔族
this.ghostEquipRank = []; // 鬼族
this.dragonEquipRank = []; // 龙族
this.murderRank = [];// 红名榜
this.daysPrisoner = [];// 天牢犯人
this.bind_player_list = [];// 天牢犯人
this.equip = Equip;
this.weaponRank = []
this.nicklaceRank = []
this.clothesRank = []
this.helmetRank = []
this.shoesRank = []
this.capeRank= []
this.pendantRank = []
this.beltRank = []
this.ringRank = []
}
init() {
this.readDB();
}
readDB() {
let nServerID = GameUtil.serverId;
let sql = `SELECT roleid, name, relive, level, jade, shuilu, arena FROM qy_role WHERE serverid = ${nServerID}`;
let self = this;
DB.query(sql, (error: any, rows: any) => {
if (error) {
let info = DB.errorInfo(error);
SKLogger.warn(`排行榜:读档错误[${info}]`);
return;
}
for (let i = 0; i < rows.length; i++) {
this.vecLevel.push({ roleId: rows[i].roleid, strName: rows[i].name, nRelive: rows[i].relive, nLevel: rows[i].level, nMoney: rows[i].jade });
this.vecMoney.push({ roleId: rows[i].roleid, strName: rows[i].name, nRelive: rows[i].relive, nLevel: rows[i].level, nMoney: rows[i].jade });
let t3 = null;
try {
t3 = SKDataUtil.jsonBy(rows[i].shuilu);
} catch (error) {
t3 = { score: 0, gongji: 0, wtime: 0 };
}
if (t3 == null) {
t3 = { score: 0, gongji: 0, wtime: 0 };
}
this.shuiLuRank.push({
roleid: rows[i].roleid,
name: rows[i].name,
score: t3.score,
wtime: t3.wtime,
relive: rows[i].relive,
level: rows[i].level,
});
}
this.vecLevel.sort(function (a: any, b: any) {
if (a.nRelive > b.nRelive) {
return -1;
} else if (a.nRelive < b.nRelive) {
return 1;
} else {
if (a.nLevel > b.nLevel) {
return -1;
} else if (a.nLevel < b.nLevel) {
return 1;
} else {
return 0;
}
}
})
this.vecMoney.sort((a, b) => {
return b.nMoney - a.nMoney;
});
this.shuiLuRank.sort((a, b) => {
return b.score - a.score;
});
this.vecLevel.splice(20, this.vecLevel.length);
this.vecMoney.splice(20, this.vecMoney.length);
this.shuiLuRank.splice(20, this.shuiLuRank.length);
SKLogger.info(`排行榜模块加载完毕!`);
let className: string = self.constructor.name;
Launch.shared.complete(className);
});
let arena_sql = `SELECT SUM(qy_equip.BaseScore) AS score, qy_role.roleid, qy_role.resid, qy_role.name, qy_role.relive, qy_role.level, qy_role.race, qy_role.sex, qy_role.arena FROM qy_role LEFT JOIN qy_equip ON qy_role.roleid = qy_equip.RoleID WHERE serverid = ${nServerID} GROUP BY qy_role.roleid`;
DB.query(arena_sql, (error: any, rows: any) => {
for (let i = 0; i < rows.length; i++) {
let t1 = null;
try {
t1 = SKDataUtil.jsonBy(rows[i].arena);
} catch (error) {
t1 = { count: 10, jpoint: 0, jtime: 0, ranking: 0 };
}
if (t1 == null) {
t1 = { count: 10, jpoint: 0, jtime: 0, ranking: 0 };
}
this.jingJiRank.push({
roleId: rows[i].roleid,
resid: rows[i].resid,
name: rows[i].name,
count: t1.count,
jpoint: t1.jpoint,
jtime: t1.jtime,
relive: rows[i].relive,
level: rows[i].level,
ranking: this.jingJiRank.length + 1,
baseSource: rows[i].score,
});
}
});
this.jingjilist = this.jingJiRank;
// 天牢犯人
let days_sql = `SELECT roleid, name, race, relive, level, shane FROM qy_role WHERE shane > 0 and serverid = ${nServerID}`;
DB.query(days_sql, (error: any, rows: any) => {
for (let i = 0; i < rows.length; i++) {
this.daysPrisoner.push({
roleId: rows[i].roleid,
name: rows[i].name,
relive: rows[i].relive,
level: rows[i].level,
race: rows[i].race,
shane: rows[i].shane
});
}
});
// 天牢犯人排序
if (this.daysPrisoner.length > 2) {
this.daysPrisoner.sort((a: any, b: any) => {
return b.shane - a.shane;
});
}
// 红名榜
let murder_sql = `SELECT role.roleid, role.name, role.relive, role.level, role.race, COUNT(murder.defier_role_id) as count FROM qy_murder as murder LEFT JOIN qy_role as role on murder.defier_role_id = roleid WHERE role.serverid = ${nServerID} and date_format(murder.create_time,'%y%m') = date_format(NOW(),'%y%m') ORDER BY count desc LIMIT 20;`;
DB.query(murder_sql, (error: any, rows: any) => {
for (let i = 0; i < rows.length; i++) {
if (rows[i].count > 0) {
this.murderRank.push({
roleId: rows[i].roleid,
name: rows[i].name,
relive: rows[i].relive,
level: rows[i].level,
race: rows[i].race,
count: rows[i].count
});
}
}
});
let bind_sql = `SELECT * FROM qy_binding`;
DB.query(bind_sql, (error: any, rows: any) => {
for (let i = 0; i < rows.length; i++) {
this.bind_player_list.push({
roleid: rows[i].roleid,
name: rows[i].name,
resid: rows[i].resid,
relive: rows[i].relive,
level: rows[i].level,
bind_roleid: rows[i].bind_roleid,
bind_name: rows[i].bind_name,
bind_resid: rows[i].bind_resid,
bind_relive: rows[i].bind_relive,
bind_level: rows[i].bind_level
});
}
});
// 红名榜排序
if (this.murderRank.length > 2) {
this.murderRank.sort((a: any, b: any) => {
return b.count - a.count;
});
}
let equip_weapon_sql = `SELECT qy_role.roleid, qy_role.name, qy_role.relive, qy_role.level, qy_role.race, qy_role.sex, qy_equip.name AS equip_name,qy_equip.BaseScore AS score FROM qy_role LEFT JOIN qy_equip ON qy_role.roleid = qy_equip.RoleID WHERE qy_role.serverid = ${nServerID} AND qy_equip.pos = 2 and qy_equip.state != 0 AND qy_equip.EIndex = 1 GROUP BY qy_role.roleid;`
DB.query(equip_weapon_sql, (error: any, rows: any) => {
if (error) {
let info = DB.errorInfo(error);
SKLogger.warn(`排行榜:读档错误[${info}]`);
return;
}
for (let i = 0; i < rows.length; i++) {
this.weaponRank.push({
roleId: rows[i].roleid,
sex: rows[i].sex,
name: rows[i].name,
race: rows[i].race,
level: rows[i].level,
score: rows[i].score,
relive: rows[i].relive,
equip_name: rows[i].equip_name,
})
}
this.weaponRank.sort((a: any, b: any) => {
return b.score - a.score;
});
// 保留前50名玩家数据
this.weaponRank.splice(50, this.weaponRank.length);
})
let equip_nicklace_sql = `SELECT qy_role.roleid, qy_role.name, qy_role.relive, qy_role.level, qy_role.race, qy_role.sex, qy_equip.name AS equip_name,qy_equip.BaseScore AS score FROM qy_role LEFT JOIN qy_equip ON qy_role.roleid = qy_equip.RoleID WHERE qy_role.serverid = ${nServerID} AND qy_equip.pos = 2 and qy_equip.state != 0 AND qy_equip.EIndex = 2 GROUP BY qy_role.roleid;`
DB.query(equip_nicklace_sql, (error: any, rows: any) => {
if (error) {
let info = DB.errorInfo(error);
SKLogger.warn(`排行榜:读档错误[${info}]`);
return;
}
for (let i = 0; i < rows.length; i++) {
this.nicklaceRank.push({
roleId: rows[i].roleid,
sex: rows[i].sex,
name: rows[i].name,
race: rows[i].race,
level: rows[i].level,
score: rows[i].score,
relive: rows[i].relive,
equip_name: rows[i].equip_name,
})
}
this.nicklaceRank.sort((a: any, b: any) => {
return b.score - a.score;
});
// 保留前50名玩家数据
this.nicklaceRank.splice(50, this.nicklaceRank.length);
})
let equip_clothes_sql = `SELECT qy_role.roleid, qy_role.name, qy_role.relive, qy_role.level, qy_role.race, qy_role.sex, qy_equip.name AS equip_name,qy_equip.BaseScore AS score FROM qy_role LEFT JOIN qy_equip ON qy_role.roleid = qy_equip.RoleID WHERE qy_role.serverid = ${nServerID} AND qy_equip.pos = 2 and qy_equip.state != 0 AND qy_equip.EIndex = 3 GROUP BY qy_role.roleid;`
DB.query(equip_clothes_sql, (error: any, rows: any) => {
if (error) {
let info = DB.errorInfo(error);
SKLogger.warn(`排行榜:读档错误[${info}]`);
return;
}
for (let i = 0; i < rows.length; i++) {
this.clothesRank.push({
roleId: rows[i].roleid,
sex: rows[i].sex,
name: rows[i].name,
race: rows[i].race,
level: rows[i].level,
score: rows[i].score,
relive: rows[i].relive,
equip_name: rows[i].equip_name,
})
}
this.clothesRank.sort((a: any, b: any) => {
return b.score - a.score;
});
// 保留前50名玩家数据
this.clothesRank.splice(50, this.clothesRank.length);
})
let equip_helmet_sql = `SELECT qy_role.roleid, qy_role.name, qy_role.relive, qy_role.level, qy_role.race, qy_role.sex,qy_equip.name AS equip_name, qy_equip.BaseScore AS score FROM qy_role LEFT JOIN qy_equip ON qy_role.roleid = qy_equip.RoleID WHERE qy_role.serverid = ${nServerID} AND qy_equip.pos = 2 and qy_equip.state != 0 AND qy_equip.EIndex = 4 GROUP BY qy_role.roleid;`
DB.query(equip_helmet_sql, (error: any, rows: any) => {
if (error) {
let info = DB.errorInfo(error);
SKLogger.warn(`排行榜:读档错误[${info}]`);
return;
}
for (let i = 0; i < rows.length; i++) {
this.helmetRank.push({
roleId: rows[i].roleid,
sex: rows[i].sex,
name: rows[i].name,
race: rows[i].race,
level: rows[i].level,
score: rows[i].score,
relive: rows[i].relive,
equip_name: rows[i].equip_name,
})
}
this.helmetRank.sort((a: any, b: any) => {
return b.score - a.score;
});
// 保留前50名玩家数据
this.helmetRank.splice(50, this.helmetRank.length);
})
let equip_shoes_sql = `SELECT qy_role.roleid, qy_role.name, qy_role.relive, qy_role.level, qy_role.race, qy_role.sex,qy_equip.name AS equip_name, qy_equip.BaseScore AS score FROM qy_role LEFT JOIN qy_equip ON qy_role.roleid = qy_equip.RoleID WHERE qy_role.serverid = ${nServerID} AND qy_equip.pos = 2 and qy_equip.state != 0 AND qy_equip.EIndex = 5 GROUP BY qy_role.roleid;`
DB.query(equip_shoes_sql, (error: any, rows: any) => {
if (error) {
let info = DB.errorInfo(error);
SKLogger.warn(`排行榜:读档错误[${info}]`);
return;
}
for (let i = 0; i < rows.length; i++) {
this.shoesRank.push({
roleId: rows[i].roleid,
sex: rows[i].sex,
name: rows[i].name,
race: rows[i].race,
level: rows[i].level,
score: rows[i].score,
relive: rows[i].relive,
equip_name: rows[i].equip_name,
})
}
this.shoesRank.sort((a: any, b: any) => {
return b.score - a.score;
});
// 保留前50名玩家数据
this.shoesRank.splice(50, this.shoesRank.length);
})
let equip_cape_sql = `SELECT qy_role.roleid, qy_role.name, qy_role.relive, qy_role.level, qy_role.race, qy_role.sex,qy_equip.name AS equip_name, qy_equip.BaseScore AS score FROM qy_role LEFT JOIN qy_equip ON qy_role.roleid = qy_equip.RoleID WHERE qy_role.serverid = ${nServerID} AND qy_equip.pos = 2 and qy_equip.state != 0 AND qy_equip.EIndex = 7 GROUP BY qy_role.roleid;`
DB.query(equip_cape_sql, (error: any, rows: any) => {
if (error) {
let info = DB.errorInfo(error);
SKLogger.warn(`排行榜:读档错误[${info}]`);
return;
}
for (let i = 0; i < rows.length; i++) {
this.capeRank.push({
roleId: rows[i].roleid,
sex: rows[i].sex,
name: rows[i].name,
race: rows[i].race,
level: rows[i].level,
score: rows[i].score,
relive: rows[i].relive,
equip_name: rows[i].equip_name,
})
}
this.capeRank.sort((a: any, b: any) => {
return b.score - a.score;
});
// 保留前50名玩家数据
this.capeRank.splice(50, this.capeRank.length);
})
let equip_pendant_sql = `SELECT qy_role.roleid, qy_role.name, qy_role.relive, qy_role.level, qy_role.race, qy_role.sex, qy_equip.name AS equip_name,qy_equip.BaseScore AS score FROM qy_role LEFT JOIN qy_equip ON qy_role.roleid = qy_equip.RoleID WHERE qy_role.serverid = ${nServerID} AND qy_equip.pos = 2 and qy_equip.state != 0 AND qy_equip.EIndex = 8 GROUP BY qy_role.roleid;`
DB.query(equip_pendant_sql, (error: any, rows: any) => {
if (error) {
let info = DB.errorInfo(error);
SKLogger.warn(`排行榜:读档错误[${info}]`);
return;
}
for (let i = 0; i < rows.length; i++) {
this.pendantRank.push({
roleId: rows[i].roleid,
sex: rows[i].sex,
name: rows[i].name,
race: rows[i].race,
level: rows[i].level,
score: rows[i].score,
relive: rows[i].relive,
equip_name: rows[i].equip_name,
})
}
this.pendantRank.sort((a: any, b: any) => {
return b.score - a.score;
});
// 保留前50名玩家数据
this.pendantRank.splice(50, this.pendantRank.length);
})
let equip_belt_sql = `SELECT qy_role.roleid, qy_role.name, qy_role.relive, qy_role.level, qy_role.race, qy_role.sex,qy_equip.name AS equip_name, qy_equip.BaseScore AS score FROM qy_role LEFT JOIN qy_equip ON qy_role.roleid = qy_equip.RoleID WHERE qy_role.serverid = ${nServerID} AND qy_equip.pos = 2 and qy_equip.state != 0 AND qy_equip.EIndex = 9 GROUP BY qy_role.roleid;`
DB.query(equip_belt_sql, (error: any, rows: any) => {
if (error) {
let info = DB.errorInfo(error);
SKLogger.warn(`排行榜:读档错误[${info}]`);
return;
}
for (let i = 0; i < rows.length; i++) {
this.beltRank.push({
roleId: rows[i].roleid,
sex: rows[i].sex,
name: rows[i].name,
race: rows[i].race,
level: rows[i].level,
score: rows[i].score,
relive: rows[i].relive,
equip_name: rows[i].equip_name,
})
}
this.beltRank.sort((a: any, b: any) => {
return b.score - a.score;
});
// 保留前50名玩家数据
this.beltRank.splice(50, this.beltRank.length);
})
let equip_ring_sql = `SELECT qy_role.roleid, qy_role.name, qy_role.relive, qy_role.level, qy_role.race, qy_role.sex,qy_equip.name AS equip_name, qy_equip.BaseScore AS score FROM qy_role LEFT JOIN qy_equip ON qy_role.roleid = qy_equip.RoleID WHERE qy_role.serverid = ${nServerID} AND qy_equip.pos = 2 and qy_equip.state != 0 AND (qy_equip.EIndex = 10 or qy_equip.EIndex = 12) GROUP BY qy_role.roleid;`
DB.query(equip_ring_sql, (error: any, rows: any) => {
if (error) {
let info = DB.errorInfo(error);
SKLogger.warn(`排行榜:读档错误[${info}]`);
return;
}
for (let i = 0; i < rows.length; i++) {
this.ringRank.push({
roleId: rows[i].roleid,
sex: rows[i].sex,
name: rows[i].name,
race: rows[i].race,
level: rows[i].level,
score: rows[i].score,
relive: rows[i].relive,
equip_name: rows[i].equip_name,
})
}
this.ringRank.sort((a: any, b: any) => {
return b.score - a.score;
});
// 保留前50名玩家数据
this.ringRank.splice(50, this.ringRank.length);
})
let equip_score_sql = `SELECT SUM(qy_equip.BaseScore) AS score, qy_role.roleid, qy_role.name, qy_role.relive, qy_role.level, qy_role.race, qy_role.sex FROM qy_role LEFT JOIN qy_equip ON qy_role.roleid = qy_equip.RoleID WHERE qy_role.serverid = ${nServerID} and qy_equip.pos = 2 and qy_equip.state != 0 GROUP BY qy_role.roleid`;
DB.query(equip_score_sql, (error: any, rows: any) => {
if (error) {
let info = DB.errorInfo(error);
SKLogger.warn(`排行榜:读档错误[${info}]`);
return;
}
for (let i = 0; i < rows.length; i++) {
let obj: any = {
roleId: rows[i].roleid,
sex: rows[i].sex,
name: rows[i].name,
race: rows[i].race,
level: rows[i].level,
score: rows[i].score,
relive: rows[i].relive,
}
// 人族装备评分
if (rows[i].race == ERaceType.HUMEN) {
this.humenEquipRank.push(obj);
}
// 仙族装备评分
else if (rows[i].race == ERaceType.SKY) {
this.skyEquipRank.push(obj);
}
// 魔族装备评分
else if (rows[i].race == ERaceType.DEMON) {
this.demonEquipRank.push(obj);
}
// 鬼族装备评分
else if (rows[i].race == ERaceType.GHOST) {
this.ghostEquipRank.push(obj);
}
// 龙族装备评分
else if (rows[i].race == ERaceType.DRAGON) {
this.dragonEquipRank.push(obj);
}
}
// 人族装备评分排序
this.humenEquipRank.sort((a: any, b: any) => {
return b.score - a.score;
});
// 保留前50名玩家数据
this.humenEquipRank.splice(50, this.humenEquipRank.length);
// 仙族装备评分排序
this.skyEquipRank.sort((a: any, b: any) => {
return b.score - a.score;
});
// 保留前50名玩家数据
this.skyEquipRank.splice(50, this.skyEquipRank.length);
// 鬼族装备评分排序
this.ghostEquipRank.sort((a: any, b: any) => {
return b.score - a.score;
});
// 保留前50名玩家数据
this.ghostEquipRank.splice(50, this.ghostEquipRank.length);
// 魔族装备评分排序
this.demonEquipRank.sort((a: any, b: any) => {
return b.score - a.score;
});
// 保留前50名玩家数据
this.demonEquipRank.splice(50, this.demonEquipRank.length);
// 龙族装备评分排序
this.dragonEquipRank.sort((a: any, b: any) => {
return b.score - a.score;
});
// 保留前50名玩家数据
this.dragonEquipRank.splice(50, this.dragonEquipRank.length);
Launch.shared.complete("装备评价榜");
});
}
FindAndDelete(roleId: any, vecData: any) {
for (let nIndex = 0; nIndex < vecData.length; nIndex++) {
if (vecData[nIndex].roleId != roleId)
continue;
vecData.splice(nIndex, 1);
break;
}
}
initBangRank() {
let list = BangMgr.shared.bangList;
let tmplist = [];
for (const bangid in list) {
if (list.hasOwnProperty(bangid)) {
const bang = list[bangid];
tmplist.push({
bangid: bang.id,
name: bang.name,
num: bang.rolelist.length,
mastername: bang.mastername,
})
}
}
tmplist.sort((a, b) => {
return b.num - a.num;
});
for (let info of tmplist) {
this.vecBang.push(info);
if (this.vecBang.length >= 20) {
break;
}
};
}
// 等级排行-练功狂人
getLevelRank() {
let list = [];
for (let i = 0; i < this.vecLevel.length; i++) {
const levelinfo = this.vecLevel[i];
list.push([
levelinfo.roleId,
levelinfo.strName,
GameUtil.getReliveText(levelinfo.nRelive, levelinfo.nLevel),
levelinfo.nMoney,
levelinfo.nRelive,
levelinfo.nLevel,
ChargeSum.shared.getPlayerChargeSum(levelinfo.roleId)
])
}
return SKDataUtil.unique(list);
}
// 富豪排行
getMoneyRank() {
let list = [];
for (let i = 0; i < this.vecMoney.length; i++) {
const moneyinfo = this.vecMoney[i];
list.push([
moneyinfo.roleId,
moneyinfo.strName,
GameUtil.getReliveText(moneyinfo.nRelive, moneyinfo.nLevel),
moneyinfo.nMoney,
moneyinfo.nRelive,
moneyinfo.nLevel,
ChargeSum.shared.getPlayerChargeSum(moneyinfo.roleId)
])
}
return SKDataUtil.unique(list);
}
// 帮派排行
getBangRank() {
let list = [];
for (let i = 0; i < this.vecBang.length; i++) {
const banginfo = this.vecBang[i];
list.push([
banginfo.bangid,
banginfo.name,
banginfo.mastername,
banginfo.num,
0,
0,
0
])
}
return SKDataUtil.unique(list);
}
// 水陆战神
getShuiluRank() {
let list = [];
for (let i = 0; i < this.shuiLuRank.length; i++) {
const shuiluinfo = this.shuiLuRank[i];
list.push([
shuiluinfo.roleid,
shuiluinfo.name,
shuiluinfo.wtime,
shuiluinfo.score,
shuiluinfo.relive,
shuiluinfo.level,
ChargeSum.shared.getPlayerChargeSum(shuiluinfo.roleid)
])
}
return SKDataUtil.unique(list);
}
// 红名榜
getMurderRank() {
let list = [];
for (let i = 0; i < this.murderRank.length; i++) {
const info = this.murderRank[i];
list.push([
info.roleId,
info.name,
GameUtil.getReliveText(info.relive, info.level),
GameUtil.race[info.race] + "族",
info.count,
])
}
return SKDataUtil.unique(list);
}
// 牢房数据
getDaysPrisoner() {
let list = [];
for (let i = 0; i < this.daysPrisoner.length; i++) {
const info = this.daysPrisoner[i];
list.push([
info.roleId,
info.name,
GameUtil.getReliveText(info.relive, info.level),
GameUtil.race[info.race] + "族",
Math.ceil(info.shane / 4)
])
}
return SKDataUtil.unique(list);
}
//竞技场
getJingJiRank() {
let list = [];
for (let index = 0; index < this.jingjilist.length; index++) {
let jingjiinfo = this.jingjilist[index];
list.push([
jingjiinfo.roleId,
jingjiinfo.resid,
jingjiinfo.name,
jingjiinfo.count,
jingjiinfo.jpoint,
jingjiinfo.relive,
jingjiinfo.level,
jingjiinfo.ranking,
jingjiinfo.baseSource,
])
}
list.sort((a: any, b: any) => {
return a[7] - b[7];
});
return SKDataUtil.unique(list);
}
//装备评价榜
getEquipRank(data: any) {
let list: any = [];
if (data.type == ERaceType.UNKNOW) {
// 人族
Array.prototype.push.apply(list, this.humenEquipRank);
// 仙族
Array.prototype.push.apply(list, this.skyEquipRank);
// 魔族
Array.prototype.push.apply(list, this.demonEquipRank);
// 鬼族
Array.prototype.push.apply(list, this.ghostEquipRank);
// 龙族
Array.prototype.push.apply(list, this.dragonEquipRank);
// 进行排序
list.sort((a: any, b: any) => {
return b.score - a.score;
});
// 保留前50名玩家数据
list.splice(50, list.length);
let arr: any = [];
for (let i = 0; i < list.length; i++) {
const info = list[i];
arr.push([
info.name,
GameUtil.getRoleRaceText(info.race, info.sex),
info.score,
info.roleId,
])
}
return SKDataUtil.unique(arr);
}
// 人族
else if (data.type == ERaceType.HUMEN) {
for (let i = 0; i < this.humenEquipRank.length; i++) {
const info = this.humenEquipRank[i];
list.push([
info.name,
GameUtil.getReliveText(info.relive, info.level),
info.score,
info.roleId,
])
}
return SKDataUtil.unique(list);
}
// 仙族
else if (data.type == ERaceType.SKY) {
for (let i = 0; i < this.skyEquipRank.length; i++) {
const info = this.skyEquipRank[i];
list.push([
info.name,
GameUtil.getReliveText(info.relive, info.level),
info.score,
info.roleId,
])
}
return SKDataUtil.unique(list);
}
// 魔族
else if (data.type == ERaceType.DEMON) {
for (let i = 0; i < this.demonEquipRank.length; i++) {
const info = this.demonEquipRank[i];
list.push([
info.name,
GameUtil.getReliveText(info.relive, info.level),
info.score,
info.roleId,
])
}
return SKDataUtil.unique(list);
}
// 鬼族
else if (data.type == ERaceType.GHOST) {
for (let i = 0; i < this.ghostEquipRank.length; i++) {
const info = this.ghostEquipRank[i];
list.push([
info.name,
GameUtil.getReliveText(info.relive, info.level),
info.score,
info.roleId,
])
}
return SKDataUtil.unique(list);
}
// 龙族
else if (data.type == ERaceType.DRAGON) {
for (let i = 0; i < this.dragonEquipRank.length; i++) {
const info = this.dragonEquipRank[i];
list.push([
info.name,
GameUtil.getReliveText(info.relive, info.level),
info.score,
info.roleId,
])
}
return SKDataUtil.unique(list);
}
}
getEquipRank2(data: any) {
let list = []
if (data.type == EEquipIndex.WEAPONS) {
for (let i = 0; i < this.weaponRank.length; i++) {
const info = this.weaponRank[i];
list.push([
info.name,
info.equip_name,
info.score,
info.roleId,
])
}
return SKDataUtil.unique(list);
}
else if (data.type == EEquipIndex.CLOTHES) {
for (let i = 0; i < this.clothesRank.length; i++) {
const info = this.clothesRank[i];
list.push([
info.name,
info.equip_name,
info.score,
info.roleId,
])
}
return SKDataUtil.unique(list);
}
else if (data.type == EEquipIndex.HELMET) {
for (let i = 0; i < this.helmetRank.length; i++) {
const info = this.helmetRank[i];
list.push([
info.name,
info.equip_name,
info.score,
info.roleId,
])
}
return SKDataUtil.unique(list);
}
else if (data.type == EEquipIndex.SHOES) {
for (let i = 0; i < this.shoesRank.length; i++) {
const info = this.shoesRank[i];
list.push([
info.name,
info.equip_name,
info.score,
info.roleId,
])
}
return SKDataUtil.unique(list);
}
else if (data.type == EEquipIndex.NECKLACE) {
for (let i = 0; i < this.nicklaceRank.length; i++) {
const info = this.nicklaceRank[i];
list.push([
info.name,
info.equip_name,
info.score,
info.roleId,
])
}
return SKDataUtil.unique(list);
}
else if (data.type == EEquipIndex.CAPE) {
for (let i = 0; i < this.capeRank.length; i++) {
const info = this.capeRank[i];
list.push([
info.name,
info.equip_name,
info.score,
info.roleId,
])
}
return SKDataUtil.unique(list);
}
else if (data.type == EEquipIndex.PENDANT) {
for (let i = 0; i < this.pendantRank.length; i++) {
const info = this.pendantRank[i];
list.push([
info.name,
info.equip_name,
info.score,
info.roleId,
])
}
return SKDataUtil.unique(list);
}
else if (data.type == EEquipIndex.BELT) {
for (let i = 0; i < this.beltRank.length; i++) {
const info = this.beltRank[i];
list.push([
info.name,
info.equip_name,
info.score,
info.roleId,
])
}
return SKDataUtil.unique(list);
}
else if (data.type == EEquipIndex.RING) {
for (let i = 0; i < this.ringRank.length; i++) {
const info = this.ringRank[i];
list.push([
info.name,
info.equip_name,
info.score,
info.roleId,
])
}
return SKDataUtil.unique(list);
}
}
CheckAndInsertLevelPaihang(roleId: any, strName: any, nRelive: any, nLevel: any, nMoney: any) {
this.FindAndDelete(roleId, this.vecLevel);
for (let nIndex = 0; nIndex < this.vecLevel.length; nIndex++) {
if (nLevel > this.vecLevel[nIndex].nLevel && nRelive >= this.vecLevel[nIndex].nRelive) {
this.vecLevel.splice(nIndex, 0, { roleId: roleId, strName: strName, nRelive: nRelive, nLevel: nLevel, nMoney: nMoney });
break;
}
}
let nLen = this.vecLevel.length;
if (nLen < 20) {
this.vecLevel.splice(nLen, 0, { roleId: roleId, strName: strName, nRelive: nRelive, nLevel: nLevel, nMoney: nMoney });
}
this.vecLevel.splice(20);
}
CheckAndInsertMoneyPaihang(roleId: any, strName: any, nRelive: any, nLevel: any, nMoney: any) {
this.FindAndDelete(roleId, this.vecMoney);
for (let nIndex = 0; nIndex < this.vecMoney.length; nIndex++) {
if (nMoney > this.vecMoney[nIndex].nMoney) {
this.vecMoney.splice(nIndex, 0, { roleId: roleId, strName: strName, nRelive: nRelive, nLevel: nLevel, nMoney: nMoney });
break;
}
}
this.vecMoney.splice(20);
}
//更新兵器排行榜
updateEquipRank(roleId: number, sex: number, name: string, eindex: number, level: number, score: number, relive: number, equip_name: string) {
if(eindex == EEquipIndex.WEAPONS) {
this.FindAndDelete(roleId, this.weaponRank);
this.weaponRank.push({ roleId: roleId, sex: sex, name: name, level: level, score: score, relive: relive, equip_name:equip_name });
for (let index = 0; index < this.weaponRank.length; index++) {
if (score > this.weaponRank[index].score) {
this.weaponRank.splice(index, 0, { roleId: roleId, sex: sex, name: name, level: level, score: score, relive: relive , equip_name:equip_name });
break;
}
}
this.weaponRank.splice(50);
}else if(eindex == EEquipIndex.NECKLACE) {
this.FindAndDelete(roleId, this.nicklaceRank);
this.nicklaceRank.push({ roleId: roleId, sex: sex, name: name, level: level, score: score, relive: relive , equip_name:equip_name });
for (let index = 0; index < this.nicklaceRank.length; index++) {
if (score > this.nicklaceRank[index].score) {
this.nicklaceRank.splice(index, 0, { roleId: roleId, sex: sex, name: name, level: level, score: score, relive: relive, equip_name:equip_name });
break;
}
}
this.nicklaceRank.splice(50);
}else if(eindex == EEquipIndex.CLOTHES) {
this.FindAndDelete(roleId, this.clothesRank);
this.clothesRank.push({ roleId: roleId, sex: sex, name: name, level: level, score: score, relive: relive, equip_name:equip_name });
for (let index = 0; index < this.clothesRank.length; index++) {
if (score > this.clothesRank[index].score) {
this.clothesRank.splice(index, 0, { roleId: roleId, sex: sex, name: name, level: level, score: score, relive: relive , equip_name:equip_name });
break;
}
}
this.clothesRank.splice(50);
}else if(eindex == EEquipIndex.HELMET) {
this.FindAndDelete(roleId, this.helmetRank);
this.helmetRank.push({ roleId: roleId, sex: sex, name: name, level: level, score: score, relive: relive , equip_name:equip_name });
for (let index = 0; index < this.helmetRank.length; index++) {
if (score > this.helmetRank[index].score) {
this.helmetRank.splice(index, 0, { roleId: roleId, sex: sex, name: name, level: level, score: score, relive: relive , equip_name:equip_name });
break;
}
}
this.helmetRank.splice(50);
}else if(eindex == EEquipIndex.SHOES) {
this.FindAndDelete(roleId, this.shoesRank);
this.shoesRank.push({ roleId: roleId, sex: sex, name: name, level: level, score: score, relive: relive , equip_name:equip_name });
for (let index = 0; index < this.shoesRank.length; index++) {
if (score > this.shoesRank[index].score) {
this.shoesRank.splice(index, 0, { roleId: roleId, sex: sex, name: name, level: level, score: score, relive: relive , equip_name:equip_name });
break;
}
}
this.shoesRank.splice(50);
}else if(eindex == EEquipIndex.CAPE) {
this.FindAndDelete(roleId, this.capeRank);
this.capeRank.push({ roleId: roleId, sex: sex, name: name, level: level, score: score, relive: relive, equip_name:equip_name });
for (let index = 0; index < this.capeRank.length; index++) {
if (score > this.capeRank[index].score) {
this.capeRank.splice(index, 0, { roleId: roleId, sex: sex, name: name, level: level, score: score, relive: relive , equip_name:equip_name });
break;
}
}
this.capeRank.splice(50);
}else if(eindex == EEquipIndex.PENDANT) {
this.FindAndDelete(roleId, this.pendantRank);
this.pendantRank.push({ roleId: roleId, sex: sex, name: name, level: level, score: score, relive: relive , equip_name:equip_name });
for (let index = 0; index < this.pendantRank.length; index++) {
if (score > this.pendantRank[index].score) {
this.pendantRank.splice(index, 0, { roleId: roleId, sex: sex, name: name, level: level, score: score, relive: relive , equip_name:equip_name });
break;
}
}
this.pendantRank.splice(50);
}else if(eindex == EEquipIndex.BELT) {
this.FindAndDelete(roleId, this.beltRank);
this.beltRank.push({ roleId: roleId, sex: sex, name: name, level: level, score: score, relive: relive , equip_name:equip_name });
for (let index = 0; index < this.beltRank.length; index++) {
if (score > this.beltRank[index].score) {
this.beltRank.splice(index, 0, { roleId: roleId, sex: sex, name: name, level: level, score: score, relive: relive , equip_name:equip_name });
break;
}
}
this.beltRank.splice(50);
}else if(eindex == EEquipIndex.RING_LEFT || eindex == EEquipIndex.RING_RIGHT) {
this.FindAndDelete(roleId, this.ringRank);
this.ringRank.push({ roleId: roleId, sex: sex, name: name, level: level, score: score, relive: relive , equip_name:equip_name });
for (let index = 0; index < this.ringRank.length; index++) {
if (score > this.ringRank[index].score) {
this.ringRank.splice(index, 0, { roleId: roleId, sex: sex, name: name, level: level, score: score, relive: relive , equip_name:equip_name });
break;
}
}
this.ringRank.splice(50);
}
}
// 更新装备评分排行
updateEquipRankData(roleId: number, sex: number, name: string, race: number, level: number, score: number, relive: number) {
// 人族
if (race == ERaceType.HUMEN) {
this.FindAndDelete(roleId, this.humenEquipRank);
this.humenEquipRank.push({ roleId: roleId, sex: sex, name: name, race: race, level: level, score: score, relive: relive });
for (let index = 0; index < this.humenEquipRank.length; index++) {
if (score > this.humenEquipRank[index].score) {
this.humenEquipRank.splice(index, 0, { roleId: roleId, sex: sex, name: name, race: race, level: level, score: score, relive: relive });
break;
}
}
this.humenEquipRank.splice(50);
}
// 仙族
else if (race == ERaceType.SKY) {
this.FindAndDelete(roleId, this.skyEquipRank);
this.skyEquipRank.push({ roleId: roleId, sex: sex, name: name, race: race, level: level, score: score, relive: relive });
for (let index = 0; index < this.skyEquipRank.length; index++) {
if (score > this.skyEquipRank[index].score) {
this.skyEquipRank.splice(index, 0, { roleId: roleId, sex: sex, name: name, race: race, level: level, score: score, relive: relive });
break;
}
}
this.skyEquipRank.splice(50);
}
// 魔族
else if (race == ERaceType.DEMON) {
this.FindAndDelete(roleId, this.demonEquipRank);
this.demonEquipRank.push({ roleId: roleId, sex: sex, name: name, race: race, level: level, score: score, relive: relive });
for (let index = 0; index < this.demonEquipRank.length; index++) {
if (score > this.demonEquipRank[index].score) {
this.demonEquipRank.splice(index, 0, { roleId: roleId, sex: sex, name: name, race: race, level: level, score: score, relive: relive });
break;
}
}
this.demonEquipRank.splice(50);
}
// 鬼族
else if (race == ERaceType.GHOST) {
this.FindAndDelete(roleId, this.ghostEquipRank);
this.ghostEquipRank.push({ roleId: roleId, sex: sex, name: name, race: race, level: level, score: score, relive: relive });
for (let index = 0; index < this.ghostEquipRank.length; index++) {
if (score > this.ghostEquipRank[index].score) {
this.ghostEquipRank.splice(index, 0, { roleId: roleId, sex: sex, name: name, race: race, level: level, score: score, relive: relive });
break;
}
}
this.ghostEquipRank.splice(50);
}
// 龙族
else if (race == ERaceType.DRAGON) {
this.FindAndDelete(roleId, this.dragonEquipRank);
this.dragonEquipRank.push({ roleId: roleId, sex: sex, name: name, race: race, level: level, score: score, relive: relive });
for (let index = 0; index < this.dragonEquipRank.length; index++) {
if (score > this.dragonEquipRank[index].score) {
this.dragonEquipRank.splice(index, 0, { roleId: roleId, sex: sex, name: name, race: race, level: level, score: score, relive: relive });
break;
}
}
this.dragonEquipRank.splice(50);
}
}
// 更新红名排行
updateMurderRankData(roleId: number, name: string, race: number, level: number, relive: number) {
this.murderRank.some((item: any) => {
if (item.roleId == roleId) {
item.count += 1;
return;
} else {
this.murderRank.push({ roleId: roleId, name: name, relive: relive, level: level, race: race, count: 1 })
return;
}
});
// 红名榜排序
if (this.murderRank.length > 2) {
this.murderRank.sort((a: any, b: any) => {
return b.count - a.count;
});
}
// 保留前20名
this.murderRank.splice(20);
}
// 更新红名排行
updateMurderRankDataInfo(roleId: number, name: string, race: number, level: number, relive: number) {
this.murderRank.some((item: any) => {
if (item.roleId == roleId) {
item.name = name;
if (race != 0) {
item.race = race;
}
item.level = level;
item.relive = relive;
return;
}
});
}
// 更新天牢犯人数据
updateDaysPrisonerData(roleId: number, name: string, race: number, level: number, relive: number, shane: number) {
if (this.daysPrisoner.length < 1 && shane > 0) {
this.daysPrisoner.push({
roleId: roleId,
name: name,
relive: relive,
level: level,
race: race,
shane: shane
});
} else {
this.daysPrisoner.some((item: any) => {
if (shane <= 0) {
if (item.roleId == roleId) {
let index = this.daysPrisoner.indexOf(item);
if (index > -1) {
this.daysPrisoner.splice(index, 1);
return;
}
}
} else {
if (item.roleId == roleId) {
item.name = name;
if (race != 0) {
item.race = race;
}
item.level = level;
item.relive = relive;
item.shane = shane;
return;
}
}
});
}
}
onNewDay() {
this.initBangRank()
}
ShuiLuRankUpdate(roleid: any, name: any, wtime: any, jifen: any) {
let find = false;
for (let i = 0; i < this.shuiLuRank.length; i++) {
const item = this.shuiLuRank[i];
if (item.roleid == roleid) {
find = true;
item.wtime = wtime;
item.name = name;
item.score = jifen;
break;
}
}
if (!find) {
this.shuiLuRank.push({
roleid: roleid,
name: name,
wtime: wtime,
score: jifen,
});
}
this.shuiLuRank.sort((a, b) => {
return b.score - a.score;
});
this.shuiLuRank.splice(20);
}
getJingjiRank(roleid: any) {
for (let i = 0; i < this.jingjilist.length; i++) {
let jrole = this.jingjilist[i];
if (jrole.roleId == roleid) {
return jrole;
}
}
}
topList(vecData: any, num: number) {
let frist = vecData.slice(0, 5);
let sData = vecData.slice(0);
let i = vecData.length;
if (i >= 5) {
let min = i - num;
let item: any;
let index: number;
while (i-- > min) {
index = Math.floor((i + 1) * Math.random());
item = sData[index];
sData[index] = sData[i];
sData[i] = item;
}
let last = sData.slice(min);
last.sort((a: any, b: any) => {
return a[7] - b[7];
});
return frist.concat(last);
} else {
return frist;
}
}
JingJiRankUpdate(roleid: any, troleid: any) {
let bro = PlayerMgr.shared.getPlayerByRoleId(roleid);
let tro = PlayerMgr.shared.getPlayerByRoleId(troleid);
let brole = this.getJingjiRank(roleid);
for (let i = 0; i < this.jingjilist.length; i++) {
let item = this.jingjilist[i];
if (item.roleId == troleid) {
//改变排名
if (item.ranking < brole.ranking) {
const emp = item.ranking;
item.ranking = brole.ranking;
tro.arena.ranking = item.ranking;
brole.ranking = emp;
bro.arena.ranking = brole.ranking;
}
break;
}
}
this.jingjilist.sort((a, b) => {
return a.ranking - b.ranking;
});
let front = this.jingjilist;
let arena_one: any = front.slice(0, 4);
let arena_two: any = [];
let place = bro.arena.ranking;
if (this.jingjilist.length > 10) {
arena_two = front.slice(place - 5, place);
} else {
arena_two = front.slice(5, front.length);
}
Array.prototype.push.apply(arena_one, arena_two);
bro.send('s2c_paihang', {
rankKind: 4,
vecRow: SKDataUtil.toJson(arena_one, "{}"),//排行榜集合
brole: "",
});
}
}