var Utils = require("Utils"); var gameConfig = require("gameConfig"); var NetManage = require("NetManage"); var SDKManage = require("SDKManage"); var Main = require("Main"); var jcshare = require("jcfw").share; var playerData = function () { this.init = function () { this.itemtype = { hero: 3, heroskin: 4, }; this.node_id = 1; this.worldtime = 0; this.skinmap = {}; this.gold = 0; this.diamond = 0; this.hero_id = 0; this.head_id = "0"; this.head_frame = 0; this.level = 1; this.exp = 0; this.max_exp = 100; this.name = "guest"; this.head_list = []; this.head_frame_list = []; this.goods_list = []; this.hero_list = []; this.skin_list = []; this.item_list = []; this.talent_list = []; this.season = {}; this.rank = 1; this.getopenhero(); }; this.property = function (obj) { if (obj.user_info) { this.refreshInfo(obj.user_info); if ( obj.user_info.head_id || obj.user_info.name || obj.user_info.head_frame ) { cc.chatMgr.sendmsg("CMUpdateUserInfo", { nickname: this.name, avatar_url: this.head_id, head: Number(this.head_frame), }); } cc.Notifier.emit("refreshBaseInfo"); } if (obj.container_chg) { for (var i = 0; i < obj.container_chg.length; i++) { var bd = obj.container_chg[i]; if (bd == "bag") { NetManage.getItemList(); } else if (bd == "hero") { NetManage.getHeroList(); } else if (bd == "heroSkin") { NetManage.getSkinList(); } } } }; this.refreshInfo = function (obj) { for (var k in obj) { this[k] = obj[k]; } }; this.getRankList = function (obj) { this.ranking_list = obj.ranking_list; }; this.getSeasonInfo = function (obj) { this.season = obj.info; cc.Notifier.emit("ongetSeasonInfo"); }; this.getDiscountList = function (obj) { this.this.goods_list = obj.goods_list; }; this.getHeroList = function (obj) { this.hero_list = obj.hero_list; cc.Notifier.emit("ongetHeroList"); }; this.getSkinList = function (obj) { this.skin_list = obj.skin_list; cc.Notifier.emit("ongetSkinList"); }; this.getItemList = function (obj) { this.item_list = obj.item_list; cc.Notifier.emit("ongetItemList"); }; this.gettalentList = function (obj) { this.talent_list = obj.talent_list; cc.Notifier.emit("ontalent_list"); }; this.getDrop = function (dropid) { var cfg = gameConfig.dropConfig[dropid]; if (!cfg.itemdata) { cfg.itemdata = []; var itemarr = (cfg.item_id + "").split("|"); var numarr = (cfg.num + "").split("|"); for (var i = 0; i < itemarr.length; i++) { cfg.itemdata.push({ id: itemarr[i], num: numarr[i], }); } } return cfg.itemdata; }; this.getItemsByType = function (type) { var arr = []; for (var i = 0; i < this.item_list.length; i++) { if ( gameConfig.all_ItemConfig[this.item_list[i].item_id].tab == type || type == 0 ) { arr.push(this.item_list[i]); } } return arr; }; this.getItemCount = function (id) { if (id == 10001) { return this.gold; } else if (id == 10002) { return this.diamond; } else { for (var i = 0; i < this.item_list.length; i++) { if (this.item_list[i].item_id == id) { return this.item_list[i].item_num; } } } return 0; }; this.checkItemEnough = function (id, v) { v = Number(v); id = Number(id); if (id == 10001) { return this.gold >= v; } else if (id == 10002) { return this.diamond >= v; } else { for (var i = 0; i < this.item_list.length; i++) { if (this.item_list[i].item_id == id) { return this.item_list[i].item_num >= v; } } } return false; }; this.getLearnedTalent = function (id) { for (var i = 0; i < this.talent_list.length; i++) { if (this.talent_list[i].talent_id == id) { return this.talent_list[i]; } } if (this.level >= this.xinpian[id][0].need_user_level) { return { talent_id: id, talent_lv: 1, }; } return null; }; this.getDiscount = function (id) { for (var i = this.goods_list.length - 1; i >= 0; i--) { if (this.goods_list[i].item_id == id) { return [ this.goods_list[i].gold_discount, this.goods_list[i].diamond_discount, ]; } } return [100, 100]; }; this.getshowhero = function () { return this.getheroSkinbyId(this.hero_id, 0); }; this.getskinarrbyId = function (id) { return this.skinmap[id].skins; }; this.getheroSkinbyId = function (hid, idx) { var skinArr = this.skinmap[hid].skins; var skinid = skinArr[idx]; var skincfg = gameConfig.all_ItemConfig[skinid]; var skinres = skincfg.skinid; return skinres; }; this.getheroSkinidbyId = function (hid, idx) { var skinArr = this.skinmap[hid].skins; var skinid = skinArr[idx]; return Number(skinid); }; this.checkhasgetskin = function (sid) { if (gameConfig.all_ItemConfig[sid].isdefaultskin) { return true; } for (var i = this.skin_list.length - 1; i >= 0; i--) { if (this.skin_list[i].skin_id == sid) { return true; } } return false; }; this.checkhasgethero = function (hid) { for (var i = this.hero_list.length - 1; i >= 0; i--) { if (this.hero_list[i].hero_id == hid) { return true; } } return false; }; this.getopenhero = function () { if (!this.openherolist) { this.openherolist = []; for (var k in gameConfig.all_ItemConfig) { var cfg = gameConfig.all_ItemConfig[k]; if (cfg.type == this.itemtype.hero && cfg.getway) { this.openherolist.push(cfg.id); } if (cfg.type == this.itemtype.heroskin && cfg.getway) { if (!this.skinmap[cfg.playerid]) { this.skinmap[cfg.playerid] = { skins: [], }; } this.skinmap[cfg.playerid].skins.push(cfg.id); if (cfg.isdefaultskin) { this.skinmap[cfg.playerid].defaultskin = cfg.id; } } } } for (var k in this.skinmap) { this.skinmap[k].skins = this.skinmap[k].skins.sort((a, b) => { var c = 0; if (a == this.skinmap[k].defaultskin) { c = -99999; } if (b == this.skinmap[k].defaultskin) { c = 99999; } return a - b + c; }); } return this.openherolist; }; this.getheroskill = function (hid) { var cfg = gameConfig.playerConfig[hid]; var skill1 = Number(cfg.skill1list.split("|")[0]); var skill2 = Number(cfg.skill2list.split("|")[0]); var skill3 = cfg.skill3list; return [skill1, skill2, skill3]; }; this.changeHero = function (hid) { this.nowheroid = hid; this.nowherocfg = gameConfig.playerConfig[hid]; this.skinArr = (this.nowherocfg.skinlist + "").split("|"); this.skinid = this.skinmap[hid].defaultskin; //this.skinArr[0] this.skill1 = Number(this.nowherocfg.skill1list.split("|")[0]); this.skill2 = Number(this.nowherocfg.skill2list.split("|")[0]); this.skill3 = this.nowherocfg.skill3list; this.changeSkin(this.skinid); }; this.changeSkin = function (v) { this.skinid = v; this.skincfg = gameConfig.all_ItemConfig[v]; this.skinres = this.skincfg.skinid; }; this.getTime = function (obj) { var date = new Date(); this.sertime = obj.time - date.getTime() / 1000; this.sertimestr = obj.time; }; this.getNodeID = function (obj) { if (obj.errcode == 0) { this.node_id = obj.node_id; cc.SDKManage.NodeId = obj.node_id; console.log("获得NodeID====", cc.SDKManage.NodeId); } }; this.dirtyWordCheck = function (obj) { cc.Notifier.emit("dirtywordcheck", obj); }; this.getbattleskilllist = function () { return [ { key: this.skill1, value: 0, }, { key: this.skill2, value: 0, }, { key: this.skill3, value: 0, }, ]; }; this.getbattleopt = function () { return { account_id: SDKManage.account_id, //账号id account_id player_count: 4, //玩家数(单人时为1) energy_shield: 0, //能量护盾 baseskin: [this.skinres, 0, 0, 0], team_uuid: "", //队伍唯一id (没组队时为空字符串) team_mode: 1, //队伍模式 0:单人 1:多人 auto_fill: true, //是否自动填充玩家 // team_members: _teamMembers, weapons: [], first_game: false, skins: [], prepare_items: [], // 12809 prepare_items2: [], atk_add: 0, battlecount: 1, pre_settlement_info: "", emojis: ["1", "2", "3", "4", "5", "6"], show_team_ui: 1, //offline: true, newbiemode: false, mapid: 1008, sex: 2, skill_list: [ { key: this.skill1, value: 0, }, { key: this.skill2, value: 0, }, { key: this.skill3, value: 0, }, ], hero_id: this.nowheroid, }; }; this.init2 = function () { var cfg = gameConfig.gunTalentGrow; this.xinpian = {}; for (var k in cfg) { var onecfg = cfg[k]; if (!this.xinpian[onecfg.talent_id]) { this.xinpian[onecfg.talent_id] = []; } this.xinpian[onecfg.talent_id].push(onecfg); } for (var kk in this.xinpian) { this.xinpian[kk] = this.xinpian[kk].sort((a, b) => { var aa = a.talent_lv; var bb = b.talent_lv; return aa - bb; }); } var cfg2 = gameConfig.all_ItemConfig; gameConfig.skintohero = {}; for (var k in cfg2) { var onecfg = cfg2[k]; if (onecfg.skinid) { gameConfig.skintohero[onecfg.skinid] = onecfg.playerid; } } }; this.debug = function (tp, v, v2) { if (tp == 1) { var itemcfg = gameConfig.all_ItemConfig[v]; if (itemcfg.type == this.itemtype.hero) { if (!this.checkhasgethero(v)) { this.hero_list.push({ hero_id: v, }); } } else if (itemcfg.type == this.itemtype.heroskin) { if (!this.checkhasgetskin(v)) { this.skin_list.push({ skin_id: v, }); } } cc.Notifier.emit("herochange"); } else if (tp == 2) { var hasfind = false; for (var i = 0; i < this.talent_list.length; i++) { if (this.talent_list[i].talent_id == v) { this.talent_list[i].talent_lv++; hasfind = true; } } if (!hasfind) { this.talent_list.push({ talent_id: v, talent_lv: 2, }); } cc.Notifier.emit("talent_lvup", v); } else if (tp == 3) { for (var i = this.item_list.length - 1; i >= 0; i--) { if (this.item_list[i].item_id == v) { this.item_list[i].item_num -= v2; if (this.item_list[i].item_num == 0) { this.item_list.splice(i, 1); } } if (v2) { this.nickname = v2; } } cc.Notifier.emit("refreshitem"); } else if (tp == 4) { v(); } else if (tp == 5) { this.ranking_list = { //排行榜数据 type: 0, //排行榜类型 1:积分榜 ranking_list: [ //排行榜 { ranked: 1, //排名 account_id: "1122", //账号id name: "aaa", //用户名字 head_id: 50003, //头像id head_frame: 60001, //头像框id level: 10, //等级 exp: 0, //经验 gold: 0, //金币 diamond: 0, //钻石 hero_id: 30100, //当前使用的英雄ID rank: 11, //段位 score: 220, //积分 }, { ranked: 2, //排名 account_id: "3344", //账号id name: "aaa", //用户名字 head_id: 50003, //头像id head_frame: 60001, //头像框id level: 10, //等级 exp: 0, //经验 gold: 0, //金币 diamond: 0, //钻石 hero_id: 30300, //当前使用的英雄ID rank: 11, //段位 score: 220, //积分 }, ], my_ranked: { //我的排名(如果ranked<1则表示自己未上榜) ranked: 0, //排名 account_id: "", //账号id name: "ssss", //用户名字 head_id: 0, //头像id head_frame: 0, //头像框id level: 20, //等级 exp: 0, //经验 gold: 0, //金币 diamond: 0, //钻石 hero_id: 30200, //当前使用的英雄ID rank: 12, //段位 score: 110, //积分 }, }; v(); } else if (tp == 6) { v(); } else if (tp == 7) { v({ errcode: 0, //错误码 errmsg: "", //错误描述 info: { //用户信息(详细) activate: 0, //是否已激活 account_id: "", //账号id name: "阿拉伯", //用户名字 head_id: 50003, //头像id head_frame: 60001, //头像框id level: 10, //等级 exp: 30, //经验 max_exp: 90, //经验(上限) gold: 0, //金币 diamond: 0, //钻石 hero_id: 30200, //当前使用的英雄ID current_rank: 10, //当前段位 history_best_rank: 11, //历史最高段位 history_seasons: [ //历史打过的赛季列表 { season_id: 22, //赛季 total_kills: 10, //击杀总数(个人信息) game_times: 20, //游戏场次(个人信息) win_times: 30, //胜利场次(个人信息) win_rate: 40, //胜率(个人信息,百分比数值整数部分) max_kills: 50, //最高击杀(游戏信息) avg_kills: 60, //平均击杀(游戏信息) max_damage_out: 70, //最高伤害输出(游戏信息) avg_damage_out: 80, //平均伤害输出(游戏信息) star_kills: 50, //击败(5纬图-击败, 百分比数值整数部分) star_damage: 60, //伤害(5纬图-伤害, 百分比数值整数部分) star_alive: 70, //生存(5纬图-生存, 百分比数值整数部分) star_recover: 80, //治疗(5纬图-治疗, 百分比数值整数部分) star_win: 100, //胜利(5纬图-胜利, 百分比数值整数部分) }, ], }, }); } else if (tp == 8) { var tdata = { errcode: 0, //错误码 errmsg: "", //错误描述 current_active_value: 30, //当前活跃度 max_active_value: 100, //活跃度上限 mission_list1: [ //任务列表1 { mission_id: 71001, //任务id current: 0, //任务进度-当前 target: 0, //任务进度-目标 state: 0, //任务状态 0:可领取 1:已领取 2:未完成(不可领取) show_progress: 0, //是否显示任务进度 }, { mission_id: 71003, //任务id current: 5, //任务进度-当前 target: 5, //任务进度-目标 state: 1, //任务状态 0:可领取 1:已领取 2:未完成(不可领取) show_progress: 1, //是否显示任务进度 }, { mission_id: 71006, //任务id current: 2, //任务进度-当前 target: 5, //任务进度-目标 state: 2, //任务状态 0:可领取 1:已领取 2:未完成(不可领取) show_progress: 1, //是否显示任务进度 }, { mission_id: 71006, //任务id current: 2, //任务进度-当前 target: 5, //任务进度-目标 state: 2, //任务状态 0:可领取 1:已领取 2:未完成(不可领取) show_progress: 2, //是否显示任务进度 }, { mission_id: 71006, //任务id current: 2, //任务进度-当前 target: 5, //任务进度-目标 state: 2, //任务状态 0:可领取 1:已领取 2:未完成(不可领取) show_progress: 2, //是否显示任务进度 }, ], mission_list2: [ //任务列表2 { mission_id: 71001, //任务id current: 0, //任务进度-当前 target: 0, //任务进度-目标 state: 0, //任务状态 0:可领取 1:已领取 2:未完成(不可领取) show_progress: 0, //是否显示任务进度 }, { mission_id: 71003, //任务id current: 5, //任务进度-当前 target: 5, //任务进度-目标 state: 1, //任务状态 0:可领取 1:已领取 2:未完成(不可领取) show_progress: 1, //是否显示任务进度 }, { mission_id: 71006, //任务id current: 2, //任务进度-当前 target: 5, //任务进度-目标 state: 2, //任务状态 0:可领取 1:已领取 2:未完成(不可领取) show_progress: 1, //是否显示任务进度 }, ], }; v(tdata); } else if (tp == 9) { var tdata = { errcode: 0, //错误码 errmsg: "", //错误描述 info: { //struct SeasonCard, 赛季手册信息 season_id: 5, //赛季id(客户端显示为Sxxx) card_lv: 11, //手册等级 card_exp: 10, //手册经验 card_max_exp: 100, //手册经验上限 season_begin_time: 1638951964, season_end_time: 1638951964, gift_packages: [ //礼包列表 //struct SeasonCardGiftPackage { package_id: 0, //礼包id state: 0, //0:未购买 1:已购买 price_info: { //struct PriceInfo, 价格信息 cost_list: [ //扣费方式列表 //struct CostInfo { cost_group: [ //一组扣费项目,(金币、钻石视为道具,可能有多种价格) //struct CostInfoItem { item_id: 0, //购买需要消耗的道具id item_num: 0, //购买需要消耗的道具数量 discount: 0, //折扣百分比(0-100) }, ], }, ], discount_begin_time: 0, //折扣开始时间(utc时间) discount_end_time: 0, //折扣结束时间(utc时间) }, }, ], received_level_rewards1: [ //等级解锁的奖励已领取等级列表(普通手册) 1, 2, 3, ], received_level_rewards2: [ //等级解锁的奖励已领取等级列表(精英) 1, 2, 3, 4, ], }, }; v(tdata.info); } else if (tp == 10) { v(); } }; }; var instance = new playerData(); instance.init(); instance.init2(); cc.playerData = instance; module.exports = instance;