////////////////////////////////////////////////////////////////// //////////////////////////游戏平台服务器////////////////////////// ////////////////////////////////////////////////////////////////// youle_agent.debug = true; //更新手机验证码 youle_agent.update_phone_code = function(phonenum, smmcode) { var idx = min_ary_indexof(youle_agent.phonecodes, phonenum, "phonenum"); if (idx == -1){ var info = {}; info.phonenum = phonenum; info.smmcode = smmcode; info.sendtime = min_now(); youle_agent.phonecodes.push(info); } else { youle_agent.phonecodes[idx].smmcode = smmcode; youle_agent.phonecodes[idx].sendtime = min_now(); } } //发送手机验证码 youle_agent.send_phone_checkcode = function(pack){ var agentid = pack.data.agentid; var phonenum = pack.data.phonenum; var o_cfg = youle_agent.app.youle_platform.config; var cfg_smm_message = o_cfg.method.get_paravalue("smm_message", agentid); if (!cfg_smm_message){ cfg_smm_message = "您的验证码是X。"; } var smmcode = min_random(1000, 9999); var md5memo = min_replaceAll(cfg_smm_message, "X", smmcode, 1); var config = {}; config.url = "http://api.smsbao.com/sms"; config.type = "GET"; config.data = md5Geturl3(13619576943, "xieyu2018", phonenum, md5memo); min_http(config); youle_agent.update_phone_code(phonenum, smmcode); return pack; } //发送手机验证码-微信小程序版本 youle_agent.send_phone_code_wechat = function(pack){ var phonenum = pack.data.phonenum; var smmcode = min_random(1000, 9999); youle_agent.update_phone_code(phonenum, smmcode); pack.data.smmcode = smmcode; return pack; } //获取手机验证码-微信小程序版本 youle_agent.get_phone_code_wechat = function(pack){ var agentid = pack.data.agentid; var phonenum = pack.data.phonenum; var o_cfg = youle_agent.app.youle_platform.config; var cfg_smm_timeout = o_cfg.method.get_paravalue("smm_timeout", agentid); if (!cfg_smm_timeout){ cfg_smm_timeout = 60; } var smmcode = 0; var idx = min_ary_indexof(youle_agent.phonecodes, phonenum, "phonenum"); if (idx != -1){ var diff = min_datediff(youle_agent.phonecodes[idx].sendtime, min_now(), "second"); if (diff <= cfg_smm_timeout){ smmcode = youle_agent.phonecodes[idx].smmcode; } } if (smmcode == 0){ smmcode = min_random(1000, 9999); youle_agent.update_phone_code(phonenum, smmcode); } pack.data.smmcode = smmcode; return pack; } //绑定手机号 youle_agent.binding_phone = function(pack){ var agentid = pack.data.agentid; var playerid = pack.data.playerid; var telphone = pack.data.phonenum; var smmcode = pack.data.smmcode; //检查代理商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 idx = min_ary_indexof(youle_agent.phonecodes, telphone, "phonenum"); if (idx == -1 || youle_agent.phonecodes[idx].smmcode != smmcode){ pack.rpc = "show_message"; pack.data = {}; pack.data.msg = "短信验证码不正确"; pack.data.time = 0; youle_agent.app.SendPack(pack); return; } if (youle_agent.phonecodes[idx].smmcode != smmcode){ pack.rpc = "show_message"; pack.data = {}; pack.data.msg = "短信验证码不正确"; pack.data.time = 0; youle_agent.app.SendPack(pack); return; } var o_cfg = youle_agent.app.youle_platform.config; var cfg_smm_timeout = o_cfg.method.get_paravalue("smm_timeout", agentid); if (!cfg_smm_timeout){ cfg_smm_timeout = 60; } var diff = min_datediff(youle_agent.phonecodes[idx].sendtime, min_now(), "second"); if (diff > cfg_smm_timeout){ pack.rpc = "show_message"; pack.data = {}; pack.data.msg = "短信验证码已失效"; pack.data.time = 0; youle_agent.app.SendPack(pack); return; } var sql = "update player set play_tel = ? where play_agentid = ? and play_playerid = ?"; youle_agent.mysql.execsql("execsql", sql, [telphone, agentid, playerid]); o_player.tel = telphone; youle_agent.phonecodes.splice(idx, 1); return pack; } //绑定手机号(微信) youle_agent.bind_player_wechat = function(pack){ 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 telphone = pack.data.telphone; if (!agentid || !telphone || !unionid){ pack.data = { result: -1, msg: "参数缺失" }; youle_agent.app.SendPack(pack); 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 = "表情符号"; } //检查代理商id是否存在 var o_agent = youle_agent.agents.method.find_agent(agentid); if (!o_agent) { pack.data = { result: -1, msg: "代理商不存在" }; youle_agent.app.SendPack(pack); return; }; var db_callback = function(dbdata){ console.log(dbdata); if (dbdata.length > 0 && dbdata[0].length > 0 && dbdata[0][0].result_code == -1) { pack.rpc = "show_message"; pack.data = {}; pack.data.msg = dbdata[0][0].msg; pack.data.time = 0; pack.data.result = -1; youle_agent.app.SendPack(pack); return; } if (dbdata.length > 0 && dbdata[0].result == -1) { pack.data = { result: -1, msg: dbdata[0].msg}; youle_agent.app.SendPack(pack); return; } pack.data = { result: 0, msg: dbdata[0].msg}; youle_agent.app.SendPack(pack); } var sql = "call cp_bind_player_wechat(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)"; youle_agent.mysql.execsql("opensql", sql, [agentid, channelid, gameid, openid, unionid, nickname2, avatar, sex, province, city, marketid, telphone], db_callback, pack); } 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; } var telphone = null; if (pack.data.telphone){ telphone = pack.data.telphone; var smmcode = pack.data.smmcode; var telphoneAuto = pack.data.telphoneAuto; }; 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_getpond = function(){ var db_callback_getpond = function(dbdata){ o_game.pondlist = []; for (var i = 0; i < dbdata.length; i++) { var info = [parseInt(dbdata[i].aggp_pondid), parseInt(dbdata[i].aggp_value)]; o_game.pondlist.push(info); }; o_game.isloading = false; do_load_player(); } sql = "select * from agent_game_pond where aggp_agentid = ? and aggp_gameid = ?"; youle_agent.mysql.execsql("opensql", sql, [agentid, gameid], db_callback_getpond); } //获取比赛排行榜 var do_getmatchranking = function(){ do_getpond(); } //创建短号房间 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 { //如果传了手机号则需要验证短信验证码 if (telphone && !telphoneAuto){ pack.app = youle_agent.app.appname; pack.route = youle_agent.app.youle_room.routename; var idx = min_ary_indexof(youle_agent.phonecodes, telphone, "phonenum"); if (idx == -1 || youle_agent.phonecodes[idx].smmcode != smmcode){ pack.rpc = "player_login"; pack.data = {}; pack.data.msg = "短信验证码不正确"; pack.data.state = -1; pack.data.time = 0; youle_agent.app.SendPack(pack); return; } if (youle_agent.phonecodes[idx].smmcode != smmcode){ pack.rpc = "player_login"; pack.data = {}; pack.data.msg = "短信验证码不正确"; pack.data.state = -1; pack.data.time = 0; youle_agent.app.SendPack(pack); return; } var cfg_smm_timeout = o_cfg.method.get_paravalue("smm_timeout", agentid); if (!cfg_smm_timeout){ cfg_smm_timeout = 60; } var diff = min_datediff(youle_agent.phonecodes[idx].sendtime, min_now(), "second"); if (diff > cfg_smm_timeout){ pack.rpc = "player_login"; pack.data = {}; pack.data.state = -1; pack.data.msg = "短信验证码已失效"; pack.data.time = 0; youle_agent.app.SendPack(pack); return; } youle_agent.phonecodes.splice(idx, 1); } var db_callback_playerinfo = function(dbdata){ // 检查是否返回了错误信息 if (dbdata.length > 0 && dbdata[0].result == -1) { pack.rpc = "player_login"; pack.data = {}; pack.data.state = -1; pack.data.msg = dbdata[0].msg || "登录失败"; pack.data.time = 0; youle_agent.app.SendPack(pack); return; } // 如果是手机号登录,更新玩家信息为数据库返回的信息 if (telphone && dbdata[0].ret_nickname) { nickname2 = dbdata[0].ret_nickname; avatar = dbdata[0].ret_avatar; openid = dbdata[0].ret_openid; sex = parseInt(dbdata[0].ret_sex); unionid = dbdata[0].ret_unionid; // 还可以获取 province, city, logindate 等,如果需要的话 province = dbdata[0].ret_province; city = dbdata[0].ret_city; } 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.inviteid = parseInt(dbdata[0].inviteid); 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 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 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.gameid = gameid; 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; var gameid = pack.data.gameid; 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; msg.data={}; msg.data.fromOther = 1; msg.data.gameid = gameid; 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; var vipMatch = pack.data.vipMatch; 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 pShortcode = o_shortcode.shortcode; var config_vipConfig = youle_agent.app.youle_platform.config.method.get_paravalue("vipConfig", agentid, gameid);//0短号 1是否自动加入白名单 2默认的魅力值 3人数上限 4人满的提示内容 var config_vipConfigIndex = youle_agent.app.youle_platform.config.method.get_paravalue("vipConfigIndex", agentid, gameid); var inVip = -1; var vipConfig = null; var autoAdd = 0; if(config_vipConfig){ if(!config_vipConfigIndex){ config_vipConfigIndex = 0; } if(vipMatch){ if(config_vipConfig.length > config_vipConfigIndex){ inVip = config_vipConfigIndex; vipConfig = config_vipConfig[inVip]; autoAdd = vipConfig[1]; o_shortcode = o_agent.shortcodes[vipConfig[0]]; } }else{ var indx = min_ary_indexof(config_vipConfig, pShortcode, "0"); if(indx > -1){ vipConfig = config_vipConfig[indx]; autoAdd = vipConfig[1]; } inVip = indx; } } 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(inVip == -1 || !autoAdd){ 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){ // 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; } } } }else{ if(o_owner.whitelist){ var pIndex = min_ary_indexof(o_owner.whitelist, playerid, "0"); if(pIndex < 0){//不在白名单 if(o_owner.whitelist.length < vipConfig[3]){ var pInfo = [playerid,"",vipConfig[2]]; o_owner.whitelist.push(pInfo); var sql = "update player set play_whitelist = ? where play_agentid = ? and play_playerid = ?"; youle_room.mysql.execsql("execsql", sql, [youle_agent.compressWhiteList(o_owner.whitelist), agentid, playerid]); }else{ // var vIndex = (inVip + 1) % config_vipConfig.length; pack.data = {}; pack.data.state = 1; pack.data.error = min_replaceAll(vipConfig[4],"#","\n",false); pack.data.showerror = 1; youle_agent.app.SendPack(pack); return; } }else{ } }else{ o_owner.whitelist = []; var pInfo = [playerid,"",vipConfig[2]]; o_owner.whitelist.push(pInfo); var sql = "update player set play_whitelist = ? where play_agentid = ? and play_playerid = ?"; youle_room.mysql.execsql("execsql", sql, [youle_agent.compressWhiteList(o_owner.whitelist), agentid, playerid]); } } }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 forbidSelect = 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; forbidSelect = o_owner.roomcodes[i].forbidSelect; //videoConfig = o_owner.roomcodes[i].videoConfig; break; } } 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(isClose){ pack.data = {}; pack.data.state = 1; pack.data.error = "房间已被房主暂时关闭"; pack.data.showerror = 1; youle_agent.app.SendPack(pack); return; } var pShortcode = _roomsvr_room.shortcode; var config_vipConfig = youle_agent.app.youle_platform.config.method.get_paravalue("vipConfig", agentid, gameid);//0短号 1是否自动加入白名单 2默认的魅力值 3人数上限 4人满的提示内容 var config_vipConfigIndex = youle_agent.app.youle_platform.config.method.get_paravalue("vipConfigIndex", agentid, gameid); var inVip = -1; var vipConfig = null; var autoAdd = 0; if(config_vipConfig){ if(!config_vipConfigIndex){ config_vipConfigIndex = 0; } if(vipMatch){ if(config_vipConfig.length > config_vipConfigIndex){ inVip = config_vipConfigIndex; vipConfig = config_vipConfig[inVip]; autoAdd = vipConfig[1]; } }else{ var indx = min_ary_indexof(config_vipConfig, pShortcode, "0"); if(indx > -1){ vipConfig = config_vipConfig[indx]; autoAdd = vipConfig[1]; } inVip = indx; } } if(inVip == -1 || !autoAdd){ 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; } } } }else{ if(o_owner.whitelist){ var pIndex = min_ary_indexof(o_owner.whitelist, playerid, "0"); if(pIndex < 0){//不在白名单 if(o_owner.whitelist.length < vipConfig[3]){ var pInfo = [playerid,"",vipConfig[2]]; o_owner.whitelist.push(pInfo); var sql = "update player set play_whitelist = ? where play_agentid = ? and play_playerid = ?"; youle_room.mysql.execsql("execsql", sql, [youle_agent.compressWhiteList(o_player.whitelist), agentid, playerid]); }else{ // var vIndex = (inVip + 1) % config_vipConfig.length; pack.data = {}; pack.data.state = 1; pack.data.error = pack.data.error = min_replaceAll(vipConfig[4],"#","\n",false); pack.data.showerror = 1; youle_agent.app.SendPack(pack); return; } }else{ } }else{ if(vipConfig[3] > 0){ o_owner.whitelist = []; var pInfo = [playerid,"",vipConfig[2]]; o_owner.whitelist.push(pInfo); var sql = "update player set play_whitelist = ? where play_agentid = ? and play_playerid = ?"; youle_room.mysql.execsql("execsql", sql, [youle_agent.compressWhiteList(o_player.whitelist), agentid, playerid]); }else{ pack.data = {}; pack.data.state = 1; pack.data.error = pack.data.error = min_replaceAll(vipConfig[4],"#","\n",false); 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; } } } if(playerid != ownerid && forbidSelect){ 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; } } } } } } }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_backup = 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); } //获取战绩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; var sql3 = "select count(1) as win from player_grade where date(plgr_overtime) = curdate() and plgr_agentid = ? and plgr_gameid = ? and plgr_playerid = ? and plgr_winner = 1;"; var db_callback3 = function(dbdata3){ if(dbdata3.length > 0){ pack.data.winnerCount = dbdata3[0].win; } youle_agent.app.SendPack(pack); } if (type){ //youle_agent.app.SendPack(pack); youle_agent.mysql_grade.execsql("opensql", sql3, [agentid, gameid, playerid], db_callback3,pack); } else { //查询累积游戏局数 var db_callback2 = function(dbdata2){ if (dbdata2.length > 0){ pack.data.asetcount = parseInt(dbdata2[0].agpl_playset); } //youle_agent.app.SendPack(pack); youle_agent.mysql_grade.execsql("opensql", sql3, [agentid, gameid, playerid], db_callback3,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,o_agent,o_game,o_player){ 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; case "clearWhiteList": var type = youle_agent.getParam(cmd,"type"); switch(type){ case 1://清空该玩家的白名单 case "1": o_player.whitelist = []; break; case 2://删除玩家id为pid的白名单 case "2": var pid = youle_agent.getParam(cmd,"pid"); if(o_player.whitelist){ for(var i=0;i 0){ pack.data.msg = "增加玩家"+userid+"魅力值"+value+"!("+st.toISOString()+")"; }else{ pack.data.msg = "减少玩家"+userid+"魅力值"+value+"!("+st.toISOString()+")"; } } } pack.data.time = 0; //setTimeout(function(){ youle_agent.app.SendPack(pack); //},1000); return true; break; case "setCharmCount": if(!ClubData){ return; } var data = {}; data.gameid = pack.data.gameid; data.agentid = pack.data.agentid; data.playerid = pack.data.playerid; var userid = youle_agent.getParam(cmd,"userid"); var value = youle_agent.getParam(cmd,"value"); var mode = youle_agent.getParam(cmd,"mode"); if(value == null){ return false; }else if(typeof value == "string"){ value = Number(value); if(isNaN(value)){ return false; } } data.userid = userid; data.value = value; //查找代理商 var o_agent = youle_agent.agents.method.find_agent(data.agentid); if (!o_agent) { return false; }; //查找玩家 var o_player = o_agent.method.find_player(data.playerid); if (!o_player) { return false; } //判断短号 if(o_player.shortcode){ if(o_player.whitelist){ //判断白名单 var isFind = false; for(var i=0;i -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 -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; } if(o_player.roomcodes[i].rebateLimit){ pack.data.rebateLimit = o_player.roomcodes[i].rebateLimit; } if(o_player.roomcodes[i].forbidSelect){ pack.data.forbidSelect = o_player.roomcodes[i].forbidSelect; }else{ pack.data.forbidSelect = 0; } 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 rebateLimit = pack.data.rebateLimit; if(rebateLimit){ rebateLimit = parseInt(rebateLimit); }else{ rebateLimit = 0; } var forbidSelect = pack.data.forbidSelect; if(forbidSelect){ forbidSelect = parseInt(forbidSelect); }else{ forbidSelect = 0; } 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(gameid == "Btke0urRy0cvPd5CIvD5yfhYhKhdSdex"){ //}else{ 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.rebateLimit = rebateLimit; o_roomcodes.forbidSelect = forbidSelect; 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; } if(o_player.roomcodes[i].forbidSelect){ o_player.roomcodes[i].forbidSelect = 1; }else{ o_player.roomcodes[i].forbidSelect = 0; } o_player.roomcodes[i].rebateType = rebateType; o_player.roomcodes[i].rebateLimit = rebateLimit; 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; msg.data.room.rebateLimit = rebateLimit; msg.data.room.forbidSelect = forbidSelect; 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 rebateLimit = 0; var forbidSelect = 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; } if (o_player.roomcodes[i].rebateLimit){ rebateLimit = o_player.roomcodes[i].rebateLimit; } if (o_player.roomcodes[i].forbidSelect){ forbidSelect = o_player.roomcodes[i].forbidSelect; } 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 (!roommode){ beanmult = 1; } //判断玩家设置的房间费是否符合范围 if(rebateConfig){ var sysTea = parseInt(beanmult * rebateConfig.value/100); //if(gameid == "Btke0urRy0cvPd5CIvD5yfhYhKhdSdex"){ //}else{ 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; msg.data.room.rebateLimit = rebateLimit; msg.data.room.forbidSelect = forbidSelect; 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 = ? limit 1"; 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 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 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.rebateLimit = o_player.roomcodes[i].rebateLimit; mg.data.forbidSelect = o_player.roomcodes[i].forbidSelect; 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 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 gameid = pack.data.gameid; var optId = parseInt(pack.data.optId); //type 1.获取名单 2.查询单个玩家是否在名单中 3.添加名单 4.删除单个名单 5.清空名单 var type = pack.data.type; var breakRoom = pack.data.breakRoom; //查找代理商 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.unshift(optId); pack.data.message = "玩家"+optId+"已添加!"; }else{ pack.data.message = "玩家"+optId+"已在名单中!"; } pack.data.banList = o_player.banList; //未开战的该玩家房间解散 try{ if(breakRoom){ var o_player1 = o_agent.method.find_player(optId); if (o_player1) { var o_agent1 = youle_room.agents.method.find_agent(agentid); var o_game = o_agent1.method.find_game(gameid); if (o_game) { if(o_player1.gameinfo[o_game.idx]){ var roomcode = o_player1.gameinfo[o_game.idx].roomcode; var o_room = o_game.method.find_room(roomcode); if(o_room){ if(o_room.owner.playerid == playerid){ if (o_room.battlestate == 1){ o_room.method.open_free_timer(1); } else { //o_room.method.sendpack_toother(msg, -1); 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 = roomcode; //玩家列表 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); } //释放房间 o_game.method.free_room(o_room); } } } } } } }catch(e){ console.log(e); } 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+"不在名单中!"; } pack.data.banList = o_player.banList; break; //清空名单 case 5: o_player.banList = []; pack.data.message = "名单已清空!"; pack.data.banList = o_player.banList; break; //全部白名单添加入黑名单 case 6: var whitelist = o_player.whitelist; if(whitelist){ for(var i=0;i -1){ ownerid = o_agent.shortcodes[idx].playerid; } } if(!ownerid){ pack.data.error = 1; pack.data.message = "短号不存在"; return pack; } var owner = o_agent.method.find_player(ownerid);; if(!owner){ pack.data.error = 1; pack.data.message = "房主未登录"; return pack; } var whitelist = min_copyjson(owner.whitelist); if(whitelist){ //将白名单字符串转数字 for(var i=0;i val2[2] - val1[2]); // }else{ // whitelist.sort((val1,val2) => val1[2] - val2[2]); // } var myRank = min_ary_indexof(whitelist,playerid,"0"); pack.data.rankList = whitelist; pack.data.myRank = myRank + 1; if(myRank>-1){ pack.data.myScore = whitelist[myRank][2]; }else{ pack.data.myScore = 0; } }else{ //pack.data.rankList = []; pack.data.message = "该VIP房无排名信息!"; pack.data.myRank = 0; } return pack; } youle_agent.setAllCharm = function(pack){ var agentid = pack.data.agentid; var playerid = pack.data.playerid; var gameid = pack.data.gameid; var value = pack.data.value; if(value){ value = Number(value); }else{ value = 0; } //查找代理商 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; }; var whitelist = o_player.whitelist; var shortcode = o_player.shortcode; if(whitelist){ for(var i=0;i -1){ if(config_vipConfig[vipIndex][1]){ writeDB = false; } } } } writeDB = true; if(writeDB){ var sql = "update player set play_whitelist = ? where play_agentid = ? and play_playerid = ?"; youle_room.mysql.execsql("execsql", sql, [youle_agent.compressWhiteList(o_player.whitelist), agentid, playerid]); } }else{ // pack.data.message = "您白名单内还没玩家"; } pack.data.message = "设置成功!"; return pack; } youle_agent.setUserCharm = function(pack){ var agentid = pack.data.agentid; var playerid = pack.data.playerid; var gameid = pack.data.gameid; var userid = pack.data.userid; var value = pack.data.value; var mode = pack.data.mode; if(value){ value = Number(value); }else{ value = 0; } if(!mode){ mode = 0; } //查找代理商 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; }; var whitelist = o_player.whitelist; var shortcode = o_player.shortcode; if(whitelist){ for(var i=0;i -1){ if(config_vipConfig[vipIndex][1]){ writeDB = false; } } } } writeDB = true; if(writeDB){ var sql = "update player set play_whitelist = ? where play_agentid = ? and play_playerid = ?"; youle_room.mysql.execsql("execsql", sql, [youle_agent.compressWhiteList(o_player.whitelist), agentid, playerid]); } }else{ // pack.data.message = "您白名单内还没玩家"; } pack.data.message = "设置成功!"; return pack; } //查找玩家是否在白名单中 返回短号数组 youle_agent.findPlayerInWhiteList = function(agentid,userid){ //查找代理商 var res = []; var o_agent = youle_agent.agents.method.find_agent(agentid); if (!o_agent) { return res; }; if(o_agent.players){ for(var i=0;i playBean){ pack.data.state = 1; pack.data.error = "赠送数量超出!"; pack.data.showerror = 1; youle_agent.app.SendPack(pack); return ; } var uBank1 = Number(playBean) - Number(count); var sql = "update player set play_bank = ? where play_agentid = ? and play_playerid = ?"; youle_agent.mysql.execsql("execsql", sql, [uBank1, agentid, playerid]); var uBank2 = Number(playBean1) + Number(count); var sql = "update player set play_bank = ? where play_agentid = ? and play_playerid = ?"; youle_agent.mysql.execsql("execsql", sql, [uBank2, agentid, toPlayerid]); pack.data.state = 0; pack.data.showerror = 1; pack.data.star2 = uBank1; pack.data.error = "成功赠送"+starName+count; youle_agent.app.SendPack(pack); var sql = "insert into gold_account(goac_id,goac_agentid,goac_gameid,goac_roomcode,goac_roommode,goac_createtime,goac_beanmult,goac_ownerid,goac_shortcode,goac_deduct,goac_roomcard,goac_datatype,goac_asetcount,goac_asetnum,goac_playerid,goac_isrobot,goac_grade,goac_rebatefrom,goac_rebateto,goac_toplayerid,goac_rebatemode,goac_setvalue,goac_rebatevalue,goac_time,goac_invitecode,goac_inviteid,goac_marketid) values(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?);"; //房间id = 时间戳 + 4位随机码 + 房号 var roomid = new Date().getTime() + min_randomChar(4); var time = min_now(); var beanmult = 0; var shortcode = 0; var deductmode = 0; var __o_agentsvr_agent = youle_agent.agents.method.find_agent(agentid); var _change = 0; _change = -1 * count; youle_room.mysql_grade.execsql("execsql", sql, [roomid, agentid, gameid, "", 3, '', beanmult, playerid, shortcode, deductmode, 0, 0, 0, 1, playerid, 0, _change, 0, 0, toPlayerid, 0, 0, 0, time, invitecode1, inviteid1, marketid1]); _change = count; youle_room.mysql_grade.execsql("execsql", sql, [roomid, agentid, gameid, "", 3, '', beanmult, toPlayerid, shortcode, deductmode, 0, 0, 0, 1, toPlayerid, 0, _change, 0, 0, 0, 0, 0, 0, time, invitecode2, inviteid2, marketid2]); /* var sql = "insert into gold_account(goac_id,goac_agentid,goac_gameid,goac_roomcode,goac_roommode,goac_createtime,goac_beanmult,goac_ownerid,goac_shortcode,goac_deduct,goac_roomcard,goac_datatype,goac_asetcount,goac_asetnum,goac_playerid,goac_isrobot,goac_grade,goac_rebatefrom,goac_rebateto,goac_toplayerid,goac_rebatemode,goac_setvalue,goac_rebatevalue,goac_time,goac_invitecode,goac_inviteid,goac_marketid) values(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?);"; //房间id = 时间戳 + 4位随机码 + 房号 var roomid = new Date().getTime() + min_randomChar(4); var time = min_now(); var beanmult = 0; var shortcode = 0; var deductmode = 0; var __o_agentsvr_agent = youle_agent.agents.method.find_agent(agentid); var _change = 0; //赠送方 _change = -1 * count; var msg = {}; msg.app = youle_room.app.appname; msg.route = youle_room.app.youle_agent.routename; msg.rpc = "update_bean"; msg.data = {}; msg.data.agentid = agentid; msg.data.playerid = playerid; msg.data.change = _change; msg.data.pushbean = 0; msg.data.type = 7; msg.data.gameid = gameid; youle_room.app.youle_agent[msg.rpc](msg); youle_room.mysql_grade.execsql("execsql", sql, [roomid, agentid, gameid, "", 3, '', beanmult, playerid, shortcode, deductmode, 0, 0, 0, 1, playerid, 0, _change, 0, 0, toPlayerid, 0, 0, 0, time, invitecode1, inviteid1, marketid1]); //接收方 _change = count; var msg = {}; msg.app = youle_room.app.appname; msg.route = youle_room.app.youle_agent.routename; msg.rpc = "update_bean"; msg.data = {}; msg.data.agentid = agentid; msg.data.playerid = toPlayerid; msg.data.change = _change; msg.data.pushbean = 0; msg.data.type = 7; msg.data.gameid = gameid; youle_room.app.youle_agent[msg.rpc](msg); youle_room.mysql_grade.execsql("execsql", sql, [roomid, agentid, gameid, "", 3, '', beanmult, toPlayerid, shortcode, deductmode, 0, 0, 0, 1, toPlayerid, 0, _change, 0, 0, 0, 0, 0, 0, time, invitecode2, inviteid2, marketid2]); pack.data.state = 0; youle_agent.app.SendPack(pack); */ } //查找玩家 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; invitecode1 = dbdata[0].play_invitecode; inviteid1 = dbdata[0].play_inviteid; marketid1 = dbdata[0].play_marketid; if(password != dbdata[0].play_bankpwd){ pack.data.state = 1; pack.data.error = "密码不正确!"; pack.data.showerror = 1; youle_agent.app.SendPack(pack); }else{ playBean = dbdata[0].play_bank; var db_callback1 = function(dbdata){ 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; playBean1 = dbdata[0].play_bank; invitecode2 = dbdata[0].play_invitecode; inviteid2 = dbdata[0].play_inviteid; marketid2 = dbdata[0].play_marketid; callbackFun(); }else{ pack.data.state = 1; pack.data.error = "未找到赠送玩家,请确认ID!"; pack.data.showerror = 1; youle_agent.app.SendPack(pack); } } var sql1 = "select * from player where play_agentid = ? and play_playerid = ? limit 1"; youle_agent.mysql.execsql("opensql", sql1, [agentid, toPlayerid], db_callback1); } }else{ pack.data.state = 1; pack.data.error = "账号异常!"; pack.data.showerror = 1; youle_agent.app.SendPack(pack); } } var sql = "select * from player where play_agentid = ? and play_playerid = ? limit 1"; youle_agent.mysql.execsql("opensql", sql, [agentid, playerid], db_callback); } //充值卡充值 youle_agent.topup_card = function(pack){ var agentid = pack.data.agentid; var playerid = parseInt(pack.data.playerid); var cardno = pack.data.cardno; //查找代理商 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 == 3){ pack.rpc = "show_message"; pack.data = {}; pack.data.msg = "该卡号不存在"; pack.data.time = 0; youle_agent.app.SendPack(pack); return; } if (dbdata[0].result == 4){ pack.rpc = "show_message"; pack.data = {}; pack.data.msg = "该卡号已使用"; pack.data.time = 0; youle_agent.app.SendPack(pack); return; } var cardtype = parseInt(cardno.substr(32,1)); var amount = parseInt(cardno.substr(33,20)); switch(cardtype){ case 0: //房卡充值 var msg = {}; msg.app = "youle"; msg.route = "agent"; msg.rpc = "synch_roomcard"; msg.data = {}; msg.data.agentid = agentid; msg.data.playerid = playerid; msg.data.opt = 2; msg.data.roomcard = parseInt(dbdata[0].play_roomcard); msg.data.change = amount; youle_agent.synch_roomcard(msg); break; case 1: //金币充值 var msg = {}; msg.app = "youle"; msg.route = "agent"; msg.rpc = "synch_bean"; msg.data = {}; msg.data.agentid = agentid; msg.data.playerid = playerid; msg.data.opt = 2; msg.data.bean = parseInt(dbdata[0].play_bean); msg.data.change = amount; youle_agent.synch_bean(msg); break; } } var sql = "call cp_game_topup_card(?,?,?)"; youle_agent.mysql.execsql("opensql", sql, [agentid, playerid, cardno], db_callback); }