import GameConf from "../../conf/GameConf"; import SKDataUtil from "../gear/SKDataUtil"; import SKLogger from "../gear/SKLogger"; import AIMgr from "../core/AIMgr"; import GameUtil from "../core/GameUtil"; import MapMgr from "../core/MapMgr"; import Player from "../object/Player"; import {ERaceType, EAttrTypeL2} from "../role/EEnum"; import PetMgr from "../core/PetMgr"; import ExpUtil from "../core/ExpUtil"; export default class RoleUtil { static checkRace(race: number, resid: number): number { let conf = GameUtil.game_conf.role; let data = conf[resid]; if (data) { if (data.race != race) { let result = data.race; SKLogger.debug(`修正1:种族[${race}->${result}]`); return result; } } let result = SKDataUtil.clamp(race, ERaceType.HUMEN, ERaceType.DRAGON); if (result != result) { SKLogger.debug(`修正2:种族[${race}->${result}]`); } return result; } static checkSex(sex: number, resid: number): number { let conf = GameUtil.game_conf.role; let data = conf[resid]; if (data) { if (data.sex != sex) { let result = data.sex; SKLogger.debug(`修正1:性别[${sex}->${result}]`); return result; } } let result = SKDataUtil.clamp(sex, 1, 2); if (result != sex) { SKLogger.debug(`修正2:性别[${sex}->${result}]`); } return result; } // 模拟机器人数据 static randomRole(player: Player) { let mapList = [1000, 1001, 1002, 1003, 1004, 1005, 1007, 1008, 1009, 1010, 1011, 1012, 1013, 1014, 1015, 1016, 1202, 1206, 1207, 1209, 1212, 2000, 2001, 2002, 4002]; player.name = this.getRandomName(); let conf = GameUtil.game_conf.role; let list = []; for (let key in conf) { let item = conf[key]; if (item.relive < 1) { list.push(item); } } let data = SKDataUtil.randomList(list); player.sex = SKDataUtil.random(1, 2); player.race = data.race; player.resid = data.res_id; player.relive = data.relive; player.level = SKDataUtil.random(50, 100); let index = Math.floor((Math.random() * mapList.length)) player.mapid = mapList[index]; let mapModel = MapMgr.shared.getMapById(player.mapid); let pos = mapModel.getARandomPos(); player.x = pos.x; player.y = pos.y; player.loaded = true; let titles: any = { onload: false, titles: [{ type: 0, titlei: 30, value: "", onload: true }] }; player.setTitles(titles); // 离线状态 player.offline = true; let rows = [ { role_id: player.roleid, position: 1, name: "", level: 1, exp: 0 }, { role_id: player.roleid, position: 2, name: "", level: 1, exp: 0 }, { role_id: player.roleid, position: 3, name: "", level: 1, exp: 0 }, { role_id: player.roleid, position: 4, name: "", level: 1, exp: 0 }, ]; player.horseList.setDB(rows); if (GameConf.horseEnabled) { player.horseList.horseIndex = SKDataUtil.random(0, 4); } else { player.horseList.horseIndex = 0; } player.dir = SKDataUtil.random(1, 4); player.teamid = 0; player.ai = new AIMgr(player); player.ai_flag = 1; } // 数据库创建机器人 static createDataRobot(player: Player, data: any){ player.name = data.name; player.sex = data.sex; player.race = data.race; player.resid = data.res_id; player.relive = data.relive; player.level = data.data; player.mapid = data.mapid; let mapModel = MapMgr.shared.getMapById(player.mapid); let pos = mapModel.getARandomPos(); player.x = pos.x; player.y = pos.y; player.loaded = true; let titles: any = { onload: false, titles: [{ type: 0, titlei: 30, value: "", onload: true }] }; player.setTitles(titles); // 离线状态 player.offline = true; let rows = [ { role_id: player.roleid, position: 1, name: "", level: 1, exp: 0 }, { role_id: player.roleid, position: 2, name: "", level: 1, exp: 0 }, { role_id: player.roleid, position: 3, name: "", level: 1, exp: 0 }, { role_id: player.roleid, position: 4, name: "", level: 1, exp: 0 }, ]; player.bangid = data.bangid; player.horseList.setDB(rows); if (GameConf.horseEnabled) { player.horseList.horseIndex = SKDataUtil.random(0, 4); } else { player.horseList.horseIndex = 0; } player.dir = SKDataUtil.random(1, 4); player.teamid = 0; player.ai = new AIMgr(player); player.ai_flag = 1; } static getRandomName(): string { let v1 = ["思", "烟", "冰", "琴", "夜", "蓝", "痴", "梦", "依", "丹", "小", "柳", "香", "冬", "绿", "萍", "向", "菱", "映", "寒", "阳", "含", "曼", "霜", "春", "白", "南", "醉", "丝", "之", "新", "真", "雨", "露", "天", "云", "寄", "芙", "如", "筠", "容", "若", "涵", "荷", "风", "亦", "儿", "采", "雪", "谷", "巧", "凌", "山", "安", "蕾", "从", "芷", "芹", "绮", "雅", "柔", "飞", "锦", "程", "修", "杰", "烨", "伟", "尔", "曼", "立", "辉", "致", "远", "天", "思", "友", "绿", "聪", "健", "洁", "访", "琴", "初", "彤", "谷", "雪", "平", "灵", "源", "智", "华", "振", "家", "越", "彬", "乞", "子", "轩", "宸", "晋", "鹏", "觅", "松", "海", "亦", "戾", "嵩", "邑", "瑛", "鸿", "卿", "裘", "契", "涛", "疾", "驳", "凛", "逊", "鹰", "威", "紊", "阁", "哈"]; let name = v1[Math.floor(Math.random() * v1.length)]; name += v1[Math.floor(Math.random() * v1.length)]; if (Math.random() > 0.1) { name += v1[Math.floor(Math.random() * v1.length)]; } if (Math.random() > 0.6) { name += v1[Math.floor(Math.random() * v1.length)]; } return name; }; }