Files
youlegames/codes/games/sales_service/youle/server_agent/rpc.js
2026-02-04 23:47:45 +08:00

6321 lines
196 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
//////////////////////////////////////////////////////////////////
//////////////////////////游戏平台服务器//////////////////////////
//////////////////////////////////////////////////////////////////
youle_agent.debug = true;
youle_agent.player_login = function(pack){
if (cls_youle_room_backup && cls_youle_room_backup.isloading){
return;
}
var agentid = pack.data.agentid;
var channelid = pack.data.channelid;
var marketid = pack.data.marketid;
var gameid = pack.data.gameid;
var openid = pack.data.openid;
var unionid = pack.data.unionid;
var nickname = pack.data.nickname;
var avatar = pack.data.avatar;
var sex = parseInt(pack.data.sex);
var province = pack.data.province;
var city = pack.data.city;
var version = pack.data.version;
var playerid = pack.data.playerid;
var machineid = null;
if (pack.data.machineid){
machineid = pack.data.machineid;
}
var machineroom = null;
if (pack.data.machineroom){
machineroom = pack.data.machineroom;
}
if (!openid || openid == "(null)" || !unionid || unionid == "(null)"){
return;
}
if (!nickname && !avatar){
return;
}
//去除&符号
nickname = min_replaceAll(nickname, "&", "");
//去除'符号
nickname = min_replaceAll(nickname, "'", "");
//去除"符号
nickname = min_replaceAll(nickname, '"', "");
//去除前后空格
nickname = min_trim(nickname);
//去除emoji字符
var nickname2 = unescape(escape(nickname).replace(/\%uD.{3}/g, ''));
if ((nickname2 != nickname) && (!nickname2)){
nickname2 = "表情符号";
}
var o_cfg = youle_agent.app.youle_platform.config;
//验证版本号
if (!version){
version = 1;
} else {
version = parseInt(version);
}
var cfg_version = o_cfg.method.get_paravalue("game_version", agentid, gameid, channelid, marketid);
if (version < cfg_version){
pack.rpc = "kick_server";
pack.data = {};
pack.data.msg = "检查到新版本,请退出游戏,再重新启动游戏。";
youle_agent.app.SendPack(pack);
return;
}
if (min_ary_indexof(blacknamelist, unionid) > -1){
pack.rpc = "kick_server";
pack.data = {};
pack.data.msg = "由于用户举报该游戏账号存在违规行为,已被封禁。";
youle_agent.app.SendPack(pack);
return;
}
//游戏大厅http请求返回的数据
// if (gameid == "G2hw0ubng0zcoI0r4mx3H2yr4GejidwO"){
// pack.data = {};
// pack.data.state = 0;
// pack.data.agentid = agentid;
// pack.data.channelid = channelid;
// pack.data.scrollmsg = o_cfg.method.get_paravalue("scrollmsg", agentid, gameid, channelid, marketid);
// pack.data.noticemsg = o_cfg.method.get_paravalue("noticemsg", agentid, gameid, channelid, marketid);
// pack.data.gameversion = o_cfg.method.get_paravalue("game_version", agentid, gameid, channelid, marketid);
// pack.data.hall_config = o_cfg.method.get_paravalue("hall_config", agentid, gameid, channelid, marketid);
// pack.data.game_config = o_cfg.method.get_paravalue("game_config", agentid, gameid, channelid, marketid);
// pack.data.gamelist = o_cfg.method.get_gamelist_gamehall(agentid, channelid, marketid);
// return pack;
// }
var sql;
var o_agent;
var o_game;
var o_player;
//代理商
var do_load_agent = function(){
o_agent = youle_agent.agents.method.find_agent(agentid);
if (o_agent){
do_load_game();
} else {
var db_callback_agentinfo = function(dbdata){
if (dbdata.length == 0){
pack.data = {};
pack.data.state = 1;
pack.data.error = "参数错误agentid:" + agentid;
youle_agent.app.SendPack(pack);
console.log("youle_agent player_login 参数错误agentid:" + agentid);
return;
}
o_agent = youle_agent.agents.method.load_agent(
dbdata[0].agen_agentid,
dbdata[0].agen_name,
dbdata[0].agen_server,
parseInt(dbdata[0].agen_port_tcp),
parseInt(dbdata[0].agen_port_http),
parseInt(dbdata[0].agen_freeroom),
dbdata[0].agen_managecode,
dbdata[0].agen_initroomacard,
dbdata[0].agen_initbean);
o_agent.rebate_mode1 = parseInt(dbdata[0].agen_rebatemode1);
o_agent.rebate_set1 = parseInt(dbdata[0].agen_rebateset1);
o_agent.rebate_mode2 = parseInt(dbdata[0].agen_rebatemode2);
o_agent.rebate_set2 = parseInt(dbdata[0].agen_rebateset2);
//读取短号
var db_callback_shortcode = function(dbdata){
for (var i = 0; i < dbdata.length; i++) {
var o_shortcode = {};
o_shortcode.shortcode = parseInt(dbdata[i].play_shortcode);
o_shortcode.playerid = parseInt(dbdata[i].play_playerid);
o_agent.shortcodes[o_shortcode.shortcode] = o_shortcode;
}
do_load_game();
}
sql = "select * from player where play_agentid = ? and ifnull(play_shortcode, 0) <> 0";
youle_agent.mysql.execsql("opensql", sql, [agentid], db_callback_shortcode);
}
sql = "select * from agent where agen_agentid = ?";
youle_agent.mysql.execsql("opensql", sql, [agentid], db_callback_agentinfo, pack);
}
}
//游戏
var do_load_game = function(){
//获取比赛排行榜
var do_getmatchranking = function(){
o_game.isloading = false;
do_load_player();
}
//创建短号房间
var do_createshortroom = function(){
var db_callback_createadvancedroom = function(dbdata){
for (var i = 0; i < dbdata.length; i++) {
try{
if (dbdata[i].play_roomcodes){
var _shortcode = dbdata[i].play_shortcode;
var _o_roomcodes = JSON.parse(dbdata[i].play_roomcodes);
for (var j = 0; j < _o_roomcodes.length; j++) {
if (_o_roomcodes[j].gameid == gameid){
var _roomtype = _o_roomcodes[j].roomtype;
var _tea = _o_roomcodes[j].tea;
var _rebateType = _o_roomcodes[j].rebateType;
//var _videoConfig = _o_roomcodes[j].videoConfig;
var _roomlist = _o_roomcodes[j].roomlist;
if (_roomlist.length > 0){
var _ownerid = parseInt(dbdata[i].play_playerid);
var _o_owner = o_agent.method.find_player(_ownerid);
if (!_o_owner){
_o_owner = o_agent.method.load_player(
parseInt(dbdata[i].play_playerid),
parseInt(dbdata[i].play_roomcard),
parseInt(dbdata[i].play_bean),
dbdata[i].play_openid,
dbdata[i].play_unionid,
dbdata[i].play_nickname,
dbdata[i].play_avatar,
parseInt(dbdata[i].play_sex),
parseInt(dbdata[i].play_type),
dbdata[i].play_invitecode);
_o_owner.state = parseInt(dbdata[i].play_state);
_o_owner.advanced = parseInt(dbdata[i].play_advanced);
if (dbdata[i].play_shortcode){
_o_owner.shortcode = parseInt(dbdata[i].play_shortcode);
} else {
_o_owner.shortcode = null;
}
if (dbdata[i].play_roomcodes){
_o_owner.roomcodes = JSON.parse(dbdata[i].play_roomcodes);
} else {
_o_owner.roomcodes = [];
}
if (dbdata[i].play_whitelist){
//_o_owner.whitelist = JSON.parse(dbdata[i].play_whitelist);
_o_owner.whitelist = youle_agent.deCompressWhiteList(dbdata[i].play_whitelist);
for(var k=0;k<_o_owner.whitelist.length;k++){
if(_o_owner.whitelist[k][2]){
_o_owner.whitelist[k][2] = parseInt(_o_owner.whitelist[k][2]);
}else{
_o_owner.whitelist[k][2] = 0;
}
}
} else {
_o_owner.whitelist = null;
}
if (dbdata[i].play_limit != null){
_o_owner.lowlimit = parseInt(dbdata[i].play_limit);
} else {
_o_owner.lowlimit = -900000000;
}
if (dbdata[i].play_notice){
_o_owner.notice = dbdata[i].play_notice;
} else {
_o_owner.notice = null;
}
if (dbdata[i].play_sign){
_o_owner.sign = dbdata[i].play_sign;
} else {
_o_owner.sign = null;
}
if (dbdata[i].play_destwo){
_o_owner.destwo = dbdata[i].play_destwo;
} else {
_o_owner.destwo = "";
}
_o_owner.loginday = min_now();
_o_owner.bankpower = parseInt(dbdata[i].play_bankpower);
_o_owner.bank = parseInt(dbdata[i].play_bank);
_o_owner.bankpwd = dbdata[i].play_bankpwd;
_o_owner.method.login_game(o_game, null, null, null);
}
for (var k = 0; k < _roomlist.length; k++) {
var _roomcode = _roomlist[k];
//在恢复牌局的情况下有可能短号房间已经恢复了
var roomsvr_agent = youle_room.agents.method.find_agent(agentid);
if (roomsvr_agent){
var roomsvr_game = roomsvr_agent.method.find_game(gameid);
if (roomsvr_game){
var roomsvr_room = roomsvr_game.method.find_room(_roomcode);
if (roomsvr_room){
continue;
}
}
}
_msg = {};
_msg.data = {};
_msg.data.agentid = agentid;
_msg.data.gameid = gameid;
_msg.data.playerid = _ownerid;
_msg.data.roomcode = _roomcode;
_msg.data.shortcode = _shortcode;
_msg.data.tea = _tea;
//console.log(_ownerid+"shortcode:"+_shortcode);
//_msg.data.videoConfig = _videoConfig;
youle_agent.advanced_createroom_roomcode(_msg);
}
}
}
}
}
}
catch(e){}
}
do_getmatchranking();
}
sql = "select * from player where play_agentid = ? and ifnull(play_shortcode, 0) <> 0";
youle_agent.mysql.execsql("opensql", sql, [agentid], db_callback_createadvancedroom);
}
//获取机器人金币累积输赢
var do_getrobotgrade = function(){
var db_callback_getrobotgrade = function(dbdata){
if (dbdata.length == 1){
o_game.robot_xx = parseInt(dbdata[0].winlose_xx);
o_game.robot_x2 = parseInt(dbdata[0].winlose_x2);
} else {
o_game.robot_xx = 0;
o_game.robot_x2 = 0;
}
do_createshortroom();
}
sql = "select ifnull(agpl_winlose_xx, 0) as winlose_xx, ifnull(agpl_winlose_x2, 0) as winlose_x2 from agent_game_player where agpl_agentid = ? and agpl_gameid = ? and agpl_playerid = 999999";
youle_agent.mysql.execsql("opensql", sql, [agentid, gameid], db_callback_getrobotgrade);
}
o_game = o_agent.method.find_game(gameid);
if (o_game){
if (o_game.isloading){
return;
}
if (!o_agent.playerlogin) { //恢复牌局后o_game已经恢复了但还没创建短号房间
do_createshortroom();
} else {
do_load_player();
}
} else {
var db_callback_gameinfo = function(dbdata){
if (dbdata.length == 0){
pack.data = {};
pack.data.state = 1;
pack.data.error = "参数错误gameid:" + gameid;
console.log("youle_agent player_login 参数错误gameid:" + gameid);
youle_agent.app.SendPack(pack);
return;
}
if (!youle_agent.app[dbdata[0].game_modename]){
pack.data = {};
pack.data.state = 1;
pack.data.error = "参数错误gameid:" + gameid;
console.log("youle_agent player_login 参数错误gameid:" + gameid);
youle_agent.app.SendPack(pack);
return;
}
o_game = o_agent.method.load_game(
dbdata[0].game_gameid,
dbdata[0].game_name,
parseInt(dbdata[0].game_minroomcode),
parseInt(dbdata[0].game_maxroomcode),
parseInt(dbdata[0].game_seatcount),
parseInt(dbdata[0].game_makewar),
dbdata[0].game_modename);
o_game.isloading = true;
do_getrobotgrade();
}
sql = "select * from game where game_gameid = ?";
youle_agent.mysql.execsql("opensql", sql, [gameid], db_callback_gameinfo, pack);
}
}
//玩家
var do_load_player = function(){
if (playerid){
playerid = parseInt(playerid);
o_player = o_agent.method.find_player(playerid);
}
if (o_player){
if (o_player.openid != openid || o_player.unionid != unionid || o_player.deleted){
o_player = null;
}
}
if (o_player){
o_player.nickname = nickname2;
o_player.avatar = avatar;
o_player.sex = sex;
do_return_login(0);
} else {
var db_callback_playerinfo = function(dbdata){
var gameid = dbdata[0].gameid;
o_player = o_agent.method.load_player(
parseInt(dbdata[0].playerid),
parseInt(dbdata[0].roomcard),
parseInt(dbdata[0].bean),
openid,
unionid,
nickname2,
avatar,
parseInt(sex),
parseInt(dbdata[0].playertype),
dbdata[0].invitecode);
o_player.state = parseInt(dbdata[0].state);
o_player.advanced = parseInt(dbdata[0].advanced);
if (dbdata[0].shortcode){
o_player.shortcode = parseInt(dbdata[0].shortcode);
} else {
o_player.shortcode = null;
}
if (dbdata[0].roomcodes){
o_player.roomcodes = JSON.parse(dbdata[0].roomcodes);
} else {
o_player.roomcodes = [];
}
if (dbdata[0].desone){
o_player.desone = dbdata[0].desone;
} else {
o_player.desone = null;
}
if (dbdata[0].destwo){
o_player.destwo = dbdata[0].destwo;
} else {
o_player.destwo = null;
}
if (dbdata[0].whitelist){
o_player.whitelist = youle_agent.deCompressWhiteList(dbdata[0].whitelist);
for(var k=0;k<o_player.whitelist.length;k++){
if(o_player.whitelist[k][2]){
o_player.whitelist[k][2] = parseInt(o_player.whitelist[k][2]);
}else{
o_player.whitelist[k][2] = 0;
}
}
} else {
o_player.whitelist = null;
}
if (dbdata[0].lowlimit != null){
o_player.lowlimit = parseInt(dbdata[0].lowlimit);
} else {
o_player.lowlimit = -900000000;
}
if (dbdata[0].notice){
o_player.notice = dbdata[0].notice;
} else {
o_player.notice = null;
}
if (dbdata[0].psign){
o_player.sign = dbdata[0].psign;
} else {
o_player.sign = null;
}
o_player.loginday = min_now();
o_player.nn_winlose = parseInt(dbdata[0].nn_winlose); //牛牛总输赢分数
o_player.nn_winlose_xx = parseInt(dbdata[0].nn_winlose_xx); //牛牛总输赢分数(星星场)
o_player.nn_winlose_x2 = parseInt(dbdata[0].nn_winlose_x2); //牛牛总输赢星星(星星场)
updateGameWinLose(gameid,1,dbdata[0].game_winlose,o_player);
updateGameWinLose(gameid,2,dbdata[0].game_winlose_xx,o_player);
updateGameWinLose(gameid,3,dbdata[0].game_winlose_x2,o_player);
o_player.bankpower = parseInt(dbdata[0].bankpower);
o_player.bank = parseInt(dbdata[0].bank);
o_player.bankpwd = dbdata[0].bankpwd;
do_return_login(1);
}
sql = "call cp_game_player_login(?,?,?,?,?,?,?,?,?,?,?);";
youle_agent.mysql.execsql("opensql", sql, [agentid, channelid, gameid, openid, unionid, nickname2, avatar, sex, province, city, marketid], db_callback_playerinfo, pack);
}
}
//游戏输赢设置 玩家输赢存在玩家winLose属性中
var updateGameWinLose = function(gameid,type,val,oPlayer){
var key;
val = Number(val);
switch(type){
case 1:
key = "game_winlose";
break;
case 2:
key = "game_winlose_xx";
break;
case 3:
key = "game_winlose_x2";
break;
}
if(oPlayer.winLose){//判断是否有次属性
if(oPlayer.winLose[gameid]){
if(oPlayer.winLose[gameid][key]){
oPlayer.winLose[gameid][key] += val;
}else{
oPlayer.winLose[gameid][key] = val;
}
}else{
oPlayer.winLose[gameid] = {};
oPlayer.winLose[gameid][key] = val;
}
}else{
oPlayer.winLose = {};
oPlayer.winLose[gameid] = {};
oPlayer.winLose[gameid][key] = val;
}
}
//返回前端登录包
var do_return_login = function(logindb){
if (o_player.state == 1){
pack.rpc = "kick_server";
pack.data = {};
pack.data.msg = "由于用户举报该游戏账号存在违规行为,已被封禁。";
youle_agent.app.SendPack(pack);
return;
}
o_agent.playerlogin = 1;
//玩家登录游戏
var player_ip;
if (!pack.data.ip){
o_player.method.login_game(o_game, pack.ip, pack.conmode, pack.fromid, machineid, machineroom);
player_ip = pack.ip;
} else {
o_player.method.login_game(o_game, pack.data.ip, pack.conmode, pack.fromid, machineid, machineroom);
player_ip = pack.data.ip;
}
var o_gameinfo = o_player.method.get_gameinfo(o_game);
pack.data = {};
pack.data.state = 0;
pack.data.agentid = o_agent.agentid;
pack.data.agentname = o_agent.agentname;
// pack.data.agentlogo = o_cfg.method.get_paravalue("logimage", agentid, gameid, channelid, marketid);
pack.data.agentmode = o_cfg.method.get_paravalue("agentmode", agentid, gameid, channelid, marketid);
if (!pack.data.agentmode){
pack.data.agentmode = 1;
}
pack.data.channelid = channelid;
// pack.data.wechat_gzh = o_cfg.method.get_paravalue("WechatPublicNo_name", agentid, gameid, channelid, marketid);
// pack.data.wechat_ewm = o_cfg.method.get_paravalue("WechatPublicNo_ewm", agentid, gameid, channelid, marketid);
// pack.data.wechat_kfh = o_cfg.method.get_paravalue("service_wechat", agentid, gameid, channelid, marketid);
// pack.data.qq = o_cfg.method.get_paravalue("service_qq", agentid, gameid, channelid, marketid);
// pack.data.tel = o_cfg.method.get_paravalue("service_tel", agentid, gameid, channelid, marketid);
// pack.data.scrollmsg = o_cfg.method.get_paravalue("scrollmsg", agentid, gameid, channelid, marketid);
// pack.data.noticemsg = o_cfg.method.get_paravalue("noticemsg", agentid, gameid, channelid, marketid);
// pack.data.appdownload = o_cfg.method.get_paravalue("url_download", agentid, gameid, channelid, marketid);
// pack.data.topuphtml = o_cfg.method.get_paravalue("url_topup", agentid, gameid, channelid, marketid);
// pack.data.matchhtml = o_cfg.method.get_paravalue("url_match", agentid, gameid, channelid, marketid);
// pack.data.sharename = o_cfg.method.get_paravalue("sharename", agentid, gameid, channelid, marketid);
// pack.data.hall_config = o_cfg.method.get_paravalue("hall_config", agentid, gameid, channelid, marketid);
// pack.data.game_config = o_cfg.method.get_paravalue("game_config", agentid, gameid, channelid, marketid);
pack.data.gameversion = cfg_version;
pack.data.playerid = o_player.playerid;
pack.data.roomcard = o_player.roomcard;
pack.data.bean = o_player.bean;
pack.data.score = 0;
pack.data.invitecode = o_player.invitecode;
pack.data.advanced = o_player.advanced;
pack.data.taskstate = 1;
pack.data.ip = player_ip;
pack.data.bankpower = o_player.bankpower;
pack.data.bank = o_player.bank;
pack.data.sign = o_player.sign;
pack.data.initCard = o_agent.initCard;
pack.data.initBean = o_agent.initBean;
if (o_player.bankpwd){
pack.data.bankpwd = 1;
} else {
pack.data.bankpwd = 0;
}
//检查玩家是否已经在房间内了
if (!o_gameinfo.roomcode){
if (o_gameinfo.matchid){
pack.data.matchid = o_gameinfo.matchid;
pack.data.matchidx = o_gameinfo.matchidx;
}
//没在房间内
youle_agent.app.SendPack(pack);
} else {
//在房间内则通知房间服务器有人断线重连了
var msg = {};
msg.app = youle_agent.app.appname;
msg.route = youle_agent.app.youle_room.routename;
msg.rpc = "player_login";
msg.data = {};
msg.data.playerid = o_player.playerid;
msg.data.nickname = o_player.nickname;
msg.data.avatar = o_player.avatar;
msg.data.sex = o_player.sex;
msg.data.playertype = o_player.playertype;
msg.data.ip = o_gameinfo.ip;
msg.data.conmode = o_gameinfo.conmode;
msg.data.fromid = o_gameinfo.fromid;
msg.data.agentid = o_agent.agentid;
msg.data.gameid = o_game.gameid;
msg.data.roomcode = o_gameinfo.roomcode;
//获取房号对应的房间服务器地址
var o_roomserver = o_game.method.get_roomserver(o_gameinfo.roomcode);
if (o_roomserver.server == o_agent.server){
//房间服务器与代理商服务器是同一地址
var roomserver_data = youle_agent.app.youle_room[msg.rpc](msg);
try
{
//返回前端
pack.data.gameid = roomserver_data.data.gameid;
pack.data.roomcode = roomserver_data.data.roomcode;
pack.data.roomtype = roomserver_data.data.roomtype;
pack.data.asetcount = roomserver_data.data.asetcount;
pack.data.makewar = roomserver_data.data.makewar;
pack.data.roommode = roomserver_data.data.roommode;
pack.data.beanlimit = roomserver_data.data.beanfloor;
pack.data.isbattle = roomserver_data.data.isbattle;
pack.data.needprepare = roomserver_data.data.needprepare;
pack.data.seat = roomserver_data.data.seat;
pack.data.isowner = roomserver_data.data.isowner;
pack.data.isbet = roomserver_data.data.isbet;
pack.data.infinite = roomserver_data.data.infinite;
pack.data.shortcode = roomserver_data.data.shortcode;
if(roomserver_data.data.videoConfig){
pack.data.videoConfig = roomserver_data.data.videoConfig;
}
if(roomserver_data.data.ownerNotice){
pack.data.ownerNotice = roomserver_data.data.ownerNotice;
}
if(roomserver_data.data.rebateMode){
pack.data.rebateMode = roomserver_data.data.rebateMode;
}
if(roomserver_data.data.rebateNumber){
pack.data.rebateNumber = roomserver_data.data.rebateNumber;
}
pack.data.rebateType = roomserver_data.data.rebateType;
if (roomserver_data.data.match_data){
pack.data.match = {};
pack.data.match.roomcard = roomserver_data.data.match_roomcard;
}
pack.data.players = roomserver_data.data.players;
pack.data.agreefree = roomserver_data.data.agreefree;
pack.data.deskinfo = roomserver_data.data.deskinfo;
if (roomserver_data.data.match_id){
pack.data.matchid = roomserver_data.data.match_id;
pack.data.matchidx = roomserver_data.data.match_idx;
}
for (var i = 0; i < pack.data.players.length; i++) {
if (pack.data.players[i] && pack.data.players[i].bean == null){
var _playerid = parseInt(pack.data.players[i].playerid);
var _o_player = o_agent.method.find_player(_playerid);
pack.data.players[i].bean = _o_player.bean;
}
}
//获取玩家的短号魅力值
if (pack.data.shortcode){
var _roomsvr_agent = youle_room.agents.method.find_agent(agentid);
var _roomsvr_game = _roomsvr_agent.method.find_game(gameid);
var _roomsvr_room = _roomsvr_game.method.find_room(o_gameinfo.roomcode);
var ownerid = _roomsvr_room.owner.playerid;
var o_owner = o_agent.method.find_player(ownerid);
if (o_owner && o_owner.whitelist && o_owner.whitelist.length > 0){
for (var i = 0; i < pack.data.players.length; i++) {
if (pack.data.players[i]){
var _playerid = parseInt(pack.data.players[i].playerid);
var found = false;
for (var j = 0; j < o_owner.whitelist.length; j++) {
if (o_owner.whitelist[j][0] == _playerid){
if (o_owner.whitelist[j][2]){
pack.data.players[i].charm = o_owner.whitelist[j][2];
} else {
pack.data.players[i].charm = 0;
}
found = true;
break;
}
}
if (!found){
pack.data.players[i].charm = 0;
}
}
}
}
}
youle_agent.app.SendPack(pack);
}
catch(e)
{
console.log("youle_agent_player_login:"+agentid+","+channelid+","+marketid+","+gameid+","+openid+","+unionid+","+nickname);
console.log(e);
}
} else {
//房间服务器与代理商服务器不是同一地址
var cfg = {};
cfg.url = "http://" + o_roomserver.server + ":" + o_roomserver.httpport + "/index.html";
cfg.type = "POST";
cfg.data = JSON.stringify(msg);
cfg.success = function(str){
if (str){
var roomserver_data = JSON.parse(str);
//返回前端需要连接房间服务器
var _info = pack.data;
pack.rpc = "connect_roomserver";
pack.data = {};
pack.data.roomserver = o_roomserver.server + ":" + o_roomserver.tcpport;
pack.data.data = {};
pack.data.data.opt = "player_login";
pack.data.data.playerid = db_playerid;
pack.data.data.agentid = agentid;
pack.data.data.gameid = gameid;
pack.data.data.roomcode = o_gameinfo.roomcode;
pack.data.data.roomtype = roomserver_data.data.roomtype;
pack.data.data.seat = roomserver_data.data.seat;
pack.data.data.info = _info;
youle_agent.app.SendPack(pack);
}
};
cfg.error = function(str){};
min_http(cfg);
}
}
if (!logindb){
if (!o_player.loginday){
o_player.loginday = "2016-12-12 12:12:12";
}
var ran = min_random(1, 20);
var hourdiff = min_datediff(o_player.loginday, min_now(), "hour");
if (hourdiff >= 24 + ran){
var db_callback_playerinfo = function(dbdata){
var gameid = dbdata[0].gameid;
o_player = o_agent.method.load_player(
parseInt(dbdata[0].playerid),
parseInt(dbdata[0].roomcard),
parseInt(dbdata[0].bean),
openid,
unionid,
nickname2,
avatar,
parseInt(sex),
parseInt(dbdata[0].playertype),
dbdata[0].invitecode);
o_player.state = parseInt(dbdata[0].state);
o_player.advanced = parseInt(dbdata[0].advanced);
if (dbdata[0].shortcode){
o_player.shortcode = parseInt(dbdata[0].shortcode);
} else {
o_player.shortcode = null;
}
if (dbdata[0].roomcodes){
o_player.roomcodes = JSON.parse(dbdata[0].roomcodes);
} else {
o_player.roomcodes = [];
}
if (dbdata[0].desone){
o_player.desone = dbdata[0].desone;
} else {
o_player.desone = null;
}
if (dbdata[0].destwo){
o_player.destwo = dbdata[0].destwo;
} else {
o_player.destwo = null;
}
if (dbdata[0].whitelist){
o_player.whitelist = youle_agent.deCompressWhiteList(dbdata[0].whitelist);
for(var k=0;k<o_player.whitelist.length;k++){
if(o_player.whitelist[k][2]){
o_player.whitelist[k][2] = parseInt(o_player.whitelist[k][2]);
}else{
o_player.whitelist[k][2] = 0;
}
}
} else {
o_player.whitelist = null;
}
if (dbdata[0].lowlimit != null){
o_player.lowlimit = parseInt(dbdata[0].lowlimit);
} else {
o_player.lowlimit = -900000000;
}
if (dbdata[0].notice){
o_player.notice = dbdata[0].notice;
} else {
o_player.notice = null;
}
if (dbdata[0].psign){
o_player.sign = dbdata[0].psign;
} else {
o_player.sign = null;
}
o_player.loginday = min_now();
o_player.nn_winlose = parseInt(dbdata[0].nn_winlose); //牛牛总输赢分数
o_player.nn_winlose_xx = parseInt(dbdata[0].nn_winlose_xx); //牛牛总输赢分数(星星场)
o_player.nn_winlose_x2 = parseInt(dbdata[0].nn_winlose_x2); //牛牛总输赢星星(星星场)
updateGameWinLose(gameid,1,dbdata[0].game_winlose,o_player);
updateGameWinLose(gameid,2,dbdata[0].game_winlose_xx,o_player);
updateGameWinLose(gameid,3,dbdata[0].game_winlose_x2,o_player);
o_player.bankpower = parseInt(dbdata[0].bankpower);
o_player.bank = parseInt(dbdata[0].bank);
o_player.bankpwd = dbdata[0].bankpwd;
}
if(!youle_agent.debug){
sql = "call cp_game_player_login(?,?,?,?,?,?,?,?,?,?,?);";
youle_agent.mysql.execsql("opensql", sql, [agentid, channelid, gameid, openid, unionid, nickname2, avatar, sex, province, city, marketid], db_callback_playerinfo);
}else{
// var tempData = {};
// tempData =
// var pData = [tempData];
// db_callback_playerinfo(pData);
}
}
}
do_check_login();
}
//通知其他子游戏服务器
var do_check_login = function(){
var gameserverlist = youle_platform.config.method.get_gameserver_list(agentid);
//debugger;
// gameserverlist.push("127.0.0.1:1089");
// gameserverlist.push("127.0.0.1:2089");
if (gameserverlist.length > 1){
var msg = {};
msg.app = "youle";
msg.route = "agent";
msg.rpc = "check_login";
msg.data = {};
msg.data.agentid = agentid;
msg.data.playerid = o_player.playerid;
msg.data.youleid = youle_agent.youleid;
for (var i = 0; i < gameserverlist.length; i++) {
var cfg = {};
cfg.url = "http://" + gameserverlist[i] + "/index.html";
cfg.type = "POST";
cfg.data = JSON.stringify(msg);
cfg.success = function(str){
try{
var obj = JSON.parse(str);
if (obj.data.state == 1){
pack.rpc = "kick_server";
pack.data = {};
pack.data.msg = "您目前正在进行" + obj.data.gamename + "游戏,请先退出或结束当前游戏。";
youle_agent.app.SendPack(pack);
// o_agent.method.clear_player(o_player.playerid);
o_player.deleted = 1;
}
}catch(e){}
}
cfg.error = function(str){
console.log(min_now() + " check_login失败:" + cfg.url + ":" + agentid + ":" + o_player.playerid);
}
min_http(cfg);
}
}
}
do_load_agent();
}
youle_agent.check_login = function(pack){
var agentid = pack.data.agentid;
var playerid = parseInt(pack.data.playerid);
var youleid = pack.data.youleid;
if (youleid == youle_agent.youleid){
pack.data.state = 0;
return pack;
}
var o_agent = youle_agent.agents.method.find_agent(agentid);
if (!o_agent){
pack.data.state = 0;
return pack;
}
var o_player = o_agent.method.find_player(playerid);
if (!o_player) {
pack.data.state = 0;
return pack;
}
if (o_player.gameinfo){
for (var i = 0; i < o_player.gameinfo.length; i++) {
if (o_player.gameinfo[i] && o_player.gameinfo[i].roomcode){
pack.data.state = 1;
pack.data.gamename = o_agent.games[i].gamename;
return pack;
}
}
for (var i = 0; i < o_player.gameinfo.length; i++) {
if (o_player.gameinfo[i] && o_player.gameinfo[i].conmode && o_player.gameinfo[i].fromid){
var msg = {};
msg.app = "youle";
msg.route = "agent";
msg.rpc = "kick_offline";
msg.conmode = o_player.gameinfo[i].conmode;
msg.fromid = o_player.gameinfo[i].fromid;
youle_agent.app.SendPack(msg);
}
}
}
// o_agent.method.clear_player(playerid);
o_player.deleted = 1;
pack.data.state = 0;
return pack;
}
//玩家断线
youle_agent.OnTcpDisConnected = function(str_tcpid){
var o_tcp = youle_agent.tcps.method.find_tcp(str_tcpid);
if (!o_tcp){
return;
}
//找到了
var _player = o_tcp.o_player;
var _gameidx = o_tcp.gameidx;
if (_player){
if (_player.gameinfo[_gameidx]){
if (_player.gameinfo[_gameidx].fromid == str_tcpid){
if (_player.gameinfo[_gameidx].roomcode || _player.gameinfo[_gameidx].matchid){
_player.gameinfo[_gameidx].ip = null;
_player.gameinfo[_gameidx].conmode = null;
_player.gameinfo[_gameidx].fromid = null;
} else {
//如果不在房间内
_player.gameinfo[_gameidx] = null;
//判断是否要释放玩家
var freeflag = true;
for (var m = 0; m < _player.gameinfo.length; m++) {
if (_player.gameinfo[m]){
freeflag = false;
break;
}
}
if (freeflag){
// _player.o_agent.players[_player.playerid - 100001] = null;
_player.method.open_free_timer();
}
//统计在线玩家数
var o_game = _player.o_agent.games[_gameidx];
if (o_game){
o_game.method.online_p_chang(-1);
}
}
}
}
}
//更新tcp连接列表
youle_agent.tcps.method.delete_tcp(str_tcpid);
// //遍历运营商
// for (var i = 0; i < youle_agent.agents.list.length; i++){
// var o_agent = youle_agent.agents.list[i];
// //遍历玩家列表
// for (var j = 0; j < o_agent.players.length; j++){
// var o_player = o_agent.players[j];
// if (o_player){
// //遍历玩家登录的游戏列表
// for (var k = 0; k < o_player.gameinfo.length; k++){
// if (o_player.gameinfo[k]){
// if (o_player.gameinfo[k].fromid == str_tcpid){
// //找到了
// if (!o_player.gameinfo[k].roomcode){
// //如果不在房间内
// o_player.gameinfo[k] = null;
// //判断是否要释放玩家
// var freeflag = true;
// for (var m = 0; m < o_player.gameinfo.length; m++) {
// if (o_player.gameinfo[m]){
// freeflag = false;
// break;
// }
// }
// if (freeflag){
// o_agent.players[j] = null;
// }
// } else {
// o_player.gameinfo[k].ip = null;
// o_player.gameinfo[k].conmode = null;
// o_player.gameinfo[k].fromid = null;
// }
// return;
// }
// }
// }
// }
// }
// }
}
//玩家提交地理位置
youle_agent.submit_location = function(pack){
var agentid = pack.data.agentid;
var playerid = parseInt(pack.data.playerid);
var country = pack.data.info.country;
var province = pack.data.info.province;
var city = pack.data.info.city;
var cityCode = pack.data.info.cityCode;
var district = pack.data.info.district;
var street = pack.data.info.street;
var address = pack.data.info.address;
address = min_replaceAll(address, "&", "");
var latitude = pack.data.info.latitude;
var longitude = pack.data.info.longitude;
//检查代理商id是否存在
var o_agent = youle_agent.agents.method.find_agent(agentid);
if (!o_agent) {
return;
};
//检查玩家是否存在
var o_player = o_agent.method.find_player(playerid);
if (!o_player) {
return;
};
o_player.address = address;
o_player.latitude = latitude;
o_player.longitude = longitude;
var db_callback = function(dbdata) {
if (dbdata.length == 1){
var db_wechatgzh = dbdata[0].wechatgzh;
var db_wechatewm = dbdata[0].wechatewm;
var db_wechatkfh = dbdata[0].wechatkfh;
var db_qq = dbdata[0].qq;
var db_tel = dbdata[0].tel;
var db_invitecode = dbdata[0].invitecode;
pack.data = {};
if (!db_wechatgzh){
pack.data.wechat_gzh = db_wechatgzh;
pack.data.wechat_ewm = db_wechatewm;
}
if (!db_wechatkfh){
pack.data.wechat_kfh = db_wechatkfh;
}
if (!db_qq){
pack.data.qq = db_qq;
}
if (!db_tel){
pack.data.tel = db_tel;
}
if (!db_invitecode){
pack.data.invitecode = db_invitecode;
}
youle_agent.app.SendPack(pack);
}
}
var sql = "call cp_game_login_location(?,?,?,?,?,?,?,?,?,?,?);";
youle_agent.mysql.execsql("execsql", sql, [agentid, playerid, country, province, city, cityCode, district, street, address, latitude, longitude], db_callback, pack);
}
//玩家提交手机信息
youle_agent.submit_phoneinfo = function(pack){
var agentid = pack.data.agentid;
var playerid = parseInt(pack.data.playerid);
var info = pack.data.info;
//检查代理商id是否存在
var o_agent = youle_agent.agents.method.find_agent(agentid);
if (!o_agent) {
return;
};
//检查玩家是否存在
var o_player = o_agent.method.find_player(playerid);
if (!o_player) {
return;
};
var sql = "call cp_game_login_phoneinfo(?,?,?);";
youle_agent.mysql.execsql("execsql", sql, [agentid, playerid, JSON.stringify(info)]);
return pack;
}
//创建房间
youle_agent.create_room = function(pack){
var agentid = pack.data.agentid;
var playerid = parseInt(pack.data.playerid);
var gameid = pack.data.gameid;
var roomtype = pack.data.roomtype;
var infinite = 0;
if (pack.data.infinite){
infinite = parseInt(pack.data.infinite);
}
//检查代理商id是否存在
var o_agent = youle_agent.agents.method.find_agent(agentid);
if (!o_agent) {
console.log(min_now() + "创建房间失败agentid:" + agentid);
console.log(pack);
return;
};
//检查游戏id是否存在
var o_game = o_agent.method.find_game(gameid);
if (!o_game) {
console.log(min_now() + "创建房间失败gameid:" + gameid);
console.log(pack);
return;
};
//检查玩家是否存在
var o_player = o_agent.method.find_player(playerid);
if (!o_player) {
console.log(min_now() + "创建房间失败playerid:" + playerid);
console.log(pack);
return;
};
//检查玩家是否已经在房间内了
var o_gameinfo = o_player.method.get_gameinfo(o_game);
if (o_gameinfo && o_gameinfo.roomcode) {
console.log(min_now() + "创建房间失败o_gameinfo.roomcode:" + o_gameinfo.roomcode);
console.log(pack);
return;
};
//检查tcp连接
try{
if (o_gameinfo.fromid != pack.fromid){
console.log(min_now() + "创建房间失败o_gameinfo.fromid:" + o_gameinfo.fromid + ", pack.fromid:" + pack.fromid);
console.log(pack);
return;
};
}
catch(e){
console.log(min_now() + "创建房间失败o_gameinfo.fromid != pack.fromid error");
console.log(pack);
return;
}
//检查服务器是否已关闭
var config_close = youle_agent.app.youle_platform.config.method.get_paravalue("isclose", agentid, gameid);
if (o_agent.isclose || config_close == 2){
pack.data = {};
pack.data.state = 1;
pack.data.error = "正在进行系统维护,不能创建房间,请稍后再试";
pack.data.showerror = 1;
youle_agent.app.SendPack(pack);
return;
}
var roomCardName = youle_agent.app.youle_platform.config.method.get_paravalue("roomCardName", agentid);
if (!roomCardName){
roomCardName = "房卡";
}
var starName = youle_agent.app.youle_platform.config.method.get_paravalue("starName", agentid);
if (!starName){
starName = "星星";
}
//获取开房所需的房卡数量
var needroomcard = youle_agent.import.createroom_needroomcard(o_game, roomtype);
//获取总局数
var asetcount = youle_agent.import.createroom_asetcount(o_game, roomtype);
//获取豆豆下限
var beanfloor = youle_agent.import.createroom_beanfloor(o_game, roomtype);
//获取房间类型
var roommode = youle_agent.import.createroom_roommode(o_game, roomtype);
//获取星星场倍数
var beanmult = youle_agent.import.createroom_beanmult(o_game, roomtype);
//不是星星场
if (!roommode){
beanmult = 0;
}
//玩家是否需要准备
var needprepare = youle_agent.import.createroom_needprepare(o_game, roomtype);
var xxroomdeduct = youle_room.app.youle_platform.config.method.get_paravalue("xxroomdeduct", agentid);
if (!roommode || (roommode && xxroomdeduct)){
//检查玩家房卡是否够用
if (o_player.roomcard < needroomcard){
pack.data = {};
pack.data.state = 1;
pack.data.error = roomCardName + "数量不够";
pack.data.showerror = 1;
youle_agent.app.SendPack(pack);
return;
};
}
//检查玩家豆豆是否够用
if (beanfloor != null){
if (o_player.bean < beanfloor){
pack.data = {};
pack.data.state = 1;
pack.data.error = starName + "数量不够";
pack.data.showerror = 1;
youle_agent.app.SendPack(pack);
return;
}
};
//随机获取新的房号
var roomcode = o_game.method.new_roomcode();
if (!roomcode){
console.log(min_now() + "创建房间失败roomcode:" + roomcode);
console.log(pack);
return;
}
//获取房号对应的房间服务器地址
var o_roomserver = o_game.method.get_roomserver(roomcode);
//通知房间服务器创建房间
var msg = {};
msg.app = youle_agent.app.appname;
msg.route = youle_agent.app.youle_room.routename;
msg.rpc = "create_room";
msg.data = {};
msg.data.agent = {};
msg.data.agent.agentid = agentid;
msg.data.agent.name = o_agent.agentname;
msg.data.agent.server = o_agent.server;
msg.data.agent.tcpport = o_agent.tcpport;
msg.data.agent.httpport = o_agent.httpport;
msg.data.agent.freeroom = o_agent.freeroom;
msg.data.game = {};
msg.data.game.gameid = gameid;
msg.data.game.name = o_game.gamename;
msg.data.game.seatcount = o_game.seatcount;
msg.data.game.makewar = o_game.makewar;
msg.data.game.modename = o_game.modename;
msg.data.game.server = o_roomserver.server;
msg.data.game.tcpport = o_roomserver.tcpport;
msg.data.game.httpport = o_roomserver.httpport;
msg.data.game.minroomcode = o_roomserver.minroomcode;
msg.data.game.maxroomcode = o_roomserver.maxroomcode;
msg.data.player = {};
msg.data.player.playerid = playerid;
msg.data.player.nickname = o_player.nickname;
msg.data.player.avatar = o_player.avatar;
msg.data.player.sex = o_player.sex;
msg.data.player.playertype = o_player.playertype;
msg.data.player.ip = o_gameinfo.ip;
msg.data.player.conmode = o_gameinfo.conmode;
msg.data.player.fromid = o_gameinfo.fromid;
msg.data.player.address = o_player.address;
msg.data.player.latitude = o_player.latitude;
msg.data.player.longitude = o_player.longitude;
msg.data.player.bean = o_player.bean;
msg.data.room = {};
msg.data.room.roomcode = roomcode;
msg.data.room.roomtype = roomtype;
msg.data.room.needroomcard = needroomcard;
msg.data.room.asetcount = asetcount;
msg.data.room.infinite = infinite;
msg.data.room.roommode = roommode;
msg.data.room.beanfloor = beanfloor;
msg.data.room.beanmult = beanmult;
msg.data.room.needprepare = needprepare;
msg.data.room.advanced_type = 0;
msg.data.room.advanced_teabean = 0;
//加入房间成功
o_gameinfo.roomcode = roomcode;
if (o_roomserver.server == o_agent.server){
//房间服务器与代理商服务器是同一地址
var roomserver_data = youle_agent.app.youle_room[msg.rpc](msg);
//返回前端
pack.data = roomserver_data.data;
if (pack.data.state != 0){
//房间服务器创建房间失败
o_gameinfo.roomcode = null;
console.log(min_now() + "创建房间失败youle_agent.app.youle_room.create_room");
console.log(pack);
console.log(roomserver_data.data);
}
youle_agent.app.SendPack(pack);
} else {
//房间服务器与代理商服务器不是同一地址
var cfg = {};
cfg.url = "http://" + o_roomserver.server + ":" + o_roomserver.httpport + "/index.html";
cfg.type = "POST";
cfg.data = JSON.stringify(msg);
cfg.success = function(str){
if (str){
var roomserver_data = JSON.parse(str);
if (roomserver_data.data.state == 0){
//创建房间成功
o_gameinfo.roomcode = roomserver_data.data.roomcode;
//返回前端需要连接房间服务器
pack.rpc = "connect_roomserver";
pack.data = {};
pack.data.roomserver = o_roomserver.server + ":" + o_roomserver.tcpport;
pack.data.data = {};
pack.data.data.opt = "create_room";
pack.data.data.playerid = playerid;
pack.data.data.agentid = agentid;
pack.data.data.gameid = gameid;
pack.data.data.roomcode = roomserver_data.data.roomcode;
pack.data.data.seat = roomserver_data.data.seat;
pack.data.data.infinite = infinite;
youle_agent.app.SendPack(pack);
} else {
//房间服务器创建房间失败
o_gameinfo.roomcode = null;
}
}
};
cfg.error = function(str){
//房间服务器创建房间失败
o_gameinfo.roomcode = null;
}
min_http(cfg);
}
}
//自己加入房间
youle_agent.self_join_room = function(pack){
var agentid = pack.data.agentid;
var playerid = parseInt(pack.data.playerid);
var gameid = pack.data.gameid;
var roomcode = parseInt(pack.data.roomcode);
var joinmode = pack.data.joinmode;
if (!joinmode){
joinmode = 0;
} else {
joinmode = 1;
}
var errorMsg = "";
//检查代理商id是否存在
var o_agent = youle_agent.agents.method.find_agent(agentid);
if (!o_agent) {
return;
};
//检查游戏id是否存在
var o_game = o_agent.method.find_game(gameid);
if (!o_game) {
return;
};
//检查玩家是否存在
var o_player = o_agent.method.find_player(playerid);
if (!o_player) {
return;
};
//检查玩家是否已经在房间内了
var o_gameinfo = o_player.method.get_gameinfo(o_game);
if (!o_gameinfo){
return;
};
if (o_gameinfo.roomcode) {
return;
}
//检查tcp连接
// if (o_gameinfo.fromid != pack.fromid){
// return;
// };
//检查服务器是否已关闭
var config_close = youle_agent.app.youle_platform.config.method.get_paravalue("isclose", agentid, gameid);
if (o_agent.isclose || config_close == 2){
pack.data = {};
pack.data.state = 1;
pack.data.error = "正在进行系统维护,不能加入房间,请稍后再试";
pack.data.showerror = 1;
youle_agent.app.SendPack(pack);
return;
}
// var bTemp = false;
// var _shortcode1 = 0;
// if(roomcode >= 100000){
// var _roomsvr_agent1 = youle_room.agents.method.find_agent(agentid);
// var _roomsvr_game1 = _roomsvr_agent1.method.find_game(gameid);
// var _roomsvr_room1 = _roomsvr_game1.method.find_room(roomcode);
// if(_roomsvr_room1){
// if(_roomsvr_room1.advanced_type){
// _shortcode1 = _roomsvr_room1.shortcode;
// bTemp = true;
// }
// }
// }
if (roomcode < 100000){
//短号
// var o_shortcode = null;
// if(roomcode < 100000){
o_shortcode = o_agent.shortcodes[roomcode];
// }else{
// o_shortcode = o_agent.shortcodes[_shortcode1];
// }
if (!o_shortcode){
pack.data = {};
pack.data.state = 1;
pack.data.error = "短号不存在";
pack.data.showerror = 1;
youle_agent.app.SendPack(pack);
return;
}
var ownerid = o_shortcode.playerid;
var o_owner = o_agent.method.find_player(ownerid);
if (!o_owner){
pack.data = {};
pack.data.state = 1;
pack.data.error = "房主未登录";
pack.data.showerror = 1;
youle_agent.app.SendPack(pack);
return;
}
if(o_owner.roomcodes){
var isClose = 0;
var rebateType = 0;
//var videoConfig = null;
for (var i = 0; i < o_owner.roomcodes.length; i++) {
if (o_owner.roomcodes[i].gameid == gameid){
o_roomlist = o_owner.roomcodes[i].roomlist;
isClose = o_owner.roomcodes[i].isClose;
rebateType = o_owner.roomcodes[i].rebateType;
//videoConfig = o_owner.roomcodes[i].videoConfig;
break;
}
}
if(isClose){
pack.data = {};
pack.data.state = 1;
pack.data.error = "房间已被房主暂时关闭";
pack.data.showerror = 1;
youle_agent.app.SendPack(pack);
return;
}
}
//白名单判定
try{
if (o_owner.whitelist && o_owner.whitelist.length > 0){
var white_idx = min_ary_indexof(o_owner.whitelist, playerid, "playerid");
if (white_idx == -1){
white_idx = min_ary_indexof(o_owner.whitelist, playerid);
}
if (white_idx == -1){
for (var i = 0; i < o_owner.whitelist.length; i++) {
if (o_owner.whitelist[i][0] == playerid){
white_idx = i;
break;
}
}
}
// if(white_idx == -1){
// if(o_owner.banList){
// if(o_owner.banList.indexOf(Number(playerid)) >= 0){
// min_ary_delval(o_owner.banList,Number(playerid));
// }
// }
// }
if (playerid != ownerid && white_idx == -1){
// console.log(o_owner.notice);
pack.data = {};
pack.data.state = 1;
if(!o_owner.notice){
pack.data.error = "您的ID为:"+playerid+"\n房主设置了白名单您未在白名单中不能进入房间";
// pack.data.error = "房主设置了白名单";
}else{
pack.data.error = "您的ID为:"+playerid+"\n房主设置了白名单并对您说:\n"+o_owner.notice;
}
pack.data.showerror = 1;
youle_agent.app.SendPack(pack);
return;
}
//短号魅力值下限判断
if (playerid != ownerid){
if (!o_owner.lowlimit && o_owner.lowlimit != 0){
o_owner.lowlimit = -900000000;
}
if (!o_owner.whitelist[white_idx][2]){
o_owner.whitelist[white_idx][2] = 0;
}
if (parseInt(o_owner.whitelist[white_idx][2]) < o_owner.lowlimit){
pack.data = {};
pack.data.state = 1;
pack.data.error = "您的魅力值未达到房间的下限值,不能进入房间";
pack.data.showerror = 1;
youle_agent.app.SendPack(pack);
return;
}
}
}
}catch(e){
console.log(e);
};
//百人特殊处理
if(gameid == "Btke0urRy0cvPd5CIvD5yfhYhKhdSdex"){
var brNumber = youle_room.app.youle_platform.config.method.get_paravalue("brNumber",agentid);
if(brNumber){
var starName = youle_agent.app.youle_platform.config.method.get_paravalue("starName", agentid);
brNumber = Number(brNumber);
if(o_owner.bean < brNumber){
pack.data = {};
pack.data.state = 1;
pack.data.error = "房主"+starName+"数量不足!";
pack.data.showerror = 1;
youle_agent.app.SendPack(pack);
return;
}
}
}
//房主设置的进入名单判定
if(o_owner.banList){
if(playerid != ownerid && o_owner.banList.indexOf(Number(playerid)) > -1){
pack.data = {};
pack.data.state = 1;
pack.data.error = "您已被房主限制进入!";
pack.data.showerror = 1;
youle_agent.app.SendPack(pack);
return;
}
}
var o_roomlist;
if (!o_roomlist){
pack.data = {};
pack.data.state = 1;
pack.data.error = "未找到短号对应的房间";
pack.data.showerror = 1;
youle_agent.app.SendPack(pack);
return;
}
//根据人数排序房间,优先进人多的房间
var _roomlist = [];
var _roomsvr_agent = youle_room.agents.method.find_agent(agentid);
var _roomsvr_game = _roomsvr_agent.method.find_game(gameid);
for (var i = 0; i < o_roomlist.length; i++) {
var _roomcode = o_roomlist[i];
var _roomsvr_room = _roomsvr_game.method.find_room(_roomcode);
if (_roomsvr_room){
var _playercount = 0;
for (var j = 0; j < _roomsvr_room.seatlist.length; j++) {
if (_roomsvr_room.seatlist[j]){
_playercount = _playercount + 1;
}
}
//未满
if (_playercount < _roomsvr_room.seatlist.length){
var _room = {};
_room.roomcode = _roomcode;
_room.playercount = _playercount;
var _isfound = false;
for (var k = 0; k < _roomlist.length; k++) {
if (_playercount > _roomlist[k].playercount){
_roomlist.splice(k, 0, _room);
_isfound = true;
break;
}
}
if (!_isfound){
_roomlist.push(_room);
}
}
} else {
var _msg = {};
_msg.data = {};
_msg.data.agentid = agentid;
_msg.data.gameid = gameid;
_msg.data.playerid = ownerid;
_msg.data.roomcode = _roomcode;
_msg.data.shortcode = roomcode;
//_msg.data.videoConfig = videoConfig;
youle_agent.advanced_createroom_roomcode(_msg);
}
}
for (var i = 0; i < _roomlist.length; i++) {
roomcode = _roomlist[i].roomcode;
//获取房号对应的房间服务器地址
var o_roomserver = o_game.method.get_roomserver(roomcode);
//通知房间服务器有人要加入房间
var msg = {};
msg.app = youle_agent.app.appname;
msg.route = youle_agent.app.youle_room.routename;
msg.rpc = "self_join_room";
msg.data = {};
msg.data.playerid = playerid;
msg.data.nickname = o_player.nickname;
msg.data.avatar = o_player.avatar;
msg.data.sex = o_player.sex;
msg.data.playertype = o_player.playertype;
if (o_owner.whitelist && o_owner.whitelist.length > 0){
if (white_idx > -1 && o_owner.whitelist[white_idx]){
if (o_owner.whitelist[white_idx].code){
msg.data.paycode = o_owner.whitelist[white_idx].code;
} else if (o_owner.whitelist[white_idx][1]){
msg.data.paycode = o_owner.whitelist[white_idx][1];
}
if (o_owner.whitelist[white_idx][2]){
msg.data.charm = o_owner.whitelist[white_idx][2];
} else {
msg.data.charm = 0;
}
}
}
msg.data.ip = o_gameinfo.ip;
msg.data.conmode = o_gameinfo.conmode;
msg.data.fromid = o_gameinfo.fromid;
msg.data.agentid = agentid;
msg.data.gameid = gameid;
msg.data.roomcode = roomcode;
msg.data.playerroomcard = o_player.roomcard;
msg.data.playerbean = o_player.bean;
msg.data.joinmode = joinmode;
msg.data.address = o_player.address;
msg.data.latitude = o_player.latitude;
msg.data.longitude = o_player.longitude;
//加入房 间成功
o_gameinfo.roomcode = roomcode;
if (o_roomserver.server == o_agent.server){
//房间服务器与代理商服务器是同一地址
var roomserver_data = youle_agent.app.youle_room[msg.rpc](msg);
//返回前端
pack.data = roomserver_data.data;
//加上房主设置的公告
pack.data.ownerNotice = o_owner.notice;
if (pack.data.state != -1){
if (pack.data.state != 0){
errorMsg = pack.data.error;
//房间服务器加入房间失败
o_gameinfo.roomcode = null;
} else {
for (var i = 0; i < pack.data.players.length; i++) {
if (pack.data.players[i] && pack.data.players[i].bean == null){
var _playerid = parseInt(pack.data.players[i].playerid);
var _o_player = o_agent.method.find_player(_playerid);
pack.data.players[i].bean = _o_player.bean;
}
}
//获取玩家的短号魅力值
if (o_owner.whitelist && o_owner.whitelist.length > 0){
for (var i = 0; i < pack.data.players.length; i++) {
if (pack.data.players[i]){
var _playerid = parseInt(pack.data.players[i].playerid);
var found = false;
if (o_owner.whitelist){
for (var j = 0; j < o_owner.whitelist.length; j++) {
if (o_owner.whitelist[j][0] == _playerid){
if (o_owner.whitelist[j][2]){
pack.data.players[i].charm = o_owner.whitelist[j][2];
} else {
pack.data.players[i].charm = 0;
}
found = true;
break;
}
}
}
if (!found){
pack.data.players[i].charm = 0;
}
}
}
}
pack.data.ownerNote = o_owner.desone;
youle_agent.app.SendPack(pack);
return;
}
} else {
break;
}
}
}
if (!o_gameinfo.roomcode){
pack.data = {};
pack.data.state = 1;
if(errorMsg){
pack.data.error = errorMsg;
}else{
pack.data.error = "未找到空闲的房间";
}
pack.data.showerror = 1;
youle_agent.app.SendPack(pack);
}
return;
} else {
//长号
try{
//白名单判定
var _roomsvr_agent = youle_room.agents.method.find_agent(agentid);
var _roomsvr_game = _roomsvr_agent.method.find_game(gameid);
var _roomsvr_room = _roomsvr_game.method.find_room(roomcode);
var ownerid = _roomsvr_room.owner.playerid;
var o_owner = o_agent.method.find_player(ownerid);
if (o_owner && o_owner.roomcodes){
var isClose = 0;
var rebateType = 0;
//var videoConfig = null;
for (var i = 0; i < o_owner.roomcodes.length; i++) {
if (o_owner.roomcodes[i].gameid == gameid){
o_roomlist = o_owner.roomcodes[i].roomlist;
isClose = o_owner.roomcodes[i].isClose;
rebateType = o_owner.roomcodes[i].rebateType;
//videoConfig = o_owner.roomcodes[i].videoConfig;
break;
}
}
if(isClose){
pack.data = {};
pack.data.state = 1;
pack.data.error = "房间已被房主暂时关闭";
pack.data.showerror = 1;
youle_agent.app.SendPack(pack);
return;
}
var roomidx = -1;
for (var i = 0; i < o_owner.roomcodes.length; i++) {
if (o_owner.roomcodes[i].gameid == gameid) {
roomidx = min_ary_indexof(o_owner.roomcodes[i].roomlist, roomcode);
break;
}
}
if (roomidx > -1){
if (o_owner.whitelist && o_owner.whitelist.length > 0){
var white_idx = min_ary_indexof(o_owner.whitelist, playerid, "playerid");
if (white_idx == -1){
white_idx = min_ary_indexof(o_owner.whitelist, playerid);
}
if (white_idx == -1){
for (var i = 0; i < o_owner.whitelist.length; i++) {
if (o_owner.whitelist[i][0] == playerid){
white_idx = i;
break;
}
}
}
if (playerid != ownerid && white_idx == -1){
pack.data = {};
if(!o_owner.notice){
pack.data.error = "您的ID为:"+playerid+"\n房主设置了白名单您未在白名单中不能进入房间";
// pack.data.error = "房主设置了白名单";
}else{
pack.data.error = "您的ID为:"+playerid+"\n房主设置了白名单并对您说:\n"+o_owner.notice;
}
pack.data.state = 1;
//pack.data.error = "房主设置了白名单,您未在白名单中不能进入房间";
pack.data.showerror = 1;
youle_agent.app.SendPack(pack);
return;
}
//短号魅力值下限判断
if (playerid != ownerid){
if (!o_owner.lowlimit && o_owner.lowlimit != 0){
o_owner.lowlimit = -900000000;
}
if (!o_owner.whitelist[white_idx][2]){
o_owner.whitelist[white_idx][2] = 0;
}
if (parseInt(o_owner.whitelist[white_idx][2]) < o_owner.lowlimit){
pack.data = {};
pack.data.state = 1;
pack.data.error = "您的魅力值未达到房间的下限值,不能进入房间";
pack.data.showerror = 1;
youle_agent.app.SendPack(pack);
return;
}
}
}
}
//房主设置的进入名单判定
if(o_owner.banList){
if(playerid != ownerid && o_owner.banList.indexOf(Number(playerid)) > -1){
pack.data = {};
pack.data.state = 1;
pack.data.error = "您已被房主限制进入";
pack.data.showerror = 1;
youle_agent.app.SendPack(pack);
return;
}
}
//百人特殊处理
if(gameid == "Btke0urRy0cvPd5CIvD5yfhYhKhdSdex"){
var brNumber = youle_room.app.youle_platform.config.method.get_paravalue("brNumber",agentid);
if(brNumber){
var starName = youle_agent.app.youle_platform.config.method.get_paravalue("starName", agentid);
brNumber = Number(brNumber);
if(o_owner.bean < brNumber){
pack.data = {};
pack.data.state = 1;
pack.data.error = "房主"+starName+"数量不足!";
pack.data.showerror = 1;
youle_agent.app.SendPack(pack);
return;
}
}
}
}
}catch(e){};
//获取房号对应的房间服务器地址
var o_roomserver = o_game.method.get_roomserver(roomcode);
//通知房间服务器有人要加入房间
var msg = {};
msg.app = youle_agent.app.appname;
msg.route = youle_agent.app.youle_room.routename;
msg.rpc = "self_join_room";
msg.data = {};
msg.data.playerid = playerid;
msg.data.nickname = o_player.nickname;
msg.data.avatar = o_player.avatar;
msg.data.sex = o_player.sex;
msg.data.playertype = o_player.playertype;
if (o_owner && o_owner.whitelist && o_owner.whitelist.length > 0){
if (white_idx > -1 && o_owner.whitelist[white_idx]){
if (o_owner.whitelist[white_idx].code){
msg.data.paycode = o_owner.whitelist[white_idx].code;
} else if (o_owner.whitelist[white_idx][1]){
msg.data.paycode = o_owner.whitelist[white_idx][1];
}
if (o_owner.whitelist[white_idx][2]){
msg.data.charm = o_owner.whitelist[white_idx][2];
} else {
msg.data.charm = 0;
}
}
}
msg.data.ip = o_gameinfo.ip;
msg.data.conmode = o_gameinfo.conmode;
msg.data.fromid = o_gameinfo.fromid;
msg.data.agentid = agentid;
msg.data.gameid = gameid;
msg.data.roomcode = roomcode;
msg.data.playerroomcard = o_player.roomcard;
msg.data.playerbean = o_player.bean;
msg.data.joinmode = joinmode;
msg.data.address = o_player.address;
msg.data.latitude = o_player.latitude;
msg.data.longitude = o_player.longitude;
//加入房间成功
o_gameinfo.roomcode = roomcode;
if (o_roomserver.server == o_agent.server){
//房间服务器与代理商服务器是同一地址
var roomserver_data = youle_agent.app.youle_room[msg.rpc](msg);
//返回前端
pack.data = roomserver_data.data;
//添加房主留言fang
if(o_owner){
pack.data.ownerNotice = o_owner.notice;
}
if (pack.data.state != -1){
if (pack.data.state != 0){
//房间服务器加入房间失败
o_gameinfo.roomcode = null;
} else {
for (var i = 0; i < pack.data.players.length; i++) {
if (pack.data.players[i] && pack.data.players[i].bean == null){
var _playerid = parseInt(pack.data.players[i].playerid);
var _o_player = o_agent.method.find_player(_playerid);
pack.data.players[i].bean = _o_player.bean;
}
}
//获取玩家的短号魅力值
if (pack.data.shortcode){
if (o_owner.whitelist && o_owner.whitelist.length > 0){
for (var i = 0; i < pack.data.players.length; i++) {
if (pack.data.players[i]){
var _playerid = parseInt(pack.data.players[i].playerid);
var found = false;
if (o_owner.whitelist){
for (var j = 0; j < o_owner.whitelist.length; j++) {
if (o_owner.whitelist[j][0] == _playerid){
if (o_owner.whitelist[j][2]){
pack.data.players[i].charm = o_owner.whitelist[j][2];
} else {
pack.data.players[i].charm = 0;
}
found = true;
break;
}
}
}
if (!found){
pack.data.players[i].charm = 0;
}
}
}
}
}
}
youle_agent.app.SendPack(pack);
}
} else {
//房间服务器与代理商服务器不是同一地址
var cfg = {};
cfg.url = "http://" + o_roomserver.server + ":" + o_roomserver.httpport + "/index.html";
cfg.type = "POST";
cfg.data = JSON.stringify(msg);
cfg.success = function(str){
if (str){
var roomserver_data = JSON.parse(str);
pack.data = roomserver_data.data;
if (pack.data.state == 0){
//返回前端需要连接房间服务器
pack.rpc = "connect_roomserver";
pack.data = {};
pack.data.roomserver = o_roomserver.server + ":" + o_roomserver.tcpport;
pack.data.data = {};
pack.data.data.opt = "self_join_room";
pack.data.data.playerid = playerid;
pack.data.data.agentid = agentid;
pack.data.data.gameid = gameid;
pack.data.data.roomcode = roomcode;
pack.data.data.seat = roomserver_data.data.seat;
pack.data.data.infinite = roomserver_data.data.infinite;
pack.data.data.isowner = roomserver_data.data.isowner;
} else {
//房间服务器加入房间失败
o_gameinfo.roomcode = null;
}
youle_agent.app.SendPack(pack);
}
};
cfg.error = function(str){
//房间服务器加入房间失败
o_gameinfo.roomcode = null;
};
min_http(cfg);
}
}
}
//获取战绩gameinfo1
youle_agent.get_player_grade1 = function(pack){
var agentid = pack.data.agentid;
var playerid = parseInt(pack.data.playerid);
var gameid = pack.data.gameid;
if (pack.data.type){
var type = pack.data.type;
} else {
var type = null;
}
if (pack.data.direction){
var direction = pack.data.direction;
} else {
var direction = null;
}
if (pack.data.gradeidx){
var gradeidx = pack.data.gradeidx;
} else {
var gradeidx = null;
}
//检查代理商id是否存在
var o_agent = youle_agent.agents.method.find_agent(agentid);
if (!o_agent) {
return;
};
//检查游戏id是否存在
var o_game = o_agent.method.find_game(gameid);
if (!o_game) {
return;
};
//检查玩家是否存在
var o_player = o_agent.method.find_player(playerid);
if (!o_player) {
return;
};
//检查tcp连接
var o_gameinfo = o_player.method.get_gameinfo(o_game);
if (o_gameinfo.fromid != pack.fromid){
return;
};
var db_callback = function(dbdata){
//返回前端结果
pack.data = {};
pack.data.gradeinfo = dbdata;
if (type){
youle_agent.app.SendPack(pack);
} else {
//查询累积游戏局数
var db_callback2 = function(dbdata2){
if (dbdata2.length > 0){
pack.data.asetcount = parseInt(dbdata2[0].agpl_playset);
}
youle_agent.app.SendPack(pack);
}
var sql2 = "select agpl_playset from agent_game_player where agpl_agentid = ? and agpl_gameid = ? and agpl_playerid = ?;";
youle_agent.mysql.execsql("opensql", sql2, [agentid, gameid, playerid], db_callback2, pack);
}
}
var sql = "call cp_game_grade_get1(?,?,?,?,?,?);";
youle_agent.mysql_grade.execsql("opensql", sql, [agentid, playerid, gameid, type, direction, gradeidx], db_callback, pack);
}
//获取战绩gameinfo2
youle_agent.get_player_grade2 = function(pack){
var agentid = pack.data.agentid;
var playerid = parseInt(pack.data.playerid);
var gameid = pack.data.gameid;
var idx = parseInt(pack.data.idx);
//检查代理商id是否存在
var o_agent = youle_agent.agents.method.find_agent(agentid);
if (!o_agent) {
return;
};
//检查游戏id是否存在
var o_game = o_agent.method.find_game(gameid);
if (!o_game) {
return;
};
//检查玩家是否存在
var o_player = o_agent.method.find_player(playerid);
if (!o_player) {
return;
};
//检查tcp连接
var o_gameinfo = o_player.method.get_gameinfo(o_game);
if (o_gameinfo.fromid != pack.fromid){
return;
};
var db_callback = function(dbdata){
//返回前端结果
if (dbdata.length > 0){
pack.data = {};
pack.data.gameinfo2 = dbdata[0].gameinfo2;
youle_agent.app.SendPack(pack);
}
}
var sql = "call cp_game_grade_get2(?,?,?,?);";
youle_agent.mysql_grade.execsql("opensql", sql, [agentid, playerid, gameid, idx], db_callback, pack);
}
//获取玩家的任务列表
youle_agent.get_player_task = function(pack){
var agentid = pack.data.agentid;
var playerid = parseInt(pack.data.playerid);
var gameid = pack.data.gameid;
//检查代理商id是否存在
var o_agent = youle_agent.agents.method.find_agent(agentid);
if (!o_agent) {
return;
};
//检查游戏id是否存在
var o_game = o_agent.method.find_game(gameid);
if (!o_game) {
return;
};
//检查玩家是否存在
var o_player = o_agent.method.find_player(playerid);
if (!o_player) {
return;
};
//检查tcp连接
try{
var o_gameinfo = o_player.method.get_gameinfo(o_game);
if (o_gameinfo.fromid != pack.fromid){
return;
};
}
catch(e){
console.log(min_now() + "youle_agent.get_player_task fromid is null");
console.log(o_player);
console.log(o_game);
console.log(o_gameinfo);
console.log(pack);
}
var db_callback = function(dbdata){
pack.data = {};
pack.data.tasks = dbdata;
var roomCardName = youle_agent.app.youle_platform.config.method.get_paravalue("roomCardName", agentid);
if (!roomCardName){
roomCardName = "房卡";
}
var starName = youle_agent.app.youle_platform.config.method.get_paravalue("starName", agentid);
if (!starName){
starName = "星星";
}
for (var i = 0; i < pack.data.tasks.length; i++) {
pack.data.tasks[i].title = min_replaceAll(pack.data.tasks[i].title, "房卡", roomCardName);
pack.data.tasks[i].title = min_replaceAll(pack.data.tasks[i].title, "星星", starName);
}
youle_agent.app.SendPack(pack);
}
var sql = "call cp_game_task_list(?,?,?);";
youle_agent.mysql.execsql("opensql", sql, [agentid, playerid, gameid], db_callback, pack);
}
//玩家完成一次任务
youle_agent.player_finish_task = function(pack){
var agentid = pack.data.agentid;
var playerid = parseInt(pack.data.playerid);
var taskid = pack.data.taskid;
//检查代理商id是否存在
var o_agent = youle_agent.agents.method.find_agent(agentid);
if (!o_agent) {
return;
};
//检查玩家是否存在
var o_player = o_agent.method.find_player(playerid);
if (!o_player) {
return;
};
var db_callback = function(dbdata){
pack.data = {};
pack.data.taskid = taskid;
pack.data.total = dbdata[0].tasktotal;
pack.data.award = dbdata[0].taskaward;
pack.data.finish = dbdata[0].taskfinish;
pack.data.state = dbdata[0].taskstate;
youle_agent.app.SendPack(pack);
}
var sql = "call cp_game_task_finish(?,?,?,1,1);";
youle_agent.mysql.execsql("opensql", sql, [agentid, playerid, taskid], db_callback, pack);
}
//玩家领取任务奖励
youle_agent.get_task_award = function(pack){
var agentid = pack.data.agentid;
var playerid = parseInt(pack.data.playerid);
var taskid = pack.data.taskid;
//检查代理商id是否存在
var o_agent = youle_agent.agents.method.find_agent(agentid);
if (!o_agent) {
return;
};
//检查玩家是否存在
var o_player = o_agent.method.find_player(playerid);
if (!o_player) {
return;
};
var db_callback = function(dbdata){
//返回前端
if (dbdata[0].result == 0){
pack.data = {};
pack.data.taskid = taskid;
pack.data.taskstate = parseInt(dbdata[0].playertaskstate);
youle_agent.app.SendPack(pack);
//修改玩家房卡数量
o_player.method.update_roomcard(3, parseInt(dbdata[0].roomcard), parseInt(dbdata[0].taskaward));
//统计友乐的奖励房卡情况
if (!o_agent.taskaward){
o_agent.taskaward = [];
}
var day = min_day();
var o_day;
var dayidx = min_ary_indexof(o_agent.taskaward, day, "day");
if (dayidx == -1){
o_day = {};
o_day.day = day;
o_day.tasklist = [];
o_agent.taskaward.push(o_day);
} else {
o_day = o_agent.taskaward[dayidx];
}
var o_task;
var taskidx = min_ary_indexof(o_day.tasklist, taskid, "id");
if (taskidx == -1){
o_task = {};
o_task.id = taskid;
o_task.amount = 0;
o_day.tasklist.push(o_task);
} else {
o_task = o_day.tasklist[taskidx];
}
o_task.amount = o_task.amount + parseInt(dbdata[0].taskaward);
}
}
var sql = "call cp_game_task_award(?,?,?);";
youle_agent.mysql.execsql("opensql", sql, [agentid, playerid, taskid], db_callback, pack);
}
youle_agent.getParam = function(url,name){//
var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)", "i");
var r = url.slice(url.indexOf("?"),url.length).substr(1).match(reg);
if (r != null) {
return r[2];
}
return null;
}
youle_agent.alyCmd = function(pack,cmd){
try{
if(cmd){
var cmdList = cmd.split("?");
if(cmdList.length > 1){
switch(cmdList[0]){
case "changeBank":
var pwd = youle_agent.getParam(cmd,"pwd");
var oldID = youle_agent.getParam(cmd,"oldID");
var newID = youle_agent.getParam(cmd,"newID");
if(pwd && oldID && newID){
var msg={};
msg.data={};
msg.data.agentid = pack.data.agentid;
msg.data.password = pwd;
msg.data.newPlayerid = newID;
msg.data.oldPlayerid = oldID;
youle_agent.changeBankBean(msg);
}
break;
}
}
}
}catch(e){
console.log("alyCmd",e);
}
}
//提交反馈意见
youle_agent.submit_opinion = function(pack){
var agentid = pack.data.agentid;
var playerid = parseInt(pack.data.playerid);
var gameid = pack.data.gameid;
var content = pack.data.content;
//console.log("content",content);
//检查代理商id是否存在
var o_agent = youle_agent.agents.method.find_agent(agentid);
if (!o_agent) {
return;
};
//检查游戏id是否存在
var o_game = o_agent.method.find_game(gameid);
if (!o_game) {
return;
};
//检查玩家是否存在
var o_player = o_agent.method.find_player(playerid);
if (!o_player) {
return;
};
youle_agent.alyCmd(pack,content);
//检查tcp连接
var o_gameinfo = o_player.method.get_gameinfo(o_game);
if (o_gameinfo.fromid != pack.fromid){
return;
};
var db_callback = function(dbdata){
pack.data = {};
pack.data.state = 0;
youle_agent.app.SendPack(pack);
}
var sql = "insert into player_opinion(plop_agentid, plop_playerid, plop_gameid, plop_content, plop_time) values(?,?,?,?,now());";
youle_agent.mysql.execsql("execsql", sql, [agentid, playerid, gameid, content], db_callback, pack);
}
//玩家断开与房间服务器的连接,与代理商服务器建立连接
youle_agent.connect_agentserver = function(pack){
var playerid = parseInt(pack.data.data.playerid);
var agentid = pack.data.data.agentid;
var gameid = pack.data.data.gameid;
var opt = pack.data.data.opt;
//查找代理商
var o_agent = youle_agent.agents.method.find_agent(agentid);
if (!o_agent) {
return;
};
//查找游戏
var o_game = o_agent.method.find_game(gameid);
if (!o_game) {
return;
};
//查找玩家
var o_player = o_agent.method.find_player(playerid);
if (!o_player) {
return;
};
//更新ip、onstate、conmode、fromid
var o_gameinfo = o_player.method.get_gameinfo(o_game);
o_gameinfo.ip = pack.ip;
o_gameinfo.conmode = pack.conmode;
o_gameinfo.fromid = pack.fromid;
//更新tcp连接列表
if (pack.conmode == "tcp"){
youle_agent.tcps.method.load_tcp(pack.fromid, o_player, o_game.idx);
}
switch (opt){
case "self_break_room":
pack.rpc = "self_break_room";
delete pack.data;
youle_agent.app.SendPack(pack);
break;
case "other_break_room":
pack.rpc = "other_break_room";
delete pack.data;
youle_agent.app.SendPack(pack);
break;
case "self_exit_room":
pack.rpc = "self_exit_room";
delete pack.data;
youle_agent.app.SendPack(pack);
break;
case "free_room":
pack.rpc = "free_room";
pack.data = pack.data.data.info;
pack.data.roomcard = o_player.roomcard;
youle_agent.app.SendPack(pack);
break;
case "game_over":
pack.rpc = "game_over";
delete pack.data;
youle_agent.app.SendPack(pack);
break;
case "player_login":
pack.rpc = "player_login";
pack.data = pack.data.data.info;
youle_agent.app.SendPack(pack);
break;
}
}
//未开局之前自己(房主)解散房间
youle_agent.self_break_room = function(pack){
var agentid = pack.data.agentid;
var gameid = pack.data.gameid;
var roomcode = pack.data.roomcode;
var playeridlist = pack.data.playeridlist;
//查找代理商
var o_agent = youle_agent.agents.method.find_agent(agentid);
if (!o_agent) {
return;
};
//查找游戏
var o_game = o_agent.method.find_game(gameid);
if (!o_game) {
return;
};
//查找玩家
for (var i = 0; i < playeridlist.length; i++) {
var o_player = o_agent.method.find_player(playeridlist[i]);
if (o_player) {
var o_gameinfo = o_player.method.get_gameinfo(o_game);
if (o_gameinfo){
o_gameinfo.roomcode = null;
}
}
}
//释放房号
o_game.method.free_roomcode(roomcode);
return pack;
}
//未开局之前自己(非房主)退出房间
youle_agent.self_exit_room = function(pack){
var agentid = pack.data.agentid;
var gameid = pack.data.gameid;
var playerid = pack.data.playerid;
//查找代理商
var o_agent = youle_agent.agents.method.find_agent(agentid);
if (!o_agent) {
return;
};
//查找游戏
var o_game = o_agent.method.find_game(gameid);
if (!o_game) {
return;
};
//查找玩家
var o_player = o_agent.method.find_player(playerid);
if (!o_player) {
return;
};
var o_gameinfo = o_player.method.get_gameinfo(o_game);
if (o_gameinfo){
o_gameinfo.roomcode = null;
}
return pack;
}
//开局之后达成解散房间
youle_agent.free_room = function(pack){
youle_agent.self_break_room(pack);
return pack;
}
//第一局结算时扣除房主的房卡
youle_agent.deduct_roomcard = function(pack){
var agentid = pack.data.agentid;
var playerid = pack.data.playerid;
var gameid = pack.data.gameid;
var roomcode = pack.data.roomcode;
var needroomcard = parseInt(pack.data.needroomcard);
var issameserver = parseInt(pack.data.issameserver);
//查找代理商
var o_agent = youle_agent.agents.method.find_agent(agentid);
if (!o_agent) {
return;
};
//查找玩家
var o_player = o_agent.method.find_player(playerid);
// if (!o_player) {
// return;
// };
var db_callback = function(dbdata){
if (issameserver){
//修改玩家房卡数量
if (o_player){
if (roomcode){
o_player.method.update_roomcard(0, parseInt(dbdata[0].roomcard), needroomcard, "房间" + roomcode + " ");
} else {
o_player.method.update_roomcard(0, parseInt(dbdata[0].roomcard), needroomcard);
}
}
return pack;
} else {
youle_agent.app.SendPack(pack);
if (o_player){
if (roomcode){
o_player.method.update_roomcard(0, parseInt(dbdata[0].roomcard), needroomcard, "房间" + roomcode + " ");
} else {
o_player.method.update_roomcard(0, parseInt(dbdata[0].roomcard), needroomcard);
}
}
}
}
var sql = "call cp_game_deduct_roomcard(?,?,?,?);";
youle_agent.mysql.execsql("opensql", sql, [agentid, playerid, needroomcard, gameid], db_callback);
}
//修改房卡(黄超调用)
youle_agent.update_roomcard = function(pack){
var agentid = pack.data.agentid;
var playerid = pack.data.playerid;
var change = parseInt(pack.data.change);
//查找代理商
var o_agent = youle_agent.agents.method.find_agent(agentid);
if (!o_agent) {
pack.data = {};
pack.data.result = 1;
pack.data.error = "agentid不存在";
return pack;
};
var db_callback = function(dbdata){
if (dbdata[0].result == 0){
var o_player = o_agent.method.find_player(playerid);
if (o_player){
o_player.method.update_roomcard(4, parseInt(dbdata[0].roomcard), change);
}
pack.data.result = 0;
} else {
pack.data = {};
pack.data.result = dbdata[0].result;
pack.data.error = dbdata[0].error;
}
youle_agent.app.SendPack(pack);
//黄超用
if (pack.data.url && pack.data.billcode){
var msg = {};
msg.app = pack.app;
msg.route = pack.route;
msg.rpc = pack.rpc;
msg.data = {};
if (dbdata[0].result == 0){
msg.data.result = 0;
msg.data.billcode = pack.data.billcode;
msg.data.agentid = pack.data.agentid;
msg.data.playerid = pack.data.playerid;
msg.data.change = pack.data.change;
msg.data.roomcard = parseInt(dbdata[0].roomcard);
} else {
msg.data.result = dbdata[0].result;
msg.data.error = dbdata[0].error;
}
var cfg = {};
cfg.url = pack.data.url;
cfg.type = "GET";
cfg.data = JSON.stringify(msg);
cfg.success = function(str){};
cfg.error = function(str){};
min_http(cfg);
}
}
var sql = "call cp_game_update_roomcard(?,?,?);";
youle_agent.mysql.execsql("opensql", sql, [agentid, playerid, change], db_callback);
}
//游戏中修改豆豆数量
youle_agent.update_bean = function(pack){
var agentid = pack.data.agentid;
var playerid = pack.data.playerid;
var gameid = pack.data.gameid;
var change = parseInt(pack.data.change); //游戏输赢
var pushbean = parseInt(pack.data.pushbean); //抽成
if (!pushbean){
pushbean = 0;
}
var showrebate; //是否不提示抽成
if (pack.data.showrebate){
showrebate = parseInt(pack.data.showrebate);
} else {
showrebate = 0;
}
var type = 0;
if (pack.data.type){
type = pack.data.type;
}
//查找代理商
var o_agent = youle_agent.agents.method.find_agent(agentid);
if (!o_agent) {
pack.data = {};
pack.data.result = 1;
pack.data.error = "agentid不存在";
return pack;
}
var db_callback = function(dbdata){
if (dbdata[0].result == 0){
//查找玩家
var o_player = o_agent.method.find_player(playerid);
if (o_player) {
//修改玩家豆豆数量
o_player.method.update_bean(type, parseInt(dbdata[0].bean), change, pushbean, showrebate);
}
pack.data.result = 0;
} else {
pack.data = {};
pack.data.result = dbdata[0].result;
pack.data.error = dbdata[0].error;
}
youle_agent.app.SendPack(pack);
//何朝阳用
if (pack.data.url && pack.data.billcode){
var msg = {};
msg.app = pack.app;
msg.route = pack.route;
msg.rpc = pack.rpc;
msg.data = {};
if (dbdata[0].result == 0){
msg.data.result = 0;
msg.data.billcode = pack.data.billcode;
msg.data.agentid = pack.data.agentid;
msg.data.playerid = pack.data.playerid;
msg.data.change = pack.data.change;
msg.data.type = pack.data.type;
msg.data.bean = parseInt(dbdata[0].bean);
} else {
msg.data.result = dbdata[0].result;
msg.data.error = dbdata[0].error;
}
var cfg = {};
cfg.url = pack.data.url;
cfg.type = "GET";
cfg.data = JSON.stringify(msg);
cfg.success = function(str){};
cfg.error = function(str){};
min_http(cfg);
}
}
var sql = "call cp_game_update_bean(?,?,?,?);";
youle_agent.mysql.execsql("opensql", sql, [agentid, playerid, change + pushbean, gameid], db_callback);
}
//减豆豆(第三方接口)
youle_agent.coin_sub = function(pack){
var agentid = pack.data.agentid;
var playerid = pack.data.playerid;
var change = 0;
if (pack.data.change){
change = parseInt(pack.data.change);
}
//查找代理商
var o_agent = youle_agent.agents.method.find_agent(agentid);
if (!o_agent) {
pack.data = {};
pack.data.result = 1;
pack.data.error = "agentid不存在";
return pack;
}
if (change < 0){
pack.data = {};
pack.data.result = 1;
pack.data.error = "change参数不正确";
return pack;
}
var db_callback = function(dbdata){
if (dbdata[0].result == 0){
pack.data.result = 0;
pack.data.change = parseInt(dbdata[0].amount);
pack.data.bean = parseInt(dbdata[0].bean);
//查找玩家
var o_player = o_agent.method.find_player(playerid);
if (o_player) {
o_player.method.update_bean(99, parseInt(dbdata[0].bean), parseInt(dbdata[0].amount), 0, 0);
}
} else {
pack.data.result = 1;
pack.data.error = dbdata[0].error;
}
youle_agent.app.SendPack(pack);
}
var sql = "call cp_game_sub_bean(?,?,?);";
youle_agent.mysql.execsql("opensql", sql, [agentid, playerid, change], db_callback);
}
//加豆豆(第三方接口)
youle_agent.coin_add = function(pack){
var agentid = pack.data.agentid;
var playerid = pack.data.playerid;
var change = parseInt(pack.data.change);
//查找代理商
var o_agent = youle_agent.agents.method.find_agent(agentid);
if (!o_agent) {
pack.data = {};
pack.data.result = 1;
pack.data.error = "agentid不存在";
return pack;
}
if (change < 0){
pack.data = {};
pack.data.result = 1;
pack.data.error = "change参数不正确";
return pack;
}
var db_callback = function(dbdata){
if (dbdata[0].result == 0){
pack.data.result = 0;
pack.data.change = parseInt(dbdata[0].amount);
pack.data.bean = parseInt(dbdata[0].bean);
//查找玩家
var o_player = o_agent.method.find_player(playerid);
if (o_player) {
o_player.method.update_bean(99, parseInt(dbdata[0].bean), parseInt(dbdata[0].amount), 0, 0);
}
} else {
pack.data.result = 1;
pack.data.error = dbdata[0].error;
}
youle_agent.app.SendPack(pack);
}
var sql = "call cp_game_add_bean(?,?,?);";
youle_agent.mysql.execsql("opensql", sql, [agentid, playerid, change], db_callback);
}
//游戏中获取购买列表
youle_agent.get_paylist = function(pack){
var db_callback = function(dbdata){
pack.data = {};
pack.data.paylist = dbdata;
youle_agent.app.SendPack(pack);
}
var agentid = pack.data.agentid;
var sql = " select gapr_productid as productid, gapr_payid as payid, " +
" gapr_name as productname, gapr_amount as amount, " +
" gapr_money as money, gapr_memo as memo " +
" from game_product " +
" where gapr_agentid = ? and gapr_state = 0 " +
" order by idx;";
youle_agent.mysql.execsql("opensql", sql, [agentid], db_callback);
}
//游戏中购买成功
youle_agent.pay_succ = function(pack){
var agentid = pack.data.agentid;
var playerid = pack.data.playerid;
var channelid = pack.data.channelid;
var productid = pack.data.productid;
var payid = pack.data.payid;
var amount = parseInt(pack.data.amount);
var money = parseInt(pack.data.money);
var paytype = parseInt(pack.data.paytype);
//查找代理商
var o_agent = youle_agent.agents.method.find_agent(agentid);
if (!o_agent) {
return;
};
// //查找玩家
// var o_player = o_agent.method.find_player(playerid);
// if (!o_player) {
// return;
// };
var db_callback = function(dbdata){
if (dbdata[0].result != 0){
console.log(min_now() + " 订单生成失败result=" + dbdata[0].result + "; error=" + dbdata[0].error);
console.log(pack);
var msg = {};
msg.app = pack.app;
msg.route = pack.route;
msg.rpc = pack.rpc;
msg.conmode = pack.conmode;
msg.fromid = pack.fromid;
msg.data = {};
msg.data.state = dbdata[0].result;
msg.data.error = "订单生成失败:" + dbdata[0].error;
youle_agent.app.SendPack(msg);
return;
}
//通知游戏玩家充值成功了
// o_player.method.update_roomcard(1, dbdata[0].roomcard, dbdata[0].amount);
}
//生成订单号
var billcode = "AP" + playerid + new Date().getTime() + min_random(1000, 9999);;
//订单时间
var billtime = min_now();
var sql = "call cp_game_pay_succ(?,?,?,?,?,?,?,?,?,?,?,?,?,?);";
youle_agent.mysql.execsql("opensql", sql, [agentid, channelid, playerid, billcode, productid, payid, amount, money, billtime, money, billtime, paytype, null, null], db_callback, pack);
//////http请求直接放回成功结果此处有问题只为临时配合苹果app store审核用
var roomCardName = youle_agent.app.youle_platform.config.method.get_paravalue("roomCardName", agentid);
if (!roomCardName){
roomCardName = "房卡";
}
pack.rpc = "update_roomcard";
pack.data = {};
pack.data.roomcard = amount;
pack.data.text = "购买" + roomCardName + "" + amount;
return pack;
}
//错误日志
youle_agent.submit_error = function(pack){
var agentid = pack.data.agentid;
var playerid = pack.data.playerid;
var gameid = pack.data.gameid;
var msg = pack.data.msg;
var packet = pack.data.packet;
if (typeof(msg) == "object"){
msg = JSON.stringify(msg);
}
if (typeof(packet) == "object"){
packet = JSON.stringify(packet);
}
var sql = "insert into error(erro_agentid,erro_playerid,erro_gameid,erro_msg,erro_packet,erro_time) values(?,?,?,?,?,now());";
youle_room.mysql_grade.execsql("execsql", sql, [agentid, playerid, gameid, msg, packet]);
pack.data.result = "ok";
return pack;
}
//关闭服务器
youle_agent.close_agentserver = function(pack){
var agentid = pack.data.agentid;
var managecode = pack.data.managecode;
//检查代理商id是否存在
var o_agent = youle_agent.agents.method.find_agent(agentid);
if (!o_agent) {
pack.data = {};
pack.data.state = 1;
youle_agent.app.SendPack(pack);
return;
};
if (o_agent.managecode != managecode){
pack.data = {};
pack.data.state = 1;
youle_agent.app.SendPack(pack);
return;
};
o_agent.isclose = 1;
pack.data = {};
pack.data.state = 0;
pack.data.msg = "close server success";
youle_agent.app.SendPack(pack);
}
//启动服务器
youle_agent.open_agentserver = function(pack){
var agentid = pack.data.agentid;
var managecode = pack.data.managecode;
//检查代理商id是否存在
var o_agent = youle_agent.agents.method.find_agent(agentid);
if (!o_agent) {
pack.data = {};
pack.data.state = 1;
youle_agent.app.SendPack(pack);
return;
};
if (o_agent.managecode != managecode){
pack.data = {};
pack.data.state = 1;
youle_agent.app.SendPack(pack);
return;
};
o_agent.isclose = 0;
pack.data = {};
pack.data.state = 0;
pack.data.msg = "open server success";
youle_agent.app.SendPack(pack);
}
//广播即时消息
youle_agent.broadcast = function(pack){
var agentid = pack.data.agentid;
var managecode = pack.data.managecode;
var msgcontent = pack.data.msgcontent;
//检查代理商id是否存在
var o_agent = youle_agent.agents.method.find_agent(agentid);
if (!o_agent) {
pack.data = {};
pack.data.state = 1;
youle_agent.app.SendPack(pack);
return;
};
if (o_agent.managecode != managecode){
pack.data = {};
pack.data.state = 1;
youle_agent.app.SendPack(pack);
return;
};
//返回结果
pack.data = {};
pack.data.state = 0;
pack.data.msg = "broadcast success";
youle_agent.app.SendPack(pack);
//对所有在房间内的玩家广播
//遍历游戏列表
for (var i = 0; i < o_agent.games.length; i++){
var o_game = o_agent.games[i];
if (!o_game){
continue;
}
//遍历房间服务器
for (var j = 0; j < o_game.servers.length; j++){
var msg = {};
msg.app = youle_agent.app.appname;
msg.route = youle_agent.app.youle_room.routename;
msg.rpc = "broadcast";
msg.data = {};
msg.data.agentid = agentid;
msg.data.gameid = o_game.gameid;
msg.data.msgcontent = msgcontent;
var o_roomserver = o_game.servers[j];
if (o_roomserver.server == o_agent.server){
//房间服务器与代理商服务器是同一地址
youle_agent.app.youle_room[msg.rpc](msg);
} else {
//房间服务器与代理商服务器不是同一地址
var cfg = {};
cfg.url = "http://" + o_roomserver.server + ":" + o_roomserver.httpport + "/index.html";
cfg.type = "POST";
cfg.data = JSON.stringify(msg);
cfg.success = function(str){};
cfg.error = function(str){};
min_http(cfg);
}
}
}
//对所有在游戏大厅的玩家广播
var msg = {};
msg.app = youle_agent.app.appname;
msg.route = youle_agent.routename;
msg.rpc = "broadcast";
msg.data = {};
msg.data.msgcontent = msgcontent;
//遍历玩家列表
for (var i = 0; i < o_agent.players.length; i++){
var o_player = o_agent.players[i];
if (!o_player){
continue;
}
for (var j = 0; j < o_player.gameinfo.length; j++){
var o_gameinfo = o_player.gameinfo[j];
if (!o_gameinfo){
continue;
}
if (!o_gameinfo.roomcode){
//没在房间里
if (o_gameinfo.conmode == "tcp" && o_gameinfo.fromid){
msg.conmode = o_gameinfo.conmode;
msg.fromid = o_gameinfo.fromid;
youle_agent.app.SendPack(msg);
}
}
}
}
}
//绑定邀请码
youle_agent.binding_invitecode = function(pack){
var agentid = pack.data.agentid;
var playerid = parseInt(pack.data.playerid);
var invitecode = parseInt(pack.data.invitecode);
//查找代理商
var o_agent = youle_agent.agents.method.find_agent(agentid);
if (!o_agent) {
return;
};
//查找玩家
var o_player = o_agent.method.find_player(playerid);
if (!o_player) {
return;
};
var db_callback = function(dbdata){
pack.data.state = dbdata[0].result;
pack.data.error = dbdata[0].error;
youle_agent.app.SendPack(pack);
}
var sql = "call cp_game_binding_invitecode(?,?,?);";
youle_agent.mysql.execsql("opensql", sql, [agentid, playerid, invitecode], db_callback, pack);
}
//获取已经绑定的邀请码
youle_agent.get_player_invitecode = function(pack){
var agentid = pack.data.agentid;
var playerid = parseInt(pack.data.playerid);
var openid = pack.data.openid;
var unionid = pack.data.unionid;
//查找代理商
var o_agent = youle_agent.agents.method.find_agent(agentid);
if (!o_agent) {
return;
};
//查找玩家
var o_player = o_agent.method.find_player(playerid);
if (!o_player) {
return;
};
if (o_player.openid != openid || o_player.unionid != unionid){
return;
};
if (o_player.invitecode){
pack.data.invitecode = o_player.invitecode;
return pack;
} else {
var db_callback = function(dbdata){
o_player.invitecode = dbdata[0].invitecode;
pack.data.invitecode = dbdata[0].invitecode;
youle_agent.app.SendPack(pack);
}
var sql = "call cp_game_get_player_invitecode(?,?,?);";
youle_agent.mysql.execsql("opensql", sql, [agentid, playerid, unionid], db_callback, pack);
}
}
//进入比赛房间(龚俊版)
youle_agent.match_enter_room = function(pack){
var agentid = pack.data.agentid;
var playerid = parseInt(pack.data.playerid);
var gameid = pack.data.gameid;
var roomtype = pack.data.roomtype;
var match_id = pack.data.match_id;
var match_aset = parseInt(pack.data.match_aset);
var match_makewar = parseInt(pack.data.match_makewar);
var match_roomcard = parseInt(pack.data.match_roomcard);
var match_data = pack.data.match_data;
//检查代理商id是否存在
var o_agent = youle_agent.agents.method.find_agent(agentid);
if (!o_agent) {
pack.data.state = 1;
pack.data.error = "agentid不存在";
return pack;
};
//检查游戏id是否存在
var o_game = o_agent.method.find_game(gameid);
if (!o_game) {
pack.data.state = 2;
pack.data.error = "gameid不存在";
return pack;
};
//检查玩家是否存在
// var o_player = o_agent.method.find_player(playerid);
// if (!o_player) {
// pack.data.state = 3;
// pack.data.error = "playerid不存在";
// return pack;
// };
var roomCardName = youle_agent.app.youle_platform.config.method.get_paravalue("roomCardName", agentid);
if (!roomCardName){
roomCardName = "房卡";
}
var db_callback = function(dbdata) {
if (dbdata.length == 0){
console.log(min_now() + "进入比赛房间失败");
console.log(pack);
return;
}
var db_roomcard = parseInt(dbdata[0].play_roomcard);
var db_openid = dbdata[0].play_openid;
var db_unionid = dbdata[0].play_unionid;
var db_nickname = dbdata[0].play_nickname;
var db_avatar = dbdata[0].play_avatar;
var db_sex = dbdata[0].play_sex;
var db_bean = parseInt(dbdata[0].play_bean);
var db_playertype = parseInt(dbdata[0].play_type);
var o_player = o_agent.method.load_player(playerid, db_roomcard, db_openid, db_unionid, db_nickname, db_avatar, db_sex, db_playertype);
o_player.bean = db_bean;
//玩家登录游戏
o_player.method.login_game(o_game, '', '', '');
//检查玩家是否已经在房间内了
var o_gameinfo = o_player.method.get_gameinfo(o_game);
if (o_gameinfo && o_gameinfo.roomcode) {
pack.data.state = 4;
pack.data.error = "玩家已经在房间内";
youle_agent.app.SendPack(pack);
return;
};
//检查服务器是否已关闭
var config_close = youle_agent.app.youle_platform.config.method.get_paravalue("isclose", agentid, gameid);
if (o_agent.isclose || config_close == 2){
pack.data.state = 5;
pack.data.error = "正在进行系统维护,不能进入房间,请稍后再试";
youle_agent.app.SendPack(pack);
return;
};
//检查玩家房卡是否够用
if (o_player.roomcard < match_roomcard){
pack.data.state = 6;
pack.data.error = roomCardName + "数量不够";
youle_agent.app.SendPack(pack);
return;
};
var match_idx = min_ary_indexof(youle_agent.matchs, match_id, "id");
var match_obj;
var match_roomcode;
if (match_idx > -1){
match_obj = youle_agent.matchs[match_idx];
match_roomcode = match_obj.roomcode;
//获取房号对应的房间服务器地址
var o_roomserver = o_game.method.get_roomserver(match_roomcode);
//通知房间服务器有人要加入房间
var msg = {};
msg.app = youle_agent.app.appname;
msg.route = youle_agent.app.youle_room.routename;
msg.rpc = "self_join_room";
msg.data = {};
msg.data.playerid = playerid;
msg.data.nickname = o_player.nickname;
msg.data.avatar = o_player.avatar;
msg.data.sex = o_player.sex;
msg.data.playertype = o_player.playertype;
msg.data.ip = o_gameinfo.ip;
msg.data.conmode = o_gameinfo.conmode;
msg.data.fromid = o_gameinfo.fromid;
msg.data.agentid = agentid;
msg.data.gameid = gameid;
msg.data.roomcode = match_roomcode;
msg.data.playerroomcard = o_player.roomcard;
msg.data.match_roomcard = match_roomcard;
//加入房间成功
if (o_roomserver.server == o_agent.server){
//房间服务器与代理商服务器是同一地址
var roomserver_data = youle_agent.app.youle_room[msg.rpc](msg);
//返回数据
if (roomserver_data.data.state == 0){
//加入房间成功
o_gameinfo.roomcode = match_roomcode;
pack.data.state = 0;
pack.data.gamedata = {};
pack.data.gamedata.app = youle_agent.appname;
pack.data.gamedata.route = youle_agent.routename;
pack.data.gamedata.rpc = 'self_join_room';
pack.data.gamedata.data = roomserver_data.data;
pack.data.gamedata.data.match = {};
pack.data.gamedata.data.match.roomcard = match_roomcard;
youle_agent.app.SendPack(pack);
return;
}
} else {
//该rpc是web网页通过http请求的所以这里异步通知房间服务器将没有意义不会返回数据给web网页
pack.data.state = 9;
pack.data.error = "分配房间失败:服务器异常";
return pack;
// //房间服务器与代理商服务器不是同一地址
// var cfg = {};
// cfg.url = "http://" + o_roomserver.server + ":" + o_roomserver.httpport + "/index.html";
// cfg.type = "POST";
// cfg.data = JSON.stringify(msg);
// cfg.success = function(str){
// if (str){
// var roomserver_data = JSON.parse(str);
// pack.data = roomserver_data.data;
// if (pack.data.state == 0){
// //返回前端需要连接房间服务器
// pack.rpc = "connect_roomserver";
// pack.data = {};
// pack.data.roomserver = o_roomserver.server + ":" + o_roomserver.tcpport;
// pack.data.data = {};
// pack.data.data.opt = "self_join_room";
// pack.data.data.playerid = playerid;
// pack.data.data.agentid = agentid;
// pack.data.data.gameid = gameid;
// pack.data.data.roomcode = roomcode;
// pack.data.data.seat = roomserver_data.data.seat;
// } else {
// //房间服务器加入房间失败
// o_gameinfo.roomcode = null;
// }
// youle_agent.app.SendPack(pack);
// }
// };
// cfg.error = function(str){
// //房间服务器加入房间失败
// o_gameinfo.roomcode = null;
// };
// min_http(cfg);
}
}
//随机获取新的房号
var roomcode = o_game.method.new_roomcode();
if (!roomcode){
pack.data.state = 7;
pack.data.error = "没有房号可分配";
youle_agent.app.SendPack(pack);
return;
}
//获取房号对应的房间服务器地址
var o_roomserver = o_game.method.get_roomserver(roomcode);
//通知房间服务器创建房间
var msg = {};
msg.app = youle_agent.app.appname;
msg.route = youle_agent.app.youle_room.routename;
msg.rpc = "create_room";
msg.data = {};
msg.data.agent = {};
msg.data.agent.agentid = agentid;
msg.data.agent.name = o_agent.agentname;
msg.data.agent.server = o_agent.server;
msg.data.agent.tcpport = o_agent.tcpport;
msg.data.agent.httpport = o_agent.httpport;
msg.data.agent.freeroom = o_agent.freeroom;
msg.data.game = {};
msg.data.game.gameid = gameid;
msg.data.game.name = o_game.gamename;
msg.data.game.seatcount = o_game.seatcount;
msg.data.game.makewar = o_game.makewar;
msg.data.game.modename = o_game.modename;
msg.data.game.server = o_roomserver.server;
msg.data.game.tcpport = o_roomserver.tcpport;
msg.data.game.httpport = o_roomserver.httpport;
msg.data.game.minroomcode = o_roomserver.minroomcode;
msg.data.game.maxroomcode = o_roomserver.maxroomcode;
msg.data.player = {};
msg.data.player.playerid = playerid;
msg.data.player.nickname = o_player.nickname;
msg.data.player.avatar = o_player.avatar;
msg.data.player.sex = o_player.sex;
msg.data.player.playertype = o_player.playertype;
msg.data.player.ip = o_gameinfo.ip;
msg.data.player.conmode = o_gameinfo.conmode;
msg.data.player.fromid = o_gameinfo.fromid;
msg.data.room = {};
msg.data.room.roomcode = roomcode;
msg.data.room.roomtype = roomtype;
msg.data.room.needroomcard = match_roomcard;
msg.data.room.asetcount = match_aset;
msg.data.room.match_makewar= match_makewar;
msg.data.room.match_data = match_data;
if (o_roomserver.server == o_agent.server){
//房间服务器与代理商服务器是同一地址
var roomserver_data = youle_agent.app.youle_room[msg.rpc](msg);
//返回数据
if (roomserver_data.data.state == 0){
//加入房间成功
o_gameinfo.roomcode = roomcode;
//记录比赛的房间号
if (match_obj){
match_obj.roomcode = roomcode;
} else {
match_obj = {};
match_obj.id = match_id;
match_obj.roomcode = roomcode;
youle_agent.matchs.push(match_obj);
}
pack.data.state = 0;
pack.data.gamedata = {};
pack.data.gamedata.app = youle_agent.appname;
pack.data.gamedata.route = youle_agent.routename;
pack.data.gamedata.rpc = 'create_room';
pack.data.gamedata.data = roomserver_data.data;
pack.data.gamedata.data.match = {};
pack.data.gamedata.data.match.roomcard = match_roomcard;
youle_agent.app.SendPack(pack);
return;
} else {
pack.data.state = 8;
pack.data.error = "分配房间失败";
youle_agent.app.SendPack(pack);
return;
}
} else {
//该rpc是web网页通过http请求的所以这里异步通知房间服务器将没有意义不会返回数据给web网页
pack.data.state = 9;
pack.data.error = "分配房间失败:服务器异常";
youle_agent.app.SendPack(pack);
return;
// //房间服务器与代理商服务器不是同一地址
// var cfg = {};
// cfg.url = "http://" + o_roomserver.server + ":" + o_roomserver.httpport + "/index.html";
// cfg.type = "POST";
// cfg.data = JSON.stringify(msg);
// cfg.success = function(str){
// if (str){
// var roomserver_data = JSON.parse(str);
// if (roomserver_data.data.state == 0){
// //创建房间成功
// o_gameinfo.roomcode = roomserver_data.data.roomcode;
// //返回前端需要连接房间服务器
// pack.rpc = "connect_roomserver";
// pack.data = {};
// pack.data.roomserver = o_roomserver.server + ":" + o_roomserver.tcpport;
// pack.data.data = {};
// pack.data.data.opt = "create_room";
// pack.data.data.playerid = playerid;
// pack.data.data.agentid = agentid;
// pack.data.data.gameid = gameid;
// pack.data.data.roomcode = roomserver_data.data.roomcode;
// pack.data.data.seat = roomserver_data.data.seat;
// youle_agent.app.SendPack(pack);
// } else {
// //房间服务器创建房间失败
// o_gameinfo.roomcode = null;
// }
// }
// };
// cfg.error = function(str){
// //房间服务器创建房间失败
// o_gameinfo.roomcode = null;
// }
// min_http(cfg);
}
}
var sql = "select * from player where play_agentid = ? and play_playerid = ?;";
youle_agent.mysql.execsql("opensql", sql, [agentid, playerid], db_callback, pack);
}
//进入比赛房间(何朝阳版)
youle_agent.match_enter_room2 = function(pack){
var agentid = pack.data.agentid;
var playerid = parseInt(pack.data.playerid);
var gameid = pack.data.gameid;
var roomtype = pack.data.roomtype;
var match_id = pack.data.match_id;
//检查代理商id是否存在
var o_agent = youle_agent.agents.method.find_agent(agentid);
if (!o_agent) {
pack.data.state = 1;
return pack;
};
//检查游戏id是否存在
var o_game = o_agent.method.find_game(gameid);
if (!o_game) {
pack.data.state = 1;
return pack;
};
//检查玩家是否存在
var o_player = o_agent.method.find_player(playerid);
if (!o_player) {
pack.data.state = 1;
return pack;
};
//检查服务器是否已关闭
var config_close = youle_agent.app.youle_platform.config.method.get_paravalue("isclose", agentid, gameid);
if (o_agent.isclose || config_close == 2){
pack.data.state = 1;
pack.data.error = "正在进行系统维护,不能进入房间,请稍后再试";
return pack;
};
//检查玩家是否已经在房间内了
var o_gameinfo = o_player.method.get_gameinfo(o_game);
if (o_gameinfo && o_gameinfo.roomcode) {
pack.data.state = 1;
return pack;
};
//检查玩家房卡是否够用
var needroomcard = youle_agent.import.createroom_needroomcard(o_game, roomtype);
if (o_player.roomcard < needroomcard){
var roomCardName = youle_agent.app.youle_platform.config.method.get_paravalue("roomCardName", agentid);
if (!roomCardName){
roomCardName = "房卡";
}
pack.data.state = 1;
pack.data.error = roomCardName + "数量不够";
return pack;
};
//检查玩家金币是否够用
var beanfloor = youle_agent.import.createroom_beanfloor(o_game, roomtype);
if (beanfloor != null){
if (o_player.bean < beanfloor){
var starName = youle_agent.app.youle_platform.config.method.get_paravalue("starName", agentid);
if (!starName){
starName = "星星";
}
pack.data.state = 1;
pack.data.error = starName + "数量不够";
return pack;
}
};
//检查比赛
var set_match_object = null;
var set_match_list = youle_platform.config.method.get_paravalue("matchlist", agentid, gameid);
var set_match_idx = -1;
if (set_match_list){
set_match_idx = min_ary_indexof(set_match_list, match_id, "id");
}
if (set_match_idx == -1){
pack.data.state = 1;
pack.data.error = "比赛不存在";
return pack;
} else {
set_match_object = set_match_list[set_match_idx];
//检查时间
if (set_match_object.beginTime){
if ((new Date()).getTime() < (new Date(set_match_object.beginTime)).getTime()){
pack.data.state = 1;
pack.data.error = "还未到比赛开始时间";
return pack;
}
}
if (set_match_object.endTime){
if ((new Date()).getTime() > (new Date(set_match_object.endTime)).getTime()){
pack.data.state = 1;
pack.data.error = "比赛时间已过";
return pack;
}
}
}
var match_object;
var match_roomcode;
var match_idx = -1;
if (o_game.matchlist){
match_idx = min_ary_indexof(o_game.matchlist, match_id, "id");
}
if (match_idx > -1){
match_object = o_game.matchlist[match_idx];
match_roomcode = match_object.roomcode;
if (match_roomcode){
//获取房号对应的房间服务器地址
var o_roomserver = o_game.method.get_roomserver(match_roomcode);
//通知房间服务器有人要加入房间
var msg = {};
msg.app = youle_agent.app.appname;
msg.route = youle_agent.app.youle_room.routename;
msg.rpc = "self_join_room";
msg.data = {};
msg.data.playerid = playerid;
msg.data.nickname = o_player.nickname;
msg.data.avatar = o_player.avatar;
msg.data.sex = o_player.sex;
msg.data.playertype = o_player.playertype;
msg.data.ip = o_gameinfo.ip;
msg.data.conmode = o_gameinfo.conmode;
msg.data.fromid = o_gameinfo.fromid;
msg.data.agentid = agentid;
msg.data.gameid = gameid;
msg.data.roomcode = match_roomcode;
msg.data.playerroomcard = o_player.roomcard;
msg.data.playerbean = o_player.bean;
msg.data.address = o_player.address;
msg.data.latitude = o_player.latitude;
msg.data.longitude = o_player.longitude;
//加入房间成功
if (o_roomserver.server == o_agent.server){
//房间服务器与代理商服务器是同一地址
var roomserver_data = youle_agent.app.youle_room[msg.rpc](msg);
//返回数据
if (roomserver_data.data.state == 0){
//加入房间成功
o_gameinfo.roomcode = match_roomcode;
pack.data.state = 0;
pack.data.gamedata = {};
pack.data.gamedata.app = youle_agent.appname;
pack.data.gamedata.route = youle_agent.routename;
pack.data.gamedata.rpc = 'self_join_room';
pack.data.gamedata.data = roomserver_data.data;
youle_agent.app.SendPack(pack);
return;
}
}
}
}
//创建新房间
var roomcode = o_game.method.new_roomcode();
if (!roomcode){
pack.data.state = 1;
pack.data.error = "没有房号可分配";
return pack;
}
var o_roomserver = o_game.method.get_roomserver(roomcode);
var msg = {};
msg.app = youle_agent.app.appname;
msg.route = youle_agent.app.youle_room.routename;
msg.rpc = "create_room";
msg.data = {};
msg.data.agent = {};
msg.data.agent.agentid = agentid;
msg.data.agent.name = o_agent.agentname;
msg.data.agent.server = o_agent.server;
msg.data.agent.tcpport = o_agent.tcpport;
msg.data.agent.httpport = o_agent.httpport;
msg.data.agent.freeroom = o_agent.freeroom;
msg.data.game = {};
msg.data.game.gameid = gameid;
msg.data.game.name = o_game.gamename;
msg.data.game.seatcount = o_game.seatcount;
msg.data.game.makewar = o_game.makewar;
msg.data.game.modename = o_game.modename;
msg.data.game.server = o_roomserver.server;
msg.data.game.tcpport = o_roomserver.tcpport;
msg.data.game.httpport = o_roomserver.httpport;
msg.data.game.minroomcode = o_roomserver.minroomcode;
msg.data.game.maxroomcode = o_roomserver.maxroomcode;
msg.data.player = {};
msg.data.player.playerid = playerid;
msg.data.player.nickname = o_player.nickname;
msg.data.player.avatar = o_player.avatar;
msg.data.player.sex = o_player.sex;
msg.data.player.playertype = o_player.playertype;
msg.data.player.ip = o_gameinfo.ip;
msg.data.player.conmode = o_gameinfo.conmode;
msg.data.player.fromid = o_gameinfo.fromid;
msg.data.player.address = o_player.address;
msg.data.player.latitude = o_player.latitude;
msg.data.player.longitude = o_player.longitude;
msg.data.player.bean = o_player.bean;
var infinite = 0;
if (pack.data.infinite){
infinite = parseInt(pack.data.infinite);
}
var needroomcard = youle_agent.import.createroom_needroomcard(o_game, roomtype);
//获取总局数
var asetcount = youle_agent.import.createroom_asetcount(o_game, roomtype);
//获取豆豆下限
var beanfloor = youle_agent.import.createroom_beanfloor(o_game, roomtype);
//获取房间类型
var roommode = youle_agent.import.createroom_roommode(o_game, roomtype);
//获取星星场倍数
var beanmult = youle_agent.import.createroom_beanmult(o_game, roomtype);
//不是星星场
if (!roommode){
beanmult = 0;
}
//玩家是否需要准备
var needprepare = youle_agent.import.createroom_needprepare(o_game, roomtype);
msg.data.room = {};
msg.data.room.roomcode = roomcode;
msg.data.room.roomtype = roomtype;
msg.data.room.needroomcard = needroomcard;
msg.data.room.asetcount = asetcount;
msg.data.room.infinite = infinite;
msg.data.room.roommode = roommode;
msg.data.room.beanfloor = beanfloor;
msg.data.room.beanmult = beanmult;
msg.data.room.needprepare = needprepare;
msg.data.room.advanced_type= 0;
msg.data.room.advanced_teabean = 0;
msg.data.room.match_id = match_id;
if (o_roomserver.server == o_agent.server){
//房间服务器与代理商服务器是同一地址
var roomserver_data = youle_agent.app.youle_room[msg.rpc](msg);
//返回数据
if (roomserver_data.data.state == 0){
//加入房间成功
o_gameinfo.roomcode = roomcode;
//记录比赛的房间号
if (match_object){
match_object.roomcode = roomcode;
} else {
match_object = min_copyjson(set_match_object);
match_object.roomcode = roomcode;
if (!o_game.matchlist){
o_game.matchlist = [];
}
o_game.matchlist.push(match_object);
}
pack.data.state = 0;
pack.data.gamedata = {};
pack.data.gamedata.app = youle_agent.appname;
pack.data.gamedata.route = youle_agent.routename;
pack.data.gamedata.rpc = 'create_room';
pack.data.gamedata.data = roomserver_data.data;
youle_agent.app.SendPack(pack);
return;
}
}
}
//星星场投降
youle_agent.beanroom_surrender = function(pack){
return youle_agent.self_break_room(pack);
}
//分享到星星争霸场
youle_agent.share_room = function(pack){
var agentid = pack.data.agentid;
var playerid = parseInt(pack.data.playerid);
var gameid = pack.data.gameid;
var roomcode = parseInt(pack.data.roomcode);
var roomtype = pack.data.roomtype;
var roomlist = pack.data.roomlist;
//是否为vip房分享
var shareType;;
if(!pack.data.shareType){
shareType = 0;
}else{
shareType = parseInt(pack.data.shareType);
}
//查找代理商
var o_agent = youle_agent.agents.method.find_agent(agentid);
if (!o_agent) {
return false;
};
//检查游戏id是否存在
var o_game = o_agent.method.find_game(gameid);
if (!o_game) {
return false;
};
//查找玩家
var o_player = o_agent.method.find_player(playerid);
if (!o_player) {
return false;
};
var roommode = youle_agent.import.createroom_roommode(o_game, roomtype);
//房间号变为vip短号
if(shareType){
roomcode = o_player.shortcode;
}
if(!o_game.sharerooms_player){
o_game.sharerooms_player = [];
}
var findIndex = min_ary_indexof(o_game.sharerooms_player, roomcode, "roomcode")
if (findIndex > -1){
//vip房需要刷新
if(shareType){
var o_share = {};
o_share.title = o_player.nickname;
o_share.ownerid = o_player.playerid;
o_share.ownername= o_player.nickname;
o_share.roommode = roommode;
o_share.roomcode = roomcode;
o_share.roomtype = roomtype;
o_share.shareType = shareType;
o_share.destwo = o_player.destwo;
o_share.roomlist = roomlist;
o_share.sharetime= min_now();
o_game.sharerooms_player[findIndex] = o_share;
}
return true;
}
//增加vip房的分享
var o_share = {};
o_share.title = o_player.nickname;
o_share.ownerid = o_player.playerid;
o_share.ownername= o_player.nickname;
o_share.roommode = roommode;
o_share.roomcode = roomcode;
o_share.roomtype = roomtype;
o_share.shareType = shareType;
o_share.destwo = o_player.destwo;
o_share.roomlist = roomlist;
o_share.sharetime= min_now();
o_game.sharerooms_player.push(o_share);
return true;
}
//刷新系统房间
youle_agent.updateSysRoom = function(pack){
var agentid = pack.data.agentid;
var gameid = pack.data.gameid;
//查找代理商
var o_agent = youle_agent.agents.method.find_agent(agentid);
if (!o_agent) {
return;
};
//检查游戏id是否存在
var o_game = o_agent.method.find_game(gameid);
if (!o_game) {
return;
};
var o_system_room_config = youle_agent.app.youle_platform.config.method.get_paravalue("system_room", agentid, gameid);
if(o_system_room_config){
var roomList=[];
if(o_game.sharerooms_system){
roomList = o_game.sharerooms_system;
}
// for(var i = 0;i < roomList.length;i++){
// for(var j = 0; j < ){
// }
// }
}
}
//获取星星争霸场房间列表
youle_agent.get_share_room = function(pack){
var agentid = pack.data.agentid;
var gameid = pack.data.gameid;
//查找代理商
var o_agent = youle_agent.agents.method.find_agent(agentid);
if (!o_agent) {
return;
};
//检查游戏id是否存在
var o_game = o_agent.method.find_game(gameid);
if (!o_game) {
return;
};
//获取配置的系统房间
var o_system_room_config = youle_agent.app.youle_platform.config.method.get_paravalue("system_room", o_game.o_agent.agentid, o_game.gameid);
if (o_system_room_config){
pack.data.roomlist_system = o_system_room_config;
for (var i = 0; i < pack.data.roomlist_system.length; i++) {
if (pack.data.roomlist_system[i].online){
pack.data.roomlist_system[i].playercount = pack.data.roomlist_system[i].online + min_random(1, 20);
} else {
if(pack.data.roomlist_system[i].onlineRange){
pack.data.roomlist_system[i].playercount = min_random(pack.data.roomlist_system[i].onlineRange[0], pack.data.roomlist_system[i].onlineRange[1]);
}else{
pack.data.roomlist_system[i].playercount = 90 + min_random(1, 20);
}
}
}
}
//获取玩家分享的房间
if(o_game.sharerooms_player){
pack.data.roomlist_player = [];
for (var i = 0; i < o_game.sharerooms_player.length; i++) {
if (i >= youle_agent.get_share_room_count){
break;
}
if(!o_game.sharerooms_player[i].roommode){
continue;
}
var o_room = {};
o_room.type = 1;
o_room.shareType = o_game.sharerooms_player[i].shareType;
o_room.destwo = o_game.sharerooms_player[i].destwo;
o_room.ownerid = o_game.sharerooms_player[i].ownerid;
o_room.ownername= o_game.sharerooms_player[i].ownername;
o_room.roomcode = o_game.sharerooms_player[i].roomcode;
o_room.roommode = o_game.sharerooms_player[i].roommode;
o_room.roomtype = o_game.sharerooms_player[i].roomtype;
o_room.roomlist = o_game.sharerooms_player[i].roomlist;
if(!o_room.shareType){
var roomsrv_agent = youle_room.agents.method.find_agent(agentid);
var roomsrv_game = roomsrv_agent.method.find_game(gameid);
var roomsrv_room = roomsrv_game.method.find_room(o_room.roomcode);
o_room.seatcount = roomsrv_room.seatlist.length;
o_room.playercount=0;
for (var j = 0; j < roomsrv_room.seatlist.length; j++) {
if (roomsrv_room.seatlist[j]){
o_room.playercount = o_room.playercount + 1;
}
}
}else{
var roomsrv_agent = youle_room.agents.method.find_agent(agentid);
var roomsrv_game = roomsrv_agent.method.find_game(gameid);
o_room.seatcount = o_room.roomlist.length;
o_room.playercount=0;
for(k=0;k<o_room.roomlist.length;k++){
var roomsrv_room = roomsrv_game.method.find_room(o_room.roomlist[k]);
for (var j = 0; j < roomsrv_room.seatlist.length; j++) {
if (roomsrv_room.seatlist[j]){
o_room.playercount++;
break;
}
}
}
}
// if (roomsrv_room.advanced_type){
// o_room.tea = roomsrv_room.advanced_teabean;
// }
o_room.tea = roomsrv_room.rebateNumber;
pack.data.roomlist_player.push(o_room);
}
}
youle_agent.app.SendPack(pack);
}
//获取短号对应房间的人数
//返回结果为一个数组[第一个房间人数,第二个房间人数,,,,]
youle_agent.getInfoByShortCode = function(pack){
var agentid = pack.data.agentid;
var gameid = pack.data.gameid;
var shortcodeList= pack.data.shortcodeList;
//查找代理商
var o_agent = youle_agent.agents.method.find_agent(agentid);
if (!o_agent) {
return;
};
//检查游戏id是否存在
var o_game = o_agent.method.find_game(gameid);
if (!o_game) {
return;
};
var roomInfo = [];
for(var m=0;m<shortcodeList.length;m++){
var shortcode = shortcodeList[m];
var shortcodeInfo = o_agent.shortcodes[shortcode];
var roomInfoTemp = {};
var countTemp = [];
//state 0 短号不存在 1短号存在 2房主未登陆 3房主未创建房间 4 正常
roomInfoTemp.state = 0;
roomInfoTemp.owner = "";
roomInfoTemp.ownerid = 0;
roomInfoTemp.destwo = "";
roomInfoTemp.playerList=[[]];
roomInfoTemp.seatCount=[];
//短号信息
if(shortcodeInfo){
//
roomInfoTemp.state = 1;
roomInfoTemp.shortCode = shortcode;
var ownerid = shortcodeInfo.playerid;
roomInfoTemp.ownerid = ownerid;
var o_player = o_agent.method.find_player(ownerid);
if (o_player) {
roomInfoTemp.state = 2;
roomInfoTemp.owner = o_player.nickname;
if (o_player.roomcodes){
for (var i = 0; i < o_player.roomcodes.length; i++) {
roomInfoTemp.state = 3;
if (o_player.roomcodes[i].gameid == gameid) {
roomInfoTemp.state = 4;
roomInfoTemp.destwo = o_player.destwo;
roomInfoTemp.roomcodes = o_player.roomcodes[i];
// roomInfoTemp.roomtype = o_player.roomcodes[i].roomtype;
// roomInfoTemp.isClose = o_player.roomcodes[i].isClose;
// roomInfoTemp.tea = o_player.roomcodes[i].tea;
// roomInfoTemp.videoConfig = o_player.roomcodes[i].videoConfig;
// roomInfoTemp.roommode = o_player.roomcodes[i].roommode;
// roomInfoTemp.rebateType = o_player.roomcodes[i].rebateType;
roomInfoTemp.playerList=[];
var roomsrv_agent = youle_room.agents.method.find_agent(agentid);
var roomsrv_game = roomsrv_agent.method.find_game(gameid);
for(var j=0;j < o_player.roomcodes[i].roomlist.length;j++){
var roomsrv_room = roomsrv_game.method.find_room(o_player.roomcodes[i].roomlist[j]);
var listTemp = [];
if(roomsrv_room){
roomInfoTemp.seatCount.push(roomsrv_room.seatlist.length);
for(var k=0;k<roomsrv_room.seatlist.length;k++){
if(roomsrv_room.seatlist[k]){
listTemp.push(roomsrv_room.seatlist[k].nickname);
}
}
}else{
roomInfoTemp.seatCount.push(0);
}
roomInfoTemp.playerList.push(listTemp);
}
}
}
}
}
}
roomInfo.push(roomInfoTemp);
}
pack.data.roomInfo = roomInfo;
youle_agent.app.SendPack(pack);
}
//快速进入星星争霸场的房间
youle_agent.quick_enter_share_room = function(pack){
var agentid = pack.data.agentid;
var gameid = pack.data.gameid;
var playerid = parseInt(pack.data.playerid);
var type = parseInt(pack.data.type);
var roomtype = pack.data.roomtype;
//查找代理商
var o_agent = youle_agent.agents.method.find_agent(agentid);
if (!o_agent) {
return;
};
//检查游戏id是否存在
var o_game = o_agent.method.find_game(gameid);
if (!o_game) {
return;
};
//查找玩家
var o_player = o_agent.method.find_player(playerid);
if (!o_player) {
return;
};
//检查玩家是否已经在房间内了
var o_gameinfo = o_player.method.get_gameinfo(o_game);
if (!o_gameinfo){
return;
}
if (o_gameinfo.roomcode){
return;
};
if (o_gameinfo.fromid != pack.fromid){
return;
};
//检查服务器是否已关闭
var config_close = youle_agent.app.youle_platform.config.method.get_paravalue("isclose", agentid, gameid);
if (o_agent.isclose || config_close == 2){
pack.data = {};
pack.data.state = 1;
pack.data.error = "正在进行系统维护,不能加入房间,请稍后再试";
pack.data.showerror = 1;
return pack;
}
var roomCardName = youle_agent.app.youle_platform.config.method.get_paravalue("roomCardName", agentid);
if (!roomCardName){
roomCardName = "房卡";
}
var starName = youle_agent.app.youle_platform.config.method.get_paravalue("starName", agentid);
if (!starName){
starName = "星星";
}
switch(type){
case 1: //玩家房间
if(!o_game.sharerooms_player){
o_game.sharerooms_player = [];
}
for (var i = 0; i < o_game.sharerooms_player.length; i++) {
if (!roomtype || JSON.stringify(o_game.sharerooms_player[i].roomtype) == JSON.stringify(roomtype)
&& o_game.sharerooms_player[i].roommode){
//检查玩家房卡是否够用
var needroomcard = youle_agent.import.joinroom_needroomcard(o_game, o_game.sharerooms_player[i].roomtype);
var xxroomdeduct = youle_room.app.youle_platform.config.method.get_paravalue("xxroomdeduct", agentid);
if(xxroomdeduct){
if (o_player.roomcard < needroomcard){
pack.rpc = "self_join_room";
pack.data = {};
pack.data.state = 1;
pack.data.error = roomCardName + "数量不够";
pack.data.showerror = 1;
return pack;
}
}
//检查玩家豆豆是否够用
//var needbean = youle_agent.import.createroom_beanfloor(o_game, o_game.sharerooms_player[i].roomtype);
var _roomsvr_agent1 = youle_room.agents.method.find_agent(agentid);
var _roomsvr_game1 = _roomsvr_agent1.method.find_game(gameid);
var _roomsvr_room1 = _roomsvr_game1.method.find_room(o_game.sharerooms_player[i].roomcode);
if(_roomsvr_room1){
var needbean = _roomsvr_room1.beanfloor;
if (needbean != null){
if (o_player.bean < needbean){
pack.rpc = "self_join_room";
pack.data = {};
pack.data.state = 1;
pack.data.error = starName + "数量不够";
pack.data.showerror = 1;
return pack;
}
}
}
//房号
var roomcode = o_game.sharerooms_player[i].roomcode;
//获取房号对应的房间服务器地址
var o_roomserver = o_game.method.get_roomserver(roomcode);
//通知房间服务器有人要加入房间
var msg = {};
msg.app = youle_agent.app.appname;
msg.route = youle_agent.app.youle_room.routename;
msg.rpc = "self_join_room";
msg.data = {};
msg.data.playerid = playerid;
msg.data.nickname = o_player.nickname;
msg.data.avatar = o_player.avatar;
msg.data.sex = o_player.sex;
msg.data.playertype = o_player.playertype;
msg.data.ip = o_gameinfo.ip;
msg.data.conmode = o_gameinfo.conmode;
msg.data.fromid = o_gameinfo.fromid;
msg.data.agentid = agentid;
msg.data.gameid = gameid;
msg.data.roomcode = roomcode;
msg.data.playerroomcard = o_player.roomcard;
msg.data.playerbean = o_player.bean;
msg.data.joinmode = 0;
msg.data.address = o_player.address;
msg.data.latitude = o_player.latitude;
msg.data.longitude = o_player.longitude;
//加入房间成功
o_gameinfo.roomcode = roomcode;
if (o_roomserver.server == o_agent.server){
//房间服务器与代理商服务器是同一地址
var roomserver_data = youle_agent.app.youle_room[msg.rpc](msg);
if (roomserver_data.data.state != 0){
//房间服务器加入房间失败
o_gameinfo.roomcode = null;
} else {
pack.data = roomserver_data.data;
for (var i = 0; i < pack.data.players.length; i++) {
if (pack.data.players[i]){
var _playerid = parseInt(pack.data.players[i].playerid);
var _o_player = o_agent.method.find_player(_playerid);
pack.data.players[i].bean = _o_player.bean;
}
}
pack.rpc = "self_join_room";
youle_agent.app.SendPack(pack);
return;
}
}
}
}
pack.rpc = "self_join_room";
pack.data.state = 1;
pack.data.error = "未找到匹配的房间,请重试";
pack.data.showerror = 1;
youle_agent.app.SendPack(pack);
break;
case 2: //系统房间
if (!roomtype){
return;
}
if(!o_game.sharerooms_system){
o_game.sharerooms_system = [];
}
//系统房间里机器人陪玩的真实玩家数量阈值
var sysroom_playercount = youle_agent.app.youle_platform.config.method.get_paravalue("sysroom_playercount", agentid, gameid);
if (sysroom_playercount == null){
sysroom_playercount = 20;
}
//当前在系统房间里的真实玩家数量
var _sysroom_playercount = 0;
var _roomsvr_agent = youle_room.agents.method.find_agent(agentid);
if (_roomsvr_agent){
var _roomsvr_game = _roomsvr_agent.method.find_game(gameid);
if (_roomsvr_game && _roomsvr_game.sysroom_playercount){
for (var i = 0; i < _roomsvr_game.sysroom_playercount.length; i++) {
if (JSON.stringify(_roomsvr_game.sysroom_playercount[i].roomtype) == JSON.stringify(roomtype)){
_sysroom_playercount = _roomsvr_game.sysroom_playercount[i].playercount;
break;
}
}
}
}
var haverobot = youle_room.app.youle_platform.config.method.get_paravalue("haverobot", agentid, gameid);
//if(haverobot == 1){
var isFree = 0;
var sysRoomConfig = youle_room.app.youle_platform.config.method.get_paravalue("system_room", agentid, gameid);
if(sysRoomConfig){
for(var i=0;i<sysRoomConfig.length;i++){
if(JSON.stringify(sysRoomConfig[i].roomtype) == JSON.stringify(roomtype)){
if(sysRoomConfig[i].removeRobot){
haverobot = 0;
}
if(sysRoomConfig[i].isFree){
isFree = 1;
}
}
}
}
//}
var idx = min_random(0, o_game.sharerooms_system.length - 1);
if (idx > -1){
for (var i = idx; i < o_game.sharerooms_system.length; i++) {
if (JSON.stringify(o_game.sharerooms_system[i].roomtype) == JSON.stringify(roomtype)){
//检查玩家房卡是否够用
var needroomcard = youle_agent.import.joinroom_needroomcard(o_game, o_game.sharerooms_system[i].roomtype);
//系统房间写死不要房卡
needroomcard = 0;
if (o_player.roomcard < needroomcard){
pack.rpc = "self_join_room";
pack.data = {};
pack.data.state = 1;
pack.data.error = roomCardName + "数量不够";
pack.data.showerror = 1;
return pack;
}
//检查玩家豆豆是否够用
//var needbean = youle_agent.import.createroom_beanfloor(o_game, o_game.sharerooms_system[i].roomtype);
var _roomsvr_agent1 = youle_room.agents.method.find_agent(agentid);
var _roomsvr_game1 = _roomsvr_agent1.method.find_game(gameid);
var _roomsvr_room1 = _roomsvr_game1.method.find_room(roomcode);
//if(!isFree){
if(_roomsvr_room1){
var needbean = _roomsvr_room1.beanfloor;
if (needbean != null){
if (o_player.bean < needbean){
pack.rpc = "self_join_room";
pack.data = {};
pack.data.state = 1;
pack.data.error = starName + "数量不够";
pack.data.showerror = 1;
return pack;
}
}
}
//}
//房号
var roomcode = o_game.sharerooms_system[i].roomcode;
//查看是否有空位,是否有真人玩家
var _have_nullseat = false;
var _roomsvr_agent = youle_room.agents.method.find_agent(agentid);
var _roomsvr_game = _roomsvr_agent.method.find_game(gameid);
var _roomsvr_room = _roomsvr_game.method.find_room(roomcode);
if (_roomsvr_room){
for (var j = 0; j < _roomsvr_room.seatlist.length; j++) {
if (!_roomsvr_room.seatlist[j]){
_have_nullseat = true;
} else {
if (!_roomsvr_room.seatlist[j].isrobot){
if ((_sysroom_playercount < sysroom_playercount) && (haverobot == 1)){
_have_nullseat = false;
break;
}
}
}
}
}
if (_have_nullseat){
//获取房号对应的房间服务器地址
var o_roomserver = o_game.method.get_roomserver(roomcode);
//通知房间服务器有人要加入房间
var msg = {};
msg.app = youle_agent.app.appname;
msg.route = youle_agent.app.youle_room.routename;
msg.rpc = "self_join_room";
msg.data = {};
msg.data.playerid = playerid;
msg.data.nickname = o_player.nickname;
msg.data.avatar = o_player.avatar;
msg.data.sex = o_player.sex;
msg.data.playertype = o_player.playertype;
msg.data.ip = o_gameinfo.ip;
msg.data.conmode = o_gameinfo.conmode;
msg.data.fromid = o_gameinfo.fromid;
msg.data.agentid = agentid;
msg.data.gameid = gameid;
msg.data.roomcode = roomcode;
msg.data.playerroomcard = o_player.roomcard;
msg.data.playerbean = o_player.bean;
msg.data.joinmode = 0;
msg.data.address = o_player.address;
msg.data.latitude = o_player.latitude;
msg.data.longitude = o_player.longitude;
//加入房间成功
o_gameinfo.roomcode = roomcode;
if (o_roomserver.server == o_agent.server){
//房间服务器与代理商服务器是同一地址
var roomserver_data = youle_agent.app.youle_room[msg.rpc](msg);
if (roomserver_data.data.state != 0){
//房间服务器加入房间失败
o_gameinfo.roomcode = null;
} else {
pack.data = roomserver_data.data;
for (var i = 0; i < pack.data.players.length; i++) {
if (pack.data.players[i]){
var _playerid = parseInt(pack.data.players[i].playerid);
var _o_player = o_agent.method.find_player(_playerid);
if (_o_player){
pack.data.players[i].bean = _o_player.bean;
}
}
}
pack.rpc = "self_join_room";
youle_agent.app.SendPack(pack);
return;
}
}
}
}
}
for (var i = idx - 1; i >= 0; i--) {
if (JSON.stringify(o_game.sharerooms_system[i].roomtype) == JSON.stringify(roomtype)){
//检查玩家房卡是否够用
var needroomcard = youle_agent.import.joinroom_needroomcard(o_game, o_game.sharerooms_system[i].roomtype);
//系统房间写死不要房卡
needroomcard = 0;
if (o_player.roomcard < needroomcard){
pack.rpc = "self_join_room";
pack.data = {};
pack.data.state = 1;
pack.data.error = roomCardName + "数量不够";
pack.data.showerror = 1;
return pack;
}
//检查玩家豆豆是否够用
//var needbean = youle_agent.import.createroom_beanfloor(o_game, o_game.sharerooms_system[i].roomtype);
var _roomsvr_agent1 = youle_room.agents.method.find_agent(agentid);
var _roomsvr_game1 = _roomsvr_agent1.method.find_game(gameid);
var _roomsvr_room1 = _roomsvr_game1.method.find_room(o_game.sharerooms_system[i].roomcode);
//if(!isFree){
if(_roomsvr_room1){
var needbean = _roomsvr_room1.beanfloor;
if (needbean != null){
if (o_player.bean < needbean){
pack.rpc = "self_join_room";
pack.data = {};
pack.data.state = 1;
pack.data.error = starName + "数量不够";
pack.data.showerror = 1;
return pack;
}
}
}
//}
//房号
var roomcode = o_game.sharerooms_system[i].roomcode;
//查看是否有空位,是否有真人玩家
var _have_nullseat = false;
var _roomsvr_agent = youle_room.agents.method.find_agent(agentid);
var _roomsvr_game = _roomsvr_agent.method.find_game(gameid);
var _roomsvr_room = _roomsvr_game.method.find_room(roomcode);
if (_roomsvr_room){
for (var j = 0; j < _roomsvr_room.seatlist.length; j++) {
if (!_roomsvr_room.seatlist[j]){
_have_nullseat = true;
} else {
if (!_roomsvr_room.seatlist[j].isrobot){
if ((_sysroom_playercount < sysroom_playercount) && (haverobot == 1)){
_have_nullseat = false;
break;
}
}
}
}
}
if (_have_nullseat){
//获取房号对应的房间服务器地址
var o_roomserver = o_game.method.get_roomserver(roomcode);
//通知房间服务器有人要加入房间
var msg = {};
msg.app = youle_agent.app.appname;
msg.route = youle_agent.app.youle_room.routename;
msg.rpc = "self_join_room";
msg.data = {};
msg.data.playerid = playerid;
msg.data.nickname = o_player.nickname;
msg.data.avatar = o_player.avatar;
msg.data.sex = o_player.sex;
msg.data.playertype = o_player.playertype;
msg.data.ip = o_gameinfo.ip;
msg.data.conmode = o_gameinfo.conmode;
msg.data.fromid = o_gameinfo.fromid;
msg.data.agentid = agentid;
msg.data.gameid = gameid;
msg.data.roomcode = roomcode;
msg.data.playerroomcard = o_player.roomcard;
msg.data.playerbean = o_player.bean;
msg.data.joinmode = 0;
msg.data.address = o_player.address;
msg.data.latitude = o_player.latitude;
msg.data.longitude = o_player.longitude;
//加入房间成功
o_gameinfo.roomcode = roomcode;
if (o_roomserver.server == o_agent.server){
//房间服务器与代理商服务器是同一地址
var roomserver_data = youle_agent.app.youle_room[msg.rpc](msg);
if (roomserver_data.data.state != 0){
//房间服务器加入房间失败
o_gameinfo.roomcode = null;
} else {
pack.data = roomserver_data.data;
for (var i = 0; i < pack.data.players.length; i++) {
if (pack.data.players[i]){
var _playerid = parseInt(pack.data.players[i].playerid);
var _o_player = o_agent.method.find_player(_playerid);
if (_o_player){
pack.data.players[i].bean = _o_player.bean;
}
}
}
pack.rpc = "self_join_room";
youle_agent.app.SendPack(pack);
return;
}
}
}
}
}
}
//检查玩家房卡是否够用
var needroomcard = youle_agent.import.createroom_needroomcard(o_game, roomtype);
//系统房间写死不要房卡
needroomcard = 0;
if (o_player.roomcard < needroomcard){
pack.rpc = "create_room";
pack.data = {};
pack.data.state = 1;
pack.data.error = roomCardName + "数量不够";
pack.data.showerror = 1;
return pack;
}
//检查玩家豆豆是否够用
//var needbean = youle_agent.import.createroom_beanfloor(o_game, roomtype);
//var rebateConfig = youle_room.app.youle_platform.config.method.get_paravalue("rebateConfig", agentid);
//var rebateNumber = 0;
var beanfloor1 = youle_agent.import.createroom_beanfloor(o_game, roomtype);
var beanmult1 = youle_agent.import.createroom_beanmult(o_game, roomtype);
//小局抽成设置
var aset_rebate = youle_room.app.youle_platform.config.method.get_paravalue("aset_rebate", agentid);
if(aset_rebate){
var sysRebateValue = 0;
config = aset_rebate.infinite;
if(config[0] == 3 && config[1] == 2){
sysRebateValue = parseInt(config[2]*beanmult1/100);
}
var tea = youle_room.import.owner_beanpush(o_game, roomtype);
if(tea){
if(beanfloor1 == null){
beanfloor1 = Math.max(tea,sysRebateValue);
}else{
beanfloor1 = Math.max(tea,sysRebateValue,beanfloor1);
}
}else{
if(beanfloor1 == null){
beanfloor1 = sysRebateValue;
}else{
beanfloor1 = Math.max(sysRebateValue,beanfloor1);
}
}
}
var needbean = beanfloor1;
//if(!isFree){
if (needbean != null){
if (o_player.bean < needbean){
pack.rpc = "create_room";
pack.data = {};
pack.data.state = 1;
pack.data.error = starName + "数量不够";
pack.data.showerror = 1;
return pack;
}
}
//}
//创建新房间随机获取新的房号
var roomcode = o_game.method.new_roomcode();
if (!roomcode){
console.log(min_now() + "创建系统房间失败:没有房号可分配");
pack.rpc = "create_room";
pack.data = {};
pack.data.state = 1;
pack.data.error = "没有房号可分配";
pack.data.showerror = 1;
youle_agent.app.SendPack(pack);
return;
}
//获取房号对应的房间服务器地址
var o_roomserver = o_game.method.get_roomserver(roomcode);
//通知房间服务器创建房间
var msg = {};
msg.app = youle_agent.app.appname;
msg.route = youle_agent.app.youle_room.routename;
msg.rpc = "create_room";
msg.data = {};
msg.data.agent = {};
msg.data.agent.agentid = agentid;
msg.data.agent.name = o_agent.agentname;
msg.data.agent.server = o_agent.server;
msg.data.agent.tcpport = o_agent.tcpport;
msg.data.agent.httpport = o_agent.httpport;
msg.data.agent.freeroom = o_agent.freeroom;
msg.data.game = {};
msg.data.game.gameid = gameid;
msg.data.game.name = o_game.gamename;
msg.data.game.seatcount = o_game.seatcount;
msg.data.game.makewar = o_game.makewar;
msg.data.game.modename = o_game.modename;
msg.data.game.server = o_roomserver.server;
msg.data.game.tcpport = o_roomserver.tcpport;
msg.data.game.httpport = o_roomserver.httpport;
msg.data.game.minroomcode = o_roomserver.minroomcode;
msg.data.game.maxroomcode = o_roomserver.maxroomcode;
msg.data.player = {};
msg.data.player.playerid = playerid;
msg.data.player.nickname = o_player.nickname;
msg.data.player.avatar = o_player.avatar;
msg.data.player.sex = o_player.sex;
msg.data.player.playertype = o_player.playertype;
msg.data.player.ip = o_gameinfo.ip;
msg.data.player.conmode = o_gameinfo.conmode;
msg.data.player.fromid = o_gameinfo.fromid;
msg.data.player.address = o_player.address;
msg.data.player.latitude = o_player.latitude;
msg.data.player.longitude = o_player.longitude;
msg.data.player.bean = o_player.bean;
//获取开房所需的房卡数量
var needroomcard = youle_agent.import.createroom_needroomcard(o_game, roomtype);
//系统房间写死不要房卡
needroomcard = 0;
//获取总局数
var asetcount = youle_agent.import.createroom_asetcount(o_game, roomtype);
//获取豆豆下限
var beanfloor = youle_agent.import.createroom_beanfloor(o_game, roomtype);
//获取房间类型
var roommode = youle_agent.import.createroom_roommode(o_game, roomtype);
//获取星星场倍数
var beanmult = youle_agent.import.createroom_beanmult(o_game, roomtype);
//玩家是否需要准备
var needprepare = youle_agent.import.createroom_needprepare(o_game, roomtype);
//系统房间即无限局一定要准备
needprepare = 1;
//不是星星场
if (!roommode){
beanmult = 1;
}
msg.data.room = {};
msg.data.room.roomcode = roomcode;
msg.data.room.roomtype = roomtype;
msg.data.room.needroomcard = needroomcard;
msg.data.room.asetcount = asetcount;
msg.data.room.infinite = 1;
msg.data.room.sysroom = 1;
msg.data.room.roommode = roommode;
msg.data.room.beanfloor = beanfloor;
msg.data.room.beanmult = beanmult;
msg.data.room.needprepare = needprepare;
msg.data.room.advanced_type = 0;
msg.data.room.advanced_teabean = 0;
msg.data.room.isFree = isFree;
//机器人金币范围
msg.data.robot={};
msg.data.robot.goldRange = null;
var o_cfg = youle_agent.app.youle_platform.config;
var _system_room = o_cfg.method.get_paravalue("system_room", agentid, gameid);
var robotGoldRange = null;
if(_system_room){
for(var k=0;k<_system_room.length;k++){
var sRoomType = _system_room[k].roomtype;
if(typeof sRoomType == "object"){
sRoomType = JSON.stringify(sRoomType);
}
if(JSON.stringify(roomtype) == sRoomType){
msg.data.robot.robotGoldRange = _system_room[k].robotGoldRange;
}
}
}
//加入房间成功
o_gameinfo.roomcode = roomcode;
if (o_roomserver.server == o_agent.server){
//房间服务器与代理商服务器是同一地址
var roomserver_data = youle_agent.app.youle_room[msg.rpc](msg);
//返回前端
pack.data = roomserver_data.data;
if (pack.data.state != 0){
//房间服务器创建房间失败
o_gameinfo.roomcode = null;
pack.rpc = "create_room";
pack.data = {};
pack.data.state = 1;
pack.data.error = "创建系统房间失败";
pack.data.showerror = 1;
youle_agent.app.SendPack(pack);
return;
}
pack.rpc = "create_room";
youle_agent.app.SendPack(pack);
var o_share = {};
o_share.roomcode = roomcode;
o_share.roomtype = roomtype;
o_share.sharetime= min_now();
o_game.sharerooms_system.push(o_share);
}
//一次性创建N个系统房
var _roomcount = 0;
for (var i = 0; i < o_game.sharerooms_system.length; i++) {
if (JSON.stringify(o_game.sharerooms_system[i].roomtype) == JSON.stringify(roomtype)){
_roomcount = _roomcount + 1;
}
}
for (var i = 1; i <= sysroom_playercount - _roomcount; i++) {
var roomcode = o_game.method.new_roomcode();
if (!roomcode){
break;
}
//获取房号对应的房间服务器地址
var o_roomserver = o_game.method.get_roomserver(roomcode);
//通知房间服务器创建房间
var msg = {};
msg.app = youle_agent.app.appname;
msg.route = youle_agent.app.youle_room.routename;
msg.rpc = "create_room";
msg.data = {};
msg.data.agent = {};
msg.data.agent.agentid = agentid;
msg.data.agent.name = o_agent.agentname;
msg.data.agent.server = o_agent.server;
msg.data.agent.tcpport = o_agent.tcpport;
msg.data.agent.httpport = o_agent.httpport;
msg.data.agent.freeroom = o_agent.freeroom;
msg.data.game = {};
msg.data.game.gameid = gameid;
msg.data.game.name = o_game.gamename;
msg.data.game.seatcount = o_game.seatcount;
msg.data.game.makewar = o_game.makewar;
msg.data.game.modename = o_game.modename;
msg.data.game.server = o_roomserver.server;
msg.data.game.tcpport = o_roomserver.tcpport;
msg.data.game.httpport = o_roomserver.httpport;
msg.data.game.minroomcode = o_roomserver.minroomcode;
msg.data.game.maxroomcode = o_roomserver.maxroomcode;
msg.data.player = {};
msg.data.player.playerid = playerid;
msg.data.player.nickname = o_player.nickname;
msg.data.player.avatar = o_player.avatar;
msg.data.player.sex = o_player.sex;
msg.data.player.playertype = o_player.playertype;
msg.data.player.ip = o_gameinfo.ip;
msg.data.player.conmode = o_gameinfo.conmode;
msg.data.player.fromid = o_gameinfo.fromid;
msg.data.player.address = o_player.address;
msg.data.player.latitude = o_player.latitude;
msg.data.player.longitude = o_player.longitude;
msg.data.player.bean = o_player.bean;
msg.data.player.notenterroom = 1;
//机器人金币范围
msg.data.robot={};
msg.data.robot.goldRange = null;
var o_cfg = youle_agent.app.youle_platform.config;
var _system_room = o_cfg.method.get_paravalue("system_room", agentid, gameid);
var robotGoldRange = null;
if(_system_room){
for(var k=0;k<_system_room.length;k++){
var sRoomType = _system_room[k].roomtype;
if(typeof sRoomType == "object"){
sRoomType = JSON.stringify(sRoomType);
}
if(JSON.stringify(roomtype) == sRoomType){
msg.data.robot.robotGoldRange = _system_room[k].robotGoldRange;
}
}
}
//获取开房所需的房卡数量
var needroomcard = youle_agent.import.createroom_needroomcard(o_game, roomtype);
//系统房间写死不要房卡
needroomcard = 0;
//获取总局数
var asetcount = youle_agent.import.createroom_asetcount(o_game, roomtype);
//获取豆豆下限
var beanfloor = youle_agent.import.createroom_beanfloor(o_game, roomtype);
//获取房间类型
var roommode = youle_agent.import.createroom_roommode(o_game, roomtype);
//获取星星场倍数
var beanmult = youle_agent.import.createroom_beanmult(o_game, roomtype);
//玩家是否需要准备
var needprepare = youle_agent.import.createroom_needprepare(o_game, roomtype);
//系统房间即无限局一定要准备
needprepare = 1;
//不是星星场
if (!roommode){
beanmult = 0;
}
msg.data.room = {};
msg.data.room.roomcode = roomcode;
msg.data.room.roomtype = roomtype;
msg.data.room.needroomcard = needroomcard;
msg.data.room.asetcount = asetcount;
msg.data.room.infinite = 1;
msg.data.room.sysroom = 1;
msg.data.room.roommode = roommode;
msg.data.room.beanfloor = beanfloor;
msg.data.room.beanmult = beanmult;
msg.data.room.needprepare = needprepare;
msg.data.room.advanced_type = 0;
msg.data.room.advanced_teabean = 0;
msg.data.room.isFree = isFree;
if (o_roomserver.server == o_agent.server){
var roomserver_data = youle_agent.app.youle_room[msg.rpc](msg);
if (roomserver_data.data.state == 0){
var o_share = {};
o_share.roomcode = roomcode;
o_share.roomtype = roomtype;
o_share.sharetime= min_now();
o_game.sharerooms_system.push(o_share);
}
}
}
break;
}
}
//高级选项_房间列表
youle_agent.advanced_roomlist = function(pack){
var agentid = pack.data.agentid;
var gameid = pack.data.gameid;
var playerid = parseInt(pack.data.playerid);
//查找代理商
var o_agent = youle_agent.agents.method.find_agent(agentid);
if (!o_agent) {
return;
};
//检查游戏id是否存在
var o_game = o_agent.method.find_game(gameid);
if (!o_game) {
return;
};
//查找玩家
var o_player = o_agent.method.find_player(playerid);
if (!o_player) {
return;
};
// var videoConfig = youle_room.app.youle_platform.config.method.get_paravalue("videoConfig",agentid,gameid);
pack.data.shortcode = o_player.shortcode;
//房间费系统设置的值
pack.data.tea = null;
pack.data.roomtype = null;
pack.data.roomlist = [];
if (o_player.roomcodes){
for (var i = 0; i < o_player.roomcodes.length; i++) {
if (o_player.roomcodes[i].gameid == gameid) {
pack.data.tea = o_player.roomcodes[i].tea;
pack.data.roomtype = o_player.roomcodes[i].roomtype;
pack.data.roomlist = o_player.roomcodes[i].roomlist;
pack.data.isClose = o_player.roomcodes[i].isClose;
pack.data.rebateType = o_player.roomcodes[i].rebateType;
if(o_player.roomcodes[i].videoConfig){
pack.data.videoConfig = o_player.roomcodes[i].videoConfig;
}
break;
}
}
}
return pack;
}
//房主开关房间
youle_agent.switchRoomList = function(pack){
var agentid = pack.data.agentid;
var gameid = pack.data.gameid;
var playerid = parseInt(pack.data.playerid);
var isClose = 0;
if(pack.data.isClose){
isClose = parseInt(pack.data.isClose);
}else{
isClose = 0;
}
//查找代理商
var o_agent = youle_agent.agents.method.find_agent(agentid);
if (!o_agent) {
return;
};
//检查游戏id是否存在
var o_game = o_agent.method.find_game(gameid);
if (!o_game) {
return;
};
//查找玩家
var o_player = o_agent.method.find_player(playerid);
if (!o_player) {
return;
};
var o_roomcodes = {};
var isfound = false;
for (var i = 0; i < o_player.roomcodes.length; i++) {
if (o_player.roomcodes[i].gameid == gameid) {
o_roomcodes.roomlist = o_player.roomcodes[i].roomlist;
o_player.roomcodes[i].isClose = isClose;
// o_player.roomcodes[i] = o_roomcodes;
o_roomcodes = o_player.roomcodes[i];
isfound = true;
break;
}
}
if (isfound){
console.log(3,JSON.stringify(o_player.roomcodes));
var sql = "update player set play_roomcodes = ? where play_agentid = ? and play_playerid = ?";
youle_agent.mysql.execsql("execsql", sql, [JSON.stringify(o_player.roomcodes), agentid, playerid]);
pack.data.state = 0;
}else{
pack.data.state = 1;
pack.data.error = "未找到您所创建的房间";
pack.data.showerror = 1;
//youle_agent.app.SendPack(pack);
}
return pack;
}
//高级选项_创建固定房间
youle_agent.advanced_createroom = function(pack,adv){
var agentid = pack.data.agentid;
var gameid = pack.data.gameid;
var playerid = parseInt(pack.data.playerid);
var tea = parseInt(pack.data.tea);
var roomtype = pack.data.roomtype;
var infinite = 0;
if (pack.data.infinite){
infinite = 1;
}
var rebateType = pack.data.rebateType;
var o_cfg = youle_agent.app.youle_platform.config;
var rebateConfig = o_cfg.method.get_paravalue("rebateConfig", agentid);
//扣卡模式
//var deductMode = youle_agent.import.deduct_roomcard_mode(o_game, roomtype);
//视频房
var videoConfig = null;
if(pack.data.videoConfig){
videoConfig = pack.data.videoConfig;
}
//查找代理商
var o_agent = youle_agent.agents.method.find_agent(agentid);
if (!o_agent) {
return;
};
//检查游戏id是否存在
var o_game = o_agent.method.find_game(gameid);
if (!o_game) {
return;
};
//查找玩家
var o_player = o_agent.method.find_player(playerid);
if (!o_player) {
return;
};
//获取开房所需的房卡数量
var needroomcard = youle_agent.import.createroom_needroomcard(o_game, roomtype);
//获取总局数
var asetcount = youle_agent.import.createroom_asetcount(o_game, roomtype);
//获取豆豆下限
var beanfloor = youle_agent.import.createroom_beanfloor(o_game, roomtype);
//获取房间类型
var roommode = youle_agent.import.createroom_roommode(o_game, roomtype);
//获取星星场倍数
var beanmult = youle_agent.import.createroom_beanmult(o_game, roomtype);
//不是星星场
if (!roommode){
beanmult = 1;
}
//判断玩家设置的房间费是否符合范围
if(rebateConfig){
var sysTea = parseInt(beanmult * rebateConfig.value/100);
if(tea < sysTea){
tea = sysTea;
}
if(!rebateConfig.rebateCharm){
rebateType = 0;
}
}
if(roommode){
rebateType = 0;
}
//只有设置了星星限进的房间才有茶水费
// if (!beanfloor){
// tea = 0;
// }
if(needroomcard > 0){
var vConfig = o_agent.method.alyVideoConfig(videoConfig);
if(vConfig[0] == 1){
needroomcard += vConfig[1];
}
}
//玩家是否需要准备
var needprepare = youle_agent.import.createroom_needprepare(o_game, roomtype);
var o_roomcodes = {};
o_roomcodes.gameid = gameid;
o_roomcodes.tea = tea;
o_roomcodes.roomtype = roomtype;
o_roomcodes.infinite = infinite;
o_roomcodes.videoConfig = videoConfig;
o_roomcodes.roommode = roommode;
o_roomcodes.rebateType = rebateType;
o_roomcodes.isClose = 0;
o_roomcodes.roomlist = [];
var isfound = false;
for (var i = 0; i < o_player.roomcodes.length; i++) {
if (o_player.roomcodes[i].gameid == gameid) {
o_roomcodes.roomlist = o_player.roomcodes[i].roomlist;
o_player.roomcodes[i] = o_roomcodes;
if(o_player.roomcodes[i].isClose){
o_player.roomcodes[i].isClose = 1;
}else{
o_player.roomcodes[i].isClose = 0;
}
o_player.roomcodes[i].rebateType = rebateType;
isfound = true;
break;
}
}
if (!isfound){
o_player.roomcodes.push(o_roomcodes);
}
var o_game1 = null;
var o_agent1 = youle_room.agents.method.find_agent(agentid);
if (o_agent1){
o_game1 = o_agent1.method.find_game(gameid);
}
//查找游戏
if(o_game1 && !adv){
//解散已存在的可解散房间
for(var i = 0; i < o_roomcodes.roomlist.length; i++){
//查找房间
var o_room = o_game1.method.find_room(o_roomcodes.roomlist[i]);
if(o_room){
// if(o_room.method.get_playercount() == 0){
if(o_room.battlestate == 0){
//通知代理服务器解散房间
var msg1 = {};
msg1.app = youle_room.app.appname;
msg1.route = youle_room.app.youle_agent.routename;
msg1.rpc = "self_break_room";
msg1.data = {};
msg1.data.agentid = agentid;
msg1.data.gameid = gameid;
msg1.data.roomcode = o_roomcodes.roomlist[i];
//玩家列表
msg1.data.playeridlist = [];
for (var j = 0; j < o_room.seatlist.length; j++) {
if (o_room.seatlist[j]){
msg1.data.playeridlist.push(o_room.seatlist[j].playerid);
}
}
youle_room.app.youle_agent[msg1.rpc](msg1,true);
var msg2 = {};
msg2.app = youle_room.app.appname;
msg2.route = youle_room.routename;
msg2.rpc = "other_break_room";
o_room.method.sendpack_toother(msg2, o_player.gameinfo.seat);
// //解散房间
// var o_agent = o_room.o_game.o_agent;
// var o_game = o_room.o_game;
// var msg1 = {};
// msg1.app = youle_room.app.appname;
// msg1.route = youle_room.app.youle_agent.routename;
// msg1.rpc = "free_room";
// msg1.data = {};
// msg1.data.agentid = o_agent.agentid;
// msg1.data.gameid = o_game.gameid;
// msg1.data.roomcode = o_room.roomcode;
// //玩家列表
// msg1.data.playeridlist = [];
// for (var i = 0; i < o_room.seatlist.length; i++) {
// if (o_room.seatlist[i]){
// msg1.data.playeridlist.push(o_room.seatlist[i].playerid);
// }
// }
// youle_room.app.youle_agent[msg1.rpc](msg1);
//释放房间
o_game1.method.free_room(o_room);
}else{
youle_room.import.gameBreak(o_room);
}
}
}
}
var advan = 0;
if(adv){
advan = adv;
}else{
advan = o_player.advanced;
}
for (var i = 0; i < advan - o_roomcodes.roomlist.length; i++){
//随机获取新的房号
var roomcode = o_game.method.new_roomcode(o_player.shortcode);
//获取房号对应的房间服务器地址
var o_roomserver = o_game.method.get_roomserver(roomcode);
//通知房间服务器创建房间
var msg = {};
msg.app = youle_agent.app.appname;
msg.route = youle_agent.app.youle_room.routename;
msg.rpc = "create_room";
msg.data = {};
msg.data.agent = {};
msg.data.agent.agentid = agentid;
msg.data.agent.name = o_agent.agentname;
msg.data.agent.server = o_agent.server;
msg.data.agent.tcpport = o_agent.tcpport;
msg.data.agent.httpport = o_agent.httpport;
msg.data.agent.freeroom = o_agent.freeroom;
msg.data.game = {};
msg.data.game.gameid = gameid;
msg.data.game.name = o_game.gamename;
msg.data.game.seatcount = o_game.seatcount;
msg.data.game.makewar = o_game.makewar;
msg.data.game.modename = o_game.modename;
msg.data.game.server = o_roomserver.server;
msg.data.game.tcpport = o_roomserver.tcpport;
msg.data.game.httpport = o_roomserver.httpport;
msg.data.game.minroomcode = o_roomserver.minroomcode;
msg.data.game.maxroomcode = o_roomserver.maxroomcode;
msg.data.player = {};
msg.data.player.playerid = playerid;
msg.data.player.nickname = o_player.nickname;
msg.data.player.avatar = o_player.avatar;
msg.data.player.sex = o_player.sex;
msg.data.player.playertype = o_player.playertype;
msg.data.player.ip = null;
msg.data.player.conmode = null;
msg.data.player.fromid = null;
msg.data.player.address = o_player.address;
msg.data.player.latitude = o_player.latitude;
msg.data.player.longitude = o_player.longitude;
msg.data.player.bean = o_player.bean;
msg.data.room = {};
msg.data.room.roomcode = roomcode;
msg.data.room.roomtype = roomtype;
msg.data.room.needroomcard = needroomcard;
msg.data.room.asetcount = asetcount;
msg.data.room.infinite = infinite;
msg.data.room.roommode = roommode;
msg.data.room.beanfloor = beanfloor;
msg.data.room.beanmult = beanmult;
msg.data.room.needprepare = needprepare;
msg.data.room.advanced_type = 1;
msg.data.room.advanced_teabean = tea;
msg.data.room.shortcode = o_player.shortcode;
msg.data.room.videoConfig = videoConfig;
msg.data.room.rebateType = rebateType;
if(o_player.roomcodes[i].isClose == 0){
msg.data.room.isClose = 0;
}else if(o_player.roomcodes[i].isClose == 1){
msg.data.room.isClose = 1;
}
if (o_roomserver.server == o_agent.server){
//房间服务器与代理商服务器是同一地址
var roomserver_data = youle_agent.app.youle_room[msg.rpc](msg);
if (roomserver_data.data.state == 0){
o_roomcodes.roomlist.push(roomcode);
i = i - 1;
}
}
}
o_roomcodes.roomlist.length = advan;
pack.data.roommode = roommode;
pack.data.roomlist = o_roomcodes.roomlist;
//已存在分享的vip房
if(o_game.sharerooms_player){
var findIndex = min_ary_indexof(o_game.sharerooms_player, o_player.shortcode, "roomcode");
if(findIndex > -1){
o_game.sharerooms_player[findIndex].roomlist = o_roomcodes.roomlist;
o_game.sharerooms_player[findIndex].roomtype = roomtype;
o_game.sharerooms_player[findIndex].destwo = o_player.destwo;
o_game.sharerooms_player[findIndex].roommode = roommode;
}
}
//修改数据库
//console.log(2,JSON.stringify(o_player.roomcodes));
var sql = "update player set play_roomcodes = ? where play_agentid = ? and play_playerid = ?";
youle_agent.mysql.execsql("execsql", sql, [JSON.stringify(o_player.roomcodes), agentid, playerid]);
return pack;
}
//自动创建单个固定房号的房间
youle_agent.advanced_createroom_roomcode = function(pack){
var agentid = pack.data.agentid;
var gameid = pack.data.gameid;
var playerid = parseInt(pack.data.playerid);
var roomcode = parseInt(pack.data.roomcode);
var shortcode = pack.data.shortcode;
//var videoConfig = pack.data.videoConfig;
//查找代理商
var o_agent = youle_agent.agents.method.find_agent(agentid);
if (!o_agent) {
return;
};
//检查游戏id是否存在
var o_game = o_agent.method.find_game(gameid);
if (!o_game) {
return;
};
//查找玩家
var o_player = o_agent.method.find_player(playerid);
if (!o_player) {
return;
};
var o_cfg = youle_agent.app.youle_platform.config;
var rebateConfig = o_cfg.method.get_paravalue("rebateConfig", agentid);
var isfound = false;
var tea;
var roomtype;
var infinite = 0;
var videoConfig = null;
var rebateType = 0;
// var isClose = 0;
for (var i = 0; i < o_player.roomcodes.length; i++) {
if (o_player.roomcodes[i].gameid == gameid) {
for (var j = 0; j < o_player.roomcodes[i].roomlist.length; j++) {
if (o_player.roomcodes[i].roomlist[j] == roomcode){
isfound = true;
tea = o_player.roomcodes[i].tea;
roomtype = o_player.roomcodes[i].roomtype;
if(o_player.roomcodes[i].videoConfig){
videoConfig = o_player.roomcodes[i].videoConfig;
}
// if(o_player.roomcodes[i].isClose){
// isClose = o_player.roomcodes[i].isClose;
// }
if (o_player.roomcodes[i].infinite){
infinite = o_player.roomcodes[i].infinite;
}
if (o_player.roomcodes[i].rebateType){
rebateType = o_player.roomcodes[i].rebateType;
}
break;
}
}
if (isfound){
break;
}
}
}
if (!isfound){
return;
}
//获取开房所需的房卡数量
var needroomcard = youle_agent.import.createroom_needroomcard(o_game, roomtype);
//获取总局数
var asetcount = youle_agent.import.createroom_asetcount(o_game, roomtype);
//获取豆豆下限
var beanfloor = youle_agent.import.createroom_beanfloor(o_game, roomtype);
//获取房间类型
var roommode = youle_agent.import.createroom_roommode(o_game, roomtype);
//获取星星场倍数
var beanmult = youle_agent.import.createroom_beanmult(o_game, roomtype);
//判断玩家设置的房间费是否符合范围
if(rebateConfig){
var sysTea = parseInt(beanmult * rebateConfig.value/100);
if(tea < sysTea){
tea = sysTea;
}
if(!rebateConfig.rebateCharm){
rebateType = 0;
}
}
if(roommode){
rebateType = 0;
}
//视频房房卡星星扣除修改
if(needroomcard>0){
var vConfig = o_agent.method.alyVideoConfig(videoConfig);
if(vConfig[0] == 1){
needroomcard += vConfig[1];
}
}
//不是星星场
if (!roommode){
beanmult = 1;
}
//玩家是否需要准备
var needprepare = youle_agent.import.createroom_needprepare(o_game, roomtype);
//不是星星场
//获取房号对应的房间服务器地址
o_game.method.new_roomcode(roomcode);
var o_roomserver = o_game.method.get_roomserver(roomcode);
//通知房间服务器创建房间
var msg = {};
msg.app = youle_agent.app.appname;
msg.route = youle_agent.app.youle_room.routename;
msg.rpc = "create_room";
msg.data = {};
msg.data.agent = {};
msg.data.agent.agentid = agentid;
msg.data.agent.name = o_agent.agentname;
msg.data.agent.server = o_agent.server;
msg.data.agent.tcpport = o_agent.tcpport;
msg.data.agent.httpport = o_agent.httpport;
msg.data.agent.freeroom = o_agent.freeroom;
msg.data.game = {};
msg.data.game.gameid = gameid;
msg.data.game.name = o_game.gamename;
msg.data.game.seatcount = o_game.seatcount;
msg.data.game.makewar = o_game.makewar;
msg.data.game.modename = o_game.modename;
msg.data.game.server = o_roomserver.server;
msg.data.game.tcpport = o_roomserver.tcpport;
msg.data.game.httpport = o_roomserver.httpport;
msg.data.game.minroomcode = o_roomserver.minroomcode;
msg.data.game.maxroomcode = o_roomserver.maxroomcode;
msg.data.player = {};
msg.data.player.playerid = playerid;
msg.data.player.nickname = o_player.nickname;
msg.data.player.avatar = o_player.avatar;
msg.data.player.sex = o_player.sex;
msg.data.player.playertype = o_player.playertype;
msg.data.player.ip = null;
msg.data.player.conmode = null;
msg.data.player.fromid = null;
msg.data.player.address = o_player.address;
msg.data.player.latitude = o_player.latitude;
msg.data.player.longitude = o_player.longitude;
msg.data.player.bean = o_player.bean;
msg.data.room = {};
msg.data.room.roomcode = roomcode;
msg.data.room.roomtype = roomtype;
msg.data.room.needroomcard = needroomcard;
msg.data.room.asetcount = asetcount;
msg.data.room.infinite = infinite;
msg.data.room.roommode = roommode;
msg.data.room.beanfloor = beanfloor;
msg.data.room.beanmult = beanmult;
msg.data.room.needprepare = needprepare;
msg.data.room.advanced_type = 1;
msg.data.room.advanced_teabean = tea;
msg.data.room.shortcode = shortcode;
msg.data.room.videoConfig = videoConfig;
msg.data.room.rebateType = rebateType;
if (o_roomserver.server == o_agent.server){
//房间服务器与代理商服务器是同一地址
var roomserver_data = youle_agent.app.youle_room[msg.rpc](msg);
if (roomserver_data.data.state != 0){
console.log(min_now() + " 自动创建固定房号房间失败" + roomcode);
console.log(roomserver_data);
}
}
return pack;
}
youle_agent.query_player2 = function(pack){
var agentid = pack.data.agentid;
var playerid = parseInt(pack.data.playerid);
var db_callback = function(dbdata){
pack.data = {};
if (dbdata.length != 0){
pack.data.agentid = dbdata[0].play_agentid;
pack.data.playerid = dbdata[0].play_playerid;
pack.data.nickname = dbdata[0].play_nickname;
pack.data.avatar = dbdata[0].play_avatar;
pack.data.sex = dbdata[0].play_sex;
pack.data.roomcard = dbdata[0].play_roomcard;
pack.data.bean = dbdata[0].play_bean;
}
youle_agent.app.SendPack(pack);
}
var sql = "select * from player where play_agentid = ? and play_playerid = ?";
youle_agent.mysql.execsql("opensql", sql, [agentid, playerid], db_callback, pack);
}
youle_agent.query_player3 = function(pack){
var agentid = pack.data.agentid;
var unionid = pack.data.unionid;
var db_callback = function(dbdata){
pack.data = {};
if (dbdata.length != 0){
pack.data.agentid = dbdata[0].play_agentid;
pack.data.playerid = dbdata[0].play_playerid;
pack.data.roomcard = dbdata[0].play_roomcard;
pack.data.bean = dbdata[0].play_bean;
}
youle_agent.app.SendPack(pack);
}
var sql = "select * from player where play_agentid = ? and play_unionid = ?";
youle_agent.mysql.execsql("opensql", sql, [agentid, unionid], db_callback, pack);
}
youle_agent.query_player4 = function(pack){
var agentid = pack.data.agentid;
var playerid = parseInt(pack.data.playerid);
var shortcode = parseInt(pack.data.shortcode);
var db_callback = function(dbdata){
if (dbdata.length == 0){
youle_agent.app.SendPack(pack);
return;
}
var whitelist = JSON.stringify(youle_agent.deCompressWhiteList(dbdata[0].play_whitelist));
//var whitelist = dbdata[0].play_whitelist;
if (!whitelist){
youle_agent.app.SendPack(pack);
return;
}
whitelist = JSON.parse(whitelist);
var idx = -1;
idx = min_ary_indexof(whitelist, playerid, "playerid");
if (idx != -1){
pack.data.memo = 0;
youle_agent.app.SendPack(pack);
return;
}
idx = min_ary_indexof(whitelist, playerid);
if (idx != -1){
pack.data.memo = 0;
youle_agent.app.SendPack(pack);
return;
}
for (var i = 0; i < whitelist.length; i++) {
if (whitelist[i][0] == playerid){
if (whitelist[i][2]){
pack.data.memo = whitelist[i][2];
} else {
pack.data.memo = 0;
}
youle_agent.app.SendPack(pack);
return;
}
}
youle_agent.app.SendPack(pack);
}
var sql = "select * from player where play_agentid = ? and play_shortcode = ?";
youle_agent.mysql.execsql("opensql", sql, [agentid, shortcode], db_callback, pack);
}
youle_agent.get_treasurelist = function(pack){
var agentid = pack.data.agentid;
var db_callback = function(dbdata){
pack.data.list = [];
for (var i = 0; i < dbdata.length; i++) {
var o_player = {};
o_player.playerid = dbdata[i].play_playerid;
o_player.headimg = dbdata[i].play_avatar;
o_player.name = dbdata[i].play_nickname;
o_player.star = dbdata[i].play_bean;
o_player.signature = dbdata[i].play_sign;
pack.data.list.push(o_player);
}
youle_agent.app.SendPack(pack);
}
var sql = "select * from player where play_agentid = ? order by play_bean desc limit 10";
youle_agent.mysql.execsql("opensql", sql, [agentid], db_callback, pack);
}
//设置金币银行密码
youle_agent.set_bankpwd = function(pack){
var agentid = pack.data.agentid;
var playerid = parseInt(pack.data.playerid);
var unionid = pack.data.unionid;
var password = pack.data.password;
var tel = "";
if (pack.data.tel){
tel = pack.data.tel;
}
var wechat = "";
if (pack.data.wechat){
tel = pack.data.wechat;
}
//检查代理商id是否存在
var o_agent = youle_agent.agents.method.find_agent(agentid);
if (!o_agent) {
return;
};
//检查玩家是否存在
var o_player = o_agent.method.find_player(playerid);
if (!o_player) {
return;
};
if (o_player.unionid != unionid){
return;
}
if (!password){
pack.data = {};
pack.data.state = 1;
pack.data.error = "密码不能为空";
pack.data.showerror = 1;
return pack;
}
if (!o_player.bankpower){
pack.data = {};
pack.data.state = 1;
pack.data.error = "没有权限";
pack.data.showerror = 1;
return pack;
}
o_player.bankpwd = password;
var sql = "update player set play_bankpwd=?,play_tel=?,play_wechat=? where play_agentid = ? and play_playerid = ?";
youle_agent.mysql.execsql("execsql", sql, [password, tel, wechat, agentid, playerid]);
pack.data = {};
pack.data.state = 0;
pack.data.error = "设置成功";
pack.data.showerror = 1;
return pack;
}
//存入或取出金币
youle_agent.change_star = function(pack){
var agentid = pack.data.agentid;
var playerid = parseInt(pack.data.playerid);
var password = pack.data.password;
var mode = parseInt(pack.data.mode);
var count = parseInt(pack.data.count);
//检查代理商id是否存在
var o_agent = youle_agent.agents.method.find_agent(agentid);
if (!o_agent) {
return;
};
//检查玩家是否存在
var o_player = o_agent.method.find_player(playerid);
if (!o_player) {
return;
};
if (o_player.bankpwd != password){
pack.data = {};
pack.data.state = 1;
pack.data.error = "密码不正确";
pack.data.showerror = 1;
return pack;
}
if ((mode && count > o_player.bank) ||
(!mode && count > o_player.bean)){
pack.data = {};
pack.data.state = 1;
pack.data.error = "数量不够";
pack.data.showerror = 1;
return pack;
}
var initBean = Number(o_agent.initBean);
if(!o_agent.initBean){
initBean = 0;
}
var cTemp = false;
if(!mode){
if(o_player.bean < 0){
if(count > 0){
cTemp = true;
}
count = 0;
}else{
if(o_player.bean < initBean){
if(count > 0){
cTemp = true;
}
count = 0;
}else{
if(o_player.bean - count <= initBean){
if(count > o_player.bean - initBean){
cTemp = true;
}
count = o_player.bean - initBean;
}
}
}
}
var db_callback = function(dbdata){
if (dbdata[0].result == 1){
pack.data = {};
pack.data.state = 1;
pack.data.error = dbdata[0].error;
pack.data.showerror = 1;
youle_agent.app.SendPack(pack);
} else {
o_player.bean = parseInt(dbdata[0].play_bean);
o_player.bank = parseInt(dbdata[0].play_bank);
pack.data = {};
pack.data.state = 0;
pack.data.mode = mode;
pack.data.count = count;
pack.data.star1 = o_player.bean;
pack.data.star2 = o_player.bank;
if(cTemp){
pack.data.msg = "需要保留系统赠送、数值已被调整";
}
pack.data.count = count;
youle_agent.app.SendPack(pack);
}
}
var sql = "call cp_game_change_bankstar(?,?,?,?,?);";
youle_agent.mysql.execsql("opensql", sql, [agentid, playerid, password, mode, count], db_callback, pack);
}
//比赛列表
youle_agent.get_matchlist = function(pack){
var agentid = pack.data.agentid;
var gameid = pack.data.gameid;
var playerid = parseInt(pack.data.playerid);
pack.data.matchlist = [];
//查找代理商
var o_agent = youle_agent.agents.method.find_agent(agentid);
if (!o_agent) {
pack.data.state = 1;
pack.data.error = "agentid不存在";
return pack;
};
//查找游戏
var o_game = o_agent.method.find_game(gameid);
if (!o_game) {
pack.data.state = 1;
pack.data.error = "gameid不存在";
return pack;
};
//检查玩家是否存在
var o_player = o_agent.method.find_player(playerid);
if (!o_player) {
pack.data.state = 1;
pack.data.error = "playerid不存在";
return pack;
};
//检查玩家是否已经在房间内了
var o_gameinfo = o_player.method.get_gameinfo(o_game);
if (!o_gameinfo){
o_player.method.login_game(o_game, pack.ip, pack.conmode, pack.fromid, null, null);
o_gameinfo = o_player.method.get_gameinfo(o_game);
}
if (o_gameinfo && o_gameinfo.roomcode) {
pack.data.state = 1;
pack.data.error = "玩家已经在房间内";
return pack;
};
o_gameinfo.match_ip = pack.ip;
o_gameinfo.match_conmode = pack.conmode;
o_gameinfo.match_fromid = pack.fromid;
if (o_gameinfo.matchid){
pack.data.matchid = o_gameinfo.matchid;
pack.data.matchidx = o_gameinfo.matchidx;
} else {
pack.data.matchid = null;
pack.data.matchidx = null;
}
var matchlist = youle_agent.app.youle_platform.config.method.get_paravalue("matchlist", agentid, gameid);
// matchlist =
// [
// {
// "id": "2018041102",
// "roomtype": [1,1,1,2,2,[0,0,[0,0,0],null,null,0],[1,0,5]],
// "matchname": "有机器人",
// "imageurl": "",
// "beginTime": "2018-04-16 15:00",
// "endTime": "2018-04-16 17:45",
// "playercount": 7,
// "playercount2": 6,
// "bean": 0,
// "roomcard": 1,
// "topcount": 6,
// "circulation": 0,
// "interval": 0,
// "gradename": "名称1",
// "memo1": "第一名:iphone1",
// "memo2": "2局扣卡1张#每局抢庄,牛几几倍,#星星场10倍茶水费10#5人场强制下注5",
// "memo3": "",
// "haverobot": 1,
// "ranking":
// [
// {
// "min": 100,
// "max": 200,
// "count": 3
// },
// {
// "min": 200,
// "max": 300,
// "count": 2
// }
// ]
// }
// ];
for (var i = 0; i < matchlist.length; i++) {
o_game.matchlist.method.load_match(matchlist[i]);
};
var do_getmatchinfo = function(obj_match){
var r = {};
r.id = obj_match.id;
r.idx = obj_match.idx;
r.roomtype = obj_match.roomtype;
r.matchname = obj_match.matchname;
r.imageurl = obj_match.imageurl;
r.playercount = obj_match.playercount;
r.playercount2= obj_match.playercount2;
r.beginTime = obj_match.beginTime;
r.endTime = obj_match.endTime;
r.bean = obj_match.bean;
r.roomcard = obj_match.roomcard;
r.gradename = obj_match.gradename;
r.memo1 = obj_match.memo1;
r.memo2 = obj_match.memo2;
r.memo3 = obj_match.memo3;
r.isstart = obj_match.isstart;
r.s_pcount = obj_match.playerlist.length;
return r;
}
for (var i = 0; i < o_game.matchlist.list.length; i++) {
var o_match = o_game.matchlist.list[i];
var found = false;
for (var j = 0; j < pack.data.matchlist.length; j++) {
if ((new Date(o_match.beginTime)).getTime() < (new Date(pack.data.matchlist[j].beginTime)).getTime()){
var o_match_info = do_getmatchinfo(o_match);
pack.data.matchlist.splice(j, 0, o_match_info);
found = true;
break;
}
}
if (!found){
var o_match_info = do_getmatchinfo(o_match);
pack.data.matchlist.push(o_match_info);
}
};
return pack;
}
//比赛排队
youle_agent.lineup = function(pack){
var agentid = pack.data.agentid;
var gameid = pack.data.gameid;
var matchid = pack.data.matchid;
var matchidx = parseInt(pack.data.matchidx);
var playerid = parseInt(pack.data.playerid);
//查找代理商
var o_agent = youle_agent.agents.method.find_agent(agentid);
if (!o_agent) {
pack.data.state = 1;
pack.data.error = "agentid不存在";
return pack;
};
//查找游戏
var o_game = o_agent.method.find_game(gameid);
if (!o_game) {
pack.data.state = 1;
pack.data.error = "gameid不存在";
return pack;
};
//检查玩家是否存在
var o_player = o_agent.method.find_player(playerid);
if (!o_player) {
pack.data.state = 1;
pack.data.error = "playerid不存在";
return pack;
};
//检查玩家是否已经在房间内了
var o_gameinfo = o_player.method.get_gameinfo(o_game);
if (!o_gameinfo){
o_player.method.login_game(o_game, pack.ip, pack.conmode, pack.fromid, null, null);
o_gameinfo = o_player.method.get_gameinfo(o_game);
}
if (o_gameinfo && o_gameinfo.roomcode) {
pack.data.state = 1;
pack.data.error = "玩家已经在房间内";
return pack;
};
//检查玩家是否已经在排队
if (o_gameinfo && o_gameinfo.matchid) {
pack.data.state = 1;
pack.data.error = "玩家已经在排队";
return pack;
};
//查找比赛
var o_match = o_game.matchlist.method.find_match(matchid, matchidx);
if (!o_match){
pack.data.state = 1;
pack.data.error = "比赛不存在或已结束";
return pack;
}
//检查玩家房卡是否够用
var needroomcard = youle_agent.import.createroom_needroomcard(o_game, o_match.roomtype);
if (o_player.roomcard < o_match.roomcard){
var roomCardName = youle_agent.app.youle_platform.config.method.get_paravalue("roomCardName", agentid);
if (!roomCardName){
roomCardName = "房卡";
}
pack.data.state = 1;
pack.data.error = roomCardName + "数量不够";
return pack;
};
//检查玩家金币是否够用
var beanfloor = youle_agent.import.createroom_beanfloor(o_game, o_match.roomtype);
if (beanfloor != null){
if (o_player.bean < beanfloor){
var starName = youle_agent.app.youle_platform.config.method.get_paravalue("starName", agentid);
if (!starName){
starName = "星星";
}
pack.data.state = 1;
pack.data.error = starName + "数量不够";
return pack;
}
};
var idx = min_ary_indexof(o_match.playerlist, playerid);
if (idx == -1){
o_match.playerlist.push(playerid);
o_gameinfo.matchid = o_match.id;
o_gameinfo.matchidx = o_match.idx;
}
pack.data.state = 0;
pack.data.s_pcount = o_match.playerlist.length;
return pack;
}
//取消排队
youle_agent.lineup_cancel = function(pack){
var agentid = pack.data.agentid;
var gameid = pack.data.gameid;
var matchid = pack.data.matchid;
var matchidx = parseInt(pack.data.matchidx);
var playerid = parseInt(pack.data.playerid);
//查找代理商
var o_agent = youle_agent.agents.method.find_agent(agentid);
if (!o_agent) {
pack.data.state = 1;
pack.data.error = "agentid不存在";
return pack;
};
//查找游戏
var o_game = o_agent.method.find_game(gameid);
if (!o_game) {
pack.data.state = 1;
pack.data.error = "gameid不存在";
return pack;
};
//检查玩家是否存在
var o_player = o_agent.method.find_player(playerid);
if (!o_player) {
pack.data.state = 1;
pack.data.error = "playerid不存在";
return pack;
};
//查找比赛
var o_match = o_game.matchlist.method.find_match(matchid, matchidx);
if (!o_match){
pack.data.state = 1;
pack.data.error = "比赛不存在或已结束";
return pack;
}
var idx = min_ary_indexof(o_match.playerlist, playerid);
if (idx > -1){
o_match.playerlist.splice(idx, 1);
var o_gameinfo = o_player.method.get_gameinfo(o_game);
if (o_gameinfo){
delete o_gameinfo.matchid;
delete o_gameinfo.matchidx;
}
}
pack.data.state = 0;
pack.data.s_pcount = o_match.playerlist.length;
return pack;
}
//获取某个比赛的排行榜
youle_agent.get_ranklist = function(pack){
var agentid = pack.data.agentid;
var gameid = pack.data.gameid;
var playerid = parseInt(pack.data.playerid);
var matchid = pack.data.match_id;
var matchidx = parseInt(pack.data.match_idx);
//查找代理商
var o_agent = youle_agent.agents.method.find_agent(agentid);
if (!o_agent) {
pack.data.state = 1;
pack.data.error = "agentid不存在";
return pack;
};
//查找游戏
var o_game = o_agent.method.find_game(gameid);
if (!o_game) {
pack.data.state = 1;
pack.data.error = "gameid不存在";
return pack;
};
//检查玩家是否存在
var o_player = o_agent.method.find_player(playerid);
if (!o_player) {
pack.data.state = 1;
pack.data.error = "playerid不存在";
return pack;
};
//查找比赛
var o_match = o_game.matchlist.method.find_match(matchid, matchidx);
if (!o_match){
pack.data.state = 1;
pack.data.error = "比赛不存在或已结束";
return pack;
}
pack.data.state = 0;
pack.data.ranklist = o_match.ranklist;
return pack;
}
//获取我上榜了的比赛列表
youle_agent.get_mymatchlist = function(pack){
var agentid = pack.data.agentid;
var gameid = pack.data.gameid;
var playerid = parseInt(pack.data.playerid);
//查找代理商
var o_agent = youle_agent.agents.method.find_agent(agentid);
if (!o_agent) {
pack.data.state = 1;
pack.data.error = "agentid不存在";
return pack;
};
//查找游戏
var o_game = o_agent.method.find_game(gameid);
if (!o_game) {
pack.data.state = 1;
pack.data.error = "gameid不存在";
return pack;
};
//检查玩家是否存在
var o_player = o_agent.method.find_player(playerid);
if (!o_player) {
pack.data.state = 1;
pack.data.error = "playerid不存在";
return pack;
};
pack.data.matchlist1 = [];
for (var i = 0; i < o_game.matchlist.list.length; i++) {
if (min_ary_indexof(o_game.matchlist.list[i].ranklist, playerid, "playerid") > -1){
var o_match = {};
o_match.id = o_game.matchlist.list[i].id;
o_match.idx = o_game.matchlist.list[i].idx;
o_match.roomtype = o_game.matchlist.list[i].roomtype;
o_match.matchname = o_game.matchlist.list[i].matchname;
o_match.imageurl = o_game.matchlist.list[i].imageurl;
o_match.playercount = o_game.matchlist.list[i].playercount;
o_match.beginTime = o_game.matchlist.list[i].beginTime;
o_match.endTime = o_game.matchlist.list[i].endTime;
o_match.bean = o_game.matchlist.list[i].bean;
o_match.roomcard = o_game.matchlist.list[i].roomcard;
o_match.gradename = o_game.matchlist.list[i].gradename;
o_match.memo1 = o_game.matchlist.list[i].memo1;
o_match.memo2 = o_game.matchlist.list[i].memo2;
o_match.memo3 = o_game.matchlist.list[i].memo3;
o_match.ranklist = o_game.matchlist.list[i].ranklist;
pack.data.matchlist1.push(o_match);
}
};
pack.data.matchlist2 = [];
var db_callback = function(dbdata){
for (var i = 0; i < dbdata.length; i++) {
var o_match = {};
o_match.id = dbdata[i].matc_matchid;
o_match.idx = dbdata[i].matc_matchidx;
o_match.roomtype = dbdata[i].matc_roomtype;
o_match.matchname = dbdata[i].matc_matchname;
o_match.imageurl = dbdata[i].matc_imageurl;
o_match.playercount = dbdata[i].matc_playercount;
o_match.beginTime = dbdata[i].matc_beginTime;
o_match.endTime = dbdata[i].matc_endTime;
o_match.bean = dbdata[i].matc_bean;
o_match.roomcard = dbdata[i].matc_roomcard;
o_match.gradename = dbdata[i].matc_gradename;
o_match.memo1 = dbdata[i].matc_memo1;
o_match.memo2 = dbdata[i].matc_memo2;
o_match.memo3 = dbdata[i].matc_memo3;
o_match.ranklist = JSON.parse(dbdata[i].matc_ranking);
pack.data.matchlist2.push(o_match);
}
youle_agent.app.SendPack(pack);
}
var sql = "select * from `match` " +
"where exists (select 1 from match_ranking " +
"where mara_agentid = matc_agentid " +
"and mara_gameid = matc_gameid " +
"and mara_matchid = matc_matchid " +
"and mara_matchidx = matc_matchidx " +
"and mara_agentid = ? " +
"and mara_gameid = ? " +
"and mara_playerid = ?);";
youle_agent.mysql_grade.execsql("opensql", sql, [agentid, gameid, playerid], db_callback);
}
//代理后台-充值房卡
youle_agent.synch_roomcard = function(pack){
var agentid = pack.data.agentid;
var playerid = parseInt(pack.data.playerid);
var opt = parseInt(pack.data.opt);
var roomcard = parseInt(pack.data.roomcard);
var change = parseInt(pack.data.change);
//查找代理商
var o_agent = youle_agent.agents.method.find_agent(agentid);
if (!o_agent) {
pack.data.state = 0;
return pack;
};
//检查玩家
var o_player = o_agent.method.find_player(playerid);
if (!o_player) {
pack.data.state = 0;
return pack;
};
o_player.method.update_roomcard(opt, roomcard, change);
pack.data.state = 0;
return pack;
}
//代理后台-充值星星
youle_agent.synch_bean = function(pack){
var agentid = pack.data.agentid;
var playerid = parseInt(pack.data.playerid);
var opt = parseInt(pack.data.opt);
var bean = parseInt(pack.data.bean);
var change = parseInt(pack.data.change);
//查找代理商
var o_agent = youle_agent.agents.method.find_agent(agentid);
if (!o_agent) {
pack.data.state = 0;
return pack;
};
//检查玩家
var o_player = o_agent.method.find_player(playerid);
if (!o_player) {
pack.data.state = 0;
return pack;
};
o_player.method.update_bean(opt, bean, change);
pack.data.state = 0;
return pack;
}
//代理后台-玩家绑定邀请码/解绑邀请码
youle_agent.synch_invitecode = function(pack){
var agentid = pack.data.agentid;
var playerid = parseInt(pack.data.playerid);
var invitecode = parseInt(pack.data.invitecode);
//查找代理商
var o_agent = youle_agent.agents.method.find_agent(agentid);
if (!o_agent) {
pack.data.state = 0;
return pack;
};
//检查玩家
var o_player = o_agent.method.find_player(playerid);
if (!o_player) {
pack.data.state = 0;
return pack;
};
o_player.invitecode = invitecode;
pack.data.state = 0;
return pack;
}
//代理后台-封禁玩家/解封玩家
youle_agent.synch_playerstate = function(pack){
var agentid = pack.data.agentid;
var playerid = parseInt(pack.data.playerid);
var state = parseInt(pack.data.state);
//查找代理商
var o_agent = youle_agent.agents.method.find_agent(agentid);
if (!o_agent) {
pack.data.state = 0;
return pack;
};
//检查玩家
var o_player = o_agent.method.find_player(playerid);
if (!o_player) {
pack.data.state = 0;
return pack;
};
o_player.state = state;
pack.data.state = 0;
return pack;
}
//代理后台-开通短号
youle_agent.synch_shortcode = function(pack){
var agentid = pack.data.agentid;
var playerid = parseInt(pack.data.playerid);
var shortcode = parseInt(pack.data.shortcode);
var advanced = parseInt(pack.data.advanced);
var desone = pack.data.desone;
var destwo = pack.data.destwo;
var lower_limit = pack.data.lower_limit;
var announcement = pack.data.announcement;
//查找代理商
var o_agent = youle_agent.agents.method.find_agent(agentid);
if (!o_agent) {
pack.data.state = 0;
return pack;
};
//var db_callback_shortcode = function(dbdata){
//if(dbdata.length > 0){
// if(dbdata[0].play_roomcodes){
// o_player.roomcodes = JSON.parse(dbdata[0].play_roomcodes);
// }else{
// o_player.roomcodes = null;
// }
//console.log(o_player.roomcodes);
if (o_agent.shortcodes[shortcode]){
var old_playerid = o_agent.shortcodes[shortcode].playerid;
if (old_playerid != playerid){
var o_oldplayer = o_agent.method.find_player(old_playerid);
if (o_oldplayer){
o_oldplayer.advanced = 0;
o_oldplayer.shortcode = null;
o_oldplayer.roomcodes = [];
o_oldplayer.desone = null;
o_oldplayer.destwo = null;
o_oldplayer.lowlimit = null;
o_oldplayer.notice = null;
var sql = "update player set play_roomcodes = ? where play_agentid = ? and play_playerid = ?";
youle_agent.mysql.execsql("execsql", sql,[ "", agentid, old_playerid]);
}
}
}
var o_shortcode = {};
o_shortcode.shortcode = shortcode;
o_shortcode.playerid = playerid;
o_agent.shortcodes[shortcode] = o_shortcode;
var o_player = o_agent.method.find_player(playerid);
if (o_player) {
if (o_player.shortcode && o_player.shortcode != shortcode){
o_agent.shortcodes[o_player.shortcode] = null;
var o_game = null;
var o_agent1 = youle_room.agents.method.find_agent(agentid);
if(o_player.roomcodes && o_agent1){
//更换短号清除之前存在的旧房间
if(o_player.roomcodes && o_agent1){
for(var i=0;i<o_player.roomcodes.length;i++){
o_game = o_agent1.method.find_game(o_player.roomcodes[i].gameid);
if(o_game && o_player.roomcodes[i].roomlist.length > 0){
var o_room = null;
for(var j = 0;j < o_player.roomcodes[i].roomlist.length;j++){
o_room = o_game.method.find_room(o_player.roomcodes[i].roomlist[j]);
if(o_room){
o_room.shortcode = null;
o_room.advanced_type = null;
if(o_room.battlestate == 0){
//通知代理服务器解散房间
var msg1 = {};
msg1.app = youle_room.app.appname;
msg1.route = youle_room.app.youle_agent.routename;
msg1.rpc = "self_break_room";
msg1.data = {};
msg1.data.agentid = agentid;
msg1.data.gameid = o_player.roomcodes[i].gameid;
msg1.data.roomcode = o_player.roomcodes[i].roomlist[j];
//玩家列表
msg1.data.playeridlist = [];
for (var k = 0; k < o_room.seatlist.length; k++) {
if (o_room.seatlist[k]){
msg1.data.playeridlist.push(o_room.seatlist[k].playerid);
}
}
youle_room.app.youle_agent[msg1.rpc](msg1,true);
var msg2 = {};
msg2.app = youle_room.app.appname;
msg2.route = youle_room.routename;
msg2.rpc = "other_break_room";
o_room.method.sendpack_toother(msg2, o_player.gameinfo.seat);
//释放房间
o_game.method.free_room(o_room);
}else{
youle_room.import.gameBreak(o_room);
}
}else{
console.log("玩家短号房列表出现异常!!");
}
}
o_player.roomcodes[i].roomlist=[];
}
//已存在分享的vip房
var oGame = o_agent.method.find_game(o_player.roomcodes[i].gameid);
if(oGame){
if(oGame.sharerooms_player){
var findIndex = min_ary_indexof(oGame.sharerooms_player, o_player.shortcode, "roomcode");
if(findIndex > -1){
min_ary_delval(oGame.sharerooms_player, o_player.shortcode, "roomcode");
}
}
}
}
//修改数据库
console.log(1,JSON.stringify(o_player.roomcodes));
var sql = "update player set play_roomcodes = ? where play_agentid = ? and play_playerid = ?";
youle_agent.mysql.execsql("execsql", sql, [JSON.stringify(o_player.roomcodes), agentid, playerid]);
}
}
}
var preAdvanced = o_player.advanced;
o_player.advanced = advanced;
o_player.shortcode = shortcode;
o_player.desone = desone;
o_player.destwo = destwo;
if (lower_limit != null){
o_player.lowlimit = parseInt(lower_limit);
} else {
o_player.lowlimit = -900000000;
}
o_player.notice = announcement;
//处理已存在的短号房间
var o_game = null;
var o_agent1 = youle_room.agents.method.find_agent(agentid);
if(o_player.roomcodes && o_agent1){
for(var i=0;i<o_player.roomcodes.length;i++){
o_game = o_agent1.method.find_game(o_player.roomcodes[i].gameid);
if(o_game && o_player.roomcodes[i].roomlist.length > 0){
if(preAdvanced > advanced){//房间数量减少
var o_room = null;
for(var j = o_player.roomcodes[i].roomlist.length-1;j >= advanced;j--){
o_room = o_game.method.find_room(o_player.roomcodes[i].roomlist[j]);
if(o_room){
o_room.shortcode = null;
o_room.advanced_type = null;
if(o_room.battlestate == 0){
//通知代理服务器解散房间
var msg1 = {};
msg1.app = youle_room.app.appname;
msg1.route = youle_room.app.youle_agent.routename;
msg1.rpc = "self_break_room";
msg1.data = {};
msg1.data.agentid = agentid;
msg1.data.gameid = o_player.roomcodes[i].gameid;
msg1.data.roomcode = o_player.roomcodes[i].roomlist[j];
//玩家列表
msg1.data.playeridlist = [];
for (var k = 0; k < o_room.seatlist.length; k++) {
if (o_room.seatlist[k]){
msg1.data.playeridlist.push(o_room.seatlist[k].playerid);
}
}
youle_room.app.youle_agent[msg1.rpc](msg1,true);
var msg2 = {};
msg2.app = youle_room.app.appname;
msg2.route = youle_room.routename;
msg2.rpc = "other_break_room";
o_room.method.sendpack_toother(msg2, o_player.gameinfo.seat);
//释放房间
o_game.method.free_room(o_room);
}else{
youle_room.import.gameBreak(o_room);
}
}else{
console.log("玩家短号房列表出现异常!!");
}
}
o_player.roomcodes[i].roomlist.splice(advanced,preAdvanced - advanced);
var sql = "update player set play_roomcodes = ? where play_agentid = ? and play_playerid = ?";
youle_agent.mysql.execsql("execsql", sql, [JSON.stringify(o_player.roomcodes), agentid, playerid]);
//已存在分享的vip房
var oGame = o_agent.method.find_game(o_player.roomcodes[i].gameid);
if(oGame){
if(oGame.sharerooms_player){
var findIndex = min_ary_indexof(oGame.sharerooms_player, shortcode, "roomcode");
if(findIndex > -1){
oGame.sharerooms_player[findIndex].roomlist=o_player.roomcodes[i].roomlist;
oGame.sharerooms_player[findIndex].destwo=destwo;
}
}
}
}else if(preAdvanced < advanced){//房间数量增加
var mg = {};
mg.data={};
mg.data.agentid = agentid;
mg.data.gameid = o_player.roomcodes[i].gameid;
mg.data.playerid = o_player.playerid;
mg.data.tea = o_player.roomcodes[i].tea;
mg.data.roomtype = o_player.roomcodes[i].roomtype;
mg.data.infinite = o_player.roomcodes[i].infinite;
mg.data.videoConfig = o_player.roomcodes[i].videoConfig;
mg.data.rebateType = o_player.roomcodes[i].rebateType;
try{
youle_agent.advanced_createroom(mg,advanced);
}catch(e){
}
}
//已存在分享的vip房
var oGame = o_agent.method.find_game(o_player.roomcodes[i].gameid);
if(oGame){
if(oGame.sharerooms_player){
var findIndex = min_ary_indexof(oGame.sharerooms_player, shortcode, "roomcode");
if(findIndex > -1){
oGame.sharerooms_player[findIndex].destwo=destwo;
}
}
}
}
}
}
}
// }
//};
// sql = "select * from player where play_agentid = ? and play_playerid = ?";
// youle_agent.mysql.execsql("opensql", sql, [agentid,playerid], db_callback_shortcode);
// console.log("获取房间");
pack.data.state = 0;
return pack;
}
//代理后台-设置短号白名单
youle_agent.synch_whitelist = function(pack){
var agentid = pack.data.agentid;
var playerid = parseInt(pack.data.playerid);
var whitelist = pack.data.whitelist;
if(whitelist){
for(var i=0;i<whitelist.length;i++){
if(whitelist[i][2]){
whitelist[i][2] = parseInt(whitelist[i][2]);
}else{
whitelist[i][2] = 0;
}
}
}
//查找代理商
var o_agent = youle_agent.agents.method.find_agent(agentid);
if (!o_agent) {
pack.data.state = 0;
return pack;
};
//检查玩家
var o_player = o_agent.method.find_player(playerid);
if (!o_player) {
pack.data.state = 0;
return pack;
};
o_player.whitelist = whitelist;
pack.data.state = 0;
return pack;
}
//代理后台-修改短号白名单
youle_agent.synch_update_whitelist = function(pack){
var agentid = pack.data.agentid;
var shortcode = parseInt(pack.data.shortcode);
var whitelist = pack.data.whitelist;
if(whitelist){
for(var i=0;i<whitelist.length;i++){
if(whitelist[i][2]){
whitelist[i][2] = parseInt(whitelist[i][2]);
}else{
whitelist[i][2] = 0;
}
}
}
//查找代理商
var o_agent = youle_agent.agents.method.find_agent(agentid);
if (!o_agent) {
pack.data.state = 0;
return pack;
};
//查找短号
if (!o_agent.shortcodes){
pack.data.state = 0;
return pack;
}
var o_shortcode = o_agent.shortcodes[shortcode];
if (!o_shortcode){
pack.data.state = 1;
return pack;
}
var playerid = o_shortcode.playerid;
//检查玩家
var o_player = o_agent.method.find_player(playerid);
if (!o_player) {
pack.data.state = 0;
return pack;
};
o_player.whitelist = whitelist;
pack.data.state = 0;
return pack;
}
//代理后台-设置系统星星抽成
youle_agent.synch_coinrebate = function(pack){
var agentid = pack.data.agentid;
var playerid = parseInt(pack.data.playerid);
var mode1 = pack.data.mode1;
var set1 = pack.data.set1;
var mode2 = pack.data.mode2;
var set2 = pack.data.set2;
//查找代理商
var o_agent = youle_agent.agents.method.find_agent(agentid);
if (!o_agent) {
pack.data.state = 0;
return pack;
};
o_agent.rebate_mode1 = mode1;
o_agent.rebate_set1 = set1;
o_agent.rebate_mode2 = mode2;
o_agent.rebate_set2 = set2;
pack.data.state = 0;
return pack;
}
//设置签名
youle_agent.setSign = function(pack){
var agentid = pack.data.agentid;
var playerid = parseInt(pack.data.playerid);
var sign = pack.data.sign;
//查找代理商
var o_agent = youle_agent.agents.method.find_agent(agentid);
if (!o_agent) {
return false;
};
//查找玩家
var o_player = o_agent.method.find_player(playerid);
if (!o_player) {
return false;
};
o_player.sign = sign;
var sql = "update player set play_sign = ? where play_agentid = ? and play_playerid = ?";
youle_agent.mysql.execsql("execsql", sql, [sign, agentid, playerid]);
youle_agent.app.SendPack(pack);
return pack;
}
//转移仓库金币
youle_agent.changeBankBean = function(pack){
var agentid = pack.data.agentid;
var password = pack.data.password;
var newPlayerid = pack.data.newPlayerid;
var oldPlayerid = pack.data.oldPlayerid;
var db_callback = function(dbdata){
console.log(dbdata);
}
var sql_game = "call cp_sales2_change_bank(?,?,?,?)";
youle_agent.mysql.execsql("opensql", sql_game, [agentid, password, newPlayerid, oldPlayerid], db_callback);
}
youle_agent.compressWhiteList = function(data){
var dataStr = JSON.stringify(data);
if(dataStr.length > 6000){//超出
var cmpStr = LZString.compressToUTF16(dataStr);
return "zip"+cmpStr;
}else{
return dataStr;
}
}
youle_agent.deCompressWhiteList = function(data){
var dataStr = data;
if(dataStr.indexOf("zip")==0){//压缩
var str = dataStr.slice(3,dataStr.length);
var deStr = LZString.decompressFromUTF16(str);
return JSON.parse(deStr);
}else{
return JSON.parse(dataStr);
}
}
youle_agent.optBanList = function(pack){
//agent player 下的属性 banList:[];
var agentid = pack.data.agentid;
var playerid = pack.data.playerid;
var optId = parseInt(pack.data.optId);
//type 1.获取名单 2.查询单个玩家是否在名单中 3.添加名单 4.删除单个名单 5.清空名单
var type = pack.data.type;
//查找代理商
var o_agent = youle_agent.agents.method.find_agent(agentid);
if (!o_agent) {
return false;
};
//查找玩家
var o_player = o_agent.method.find_player(playerid);
if (!o_player) {
return false;
};
if(!o_player.banList){
o_player.banList = [];
}
if(type){
type = Number(type);
}else{
type = 0;
}
switch(type){
//查询名单
case 1:
pack.data.banList = o_player.banList;
break;
//查询单个玩家是否在名单中
case 2:
if(o_player.banList.indexOf(optId) < 0){//不在名单中
pack.data.message = "玩家"+optId+"不在名单中!";
}else{
pack.data.message = "您已添加过玩家:"+optId;
}
break;
//添加名单
case 3:
if(o_player.banList.indexOf(optId) < 0){//不在名单中
o_player.banList.push(optId);
pack.data.message = "玩家"+optId+"已添加!";
}else{
pack.data.message = "玩家"+optId+"已在名单中!";
}
break;
//删除单个名单
case 4:
if(o_player.banList.indexOf(optId) >= 0){//在名单中
min_ary_delval(o_player.banList,optId);
pack.data.message = "玩家"+optId+"已删除!";
}else{
pack.data.message = "玩家"+optId+"不在名单中!";
}
break;
//清空名单
case 5:
o_player.banList = [];
pack.data.message = "名单已清空!";
break;
default:
break;
}
return pack;
}