530 lines
17 KiB
JavaScript
530 lines
17 KiB
JavaScript
/**
|
||
* 冰雪传奇H5
|
||
* 2022 XX信息科技有限公司
|
||
*
|
||
* @author 123456
|
||
* @wx 123456
|
||
* @qq 123456
|
||
*/
|
||
|
||
let host = window.location.hostname||'100.88.157.105';
|
||
let port = 80;
|
||
|
||
var webUrl = getHttp() + host + (port && 80 != port ? ':' + port : ''),
|
||
account = getQueryString('account'),
|
||
token = getQueryString('token'),
|
||
noLogin = !account || !token;
|
||
|
||
if (noLogin) {
|
||
setTimeout(function() {
|
||
loadBarClear();
|
||
loadBarFull();
|
||
setTimeout(function() {
|
||
window.location.href = webUrl + '/login';
|
||
}, randomRange(250, 500));
|
||
}, 1e3);
|
||
}
|
||
|
||
window['gameName'] = '夜风冰雪';
|
||
window['gameLogo'] = 'LOGO6';
|
||
|
||
// 请勿更改
|
||
window['game'] = 'YFBX';
|
||
window['pf'] = 'yfbx';
|
||
window['pfID'] = 10001;
|
||
|
||
window['userInfo'] = {
|
||
'account': account,
|
||
'token': token,
|
||
'openID': md5(account + window['game'] + window['pfID']).toUpperCase(),
|
||
'cm': 1,
|
||
'adult': 0
|
||
};
|
||
|
||
// 检测 Tampermonkey 插件
|
||
function checkTampermonkey() {
|
||
setTimeout(() => {
|
||
const TampermonkeyVars = ["unsafeWindow", "GM_info"]
|
||
if (!TampermonkeyVars.every(e => typeof window[e] == 'undefined')) {
|
||
// 如果检测到 Tampermonkey 插件,执行以下代码
|
||
alert('检测到您正在使用 Tampermonkey 插件,本网站禁止使用此类插件!');
|
||
// 可以选择阻止页面访问或其他操作
|
||
window.location.href = '/login'; // 将用户重定向到空白页
|
||
} else checkTampermonkey()
|
||
}, 5000)
|
||
}
|
||
checkTampermonkey()
|
||
|
||
// 游戏个性设置: 设备/版本/界面/NPC参数
|
||
window['device'] = 0; // 客户端设备(一般无需更改): 0=自适应, 1=PC端界面, 2=移动端界面
|
||
window['gameMode'] = 0; // 版本玩法: 0=三职业, 1=单职业(游戏内仅出现战士职业装备)
|
||
window['uiStyle'] = 1; // 血球特效: 0=默认, 1=龙头动态火焰特效
|
||
window['npcStyle'] = 1; // NPC特效: 0=默认, 1=微变版本NPC动态特效
|
||
window['specialId'] = 2; // 打金服ID
|
||
window['withdraw'] = {'sid': 1, 'type': 3, 'ratio': 10000}; // 提现
|
||
|
||
window['isShowGongGao'] = true;
|
||
window['isAutoShowGongGao'] = !getCookie('auto_show_notice') ? (setCookie('auto_show_notice', 1, 1), true) : false;
|
||
window['isMicro'] = window['pfID'];
|
||
window['selectServer'] = true;
|
||
window['fontFamily'] = 'Arial';
|
||
window['loginType'] = 1; // 登录类型 0:测试 1:正式
|
||
window['loginWay'] = 1;
|
||
|
||
window['isReport'] = 0; // 是否上报后台
|
||
window['isReportPF'] = 0; // 是否上报渠道
|
||
window['isDisablePay'] = 0; // 是否关闭充值
|
||
window['loginView'] = 'app.MainLoginView';
|
||
|
||
// 相关URL
|
||
window['webHost'] = host;
|
||
window['webUrl'] = webUrl;
|
||
window['serviceListdUrl'] = webUrl + '/server';
|
||
window['setServiceListdUrl'] = webUrl + '/server';
|
||
window['payUrl'] = webUrl + '/pay';
|
||
window['apiUrl'] = webUrl + '/api';
|
||
window['orderUrl'] = webUrl + '/api?act=order';
|
||
window['reportUrl'] = webUrl + '/api?act=report'; // 上报接口
|
||
window['errorReportUrl'] = webUrl + '/api?act=report&do=error';// 错误上报接口
|
||
window['checkUrl'] = webUrl + '/api?act=check'; // 验证URL
|
||
window['versionUrl'] = webUrl + '/api?act=version'; // 请求客户端版本
|
||
window['getActorInfoUrl'] = webUrl + '/api?act=actor';
|
||
window['roleInfoUrl'] = webUrl + '/api?act=role';
|
||
window['gongGaoUrl'] = webUrl + '/notice.txt';
|
||
|
||
// 客服信息
|
||
window['kfQQ'] = '123456';
|
||
window['kfWX'] = '123456';
|
||
window['kfQQUrl'] = 'https://127.0.0.1';
|
||
window['kfQQGroupUrl'] = 'https://127.0.0.1';
|
||
|
||
window['gameVerTxt1'] = '审批文号:新广出审[2022]007号 出版物号:ISBN 001-1-0001-0001-1 著作权人:XX信息科技有限公司';
|
||
window['gameVerTxt2'] = '出版单位:XX信息科技有限公司 运营单位:XX信息科技有限公司';
|
||
window['gameVerTxt3'] = '健康游戏忠告:抵制不良游戏,拒绝盗版游戏。注意自我保护,谨防受骗上当。适度游戏益脑,沉迷游戏伤身。合理安排时间,享受健康生活。';
|
||
|
||
window['publicRes'] = 'https://cdn-cq-res.kubbo.cn/';
|
||
var arr = ['loading_1_jpg', 'loading_1_jpg', 'mp_jzjm_png', 'mp_jzjm2_png'];
|
||
window['gameLoadImg'] = !getCookie('first_loading') ? (setCookie('first_loading', 1), arr[0]) : arr[randomRange(0, 4)];
|
||
window['version1'] = 'zjt1_png';
|
||
window['version2'] = 'zjt2_png';
|
||
window['version3'] = 'zjt3_png';
|
||
|
||
window['resVersion'] = '1';
|
||
window['thmVersion'] = '1';
|
||
window['tableVersion'] = '1.2.80';
|
||
window['mainVersion'] = '1.2.2';
|
||
|
||
window['isDebug'] = false;
|
||
var isJsDebug = false;
|
||
|
||
// 设置标题
|
||
//document.title = window['gameName'];
|
||
|
||
function reporting(type, result) {
|
||
if(noLogin) return;
|
||
|
||
if (window['isReport'] && window['reportUrl']) {
|
||
let loginType = window['loginWay'] ? 1 : 0;
|
||
let msgInfo = {
|
||
type: type,
|
||
counter: window['pfID'],
|
||
env: window['game'] + '|' + loginType,
|
||
time: Date.parse(new Date().toString()) / 1000,
|
||
result: result
|
||
};
|
||
|
||
msgInfo['data'] = {
|
||
uid: window['userInfo']['uid'],
|
||
serverAlias: window['userInfo']['server']
|
||
};
|
||
|
||
var str = JSON.stringify(msgInfo);
|
||
var xhr = new XMLHttpRequest();
|
||
xhr.onreadystatechange = function() { //服务器返回值的处理函数,此处使用匿名函数进行实现
|
||
if (xhr.readyState == 4 && xhr.status == 200) {
|
||
//
|
||
}
|
||
};
|
||
xhr.open('GET', window['reportUrl'] + '&msg=' + str, true); //提交get请求到服务器
|
||
xhr.send(null);
|
||
}
|
||
}
|
||
|
||
function onerrorFunction(error, uid) {
|
||
var xhr = new XMLHttpRequest();
|
||
xhr.open('POST', window['checkUrl'] + window.location.search, true);//提交get请求到服务器
|
||
xhr.setRequestHeader('Content-Type', 'application/json');
|
||
let params = 'pfID=' + window['pfID'] + '&uid=' + uid + '&error=' + error;
|
||
xhr.open('GET', window['errorReportUrl'] + '&' + params, true);//提交get请求到服务器
|
||
xhr.send(null);
|
||
}
|
||
|
||
window.onerror = function(message, url, line) {
|
||
let str = "Message : " + message + "\nURL : " + url + "\nLine Number : " + line;
|
||
this.onerrorFunction(str, 0);
|
||
alert(str);
|
||
}
|
||
|
||
//1.平台参数格式化
|
||
if(!noLogin) {
|
||
if (window['loginType']) {
|
||
switch (window['pfID']) {
|
||
case 10001:
|
||
var urlData = window.location.search;
|
||
if (urlData.indexOf('?') != -1) {
|
||
urlData = urlData.substr(1);
|
||
var strs = urlData.split('&');
|
||
for (var i = 0; i < strs.length; i++) {
|
||
window['userInfo'][strs[i].split('=')[0]] = unescape(strs[i].split('=')[1]);
|
||
}
|
||
}
|
||
break;
|
||
default:
|
||
// 测试
|
||
}
|
||
} else {
|
||
var urlData = window.location.search;
|
||
if (urlData.indexOf('?') != -1) {
|
||
urlData = urlData.substr(1);
|
||
var strs = urlData.split('&');
|
||
for (var i = 0; i < strs.length; i++) {
|
||
window['userInfo'][strs[i].split('=')[0]] = unescape(strs[i].split('=')[1]);
|
||
}
|
||
}
|
||
}
|
||
}
|
||
|
||
//2.登录验证
|
||
function loginFunction() {
|
||
//alert('维护中');
|
||
//return;
|
||
|
||
if(noLogin) return;
|
||
|
||
// window['userInfo']['serverInfo'] = serverInfo;
|
||
//1.平台验证
|
||
if (window['loginType']) {
|
||
switch (window['pfID']) {
|
||
case 10001:
|
||
var xhr = new XMLHttpRequest();
|
||
xhr.onreadystatechange = function() { // 服务器返回值的处理函数,此处使用匿名函数进行实现
|
||
if (xhr.readyState == 4 && xhr.status == 200) {
|
||
//console.log(xhr.responseText);
|
||
var obj = JSON.parse(xhr.responseText);
|
||
//验证成功
|
||
if (0 == obj.code) {
|
||
reporting(10001, 1);
|
||
start();
|
||
} else {
|
||
loadError = true;
|
||
reporting(10001, 0);
|
||
var errorMsg = obj.msg ? obj.msg : '通行证验证失败!',
|
||
label = document.getElementById('label');
|
||
if(label) {
|
||
var linkHtml = '<span class="font_small"><a onClick="window.history.back()" class="link_color">点击返回</a> / <a onClick="window.location.reload()" class="link_color">尝试刷新</a></span>';
|
||
label.innerHTML = errorMsg + linkHtml;
|
||
} else {
|
||
alert(filterHTML(errorMsg));
|
||
}
|
||
}
|
||
}
|
||
};
|
||
xhr.open('GET', window['checkUrl'] + '&do=verify&' + window.location.search.substr(1), true); //提交get请求到服务器
|
||
xhr.send(null);
|
||
break;
|
||
}
|
||
} else {
|
||
reporting(10001, 1);
|
||
start();
|
||
// window['checkFunction']();//检测上报
|
||
// window['checkSuccess']();
|
||
}
|
||
}
|
||
|
||
//3.支付
|
||
function payFunction(param) {
|
||
console.log(param);
|
||
window.open('./pay/?productId=' + param.productId + '&productName=' + param.productName + '&amount=' + param.amount + '&actorid=' + param.gameExtra + '&serverId=' + param.serverId, '_blank');
|
||
}
|
||
|
||
//4.工具类
|
||
function callJsFunction(msg) {
|
||
if (msg && msg['type']) {
|
||
switch (msg['type']) {
|
||
case 'showGame':
|
||
showGame();
|
||
break;
|
||
case 'showLoadProgress':
|
||
showLoadProgress(msg['progress'], msg['des']);
|
||
break;
|
||
default:
|
||
//测试
|
||
}
|
||
}
|
||
}
|
||
|
||
let jobAry = ['', '战士', '法师', '战士']
|
||
|
||
function ReportingFunction(msg) {
|
||
if (msg && msg) {
|
||
if (msg['type'] == 12 || msg['type'] == 1000) { //等级上报
|
||
//创建xhr对象
|
||
let reportingUrl = window['reportUrl'];
|
||
reportingUrl += '&do=' + encodeURIComponent('game_profile');
|
||
reportingUrl += '&udbid=' + encodeURIComponent(1024009155 + '');
|
||
reportingUrl += '&gam=' + encodeURIComponent(window['game'] + '');
|
||
reportingUrl += '&pas=';
|
||
reportingUrl += '&gse=' + encodeURIComponent('s1');
|
||
reportingUrl += '&pro=' + encodeURIComponent('logingame');
|
||
reportingUrl += '&ya_appid=' + encodeURIComponent('udblogin');
|
||
let json_data = {
|
||
game_event: msg['type'] == 12 ? 'new_role': 'level_change',
|
||
role_name: msg.data['roleName'],
|
||
role_level: msg.data['level'] + '',
|
||
fight_cap: '',
|
||
sex: msg.data['sex'] > 0 ? 'f': 'm',
|
||
job: jobAry[msg.data['job']],
|
||
partner: '',
|
||
equip: msg.data['guildName']
|
||
}
|
||
json_data = JSON.stringify(json_data);
|
||
reportingUrl += '&json_data=' + encodeURIComponent(json_data);
|
||
// json_data = { "role_level": "11", "role_name": "s1.虞鹏天", "game_event": "level_change", "fight_cap": "1371", "job": "1" }
|
||
var xhr = new XMLHttpRequest();
|
||
xhr.onreadystatechange = function() { //服务器返回值的处理函数,此处使用匿名函数进行实现
|
||
if (xhr.readyState == 4 && xhr.status == 200) { //
|
||
//var obj = JSON.parse(xhr.responseText);
|
||
}
|
||
};
|
||
xhr.open('GET', reportingUrl, true); //提交get请求到服务器
|
||
xhr.send(null);
|
||
}
|
||
}
|
||
}
|
||
|
||
//6.屏蔽右键
|
||
document.onkeydown = function() {
|
||
// var e = window.event || arguments[0];
|
||
//F12
|
||
// if (e.keyCode == 123) {
|
||
// return false;
|
||
// //Ctrl+Shift+I
|
||
// } else if ((e.ctrlKey) && (e.shiftKey) && (e.keyCode == 73)) {
|
||
// return false;
|
||
// //Shift+F10
|
||
// } else if ((e.shiftKey) && (e.keyCode == 121)) {
|
||
// return false;
|
||
// //Ctrl+U
|
||
// } else if ((e.ctrlKey) && (e.keyCode == 85)) {
|
||
// return false;
|
||
// }
|
||
};
|
||
|
||
/**
|
||
* 反馈
|
||
*/
|
||
function feedbackFunction(info) {
|
||
removeIfram();
|
||
let msgInfo = {
|
||
act: 'feedback',
|
||
game: window['game'],
|
||
platform: window['pf'],
|
||
server: window['userInfo']['server'],
|
||
uid: info['uid'],
|
||
rolename: info['rolename'],
|
||
ts: Date.parse(new Date().toString()) / 1000
|
||
};
|
||
msgInfo['sign'] = new md5().hex_md5((msgInfo.game + msgInfo.platform + msgInfo.server + msgInfo.uid + msgInfo.rolename + msgInfo.ts + 123456));
|
||
let param = '';
|
||
for (let key in msgInfo) {
|
||
param += key + '=' + msgInfo[key] + '&'
|
||
}
|
||
param = param.substring(0, param.length - 1)
|
||
let srcStr = webUrl + '/api?' + param;
|
||
var div = document.createElement('div');
|
||
div.id = 'iframDiv';
|
||
div.innerHTML = '<iframe id="main" scrolling="no" noresize="true" frameborder="0" style="width: 90%;height: 90%;padding-left:5%;padding-top:2%;" src=' + srcStr + '></iframe>';
|
||
// div.style = 'position: relative; width:100%; height:100%;background: rgba(0, 0, 0, 0.5);';
|
||
div.style.position = 'relative';
|
||
div.style.width = '100%';
|
||
div.style.height = '100%';
|
||
div.style.background = 'rgba(0, 0, 0, 0.5)';
|
||
document.body.appendChild(div);
|
||
//创建关闭按钮
|
||
let div2 = document.createElement('div');
|
||
div2.id = 'btnDiv';
|
||
div2.innerHTML = '<img id="closeImg" src="static/img/close_btn.jpg?v=1" height="50" width="50" />'
|
||
// div2.style = 'position: absolute;right:0px;top:0px;width:50px;height:50px';
|
||
div2.style.position = 'absolute';
|
||
div2.style.right = '0px';
|
||
div2.style.top = '0px';
|
||
div2.style.width = '50px';
|
||
div2.style.height = '50px';
|
||
div.appendChild(div2);
|
||
var closeImg = document.getElementById('closeImg');
|
||
closeImg.onclick = removeIfram;
|
||
// onloadFunction();
|
||
}
|
||
|
||
// 防沉迷
|
||
function IdCardFunction() {
|
||
window.open(webUrl);
|
||
}
|
||
|
||
function addQQGrp() {
|
||
window.open(window['kfQQGroupUrl']);
|
||
}
|
||
|
||
//下载YY游戏大厅
|
||
function downYYGameHallFun() {
|
||
window.open(webUrl);
|
||
}
|
||
|
||
//开通会员
|
||
function openYYVip() {
|
||
window.open(webUrl);
|
||
}
|
||
|
||
//开超玩会员
|
||
function openChaoWanVip() {
|
||
window.open(webUrl);
|
||
}
|
||
|
||
function removeIfram() {
|
||
var div = document.getElementById('iframDiv');
|
||
if (div) {
|
||
document.body.removeChild(div);
|
||
}
|
||
div = document.getElementById('btnDiv');
|
||
if (div) {
|
||
document.body.removeChild(div);
|
||
}
|
||
}
|
||
|
||
function bannerNight() {}
|
||
|
||
/**
|
||
* 屏蔽右键
|
||
*/
|
||
function stop() {
|
||
return false;
|
||
}
|
||
|
||
document.oncontextmenu = stop;
|
||
|
||
//监听屏幕 方向--暂时不用
|
||
window.onorientationchange = function(e) {
|
||
// var d = document.getElementById('screenHint');
|
||
// if (window.orientation == 180 || window.orientation == 0) {
|
||
// //竖屏状态
|
||
// d.style.display = 'none';
|
||
// }
|
||
// if (window.orientation == 90 || window.orientation == -90) {
|
||
// //横屏状态
|
||
// d.style.display = 'block';
|
||
// }
|
||
}
|
||
|
||
//断开游戏链接
|
||
function closeSocket() {
|
||
Main.closesocket();
|
||
}
|
||
|
||
//加载项目工程
|
||
var loadScript = function(list, callback) {
|
||
var loaded = 0;
|
||
var loadNext = function() {
|
||
loadSingleScript(list[loaded], function() {
|
||
loaded++;
|
||
if (loaded >= list.length) {
|
||
callback();
|
||
} else {
|
||
loadNext();
|
||
}
|
||
});
|
||
};
|
||
loadNext();
|
||
};
|
||
|
||
var loadTimes = 0;
|
||
var jsScr = '';
|
||
|
||
window['loadScript'] = loadScript;
|
||
|
||
var loadSingleScript = function(src, callback) {
|
||
if (jsScr != src) {
|
||
loadTimes = 0;
|
||
}
|
||
|
||
if(src.indexOf('lib') > -1 || src.indexOf('main') > -1) {
|
||
var mainSuffix = getQueryString('mainSuffix');
|
||
if(mainSuffix) {
|
||
src = src.replace('.js', mainSuffix + '.js');
|
||
}
|
||
src += '?v=' + (isJsDebug ? Math.random() : window['mainVersion']);
|
||
}
|
||
|
||
jsScr = src;
|
||
|
||
var s = document.createElement('script');
|
||
s.type = 'text/javascript';
|
||
s.async = false;
|
||
s.src = src;
|
||
|
||
s.addEventListener('load', function() {
|
||
s.parentNode.removeChild(s);
|
||
s.removeEventListener('load', arguments.callee, false);
|
||
callback();
|
||
}, false);
|
||
|
||
s.addEventListener('error', function() {
|
||
s.parentNode.removeChild(s);
|
||
s.removeEventListener('load', arguments.callee, false);
|
||
loadTimes++;
|
||
if (loadTimes > 5) {
|
||
alert("主程序文件加载失败,请检测网络刷新游戏!\n " + src);
|
||
} else {
|
||
setTimeout(function() {
|
||
loadSingleScript(src, callback);
|
||
}, 2000);
|
||
}
|
||
}, false);
|
||
document.body.appendChild(s);
|
||
};
|
||
|
||
//开始启动游戏
|
||
function start() {
|
||
//alert('维护中');
|
||
//return;
|
||
|
||
var xhr = new XMLHttpRequest();
|
||
xhr.open('GET', './manifest.json?v=1.1.1.2', true); // '?v=' + Math.random()
|
||
|
||
xhr.addEventListener('load', function() {
|
||
var manifest = JSON.parse(xhr.response);
|
||
var list = manifest.initial.concat(manifest.game);
|
||
window['gameAppJS'] = manifest['gameAppJS'];
|
||
loadScript(list, function() {
|
||
egret.runEgret({
|
||
renderMode: 'webgl',
|
||
audioType: 0,
|
||
calculateCanvasScaleFactor: function(context) {
|
||
var backingStore = context.backingStorePixelRatio ||
|
||
context.webkitBackingStorePixelRatio ||
|
||
context.mozBackingStorePixelRatio ||
|
||
context.msBackingStorePixelRatio ||
|
||
context.oBackingStorePixelRatio ||
|
||
context.backingStorePixelRatio || 1;
|
||
return (window.devicePixelRatio || 1) / backingStore;
|
||
}
|
||
});
|
||
});
|
||
});
|
||
xhr.send(null);
|
||
}
|
||
|
||
//上报
|
||
reporting(10000, 1);
|
||
|
||
loginFunction();
|