146 lines
6.1 KiB
TypeScript
146 lines
6.1 KiB
TypeScript
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;
|
|
};
|
|
} |