공성시간 자동 돌리기
하시길....
어떤분이 질문하셔서 단순하게 짜본거니...테스트해보시길;; 테스트안해봤음-ㅁ-
공성시작을 오전10시라고 가정한다.
// 선언부선언 에 이거 선언해주셔야함
//import java.util.Calendar;
private int _currentTime; //서버 오픈하고 지난 시간
private int _CastleWartime; // 공성시작시간
이 소스부가... 아마 게임서버셋팅.java 이던가 할텐데..
생성부분에 getCastleWarTime() ; 을 호출시켜 공성시간을산출시켜놓아야한다.
private void runCastleWar(){
//공성 시작처리
}
public void getCastleWarTime(){
//현재시간산출
Calendar today = Calendar.getInstance();
int hi24 = today.get(Calendar.HOUR);
int mi = today.get(Calendar.MINUTE);
int ss = today.get(Calendar.SECOND);
//아래공식말고 현재시간을 초단위로 구하는 함수도있다.. 편한걸 쓰시길
hi24 *= (60 * (60 * 1000));
mi *= (60 * 1000);
ss *= 1000;
int currentTime = hi24 + mi + ss;
int castleWartime = 3960000;// 10시 * (60 * (60 * 1000))
if(currentTime > castleWartime){// 공성시간 지났을경우
//공성시작시간 = 현재게임시간 + ((현실 공성시작시간 - 현실 시간)+24시간);
_CastleWartime = GameStartTime + ((castleWartime - currentTime)+ 86400000);
}else{
//공성시작시간 = 현재게임시간 + (현실 공성시작시간 - 현실 시간);
_CastleWartime = GameStartTime + (castleWartime - currentTime);
}
}
public void run(){ // 1분에 리니지시간 5분 식 증가하도록 코딩됨.
try{
아이템 = 0;
while(true){
GameStartTime += 300;
broadcastToPlayers(GameStartTime);
_currentTime += 60000;
sleep(60000);
++아이템;
if(아이템 == 5){
broadcastToPlayers("+ 리니지월드의 아이템이 삭제되었습니다. +");
L1World.getInstance().아이템삭제();
아이템 = 0;
}
if(_CastleWartime <= _currentTime){
runCastleWar(); //공성시작
getCastleWarTime(); //다음공성시간 시간 산출작업
}
}
}catch (InterruptedException e1){
save();
}
}
-도의님-

김닉넴 님의 최근 댓글
클라는 있나요? 2023 04.29 클라 있나요? 2023 03.23 감사합니다 2016 06.06 ㄳ합니다 2016 06.05 ㄳ합니다 2016 06.05