特定のマップに入るとタイマーをセットして特定のマップに飛ばす

Go down

特定のマップに入るとタイマーをセットして特定のマップに飛ばす

投稿 by 構築さん on 2014-05-31, 17:21

changeMapInternal関数に組み込んでありますので、changeMap関数にて移動したときに動作します

尚、チャンネル変更には対応しておりませんので、チャンネル変更できないマップ等でお使いください

Code:
id = タイマーを作動させるMapId
time = タイマーの時間
warpmap = タイマーが0になった時のワープするMapId

SQLとして読み込みます

Code:
CREATE TABLE `clockmap` (
`id` int(11) NOT NULL,
`time` int(11) NOT NULL default '0',
`warpmap` int(11) NOT NULL default '0',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=sjis;

MapleCharacter.java

Code:
getClient().getSession().write(warpPacket);

を検索

Code:
if (isClockMap(to.getId())) {
getClient().getSession().write(MaplePacketCreator.getClock(getClockTime(to.getId())));

TimerManager.getInstance().schedule(new Runnable() {

public void run() {
if (getMap().getId() == to.getId()) {
MapleMap target = getClient().getChannelServer().getMapFactory().getMap( getClickWarpMap(to.getId()) );
changeMap(target);
}
}
}, getClockTime(to.getId())*1000);
}

を下に追加

Code:
public int getClickWarpMap(int map) {
int warpmap = 0;
Connection con = DatabaseConnection.getConnection();
try {
PreparedStatement ps = con.prepareStatement("SELECT warpmap FROM clockmap WHERE id = ?");
ps.setInt(1, map);
ResultSet rs = ps.executeQuery();
if (rs.next()) {
warpmap = rs.getInt("warpmap");
}
return warpmap;
} catch (SQLException e) {
this.dropMessage("呼び出しに失敗しました。" + e);
}
return 910000000;
}

public int getClockTime(int mapd) {
int time = 0;
Connection con = DatabaseConnection.getConnection();
try {
PreparedStatement ps = con.prepareStatement("SELECT time FROM clockmap WHERE id = ?");
ps.setInt(1, mapd);
ResultSet rs = ps.executeQuery();
if (rs.next()) {
time = rs.getInt("time");
}
return time;
} catch (SQLException e) {
this.dropMessage("呼び出しに失敗しました。" + e);
}
return 0;
}

public boolean isClockMap(int mapd) {
int db = 0;
Connection con = DatabaseConnection.getConnection();
try {
PreparedStatement ps = con.prepareStatement("SELECT * FROM clockmap");
ResultSet rs = ps.executeQuery();
while (rs.next()) {
db = rs.getInt("id");
if (mapd == db)
return true;
}
return false;
} catch (SQLException e) {
this.dropMessage("呼び出しに失敗しました。" + e);
}
return false;
}
avatar
構築さん
Admin

Posts : 193
Join date : 2014/05/29

http://maplescience.forumjap.com

トップに戻る Go down

トップに戻る


 
Permissions in this forum:
返信投稿: 不可