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: "", }); } }