Files
youlegames/codes/games/server/youle/server_agent/rpc.js

8113 lines
250 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
//////////////////////////////////////////////////////////////////
//////////////////////////游戏平台服务器//////////////////////////
//////////////////////////////////////////////////////////////////
youle_agent.debug = true;
//更新手机验证码
youle_agent.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<o_player.whitelist.length;k++){
if(o_player.whitelist[k][2]){
o_player.whitelist[k][2] = parseInt(o_player.whitelist[k][2]);
}else{
o_player.whitelist[k][2] = 0;
}
}
} else {
o_player.whitelist = null;
}
if (dbdata[0].lowlimit != null){
o_player.lowlimit = parseInt(dbdata[0].lowlimit);
} else {
o_player.lowlimit = -900000000;
}
if (dbdata[0].notice){
o_player.notice = dbdata[0].notice;
} else {
o_player.notice = null;
}
if (dbdata[0].psign){
o_player.sign = dbdata[0].psign;
} else {
o_player.sign = null;
}
if (dbdata[0].tel){
o_player.tel = dbdata[0].tel;
} else {
o_player.tel = null;
}
o_player.loginday = min_now();
o_player.nn_winlose = parseInt(dbdata[0].nn_winlose); //牛牛总输赢分数
o_player.nn_winlose_xx = parseInt(dbdata[0].nn_winlose_xx); //牛牛总输赢分数(星星场)
o_player.nn_winlose_x2 = parseInt(dbdata[0].nn_winlose_x2); //牛牛总输赢星星(星星场)
updateGameWinLose(gameid,1,dbdata[0].game_winlose,o_player);
updateGameWinLose(gameid,2,dbdata[0].game_winlose_xx,o_player);
updateGameWinLose(gameid,3,dbdata[0].game_winlose_x2,o_player);
o_player.bankpower = parseInt(dbdata[0].bankpower);
o_player.bank = parseInt(dbdata[0].bank);
o_player.bankpwd = dbdata[0].bankpwd;
do_return_login(1);
}
sql = "call cp_game_player_login_1121(?,?,?,?,?,?,?,?,?,?,?,?);";
youle_agent.mysql.execsql("opensql", sql, [agentid, channelid, gameid, openid, unionid, nickname2, avatar, sex, province, city, marketid, telphone], db_callback_playerinfo, pack);
}
}
//游戏输赢设置 玩家输赢存在玩家winLose属性中
var updateGameWinLose = function(gameid,type,val,oPlayer){
var key;
val = Number(val);
switch(type){
case 1:
key = "game_winlose";
break;
case 2:
key = "game_winlose_xx";
break;
case 3:
key = "game_winlose_x2";
break;
}
if(oPlayer.winLose){//判断是否有次属性
if(oPlayer.winLose[gameid]){
if(oPlayer.winLose[gameid][key]){
oPlayer.winLose[gameid][key] += val;
}else{
oPlayer.winLose[gameid][key] = val;
}
}else{
oPlayer.winLose[gameid] = {};
oPlayer.winLose[gameid][key] = val;
}
}else{
oPlayer.winLose = {};
oPlayer.winLose[gameid] = {};
oPlayer.winLose[gameid][key] = val;
}
}
//返回前端登录包
var do_return_login = function(logindb){
if (o_player.state == 1){
pack.rpc = "kick_server";
pack.data = {};
pack.data.msg = "由于用户举报该游戏账号存在违规行为,已被封禁。";
youle_agent.app.SendPack(pack);
return;
}
o_player.marketid = marketid;
o_player.address = null;
o_player.latitude = null;
o_player.longitude = null;
o_agent.playerlogin = 1;
//玩家登录游戏
var player_ip;
if (!pack.data.ip){
o_player.method.login_game(o_game, pack.ip, pack.conmode, pack.fromid, machineid, machineroom);
player_ip = pack.ip;
} else {
o_player.method.login_game(o_game, pack.data.ip, pack.conmode, pack.fromid, machineid, machineroom);
player_ip = pack.data.ip;
}
var o_gameinfo = o_player.method.get_gameinfo(o_game);
pack.data = {};
pack.data.state = 0;
pack.data.agentid = o_agent.agentid;
pack.data.agentname = o_agent.agentname;
// pack.data.agentlogo = o_cfg.method.get_paravalue("logimage", agentid, gameid, channelid, marketid);
pack.data.agentmode = o_cfg.method.get_paravalue("agentmode", agentid, gameid, channelid, marketid);
if (!pack.data.agentmode){
pack.data.agentmode = 1;
}
pack.data.channelid = channelid;
// pack.data.wechat_gzh = o_cfg.method.get_paravalue("WechatPublicNo_name", agentid, gameid, channelid, marketid);
// pack.data.wechat_ewm = o_cfg.method.get_paravalue("WechatPublicNo_ewm", agentid, gameid, channelid, marketid);
// pack.data.wechat_kfh = o_cfg.method.get_paravalue("service_wechat", agentid, gameid, channelid, marketid);
// pack.data.qq = o_cfg.method.get_paravalue("service_qq", agentid, gameid, channelid, marketid);
// pack.data.tel = o_cfg.method.get_paravalue("service_tel", agentid, gameid, channelid, marketid);
// pack.data.scrollmsg = o_cfg.method.get_paravalue("scrollmsg", agentid, gameid, channelid, marketid);
// pack.data.noticemsg = o_cfg.method.get_paravalue("noticemsg", agentid, gameid, channelid, marketid);
// pack.data.appdownload = o_cfg.method.get_paravalue("url_download", agentid, gameid, channelid, marketid);
// pack.data.topuphtml = o_cfg.method.get_paravalue("url_topup", agentid, gameid, channelid, marketid);
// pack.data.matchhtml = o_cfg.method.get_paravalue("url_match", agentid, gameid, channelid, marketid);
// pack.data.sharename = o_cfg.method.get_paravalue("sharename", agentid, gameid, channelid, marketid);
// pack.data.hall_config = o_cfg.method.get_paravalue("hall_config", agentid, gameid, channelid, marketid);
// pack.data.game_config = o_cfg.method.get_paravalue("game_config", agentid, gameid, channelid, marketid);
pack.data.gameversion = cfg_version;
pack.data.playerid = o_player.playerid;
pack.data.nickname = o_player.nickname;
pack.data.avatar = o_player.avatar;
pack.data.openid = o_player.openid;
pack.data.sex = o_player.sex;
pack.data.city = o_player.city;
pack.data.province = o_player.province;
pack.data.unionid = o_player.unionid;
pack.data.roomcard = o_player.roomcard;
pack.data.bean = o_player.bean;
pack.data.score = 0;
pack.data.invitecode = o_player.invitecode;
pack.data.advanced = o_player.advanced;
pack.data.taskstate = 1;
pack.data.ip = player_ip;
pack.data.bankpower = o_player.bankpower;
pack.data.bank = o_player.bank;
pack.data.sign = o_player.sign;
pack.data.tel = o_player.tel;
pack.data.initCard = o_agent.initCard;
pack.data.initBean = o_agent.initBean;
if (o_player.bankpwd){
pack.data.bankpwd = 1;
} else {
pack.data.bankpwd = 0;
}
//检查玩家是否已经在房间内了
if (!o_gameinfo.roomcode){
if (o_gameinfo.matchid){
pack.data.matchid = o_gameinfo.matchid;
pack.data.matchidx = o_gameinfo.matchidx;
}
//没在房间内
youle_agent.app.SendPack(pack);
} else {
//在房间内则通知房间服务器有人断线重连了
var msg = {};
msg.app = youle_agent.app.appname;
msg.route = youle_agent.app.youle_room.routename;
msg.rpc = "player_login";
msg.data = {};
msg.data.playerid = o_player.playerid;
msg.data.nickname = o_player.nickname;
msg.data.avatar = o_player.avatar;
msg.data.sex = o_player.sex;
msg.data.playertype = o_player.playertype;
msg.data.ip = o_gameinfo.ip;
msg.data.conmode = o_gameinfo.conmode;
msg.data.fromid = o_gameinfo.fromid;
msg.data.agentid = o_agent.agentid;
msg.data.gameid = o_game.gameid;
msg.data.roomcode = o_gameinfo.roomcode;
//获取房号对应的房间服务器地址
var o_roomserver = o_game.method.get_roomserver(o_gameinfo.roomcode);
if (o_roomserver.server == o_agent.server){
//房间服务器与代理商服务器是同一地址
var roomserver_data = youle_agent.app.youle_room[msg.rpc](msg);
try
{
//返回前端
pack.data.gameid = roomserver_data.data.gameid;
pack.data.roomcode = roomserver_data.data.roomcode;
pack.data.roomtype = roomserver_data.data.roomtype;
pack.data.asetcount = roomserver_data.data.asetcount;
pack.data.makewar = roomserver_data.data.makewar;
pack.data.roommode = roomserver_data.data.roommode;
pack.data.beanlimit = roomserver_data.data.beanfloor;
pack.data.isbattle = roomserver_data.data.isbattle;
pack.data.needprepare = roomserver_data.data.needprepare;
pack.data.seat = roomserver_data.data.seat;
pack.data.isowner = roomserver_data.data.isowner;
pack.data.isbet = roomserver_data.data.isbet;
pack.data.infinite = roomserver_data.data.infinite;
pack.data.shortcode = roomserver_data.data.shortcode;
if(roomserver_data.data.videoConfig){
pack.data.videoConfig = roomserver_data.data.videoConfig;
}
if(roomserver_data.data.ownerNotice){
pack.data.ownerNotice = roomserver_data.data.ownerNotice;
}
if(roomserver_data.data.rebateMode){
pack.data.rebateMode = roomserver_data.data.rebateMode;
}
if(roomserver_data.data.rebateNumber){
pack.data.rebateNumber = roomserver_data.data.rebateNumber;
}
if(roomserver_data.data.rebateLimit){
pack.data.rebateLimit = roomserver_data.data.rebateLimit;
}
if(roomserver_data.data.forbidSelect){
pack.data.forbidSelect = roomserver_data.data.forbidSelect;
}
pack.data.rebateType = roomserver_data.data.rebateType;
if (roomserver_data.data.match_data){
pack.data.match = {};
pack.data.match.roomcard = roomserver_data.data.match_roomcard;
}
pack.data.players = roomserver_data.data.players;
pack.data.agreefree = roomserver_data.data.agreefree;
pack.data.deskinfo = roomserver_data.data.deskinfo;
if (roomserver_data.data.match_id){
pack.data.matchid = roomserver_data.data.match_id;
pack.data.matchidx = roomserver_data.data.match_idx;
}
for (var i = 0; i < pack.data.players.length; i++) {
if (pack.data.players[i] && pack.data.players[i].bean == null){
var _playerid = parseInt(pack.data.players[i].playerid);
var _o_player = o_agent.method.find_player(_playerid);
pack.data.players[i].bean = _o_player.bean;
}
}
//获取玩家的短号魅力值
if (pack.data.shortcode){
var _roomsvr_agent = youle_room.agents.method.find_agent(agentid);
var _roomsvr_game = _roomsvr_agent.method.find_game(gameid);
var _roomsvr_room = _roomsvr_game.method.find_room(o_gameinfo.roomcode);
var ownerid = _roomsvr_room.owner.playerid;
var o_owner = o_agent.method.find_player(ownerid);
if (o_owner && o_owner.whitelist && o_owner.whitelist.length > 0){
for (var i = 0; i < pack.data.players.length; i++) {
if (pack.data.players[i]){
var _playerid = parseInt(pack.data.players[i].playerid);
var found = false;
for (var j = 0; j < o_owner.whitelist.length; j++) {
if (o_owner.whitelist[j][0] == _playerid){
if (o_owner.whitelist[j][2]){
pack.data.players[i].charm = o_owner.whitelist[j][2];
} else {
pack.data.players[i].charm = 0;
}
found = true;
break;
}
}
if (!found){
pack.data.players[i].charm = 0;
}
}
}
}
}
youle_agent.app.SendPack(pack);
}
catch(e)
{
console.log("youle_agent_player_login:"+agentid+","+channelid+","+marketid+","+gameid+","+openid+","+unionid+","+nickname);
console.log(e);
}
} else {
//房间服务器与代理商服务器不是同一地址
var cfg = {};
cfg.url = "http://" + o_roomserver.server + ":" + o_roomserver.httpport + "/index.html";
cfg.type = "POST";
cfg.data = JSON.stringify(msg);
cfg.success = function(str){
if (str){
var roomserver_data = JSON.parse(str);
//返回前端需要连接房间服务器
var _info = pack.data;
pack.rpc = "connect_roomserver";
pack.data = {};
pack.data.roomserver = o_roomserver.server + ":" + o_roomserver.tcpport;
pack.data.data = {};
pack.data.data.opt = "player_login";
pack.data.data.playerid = db_playerid;
pack.data.data.agentid = agentid;
pack.data.data.gameid = gameid;
pack.data.data.roomcode = o_gameinfo.roomcode;
pack.data.data.roomtype = roomserver_data.data.roomtype;
pack.data.data.seat = roomserver_data.data.seat;
pack.data.data.info = _info;
youle_agent.app.SendPack(pack);
}
};
cfg.error = function(str){};
min_http(cfg);
}
}
if (!logindb){
if (!o_player.loginday){
o_player.loginday = "2016-12-12 12:12:12";
}
var ran = min_random(1, 20);
var hourdiff = min_datediff(o_player.loginday, min_now(), "hour");
if (hourdiff >= 24 + ran){
var db_callback_playerinfo = function(dbdata){
var gameid = dbdata[0].gameid;
o_player = o_agent.method.load_player(
parseInt(dbdata[0].playerid),
parseInt(dbdata[0].roomcard),
parseInt(dbdata[0].bean),
openid,
unionid,
nickname2,
avatar,
parseInt(sex),
parseInt(dbdata[0].playertype),
dbdata[0].invitecode);
o_player.state = parseInt(dbdata[0].state);
o_player.advanced = parseInt(dbdata[0].advanced);
if (dbdata[0].shortcode){
o_player.shortcode = parseInt(dbdata[0].shortcode);
} else {
o_player.shortcode = null;
}
if (dbdata[0].roomcodes){
o_player.roomcodes = JSON.parse(dbdata[0].roomcodes);
} else {
o_player.roomcodes = [];
}
if (dbdata[0].desone){
o_player.desone = dbdata[0].desone;
} else {
o_player.desone = null;
}
if (dbdata[0].destwo){
o_player.destwo = dbdata[0].destwo;
} else {
o_player.destwo = null;
}
if (dbdata[0].whitelist){
o_player.whitelist = youle_agent.deCompressWhiteList(dbdata[0].whitelist);
for(var k=0;k<o_player.whitelist.length;k++){
if(o_player.whitelist[k][2]){
o_player.whitelist[k][2] = parseInt(o_player.whitelist[k][2]);
}else{
o_player.whitelist[k][2] = 0;
}
}
} else {
o_player.whitelist = null;
}
if (dbdata[0].lowlimit != null){
o_player.lowlimit = parseInt(dbdata[0].lowlimit);
} else {
o_player.lowlimit = -900000000;
}
if (dbdata[0].notice){
o_player.notice = dbdata[0].notice;
} else {
o_player.notice = null;
}
if (dbdata[0].psign){
o_player.sign = dbdata[0].psign;
} else {
o_player.sign = null;
}
o_player.loginday = min_now();
o_player.nn_winlose = parseInt(dbdata[0].nn_winlose); //牛牛总输赢分数
o_player.nn_winlose_xx = parseInt(dbdata[0].nn_winlose_xx); //牛牛总输赢分数(星星场)
o_player.nn_winlose_x2 = parseInt(dbdata[0].nn_winlose_x2); //牛牛总输赢星星(星星场)
updateGameWinLose(gameid,1,dbdata[0].game_winlose,o_player);
updateGameWinLose(gameid,2,dbdata[0].game_winlose_xx,o_player);
updateGameWinLose(gameid,3,dbdata[0].game_winlose_x2,o_player);
o_player.bankpower = parseInt(dbdata[0].bankpower);
o_player.bank = parseInt(dbdata[0].bank);
o_player.bankpwd = dbdata[0].bankpwd;
}
if(!youle_agent.debug){
sql = "call cp_game_player_login(?,?,?,?,?,?,?,?,?,?,?);";
youle_agent.mysql.execsql("opensql", sql, [agentid, channelid, gameid, openid, unionid, nickname2, avatar, sex, province, city, marketid], db_callback_playerinfo);
}else{
// var tempData = {};
// tempData =
// var pData = [tempData];
// db_callback_playerinfo(pData);
}
}
}
do_check_login(gameid);
}
//通知其他子游戏服务器
var do_check_login = function(gameid){
var gameserverlist = youle_platform.config.method.get_gameserver_list(agentid);
//debugger;
// gameserverlist.push("127.0.0.1:1089");
// gameserverlist.push("127.0.0.1:2089");
if (gameserverlist.length > 1){
var msg = {};
msg.app = "youle";
msg.route = "agent";
msg.rpc = "check_login";
msg.data = {};
msg.data.agentid = agentid;
msg.data.playerid = o_player.playerid;
msg.data.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<o_player.whitelist.length;i++){
if(o_player.whitelist[i][0] == pid){
o_player.whitelist.splice(i,1);
i--;
}
}
}
break;
case 3://删除该玩家白名单里魅力值为charm的玩家
case "3":
var charm = youle_agent.getParam(cmd,"charm");
if(o_player.whitelist){
for(var i=0;i<o_player.whitelist.length;i++){
if(o_player.whitelist[i][2] == charm){
o_player.whitelist.splice(i,1);
i--;
}
}
}
break;
}
break;
case "setCharm":
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(typeof value == "string"){
value = Number(value);
if(isNaN(value)){
return false;
}
}
if(value==0){
return false;
}
if(!mode){
mode = 0;
}
data.userid = userid;
data.value = value;
data.mode = mode;
var data1 = {data:data};
var f = youle_agent.setUserCharm(data1);
//var pack1={};
pack.rpc = "show_message";
//pack.data = {};
//pack.data.playerid = pack.data.playerid;
if(f == false){
pack.data.msg ="操作失败!";
pack.data.time = 3000;
}else {
var st = new Date();
if(mode == 0){
pack.data.msg = "设置玩家"+userid+"魅力值为"+value+"!("+st.toISOString()+")";
}else{
if(value > 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<o_player.whitelist.length;i++){
if(o_player.whitelist[i][0] == userid){
//俱乐部玩家输赢记录统计
var res = ClubData.addCount(data.agentid, o_player.shortcode, userid, value, -1);
if(res){
pack.data.msg = "设置玩家"+userid+"魅力值统计为:" + value;
pack.data.time = 0;
}
isFind = true;
break;
}
}
if(!isFind){
pack.data.msg = "操作失败,您白名单内未找到该玩家" + userid;
pack.data.time = 3000;
}
}else{
pack.data.msg ="操作失败,您白名单内还未添加玩家!";
pack.data.time = 3000;
}
}else {
pack.data.msg ="操作失败,您还没有短号房!";
pack.data.time = 3000;
}
pack.rpc = "show_message";
youle_agent.app.SendPack(pack);
return true;
break;
}
}
}
}catch(e){
console.log("alyCmd",e);
return false;
}
return false;
}
//提交反馈意见
youle_agent.submit_opinion = function(pack){
var agentid = pack.data.agentid;
var playerid = parseInt(pack.data.playerid);
var gameid = pack.data.gameid;
var content = pack.data.content;
//console.log("content",content);
//检查代理商id是否存在
var o_agent = youle_agent.agents.method.find_agent(agentid);
if (!o_agent) {
return;
};
//检查游戏id是否存在
var o_game = o_agent.method.find_game(gameid);
if (!o_game) {
return;
};
//检查玩家是否存在
var o_player = o_agent.method.find_player(playerid);
if (!o_player) {
return;
};
var sendTemp = youle_agent.alyCmd(pack,content,o_agent,o_game,o_player);
//检查tcp连接
var o_gameinfo = o_player.method.get_gameinfo(o_game);
if (o_gameinfo.fromid != pack.fromid){
return;
};
var db_callback = function(dbdata){
//if(!sendTemp){
pack.data = {};
pack.data.state = 0;
youle_agent.app.SendPack(pack);
//}
}
var sql = "insert into player_opinion(plop_agentid, plop_playerid, plop_gameid, plop_content, plop_time) values(?,?,?,?,now());";
youle_agent.mysql.execsql("execsql", sql, [agentid, playerid, gameid, content], db_callback, pack);
}
//玩家断开与房间服务器的连接,与代理商服务器建立连接
youle_agent.connect_agentserver = function(pack){
var playerid = parseInt(pack.data.data.playerid);
var agentid = pack.data.data.agentid;
var gameid = pack.data.data.gameid;
var opt = pack.data.data.opt;
//查找代理商
var o_agent = youle_agent.agents.method.find_agent(agentid);
if (!o_agent) {
return;
};
//查找游戏
var o_game = o_agent.method.find_game(gameid);
if (!o_game) {
return;
};
//查找玩家
var o_player = o_agent.method.find_player(playerid);
if (!o_player) {
return;
};
//更新ip、onstate、conmode、fromid
var o_gameinfo = o_player.method.get_gameinfo(o_game);
o_gameinfo.ip = pack.ip;
o_gameinfo.conmode = pack.conmode;
o_gameinfo.fromid = pack.fromid;
//更新tcp连接列表
if (pack.conmode == "tcp"){
youle_agent.tcps.method.load_tcp(pack.fromid, o_player, o_game.idx);
}
switch (opt){
case "self_break_room":
pack.rpc = "self_break_room";
delete pack.data;
youle_agent.app.SendPack(pack);
break;
case "other_break_room":
pack.rpc = "other_break_room";
delete pack.data;
youle_agent.app.SendPack(pack);
break;
case "self_exit_room":
pack.rpc = "self_exit_room";
delete pack.data;
youle_agent.app.SendPack(pack);
break;
case "free_room":
pack.rpc = "free_room";
pack.data = pack.data.data.info;
pack.data.roomcard = o_player.roomcard;
youle_agent.app.SendPack(pack);
break;
case "game_over":
pack.rpc = "game_over";
delete pack.data;
youle_agent.app.SendPack(pack);
break;
case "player_login":
pack.rpc = "player_login";
pack.data = pack.data.data.info;
youle_agent.app.SendPack(pack);
break;
}
}
//未开局之前自己(房主)解散房间
youle_agent.self_break_room = function(pack){
var agentid = pack.data.agentid;
var gameid = pack.data.gameid;
var roomcode = pack.data.roomcode;
var playeridlist = pack.data.playeridlist;
//查找代理商
var o_agent = youle_agent.agents.method.find_agent(agentid);
if (!o_agent) {
return;
};
//查找游戏
var o_game = o_agent.method.find_game(gameid);
if (!o_game) {
return;
};
//查找玩家
for (var i = 0; i < playeridlist.length; i++) {
var o_player = o_agent.method.find_player(playeridlist[i]);
if (o_player) {
var o_gameinfo = o_player.method.get_gameinfo(o_game);
if (o_gameinfo){
o_gameinfo.roomcode = null;
}
}
}
//释放房号
o_game.method.free_roomcode(roomcode);
return pack;
}
//未开局之前自己(非房主)退出房间
youle_agent.self_exit_room = function(pack){
var agentid = pack.data.agentid;
var gameid = pack.data.gameid;
var playerid = pack.data.playerid;
//查找代理商
var o_agent = youle_agent.agents.method.find_agent(agentid);
if (!o_agent) {
return;
};
//查找游戏
var o_game = o_agent.method.find_game(gameid);
if (!o_game) {
return;
};
//查找玩家
var o_player = o_agent.method.find_player(playerid);
if (!o_player) {
return;
};
var o_gameinfo = o_player.method.get_gameinfo(o_game);
if (o_gameinfo){
o_gameinfo.roomcode = null;
}
return pack;
}
//开局之后达成解散房间
youle_agent.free_room = function(pack){
youle_agent.self_break_room(pack);
return pack;
}
//第一局结算时扣除房主的房卡
youle_agent.deduct_roomcard = function(pack){
var agentid = pack.data.agentid;
var playerid = pack.data.playerid;
var gameid = pack.data.gameid;
var roomcode = pack.data.roomcode;
var needroomcard = parseInt(pack.data.needroomcard);
var issameserver = parseInt(pack.data.issameserver);
//查找代理商
var o_agent = youle_agent.agents.method.find_agent(agentid);
if (!o_agent) {
return;
};
//查找玩家
var o_player = o_agent.method.find_player(playerid);
// if (!o_player) {
// return;
// };
var db_callback = function(dbdata){
if (issameserver){
//修改玩家房卡数量
if (o_player){
if (roomcode){
o_player.method.update_roomcard(0, parseInt(dbdata[0].roomcard), needroomcard, "房间" + roomcode + " ");
} else {
o_player.method.update_roomcard(0, parseInt(dbdata[0].roomcard), needroomcard);
}
}
return pack;
} else {
youle_agent.app.SendPack(pack);
if (o_player){
if (roomcode){
o_player.method.update_roomcard(0, parseInt(dbdata[0].roomcard), needroomcard, "房间" + roomcode + " ");
} else {
o_player.method.update_roomcard(0, parseInt(dbdata[0].roomcard), needroomcard);
}
}
}
}
var sql = "call cp_game_deduct_roomcard(?,?,?,?);";
youle_agent.mysql.execsql("opensql", sql, [agentid, playerid, needroomcard, gameid], db_callback);
}
//修改房卡(黄超调用)
youle_agent.update_roomcard = function(pack){
var agentid = pack.data.agentid;
var playerid = pack.data.playerid;
var change = parseInt(pack.data.change);
//查找代理商
var o_agent = youle_agent.agents.method.find_agent(agentid);
if (!o_agent) {
pack.data = {};
pack.data.result = 1;
pack.data.error = "agentid不存在";
return pack;
};
var db_callback = function(dbdata){
if (dbdata[0].result == 0){
var o_player = o_agent.method.find_player(playerid);
if (o_player){
o_player.method.update_roomcard(4, parseInt(dbdata[0].roomcard), change);
}
pack.data.result = 0;
} else {
pack.data = {};
pack.data.result = dbdata[0].result;
pack.data.error = dbdata[0].error;
}
youle_agent.app.SendPack(pack);
//黄超用
if (pack.data.url && pack.data.billcode){
var msg = {};
msg.app = pack.app;
msg.route = pack.route;
msg.rpc = pack.rpc;
msg.data = {};
if (dbdata[0].result == 0){
msg.data.result = 0;
msg.data.billcode = pack.data.billcode;
msg.data.agentid = pack.data.agentid;
msg.data.playerid = pack.data.playerid;
msg.data.change = pack.data.change;
msg.data.roomcard = parseInt(dbdata[0].roomcard);
} else {
msg.data.result = dbdata[0].result;
msg.data.error = dbdata[0].error;
}
var cfg = {};
cfg.url = pack.data.url;
cfg.type = "GET";
cfg.data = JSON.stringify(msg);
cfg.success = function(str){};
cfg.error = function(str){};
min_http(cfg);
}
}
var sql = "call cp_game_update_roomcard(?,?,?);";
youle_agent.mysql.execsql("opensql", sql, [agentid, playerid, change], db_callback);
}
//游戏中修改豆豆数量
youle_agent.update_bean = function(pack){
var agentid = pack.data.agentid;
var playerid = pack.data.playerid;
var gameid = pack.data.gameid;
var change = parseInt(pack.data.change); //游戏输赢
var pushbean = parseInt(pack.data.pushbean); //抽成
if (!pushbean){
pushbean = 0;
}
var showrebate; //是否不提示抽成
if (pack.data.showrebate){
showrebate = parseInt(pack.data.showrebate);
} else {
showrebate = 0;
}
var type = 0;
if (pack.data.type){
type = pack.data.type;
}
//查找代理商
var o_agent = youle_agent.agents.method.find_agent(agentid);
if (!o_agent) {
pack.data = {};
pack.data.result = 1;
pack.data.error = "agentid不存在";
return pack;
}
var db_callback = function(dbdata){
if (dbdata[0].result == 0){
//查找玩家
var o_player = o_agent.method.find_player(playerid);
if (o_player) {
//修改玩家豆豆数量
o_player.method.update_bean(type, parseInt(dbdata[0].bean), change, pushbean, showrebate);
}
pack.data.result = 0;
} else {
pack.data = {};
pack.data.result = dbdata[0].result;
pack.data.error = dbdata[0].error;
}
youle_agent.app.SendPack(pack);
//何朝阳用
if (pack.data.url && pack.data.billcode){
var msg = {};
msg.app = pack.app;
msg.route = pack.route;
msg.rpc = pack.rpc;
msg.data = {};
if (dbdata[0].result == 0){
msg.data.result = 0;
msg.data.billcode = pack.data.billcode;
msg.data.agentid = pack.data.agentid;
msg.data.playerid = pack.data.playerid;
msg.data.change = pack.data.change;
msg.data.type = pack.data.type;
msg.data.bean = parseInt(dbdata[0].bean);
} else {
msg.data.result = dbdata[0].result;
msg.data.error = dbdata[0].error;
}
var cfg = {};
cfg.url = pack.data.url;
cfg.type = "GET";
cfg.data = JSON.stringify(msg);
cfg.success = function(str){};
cfg.error = function(str){};
min_http(cfg);
}
}
var sql = "call cp_game_update_bean(?,?,?,?);";
youle_agent.mysql.execsql("opensql", sql, [agentid, playerid, change + pushbean, gameid], db_callback);
}
//减豆豆(第三方接口)
youle_agent.coin_sub = function(pack){
var agentid = pack.data.agentid;
var playerid = pack.data.playerid;
var change = 0;
if (pack.data.change){
change = parseInt(pack.data.change);
}
//查找代理商
var o_agent = youle_agent.agents.method.find_agent(agentid);
if (!o_agent) {
pack.data = {};
pack.data.result = 1;
pack.data.error = "agentid不存在";
return pack;
}
if (change < 0){
pack.data = {};
pack.data.result = 1;
pack.data.error = "change参数不正确";
return pack;
}
var db_callback = function(dbdata){
if (dbdata[0].result == 0){
pack.data.result = 0;
pack.data.change = parseInt(dbdata[0].amount);
pack.data.bean = parseInt(dbdata[0].bean);
//查找玩家
var o_player = o_agent.method.find_player(playerid);
if (o_player) {
o_player.method.update_bean(99, parseInt(dbdata[0].bean), parseInt(dbdata[0].amount), 0, 0);
}
} else {
pack.data.result = 1;
pack.data.error = dbdata[0].error;
}
youle_agent.app.SendPack(pack);
}
var sql = "call cp_game_sub_bean(?,?,?);";
youle_agent.mysql.execsql("opensql", sql, [agentid, playerid, change], db_callback);
}
//加豆豆(第三方接口)
youle_agent.coin_add = function(pack){
var agentid = pack.data.agentid;
var playerid = pack.data.playerid;
var change = parseInt(pack.data.change);
//查找代理商
var o_agent = youle_agent.agents.method.find_agent(agentid);
if (!o_agent) {
pack.data = {};
pack.data.result = 1;
pack.data.error = "agentid不存在";
return pack;
}
if (change < 0){
pack.data = {};
pack.data.result = 1;
pack.data.error = "change参数不正确";
return pack;
}
var db_callback = function(dbdata){
if (dbdata[0].result == 0){
pack.data.result = 0;
pack.data.change = parseInt(dbdata[0].amount);
pack.data.bean = parseInt(dbdata[0].bean);
//查找玩家
var o_player = o_agent.method.find_player(playerid);
if (o_player) {
o_player.method.update_bean(99, parseInt(dbdata[0].bean), parseInt(dbdata[0].amount), 0, 0);
}
} else {
pack.data.result = 1;
pack.data.error = dbdata[0].error;
}
youle_agent.app.SendPack(pack);
}
var sql = "call cp_game_add_bean(?,?,?);";
youle_agent.mysql.execsql("opensql", sql, [agentid, playerid, change], db_callback);
}
//游戏中获取购买列表
youle_agent.get_paylist = function(pack){
var db_callback = function(dbdata){
pack.data = {};
pack.data.paylist = dbdata;
youle_agent.app.SendPack(pack);
}
var agentid = pack.data.agentid;
var sql = " select gapr_productid as productid, gapr_payid as payid, " +
" gapr_name as productname, gapr_amount as amount, " +
" gapr_money as money, gapr_memo as memo " +
" from game_product " +
" where gapr_agentid = ? and gapr_state = 0 " +
" order by idx;";
youle_agent.mysql.execsql("opensql", sql, [agentid], db_callback);
}
//游戏中购买成功
youle_agent.pay_succ = function(pack){
var agentid = pack.data.agentid;
var playerid = pack.data.playerid;
var channelid = pack.data.channelid;
var productid = pack.data.productid;
var payid = pack.data.payid;
var amount = parseInt(pack.data.amount);
var money = parseInt(pack.data.money);
var paytype = parseInt(pack.data.paytype);
//查找代理商
var o_agent = youle_agent.agents.method.find_agent(agentid);
if (!o_agent) {
return;
};
// //查找玩家
// var o_player = o_agent.method.find_player(playerid);
// if (!o_player) {
// return;
// };
var db_callback = function(dbdata){
if (dbdata[0].result != 0){
console.log(min_now() + " 订单生成失败result=" + dbdata[0].result + "; error=" + dbdata[0].error);
console.log(pack);
var msg = {};
msg.app = pack.app;
msg.route = pack.route;
msg.rpc = pack.rpc;
msg.conmode = pack.conmode;
msg.fromid = pack.fromid;
msg.data = {};
msg.data.state = dbdata[0].result;
msg.data.error = "订单生成失败:" + dbdata[0].error;
youle_agent.app.SendPack(msg);
return;
}
//通知游戏玩家充值成功了
// o_player.method.update_roomcard(1, dbdata[0].roomcard, dbdata[0].amount);
}
//生成订单号
var billcode = "AP" + playerid + new Date().getTime() + min_random(1000, 9999);;
//订单时间
var billtime = min_now();
var sql = "call cp_game_pay_succ(?,?,?,?,?,?,?,?,?,?,?,?,?,?);";
youle_agent.mysql.execsql("opensql", sql, [agentid, channelid, playerid, billcode, productid, payid, amount, money, billtime, money, billtime, paytype, null, null], db_callback, pack);
//////http请求直接放回成功结果此处有问题只为临时配合苹果app store审核用
var roomCardName = youle_agent.app.youle_platform.config.method.get_paravalue("roomCardName", agentid);
if (!roomCardName){
roomCardName = "房卡";
}
pack.rpc = "update_roomcard";
pack.data = {};
pack.data.roomcard = amount;
pack.data.text = "购买" + roomCardName + "" + amount;
return pack;
}
//错误日志
youle_agent.submit_error = function(pack){
var agentid = pack.data.agentid;
var playerid = pack.data.playerid;
var gameid = pack.data.gameid;
var msg = pack.data.msg;
var packet = pack.data.packet;
if (typeof(msg) == "object"){
msg = JSON.stringify(msg);
}
if (typeof(packet) == "object"){
packet = JSON.stringify(packet);
}
var sql = "insert into error(erro_agentid,erro_playerid,erro_gameid,erro_msg,erro_packet,erro_time) values(?,?,?,?,?,now());";
youle_room.mysql_grade.execsql("execsql", sql, [agentid, playerid, gameid, msg, packet]);
pack.data.result = "ok";
return pack;
}
//关闭服务器
youle_agent.close_agentserver = function(pack){
var agentid = pack.data.agentid;
var managecode = pack.data.managecode;
//检查代理商id是否存在
var o_agent = youle_agent.agents.method.find_agent(agentid);
if (!o_agent) {
pack.data = {};
pack.data.state = 1;
youle_agent.app.SendPack(pack);
return;
};
if (o_agent.managecode != managecode){
pack.data = {};
pack.data.state = 1;
youle_agent.app.SendPack(pack);
return;
};
o_agent.isclose = 1;
pack.data = {};
pack.data.state = 0;
pack.data.msg = "close server success";
youle_agent.app.SendPack(pack);
}
//启动服务器
youle_agent.open_agentserver = function(pack){
var agentid = pack.data.agentid;
var managecode = pack.data.managecode;
//检查代理商id是否存在
var o_agent = youle_agent.agents.method.find_agent(agentid);
if (!o_agent) {
pack.data = {};
pack.data.state = 1;
youle_agent.app.SendPack(pack);
return;
};
if (o_agent.managecode != managecode){
pack.data = {};
pack.data.state = 1;
youle_agent.app.SendPack(pack);
return;
};
o_agent.isclose = 0;
pack.data = {};
pack.data.state = 0;
pack.data.msg = "open server success";
youle_agent.app.SendPack(pack);
}
//广播即时消息
youle_agent.broadcast = function(pack){
var agentid = pack.data.agentid;
var managecode = pack.data.managecode;
var msgcontent = pack.data.msgcontent;
//检查代理商id是否存在
var o_agent = youle_agent.agents.method.find_agent(agentid);
if (!o_agent) {
pack.data = {};
pack.data.state = 1;
youle_agent.app.SendPack(pack);
return;
};
if (o_agent.managecode != managecode){
pack.data = {};
pack.data.state = 1;
youle_agent.app.SendPack(pack);
return;
};
//返回结果
pack.data = {};
pack.data.state = 0;
pack.data.msg = "broadcast success";
youle_agent.app.SendPack(pack);
//对所有在房间内的玩家广播
//遍历游戏列表
for (var i = 0; i < o_agent.games.length; i++){
var o_game = o_agent.games[i];
if (!o_game){
continue;
}
//遍历房间服务器
for (var j = 0; j < o_game.servers.length; j++){
var msg = {};
msg.app = youle_agent.app.appname;
msg.route = youle_agent.app.youle_room.routename;
msg.rpc = "broadcast";
msg.data = {};
msg.data.agentid = agentid;
msg.data.gameid = o_game.gameid;
msg.data.msgcontent = msgcontent;
var o_roomserver = o_game.servers[j];
if (o_roomserver.server == o_agent.server){
//房间服务器与代理商服务器是同一地址
youle_agent.app.youle_room[msg.rpc](msg);
} else {
//房间服务器与代理商服务器不是同一地址
var cfg = {};
cfg.url = "http://" + o_roomserver.server + ":" + o_roomserver.httpport + "/index.html";
cfg.type = "POST";
cfg.data = JSON.stringify(msg);
cfg.success = function(str){};
cfg.error = function(str){};
min_http(cfg);
}
}
}
//对所有在游戏大厅的玩家广播
var msg = {};
msg.app = youle_agent.app.appname;
msg.route = youle_agent.routename;
msg.rpc = "broadcast";
msg.data = {};
msg.data.msgcontent = msgcontent;
//遍历玩家列表
for (var i = 0; i < o_agent.players.length; i++){
var o_player = o_agent.players[i];
if (!o_player){
continue;
}
for (var j = 0; j < o_player.gameinfo.length; j++){
var o_gameinfo = o_player.gameinfo[j];
if (!o_gameinfo){
continue;
}
if (!o_gameinfo.roomcode){
//没在房间里
if (o_gameinfo.conmode == "tcp" && o_gameinfo.fromid){
msg.conmode = o_gameinfo.conmode;
msg.fromid = o_gameinfo.fromid;
youle_agent.app.SendPack(msg);
}
}
}
}
}
//绑定邀请码
youle_agent.binding_invitecode = function(pack){
var agentid = pack.data.agentid;
var playerid = parseInt(pack.data.playerid);
var invitecode = parseInt(pack.data.invitecode);
//查找代理商
var o_agent = youle_agent.agents.method.find_agent(agentid);
if (!o_agent) {
return;
};
//查找玩家
var o_player = o_agent.method.find_player(playerid);
if (!o_player) {
return;
};
var o_cfg = youle_agent.app.youle_platform.config;
var cfg_invitecodetype = o_cfg.method.get_paravalue("invitecodetype", agentid);
if (!cfg_invitecodetype){
cfg_invitecodetype = 0;
}
var db_callback = function(dbdata){
if (dbdata[0].result == 0){
o_player.invitecode = dbdata[0]._code;
o_player.inviteid = dbdata[0]._id;
}
pack.data.state = dbdata[0].result;
pack.data.error = dbdata[0].error;
youle_agent.app.SendPack(pack);
}
var sql = "call cp_game_binding_invitecode(?,?,?,?);";
youle_agent.mysql.execsql("opensql", sql, [agentid, playerid, invitecode, cfg_invitecodetype], db_callback, pack);
}
//获取已经绑定的邀请码
youle_agent.get_player_invitecode = function(pack){
var agentid = pack.data.agentid;
var playerid = parseInt(pack.data.playerid);
var openid = pack.data.openid;
var unionid = pack.data.unionid;
//查找代理商
var o_agent = youle_agent.agents.method.find_agent(agentid);
if (!o_agent) {
return;
};
//查找玩家
var o_player = o_agent.method.find_player(playerid);
if (!o_player) {
return;
};
if (o_player.openid != openid || o_player.unionid != unionid){
return;
};
if (o_player.invitecode){
pack.data.invitecode = o_player.invitecode;
return pack;
} else {
var db_callback = function(dbdata){
o_player.invitecode = dbdata[0].invitecode;
pack.data.invitecode = dbdata[0].invitecode;
youle_agent.app.SendPack(pack);
}
var sql = "call cp_game_get_player_invitecode(?,?,?);";
youle_agent.mysql.execsql("opensql", sql, [agentid, playerid, unionid], db_callback, pack);
}
}
//进入比赛房间(龚俊版)
youle_agent.match_enter_room = function(pack){
var agentid = pack.data.agentid;
var playerid = parseInt(pack.data.playerid);
var gameid = pack.data.gameid;
var roomtype = pack.data.roomtype;
var match_id = pack.data.match_id;
var match_aset = parseInt(pack.data.match_aset);
var match_makewar = parseInt(pack.data.match_makewar);
var match_roomcard = parseInt(pack.data.match_roomcard);
var match_data = pack.data.match_data;
//检查代理商id是否存在
var o_agent = youle_agent.agents.method.find_agent(agentid);
if (!o_agent) {
pack.data.state = 1;
pack.data.error = "agentid不存在";
return pack;
};
//检查游戏id是否存在
var o_game = o_agent.method.find_game(gameid);
if (!o_game) {
pack.data.state = 2;
pack.data.error = "gameid不存在";
return pack;
};
//检查玩家是否存在
// var o_player = o_agent.method.find_player(playerid);
// if (!o_player) {
// pack.data.state = 3;
// pack.data.error = "playerid不存在";
// return pack;
// };
var roomCardName = youle_agent.app.youle_platform.config.method.get_paravalue("roomCardName", agentid);
if (!roomCardName){
roomCardName = "房卡";
}
var db_callback = function(dbdata) {
if (dbdata.length == 0){
console.log(min_now() + "进入比赛房间失败");
console.log(pack);
return;
}
var db_roomcard = parseInt(dbdata[0].play_roomcard);
var db_openid = dbdata[0].play_openid;
var db_unionid = dbdata[0].play_unionid;
var db_nickname = dbdata[0].play_nickname;
var db_avatar = dbdata[0].play_avatar;
var db_sex = dbdata[0].play_sex;
var db_bean = parseInt(dbdata[0].play_bean);
var db_playertype = parseInt(dbdata[0].play_type);
var o_player = o_agent.method.load_player(playerid, db_roomcard, db_openid, db_unionid, db_nickname, db_avatar, db_sex, db_playertype);
o_player.bean = db_bean;
//玩家登录游戏
o_player.method.login_game(o_game, '', '', '');
//检查玩家是否已经在房间内了
var o_gameinfo = o_player.method.get_gameinfo(o_game);
if (o_gameinfo && o_gameinfo.roomcode) {
pack.data.state = 4;
pack.data.error = "玩家已经在房间内";
youle_agent.app.SendPack(pack);
return;
};
//检查服务器是否已关闭
var config_close = youle_agent.app.youle_platform.config.method.get_paravalue("isclose", agentid, gameid);
if (o_agent.isclose || config_close == 2){
pack.data.state = 5;
pack.data.error = "正在进行系统维护,不能进入房间,请稍后再试";
youle_agent.app.SendPack(pack);
return;
};
//检查玩家房卡是否够用
if (o_player.roomcard < match_roomcard){
pack.data.state = 6;
pack.data.error = roomCardName + "数量不够";
youle_agent.app.SendPack(pack);
return;
};
var match_idx = min_ary_indexof(youle_agent.matchs, match_id, "id");
var match_obj;
var match_roomcode;
if (match_idx > -1){
match_obj = youle_agent.matchs[match_idx];
match_roomcode = match_obj.roomcode;
//获取房号对应的房间服务器地址
var o_roomserver = o_game.method.get_roomserver(match_roomcode);
//通知房间服务器有人要加入房间
var msg = {};
msg.app = youle_agent.app.appname;
msg.route = youle_agent.app.youle_room.routename;
msg.rpc = "self_join_room";
msg.data = {};
msg.data.playerid = playerid;
msg.data.nickname = o_player.nickname;
msg.data.avatar = o_player.avatar;
msg.data.sex = o_player.sex;
msg.data.playertype = o_player.playertype;
msg.data.ip = o_gameinfo.ip;
msg.data.conmode = o_gameinfo.conmode;
msg.data.fromid = o_gameinfo.fromid;
msg.data.agentid = agentid;
msg.data.gameid = gameid;
msg.data.roomcode = match_roomcode;
msg.data.playerroomcard = o_player.roomcard;
msg.data.match_roomcard = match_roomcard;
//加入房间成功
if (o_roomserver.server == o_agent.server){
//房间服务器与代理商服务器是同一地址
var roomserver_data = youle_agent.app.youle_room[msg.rpc](msg);
//返回数据
if (roomserver_data.data.state == 0){
//加入房间成功
o_gameinfo.roomcode = match_roomcode;
pack.data.state = 0;
pack.data.gamedata = {};
pack.data.gamedata.app = youle_agent.appname;
pack.data.gamedata.route = youle_agent.routename;
pack.data.gamedata.rpc = 'self_join_room';
pack.data.gamedata.data = roomserver_data.data;
pack.data.gamedata.data.match = {};
pack.data.gamedata.data.match.roomcard = match_roomcard;
youle_agent.app.SendPack(pack);
return;
}
} else {
//该rpc是web网页通过http请求的所以这里异步通知房间服务器将没有意义不会返回数据给web网页
pack.data.state = 9;
pack.data.error = "分配房间失败:服务器异常";
return pack;
// //房间服务器与代理商服务器不是同一地址
// var cfg = {};
// cfg.url = "http://" + o_roomserver.server + ":" + o_roomserver.httpport + "/index.html";
// cfg.type = "POST";
// cfg.data = JSON.stringify(msg);
// cfg.success = function(str){
// if (str){
// var roomserver_data = JSON.parse(str);
// pack.data = roomserver_data.data;
// if (pack.data.state == 0){
// //返回前端需要连接房间服务器
// pack.rpc = "connect_roomserver";
// pack.data = {};
// pack.data.roomserver = o_roomserver.server + ":" + o_roomserver.tcpport;
// pack.data.data = {};
// pack.data.data.opt = "self_join_room";
// pack.data.data.playerid = playerid;
// pack.data.data.agentid = agentid;
// pack.data.data.gameid = gameid;
// pack.data.data.roomcode = roomcode;
// pack.data.data.seat = roomserver_data.data.seat;
// } else {
// //房间服务器加入房间失败
// o_gameinfo.roomcode = null;
// }
// youle_agent.app.SendPack(pack);
// }
// };
// cfg.error = function(str){
// //房间服务器加入房间失败
// o_gameinfo.roomcode = null;
// };
// min_http(cfg);
}
}
//随机获取新的房号
var roomcode = o_game.method.new_roomcode();
if (!roomcode){
pack.data.state = 7;
pack.data.error = "没有房号可分配";
youle_agent.app.SendPack(pack);
return;
}
//获取房号对应的房间服务器地址
var o_roomserver = o_game.method.get_roomserver(roomcode);
//通知房间服务器创建房间
var msg = {};
msg.app = youle_agent.app.appname;
msg.route = youle_agent.app.youle_room.routename;
msg.rpc = "create_room";
msg.data = {};
msg.data.agent = {};
msg.data.agent.agentid = agentid;
msg.data.agent.name = o_agent.agentname;
msg.data.agent.server = o_agent.server;
msg.data.agent.tcpport = o_agent.tcpport;
msg.data.agent.httpport = o_agent.httpport;
msg.data.agent.freeroom = o_agent.freeroom;
msg.data.game = {};
msg.data.game.gameid = gameid;
msg.data.game.name = o_game.gamename;
msg.data.game.seatcount = o_game.seatcount;
msg.data.game.makewar = o_game.makewar;
msg.data.game.modename = o_game.modename;
msg.data.game.server = o_roomserver.server;
msg.data.game.tcpport = o_roomserver.tcpport;
msg.data.game.httpport = o_roomserver.httpport;
msg.data.game.minroomcode = o_roomserver.minroomcode;
msg.data.game.maxroomcode = o_roomserver.maxroomcode;
msg.data.player = {};
msg.data.player.playerid = playerid;
msg.data.player.nickname = o_player.nickname;
msg.data.player.avatar = o_player.avatar;
msg.data.player.sex = o_player.sex;
msg.data.player.playertype = o_player.playertype;
msg.data.player.ip = o_gameinfo.ip;
msg.data.player.conmode = o_gameinfo.conmode;
msg.data.player.fromid = o_gameinfo.fromid;
msg.data.room = {};
msg.data.room.roomcode = roomcode;
msg.data.room.roomtype = roomtype;
msg.data.room.needroomcard = match_roomcard;
msg.data.room.asetcount = match_aset;
msg.data.room.match_makewar= match_makewar;
msg.data.room.match_data = match_data;
if (o_roomserver.server == o_agent.server){
//房间服务器与代理商服务器是同一地址
var roomserver_data = youle_agent.app.youle_room[msg.rpc](msg);
//返回数据
if (roomserver_data.data.state == 0){
//加入房间成功
o_gameinfo.roomcode = roomcode;
//记录比赛的房间号
if (match_obj){
match_obj.roomcode = roomcode;
} else {
match_obj = {};
match_obj.id = match_id;
match_obj.roomcode = roomcode;
youle_agent.matchs.push(match_obj);
}
pack.data.state = 0;
pack.data.gamedata = {};
pack.data.gamedata.app = youle_agent.appname;
pack.data.gamedata.route = youle_agent.routename;
pack.data.gamedata.rpc = 'create_room';
pack.data.gamedata.data = roomserver_data.data;
pack.data.gamedata.data.match = {};
pack.data.gamedata.data.match.roomcard = match_roomcard;
youle_agent.app.SendPack(pack);
return;
} else {
pack.data.state = 8;
pack.data.error = "分配房间失败";
youle_agent.app.SendPack(pack);
return;
}
} else {
//该rpc是web网页通过http请求的所以这里异步通知房间服务器将没有意义不会返回数据给web网页
pack.data.state = 9;
pack.data.error = "分配房间失败:服务器异常";
youle_agent.app.SendPack(pack);
return;
// //房间服务器与代理商服务器不是同一地址
// var cfg = {};
// cfg.url = "http://" + o_roomserver.server + ":" + o_roomserver.httpport + "/index.html";
// cfg.type = "POST";
// cfg.data = JSON.stringify(msg);
// cfg.success = function(str){
// if (str){
// var roomserver_data = JSON.parse(str);
// if (roomserver_data.data.state == 0){
// //创建房间成功
// o_gameinfo.roomcode = roomserver_data.data.roomcode;
// //返回前端需要连接房间服务器
// pack.rpc = "connect_roomserver";
// pack.data = {};
// pack.data.roomserver = o_roomserver.server + ":" + o_roomserver.tcpport;
// pack.data.data = {};
// pack.data.data.opt = "create_room";
// pack.data.data.playerid = playerid;
// pack.data.data.agentid = agentid;
// pack.data.data.gameid = gameid;
// pack.data.data.roomcode = roomserver_data.data.roomcode;
// pack.data.data.seat = roomserver_data.data.seat;
// youle_agent.app.SendPack(pack);
// } else {
// //房间服务器创建房间失败
// o_gameinfo.roomcode = null;
// }
// }
// };
// cfg.error = function(str){
// //房间服务器创建房间失败
// o_gameinfo.roomcode = null;
// }
// min_http(cfg);
}
}
var sql = "select * from player where play_agentid = ? and play_playerid = ?;";
youle_agent.mysql.execsql("opensql", sql, [agentid, playerid], db_callback, pack);
}
//进入比赛房间(何朝阳版)
youle_agent.match_enter_room2 = function(pack){
var agentid = pack.data.agentid;
var playerid = parseInt(pack.data.playerid);
var gameid = pack.data.gameid;
var roomtype = pack.data.roomtype;
var match_id = pack.data.match_id;
//检查代理商id是否存在
var o_agent = youle_agent.agents.method.find_agent(agentid);
if (!o_agent) {
pack.data.state = 1;
return pack;
};
//检查游戏id是否存在
var o_game = o_agent.method.find_game(gameid);
if (!o_game) {
pack.data.state = 1;
return pack;
};
//检查玩家是否存在
var o_player = o_agent.method.find_player(playerid);
if (!o_player) {
pack.data.state = 1;
return pack;
};
//检查服务器是否已关闭
var config_close = youle_agent.app.youle_platform.config.method.get_paravalue("isclose", agentid, gameid);
if (o_agent.isclose || config_close == 2){
pack.data.state = 1;
pack.data.error = "正在进行系统维护,不能进入房间,请稍后再试";
return pack;
};
//检查玩家是否已经在房间内了
var o_gameinfo = o_player.method.get_gameinfo(o_game);
if (o_gameinfo && o_gameinfo.roomcode) {
pack.data.state = 1;
return pack;
};
//检查玩家房卡是否够用
var needroomcard = youle_agent.import.createroom_needroomcard(o_game, roomtype);
if (o_player.roomcard < needroomcard){
var roomCardName = youle_agent.app.youle_platform.config.method.get_paravalue("roomCardName", agentid);
if (!roomCardName){
roomCardName = "房卡";
}
pack.data.state = 1;
pack.data.error = roomCardName + "数量不够";
return pack;
};
//检查玩家金币是否够用
var beanfloor = youle_agent.import.createroom_beanfloor(o_game, roomtype);
if (beanfloor != null){
if (o_player.bean < beanfloor){
var starName = youle_agent.app.youle_platform.config.method.get_paravalue("starName", agentid);
if (!starName){
starName = "星星";
}
pack.data.state = 1;
pack.data.error = starName + "数量不够";
return pack;
}
};
//检查比赛
var set_match_object = null;
var set_match_list = youle_platform.config.method.get_paravalue("matchlist", agentid, gameid);
var set_match_idx = -1;
if (set_match_list){
set_match_idx = min_ary_indexof(set_match_list, match_id, "id");
}
if (set_match_idx == -1){
pack.data.state = 1;
pack.data.error = "比赛不存在";
return pack;
} else {
set_match_object = set_match_list[set_match_idx];
//检查时间
if (set_match_object.beginTime){
if ((new Date()).getTime() < (new Date(set_match_object.beginTime)).getTime()){
pack.data.state = 1;
pack.data.error = "还未到比赛开始时间";
return pack;
}
}
if (set_match_object.endTime){
if ((new Date()).getTime() > (new Date(set_match_object.endTime)).getTime()){
pack.data.state = 1;
pack.data.error = "比赛时间已过";
return pack;
}
}
}
var match_object;
var match_roomcode;
var match_idx = -1;
if (o_game.matchlist){
match_idx = min_ary_indexof(o_game.matchlist, match_id, "id");
}
if (match_idx > -1){
match_object = o_game.matchlist[match_idx];
match_roomcode = match_object.roomcode;
if (match_roomcode){
//获取房号对应的房间服务器地址
var o_roomserver = o_game.method.get_roomserver(match_roomcode);
//通知房间服务器有人要加入房间
var msg = {};
msg.app = youle_agent.app.appname;
msg.route = youle_agent.app.youle_room.routename;
msg.rpc = "self_join_room";
msg.data = {};
msg.data.playerid = playerid;
msg.data.nickname = o_player.nickname;
msg.data.avatar = o_player.avatar;
msg.data.sex = o_player.sex;
msg.data.playertype = o_player.playertype;
msg.data.ip = o_gameinfo.ip;
msg.data.conmode = o_gameinfo.conmode;
msg.data.fromid = o_gameinfo.fromid;
msg.data.agentid = agentid;
msg.data.gameid = gameid;
msg.data.roomcode = match_roomcode;
msg.data.playerroomcard = o_player.roomcard;
msg.data.playerbean = o_player.bean;
msg.data.address = o_player.address;
msg.data.latitude = o_player.latitude;
msg.data.longitude = o_player.longitude;
//加入房间成功
if (o_roomserver.server == o_agent.server){
//房间服务器与代理商服务器是同一地址
var roomserver_data = youle_agent.app.youle_room[msg.rpc](msg);
//返回数据
if (roomserver_data.data.state == 0){
//加入房间成功
o_gameinfo.roomcode = match_roomcode;
pack.data.state = 0;
pack.data.gamedata = {};
pack.data.gamedata.app = youle_agent.appname;
pack.data.gamedata.route = youle_agent.routename;
pack.data.gamedata.rpc = 'self_join_room';
pack.data.gamedata.data = roomserver_data.data;
youle_agent.app.SendPack(pack);
return;
}
}
}
}
//创建新房间
var roomcode = o_game.method.new_roomcode();
if (!roomcode){
pack.data.state = 1;
pack.data.error = "没有房号可分配";
return pack;
}
var o_roomserver = o_game.method.get_roomserver(roomcode);
var msg = {};
msg.app = youle_agent.app.appname;
msg.route = youle_agent.app.youle_room.routename;
msg.rpc = "create_room";
msg.data = {};
msg.data.agent = {};
msg.data.agent.agentid = agentid;
msg.data.agent.name = o_agent.agentname;
msg.data.agent.server = o_agent.server;
msg.data.agent.tcpport = o_agent.tcpport;
msg.data.agent.httpport = o_agent.httpport;
msg.data.agent.freeroom = o_agent.freeroom;
msg.data.game = {};
msg.data.game.gameid = gameid;
msg.data.game.name = o_game.gamename;
msg.data.game.seatcount = o_game.seatcount;
msg.data.game.makewar = o_game.makewar;
msg.data.game.modename = o_game.modename;
msg.data.game.server = o_roomserver.server;
msg.data.game.tcpport = o_roomserver.tcpport;
msg.data.game.httpport = o_roomserver.httpport;
msg.data.game.minroomcode = o_roomserver.minroomcode;
msg.data.game.maxroomcode = o_roomserver.maxroomcode;
msg.data.player = {};
msg.data.player.playerid = playerid;
msg.data.player.nickname = o_player.nickname;
msg.data.player.avatar = o_player.avatar;
msg.data.player.sex = o_player.sex;
msg.data.player.playertype = o_player.playertype;
msg.data.player.ip = o_gameinfo.ip;
msg.data.player.conmode = o_gameinfo.conmode;
msg.data.player.fromid = o_gameinfo.fromid;
msg.data.player.address = o_player.address;
msg.data.player.latitude = o_player.latitude;
msg.data.player.longitude = o_player.longitude;
msg.data.player.bean = o_player.bean;
var infinite = 0;
if (pack.data.infinite){
infinite = parseInt(pack.data.infinite);
}
var needroomcard = youle_agent.import.createroom_needroomcard(o_game, roomtype);
//获取总局数
var asetcount = youle_agent.import.createroom_asetcount(o_game, roomtype);
//获取豆豆下限
var beanfloor = youle_agent.import.createroom_beanfloor(o_game, roomtype);
//获取房间类型
var roommode = youle_agent.import.createroom_roommode(o_game, roomtype);
//获取星星场倍数
var beanmult = youle_agent.import.createroom_beanmult(o_game, roomtype);
//不是星星场
if (!roommode){
beanmult = 0;
}
//玩家是否需要准备
var needprepare = youle_agent.import.createroom_needprepare(o_game, roomtype);
msg.data.room = {};
msg.data.room.roomcode = roomcode;
msg.data.room.roomtype = roomtype;
msg.data.room.needroomcard = needroomcard;
msg.data.room.asetcount = asetcount;
msg.data.room.infinite = infinite;
msg.data.room.roommode = roommode;
msg.data.room.beanfloor = beanfloor;
msg.data.room.beanmult = beanmult;
msg.data.room.needprepare = needprepare;
msg.data.room.advanced_type= 0;
msg.data.room.advanced_teabean = 0;
msg.data.room.match_id = match_id;
if (o_roomserver.server == o_agent.server){
//房间服务器与代理商服务器是同一地址
var roomserver_data = youle_agent.app.youle_room[msg.rpc](msg);
//返回数据
if (roomserver_data.data.state == 0){
//加入房间成功
o_gameinfo.roomcode = roomcode;
//记录比赛的房间号
if (match_object){
match_object.roomcode = roomcode;
} else {
match_object = min_copyjson(set_match_object);
match_object.roomcode = roomcode;
if (!o_game.matchlist){
o_game.matchlist = [];
}
o_game.matchlist.push(match_object);
}
pack.data.state = 0;
pack.data.gamedata = {};
pack.data.gamedata.app = youle_agent.appname;
pack.data.gamedata.route = youle_agent.routename;
pack.data.gamedata.rpc = 'create_room';
pack.data.gamedata.data = roomserver_data.data;
youle_agent.app.SendPack(pack);
return;
}
}
}
//星星场投降
youle_agent.beanroom_surrender = function(pack){
return youle_agent.self_break_room(pack);
}
//分享到星星争霸场
youle_agent.share_room = function(pack){
var agentid = pack.data.agentid;
var playerid = parseInt(pack.data.playerid);
var gameid = pack.data.gameid;
var roomcode = parseInt(pack.data.roomcode);
var roomtype = pack.data.roomtype;
var roomlist = pack.data.roomlist;
//是否为vip房分享
var shareType;;
if(!pack.data.shareType){
shareType = 0;
}else{
shareType = parseInt(pack.data.shareType);
}
//查找代理商
var o_agent = youle_agent.agents.method.find_agent(agentid);
if (!o_agent) {
return false;
};
//检查游戏id是否存在
var o_game = o_agent.method.find_game(gameid);
if (!o_game) {
return false;
};
//查找玩家
var o_player = o_agent.method.find_player(playerid);
if (!o_player) {
return false;
};
var roommode = youle_agent.import.createroom_roommode(o_game, roomtype);
//房间号变为vip短号
if(shareType){
roomcode = o_player.shortcode;
}
if(!o_game.sharerooms_player){
o_game.sharerooms_player = [];
}
var findIndex = min_ary_indexof(o_game.sharerooms_player, roomcode, "roomcode")
if (findIndex > -1){
//vip房需要刷新
if(shareType){
var o_share = {};
o_share.title = o_player.nickname;
o_share.ownerid = o_player.playerid;
o_share.ownername= o_player.nickname;
o_share.roommode = roommode;
o_share.roomcode = roomcode;
o_share.roomtype = roomtype;
o_share.shareType = shareType;
o_share.destwo = o_player.destwo;
o_share.roomlist = roomlist;
o_share.sharetime= min_now();
o_game.sharerooms_player[findIndex] = o_share;
}
return true;
}
//增加vip房的分享
var o_share = {};
o_share.title = o_player.nickname;
o_share.ownerid = o_player.playerid;
o_share.ownername= o_player.nickname;
o_share.roommode = roommode;
o_share.roomcode = roomcode;
o_share.roomtype = roomtype;
o_share.shareType = shareType;
o_share.destwo = o_player.destwo;
o_share.roomlist = roomlist;
o_share.sharetime= min_now();
o_game.sharerooms_player.push(o_share);
return true;
}
//刷新系统房间
youle_agent.updateSysRoom = function(pack){
var agentid = pack.data.agentid;
var gameid = pack.data.gameid;
//查找代理商
var o_agent = youle_agent.agents.method.find_agent(agentid);
if (!o_agent) {
return;
};
//检查游戏id是否存在
var o_game = o_agent.method.find_game(gameid);
if (!o_game) {
return;
};
var o_system_room_config = youle_agent.app.youle_platform.config.method.get_paravalue("system_room", agentid, gameid);
if(o_system_room_config){
var roomList=[];
if(o_game.sharerooms_system){
roomList = o_game.sharerooms_system;
}
// for(var i = 0;i < roomList.length;i++){
// for(var j = 0; j < ){
// }
// }
}
}
//获取星星争霸场房间列表
youle_agent.get_share_room = function(pack){
var agentid = pack.data.agentid;
var gameid = pack.data.gameid;
//查找代理商
var o_agent = youle_agent.agents.method.find_agent(agentid);
if (!o_agent) {
return;
};
//检查游戏id是否存在
var o_game = o_agent.method.find_game(gameid);
if (!o_game) {
return;
};
//获取配置的系统房间
var o_system_room_config = youle_agent.app.youle_platform.config.method.get_paravalue("system_room", o_game.o_agent.agentid, o_game.gameid);
if (o_system_room_config){
pack.data.roomlist_system = o_system_room_config;
for (var i = 0; i < pack.data.roomlist_system.length; i++) {
if (pack.data.roomlist_system[i].online){
pack.data.roomlist_system[i].playercount = pack.data.roomlist_system[i].online + min_random(1, 20);
} else {
if(pack.data.roomlist_system[i].onlineRange){
pack.data.roomlist_system[i].playercount = min_random(pack.data.roomlist_system[i].onlineRange[0], pack.data.roomlist_system[i].onlineRange[1]);
}else{
pack.data.roomlist_system[i].playercount = 90 + min_random(1, 20);
}
}
}
}
//获取玩家分享的房间
if(o_game.sharerooms_player){
pack.data.roomlist_player = [];
for (var i = 0; i < o_game.sharerooms_player.length; i++) {
if (i >= youle_agent.get_share_room_count){
break;
}
if(!o_game.sharerooms_player[i].roommode){
continue;
}
var o_room = {};
o_room.type = 1;
o_room.shareType = o_game.sharerooms_player[i].shareType;
o_room.destwo = o_game.sharerooms_player[i].destwo;
o_room.ownerid = o_game.sharerooms_player[i].ownerid;
o_room.ownername= o_game.sharerooms_player[i].ownername;
o_room.roomcode = o_game.sharerooms_player[i].roomcode;
o_room.roommode = o_game.sharerooms_player[i].roommode;
o_room.roomtype = o_game.sharerooms_player[i].roomtype;
o_room.roomlist = o_game.sharerooms_player[i].roomlist;
if(!o_room.shareType){
var roomsrv_agent = youle_room.agents.method.find_agent(agentid);
var roomsrv_game = roomsrv_agent.method.find_game(gameid);
var roomsrv_room = roomsrv_game.method.find_room(o_room.roomcode);
o_room.seatcount = roomsrv_room.seatlist.length;
o_room.playercount=0;
for (var j = 0; j < roomsrv_room.seatlist.length; j++) {
if (roomsrv_room.seatlist[j]){
o_room.playercount = o_room.playercount + 1;
}
}
}else{
var roomsrv_agent = youle_room.agents.method.find_agent(agentid);
var roomsrv_game = roomsrv_agent.method.find_game(gameid);
o_room.seatcount = o_room.roomlist.length;
o_room.playercount=0;
for(k=0;k<o_room.roomlist.length;k++){
var roomsrv_room = roomsrv_game.method.find_room(o_room.roomlist[k]);
for (var j = 0; j < roomsrv_room.seatlist.length; j++) {
if (roomsrv_room.seatlist[j]){
o_room.playercount++;
break;
}
}
}
}
// if (roomsrv_room.advanced_type){
// o_room.tea = roomsrv_room.advanced_teabean;
// }
o_room.tea = roomsrv_room.rebateNumber;
pack.data.roomlist_player.push(o_room);
}
}
youle_agent.app.SendPack(pack);
}
//获取短号对应房间的人数
//返回结果为一个数组[第一个房间人数,第二个房间人数,,,,]
youle_agent.getInfoByShortCode = function(pack){
var agentid = pack.data.agentid;
var gameid = pack.data.gameid;
var shortcodeList= pack.data.shortcodeList;
//查找代理商
var o_agent = youle_agent.agents.method.find_agent(agentid);
if (!o_agent) {
return;
};
//检查游戏id是否存在
var o_game = o_agent.method.find_game(gameid);
if (!o_game) {
return;
};
var roomInfo = [];
for(var m=0;m<shortcodeList.length;m++){
var shortcode = shortcodeList[m];
var shortcodeInfo = o_agent.shortcodes[shortcode];
var roomInfoTemp = {};
var countTemp = [];
//state 0 短号不存在 1短号存在 2房主未登陆 3房主未创建房间 4 正常
roomInfoTemp.state = 0;
roomInfoTemp.owner = "";
roomInfoTemp.ownerid = 0;
roomInfoTemp.destwo = "";
roomInfoTemp.playerList=[[]];
roomInfoTemp.seatCount=[];
roomInfoTemp.deskState = [];
//短号信息
if(shortcodeInfo){
//
roomInfoTemp.state = 1;
roomInfoTemp.shortCode = shortcode;
var ownerid = shortcodeInfo.playerid;
roomInfoTemp.ownerid = ownerid;
var o_player = o_agent.method.find_player(ownerid);
if (o_player) {
roomInfoTemp.state = 2;
roomInfoTemp.owner = o_player.nickname;
if (o_player.roomcodes){
for (var i = 0; i < o_player.roomcodes.length; i++) {
roomInfoTemp.state = 3;
if (o_player.roomcodes[i].gameid == gameid) {
roomInfoTemp.state = 4;
roomInfoTemp.destwo = o_player.destwo;
roomInfoTemp.roomcodes = o_player.roomcodes[i];
// roomInfoTemp.roomtype = o_player.roomcodes[i].roomtype;
// roomInfoTemp.isClose = o_player.roomcodes[i].isClose;
// roomInfoTemp.tea = o_player.roomcodes[i].tea;
// roomInfoTemp.videoConfig = o_player.roomcodes[i].videoConfig;
// roomInfoTemp.roommode = o_player.roomcodes[i].roommode;
// roomInfoTemp.rebateType = o_player.roomcodes[i].rebateType;
roomInfoTemp.forbidSelect = o_player.roomcodes[i].forbidSelect;
roomInfoTemp.playerList=[];
var roomsrv_agent = youle_room.agents.method.find_agent(agentid);
var roomsrv_game = roomsrv_agent.method.find_game(gameid);
for(var j=0;j < o_player.roomcodes[i].roomlist.length;j++){
var roomsrv_room = roomsrv_game.method.find_room(o_player.roomcodes[i].roomlist[j]);
var listTemp = [];
var sTemp = 0;
if(roomsrv_room){
roomInfoTemp.seatCount.push(roomsrv_room.seatlist.length);
for(var k=0;k<roomsrv_room.seatlist.length;k++){
if(roomsrv_room.seatlist[k]){
listTemp.push(roomsrv_room.seatlist[k].nickname);
}
}
if(roomsrv_room.battlestate){
sTemp = 1;
}
}else{
roomInfoTemp.seatCount.push(0);
}
roomInfoTemp.deskState.push(sTemp);
roomInfoTemp.playerList.push(listTemp);
}
}
}
}
}
}
roomInfo.push(roomInfoTemp);
}
pack.data.roomInfo = roomInfo;
youle_agent.app.SendPack(pack);
}
//快速进入星星争霸场的房间
youle_agent.quick_enter_share_room = function(pack){
var agentid = pack.data.agentid;
var gameid = pack.data.gameid;
var playerid = parseInt(pack.data.playerid);
var type = parseInt(pack.data.type);
var roomtype = pack.data.roomtype;
//查找代理商
var o_agent = youle_agent.agents.method.find_agent(agentid);
if (!o_agent) {
return;
};
//检查游戏id是否存在
var o_game = o_agent.method.find_game(gameid);
if (!o_game) {
return;
};
//查找玩家
var o_player = o_agent.method.find_player(playerid);
if (!o_player) {
return;
};
//检查玩家是否已经在房间内了
var o_gameinfo = o_player.method.get_gameinfo(o_game);
if (!o_gameinfo){
return;
}
if (o_gameinfo.roomcode){
return;
};
if (o_gameinfo.fromid != pack.fromid){
return;
};
//检查服务器是否已关闭
var config_close = youle_agent.app.youle_platform.config.method.get_paravalue("isclose", agentid, gameid);
if (o_agent.isclose || config_close == 2){
pack.data = {};
pack.data.state = 1;
pack.data.error = "正在进行系统维护,不能加入房间,请稍后再试";
pack.data.showerror = 1;
return pack;
}
var roomCardName = youle_agent.app.youle_platform.config.method.get_paravalue("roomCardName", agentid);
if (!roomCardName){
roomCardName = "房卡";
}
var starName = youle_agent.app.youle_platform.config.method.get_paravalue("starName", agentid);
if (!starName){
starName = "星星";
}
switch(type){
case 1: //玩家房间
if(!o_game.sharerooms_player){
o_game.sharerooms_player = [];
}
for (var i = 0; i < o_game.sharerooms_player.length; i++) {
if (!roomtype || JSON.stringify(o_game.sharerooms_player[i].roomtype) == JSON.stringify(roomtype)
&& o_game.sharerooms_player[i].roommode){
//检查玩家房卡是否够用
var needroomcard = youle_agent.import.joinroom_needroomcard(o_game, o_game.sharerooms_player[i].roomtype);
var xxroomdeduct = youle_room.app.youle_platform.config.method.get_paravalue("xxroomdeduct", agentid);
if(xxroomdeduct){
if (o_player.roomcard < needroomcard){
pack.rpc = "self_join_room";
pack.data = {};
pack.data.state = 1;
pack.data.error = roomCardName + "数量不够";
pack.data.showerror = 1;
return pack;
}
}
//检查玩家豆豆是否够用
//var needbean = youle_agent.import.createroom_beanfloor(o_game, o_game.sharerooms_player[i].roomtype);
var _roomsvr_agent1 = youle_room.agents.method.find_agent(agentid);
var _roomsvr_game1 = _roomsvr_agent1.method.find_game(gameid);
var _roomsvr_room1 = _roomsvr_game1.method.find_room(o_game.sharerooms_player[i].roomcode);
if(_roomsvr_room1){
var needbean = _roomsvr_room1.beanfloor;
if (needbean != null){
if (o_player.bean < needbean){
pack.rpc = "self_join_room";
pack.data = {};
pack.data.state = 1;
pack.data.error = starName + "数量不够";
pack.data.showerror = 1;
return pack;
}
}
}
//房号
var roomcode = o_game.sharerooms_player[i].roomcode;
//获取房号对应的房间服务器地址
var o_roomserver = o_game.method.get_roomserver(roomcode);
//通知房间服务器有人要加入房间
var msg = {};
msg.app = youle_agent.app.appname;
msg.route = youle_agent.app.youle_room.routename;
msg.rpc = "self_join_room";
msg.data = {};
msg.data.playerid = playerid;
msg.data.nickname = o_player.nickname;
msg.data.avatar = o_player.avatar;
msg.data.sex = o_player.sex;
msg.data.playertype = o_player.playertype;
msg.data.ip = o_gameinfo.ip;
msg.data.conmode = o_gameinfo.conmode;
msg.data.fromid = o_gameinfo.fromid;
msg.data.agentid = agentid;
msg.data.gameid = gameid;
msg.data.roomcode = roomcode;
msg.data.playerroomcard = o_player.roomcard;
msg.data.playerbean = o_player.bean;
msg.data.joinmode = 0;
msg.data.address = o_player.address;
msg.data.latitude = o_player.latitude;
msg.data.longitude = o_player.longitude;
//加入房间成功
o_gameinfo.roomcode = roomcode;
if (o_roomserver.server == o_agent.server){
//房间服务器与代理商服务器是同一地址
var roomserver_data = youle_agent.app.youle_room[msg.rpc](msg);
if (roomserver_data.data.state != 0){
//房间服务器加入房间失败
o_gameinfo.roomcode = null;
} else {
pack.data = roomserver_data.data;
for (var i = 0; i < pack.data.players.length; i++) {
if (pack.data.players[i]){
var _playerid = parseInt(pack.data.players[i].playerid);
var _o_player = o_agent.method.find_player(_playerid);
pack.data.players[i].bean = _o_player.bean;
}
}
pack.rpc = "self_join_room";
youle_agent.app.SendPack(pack);
return;
}
}
}
}
pack.rpc = "self_join_room";
pack.data.state = 1;
pack.data.error = "未找到匹配的房间,请重试";
pack.data.showerror = 1;
youle_agent.app.SendPack(pack);
break;
case 2: //系统房间
if (!roomtype){
return;
}
if(!o_game.sharerooms_system){
o_game.sharerooms_system = [];
}
//系统房间里机器人陪玩的真实玩家数量阈值
var sysroom_playercount = youle_agent.app.youle_platform.config.method.get_paravalue("sysroom_playercount", agentid, gameid);
if (sysroom_playercount == null){
sysroom_playercount = 20;
}
//当前在系统房间里的真实玩家数量
var _sysroom_playercount = 0;
var _roomsvr_agent = youle_room.agents.method.find_agent(agentid);
if (_roomsvr_agent){
var _roomsvr_game = _roomsvr_agent.method.find_game(gameid);
if (_roomsvr_game && _roomsvr_game.sysroom_playercount){
for (var i = 0; i < _roomsvr_game.sysroom_playercount.length; i++) {
if (JSON.stringify(_roomsvr_game.sysroom_playercount[i].roomtype) == JSON.stringify(roomtype)){
_sysroom_playercount = _roomsvr_game.sysroom_playercount[i].playercount;
break;
}
}
}
}
var haverobot = youle_room.app.youle_platform.config.method.get_paravalue("haverobot", agentid, gameid);
//if(haverobot == 1){
var isFree = 0;
var sysRoomConfig = youle_room.app.youle_platform.config.method.get_paravalue("system_room", agentid, gameid);
if(sysRoomConfig){
for(var i=0;i<sysRoomConfig.length;i++){
if(JSON.stringify(sysRoomConfig[i].roomtype) == JSON.stringify(roomtype)){
if(sysRoomConfig[i].removeRobot){
haverobot = 0;
}
if(sysRoomConfig[i].isFree){
isFree = 1;
}
}
}
}
//}
var idx = min_random(0, o_game.sharerooms_system.length - 1);
if (idx > -1){
for (var i = idx; i < o_game.sharerooms_system.length; i++) {
if (JSON.stringify(o_game.sharerooms_system[i].roomtype) == JSON.stringify(roomtype)){
//检查玩家房卡是否够用
var needroomcard = youle_agent.import.joinroom_needroomcard(o_game, o_game.sharerooms_system[i].roomtype);
//系统房间写死不要房卡
needroomcard = 0;
if (o_player.roomcard < needroomcard){
pack.rpc = "self_join_room";
pack.data = {};
pack.data.state = 1;
pack.data.error = roomCardName + "数量不够";
pack.data.showerror = 1;
return pack;
}
//检查玩家豆豆是否够用
//var needbean = youle_agent.import.createroom_beanfloor(o_game, o_game.sharerooms_system[i].roomtype);
var _roomsvr_agent1 = youle_room.agents.method.find_agent(agentid);
var _roomsvr_game1 = _roomsvr_agent1.method.find_game(gameid);
var _roomsvr_room1 = _roomsvr_game1.method.find_room(roomcode);
//if(!isFree){
if(_roomsvr_room1){
var needbean = _roomsvr_room1.beanfloor;
if (needbean != null){
if (o_player.bean < needbean){
pack.rpc = "self_join_room";
pack.data = {};
pack.data.state = 1;
pack.data.error = starName + "数量不够";
pack.data.showerror = 1;
return pack;
}
}
}
//}
//房号
var roomcode = o_game.sharerooms_system[i].roomcode;
//查看是否有空位,是否有真人玩家
var _have_nullseat = false;
var _roomsvr_agent = youle_room.agents.method.find_agent(agentid);
var _roomsvr_game = _roomsvr_agent.method.find_game(gameid);
var _roomsvr_room = _roomsvr_game.method.find_room(roomcode);
if (_roomsvr_room){
for (var j = 0; j < _roomsvr_room.seatlist.length; j++) {
if (!_roomsvr_room.seatlist[j]){
_have_nullseat = true;
} else {
if (!_roomsvr_room.seatlist[j].isrobot){
if ((_sysroom_playercount < sysroom_playercount) && (haverobot == 1)){
_have_nullseat = false;
break;
}
}
}
}
}
if (_have_nullseat){
//获取房号对应的房间服务器地址
var o_roomserver = o_game.method.get_roomserver(roomcode);
//通知房间服务器有人要加入房间
var msg = {};
msg.app = youle_agent.app.appname;
msg.route = youle_agent.app.youle_room.routename;
msg.rpc = "self_join_room";
msg.data = {};
msg.data.playerid = playerid;
msg.data.nickname = o_player.nickname;
msg.data.avatar = o_player.avatar;
msg.data.sex = o_player.sex;
msg.data.playertype = o_player.playertype;
msg.data.ip = o_gameinfo.ip;
msg.data.conmode = o_gameinfo.conmode;
msg.data.fromid = o_gameinfo.fromid;
msg.data.agentid = agentid;
msg.data.gameid = gameid;
msg.data.roomcode = roomcode;
msg.data.playerroomcard = o_player.roomcard;
msg.data.playerbean = o_player.bean;
msg.data.joinmode = 0;
msg.data.address = o_player.address;
msg.data.latitude = o_player.latitude;
msg.data.longitude = o_player.longitude;
//加入房间成功
o_gameinfo.roomcode = roomcode;
if (o_roomserver.server == o_agent.server){
//房间服务器与代理商服务器是同一地址
var roomserver_data = youle_agent.app.youle_room[msg.rpc](msg);
if (roomserver_data.data.state != 0){
//房间服务器加入房间失败
o_gameinfo.roomcode = null;
} else {
pack.data = roomserver_data.data;
for (var i = 0; i < pack.data.players.length; i++) {
if (pack.data.players[i]){
var _playerid = parseInt(pack.data.players[i].playerid);
var _o_player = o_agent.method.find_player(_playerid);
if (_o_player){
pack.data.players[i].bean = _o_player.bean;
}
}
}
pack.rpc = "self_join_room";
youle_agent.app.SendPack(pack);
return;
}
}
}
}
}
for (var i = idx - 1; i >= 0; i--) {
if (JSON.stringify(o_game.sharerooms_system[i].roomtype) == JSON.stringify(roomtype)){
//检查玩家房卡是否够用
var needroomcard = youle_agent.import.joinroom_needroomcard(o_game, o_game.sharerooms_system[i].roomtype);
//系统房间写死不要房卡
needroomcard = 0;
if (o_player.roomcard < needroomcard){
pack.rpc = "self_join_room";
pack.data = {};
pack.data.state = 1;
pack.data.error = roomCardName + "数量不够";
pack.data.showerror = 1;
return pack;
}
//检查玩家豆豆是否够用
//var needbean = youle_agent.import.createroom_beanfloor(o_game, o_game.sharerooms_system[i].roomtype);
var _roomsvr_agent1 = youle_room.agents.method.find_agent(agentid);
var _roomsvr_game1 = _roomsvr_agent1.method.find_game(gameid);
var _roomsvr_room1 = _roomsvr_game1.method.find_room(o_game.sharerooms_system[i].roomcode);
//if(!isFree){
if(_roomsvr_room1){
var needbean = _roomsvr_room1.beanfloor;
if (needbean != null){
if (o_player.bean < needbean){
pack.rpc = "self_join_room";
pack.data = {};
pack.data.state = 1;
pack.data.error = starName + "数量不够";
pack.data.showerror = 1;
return pack;
}
}
}
//}
//房号
var roomcode = o_game.sharerooms_system[i].roomcode;
//查看是否有空位,是否有真人玩家
var _have_nullseat = false;
var _roomsvr_agent = youle_room.agents.method.find_agent(agentid);
var _roomsvr_game = _roomsvr_agent.method.find_game(gameid);
var _roomsvr_room = _roomsvr_game.method.find_room(roomcode);
if (_roomsvr_room){
for (var j = 0; j < _roomsvr_room.seatlist.length; j++) {
if (!_roomsvr_room.seatlist[j]){
_have_nullseat = true;
} else {
if (!_roomsvr_room.seatlist[j].isrobot){
if ((_sysroom_playercount < sysroom_playercount) && (haverobot == 1)){
_have_nullseat = false;
break;
}
}
}
}
}
if (_have_nullseat){
//获取房号对应的房间服务器地址
var o_roomserver = o_game.method.get_roomserver(roomcode);
//通知房间服务器有人要加入房间
var msg = {};
msg.app = youle_agent.app.appname;
msg.route = youle_agent.app.youle_room.routename;
msg.rpc = "self_join_room";
msg.data = {};
msg.data.playerid = playerid;
msg.data.nickname = o_player.nickname;
msg.data.avatar = o_player.avatar;
msg.data.sex = o_player.sex;
msg.data.playertype = o_player.playertype;
msg.data.ip = o_gameinfo.ip;
msg.data.conmode = o_gameinfo.conmode;
msg.data.fromid = o_gameinfo.fromid;
msg.data.agentid = agentid;
msg.data.gameid = gameid;
msg.data.roomcode = roomcode;
msg.data.playerroomcard = o_player.roomcard;
msg.data.playerbean = o_player.bean;
msg.data.joinmode = 0;
msg.data.address = o_player.address;
msg.data.latitude = o_player.latitude;
msg.data.longitude = o_player.longitude;
//加入房间成功
o_gameinfo.roomcode = roomcode;
if (o_roomserver.server == o_agent.server){
//房间服务器与代理商服务器是同一地址
var roomserver_data = youle_agent.app.youle_room[msg.rpc](msg);
if (roomserver_data.data.state != 0){
//房间服务器加入房间失败
o_gameinfo.roomcode = null;
} else {
pack.data = roomserver_data.data;
for (var i = 0; i < pack.data.players.length; i++) {
if (pack.data.players[i]){
var _playerid = parseInt(pack.data.players[i].playerid);
var _o_player = o_agent.method.find_player(_playerid);
if (_o_player){
pack.data.players[i].bean = _o_player.bean;
}
}
}
pack.rpc = "self_join_room";
youle_agent.app.SendPack(pack);
return;
}
}
}
}
}
}
//检查玩家房卡是否够用
var needroomcard = youle_agent.import.createroom_needroomcard(o_game, roomtype);
//系统房间写死不要房卡
needroomcard = 0;
if (o_player.roomcard < needroomcard){
pack.rpc = "create_room";
pack.data = {};
pack.data.state = 1;
pack.data.error = roomCardName + "数量不够";
pack.data.showerror = 1;
return pack;
}
//检查玩家豆豆是否够用
//var needbean = youle_agent.import.createroom_beanfloor(o_game, roomtype);
//var rebateConfig = youle_room.app.youle_platform.config.method.get_paravalue("rebateConfig", agentid);
//var rebateNumber = 0;
var beanfloor1 = youle_agent.import.createroom_beanfloor(o_game, roomtype);
var beanmult1 = youle_agent.import.createroom_beanmult(o_game, roomtype);
//小局抽成设置
var aset_rebate = youle_room.app.youle_platform.config.method.get_paravalue("aset_rebate", agentid);
if(aset_rebate){
var sysRebateValue = 0;
config = aset_rebate.infinite;
if(config[0] == 3 && config[1] == 2){
sysRebateValue = parseInt(config[2]*beanmult1/100);
}
var tea = youle_room.import.owner_beanpush(o_game, roomtype);
if(tea){
if(beanfloor1 == null){
beanfloor1 = Math.max(tea,sysRebateValue);
}else{
beanfloor1 = Math.max(tea,sysRebateValue,beanfloor1);
}
}else{
if(beanfloor1 == null){
beanfloor1 = sysRebateValue;
}else{
beanfloor1 = Math.max(sysRebateValue,beanfloor1);
}
}
}
var needbean = beanfloor1;
//if(!isFree){
if (needbean != null){
if (o_player.bean < needbean){
pack.rpc = "create_room";
pack.data = {};
pack.data.state = 1;
pack.data.error = starName + "数量不够";
pack.data.showerror = 1;
return pack;
}
}
//}
//创建新房间随机获取新的房号
var roomcode = o_game.method.new_roomcode();
if (!roomcode){
console.log(min_now() + "创建系统房间失败:没有房号可分配");
pack.rpc = "create_room";
pack.data = {};
pack.data.state = 1;
pack.data.error = "没有房号可分配";
pack.data.showerror = 1;
youle_agent.app.SendPack(pack);
return;
}
//获取房号对应的房间服务器地址
var o_roomserver = o_game.method.get_roomserver(roomcode);
//通知房间服务器创建房间
var msg = {};
msg.app = youle_agent.app.appname;
msg.route = youle_agent.app.youle_room.routename;
msg.rpc = "create_room";
msg.data = {};
msg.data.agent = {};
msg.data.agent.agentid = agentid;
msg.data.agent.name = o_agent.agentname;
msg.data.agent.server = o_agent.server;
msg.data.agent.tcpport = o_agent.tcpport;
msg.data.agent.httpport = o_agent.httpport;
msg.data.agent.freeroom = o_agent.freeroom;
msg.data.game = {};
msg.data.game.gameid = gameid;
msg.data.game.name = o_game.gamename;
msg.data.game.seatcount = o_game.seatcount;
msg.data.game.makewar = o_game.makewar;
msg.data.game.modename = o_game.modename;
msg.data.game.server = o_roomserver.server;
msg.data.game.tcpport = o_roomserver.tcpport;
msg.data.game.httpport = o_roomserver.httpport;
msg.data.game.minroomcode = o_roomserver.minroomcode;
msg.data.game.maxroomcode = o_roomserver.maxroomcode;
msg.data.player = {};
msg.data.player.playerid = playerid;
msg.data.player.nickname = o_player.nickname;
msg.data.player.avatar = o_player.avatar;
msg.data.player.sex = o_player.sex;
msg.data.player.playertype = o_player.playertype;
msg.data.player.ip = o_gameinfo.ip;
msg.data.player.conmode = o_gameinfo.conmode;
msg.data.player.fromid = o_gameinfo.fromid;
msg.data.player.address = o_player.address;
msg.data.player.latitude = o_player.latitude;
msg.data.player.longitude = o_player.longitude;
msg.data.player.bean = o_player.bean;
//获取开房所需的房卡数量
var needroomcard = youle_agent.import.createroom_needroomcard(o_game, roomtype);
//系统房间写死不要房卡
needroomcard = 0;
//获取总局数
var asetcount = youle_agent.import.createroom_asetcount(o_game, roomtype);
//获取豆豆下限
var beanfloor = youle_agent.import.createroom_beanfloor(o_game, roomtype);
//获取房间类型
var roommode = youle_agent.import.createroom_roommode(o_game, roomtype);
//获取星星场倍数
var beanmult = youle_agent.import.createroom_beanmult(o_game, roomtype);
//玩家是否需要准备
var needprepare = youle_agent.import.createroom_needprepare(o_game, roomtype);
//系统房间即无限局一定要准备
needprepare = 1;
//不是星星场
if (!roommode){
beanmult = 1;
}
msg.data.room = {};
msg.data.room.roomcode = roomcode;
msg.data.room.roomtype = roomtype;
msg.data.room.needroomcard = needroomcard;
msg.data.room.asetcount = asetcount;
msg.data.room.infinite = 1;
msg.data.room.sysroom = 1;
msg.data.room.roommode = roommode;
msg.data.room.beanfloor = beanfloor;
msg.data.room.beanmult = beanmult;
msg.data.room.needprepare = needprepare;
msg.data.room.advanced_type = 0;
msg.data.room.advanced_teabean = 0;
msg.data.room.isFree = isFree;
//机器人金币范围
msg.data.robot={};
msg.data.robot.goldRange = null;
var o_cfg = youle_agent.app.youle_platform.config;
var _system_room = o_cfg.method.get_paravalue("system_room", agentid, gameid);
var robotGoldRange = null;
if(_system_room){
for(var k=0;k<_system_room.length;k++){
var sRoomType = _system_room[k].roomtype;
if(typeof sRoomType == "object"){
sRoomType = JSON.stringify(sRoomType);
}
if(JSON.stringify(roomtype) == sRoomType){
msg.data.robot.robotGoldRange = _system_room[k].robotGoldRange;
}
}
}
//加入房间成功
o_gameinfo.roomcode = roomcode;
if (o_roomserver.server == o_agent.server){
//房间服务器与代理商服务器是同一地址
var roomserver_data = youle_agent.app.youle_room[msg.rpc](msg);
//返回前端
pack.data = roomserver_data.data;
if (pack.data.state != 0){
//房间服务器创建房间失败
o_gameinfo.roomcode = null;
pack.rpc = "create_room";
pack.data = {};
pack.data.state = 1;
pack.data.error = "创建系统房间失败";
pack.data.showerror = 1;
youle_agent.app.SendPack(pack);
return;
}
pack.rpc = "create_room";
youle_agent.app.SendPack(pack);
var o_share = {};
o_share.roomcode = roomcode;
o_share.roomtype = roomtype;
o_share.sharetime= min_now();
o_game.sharerooms_system.push(o_share);
}
//一次性创建N个系统房
var _roomcount = 0;
for (var i = 0; i < o_game.sharerooms_system.length; i++) {
if (JSON.stringify(o_game.sharerooms_system[i].roomtype) == JSON.stringify(roomtype)){
_roomcount = _roomcount + 1;
}
}
for (var i = 1; i <= sysroom_playercount - _roomcount; i++) {
var roomcode = o_game.method.new_roomcode();
if (!roomcode){
break;
}
//获取房号对应的房间服务器地址
var o_roomserver = o_game.method.get_roomserver(roomcode);
//通知房间服务器创建房间
var msg = {};
msg.app = youle_agent.app.appname;
msg.route = youle_agent.app.youle_room.routename;
msg.rpc = "create_room";
msg.data = {};
msg.data.agent = {};
msg.data.agent.agentid = agentid;
msg.data.agent.name = o_agent.agentname;
msg.data.agent.server = o_agent.server;
msg.data.agent.tcpport = o_agent.tcpport;
msg.data.agent.httpport = o_agent.httpport;
msg.data.agent.freeroom = o_agent.freeroom;
msg.data.game = {};
msg.data.game.gameid = gameid;
msg.data.game.name = o_game.gamename;
msg.data.game.seatcount = o_game.seatcount;
msg.data.game.makewar = o_game.makewar;
msg.data.game.modename = o_game.modename;
msg.data.game.server = o_roomserver.server;
msg.data.game.tcpport = o_roomserver.tcpport;
msg.data.game.httpport = o_roomserver.httpport;
msg.data.game.minroomcode = o_roomserver.minroomcode;
msg.data.game.maxroomcode = o_roomserver.maxroomcode;
msg.data.player = {};
msg.data.player.playerid = playerid;
msg.data.player.nickname = o_player.nickname;
msg.data.player.avatar = o_player.avatar;
msg.data.player.sex = o_player.sex;
msg.data.player.playertype = o_player.playertype;
msg.data.player.ip = o_gameinfo.ip;
msg.data.player.conmode = o_gameinfo.conmode;
msg.data.player.fromid = o_gameinfo.fromid;
msg.data.player.address = o_player.address;
msg.data.player.latitude = o_player.latitude;
msg.data.player.longitude = o_player.longitude;
msg.data.player.bean = o_player.bean;
msg.data.player.notenterroom = 1;
//机器人金币范围
msg.data.robot={};
msg.data.robot.goldRange = null;
var o_cfg = youle_agent.app.youle_platform.config;
var _system_room = o_cfg.method.get_paravalue("system_room", agentid, gameid);
var robotGoldRange = null;
if(_system_room){
for(var k=0;k<_system_room.length;k++){
var sRoomType = _system_room[k].roomtype;
if(typeof sRoomType == "object"){
sRoomType = JSON.stringify(sRoomType);
}
if(JSON.stringify(roomtype) == sRoomType){
msg.data.robot.robotGoldRange = _system_room[k].robotGoldRange;
}
}
}
//获取开房所需的房卡数量
var needroomcard = youle_agent.import.createroom_needroomcard(o_game, roomtype);
//系统房间写死不要房卡
needroomcard = 0;
//获取总局数
var asetcount = youle_agent.import.createroom_asetcount(o_game, roomtype);
//获取豆豆下限
var beanfloor = youle_agent.import.createroom_beanfloor(o_game, roomtype);
//获取房间类型
var roommode = youle_agent.import.createroom_roommode(o_game, roomtype);
//获取星星场倍数
var beanmult = youle_agent.import.createroom_beanmult(o_game, roomtype);
//玩家是否需要准备
var needprepare = youle_agent.import.createroom_needprepare(o_game, roomtype);
//系统房间即无限局一定要准备
needprepare = 1;
//不是星星场
if (!roommode){
beanmult = 0;
}
msg.data.room = {};
msg.data.room.roomcode = roomcode;
msg.data.room.roomtype = roomtype;
msg.data.room.needroomcard = needroomcard;
msg.data.room.asetcount = asetcount;
msg.data.room.infinite = 1;
msg.data.room.sysroom = 1;
msg.data.room.roommode = roommode;
msg.data.room.beanfloor = beanfloor;
msg.data.room.beanmult = beanmult;
msg.data.room.needprepare = needprepare;
msg.data.room.advanced_type = 0;
msg.data.room.advanced_teabean = 0;
msg.data.room.isFree = isFree;
if (o_roomserver.server == o_agent.server){
var roomserver_data = youle_agent.app.youle_room[msg.rpc](msg);
if (roomserver_data.data.state == 0){
var o_share = {};
o_share.roomcode = roomcode;
o_share.roomtype = roomtype;
o_share.sharetime= min_now();
o_game.sharerooms_system.push(o_share);
}
}
}
break;
}
}
//高级选项_房间列表
youle_agent.advanced_roomlist = function(pack){
var agentid = pack.data.agentid;
var gameid = pack.data.gameid;
var playerid = parseInt(pack.data.playerid);
//查找代理商
var o_agent = youle_agent.agents.method.find_agent(agentid);
if (!o_agent) {
return;
};
//检查游戏id是否存在
var o_game = o_agent.method.find_game(gameid);
if (!o_game) {
return;
};
//查找玩家
var o_player = o_agent.method.find_player(playerid);
if (!o_player) {
return;
};
// var videoConfig = youle_room.app.youle_platform.config.method.get_paravalue("videoConfig",agentid,gameid);
pack.data.shortcode = o_player.shortcode;
//房间费系统设置的值
pack.data.tea = null;
pack.data.roomtype = null;
pack.data.roomlist = [];
if (o_player.roomcodes){
for (var i = 0; i < o_player.roomcodes.length; i++) {
if (o_player.roomcodes[i].gameid == gameid) {
pack.data.tea = o_player.roomcodes[i].tea;
pack.data.roomtype = o_player.roomcodes[i].roomtype;
pack.data.roomlist = o_player.roomcodes[i].roomlist;
pack.data.isClose = o_player.roomcodes[i].isClose;
pack.data.rebateType = o_player.roomcodes[i].rebateType;
if(o_player.roomcodes[i].videoConfig){
pack.data.videoConfig = o_player.roomcodes[i].videoConfig;
}
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<o_player.roomcodes.length;i++){
o_game = o_agent1.method.find_game(o_player.roomcodes[i].gameid);
if(o_game && o_player.roomcodes[i].roomlist.length > 0){
var o_room = null;
for(var j = 0;j < o_player.roomcodes[i].roomlist.length;j++){
o_room = o_game.method.find_room(o_player.roomcodes[i].roomlist[j]);
if(o_room){
o_room.shortcode = null;
o_room.advanced_type = null;
if(o_room.battlestate == 0){
//通知代理服务器解散房间
var msg1 = {};
msg1.app = youle_room.app.appname;
msg1.route = youle_room.app.youle_agent.routename;
msg1.rpc = "self_break_room";
msg1.data = {};
msg1.data.agentid = agentid;
msg1.data.gameid = o_player.roomcodes[i].gameid;
msg1.data.roomcode = o_player.roomcodes[i].roomlist[j];
//玩家列表
msg1.data.playeridlist = [];
for (var k = 0; k < o_room.seatlist.length; k++) {
if (o_room.seatlist[k]){
msg1.data.playeridlist.push(o_room.seatlist[k].playerid);
}
}
youle_room.app.youle_agent[msg1.rpc](msg1,true);
var msg2 = {};
msg2.app = youle_room.app.appname;
msg2.route = youle_room.routename;
msg2.rpc = "other_break_room";
o_room.method.sendpack_toother(msg2, o_player.gameinfo.seat);
//释放房间
o_game.method.free_room(o_room);
}else{
youle_room.import.gameBreak(o_room);
}
}else{
console.log("玩家短号房列表出现异常!!");
}
}
o_player.roomcodes[i].roomlist=[];
}
//已存在分享的vip房
var oGame = o_agent.method.find_game(o_player.roomcodes[i].gameid);
if(oGame){
if(oGame.sharerooms_player){
var findIndex = min_ary_indexof(oGame.sharerooms_player, o_player.shortcode, "roomcode");
if(findIndex > -1){
min_ary_delval(oGame.sharerooms_player, o_player.shortcode, "roomcode");
}
}
}
}
//修改数据库
console.log(1,JSON.stringify(o_player.roomcodes));
var sql = "update player set play_roomcodes = ? where play_agentid = ? and play_playerid = ?";
youle_agent.mysql.execsql("execsql", sql, [JSON.stringify(o_player.roomcodes), agentid, playerid]);
}
}
}
var preAdvanced = o_player.advanced;
o_player.advanced = advanced;
o_player.shortcode = shortcode;
o_player.desone = desone;
o_player.destwo = destwo;
if (lower_limit != null){
o_player.lowlimit = parseInt(lower_limit);
} else {
o_player.lowlimit = -900000000;
}
o_player.notice = announcement;
//处理已存在的短号房间
var o_game = null;
var o_agent1 = youle_room.agents.method.find_agent(agentid);
if(o_player.roomcodes && o_agent1){
for(var i=0;i<o_player.roomcodes.length;i++){
o_game = o_agent1.method.find_game(o_player.roomcodes[i].gameid);
if(o_game && o_player.roomcodes[i].roomlist.length > 0){
if(preAdvanced > advanced){//房间数量减少
var o_room = null;
for(var j = o_player.roomcodes[i].roomlist.length-1;j >= advanced;j--){
o_room = o_game.method.find_room(o_player.roomcodes[i].roomlist[j]);
if(o_room){
o_room.shortcode = null;
o_room.advanced_type = null;
if(o_room.battlestate == 0){
//通知代理服务器解散房间
var msg1 = {};
msg1.app = youle_room.app.appname;
msg1.route = youle_room.app.youle_agent.routename;
msg1.rpc = "self_break_room";
msg1.data = {};
msg1.data.agentid = agentid;
msg1.data.gameid = o_player.roomcodes[i].gameid;
msg1.data.roomcode = o_player.roomcodes[i].roomlist[j];
//玩家列表
msg1.data.playeridlist = [];
for (var k = 0; k < o_room.seatlist.length; k++) {
if (o_room.seatlist[k]){
msg1.data.playeridlist.push(o_room.seatlist[k].playerid);
}
}
youle_room.app.youle_agent[msg1.rpc](msg1,true);
var msg2 = {};
msg2.app = youle_room.app.appname;
msg2.route = youle_room.routename;
msg2.rpc = "other_break_room";
o_room.method.sendpack_toother(msg2, o_player.gameinfo.seat);
//释放房间
o_game.method.free_room(o_room);
}else{
youle_room.import.gameBreak(o_room);
}
}else{
console.log("玩家短号房列表出现异常!!");
}
}
o_player.roomcodes[i].roomlist.splice(advanced,preAdvanced - advanced);
var sql = "update player set play_roomcodes = ? where play_agentid = ? and play_playerid = ?";
youle_agent.mysql.execsql("execsql", sql, [JSON.stringify(o_player.roomcodes), agentid, playerid]);
//已存在分享的vip房
var oGame = o_agent.method.find_game(o_player.roomcodes[i].gameid);
if(oGame){
if(oGame.sharerooms_player){
var findIndex = min_ary_indexof(oGame.sharerooms_player, shortcode, "roomcode");
if(findIndex > -1){
oGame.sharerooms_player[findIndex].roomlist=o_player.roomcodes[i].roomlist;
oGame.sharerooms_player[findIndex].destwo=destwo;
}
}
}
}else if(preAdvanced < advanced){//房间数量增加
var mg = {};
mg.data={};
mg.data.agentid = agentid;
mg.data.gameid = o_player.roomcodes[i].gameid;
mg.data.playerid = o_player.playerid;
mg.data.tea = o_player.roomcodes[i].tea;
mg.data.roomtype = o_player.roomcodes[i].roomtype;
mg.data.infinite = o_player.roomcodes[i].infinite;
mg.data.videoConfig = o_player.roomcodes[i].videoConfig;
mg.data.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<whitelist.length;i++){
if(whitelist[i][2]){
whitelist[i][2] = parseInt(whitelist[i][2]);
}else{
whitelist[i][2] = 0;
}
}
}
//查找代理商
var o_agent = youle_agent.agents.method.find_agent(agentid);
if (!o_agent) {
pack.data.state = 0;
return pack;
};
//检查玩家
var o_player = o_agent.method.find_player(playerid);
if (!o_player) {
pack.data.state = 0;
return pack;
};
o_player.whitelist = whitelist;
pack.data.state = 0;
return pack;
}
//代理后台-修改短号白名单
youle_agent.synch_update_whitelist = function(pack){
var agentid = pack.data.agentid;
var shortcode = parseInt(pack.data.shortcode);
var whitelist = pack.data.whitelist;
if(whitelist){
for(var i=0;i<whitelist.length;i++){
if(whitelist[i][2]){
whitelist[i][2] = parseInt(whitelist[i][2]);
}else{
whitelist[i][2] = 0;
}
}
}
//查找代理商
var o_agent = youle_agent.agents.method.find_agent(agentid);
if (!o_agent) {
pack.data.state = 0;
return pack;
};
//查找短号
if (!o_agent.shortcodes){
pack.data.state = 0;
return pack;
}
var o_shortcode = o_agent.shortcodes[shortcode];
if (!o_shortcode){
pack.data.state = 1;
return pack;
}
var playerid = o_shortcode.playerid;
//检查玩家
var o_player = o_agent.method.find_player(playerid);
if (!o_player) {
pack.data.state = 0;
return pack;
};
o_player.whitelist = whitelist;
pack.data.state = 0;
return pack;
}
//代理后台-设置系统星星抽成
youle_agent.synch_coinrebate = function(pack){
var agentid = pack.data.agentid;
var playerid = parseInt(pack.data.playerid);
var mode1 = pack.data.mode1;
var set1 = pack.data.set1;
var mode2 = pack.data.mode2;
var set2 = pack.data.set2;
//查找代理商
var o_agent = youle_agent.agents.method.find_agent(agentid);
if (!o_agent) {
pack.data.state = 0;
return pack;
};
o_agent.rebate_mode1 = mode1;
o_agent.rebate_set1 = set1;
o_agent.rebate_mode2 = mode2;
o_agent.rebate_set2 = set2;
pack.data.state = 0;
return pack;
}
//设置签名
youle_agent.setSign = function(pack){
var agentid = pack.data.agentid;
var playerid = parseInt(pack.data.playerid);
var sign = pack.data.sign;
//查找代理商
var o_agent = youle_agent.agents.method.find_agent(agentid);
if (!o_agent) {
return false;
};
//查找玩家
var o_player = o_agent.method.find_player(playerid);
if (!o_player) {
return false;
};
o_player.sign = sign;
var sql = "update player set play_sign = ? where play_agentid = ? and play_playerid = ?";
youle_agent.mysql.execsql("execsql", sql, [sign, agentid, playerid]);
youle_agent.app.SendPack(pack);
return pack;
}
//转移仓库金币
youle_agent.changeBankBean = function(pack){
var agentid = pack.data.agentid;
var password = pack.data.password;
var newPlayerid = pack.data.newPlayerid;
var oldPlayerid = pack.data.oldPlayerid;
var db_callback = function(dbdata){
console.log(dbdata);
}
var sql_game = "call cp_sales2_change_bank(?,?,?,?)";
youle_agent.mysql.execsql("opensql", sql_game, [agentid, password, newPlayerid, oldPlayerid], db_callback);
}
youle_agent.compressWhiteList = function(data){
var dataStr = JSON.stringify(data);
if(dataStr.length > 6000){//超出
var cmpStr = LZString.compressToUTF16(dataStr);
return "zip"+cmpStr;
}else{
return dataStr;
}
}
youle_agent.deCompressWhiteList = function(data){
var dataStr = data;
if(dataStr.indexOf("zip")==0){//压缩
var str = dataStr.slice(3,dataStr.length);
var deStr = LZString.decompressFromUTF16(str);
return JSON.parse(deStr);
}else{
return JSON.parse(dataStr);
}
}
youle_agent.optBanList = function(pack){
//agent player 下的属性 banList:[];
var agentid = pack.data.agentid;
var playerid = pack.data.playerid;
var 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<whitelist.length;i++){
var pid = Number(whitelist[i][0]);
if(o_player.banList.indexOf(pid) < 0){//不在名单中
o_player.banList.unshift(pid);
}
}
}
pack.data.banList = o_player.banList;
pack.data.message = "所有白名单玩家已添加至黑名单!";
break;
default:
break;
}
return pack;
}
youle_agent.getShortCodeRankList = function(pack){
var agentid = pack.data.agentid;
var playerid = Number(pack.data.playerid);
var shortcode = Number(pack.data.shortcode);
//类型 0 从大到小 1从小到大
//var type = pack.data.type;
//排名总数
var count = pack.data.count;
//查找代理商
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 ownerid = null;
if(o_agent.shortcodes){
var idx = -1;//min_ary_indexof(o_agent.shortcodes,shortcode,"shortcode");
for(var i=0;i<o_agent.shortcodes.length;i++){
if(o_agent.shortcodes[i]){
if(o_agent.shortcodes[i].shortcode == shortcode){
idx = i;
break;
}
}
}
if(idx > -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<whitelist.length;i++){
whitelist[i][0] = Number(whitelist[i][0]);
if(whitelist[i][2]){
whitelist[i][2] = Number(whitelist[i][2]);
}else{
whitelist[i][2] = 0;
}
}
if(playerid != ownerid){
var pidx = min_ary_indexof(whitelist,playerid,"0");
if(pidx==-1){
pack.data.message = "您不在白名单中,无法获取排名!";
pack.data.error = 1;
return pack;
}
}
//排序
// if(!type){
whitelist.sort((val1,val2) => 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<whitelist.length;i++){
whitelist[i][2] = value;
}
var writeDB = true;
if(gameid){
var config_vipConfig = youle_agent.app.youle_platform.config.method.get_paravalue("vipConfig", agentid, gameid);
if(config_vipConfig){
var vipIndex = min_ary_indexof(config_vipConfig,shortcode,"0");
if(vipIndex > -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<whitelist.length;i++){
if(whitelist[i][0] == userid){
if(mode == 0){
whitelist[i][2] = value;
}else{
whitelist[i][2] += value;
}
break;
}
}
var writeDB = true;
if(gameid){
var config_vipConfig = youle_agent.app.youle_platform.config.method.get_paravalue("vipConfig", agentid, gameid);
if(config_vipConfig){
var vipIndex = min_ary_indexof(config_vipConfig,shortcode,"0");
if(vipIndex > -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<o_agent.players.length;i++){
if(o_agent.players[i] && o_agent.players[i].whitelist){
for(var j=0;j<o_agent.players[i].whitelist.length;j++){
if(o_agent.players[i].whitelist[j][0] == userid){
res.push(o_agent.players[i].shortcode);
break;
}
}
}
}
return res;
}
return res;
}
youle_agent.optWhiteList1 = function(pack){
var agentid = pack.data.agentid;
var playerid = pack.data.playerid;
var userid = pack.data.userid;
var value = pack.data.value;
//1 添加修改 2 删除
var mode = pack.data.mode;
if(value){
value = Number(value);
}else{
value = 0;
}
if(!userid){
pack.data.message = "玩家ID不能为空";
return pack;
}
//查找代理商
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;
var writeDB = false;
var isFound = false;
if(whitelist){
if(mode == 2){//删除
try{
whitelist = whitelist.filter(function(item){
if(item[0] == userid){
writeDB = true;
isFound = true;
}
return item[0] != userid;
});
if(!isFound){
pack.data.message = "该玩家不在名单中!";
}
}catch(err){
console.log(err);
}
}else{
try{
var wlist = youle_agent.findPlayerInWhiteList(agentid,userid);
//用来取消一个玩家只能存在一个短号中
wlist = [];
//已存在于不属于该短号的白名单中
if(wlist.length!=0 && wlist.indexOf(shortcode) == -1){
pack.data.message = "该玩家已存在于其他短号白名单中,无法添加!";
}else{
var tmp = false;
for(var i=0;i<whitelist.length;i++){
if(whitelist[i][0] == userid){
tmp = true;
whitelist[i][2] = value;
}
}
if(!tmp){
whitelist.push([userid,"",value]);
}
writeDB = true;
}
}catch(err){
console.log(err);
}
}
o_player.whitelist = whitelist;
}else{
// pack.data.message = "您白名单内还没玩家";
whitelist = [[userid,"",value]];
o_player.whitelist = whitelist;
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]);
}
pack.data.whiteList = whitelist;
return pack;
}
youle_agent.optWhiteList = function(pack){
var agentid = pack.data.agentid;
var playerid = pack.data.playerid;
var userid = pack.data.userid;
var value = pack.data.value;
//1 添加修改 2 删除
var mode = pack.data.mode;
if(value){
value = Number(value);
}else{
value = 0;
}
if(!userid){
pack.data.message = "玩家ID不能为空";
return pack;
}
//查找代理商
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;
var writeDB = false;
var isFound = false;
if(whitelist){
if(mode == 2){//删除
try{
whitelist = whitelist.filter(function(item){
if(item[0] == userid){
writeDB = true;
isFound = true;
}
return item[0] != userid;
});
if(!isFound){
pack.data.message = "该玩家不在名单中!";
}
}catch(err){
console.log(err);
}
}else{
try{
var wlist = youle_agent.findPlayerInWhiteList(agentid,userid);
//已存在于不属于该短号的白名单中
if(wlist.length!=0 && wlist.indexOf(shortcode) == -1){
pack.data.message = "该玩家已存在于其他短号白名单中,无法添加!";
}else{
var tmp = false;
for(var i=0;i<whitelist.length;i++){
if(whitelist[i][0] == userid){
tmp = true;
whitelist[i][2] = value;
}
}
if(!tmp){
whitelist.push([userid,"",value]);
}
writeDB = true;
}
}catch(err){
console.log(err);
}
}
o_player.whitelist = whitelist;
}else{
// pack.data.message = "您白名单内还没玩家";
whitelist = [[userid,"",value]];
o_player.whitelist = whitelist;
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]);
}
pack.data.whiteList = whitelist;
return pack;
}
youle_agent.getPlayerWhiteList = function(pack){
var agentid = pack.data.agentid;
var playerid = pack.data.playerid;
//查找代理商
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;
pack.data.whiteList = whitelist;
return pack;
}
youle_agent.getVipRankList = function(pack){
var agentid = pack.data.agentid;
// var playerid = pack.data.playerid;
var limit = pack.data.limit;
if(!limit){
limit = 10;
}
//查找代理商
var o_agent = youle_agent.agents.method.find_agent(agentid);
if (!o_agent) {
return false;
};
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;
o_player.destwo = dbdata[i].play_destwo;
o_player.shortcode = dbdata[i].play_shortcode;
o_player.notice = dbdata[i].play_notice;
pack.data.list.push(o_player);
}
youle_agent.app.SendPack(pack);
}
var sql = "select * from player where play_agentid = ? and play_shortcode is not null order by play_bean desc limit "+limit;
youle_agent.mysql.execsql("opensql", sql, [agentid], db_callback, pack);
//return pack;
}
youle_agent.playerBehavior = function(pack){
var agentid = pack.data.agentid;
var gameid = pack.data.gameid;
var playerid = Number(pack.data.playerid);
var tag = pack.data.tag;
//查找代理商
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 url = "http://test3.1888day.com/api/gamedo/gamedo";
var cfg = {};
cfg.url = url;
cfg.type = "POST";
cfg.data = "agentid="+agentid+"&gameid="+gameid+"&playerid="+playerid+"&tag="+tag;
cfg.success = function(msg){
console.log(msg);
};
cfg.error = function(msg){
console.log(msg);
};
min_http(cfg);
}
youle_agent.setVipForbidSelect = function(pack){
var agentid = pack.data.agentid;
var gameid = pack.data.gameid;
var playerid = parseInt(pack.data.playerid);
var forbidSelect = 0;
if(pack.data.forbidSelect){
forbidSelect = parseInt(pack.data.forbidSelect);
}else{
forbidSelect = 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].forbidSelect = forbidSelect;
// 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.giveCoin = function(pack){
var agentid = pack.data.agentid;
var playerid = parseInt(pack.data.playerid);
var toPlayerid = parseInt(pack.data.toPlayerid);
var count = pack.data.count;
var password = pack.data.password;
var gameid = pack.data.gameid;
//查找代理商
var o_agent = youle_agent.agents.method.find_agent(agentid);
if (!o_agent) {
return;
};
if(toPlayerid == playerid){
pack.data.state = 1;
pack.data.error = "不可赠送给自己";
pack.data.showerror = 1;
youle_agent.app.SendPack(pack);
return ;
}
//查找玩家
var invitecode1 = 0;
var inviteid1 = 0;
var marketid1 = 0;
var invitecode2 = 0;
var inviteid2 = 0;
var marketid2 = 0;
var playBean = 0;
var playBean1 = 0;
var callbackFun = function(){
var starName = youle_agent.app.youle_platform.config.method.get_paravalue("starName", agentid);
if (!starName){
starName = "星星";
}
if(playBean <= 0){
pack.data.state = 1;
pack.data.error = "您没有"+starName+"可赠送!";
pack.data.showerror = 1;
youle_agent.app.SendPack(pack);
return ;
}
if(count < 0){
pack.data.state = 1;
pack.data.error = "赠送数量必须大于0";
pack.data.showerror = 1;
youle_agent.app.SendPack(pack);
return ;
}
if(count > 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);
}