1280 lines
51 KiB
TypeScript
1280 lines
51 KiB
TypeScript
|
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: "",
|
||
|
});
|
||
|
}
|
||
|
}
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|