427 lines
14 KiB
JavaScript
427 lines
14 KiB
JavaScript
///////////////////////////////////////////////////
|
||
///////// 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;
|
||
msg.data={};
|
||
msg.data.fromOther = 0;
|
||
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);
|
||
msg.data.type = type;
|
||
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;
|
||
//需要语音提示的房主抽成金币到账
|
||
case 6:
|
||
//msg.data.text = "扣除比赛报名费用:" + push + starName;
|
||
break;
|
||
case 7:
|
||
if(change > 0){
|
||
msg.data.text = "获赠" + change + starName;
|
||
}else{
|
||
msg.data.text = "送出" + Math.abs(change) + 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);
|
||
msg.data.type=type;
|
||
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;
|
||
case 7:
|
||
if(change > 0){
|
||
msg.data.text = "获赠" + change + starName;
|
||
}else{
|
||
msg.data.text = "送出" + Math.abs(change) + starName;
|
||
}
|
||
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;
|
||
}
|
||
}
|
||
}
|