/////////////////////////////////////////////////// /////// cls_youle_room_export: 输出接口 /////// /////////////////////////////////////////////////// var cls_youle_room_export = cls_youle_room_export || { new: function() { var exp = {}; //检查玩家的位置是否正确,检查tcp连接是否正确,返回房间对象 exp.check_player = function(agentid, gameid, roomcode, seat, playerid, conmode, fromid){ //查找代理商 var o_agent = youle_room.agents.method.find_agent(agentid); if (!o_agent){ return null; } //查找游戏 var o_game = o_agent.method.find_game(gameid); if (!o_game){ return null; } //查找房间 var o_room = o_game.method.find_room(roomcode); if (!o_room){ return null; } //查找玩家 var o_player = o_room.seatlist[seat]; if (!o_player){ return null; } //检查座位 if (o_player.playerid != playerid) { return null; }; //检查tcp连接 if (o_player.conmode != conmode || o_player.fromid != fromid) { return null; } return o_room; } //扣除房主的房卡 exp.deduct_roomcard = function(o_room){ if (!o_room){ return; } //系统房间写死不要房卡 if (o_room.infinite){ return; } if (o_room.roommode){ //sss var xxroomdeduct = youle_room.app.youle_platform.config.method.get_paravalue("xxroomdeduct", o_room.o_game.o_agent.agentid); if (!xxroomdeduct){ return; } } var deductmode = youle_room.import.deduct_roomcard_mode(o_room.o_game, o_room.roomtype); if (deductmode == 2){ //大赢家扣卡 return; } // var extcard = 0; // if(o_room.videoConfig){ // var o_agent1 = youle_agent.agents.method.find_agent(o_room.o_game.o_agent.agentid); // var vConfig = o_agent1.method.alyVideoConfig(o_room.videoConfig); // if(vConfig[0] == 1){ // extcard = vConfig[1]; // } // } for (var i = 0; i < o_room.seatlist.length; i++) { var o_player = o_room.seatlist[i]; if (!o_player){ continue; } if (o_player.gameinfo.isowner == 1){ //房主 if (o_room.wasdeduct){ continue; } if (o_room.needroomcard == 0){ continue; } if (o_player.gameinfo.isbet != 1){ continue; } //vip不扣房卡 if (o_player.playertype == 1){ continue; } o_room.wasdeduct = true; //通知代理商服务器修改房卡 var o_game = o_room.o_game; var o_agent = o_game.o_agent; var msg = {}; msg.app = youle_room.app.appname; msg.route = youle_room.app.youle_agent.routename; msg.rpc = "deduct_roomcard"; msg.data = {}; msg.data.agentid = o_agent.agentid; msg.data.playerid = o_player.playerid; msg.data.needroomcard = o_room.needroomcard; msg.data.gameid = o_room.o_game.gameid; msg.data.roomcode = o_room.roomcode; if (o_agent.server == o_game.roomserver){ //房间服务器与代理商服务器是同一地址 msg.data.issameserver = 1; youle_room.app.youle_agent[msg.rpc](msg); } else { //房间服务器与代理商服务器不是同一地址 msg.data.issameserver = 0; var cfg = {}; cfg.url = "http://" + o_agent.server + ":" + o_agent.httpport + "/index.html"; cfg.type = "POST"; cfg.data = JSON.stringify(msg); cfg.success = function(str){}; cfg.error = function(str){ o_room.wasdeduct = false; }; min_http(cfg); } } else if (o_player.gameinfo.isowner == 0){ //非房主 if (o_player.wasdeduct){ continue; } if (o_player.needroomcard == 0){ continue; } if (o_player.gameinfo.isbet != 1){ continue; } //vip不扣房卡 if (o_player.playertype == 1){ continue; } o_player.wasdeduct = true; //通知代理商服务器修改房卡 var o_game = o_player.gameinfo.o_game; var o_agent = o_game.o_agent; var msg = {}; msg.app = youle_room.app.appname; msg.route = youle_room.app.youle_agent.routename; msg.rpc = "deduct_roomcard"; msg.data = {}; msg.data.agentid = o_agent.agentid; msg.data.playerid = o_player.playerid; msg.data.needroomcard = o_player.needroomcard; msg.data.gameid = o_room.o_game.gameid; msg.data.roomcode = o_room.roomcode; if (o_agent.server == o_game.roomserver){ //房间服务器与代理商服务器是同一地址 msg.data.issameserver = 1; youle_room.app.youle_agent[msg.rpc](msg); } else { //房间服务器与代理商服务器不是同一地址 msg.data.issameserver = 0; var cfg = {}; cfg.url = "http://" + o_agent.server + ":" + o_agent.httpport + "/index.html"; cfg.type = "POST"; cfg.data = JSON.stringify(msg); cfg.success = function(str){}; cfg.error = function(str){ o_player.wasdeduct = false; }; min_http(cfg); } } } //群主开房,房主没在房间内也要扣房卡 var o_player = o_room.owner; var deductmode = youle_room.import.deduct_roomcard_mode(o_room.o_game, o_room.roomtype); if (o_player && !o_room.wasdeduct && o_room.needroomcard != 0 && o_player.playertype != 1 && deductmode == 0){ o_room.wasdeduct = true; //通知代理商服务器修改房卡 // var extcard = 0; // if(o_room.videoConfig){ // var o_agent1 = youle_agent.agents.method.find_agent(o_room.o_game.o_agent.agentid); // var vConfig = o_agent1.method.alyVideoConfig(o_room.videoConfig); // if(vConfig[0] == 1){ // extcard = vConfig[1]; // } // } var o_game = o_room.o_game; var o_agent = o_game.o_agent; var msg = {}; msg.app = youle_room.app.appname; msg.route = youle_room.app.youle_agent.routename; msg.rpc = "deduct_roomcard"; msg.data = {}; msg.data.agentid = o_agent.agentid; msg.data.playerid = o_player.playerid; msg.data.needroomcard = o_room.needroomcard; msg.data.gameid = o_room.o_game.gameid; msg.data.roomcode = o_room.roomcode; if (o_agent.server == o_game.roomserver){ //房间服务器与代理商服务器是同一地址 msg.data.issameserver = 1; youle_room.app.youle_agent[msg.rpc](msg); } else { //房间服务器与代理商服务器不是同一地址 msg.data.issameserver = 0; var cfg = {}; cfg.url = "http://" + o_agent.server + ":" + o_agent.httpport + "/index.html"; cfg.type = "POST"; cfg.data = JSON.stringify(msg); cfg.success = function(str){}; cfg.error = function(str){ o_room.wasdeduct = false; }; min_http(cfg); } } } //小局结算系统抽成,ary_grade为与座位一一对应的本小局得分,格式如[100,null,-100,null]。函数返回抽成后的得分 exp.save_grade_aset = function(o_room, ary_grade, asetnumber, ary_pond){ //累计池子输赢 if (ary_pond){ var __o_agentsvr_agent = youle_agent.agents.method.find_agent(o_room.o_game.o_agent.agentid); var __o_agentsvr_game = __o_agentsvr_agent.method.find_game(o_room.o_game.gameid); for (var i = 0; i < ary_pond.length; i++) { if (ary_pond[i][1]){ var _found = false; for (var j = 0; j < __o_agentsvr_game.pondlist.length; j++) { if (ary_pond[i][0] == __o_agentsvr_game.pondlist[j][0]) { __o_agentsvr_game.pondlist[j][1] = __o_agentsvr_game.pondlist[j][1] + ary_pond[i][1]; _found = true; break; } }; if (!_found){ var info = [ary_pond[i][0], ary_pond[i][1]]; __o_agentsvr_game.pondlist.push(info); } var sql = "call cp_game_update_pond(?,?,?,?)"; youle_room.mysql.execsql("execsql", sql, [o_room.o_game.o_agent.agentid, o_room.o_game.gameid, ary_pond[i][0], ary_pond[i][1]]); } }; } //只有星星场才有小局结算和小局抽成 var isFree = 0; // if(o_room.isFree){ // isFree = 1; // } if(o_room.sysroom && !isFree){ var sysRoomConfig = youle_room.app.youle_platform.config.method.get_paravalue("system_room", o_room.o_game.o_agent.agentid, o_room.o_game.gameid); if(sysRoomConfig){ for(var i=0;i 0){ // var rebateConfig = youle_room.app.youle_platform.config.method.get_paravalue("rebateConfig", o_room.o_game.o_agent.agentid); // var rCharm = 0; // var maxgrade1 = 0; // var maxseat1 = []; // var rcTemp = false; //if(gameid == "Btke0urRy0cvPd5CIvD5yfhYhKhdSdex"){ //if(rebateConfig.rebateCharm && o_room.rebateType){ // for (var i = 0; i < ary_grade.length; i++){ // if (ary_grade[i]){ // ary_grade[i] = Number(ary_grade[i]); // if (ary_grade[i] > maxgrade1){ // maxgrade1 = ary_grade[i]; // maxseat1 = [i]; // } else if (ary_grade[i] == maxgrade1){ // maxseat1.push(i); // } // } // } // console.log("maxseat1",JSON.stringify(maxseat1)); // console.log("maxgrade1",maxgrade1); //rcTemp = true; // if(maxseat1.length>0){ // rCharm = parseInt(o_room.rebateNumber/maxseat1.length); // }else{ // rCharm = parseInt(o_room.rebateNumber); // } //} //} // if(rebateConfig){ // if(rebateConfig.rebateCharm && o_room.rebateType){ // rcTemp = true; // } // //抽金币 // if(!o_room.rebateType){ // reTemp = true; // } // } var _seatlist = []; // console.log("ary_grade",ary_grade); // console.log("333",JSON.stringify(o_agentsvr_owner.whitelist)); // console.log("rCharm",rCharm); for (var i = 0; i < ary_grade.length; i++) { if (ary_grade[i] != null){ if (o_room.seatlist[i]){ var _player = {}; _player.seat = i; _player.playerid = o_room.seatlist[i].playerid; _player.change = ary_grade[i]; // for(var k=0;k -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_agentsvr_owner.whitelist), o_room.o_game.o_agent.agentid, o_room.owner.playerid]); } } } }catch(e){ console.log("结算短号魅力值发生错误"); console.log(e); } var ary = xRebate.gameRebate2(o_room,ary_grade); // console.log("ary",ary); return ary; } //小局抽成设置 var aset_rebate = youle_room.app.youle_platform.config.method.get_paravalue("aset_rebate", o_room.o_game.o_agent.agentid); var setting; if (o_room.infinite){ //无限局 if (aset_rebate && aset_rebate.infinite){ setting = aset_rebate.infinite; //无限局设置 } else { setting = [0]; } } else { //有限局 if (aset_rebate && aset_rebate.finitude){ setting = aset_rebate.finitude; //有限局设置 } else { return ary_grade; } } //是否有真实玩家 var haveplayer = false; for (var i = 0; i < ary_grade.length; i++) { if (ary_grade[i] != null){ if (o_room.seatlist[i]){ if (!o_room.seatlist[i].isrobot){ haveplayer = true; break; } } } } var do_save_coin_rebate = function(seat, isrobot){ var agentid = o_room.o_game.o_agent.agentid; var gameid = o_room.o_game.gameid; var roomcode = o_room.roomcode; var roommode = 0; //玩家房间 o_room.asetRebate = true; if (o_room.sysroom) { roommode = 1; //系统房间 } var createtime = o_room.createtime; var beanmult = 0; if (o_room.beanmult){ beanmult = o_room.beanmult; } var ownerid = o_room.owner.playerid; var shortcode = 0; if (o_room.shortcode){ shortcode = o_room.shortcode; } var deductmode = youle_room.import.deduct_roomcard_mode(o_room.o_game, o_room.roomtype); var playerid = o_room.seatlist[seat].playerid; var roomcard = 0; if (playerid == o_room.owner.playerid){ roomcard = youle_room.import.createroom_needroomcard(o_room.o_game, o_room.roomtype); } else { roomcard = youle_room.import.joinroom_needroomcard(o_room.o_game, o_room.roomtype); } var asetcount = o_room.asetcount; if (!isrobot){ isrobot = 0; } else { isrobot = 1; } var grade = ary_grade[seat]; var push = 0; switch (parseInt(setting[1])){ case 1: //按得分的百分比抽成 push = parseInt(ary_grade[seat] * parseInt(setting[2]) / 100); break; case 2: //按倍数的百分比抽成 push = parseInt(o_room.beanmult * parseInt(setting[2]) / 100); break; } var invitecode = null; var inviteid = null; var marketid = null; if (!isrobot){ var __o_agentsvr_agent = youle_agent.agents.method.find_agent(agentid); var __o_agentsvr_player = __o_agentsvr_agent.method.find_player(playerid); invitecode = __o_agentsvr_player.invitecode; inviteid = __o_agentsvr_player.inviteid; marketid = __o_agentsvr_player.marketid; } if (haveplayer){ //有真实玩家才保存数据 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(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?);"; youle_room.mysql_grade.execsql("execsql", sql, [roomid, agentid, gameid, roomcode, roommode, createtime, beanmult, ownerid, shortcode, deductmode, roomcard, 1, asetcount, asetnumber, playerid, isrobot, grade, parseInt(setting[0]), 0, "", parseInt(setting[1]), parseInt(setting[2]), push, datatime, invitecode, inviteid, marketid]); } do_update_bean(playerid, grade, push, isrobot, false); return grade - push; } var do_update_bean = function(playerid, grade, push, isrobot, save_gold_account){ //游戏输赢设置 玩家输赢存在玩家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 getGameWinLose = function(gameid,type,oPlayer){ // var key; // 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]){ // return oPlayer.winLose[gameid][key]; // }else{ // } // }else{ // } // }else{ // } // return null; // } if (!isrobot){ 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 = o_room.o_game.o_agent.agentid; msg.data.playerid = playerid; msg.data.change = grade; msg.data.pushbean = -1 * push; msg.data.gameid = o_room.o_game.gameid; msg.data.showrebate = 2; youle_room.app.youle_agent[msg.rpc](msg); if (o_room.roommode){ var sql = ' update agent_game_player ' + ' set agpl_playset_xx = agpl_playset_xx + 1, ' + ' agpl_winlose_xx = agpl_winlose_xx + (? div ?), ' + ' agpl_winlose_x2 = agpl_winlose_x2 + ? ' + ' where agpl_agentid = ? ' + ' and agpl_gameid = ? ' + ' and agpl_playerid = ?'; youle_room.mysql.execsql("execsql", sql, [grade, o_room.beanmult, grade, o_room.o_game.o_agent.agentid, o_room.o_game.gameid, playerid]); var o_agentsvr_agent = youle_agent.agents.method.find_agent(o_room.o_game.o_agent.agentid); var o_agentsvr_player = o_agentsvr_agent.method.find_player(playerid); if (o_agentsvr_player){ if (!o_agentsvr_player.nn_winlose_xx){ if (o_room.beanmult){ o_agentsvr_player.nn_winlose_xx = parseInt(grade / o_room.beanmult); } } else { if (o_room.beanmult){ o_agentsvr_player.nn_winlose_xx = o_agentsvr_player.nn_winlose_xx + parseInt(grade / o_room.beanmult); } } if (!o_agentsvr_player.nn_winlose_x2){ o_agentsvr_player.nn_winlose_x2 = grade; } else { o_agentsvr_player.nn_winlose_x2 = o_agentsvr_player.nn_winlose_x2 + grade; } if (o_room.beanmult){ updateGameWinLose(o_room.o_game.gameid,2,parseInt(grade / o_room.beanmult),o_agentsvr_player); } updateGameWinLose(o_room.o_game.gameid,3,grade,o_agentsvr_player); } } } else { //记录机器人的累积输赢 if (o_room.roommode){ var o_agentsvr_agent = youle_agent.agents.method.find_agent(o_room.o_game.o_agent.agentid); var o_agentsvr_game = o_agentsvr_agent.method.find_game(o_room.o_game.gameid); if (!o_agentsvr_game.robot_xx){ if (o_room.beanmult){ o_agentsvr_game.robot_xx = parseInt(grade / o_room.beanmult); } } else { if (o_room.beanmult){ o_agentsvr_game.robot_xx = o_agentsvr_game.robot_xx + parseInt(grade / o_room.beanmult); } } if (!o_agentsvr_game.robot_x2){ o_agentsvr_game.robot_x2 = grade; } else { o_agentsvr_game.robot_x2 = o_agentsvr_game.robot_x2 + grade; } if (haveplayer){ //有真实玩家才保存数据 var sql = "call cp_game_grade_robot(?,?,?,?);"; youle_room.mysql.execsql("execsql", sql, [o_room.o_game.o_agent.agentid, o_room.o_game.gameid, grade, o_room.beanmult]); } } } if (save_gold_account){ var agentid = o_room.o_game.o_agent.agentid; var gameid = o_room.o_game.gameid; var roomcode = o_room.roomcode; var roommode = 0; //玩家房间 if (o_room.sysroom) { roommode = 1; //系统房间 } var createtime = o_room.createtime; var beanmult = 0; if (o_room.beanmult){ beanmult = o_room.beanmult; } var ownerid = o_room.owner.playerid; var shortcode = 0; if (o_room.shortcode){ shortcode = o_room.shortcode; } var deductmode = youle_room.import.deduct_roomcard_mode(o_room.o_game, o_room.roomtype); var roomcard = 0; if (playerid == o_room.owner.playerid){ roomcard = youle_room.import.createroom_needroomcard(o_room.o_game, o_room.roomtype); } else { roomcard = youle_room.import.joinroom_needroomcard(o_room.o_game, o_room.roomtype); } var asetcount = o_room.asetcount; if (!isrobot){ isrobot = 0; } else { isrobot = 1; } var invitecode = null; var inviteid = null; var marketid = null; if (!isrobot){ var __o_agentsvr_agent = youle_agent.agents.method.find_agent(agentid); var __o_agentsvr_player = __o_agentsvr_agent.method.find_player(playerid); invitecode = __o_agentsvr_player.invitecode; inviteid = __o_agentsvr_player.inviteid; marketid = __o_agentsvr_player.marketid; } if (haveplayer){ //有真实玩家才保存数据 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(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?);"; var __o_agentsvr_agent = youle_agent.agents.method.find_agent(agentid); var __o_agentsvr_player = __o_agentsvr_agent.method.find_player(playerid); youle_room.mysql_grade.execsql("execsql", sql, [roomid, agentid, gameid, roomcode, roommode, createtime, beanmult, ownerid, shortcode, deductmode, roomcard, 1, asetcount, asetnumber, playerid, isrobot, grade, parseInt(setting[0]), 0, "", parseInt(setting[1]), parseInt(setting[2]), 0, datatime, invitecode, inviteid, marketid]); }else{ //读取是否纯机器人保存金币变动 var o_cfg = youle_agent.app.youle_platform.config; var reportRobotGold = o_cfg.method.get_paravalue("reportRobotGold", agentid, gameid); if(reportRobotGold){ 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(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?);"; youle_room.mysql_grade.execsql("execsql", sql, [roomid, agentid, gameid, roomcode, roommode, createtime, beanmult, ownerid, shortcode, deductmode, roomcard, 1, asetcount, asetnumber, playerid, isrobot, grade, parseInt(setting[0]), 0, "", parseInt(setting[1]), parseInt(setting[2]), 0, datatime, invitecode, inviteid, marketid]); } } } } //房间id = 时间戳 + 4位随机码 + 房号 var roomid = new Date().getTime() + min_randomChar(4) + o_room.roomcode; var datatime = min_now(); switch (parseInt(setting[0])){ case 0: //无限局没有小局系统抽成 for (var i = 0; i < ary_grade.length; i++) { if (ary_grade[i] != null){ do_update_bean(o_room.seatlist[i].playerid, ary_grade[i], 0, o_room.seatlist[i].isrobot, true); } } return ary_grade; case 1: //对大赢家抽成 var maxwingrade = -1; for (var i = 0; i < ary_grade.length; i++) { if (ary_grade[i] != null){ if (ary_grade[i] > maxwingrade){ maxwingrade = ary_grade[i]; } } } for (var i = 0; i < ary_grade.length; i++) { if (ary_grade[i] != null){ if (ary_grade[i] == maxwingrade){ ary_grade[i] = do_save_coin_rebate(i, o_room.seatlist[i].isrobot); } else { do_update_bean(o_room.seatlist[i].playerid, ary_grade[i], 0, o_room.seatlist[i].isrobot, true); } } } return ary_grade; case 2: //对所有赢的人抽成 for (var i = 0; i < ary_grade.length; i++) { if (ary_grade[i] != null){ if (ary_grade[i] > 0){ ary_grade[i] = do_save_coin_rebate(i, o_room.seatlist[i].isrobot); } else { do_update_bean(o_room.seatlist[i].playerid, ary_grade[i], 0, o_room.seatlist[i].isrobot, true); } } } return ary_grade; case 3: //对所有人抽成 for (var i = 0; i < ary_grade.length; i++) { if (ary_grade[i] != null){ ary_grade[i] = do_save_coin_rebate(i, o_room.seatlist[i].isrobot); } } return ary_grade; default: return ary_grade; } } //一局游戏结束保存战绩并释放房间(不用通知前端游戏,因为游戏服务器已经通知了前端) exp.save_grade = function(o_room, o_gameinfo1, o_gameinfo2, freeroomflag){ //游戏输赢设置 玩家输赢存在玩家winLose属性中 //console.log(o_room, o_gameinfo1, o_gameinfo2, freeroomflag); 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 getGameWinLose = function(gameid,type,oPlayer){ // var key; // 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]){ // return oPlayer.winLose[gameid][key]; // }else{ // } // }else{ // } // }else{ // } // return null; // } //需要子游戏设置玩家的gameinfo.isbet和gameinfo.grade属性 if (o_gameinfo1){ try { cls_youle_room_backup.deletebackup_room(o_room); var agentid = o_room.o_game.o_agent.agentid; var gameid = o_room.o_game.gameid; var roomcode = o_room.roomcode; var createtime = o_room.createtime; var makewartime = o_room.makewartime; var overtime = min_now(); //星星场房间是否和普通房间一样扣房卡 var xxroomdeduct = youle_room.app.youle_platform.config.method.get_paravalue("xxroomdeduct", o_room.o_game.o_agent.agentid); //小局抽成设置 // var aset_rebate = youle_room.app.youle_platform.config.method.get_paravalue("aset_rebate", o_room.o_game.o_agent.agentid); //抽成到的玩家id // var pushtoplayerid_setting = youle_room.app.youle_platform.config.method.get_paravalue("pushtoplayerid", o_room.o_game.o_agent.agentid); //是否抽成到玩家id对应的代理账号上 // var pushto_setting = youle_room.app.youle_platform.config.method.get_paravalue("pushto", o_room.o_game.o_agent.agentid); //大赢家扣卡 var needdeduct = false; var deductmode = youle_room.import.deduct_roomcard_mode(o_room.o_game, o_room.roomtype); if (deductmode == 2){ needdeduct = true; } if (o_room.roommode){ //星星场不扣房卡 if (!xxroomdeduct){ needdeduct = false; } } if (needdeduct){ var deductcard = youle_room.import.joinroom_needroomcard(o_room.o_game, o_room.roomtype); if (deductcard > 0){ var maxgrade = 0; var maxseat = []; for (var i = 0; i < o_room.seatlist.length; i++){ if (o_room.seatlist[i] && o_room.seatlist[i].gameinfo.isbet){ if (o_room.seatlist[i].gameinfo.grade > maxgrade){ maxgrade = parseInt(o_room.seatlist[i].gameinfo.grade); maxseat = [i]; } else if (o_room.seatlist[i].gameinfo.grade == maxgrade){ maxseat.push(i); } } } // if(o_room.videoConfig){ // var o_agent1 = youle_agent.agents.method.find_agent(o_room.o_game.o_agent.agentid); // var vConfig = o_agent1.method.alyVideoConfig(o_room.videoConfig); // if(vConfig[0] == 1){ // deductcard += vConfig[1]; // } // } var msg = {}; msg.app = youle_room.app.appname; msg.route = youle_room.app.youle_agent.routename; msg.rpc = "deduct_roomcard"; msg.data = {}; msg.data.agentid = agentid; msg.data.needroomcard = deductcard; msg.data.gameid = gameid; msg.data.roomcode = roomcode; msg.data.issameserver = 1; for (var i = 0; i < maxseat.length; i++){ msg.data.playerid = o_room.seatlist[maxseat[i]].playerid; youle_room.app.youle_agent[msg.rpc](msg); } } } /* var rebatefrom = 0; var rebateto = 0; var toplayerid = ""; var rebatemode; var setvalue; //如果设置了星星场限进,计算大赢家的房主抽成数量 if (o_room.beanfloor){ //大赢家抽成星星数 var maxwiner_setting = 0; if (!o_room.advanced_type){ //普通星星场房间 maxwiner_setting = youle_room.import.owner_beanpush(o_room.o_game, o_room.roomtype); if (maxwiner_setting){ maxwiner_setting = parseInt(maxwiner_setting); rebatefrom = 1; rebateto = 1; if (pushtoplayerid_setting){ if (pushtoplayerid_setting[0]){ rebateto = 2; toplayerid = pushtoplayerid_setting[0]; if (pushto_setting == 1){ rebateto = 3; } else if (pushto_setting == 2){ rebateto = 4; toplayerid = o_room.owner.playerid; } } } rebatemode = 3; setvalue = maxwiner_setting; } } else { //短号星星场房间 if (o_room.advanced_teabean){ maxwiner_setting = o_room.advanced_teabean; rebatefrom = 1; rebateto = 1; if (pushtoplayerid_setting){ if (pushtoplayerid_setting[1]){ rebateto = 2; toplayerid = pushtoplayerid_setting[1]; if (pushto_setting == 1){ rebateto = 3; } else if (pushto_setting == 2){ rebateto = 4; toplayerid = o_room.owner.playerid; } } } rebatemode = 3; setvalue = maxwiner_setting; } } if (maxwiner_setting){ //房主得分 var ownergarde = 0; //房主抽成星星数量 var ownerpush = 0; //大赢家得分 var maxgrade = 0; //大赢家数量 var maxcount = 0; for (var i = 0; i < o_room.seatlist.length; i++){ if (o_room.seatlist[i] && o_room.seatlist[i].gameinfo.isbet){ if (o_room.seatlist[i].gameinfo.grade > maxgrade){ maxgrade = parseInt(o_room.seatlist[i].gameinfo.grade); maxcount = 1; } else if (o_room.seatlist[i].gameinfo.grade == maxgrade){ maxcount = maxcount + 1; } } } //大赢家实际抽成星星数 var maxwiner_pushbean = parseInt(maxwiner_setting / maxcount); } } */ //比赛数据 var match_data = {}; match_data.agent_id = agentid; match_data.game_id = gameid; match_data.game_infos = []; var aryplayerid = ""; var arygrade = ""; var aryroomcard = ""; var aryisrobot = ""; var o_agentsvr_agent = youle_agent.agents.method.find_agent(agentid); var arywinner = ""; var winscore = -100000; var aryscore = ""; //大赢家标志 var getResult1 = youle_room.import.getWinnerByGameInfo1(o_room,o_gameinfo1); var getResult2 = youle_room.import.getScoreByGameInfo1(o_room,o_gameinfo1); if(getResult1){ arywinner = getResult1.join(","); }else{ if(o_gameinfo1.playerlist){ for(var k=0;k winscore){ winscore = Number(o_gameinfo1.playerlist[k][1]); } } } } } if(getResult2){ aryscore = getResult2.join(","); } //房间id = 时间戳 + 4位随机码 + 房号 var roomid = new Date().getTime() + min_randomChar(4) + o_room.roomcode; var datatime = min_now(); for (var i = 0; i < o_room.seatlist.length; i++) { if (o_room.seatlist[i]){ var o_player = o_room.seatlist[i]; if (o_gameinfo1.playerlist[i]) { var o_agentsvr_player = o_agentsvr_agent.method.find_player(o_player.playerid); if (aryplayerid){ aryplayerid = aryplayerid + "," + o_player.playerid; if (o_player.isrobot){ aryisrobot = aryisrobot + ",1"; } else { aryisrobot = aryisrobot + ",0"; } if(!getResult1){ try{ if(o_gameinfo1.playerlist){ if(Number(o_gameinfo1.playerlist[i][1]) == winscore && Number(o_gameinfo1.playerlist[i][3]) == Number(o_player.playerid)){ arywinner = arywinner + "," + 1; }else{ arywinner = arywinner + "," + 0; } }else{ arywinner = arywinner + "," + 0; } }catch(err){ console.log("战绩结算大赢家出错!"); console.log(o_gameinfo1); console.log(err); } } if(!getResult2){ try{ if(o_gameinfo1.playerlist){ if(Number(o_gameinfo1.playerlist[i][3]) == Number(o_player.playerid)){ aryscore = aryscore + "," + o_gameinfo1.playerlist[i][1]; }else{ aryscore = aryscore + "," + 0; } }else{ aryscore = aryscore + "," + 0; } }catch(err){ console.log("战绩结算分数出错!"); console.log(o_gameinfo1); console.log(err); } } if (gameid == "8x4l0rGjf026f60c48h0mbUAhK5vV16f"){ var recordflag = true; // if (o_room.game.model == 4 || o_room.game.model == 5){ // recordflag = false; // } try{ if (NN_control){ if (NN_control.kanpaiqz){ recordflag = true; } } }catch(e){} if (o_player.isrobot){ recordflag = true; } if (recordflag){ arygrade = arygrade + "," + o_player.gameinfo.grade; } else { arygrade = arygrade + ",0"; } } else { arygrade = arygrade + "," + o_player.gameinfo.grade; } if (o_agentsvr_player) { aryroomcard = aryroomcard + "," + o_agentsvr_player.roomcard; } else { aryroomcard = aryroomcard + ",-99999"; } } else { aryplayerid = o_player.playerid; if (o_player.isrobot){ aryisrobot = "1"; } else { aryisrobot = "0"; } if(!getResult1){ try{ if(o_gameinfo1.playerlist){ if(Number(o_gameinfo1.playerlist[i][1]) == winscore && Number(o_gameinfo1.playerlist[i][3]) == Number(o_player.playerid)){ arywinner = "1"; }else{ arywinner = "0"; } }else{ arywinner = "0"; } }catch(err){ console.log("战绩结算大赢家出错!"); console.log(o_gameinfo1); console.log(err); } } if(!getResult2){ try{ if(o_gameinfo1.playerlist){ if(Number(o_gameinfo1.playerlist[i][3]) == Number(o_player.playerid)){ aryscore = o_gameinfo1.playerlist[i][1]; }else{ aryscore = "0" ; } }else{ aryscore = "0" ; } }catch(err){ console.log("战绩结算分数出错!"); console.log(o_gameinfo1); console.log(err); } } if (gameid == "8x4l0rGjf026f60c48h0mbUAhK5vV16f"){ var recordflag = true; // if (o_room.game.model == 4 || o_room.game.model == 5){ // recordflag = false; // } try{ if (NN_control){ if (NN_control.kanpaiqz){ recordflag = true; } } }catch(e){} if (o_player.isrobot){ recordflag = true; } if (recordflag){ arygrade = o_player.gameinfo.grade; } else { arygrade = 0; } } else { arygrade = o_player.gameinfo.grade; } if (o_agentsvr_player){ aryroomcard = o_agentsvr_player.roomcard; } else { aryroomcard = "-99999"; } } //统计牛牛的输赢总分 if (gameid == "8x4l0rGjf026f60c48h0mbUAhK5vV16f"){ var recordflag = true; try{ if (NN_control){ if (NN_control.kanpaiqz){ recordflag = true; } } }catch(e){} if (recordflag){ if (o_room.roommode){ if (!o_agentsvr_player.nn_winlose_xx){ o_agentsvr_player.nn_winlose_xx = 0; } if (!o_room.beanmult){ o_agentsvr_player.nn_winlose_xx = o_agentsvr_player.nn_winlose_xx + o_player.gameinfo.grade; } else { o_agentsvr_player.nn_winlose_xx = o_agentsvr_player.nn_winlose_xx + parseInt(o_player.gameinfo.grade / o_room.beanmult); } if (!o_agentsvr_player.nn_winlose_x2){ o_agentsvr_player.nn_winlose_x2 = 0; } o_agentsvr_player.nn_winlose_x2 = o_agentsvr_player.nn_winlose_x2 + o_player.gameinfo.grade; } else { if (!o_agentsvr_player.nn_winlose){ o_agentsvr_player.nn_winlose = 0; } o_agentsvr_player.nn_winlose = o_agentsvr_player.nn_winlose + o_player.gameinfo.grade; } } } if (gameid){ var recordflag = true; try{ if (NN_control){ if (NN_control.kanpaiqz){ recordflag = true; } } }catch(e){} if (recordflag){ if (o_room.roommode){ if (!o_agentsvr_player.nn_winlose_xx){ o_agentsvr_player.nn_winlose_xx = 0; } if (!o_room.beanmult){ o_agentsvr_player.nn_winlose_xx = o_agentsvr_player.nn_winlose_xx + o_player.gameinfo.grade; } else { o_agentsvr_player.nn_winlose_xx = o_agentsvr_player.nn_winlose_xx + parseInt(o_player.gameinfo.grade / o_room.beanmult); } if (!o_agentsvr_player.nn_winlose_x2){ o_agentsvr_player.nn_winlose_x2 = 0; } o_agentsvr_player.nn_winlose_x2 = o_agentsvr_player.nn_winlose_x2 + o_player.gameinfo.grade; if (!o_room.beanmult){ updateGameWinLose(gameid,2,o_player.gameinfo.grade,o_agentsvr_player); } else { updateGameWinLose(gameid,2,parseInt(o_player.gameinfo.grade / o_room.beanmult),o_agentsvr_player); } updateGameWinLose(gameid,3,o_player.gameinfo.grade,o_agentsvr_player); } else { if (!o_agentsvr_player.nn_winlose){ o_agentsvr_player.nn_winlose = 0; } o_agentsvr_player.nn_winlose = o_agentsvr_player.nn_winlose + o_player.gameinfo.grade; updateGameWinLose(gameid,1,o_player.gameinfo.grade,o_agentsvr_player); } } } /* //如果是豆豆场则通知代理服务器修改豆豆数量 if (o_room.roommode){ //当前玩家被抽成的星星数 var _pushbean = 0; //是否不提示茶水费抽成 var showrebate = 0; if (maxwiner_setting){ //有房主抽成 if (o_player.playerid == o_room.owner.playerid) { ownergarde = o_player.gameinfo.grade; continue; } else { if (o_player.gameinfo.grade == maxgrade) { _pushbean = maxwiner_pushbean; ownerpush = ownerpush + maxwiner_pushbean; } } } else { if (o_room.advanced_type){ switch (o_agentsvr_agent.rebate_mode2){ case 1: //按比例抽成 rebatefrom = 2; rebateto = 0; toplayerid = ""; rebatemode = 1; setvalue = o_agentsvr_agent.rebate_set2; break; case 2: //按固定值抽 rebatefrom = 2; rebateto = 0; toplayerid = ""; rebatemode = 3; setvalue = o_agentsvr_agent.rebate_set2; break; default://不抽 rebatefrom = 0; rebateto = 0; toplayerid = ""; rebatemode = 0; setvalue = 0; break; } } else { switch (o_agentsvr_agent.rebate_mode1){ case 1: //按比例抽成 rebatefrom = 2; rebateto = 0; toplayerid = ""; rebatemode = 1; setvalue = o_agentsvr_agent.rebate_set1; break; case 2: //按固定值抽 rebatefrom = 2; rebateto = 0; toplayerid = ""; rebatemode = 3; setvalue = o_agentsvr_agent.rebate_set1; break; default://不抽 rebatefrom = 0; rebateto = 0; toplayerid = ""; rebatemode = 0; setvalue = 0; break; } } //所有赢家系统抽成处理 if (o_player.gameinfo.grade > 0) { if (!o_room.advanced_type){ //普通星星场房间 switch (o_agentsvr_agent.rebate_mode1){ case 1: //按比例抽成 _pushbean = parseInt(o_player.gameinfo.grade * o_agentsvr_agent.rebate_set1 / 100); break; case 2: //按固定值抽 _pushbean = o_agentsvr_agent.rebate_set1; break; default: break; } } else { //短号星星场房间 switch (o_agentsvr_agent.rebate_mode2){ case 1: //按比例抽成 _pushbean = parseInt(o_player.gameinfo.grade * o_agentsvr_agent.rebate_set2 / 100); break; case 2: //按固定值抽 _pushbean = o_agentsvr_agent.rebate_set2; break; default: break; } } if (_pushbean){ showrebate = 1; } } } if (!aset_rebate || !aset_rebate.finitude) { 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 = o_player.playerid; msg.data.change = o_player.gameinfo.grade; msg.data.pushbean = -1 * _pushbean; msg.data.gameid = gameid; msg.data.showrebate = showrebate; youle_room.app.youle_agent[msg.rpc](msg); var roommode = 0; //玩家房间 if (o_room.sysroom) { roommode = 1; //系统房间 } var createtime = o_room.createtime; var beanmult = 0; if (o_room.beanmult){ beanmult = o_room.beanmult; } var ownerid = o_room.owner.playerid; var shortcode = 0; if (o_room.shortcode){ shortcode = o_room.shortcode; } var deductmode = youle_room.import.deduct_roomcard_mode(o_room.o_game, o_room.roomtype); var playerid = o_player.playerid; var grade = o_player.gameinfo.grade; var roomcard = 0; if (playerid == o_room.owner.playerid){ roomcard = youle_room.import.createroom_needroomcard(o_room.o_game, o_room.roomtype); } else { roomcard = youle_room.import.joinroom_needroomcard(o_room.o_game, o_room.roomtype); } var asetcount = o_room.asetcount; 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) values(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?);"; youle_room.mysql_grade.execsql("execsql", sql, [roomid, agentid, gameid, roomcode, roommode, createtime, beanmult, ownerid, shortcode, deductmode, roomcard, 0, asetcount, 0, playerid, 0, grade, rebatefrom, rebateto, toplayerid, rebatemode, setvalue, _pushbean, datatime]); } } else if (o_room.beanfloor) { //当前玩家被抽成的星星数 var _pushbean = 0; //是否不提示茶水费抽成 var showrebate = 0; if (maxwiner_setting){ //有房主抽成 if (o_player.playerid == o_room.owner.playerid) { ownergarde = 0; //if (!aset_rebate || !aset_rebate.finitude) { if (o_player.gameinfo.grade == maxgrade) { _pushbean = maxwiner_pushbean; var pushtoplayerid; if (pushtoplayerid_setting){ if (!o_room.advanced_type){ //普通房间 pushtoplayerid = pushtoplayerid_setting[0]; } else { //短号房间 pushtoplayerid = pushtoplayerid_setting[1]; } } if (pushtoplayerid && (pushtoplayerid != o_room.owner.playerid || pushto_setting)){ 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 = o_player.playerid; msg.data.change = 0; msg.data.pushbean = -1 * _pushbean; msg.data.gameid = gameid; msg.data.showrebate = showrebate; youle_room.app.youle_agent[msg.rpc](msg); if (!pushto_setting){ ownerpush = ownerpush + maxwiner_pushbean; } } } var roommode = 2; var createtime = o_room.createtime; var beanmult = 0; var ownerid = o_room.owner.playerid; var shortcode = 0; if (o_room.shortcode){ shortcode = o_room.shortcode; } var deductmode = youle_room.import.deduct_roomcard_mode(o_room.o_game, o_room.roomtype); var playerid = o_player.playerid; var grade = o_player.gameinfo.grade; var roomcard = 0; if (playerid == o_room.owner.playerid){ roomcard = youle_room.import.createroom_needroomcard(o_room.o_game, o_room.roomtype); } else { roomcard = youle_room.import.joinroom_needroomcard(o_room.o_game, o_room.roomtype); } var asetcount = o_room.asetcount; 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) values(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?);"; youle_room.mysql_grade.execsql("execsql", sql, [roomid, agentid, gameid, roomcode, roommode, createtime, beanmult, ownerid, shortcode, deductmode, roomcard, 0, asetcount, 0, playerid, 0, grade, rebatefrom, rebateto, toplayerid, rebatemode, setvalue, _pushbean, datatime]); //} continue; } else { if (o_player.gameinfo.grade == maxgrade) { _pushbean = maxwiner_pushbean; ownerpush = ownerpush + maxwiner_pushbean; } } //if (!aset_rebate || !aset_rebate.finitude) { 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 = o_player.playerid; msg.data.change = 0; msg.data.pushbean = -1 * _pushbean; msg.data.gameid = gameid; msg.data.showrebate = showrebate; youle_room.app.youle_agent[msg.rpc](msg); var roommode = 2; var createtime = o_room.createtime; var beanmult = 0; var ownerid = o_room.owner.playerid; var shortcode = 0; if (o_room.shortcode){ shortcode = o_room.shortcode; } var deductmode = youle_room.import.deduct_roomcard_mode(o_room.o_game, o_room.roomtype); var playerid = o_player.playerid; var grade = o_player.gameinfo.grade; var roomcard = 0; if (playerid == o_room.owner.playerid){ roomcard = youle_room.import.createroom_needroomcard(o_room.o_game, o_room.roomtype); } else { roomcard = youle_room.import.joinroom_needroomcard(o_room.o_game, o_room.roomtype); } var asetcount = o_room.asetcount; 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) values(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?);"; youle_room.mysql_grade.execsql("execsql", sql, [roomid, agentid, gameid, roomcode, roommode, createtime, beanmult, ownerid, shortcode, deductmode, roomcard, 0, asetcount, 0, playerid, 0, grade, rebatefrom, rebateto, toplayerid, rebatemode, setvalue, _pushbean, datatime]); //} } } */ //比赛数据 var match_player = {}; match_player.player_id = o_player.playerid; match_player.score = o_player.gameinfo.grade; match_player.nickname = o_player.nickname; match_player.avatar = o_player.avatar; match_data.game_infos.push(match_player); } } } /* //如果是星星场,房主获得抽成星星 if (o_room.beanfloor && maxwiner_setting){ if (!aset_rebate || !aset_rebate.finitude || !o_room.roommode) { var pushtoplayerid; if (pushtoplayerid_setting){ if (!o_room.advanced_type){ //普通房间 pushtoplayerid = pushtoplayerid_setting[0]; } else { //短号房间 pushtoplayerid = pushtoplayerid_setting[1]; } } if (!pushtoplayerid || (pushtoplayerid == o_room.owner.playerid && !pushto_setting)){ if (ownergarde || ownerpush) { 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 = o_room.owner.playerid; msg.data.change = ownergarde; msg.data.pushbean = ownerpush; msg.data.gameid = gameid; youle_room.app.youle_agent[msg.rpc](msg); } if (ownergarde){ var roommode = 0; //玩家房间 if (o_room.sysroom) { roommode = 1; //系统房间 } var createtime = o_room.createtime; var beanmult = 0; if (o_room.beanmult){ beanmult = o_room.beanmult; } var ownerid = o_room.owner.playerid; var shortcode = 0; if (o_room.shortcode){ shortcode = o_room.shortcode; } var deductmode = youle_room.import.deduct_roomcard_mode(o_room.o_game, o_room.roomtype); var grade = o_player.gameinfo.grade; var roomcard = 0; if (playerid == o_room.owner.playerid){ roomcard = youle_room.import.createroom_needroomcard(o_room.o_game, o_room.roomtype); } else { roomcard = youle_room.import.joinroom_needroomcard(o_room.o_game, o_room.roomtype); } var asetcount = o_room.asetcount; var _ownerpushbean = 0; if (ownergarde == maxgrade) { _ownerpushbean = maxwiner_pushbean; } 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) values(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?);"; youle_room.mysql_grade.execsql("execsql", sql, [roomid, agentid, gameid, roomcode, roommode, createtime, beanmult, ownerid, shortcode, deductmode, roomcard, 0, asetcount, 0, o_room.owner.playerid, 0, ownergarde, rebatefrom, rebateto, toplayerid, rebatemode, setvalue, _ownerpushbean, datatime]); } } else { if (ownergarde){ var _ownerpushbean = 0; if (ownergarde == maxgrade) { _ownerpushbean = maxwiner_pushbean; ownerpush = ownerpush + _ownerpushbean; } 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 = o_room.owner.playerid; msg.data.change = ownergarde; msg.data.pushbean = -1 * _ownerpushbean; msg.data.gameid = gameid; youle_room.app.youle_agent[msg.rpc](msg); var roommode = 0; //玩家房间 if (o_room.sysroom) { roommode = 1; //系统房间 } var createtime = o_room.createtime; var beanmult = 0; if (o_room.beanmult){ beanmult = o_room.beanmult; } var ownerid = o_room.owner.playerid; var shortcode = 0; if (o_room.shortcode){ shortcode = o_room.shortcode; } var deductmode = youle_room.import.deduct_roomcard_mode(o_room.o_game, o_room.roomtype); var grade = o_player.gameinfo.grade; var roomcard = 0; if (playerid == o_room.owner.playerid){ roomcard = youle_room.import.createroom_needroomcard(o_room.o_game, o_room.roomtype); } else { roomcard = youle_room.import.joinroom_needroomcard(o_room.o_game, o_room.roomtype); } var asetcount = o_room.asetcount; var _ownerpushbean = 0; if (ownergarde == maxgrade) { _ownerpushbean = maxwiner_pushbean; } 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) values(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?);"; youle_room.mysql_grade.execsql("execsql", sql, [roomid, agentid, gameid, roomcode, roommode, createtime, beanmult, ownerid, shortcode, deductmode, roomcard, 0, asetcount, 0, o_room.owner.playerid, 0, ownergarde, rebatefrom, rebateto, toplayerid, rebatemode, setvalue, _ownerpushbean, datatime]); } if (!pushto_setting){ if (ownerpush){ 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 = pushtoplayerid; msg.data.change = 0; msg.data.pushbean = ownerpush; msg.data.gameid = gameid; youle_room.app.youle_agent[msg.rpc](msg); } } } } } */ try{ xRebate.gameRebate(o_room); }catch(e){ console.log("抽成异常"); console.log(e); } //保存战绩到数据库 var sql = "call cp_game_grade_save(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?);"; youle_room.mysql.execsql("execsql", sql, [agentid, aryplayerid, gameid, roomcode, JSON.stringify(o_room.roomtype), createtime, makewartime, overtime, null, null, o_room.owner.playerid, arygrade, o_room.roommode, o_room.beanmult, o_room.shortcode, aryisrobot]); var o_agentsvr_owner = o_agentsvr_agent.method.find_player(o_room.owner.playerid); if (o_agentsvr_owner){ var ownerroomcard = o_agentsvr_owner.roomcard; } else { var ownerroomcard = -99999; } var shortcode = o_room.shortcode; var deducttype = youle_room.import.deduct_roomcard_mode(o_room.o_game, o_room.roomtype); var deductcard; if (deducttype == 0){ deductcard = youle_room.import.createroom_needroomcard(o_room.o_game, o_room.roomtype); } else { deductcard = youle_room.import.joinroom_needroomcard(o_room.o_game, o_room.roomtype); } var asetcount = youle_room.import.createroom_asetcount(o_room.o_game, o_room.roomtype); sql = "call cp_game_grade_save4(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?);"; youle_room.mysql_grade.execsql("execsql", sql, [agentid, aryplayerid, gameid, roomcode, JSON.stringify(o_room.roomtype), createtime, makewartime, overtime, JSON.stringify(o_gameinfo1), JSON.stringify(o_gameinfo2), o_room.owner.playerid, arygrade, aryroomcard, ownerroomcard, shortcode, deducttype, deductcard, asetcount, o_room.roommode, aryisrobot,arywinner,aryscore]); //发送比赛数据 var match_url = youle_room.app.youle_platform.config.method.get_paravalue("url_match2", agentid, gameid); if (match_url){ if (o_room.match_data){ match_data.match_data = o_room.match_data; } var cfg = {}; cfg.url = match_url; cfg.type = "POST"; cfg.data = "data=" + JSON.stringify(match_data); cfg.success = function(str){}; cfg.error = function(str){ console.log(min_now() + " 发送比赛数据失败!"); console.log(match_data); }; min_http(cfg); } //比赛&排行榜(何朝阳版) if (o_room.match_id){ var ary_playergrade = []; for (var i = 0; i < o_room.seatlist.length; i++) { if (o_room.seatlist[i]){ if (o_room.seatlist[i].gameinfo.isbet) { var obj_player = {}; obj_player.playerid = o_room.seatlist[i].playerid; obj_player.nickname = o_room.seatlist[i].nickname; obj_player.avatar = o_room.seatlist[i].avatar; obj_player.roomcode = o_room.roomcode; obj_player.overtime = overtime; obj_player.grade = o_room.seatlist[i].gameinfo.grade; if (o_room.seatlist[i].isrobot){ obj_player.isr = 1; } else { obj_player.isr = 0; } ary_playergrade.push(obj_player); } else { ary_playergrade.push(null); } } else { ary_playergrade.push(null); } } youle_room.export.match_ranklist(agentid, gameid, o_room.match_id, o_room.match_idx, ary_playergrade); } } catch(e){ console.log(e); } } //释放房间 if (freeroomflag){ //通知代理商服务器解散房间 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); } } if (o_agent.server == o_game.roomserver){ //房间服务器与代理商服务器是同一地址 youle_room.app.youle_agent[msg1.rpc](msg1); //释放房间 o_game.method.free_room(o_room); } else { //房间服务器与代理商服务器不是同一地址 var cfg = {}; cfg.url = "http://" + o_agent.server + ":" + o_agent.httpport + "/index.html"; cfg.type = "POST"; cfg.data = JSON.stringify(msg1); cfg.success = function(str){ //通知前端房间内的所有人需要断开房间服务器,连接代理服务器 for (var i = 0; i < o_room.seatlist.length; i++) { if (o_room.seatlist[i]) { var msg2 = {}; msg2.app = youle_room.app.appname; msg2.route = youle_room.routename; msg2.rpc = "connect_agentserver"; msg2.data = {}; msg2.data.agentserver = o_agent.server + ":" + o_agent.tcpport; msg2.data.data = {}; msg2.data.data.opt = "game_over"; msg2.data.data.playerid = o_room.seatlist[i].playerid; msg2.data.data.agentid = agentid; msg2.data.data.gameid = gameid; msg2.conmode = o_room.seatlist[i].conmode; msg2.fromid = o_room.seatlist[i].fromid; //此处conmode = null是为了避免触发玩家离线通知其他玩家事件 o_room.seatlist[i].conmode = null; o_room.seatlist[i].fromid = null; youle_room.app.SendPack(msg2); } } //释放房间 o_game.method.free_room(o_room); }; cfg.error = function(str){}; min_http(cfg); } } } //把系统庄的输赢也算到机器人的输赢里面 exp.save_system_zhuang = function(o_room, winvalue){ var sql = "update agent_game_player set agpl_winlose_x2 = agpl_winlose_x2 + ? where agpl_agentid = ? and agpl_gameid = ?"; youle_room.mysql.execsql("execsql", sql, [winvalue, o_room.o_game.o_agent.agentid, o_room.o_game.gameid]); } //完成游戏里的任务 exp.finish_gametask = function(agentid, o_player, taskid, finishamount){ var db_callback = function(dbdata){ //通知前端 var msg = {}; msg.app = youle_room.app.appname; msg.route = youle_room.routename; msg.rpc = "player_finish_task"; msg.conmode = o_player.conmode; msg.fromid = o_player.fromid; msg.data = {}; msg.data.taskid = taskid; msg.data.total = dbdata[0].tasktotal; msg.data.award = dbdata[0].taskaward; msg.data.finish = dbdata[0].taskfinish; msg.data.state = dbdata[0].taskstate; youle_room.app.SendPack(msg); } if (!finishamount){ finishamount = 1; } var sql = "call cp_game_task_finish(?,?,?,?,1);"; youle_room.mysql.execsql("opensql", sql, [agentid, o_player.playerid, taskid, finishamount], db_callback); } //全服通告 exp.game_broadcast = function(agentid, gameid, msgtype, msgcontent){ var msg = {}; msg.data = {}; msg.data.agentid = agentid; msg.data.gameid = gameid; msg.data.msgtype = msgtype; msg.data.msgcontent = msgcontent; youle_room.broadcast(msg); } //小局结算备份牌桌数据 exp.backup_room = function(o_room, o_deskinfo){ cls_youle_room_backup.backup_room(o_room, o_deskinfo); } //踢玩家离开房间 exp.kickplayer_inroom = function(o_room, seat){ if (!o_room){ return 0; } if (!o_room.seatlist[seat]){ return 0; } var o_player = o_room.seatlist[seat]; var msg1 = {}; msg1.app = youle_room.app.appname; msg1.route = youle_room.app.youle_agent.routename; msg1.rpc = "self_exit_room"; msg1.data = {}; msg1.data.agentid = o_room.o_game.o_agent.agentid; msg1.data.gameid = o_room.o_game.gameid; msg1.data.playerid = o_player.playerid; youle_room.app.youle_agent[msg1.rpc](msg1); o_player.method.exit_room(); if (o_room.battlestate == 1){ youle_room.import.player_leave(o_room, seat); } var msg2 = {}; msg2.app = youle_room.app.appname; msg2.route = youle_room.routename; msg2.rpc = "other_exit_room"; msg2.data = {}; msg2.data.seat = seat; o_room.method.sendpack_toother(msg2, seat); var msg3 = {}; msg3.app = youle_room.app.appname; msg3.route = youle_room.routename; msg3.rpc = "self_exit_room"; msg3.data = {}; msg3.data.roomcode = o_room.roomcode; if (o_room.owner.playerid == o_player.playerid){ msg3.data.isowner = 1; } else { msg3.data.isowner = 0; } msg3.conmode = o_player.conmode; msg3.fromid = o_player.fromid; youle_room.app.SendPack(msg3); return 1; } //互换位置 exp.change_seat = function(o_room, seat1, seat2){ var o_player1 = o_room.seatlist[seat1]; var o_player2 = o_room.seatlist[seat2]; o_room.seatlist[seat1] = o_player2; if (o_player2){ o_player2.gameinfo.seat = seat1; } o_room.seatlist[seat2] = o_player1; if (o_player1){ o_player1.gameinfo.seat = seat2; } var msg = {}; msg.app = youle_room.app.appname; msg.route = youle_room.routename; msg.rpc = "change_seat"; msg.data = {}; msg.data.agentid = o_room.o_game.o_agent.agentid; msg.data.gameid = o_room.o_game.gameid; msg.data.roomcode = o_room.roomcode; msg.data.seat1 = seat1; msg.data.seat2 = seat2; o_room.method.sendpack_toother(msg, -1); } //比赛&排行榜 exp.match_ranklist = function(agentid, gameid, matchid, matchidx, ary_playergrade){ var o_agentsvr_agent = youle_agent.agents.method.find_agent(agentid); var o_agentsvr_game = o_agentsvr_agent.method.find_game(gameid); var match_idx = min_ary_indexof(o_agentsvr_game.matchlist.list, matchid, "id"); if (match_idx > -1){ var match_object = o_agentsvr_game.matchlist.list[match_idx]; if (match_object.idx == matchidx){ var ischange = false; for (var i = 0; i < ary_playergrade.length; i++) { if (ary_playergrade[i] == null){ continue; } if (match_object.ranklist.length >= parseInt(match_object.topcount)){ if (ary_playergrade[i].grade < match_object.ranklist[match_object.ranklist.length - 1].grade){ continue; } } var idx_player = min_ary_indexof(match_object.ranklist, ary_playergrade[i].playerid, "playerid"); if (idx_player > -1){ if (ary_playergrade[i].grade <= match_object.ranklist[idx_player].grade){ continue; } else { match_object.ranklist.splice(idx_player, 1); ischange = true; } } var isfound = false; for (var j = 0; j < match_object.ranklist.length; j++) { if (ary_playergrade[i].grade > match_object.ranklist[j].grade){ match_object.ranklist.splice(j, 0, ary_playergrade[i]); if (match_object.ranklist.length > parseInt(match_object.topcount)){ match_object.ranklist.length = parseInt(match_object.topcount); } ischange = true; isfound = true; break; } } if (!isfound){ if (match_object.ranklist.length < parseInt(match_object.topcount)){ match_object.ranklist.push(ary_playergrade[i]); ischange = true; } } } if (match_object.sysgrade){ match_object.method.start_add_sysgrade_timer(); } if (ischange){ cls_youle_room_backup.backup_match(match_object); } } } } //获取机器人总体输赢type 1星星场分数 1输赢星星数 exp.getRobotWinLose = function(o_room,type){ var rValue; var o_agent = youle_agent.agents.method.find_agent(o_room.o_game.o_agent.agentid); var o_game = o_agent.method.find_game(o_room.o_game.gameid); switch(type){ case 2: rValue = o_game.robot_xx; break; case 3: rValue = o_game.robot_x2; break; default: rValue = o_game.robot_x2; break; } if(!rValue){rValue = 0;} return rValue; } //获取玩家总体输赢type 1星星场分数 1输赢星星数 exp.getPlayerWinLoseBySeat = function(o_room,seat,type){ try{ var o_player1 = o_room.seatlist[seat]; }catch(e){ } if(!o_player1){ return 0;} var o_agent = youle_agent.agents.method.find_agent(o_room.o_game.o_agent.agentid); var o_player = o_agent.method.find_player(o_player1.playerid); //读取输赢 var getGameWinLose = function(gameid,type,oPlayer){ var key; switch(type){ case 1: key = "game_winlose"; break; case 2: key = "game_winlose_xx"; break; case 3: key = "game_winlose_x2"; break; default: key = "game_winlose_xx"; break; } if(oPlayer.winLose){//判断是否有此属性 if(oPlayer.winLose[gameid]){ if(oPlayer.winLose[gameid][key]){ return oPlayer.winLose[gameid][key]; }else{ } }else{ } }else{ } return 0; } return getGameWinLose(o_room.o_game.gameid,type,o_player); } //判断该玩家是否满足踢出条件 true 踢出玩家;(只处理vip房) exp.checkKick = function(o_room,seat){ try{ var rValue = false; var rCount = o_room.rebateNumber; var oCount = 0; var o_agentsvr_agent = youle_agent.agents.method.find_agent(o_room.o_game.o_agent.agentid); if(!o_agentsvr_agent){ return rValue; } if(!o_room.seatlist[seat]){ return rValue; } // var o_player = o_agentsvr_agent.method.find_player(o_room.seatlist[seat].playerid); var o_player = o_room.seatlist[seat]; if(!o_player){ return rValue; } if(!o_room.owner){ return rValue; } // var o_owner = o_agentsvr_agent.method.find_player(owner.playerid); var o_owner = o_room.owner; if(!o_owner){ return rValue; } // var rebateConfig = youle_room.app.youle_platform.config.method.get_paravalue("rebateConfig", o_room.o_game.o_agent.agentid); // var rebateFrom = rebateConfig.from; // if(rebateConfig){ // } if(o_room.o_game.gameid == "Btke0urRy0cvPd5CIvD5yfhYhKhdSdex"){ var brNumber = youle_room.app.youle_platform.config.method.get_paravalue("brNumber",o_room.o_game.o_agent.agentid); if(brNumber){ brNumber = Number(brNumber); oCount = brNumber; } } //console.log(oCount,rCount,o_player,o_owner); //vip房 if(o_room.advanced_type){ //抽金币 if(!o_room.rebateType){ if(o_player.playerid == o_owner.playerid){ if(o_player.bean < oCount + rCount){ rValue = true; } }else{ if(o_player.bean < rCount){ rValue = true; } } }else{//抽魅力值 } } return rValue; }catch(e){ console.log("exp.checkKick",e); return false; } } return exp; } } //对内输出接口 youle_room.export = cls_youle_room_export.new();