📄 refresh_all_player.java
字号:
package zsw_mmorpg.server;
import zsw_mmorpg.server.DBControl;
import zsw_mmorpg.server.controller.ShenzhouController;
import zsw_mmorpg.common.Player;
import java.util.Hashtable;
import java.util.Iterator;
import java.nio.channels.SocketChannel;
/**
* Created by IntelliJ IDEA.
* User: cu
* Date: 2005-11-21
* Time: 11:46:41
* 循环保存所有玩家数据
*/
/**
* 定时刷新在线的玩家列表,
* 然后做踢不在线玩家,
* 或者定事保存所有玩家信息等
* */
public class refresh_all_player extends Thread {
Hashtable players;
ShenzhouController SzController;
public refresh_all_player(Hashtable player,ShenzhouController SzC) {
players = player;
SzController = SzC;
}
public void run() {
boolean is = true;
while (is) {
try {
Thread.sleep(2000); //1 minute
} catch (InterruptedException e) {
e.printStackTrace(); //To change body of catch statement use File | Settings | File Templates.
}
T_not_connect_player();
// System.out.println("all_p_save:这里保存所有在线玩家数据");
}
}
/**保存所有玩家的信息*/
/* public void All_p_save() {
// String return_s;
// return_s =
DBControl.update_all(players.values());
// if (return_s.equals("failed"))
// zsw_out.out("保存玩家信息进数据库,出现错误!");
// else
// zsw_out.out("保存玩家信息成功!");
} */
/**踢掉非正常退出的玩家*/
public void T_not_connect_player() {
SocketChannel P_channel;
StringBuffer ss = new StringBuffer();
if (!players.isEmpty()) {
Iterator i = players.values().iterator();
while (i.hasNext()) {
Player p = (Player) i.next();
P_channel = p.getChannel();
if (!P_channel.isConnected()) {
ss.append(p.getPlayerId());
ss.append(" ");
}
}
String tokens[] = ShenzhouController.tokenizeString(ss.toString());
for (int iii =0;iii < ShenzhouController.token_num ;iii++) {
players.remove(tokens[iii]);
GameServer.playersByPlayerId.remove(tokens[iii]);
System.out.println("kick :"+tokens[iii]);
}
Iterator ii = players.values().iterator();
while (ii.hasNext()) {
Player p2 = (Player) ii.next();
// System.out.println("onlines :"+p2.getPlayerId());
}
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -