/////////////////////////////////////////////////// ///////// cls_youle_agent_player: 玩家 ///////// /////////////////////////////////////////////////// var cls_youle_agent_player = cls_youle_agent_player || { //构造函数 new: function(o_agent, playerid, roomcard, bean, openid, unionid, nickname, avatar, sex, playertype, invitecode) { var player = {}; //基本信息 player.o_agent = o_agent; //代理商 player.playerid = playerid; //玩家id player.roomcard = roomcard; //房卡数量 player.bean = bean; //星星数量 player.openid = openid; player.unionid = unionid; player.nickname = nickname; player.avatar = avatar; player.sex = sex; player.playertype = playertype; //0:普通用户 1:vip开房不扣房卡 player.invitecode = invitecode; //绑定的邀请码 player.freetimer = null; //释放玩家的定时器 //登录的游戏列表 player.gameinfo = []; //方法 player.method = {}; //登录游戏 player.method.login_game = function(o_game, ip, conmode, fromid, machineid, machineroom){ cls_youle_agent_player.login_game(player, o_game, ip, conmode, fromid, machineid, machineroom); } //获取玩家某个游戏的游戏信息 player.method.get_gameinfo = function(o_game){ return cls_youle_agent_player.get_gameinfo(player, o_game); } //修改玩家房卡数量 player.method.update_roomcard = function(type, newroomcrad, change, memo){ cls_youle_agent_player.update_roomcard(player, type, newroomcrad, change, memo); } //修改玩家豆豆数量 player.method.update_bean = function(type, newbean, change, push, showrebate){ cls_youle_agent_player.update_bean(player, type, newbean, change, push, showrebate); } //打开释放玩家的定时器 player.method.open_free_timer = function(){ cls_youle_agent_player.open_free_timer(player); } //关闭释放玩家的定时器 player.method.close_free_timer = function(){ cls_youle_agent_player.close_free_timer(player); } return player; }, //登录游戏 login_game: function(o_player, o_game, ip, conmode, fromid, machineid, machineroom){ if (o_player.gameinfo.length <= o_game.idx) { o_player.gameinfo.length = o_game.idx + 1; } var _game_info = o_player.gameinfo[o_game.idx]; if (!_game_info){ //初始化游戏信息 _game_info = {}; _game_info.conmode = conmode; _game_info.fromid = fromid; _game_info.fromidtime = (new Date()).getTime(); _game_info.ip = ip; _game_info.machineid = machineid; _game_info.machineroom = machineroom; _game_info.roomcode = null; o_player.gameinfo[o_game.idx] = _game_info; //统计在线玩家数 o_game.method.online_p_chang(1); } else { //踢原有连接下线 if (fromid && o_game.gameid != "G2hw0ubng0zcoI0r4mx3H2yr4GejidwO"){ // if (fromid){ if (_game_info.conmode == "tcp" && _game_info.fromid && _game_info.fromid != fromid){ var msg = {}; msg.app = youle_agent.app.appname; msg.route = youle_agent.routename; msg.rpc = "kick_offline"; msg.conmode = _game_info.conmode; msg.fromid = _game_info.fromid; youle_agent.app.SendPack(msg); //测试用 // var agent_kick_offline = {}; // agent_kick_offline.agentid = o_game.o_agent.agentid; // agent_kick_offline.gameid = o_game.gameid; // agent_kick_offline.playerid = o_player.playerid; // agent_kick_offline.oldfromid = _game_info.fromid; // agent_kick_offline.oldtime = _game_info.fromidtime; // agent_kick_offline.oldmachineid = _game_info.machineid; // agent_kick_offline.oldmachineroom = _game_info.machineroom; // agent_kick_offline.newfromid = fromid; // agent_kick_offline.newtime = (new Date()).getTime(); // agent_kick_offline.newmachineid = machineid; // agent_kick_offline.newmachineroom = machineroom; // console.log(min_now() + " agentserver kick_offline"); // console.log(agent_kick_offline); } //更新游戏信息 _game_info.conmode = conmode; _game_info.fromid = fromid; _game_info.fromidtime = (new Date()).getTime(); _game_info.ip = ip; } } //更新tcp连接列表 if (conmode == "tcp"){ youle_agent.tcps.method.load_tcp(fromid, o_player, o_game.idx); } }, //获取玩家某个游戏的游戏信息 get_gameinfo: function(o_player, o_game){ if (o_player.gameinfo.length <= o_game.idx){ return null; } return o_player.gameinfo[o_game.idx]; }, //修改玩家房卡数量 update_roomcard: function(o_player, type, newroomcard, change, memo){ var roomCardName = youle_agent.app.youle_platform.config.method.get_paravalue("roomCardName", o_player.o_agent.agentid); if (!roomCardName){ roomCardName = "房卡"; } o_player.roomcard = newroomcard; //通知游戏前端 for (var i = 0; i < o_player.gameinfo.length; i++) { var _game_info = o_player.gameinfo[i]; if (_game_info){ if (_game_info.roomcode){ //获取房号对应的房间服务器地址 var o_game = o_player.o_agent.games[i]; if (!o_game) { continue; } var o_roomserver = o_game.method.get_roomserver(_game_info.roomcode); //通过房间服务器发送修改房卡的消息 var msg = {}; msg.app = youle_agent.app.appname; msg.route = youle_agent.app.youle_room.routename; msg.rpc = "update_roomcard"; msg.data = {}; msg.data.agentid = o_player.o_agent.agentid; msg.data.playerid = o_player.playerid; msg.data.gameid = o_game.gameid; msg.data.roomcode = _game_info.roomcode; msg.data.roomcard = newroomcard; // msg.data.type = type; // msg.data.change = change; switch(type){ case 0: msg.data.text = "扣除" + roomCardName + ":" + change; if (memo){ msg.data.text = memo + msg.data.text; } break; case 1: msg.data.text = "购买" + roomCardName + ":" + change; break; case 2: msg.data.text = roomCardName + "充值:" + change; break; case 3: msg.data.text = "领取" + roomCardName + "奖励:" + change; break; case 4: msg.data.text = "修改" + roomCardName + ":" + change; break; } if (o_roomserver.server == o_player.o_agent.server){ //房间服务器与代理商服务器是同一地址 youle_agent.app.youle_room[msg.rpc](msg); msg.data.issameserver = 1; } else { //房间服务器与代理商服务器不是同一地址 msg.data.issameserver = 0; 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); } } else if (_game_info.conmode && _game_info.fromid){ var msg = {}; msg.app = youle_agent.app.appname; msg.route = youle_agent.routename; msg.rpc = "update_roomcard"; msg.conmode = _game_info.conmode; msg.fromid = _game_info.fromid; msg.data = {}; msg.data.roomcard = newroomcard; // msg.data.type = type; // msg.data.change = change; switch(type){ case 0: msg.data.text = "扣除" + roomCardName + ":" + change; if (memo){ msg.data.text = memo + msg.data.text; } break; case 1: msg.data.text = "购买" + roomCardName + ":" + change; break; case 2: msg.data.text = roomCardName + "充值:" + change; break; case 3: msg.data.text = "领取" + roomCardName + "奖励:" + change; break; case 4: msg.data.text = "修改" + roomCardName + ":" + change; break; } youle_agent.app.SendPack(msg); } } } }, //修改玩家豆豆数量 update_bean: function(o_player, type, newbean, change, push, showrebate){ o_player.bean = parseInt(newbean); var starName = youle_agent.app.youle_platform.config.method.get_paravalue("starName", o_player.o_agent.agentid); if (!starName){ starName = "星星"; } //通知游戏前端 for (var i = 0; i < o_player.gameinfo.length; i++) { var _game_info = o_player.gameinfo[i]; if (_game_info){ if (_game_info.roomcode){ //获取房号对应的房间服务器地址 var o_game = o_player.o_agent.games[i]; var o_roomserver = o_game.method.get_roomserver(_game_info.roomcode); //通过房间服务器发送修改星星的消息 var msg = {}; msg.app = youle_agent.app.appname; msg.route = youle_agent.app.youle_room.routename; msg.rpc = "update_bean"; msg.data = {}; msg.data.agentid = o_player.o_agent.agentid; msg.data.playerid = o_player.playerid; msg.data.gameid = o_game.gameid; msg.data.roomcode = _game_info.roomcode; msg.data.bean = parseInt(newbean); switch(type){ case 0: //游戏输赢豆豆 var _text = ""; if (!showrebate){ if (change > 0){ _text = "游戏赢取" + starName + ":" + change; } else if (change < 0) { _text = "游戏扣除" + starName + ":" + change; } var _showrebate_setting = youle_agent.app.youle_platform.config.method.get_paravalue("shieldShowRebate", o_player.o_agent.agentid); if (!_showrebate_setting){ if (push > 0){ _text = _text + " 获取" + starName + "房间费:" + push; } else if (push < 0) { _text = _text + " 扣除" + starName + "房间费:" + push; } } } else if (showrebate == 1){ if (change + push > 0){ _text = "游戏赢取" + starName + ":" + (change + push); } else if (change + push < 0) { _text = "游戏扣除" + starName + ":" + (change + push); } } else if (showrebate == 2){ var _showrebate_setting = youle_agent.app.youle_platform.config.method.get_paravalue("shieldShowRebate", o_player.o_agent.agentid); if (!_showrebate_setting){ if(push){ _text = "扣除房间费:" + push + starName; } } } msg.data.text = _text; break; case 1: msg.data.text = "购买" + starName + ":" + change; break; case 2: msg.data.text = starName + "充值:" + change; break; case 3: break; case 4: // msg.data.text = "扣除发送系统消息费用:" + change + starName; msg.data.text=""; break; case 5: msg.data.text = "扣除比赛报名费用:" + push + starName; break; } if (o_roomserver.server == o_player.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); } } else if (_game_info.conmode && _game_info.fromid){ var msg = {}; msg.app = youle_agent.app.appname; msg.route = youle_agent.routename; msg.rpc = "update_bean"; msg.conmode = _game_info.conmode; msg.fromid = _game_info.fromid; msg.data = {}; msg.data.bean = parseInt(newbean); switch(type){ case 0: //游戏输赢豆豆 var _text = ""; if (!showrebate){ if (change > 0){ _text = "游戏赢取" + starName + ":" + change; } else if (change < 0) { _text = "游戏扣除" + starName + ":" + change; } var _showrebate_setting = youle_agent.app.youle_platform.config.method.get_paravalue("shieldShowRebate", o_player.o_agent.agentid); if(!_showrebate_setting){ if (push > 0){ _text = _text + " 获取" + starName + "房间费:" + push; } else if (push < 0) { _text = _text + " 扣除" + starName + "房间费:" + push; } } } else if (showrebate == 1){ if (change + push > 0){ _text = "游戏赢取" + starName + ":" + (change + push); } else if (change + push < 0) { _text = "游戏扣除" + starName + ":" + (change + push); } } else if (showrebate == 2){ var _showrebate_setting = youle_agent.app.youle_platform.config.method.get_paravalue("shieldShowRebate", o_player.o_agent.agentid); if (!_showrebate_setting){ if(push){ _text = "扣除房间费:" + push + starName; } } } msg.data.text = _text; break; case 1: msg.data.text = "购买" + starName + ":" + change; break; case 2: msg.data.text = starName + "充值:" + change; break; case 3: msg.data.text = "领取" + starName +"奖励:" + change; break; } youle_agent.app.SendPack(msg); } } } }, //打开释放玩家的定时器 open_free_timer: function(o_player){ var do_freeplayer = function(){ o_player.freetimer = null; o_player.o_agent.players[o_player.playerid - 100001] = null; } if (!o_player.advanced){ //4小时后释放玩家 o_player.freetimer = min_ontimeout(do_freeplayer, 7 * 24 * 60 * 60 * 1000); } }, //关闭释放玩家的定时器 close_free_timer: function(o_player){ if (o_player.freetimer){ min_closetime(o_player.freetimer); o_player.freetimer = null; } } }