악마왕 망토 만들기 소스
프리서버 오픈소스 리니지 악마왕 망토 만들기 소스
package l1j.server.server;
import java.util.Calendar;
import java.util.Locale;
import java.text.SimpleDateFormat;
import l1j.server.server.model.L1Teleport;
import l1j.server.server.model.L1World;
import l1j.server.server.model.Instance.L1PcInstance;
import l1j.server.server.serverpackets.S_SystemMessage;
public class DevilController extends Thread {
private static DevilController _instance;
private boolean _DevilStart;
public boolean getDevilStart() {
return _DevilStart;
}
public void setDevilStart(boolean Devil) {
_DevilStart = Devil;
}
private static long sTime = 0;
private String NowTime = "";
//시간 간격
private static final int LOOP = 6;
private static final SimpleDateFormat s = new SimpleDateFormat("HH", Locale.KOREA);
private static final SimpleDateFormat ss = new SimpleDateFormat("MM-dd HH:mm", Locale.KOREA);
public static DevilController getInstance() {
if(_instance == null) {
_instance = new DevilController();
}
return _instance;
}
@Override
public void run() {
try {
while (true) {
Thread.sleep(1000);
/** 오픈 **/
if(!isOpen())
continue;
if(L1World.getInstance().getAllPlayers().size() <= 0)
continue;
/** 오픈 메세지 **/
L1World.getInstance().broadcastServerMessage("\\fW 서버의 악마왕 영토가 열렸습니다!");
/** 악마왕영토 시작**/
setDevilStart(true);
/** 실행 1시간 시작**/
Thread.sleep(3800000L); //3800000L 1시간 10분정도
/** 1시간 후 자동 텔레포트**/
TelePort();
Thread.sleep(5000L);
TelePort2();
/** 종료 **/
End();
}
} catch(Exception e){
e.printStackTrace();
}
}
/**
*오픈 시각을 가져온다
*
*@return (Strind) 오픈 시각(MM-dd HH:mm)
*/
public String OpenTime() {
Calendar c = Calendar.getInstance();
c.setTimeInMillis(sTime);
return ss.format(c.getTime());
}
/**
*영토가 열려있는지 확인
*
*@return (boolean) 열려있다면 true 닫혀있다면 false
*/
private boolean isOpen() {
NowTime = getTime();
if((Integer.parseInt(NowTime) % LOOP) == 0) return true;
return false;
}
/**
*실제 현재시각을 가져온다
*
*@return (String) 현재 시각(HH:mm)
*/
private String getTime() {
return s.format(Calendar.getInstance().getTime());
}
/**아덴마을로 팅기게**/
private void TelePort() {
for(L1PcInstance c : L1World.getInstance().getAllPlayers()) {
switch(c.getMap().getId()) {
case 5167:
c.stopHpRegenerationByDoll();
c.stopMpRegenerationByDoll();
L1Teleport.teleport(c, 33970, 33246, (short) 4, 4, true);
c.sendPackets(new S_SystemMessage("서버의 악마왕 영토가 닫혔습니다."));
break;
default:
break;
}
}
}
/**아덴마을로 팅기게**/
private void TelePort2() {
for(L1PcInstance c : L1World.getInstance().getAllPlayers()) {
switch(c.getMap().getId()) {
case 5167:
c.stopHpRegenerationByDoll();
c.stopMpRegenerationByDoll();
L1Teleport.teleport(c, 33970, 33246, (short) 4, 4, true);
c.sendPackets(new S_SystemMessage("서버의 악마왕 영토가 닫혔습니다."));
break;
default:
break;
}
}
}
/** 종료 **/
private void End() {
L1World.getInstance().broadcastServerMessage("\\fW악마왕의 영토가 사라졌습니다. 5시간뒤에 다시 열립니다.");
setDevilStart(false);
}
-----------------------------------------------------------
자료 통으로 올리려구하다가 어차피 컨트롤러자바은 올렸으니 다른부분을 말씀드립니다.
GameServer.java
import l1j.server.server.DevilController; //임포트 추가
// 악마왕 영토 타임 콘트롤러 //홈 타운 검색후 아래내용 추가
DevilController.getInstance().start();
C_NPCAction.java
import l1j.server.server.DevilController; //임포트 추가
// }else if(((L1NpcInstance) obj). //검색후 아래내용 추가
}else if(((L1NpcInstance) obj).getNpcTemplate().get_npcId() == 12345) { //이곳에 나비켓에 새로만든 엔피씨번호 적기
if(s.equalsIgnoreCase("b")) {
htmlid = "";
if(DevilController.getInstance().getDevilStart() == true) {
Random random = new Random();
int i13 = 32723 + random.nextInt(4);
int k19 = 32800 + random.nextInt(4);
L1Teleport.teleport(pc, i13, k19, (short)5167, 6, true);
pc.sendPackets(new S_SystemMessage("\\fY영토가 열린시각으로부터 1시간동안 입장가능합니다."));
return;
}else{
pc.sendPackets(new S_SystemMessage("\\fY악마왕의 영토가 아직 열리지 않았습니다."));
return;
}
} //여기까지 적당한곳에 추가.
npcaction 테이블
12345(엔피씨번호임) kingdevsum16 kingdevsum16
나비켓에 엔피씨를 새로 만드세요. 입장시켜줄 엔피씨.
그리고 5167 맵안에 몹들을 풀어넣어주면 됩니다.
출처 린프리

찰떡01 님의 최근 댓글
ㄳ 2023 06.17 ㄱㅅ 2020 12.19 클라 공유 부탁드립니다. 2020 12.19 ㄱㅅ 2020 11.26 ㄱㅅ 2020 11.05