📄 main.asc
字号:
var aIps=[];
application.onAppStart = function()
{
//共有三个共享对象:
//初始化房间列表对象
application.roomslist = SharedObject.get("roomslist", false);
//初始化大厅会员列表对象
application.r0users = SharedObject.get("r0users", false);
//初始化禁用会员列表对象
application.ipso = SharedObject.get("ipso",false);
var banneduser = new Object();
banneduser.ip = "1.1.1.1";
today_date = new Date();
banneduser.date = today_date.getTime()/1000;
banneduser.duration = 742;
application.ipso.setProperty(banneduser.ip,banneduser);
//初始化管理员、会员、房间ID服务器变量
application.roomId=0;
application.adminId=1;
application.usersId=1;
application.history="Application started\r\n";
//初始化大厅
var roomObj = new Object();
roomObj.name = "大厅";
roomObj.description = "欢迎来到聊天室!";
roomObj.password="";
roomObj.users = 0;
roomObj.id = "r"+application.roomId++;
//将大厅加入房间列表对象
application.roomslist.setProperty(roomObj.id, roomObj);
//now_date = new Date();
//r1_log='('+ now_date+')Log initialized. Application started.';
//初始化日志
//now_date = new Date();
//application.log = "<font color='#990000'>("+now_date+")Application Started, Lobby room created</font>";
}
//响应客户端连接,参数个数及顺序必须和客户端一致
//application.onConnect = function(newClient,name,cam,mic,genre,usertype,hidden)
application.onConnect = function(newClient, gender, username, dropInRoom, hidden, siteId)
{
var banned=false;
//检测IP是否被封锁
var names = application.ipso.getPropertyNames();
for (x in names){
var obj = application.ipso.getProperty(names[x]);
if (obj!=null){
//for (j in obj){
//trace(j+':'+obj[j])
//}
today_date = new Date();
now_time = today_date.getTime()/1000;
if (obj['ip']==newClient.ip && obj['date']+obj['duration']>now_time){
rmtime=Math.round((obj['date']+obj['duration']-now_time)/60)
var err = new Object();err.message = "抱歉,您被封锁了 "+obj['duration']/3600+" 小时. 您还要等 "+rmtime+" 分钟才能进入聊天室.";
application.rejectConnection(newClient, err)
banned=true;
}
}
}
if (banned)
{
return;
}
application.acceptConnection(newClient); //接受客户端连接
if (gender=="admin"){ //如果是管理员,则管理员ID加1
newClient.id=application.usersId++;
application.adminId++;
}else { //如果是普通会员,则会员ID加1,并登记IP地址
newClient.id=application.usersId++;
aIps[newClient.id]=newClient.ip;
}
//var roomHistory[];
//roomHistory[0]="4565";
newClient.call("recieveid", null,newClient.id);//,roomHistory);
newClient.room= dropInRoom;
newClient.username=username;
newClient.hidden = hidden;
//创建一个会员对象
var PeopleObj = new Object();
PeopleObj.ip = newClient.ip;
PeopleObj.username = username;
PeopleObj.siteid = siteId;
PeopleObj.cam = 0;
PeopleObj.mic = 0;
PeopleObj.gender = gender;
PeopleObj.hidden = hidden;
PeopleObj.id = newClient.id;
eval('application.'+newClient.room+'users.setProperty(newClient.id,PeopleObj)');
//从方面列表对象中获取房间对象
var roomObj= application.roomslist.getProperty(newClient.room);
roomObj.users++;
//在房间列表对象中,增加会员数1
application.roomslist.setProperty(newClient.room, roomObj);
if (newClient.hidden==false){
eval('application.'+newClient.room+'users.send("roomNotification","joinchat","'+newClient.username+'")');
}
///////////////////////////客服端事件处理开始////////////////////////////////////
//消息发送函数
//newClient.userMsg = function(room,message,color,bold,italic,type,fromid,nick,destination,dstnm) {
newClient.distributeTextMessage = function(userid, username, textmessage, color, destinationid, destinationname)
{
eval('application.'+newClient.room+'users.send("receiveMessage",userid,username,textmessage,color,destinationid,destinationname)');
}
newClient.buzzSelectedPerson = function(destinationid, destinationname)
{
eval('application.'+newClient.room+'users.send("buzzed",'+newClient.id+',"'+newClient.username+'",destinationid,destinationname)');
}
newClient.showCamera = function()
{
PeopleObj.cam = 1;
eval('application.'+newClient.room+'users.setProperty(newClient.id,PeopleObj)');
}
newClient.hideCamera = function()
{
PeopleObj.cam = 0;
eval('application.'+newClient.room+'users.setProperty(newClient.id,PeopleObj)');
}
newClient.showMicrophone = function()
{
PeopleObj.mic = 1;
eval('application.'+newClient.room+'users.setProperty(newClient.id,PeopleObj)');
}
newClient.hideMicrophone = function()
{
PeopleObj.mic = 0;
eval('application.'+newClient.room+'users.setProperty(newClient.id,PeopleObj)');
}
newClient.iAmNotLookingAt = function(destinationid, destinationname)
{
//isNotWatchingMe senderid, senderusn, receiverid, receiverusn
if (newClient.hidden==false){
eval('application.'+newClient.room+'users.send("isNotWatchingMe",'+newClient.id+',"'+newClient.username+'",destinationid,destinationname)');
}
}
newClient.iAmLookingAt = function(destinationid, destinationname)
{
//isWatchingMe senderid, senderusn, receiverid, receiverusn
if (newClient.hidden==false){
eval('application.'+newClient.room+'users.send("isWatchingMe",'+newClient.id+',"'+newClient.username+'",destinationid,destinationname)');
}
}
newClient.goToRoom = function(roomid)
{
if (newClient.hidden==false){
var roomObj= application.roomslist.getProperty(roomid);
roomObj.users++;
application.roomslist.setProperty(roomid, roomObj);
eval('application.'+roomid+'users.setProperty(PeopleObj.id,PeopleObj)');
eval('application.'+roomid+'users.send("roomNotification","joinroom","'+newClient.username+'","'+roomObj.name+'")');
roomObj= application.roomslist.getProperty(newClient.room);
roomObj.users--;
application.roomslist.setProperty(newClient.room, roomObj);
eval('application.'+newClient.room+'users.setProperty(PeopleObj.id, null)');
eval('application.'+newClient.room+'users.send("roomNotification","quitroom","'+newClient.username+'","'+roomObj.name+'")');
}
newClient.room=roomid;
}
newClient.createRoom = function(name,description,password) {
var roomObj = new Object();
roomObj.name = name;
roomObj.description = description;
roomObj.password=password;
roomObj.users = 0;
roomObj.id = "r"+application.roomId++;
application.roomslist.setProperty(roomObj.id, roomObj);
eval('application.'+roomObj.id+'users = SharedObject.get("'+roomObj.id+'users", false)');
}
newClient.deleteRoom = function(roomid)
{
//先将该房间的会员移到大厅
//获取大厅房间对象
//var roomObj = application.roomslist.getProperty("r0");
//eval("var names = application."+roomid+"users.getPropertyNames()");
//for (x in names)
//{
//eval("var obj = application."+roomid+"users.getProperty(names[x])");
//if (obj!=null){
//trace("移动会员至大厅,会员ID:"+obj["id"])
//将当前房间的用户移入大厅
//application.r0users.setProperty(obj["id"],obj);
//eval('application.'+roomid+'users.send("roomNotification","joinroom",newClient.name)')
//将大厅的会员数加1
//roomObj.users++;
//application.roomslist.setProperty("r0",roomObj);
//以上代码有问题:被移动到大厅的会员不会更新好友列表,以下代码将会员踢出聊天室
//但有错误,看起来又是对的,郁闷
//for (i=0; i <application.clients.length ; i++){
//if(application.clients[i].id==obj["id"]{
//application.disconnect(application.clients[i])
//}//end if
//}//end for
application.roomslist.setProperty(roomid, null);
eval('application.'+roomid+'users.clear()');
}
newClient.kickThisUser = function(destinationid,roomid)
{
for (i=0; i <application.clients.length ; i++){
//trace(application.clients[i])
if(application.clients[i].id==destinationid && application.clients[i].gender!="admin")
{
destinationname=application.clients[i].username;
application.disconnect(application.clients[i]);
eval('application.'+roomid+'users.send("roomNotification","quitchat",destinationname);')
}
}
}
newClient.banThisUser =function(destinationid,roomid,duration) {
for (i=0; i < application.clients.length; i++){
if(application.clients[i].id==destinationid && application.clients[i].gender!="admin")
{
ip = application.clients[i].ip;
var banneduser = new Object();
banneduser['ip'] = ip;
today_date = new Date();
banneduser['date'] = today_date.getTime()/1000;//1970年1月1日午夜以来的秒数
banneduser['duration'] = duration;//单位为秒
application.ipso.setProperty(banneduser['ip'],banneduser);
destinationname=application.clients[i].username;
application.disconnect(application.clients[i]);
eval('application.'+roomid+'users.send("roomNotification","quitchat",destinationname);')
}
}
}
///////////////////////////客服端事件处理结束////////////////////////////////////
}
application.onDisconnect = function(client)
{
//写入日志
//now_date = new Date();
//eval(client.room+'_log+="<br>('+now_date+')'+client.name+' left the room."');
//trace('Disconnection in progress...')
//删除会员对象(更新会员列表)
//trace(client.name+":"+client.hidden)
if(client.hidden==false){
//eval("application."+client.room+"users.send('joinMsg','disconected',client.username)")
//更新房间数据 (更新房间列表)
var roomObj= application.roomslist.getProperty(client.room);
roomObj.users--;
application.roomslist.setProperty(client.room, roomObj);
eval('application.'+client.room+'users.send("roomNotification","quitchat","'+client.username+'")');
}
eval("application."+client.room+"users.setProperty(client.id, null)");
aIps[client.id]='null';
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -