377 lines
11 KiB
JavaScript
377 lines
11 KiB
JavaScript
///////////////////////////////////////////////////////////////
|
|
/////////////// cls_youle_agent_agent: 运营商 /////////////////
|
|
///////////////////////////////////////////////////////////////
|
|
var cls_youle_agent_agent = cls_youle_agent_agent || {
|
|
//构造函数
|
|
new: function(agentid, name, server, tcpport, httpport, freeroom, managecode,initCard,initBean){
|
|
var agent = {};
|
|
agent.agentid = agentid; //运营商id
|
|
agent.agentname = name; //运营商名称
|
|
agent.server = server; //运营商服务器地址
|
|
agent.tcpport = tcpport; //运营商服务器tcp端口
|
|
agent.httpport = httpport; //运营商服务器http端口
|
|
agent.freeroom = freeroom; //默认同意解散房间的倒计时,秒
|
|
agent.managecode = managecode; //管理码
|
|
agent.isclose = 0; //服务器关闭标志 0:已开启 1:已关闭(不能创建房间、不能加入房间)
|
|
agent.initCard = initCard;
|
|
agent.initBean = initBean;
|
|
|
|
//游戏列表
|
|
agent.games = [];
|
|
//玩家列表
|
|
agent.players = [];
|
|
//短号列表
|
|
agent.shortcodes = [];
|
|
agent.shortcodes.length = 99999;
|
|
|
|
//方法
|
|
agent.method = {};
|
|
//载入游戏(没找到则创建)
|
|
agent.method.load_game = function(gameid, gamename, minroomcode, maxroomcode, seatcount, makewar, modename){
|
|
return cls_youle_agent_agent.load_game(agent, gameid, gamename, minroomcode, maxroomcode, seatcount, makewar, modename);
|
|
};
|
|
//查找游戏
|
|
agent.method.find_game = function(gameid){
|
|
return cls_youle_agent_agent.find_game(agent, gameid);
|
|
};
|
|
//载入玩家(没找到则创建)
|
|
agent.method.load_player = function(playerid, roomcard, bean, openid, unionid, nickname, avatar, sex, playertype, invitecode,sign){
|
|
return cls_youle_agent_agent.load_player(agent, playerid, roomcard, bean, openid, unionid, nickname, avatar, sex, playertype, invitecode,sign);
|
|
};
|
|
//查找玩家
|
|
agent.method.find_player = function(playerid){
|
|
return cls_youle_agent_agent.find_player(agent, playerid);
|
|
};
|
|
//清除玩家
|
|
agent.method.clear_player = function(playerid){
|
|
cls_youle_agent_agent.clear_player(agent, playerid);
|
|
};
|
|
//机器人昵称、头像
|
|
agent.method.get_robotinfo = function(){
|
|
cls_youle_agent_agent.get_robotinfo(agent);
|
|
};
|
|
|
|
//机器人昵称、头像
|
|
agent.method.getRobotInfo = function(){
|
|
cls_youle_agent_agent.getRobotInfo(agent);
|
|
};
|
|
agent.method.alyVideoConfig = function(videoConfig,count){
|
|
return cls_youle_agent_agent.alyVideoConfig(videoConfig,count);
|
|
};
|
|
|
|
//机器人
|
|
agent.robot_nicknamelist = [];
|
|
agent.robot_avatarlist = [];
|
|
agent.method.get_robotinfo();
|
|
agent.timer_getrobot = min_ontime(agent.method.get_robotinfo, 8 * 60 * 60 * 1000);
|
|
|
|
//机器人随机列表
|
|
agent.robotArray = new Array(10000);
|
|
for(var i=0;i<agent.robotArray.length;i++){
|
|
agent.robotArray[i] = i;
|
|
}
|
|
//机器人昵称列表
|
|
agent.robotNicknames=null;
|
|
agent.method.getRobotInfo();
|
|
return agent;
|
|
},
|
|
|
|
//载入游戏(没找到则创建)
|
|
load_game: function(o_agent, gameid, gamename, minroomcode, maxroomcode, seatcount, makewar, modename){
|
|
var idx = cls_youle_agent_agent.aryidx_game(gameid);
|
|
if (o_agent.games.length <= idx) {
|
|
o_agent.games.length = idx + 1;
|
|
}
|
|
var o_game = o_agent.games[idx];
|
|
if (!o_game){
|
|
//不存在则创建
|
|
o_game = cls_youle_agent_game.new(o_agent, gameid, idx, gamename, minroomcode, maxroomcode, seatcount, makewar, modename);
|
|
o_agent.games[idx] = o_game;
|
|
} else {
|
|
o_game.idx = idx;
|
|
o_game.gamename = gamename;
|
|
o_game.minroomcode = minroomcode;
|
|
o_game.maxroomcode = maxroomcode;
|
|
o_game.seatcount = seatcount;
|
|
o_game.makewar = makewar;
|
|
o_game.modename = modename;
|
|
}
|
|
return o_game;
|
|
},
|
|
|
|
//查找游戏
|
|
find_game: function(o_agent, gameid){
|
|
var idx = cls_youle_agent_agent.aryidx_game(gameid);
|
|
if (idx == -1){
|
|
return null;
|
|
}
|
|
if (o_agent.games.length <= idx){
|
|
return null;
|
|
}
|
|
if (!o_agent.games[idx]){
|
|
return null;
|
|
}
|
|
if (o_agent.games[idx].gameid != gameid){
|
|
return null;
|
|
}
|
|
return o_agent.games[idx];
|
|
},
|
|
|
|
//计算游戏的数组下标
|
|
aryidx_game: function(gameid){
|
|
//gameid的5、10、15、20四位组成数组下标
|
|
var idx = parseInt(gameid.substr(4, 1)
|
|
+ gameid.substr(9, 1)
|
|
+ gameid.substr(14, 1)
|
|
+ gameid.substr(19, 1));
|
|
if (isNaN(idx)){
|
|
return -1;
|
|
}
|
|
return idx;
|
|
},
|
|
|
|
//载入玩家(没找到则创建)
|
|
load_player: function(o_agent, playerid, roomcard, bean, openid, unionid, nickname, avatar, sex, playertype, invitecode,sign){
|
|
var idx = cls_youle_agent_agent.aryidx_player(playerid);
|
|
if (o_agent.players.length <= idx) {
|
|
o_agent.players.length = idx + 1;
|
|
}
|
|
var o_player = o_agent.players[idx];
|
|
if (!o_player) {
|
|
//不存在则创建
|
|
o_player = cls_youle_agent_player.new(o_agent, playerid, roomcard, bean, openid, unionid, nickname, avatar, sex, playertype, invitecode);
|
|
o_agent.players[idx] = o_player;
|
|
} else {
|
|
//更新玩家信息
|
|
o_player.roomcard = roomcard;
|
|
o_player.bean = bean;
|
|
o_player.openid = openid;
|
|
o_player.unionid = unionid;
|
|
o_player.nickname = nickname;
|
|
o_player.avatar = avatar;
|
|
o_player.sex = sex;
|
|
o_player.playertype = playertype;
|
|
o_player.invitecode = invitecode;
|
|
}
|
|
return o_player;
|
|
},
|
|
|
|
//查找玩家
|
|
find_player: function(o_agent, playerid){
|
|
var idx = cls_youle_agent_agent.aryidx_player(playerid);
|
|
if (idx == -1){
|
|
return null;
|
|
}
|
|
if (o_agent.players.length <= idx){
|
|
return null;
|
|
}
|
|
if (!o_agent.players[idx]){
|
|
return null;
|
|
}
|
|
if (o_agent.players[idx].playerid != playerid){
|
|
return null;
|
|
}
|
|
return o_agent.players[idx];
|
|
},
|
|
|
|
//清除玩家
|
|
clear_player: function(o_agent, playerid){
|
|
var idx = cls_youle_agent_agent.aryidx_player(playerid);
|
|
if (idx == -1){
|
|
return;
|
|
}
|
|
if (o_agent.players.length <= idx){
|
|
return;
|
|
}
|
|
if (!o_agent.players[idx]){
|
|
return;
|
|
}
|
|
if (o_agent.players[idx].playerid != playerid){
|
|
return;
|
|
}
|
|
o_agent.players[idx] = null;
|
|
},
|
|
|
|
//计算玩家的数组下标
|
|
aryidx_player: function(playerid){
|
|
var idx = parseInt(playerid) - 100001;
|
|
if (isNaN(idx)){
|
|
return -1;
|
|
}
|
|
return idx;
|
|
},
|
|
|
|
//机器人昵称、头像
|
|
get_robotinfo: function(o_agent){
|
|
var db_callback_robot_nickname = function(dbdata){
|
|
o_agent.robot_nicknamelist = [];
|
|
for (var i = 0; i < dbdata.length; i++) {
|
|
o_agent.robot_nicknamelist.push(dbdata[i].play_nickname);
|
|
}
|
|
}
|
|
var sql1 = "select v1.play_nickname from player as v1 " +
|
|
"inner join (select floor(min(idx) + (rand() * (max(idx) - min(idx)))) as idx from player) as v2 " +
|
|
"where v1.idx >= v2.idx " +
|
|
"and play_agentid <> ? " +
|
|
"and trim(play_nickname) <> '' " +
|
|
"and (not play_nickname like '%测试%') " +
|
|
"and (not play_nickname like '%游客%') " +
|
|
"order by v1.idx limit 2000;";
|
|
if (o_agent.agentid == "i33v0llvp0euhd1n9qo1fM2RV8vtog4y"){
|
|
youle_room.mysql.execsql("opensql", sql1, [" "], db_callback_robot_nickname);
|
|
} else {
|
|
youle_room.mysql.execsql("opensql", sql1, [o_agent.agentid], db_callback_robot_nickname);
|
|
}
|
|
|
|
var db_callback_robot_avatar = function(dbdata){
|
|
o_agent.robot_avatarlist = [];
|
|
for (var i = 0; i < dbdata.length; i++) {
|
|
o_agent.robot_avatarlist.push(dbdata[i].play_avatar);
|
|
}
|
|
}
|
|
var sql2 = "select v1.play_avatar from player as v1 " +
|
|
"inner join (select floor(min(idx) + (rand() * (max(idx) - min(idx)))) as idx from player) as v2 " +
|
|
"where v1.idx >= v2.idx " +
|
|
"and play_agentid <> ? " +
|
|
"and trim(play_nickname) <> '' " +
|
|
"and (not play_nickname like '%测试%') " +
|
|
"and (not play_nickname like '%游客%') " +
|
|
"and play_avatar <> '' " +
|
|
"and play_avatar <> '/0' " +
|
|
"order by v1.idx limit 2000;";
|
|
if (o_agent.agentid == "i33v0llvp0euhd1n9qo1fM2RV8vtog4y"){
|
|
youle_room.mysql.execsql("opensql", sql2, [" "], db_callback_robot_avatar);
|
|
} else {
|
|
youle_room.mysql.execsql("opensql", sql2, [o_agent.agentid], db_callback_robot_avatar);
|
|
}
|
|
},
|
|
//获取机器人信息
|
|
getRobotInfo:function(o_agent){
|
|
var cfg = {};
|
|
cfg.url = "http://projectimage.tscce.cn/avatar/nikcname.txt" + "?" + min_timestamp();
|
|
cfg.type = "POST";
|
|
cfg.data = "";
|
|
cfg.success = function(str){
|
|
if (str){
|
|
try{
|
|
var data = JSON.parse(str);
|
|
console.log("获取机器人昵称列表成功!!");
|
|
o_agent.robotNicknames = data.data;
|
|
}
|
|
catch(e){
|
|
}
|
|
}
|
|
};
|
|
cfg.error = function(str){
|
|
console.log("获取机器人昵称列表失败!!");
|
|
};
|
|
min_http(cfg);
|
|
|
|
},
|
|
//解析视频房配置
|
|
alyVideoConfig:function(videoConfig,count){
|
|
if(videoConfig){
|
|
if(videoConfig.type == 1){
|
|
switch(videoConfig.profitMode){
|
|
case 1://固定
|
|
return [1,Number(videoConfig.profit)];
|
|
break;
|
|
case 2://比例
|
|
|
|
break;
|
|
}
|
|
}else if(videoConfig.type == 2){
|
|
switch(videoConfig.profitMode){
|
|
case 1://固定
|
|
return [2,Number(videoConfig.profit)];
|
|
break;
|
|
case 2://比例
|
|
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
return[0,0];
|
|
}
|
|
|
|
}
|
|
|
|
///////////////////////////////////////////////////////////////
|
|
/////////// cls_youle_agent_agentlist: 运营商列表 //////////
|
|
///////////////////////////////////////////////////////////////
|
|
var cls_youle_agent_agentlist = cls_youle_agent_agentlist || {
|
|
//构造函数
|
|
new: function() {
|
|
|
|
var agentlist = {};
|
|
|
|
//代理商列表
|
|
agentlist.list = [];
|
|
//方法
|
|
agentlist.method = {};
|
|
|
|
//载入代理商(没找到则创建)
|
|
agentlist.method.load_agent = function(agentid, name, server, tcpport, httpport, freeroom, managecode,initCard,initBean){
|
|
var idx = agentlist.method.aryidx_agent(agentid);
|
|
if (idx == -1){
|
|
return null;
|
|
}
|
|
if (agentlist.list.length <= idx) {
|
|
agentlist.list.length = idx + 1;
|
|
}
|
|
var o_agent = agentlist.list[idx];
|
|
if (!o_agent) {
|
|
//不存在则创建
|
|
o_agent = cls_youle_agent_agent.new(agentid, name, server, tcpport, httpport, freeroom, managecode,initCard,initBean);
|
|
agentlist.list[idx] = o_agent;
|
|
} else {
|
|
o_agent.agentname = name;
|
|
o_agent.server = server;
|
|
o_agent.tcpport = tcpport;
|
|
o_agent.httpport = httpport;
|
|
o_agent.freeroom = freeroom;
|
|
o_agent.managecode = managecode;
|
|
o_agent.initCard = initCard;
|
|
o_agent.initBean = initBean;
|
|
}
|
|
return o_agent;
|
|
};
|
|
|
|
//查找运营商
|
|
agentlist.method.find_agent = function(agentid){
|
|
var idx = agentlist.method.aryidx_agent(agentid);
|
|
if (idx == -1){
|
|
return null;
|
|
}
|
|
if (agentlist.list.length <= idx){
|
|
return null;
|
|
}
|
|
if (!agentlist.list[idx]){
|
|
return null;
|
|
}
|
|
if (agentlist.list[idx].agentid != agentid){
|
|
return null;
|
|
}
|
|
return agentlist.list[idx];
|
|
};
|
|
|
|
//计算运营商的数组下标
|
|
agentlist.method.aryidx_agent = function(agentid) {
|
|
//agentid的5、10、15、20四位组成数组下标
|
|
var idx = parseInt(agentid.substr(4, 1)
|
|
+ agentid.substr(9, 1)
|
|
+ agentid.substr(14, 1)
|
|
+ agentid.substr(19, 1));
|
|
if (isNaN(idx)){
|
|
return -1;
|
|
}
|
|
return idx;
|
|
};
|
|
|
|
return agentlist;
|
|
}
|
|
}
|
|
|
|
//运营商列表
|
|
youle_agent.agents = cls_youle_agent_agentlist.new();
|