리니지 분류
SP팩기반sp7final 1.63 서버창에 기능넣기 Guimain.java 수정하기[옆동네 펌]
컨텐츠 정보
- 18 조회
- 0 추천
- 0 비추천
-
목록
본문
서버창의 기능 넣는겁니다.
기존 소스가 조금 통일되지 못한 관계로 규칙을 넣어 통일시켰습니다.
서버창의 맨위의 메뉴들은
menu_1_system //서버온오프
menu_2_system //이벤트 명령어 리로드
menu_3_system //실행
menu_4_system //도움말
맨위의 메뉴들의 스크롤 바는 _bar 만 붙였습니다
menu_1_system_bar //서버온오프
menu_2_system_bar //이벤트 명령어 리로드
menu_3_system_bar //실행
menu_4_system_bar //도움말
맨위의 메뉴들의 서브메뉴들은
menu_1_system_sub_1 //맨위첫메뉴의 첫번째 서브메뉴
menu_1_system_sub_2 //맨위첫메뉴의 두번째 서브메뉴
menu_1_system_sub_3
menu_2_system_sub_1 //맨위두번째메뉴의 첫번째 서브메뉴
menu_2_system_sub_2
menu_2_system_sub_3
서브메뉴에 하위메뉴가 또 있어 스크롤바가 필요하면
menu_2_system_sub_1_bar //맨위두번째메뉴의 첫번째 서브메뉴 바
menu_2_system_sub_2_bar
menu_2_system_sub_3_bar
서브메뉴의 하위메뉴는 sub대신 이름붙임
menu_2_system_sub_1_command_1 //올버프
menu_2_system_sub_1_command_2 //청소
menu_2_system_sub_1_command_3 //캐릭터 저장
menu_2_system_sub_2_event_1; // 변신 이벤트
menu_2_system_sub_2_event_2; // 자동버프 이벤트
menu_2_system_sub_2_event_3; // 환상 이벤트
menu_2_system_sub_1_reload_1 // lineage_conf 리로드
menu_2_system_sub_1_reload_2 //notice.txt 리로드
menu_2_system_sub_1_reload_3
===========================통째로 복사하시고 연동안되는부분만 주석처리하세요====================================
이미 주석처리된 부분은 나중에 연동시킬예정이라 넣어놨습니다.
lineage.gui.GuiMain.java
package lineage.gui;
import lineage.Main;
//import lineage.database.FishListDatabase;
import lineage.database.ItemBundleDatabase;
//import lineage.database.ItemChanceBundleDatabase;
import lineage.database.ItemDatabase;
import lineage.database.ItemSkillDatabase;
import lineage.database.MonsterBossSpawnlistDatabase;
import lineage.database.MonsterDatabase;
import lineage.database.MonsterDropDatabase;
import lineage.database.MonsterSkillDatabase;
import lineage.database.NpcDatabase;
import lineage.database.NpcShopDatabase;
import lineage.database.PolyDatabase;
import lineage.database.ServerNoticeDatabase;
import lineage.database.SpriteFrameDatabase;
import lineage.database.SummonListDatabase;
//import lineage.database.TeamBattleDatabase;
//import lineage.database.TimeDungeonDatabase;
import lineage.gui.composite.ConsoleComposite;
import lineage.gui.composite.ViewComposite;
import lineage.share.Lineage;
import lineage.util.Shutdown;
import lineage.util.Util;
import lineage.world.World;
import lineage.world.controller.CommandController;
import lineage.world.controller.EventController;
import lineage.world.controller.KingdomController;
import lineage.world.controller.NoticeController;
import lineage.world.object.instance.MonsterInstance;
import lineage.world.object.instance.PcInstance;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Menu;
import org.eclipse.swt.widgets.MenuItem;
import org.eclipse.swt.widgets.MessageBox;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.widgets.Tray;
import org.eclipse.swt.widgets.TrayItem;
import com.swtdesigner.SWTResourceManager;
//import all_night.Lineage_Balance;
//import all_night.Npc_promotion;
//import all_night.util.Monster_Drop_sql;
//import all_night.util.Monster_spawnlist_sql;
//import all_night.util.Spr_Action_sql;
public final class GuiMain {
// gui 컴포넌트들.
static public Display display;
static public Shell shell;
static private ViewComposite viewComposite;
static private ConsoleComposite consoleComposite;
static private MenuItem menu_1_system_sub_1; // 서버가동
static private MenuItem menu_1_system_sub_2; // 서버종료
static private MenuItem menu_1_system_sub_3; // 서버바로종료
static private MenuItem menu_2_system_sub_1; // 명령어
static private MenuItem menu_2_system_sub_2; // 이벤트
static private MenuItem menu_2_system_sub_3; // 리로드
static private MenuItem menu_2_system_sub_2_event_1; // 변신 이벤트
static private MenuItem menu_2_system_sub_2_event_2; // 자동버프 이벤트
static private MenuItem menu_2_system_sub_2_event_3; // 환상 이벤트
static private MenuItem menu_2_system_sub_2_event_4; // 크리스마스 이벤트
static private MenuItem menu_2_system_sub_2_event_5; // 할로윈 이벤트
static private MenuItem menu_2_system_sub_2_event_6; // 토템 이벤트
// 서버팩 버전
static public final String SERVER_VERSION = " Ver 1.0";
// 클라이언트 접속 최대치값.
static public int CLIENT_MAX = 300;
/**
* Open the window.
*
* @wbp.parser.entryPoint
*/
static public void open() {
display = Display.getDefault();
shell = new Shell();
shell.setSize(900, 600);
shell.setText(String.format("서버 %s", SERVER_VERSION));
shell.setImage(SWTResourceManager.getImage("images/icon.ico"));
GridLayout gl_shell = new GridLayout(2, false);
gl_shell.verticalSpacing = 0;
gl_shell.horizontalSpacing = 0;
gl_shell.marginHeight = 0;
gl_shell.marginWidth = 0;
shell.setLayout(gl_shell);
Menu menu = new Menu(shell, SWT.BAR);
shell.setMenuBar(menu);
//첫번째 메뉴 서버ON/OFF
MenuItem menu_1_system = new MenuItem(menu, SWT.CASCADE);
menu_1_system.setText("서버ON/OFF");
//첫번째 메뉴 바
Menu menu_1_system_bar = new Menu(menu_1_system);
menu_1_system.setMenu(menu_1_system_bar);
//첫번째 메뉴 서브메뉴1
menu_1_system_sub_1 = new MenuItem(menu_1_system_bar, SWT.NONE);
menu_1_system_sub_1.setText("서버 ON");
//첫번째 메뉴 서브메뉴2
menu_1_system_sub_2 = new MenuItem(menu_1_system_bar, SWT.NONE);
menu_1_system_sub_2.setText("서버 OFF");
menu_1_system_sub_2.setEnabled(false);
//첫번째 메뉴 바 줄
new MenuItem(menu_1_system_bar, SWT.SEPARATOR);
//첫번째 메뉴 서브메뉴3
menu_1_system_sub_3 = new MenuItem(menu_1_system_bar, SWT.NONE);
menu_1_system_sub_3.setText("서버 바로 종료");
menu_1_system_sub_3.setEnabled(false);
//첫번째 메뉴 바 줄
new MenuItem(menu_1_system_bar, SWT.SEPARATOR);
//첫번째 메뉴 서브메뉴4
MenuItem menu_1_system_sub_4 = new MenuItem(menu_1_system_bar, SWT.NONE);
menu_1_system_sub_4.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
final Tray tray = display.getSystemTray();
if (tray != null) {
// 현재 윈도우 감추기.
shell.setVisible(false);
// 트레이 활성화.
final TrayItem item = new TrayItem(tray, SWT.NONE);
item.setToolTipText(String.format("%s : %d", SERVER_VERSION, Lineage.server_version));
item.setImage(SWTResourceManager.getImage("images/icon.ico"));
// 이벤트 등록.
item.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
item.dispose();
shell.setVisible(true);
shell.setFocus();
}
});
}
}
});
menu_1_system_sub_4.setText("최소 창모드");
//두번째 메뉴 명령어|이벤트|리로드
MenuItem menu_2_system = new MenuItem(menu, SWT.CASCADE);
menu_2_system.setText("명령어|이벤트|리로드");
Menu menu_2_system_bar = new Menu(menu_2_system);
menu_2_system.setMenu(menu_2_system_bar);
menu_2_system_sub_1 = new MenuItem(menu_2_system_bar, SWT.CASCADE);
menu_2_system_sub_1.setEnabled(false);
menu_2_system_sub_1.setText("명령어");
Menu menu_2_system_sub_1_bar = new Menu(menu_2_system_sub_1);
menu_2_system_sub_1.setMenu(menu_2_system_sub_1_bar);
/** MenuItem menu_2_system_sub_1_command_1 = new MenuItem(menu_2_system_sub_1_bar, SWT.CHECK);
menu_2_system_sub_1_command_1.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
CommandController.serverOpenWait();
menu_2_system_sub_1_command_1.setSelection(true);
}
});
menu_2_system_sub_1_command_1.setText("서버 오픈대기");
MenuItem menu_2_system_sub_1_command_2 = new MenuItem(menu_2_system_sub_1_bar, SWT.NONE);
menu_2_system_sub_1_command_2.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
CommandController.serverOpen();
menu_2_system_sub_1_command_1.setSelection(false);
}
});
menu_2_system_sub_1_command_2.setText("서버 오픈");
*/
MenuItem menu_2_system_sub_1_command_3 = new MenuItem(menu_2_system_sub_1_bar, SWT.NONE);
menu_2_system_sub_1_command_3.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
CommandController.toBuffAll(null);
}
});
menu_2_system_sub_1_command_3.setText("올버프");
MenuItem menu_2_system_sub_1_command_4 = new MenuItem(menu_2_system_sub_1_bar, SWT.NONE);
menu_2_system_sub_1_command_4.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
CommandController.toWorldItemClear(null);
}
});
menu_2_system_sub_1_command_4.setText("월드맵 청소");
MenuItem menu_2_system_sub_1_command_5 = new MenuItem(menu_2_system_sub_1_bar, SWT.NONE);
menu_2_system_sub_1_command_5.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
for (PcInstance pc : World.getPcList())
pc.toCharacterSave();
lineage.share.System.println("캐릭터 정보 저장 완료");
}
});
menu_2_system_sub_1_command_5.setText("캐릭터 저장");
MenuItem menu_2_system_sub_1_command_6 = new MenuItem(menu_2_system_sub_1_bar, SWT.NONE);
menu_2_system_sub_1_command_6.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
CommandController.toBanAllRemove(null);
}
});
menu_2_system_sub_1_command_6.setText("전체 벤 해제");
/** MenuItem menu_2_system_sub_1_command_7 = new MenuItem(menu_2_system_sub_1_bar, SWT.NONE);
menu_2_system_sub_1_command_7.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
RobotController.reloadPcRobot(false);
}
});
menu_2_system_sub_1_command_7.setText("로봇 전체 사용");
MenuItem menu_2_system_sub_1_command_8 = new MenuItem(menu_2_system_sub_1_bar, SWT.NONE);
menu_2_system_sub_1_command_8.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
RobotController.reloadPcRobot(true);
}
});
menu_2_system_sub_1_command_8.setText("로봇 전체 사용 안함");
*/
/** MenuItem menu_2_system_sub_1_command_9 = new MenuItem(menu_2_system_sub_1_bar, SWT.NONE);
menu_2_system_sub_1_command_9.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
Spr_Action_sql.writeSql();
}
});
menu_2_system_sub_1_command_9.setText("spr_action.sql 생성");
*/
/** MenuItem menu_2_system_sub_1_command_10 = new MenuItem(menu_2_system_sub_1_bar, SWT.NONE);
menu_2_system_sub_1_command_10.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
Monster_Drop_sql.writeSql();
}
});
menu_2_system_sub_1_command_10.setText("monster_drop.sql 생성");
*/
/** MenuItem menu_2_system_sub_1_command_11 = new MenuItem(menu_2_system_sub_1_bar, SWT.NONE);
menu_2_system_sub_1_command_11.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
Monster_spawnlist_sql.writeSql();
}
});
menu_2_system_sub_1_command_11.setText("monster_spawnlist.sql 생성");
*/
/** MenuItem menu_2_system_sub_1_command_12 = new MenuItem(menu_2_system_sub_1_bar, SWT.NONE);
menu_2_system_sub_1_command_12.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
CommandController.setKingdomWar();
}
});
menu_2_system_sub_1_command_12.setText("공성전");
*/
menu_2_system_sub_2 = new MenuItem(menu_2_system_bar, SWT.CASCADE);
menu_2_system_sub_2.setEnabled(false);
menu_2_system_sub_2.setText("이벤트");
Menu menu_2_system_sub_2_bar = new Menu(menu_2_system_sub_2);
menu_2_system_sub_2.setMenu(menu_2_system_sub_2_bar);
menu_2_system_sub_2_event_1 = new MenuItem(menu_2_system_sub_2_bar, SWT.CHECK);
menu_2_system_sub_2_event_1.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
EventController.toPoly(menu_2_system_sub_2_event_1.getSelection());
}
});
menu_2_system_sub_2_event_1.setText("변신 이벤트");
menu_2_system_sub_2_event_2 = new MenuItem(menu_2_system_sub_2_bar, SWT.CHECK);
menu_2_system_sub_2_event_2.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
EventController.toBuff(menu_2_system_sub_2_event_2.getSelection());
}
});
menu_2_system_sub_2_event_2.setText("자동버프 이벤트");
menu_2_system_sub_2_event_1 = new MenuItem(menu_2_system_sub_2_bar, SWT.CHECK);
menu_2_system_sub_2_event_1.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
EventController.toIllusion(menu_2_system_sub_2_event_1.getSelection());
}
});
menu_2_system_sub_2_event_1.setText("환상 이벤트");
menu_2_system_sub_2_event_1 = new MenuItem(menu_2_system_sub_2_bar, SWT.CHECK);
menu_2_system_sub_2_event_1.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
EventController.toChristmas(menu_2_system_sub_2_event_1.getSelection());
}
});
menu_2_system_sub_2_event_1.setText("크리스마스 이벤트");
menu_2_system_sub_2_event_1 = new MenuItem(menu_2_system_sub_2_bar, SWT.CHECK);
menu_2_system_sub_2_event_1.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
EventController.toHalloween(menu_2_system_sub_2_event_1.getSelection());
}
});
menu_2_system_sub_2_event_1.setText("할로윈 이벤트");
menu_2_system_sub_2_event_1 = new MenuItem(menu_2_system_sub_2_bar, SWT.CHECK);
menu_2_system_sub_2_event_1.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
EventController.toTotem(menu_2_system_sub_2_event_1.getSelection());
}
});
menu_2_system_sub_2_event_1.setText("토템 이벤트");
/**
MenuItem menu_2_system_sub_2_event_7 = new MenuItem(menu_2_system_sub_2_bar, SWT.CHECK);
menu_2_system_sub_2_event_7.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
EventController.toRankPoly(menu_2_system_sub_2_event_7.getSelection());
}
});
menu_2_system_sub_2_event_7.setText("랭킹 변신 이벤트");
*/
/** MenuItem menu_2_system_sub_2_event_8 = new MenuItem(menu_2_system_sub_2_bar, SWT.NONE);
menu_2_system_sub_2_event_8.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
TimeDungeonDatabase.resetGiranDungeonTime();
}
});
menu_2_system_sub_2_event_8.setText("기란감옥 이용시간 초기화");
*/
/** MenuItem menu_2_system_sub_2_event_9 = new MenuItem(menu_2_system_sub_2_bar, SWT.NONE);
menu_2_system_sub_2_event_9.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
TimeDungeonDatabase.resetGiranDungeonScrollCount();
}
});
menu_2_system_sub_2_event_9.setText("기란감옥 초기화 주문서 사용횟수 초기화");
*/
menu_2_system_sub_3 = new MenuItem(menu_2_system_bar, SWT.CASCADE);
menu_2_system_sub_3.setEnabled(false);
menu_2_system_sub_3.setText("리로드");
Menu menu_2_system_sub_3_bar = new Menu(menu_2_system_sub_3);
menu_2_system_sub_3.setMenu(menu_2_system_sub_3_bar);
MenuItem menu_2_system_sub_3_reload_1 = new MenuItem(menu_2_system_sub_3_bar, SWT.NONE);
menu_2_system_sub_3_reload_1.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
Lineage.init();
}
});
menu_2_system_sub_3_reload_1.setText("lineage.conf 파일 리로드");
/**
MenuItem menu_2_system_sub_3_reload_2 = new MenuItem(menu_2_system_sub_3_bar, SWT.NONE);
menu_2_system_sub_3_reload_2.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
Lineage_Balance.init();
}
});
menu_2_system_sub_3_reload_2.setText("lineage_balance.conf 파일 리로드");
*/
MenuItem menu_2_system_sub_3_reload_3 = new MenuItem(menu_2_system_sub_3_bar, SWT.NONE);
menu_2_system_sub_3_reload_3.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
NoticeController.reload();
}
});
menu_2_system_sub_3_reload_3.setText("notice.txt 파일 리로드");
/** MenuItem menu_2_system_sub_3_reload_4 = new MenuItem(menu_2_system_sub_3_bar, SWT.NONE);
menu_2_system_sub_3_reload_4.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
FishListDatabase.reload();
}
});
menu_2_system_sub_3_reload_4.setText("fishing_item_list 테이블 리로드");
*/
MenuItem menu_2_system_sub_3_reload_5 = new MenuItem(menu_2_system_sub_3_bar, SWT.NONE);
menu_2_system_sub_3_reload_5.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
ItemDatabase.reload();
}
});
menu_2_system_sub_3_reload_5.setText("item 테이블 리로드");
MenuItem menu_2_system_sub_3_reload_6 = new MenuItem(menu_2_system_sub_3_bar, SWT.NONE);
menu_2_system_sub_3_reload_6.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
ItemBundleDatabase.reload();
}
});
menu_2_system_sub_3_reload_6.setText("item_bundle 테이블 리로드");
/**
MenuItem menu_2_system_sub_3_reload_7 = new MenuItem(menu_2_system_sub_3_bar, SWT.NONE);
menu_2_system_sub_3_reload_7.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
ItemChanceBundleDatabase.reload();
}
});
menu_2_system_sub_3_reload_7.setText("item_chance_bundle 테이블 리로드");
*/
MenuItem menu_2_system_sub_3_reload_8 = new MenuItem(menu_2_system_sub_3_bar, SWT.NONE);
menu_2_system_sub_3_reload_8.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
ItemSkillDatabase.reload();
}
});
menu_2_system_sub_3_reload_8.setText("item_skill 테이블 리로드");
MenuItem menu_2_system_sub_3_reload_9 = new MenuItem(menu_2_system_sub_3_bar, SWT.NONE);
menu_2_system_sub_3_reload_9.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
MonsterDatabase.reload();
}
});
menu_2_system_sub_3_reload_9.setText("monster 테이블 리로드");
MenuItem menu_2_system_sub_3_reload_10 = new MenuItem(menu_2_system_sub_3_bar, SWT.NONE);
menu_2_system_sub_3_reload_10.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
Lineage.init();
MonsterDropDatabase.reload();
for (MonsterInstance mon : World.getMonsterList())
mon.readDrop();
}
});
menu_2_system_sub_3_reload_10.setText("monster_drop 테이블 리로드");
MenuItem menu_2_system_sub_3_reload_11 = new MenuItem(menu_2_system_sub_3_bar, SWT.NONE);
menu_2_system_sub_3_reload_11.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
MonsterBossSpawnlistDatabase.reload();
}
});
menu_2_system_sub_3_reload_11.setText("monster_spawnlist_boss 테이블 리로드");
MenuItem menu_2_system_sub_3_reload_12 = new MenuItem(menu_2_system_sub_3_bar, SWT.NONE);
menu_2_system_sub_3_reload_12.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
MonsterBossSpawnlistDatabase.reload();
}
});
menu_2_system_sub_3_reload_12.setText("monster_spawnlist_boss 테이블 리로드");
MenuItem menu_2_system_sub_3_reload_13 = new MenuItem(menu_2_system_sub_3_bar, SWT.NONE);
menu_2_system_sub_3_reload_13.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
MonsterSkillDatabase.reload();
}
});
menu_2_system_sub_3_reload_13.setText("monster_skill 테이블 리로드");
MenuItem menu_2_system_sub_3_reload_14 = new MenuItem(menu_2_system_sub_3_bar, SWT.NONE);
menu_2_system_sub_3_reload_14.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
NpcDatabase.reload();
}
});
menu_2_system_sub_3_reload_14.setText("npc 테이블 리로드");
MenuItem menu_2_system_sub_3_reload_15 = new MenuItem(menu_2_system_sub_3_bar, SWT.NONE);
menu_2_system_sub_3_reload_15.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
NpcShopDatabase.reload();
}
});
menu_2_system_sub_3_reload_15.setText("npc_shop 테이블 리로드");
MenuItem menu_2_system_sub_3_reload_16 = new MenuItem(menu_2_system_sub_3_bar, SWT.NONE);
menu_2_system_sub_3_reload_16.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
PolyDatabase.reload();
}
});
menu_2_system_sub_3_reload_16.setText("poly 테이블 리로드");
MenuItem menu_2_system_sub_3_reload_17 = new MenuItem(menu_2_system_sub_3_bar, SWT.NONE);
menu_2_system_sub_3_reload_17.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
CommandController.serverMagicReload();
}
});
menu_2_system_sub_3_reload_17.setText("skill 테이블 리로드");
MenuItem menu_2_system_sub_3_reload_18 = new MenuItem(menu_2_system_sub_3_bar, SWT.NONE);
menu_2_system_sub_3_reload_18.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
SpriteFrameDatabase.reload();
}
});
menu_2_system_sub_3_reload_18.setText("spr_frame 테이블 리로드");
MenuItem menu_2_system_sub_3_reload_19 = new MenuItem(menu_2_system_sub_3_bar, SWT.NONE);
menu_2_system_sub_3_reload_19.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
SummonListDatabase.reload();
}
});
menu_2_system_sub_3_reload_19.setText("summon_list 테이블 리로드");
MenuItem menu_2_system_sub_3_reload_20 = new MenuItem(menu_2_system_sub_3_bar, SWT.NONE);
menu_2_system_sub_3_reload_20.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
ServerNoticeDatabase.reload();
}
});
menu_2_system_sub_3_reload_20.setText("server_notice 테이블 리로드");
/** MenuItem menu_2_system_sub_3_reload_21 = new MenuItem(menu_2_system_sub_3_bar, SWT.NONE);
menu_2_system_sub_3_reload_21.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
CommandController.serverReload();
}
});
menu_2_system_sub_3_reload_21.setText("server_reload 테이블 리로드");
*/
/** MenuItem menu_2_system_sub_3_reload_22 = new MenuItem(menu_2_system_sub_3_bar, SWT.NONE);
menu_2_system_sub_3_reload_22.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
TeamBattleDatabase.reload();
}
});
menu_2_system_sub_3_reload_22.setText("team_battle_item 테이블 리로드");
*/
/** MenuItem menu_2_system_sub_3_reload_23 = new MenuItem(menu_2_system_sub_3_bar, SWT.NONE);
menu_2_system_sub_3_reload_23.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
BackgroundDatabase.reload();
}
});
menu_2_system_sub_3_reload_23.setText("background_spawnlist 테이블 리로드");
*/
/**
MenuItem menu_2_system_sub_3_reload_24 = new MenuItem(menu_2_system_sub_3_bar, SWT.NONE);
menu_2_system_sub_3_reload_24.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
KingdomController.reload();
}
});
menu_2_system_sub_3_reload_24.setText("kingdom 테이블 리로드");
*/
MenuItem menu_3_system = new MenuItem(menu, SWT.CASCADE);
menu_3_system.setText("실행");
Menu menu_3_system_bar = new Menu(menu_3_system);
menu_3_system.setMenu(menu_3_system_bar);
MenuItem menu_3_system_sub_1 = new MenuItem(menu_3_system_bar, SWT.NONE);
menu_3_system_sub_1.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
try {
Runtime.getRuntime().exec("C:/WINDOWS/system32/notepad.exe " + System.getProperty("user.dir") + "/lineage.conf");
} catch (Exception e2) {
}
}
});
menu_3_system_sub_1.setText("lineage.conf 실행");
MenuItem menu_3_system_sub_2 = new MenuItem(menu_3_system_bar, SWT.NONE);
menu_3_system_sub_2.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
try {
Runtime.getRuntime().exec("C:/WINDOWS/system32/notepad.exe " + System.getProperty("user.dir") + "/mysql.conf");
} catch (Exception e2) {
}
}
});
menu_3_system_sub_2.setText("mysql.conf 실행");
MenuItem menu_3_system_sub_3 = new MenuItem(menu_3_system_bar, SWT.NONE);
menu_3_system_sub_3.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
try {
Runtime.getRuntime().exec("C:/WINDOWS/system32/notepad.exe " + System.getProperty("user.dir") + "/socket.conf");
} catch (Exception e2) {
}
}
});
menu_3_system_sub_3.setText("socket.conf 실행");
MenuItem menu_3_system_sub_4 = new MenuItem(menu_3_system_bar, SWT.NONE);
menu_3_system_sub_4.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
try {
Runtime.getRuntime().exec("C:/WINDOWS/system32/notepad.exe " + System.getProperty("user.dir") + "/web.conf");
} catch (Exception e2) {
}
}
});
menu_3_system_sub_4.setText("web.conf 실행");
MenuItem menu_3_system_sub_5 = new MenuItem(menu_3_system_bar, SWT.NONE);
menu_3_system_sub_5.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
try {
Runtime.getRuntime().exec("C:/WINDOWS/system32/notepad.exe " + System.getProperty("user.dir") + "/log.conf");
} catch (Exception e2) {
}
}
});
menu_3_system_sub_5.setText("log.conf 실행");
MenuItem menu_3_system_sub_6 = new MenuItem(menu_3_system_bar, SWT.NONE);
menu_3_system_sub_6.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
try {
Runtime.getRuntime().exec("C:/WINDOWS/system32/notepad.exe " + System.getProperty("user.dir") + "/notice.txt");
} catch (Exception e2) {
}
}
});
menu_3_system_sub_6.setText("notice.txt 실행");
MenuItem menu_3_system_sub_7 = new MenuItem(menu_3_system_bar, SWT.NONE);
menu_3_system_sub_7.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
try {
Runtime.getRuntime().exec("C:/Program Files (x86)/PremiumSoft/Navicat Premium 8.2/navicat.exe");
} catch (Exception e2) {
}
try {
Runtime.getRuntime().exec("C:/Program Files (x86)/PremiumSoft/Navicat Premium 8.0/navicat.exe");
} catch (Exception e2) {
}
}
});
menu_3_system_sub_7.setText("나비켓 실행");
MenuItem menu_3_system_sub_8 = new MenuItem(menu_3_system_bar, SWT.NONE);
menu_3_system_sub_8.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
try {
Runtime.getRuntime().exec("C:/Program Files (x86)/Google/Chrome/Application/chrome.exe");
} catch (Exception e2) {
}
}
});
menu_3_system_sub_8.setText("구글 크롬 실행");
MenuItem menu_4_system = new MenuItem(menu, SWT.CASCADE);
menu_4_system.setText("도움말");
Menu menu_4_system_bar = new Menu(menu_4_system);
menu_4_system.setMenu(menu_4_system_bar);
MenuItem menu_4_system_sub_1 = new MenuItem(menu_4_system_bar, SWT.NONE);
menu_4_system_sub_1.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
try {
Runtime.getRuntime()
.exec("C:/Program Files (x86)/Google/Chrome/Application/chrome.exe " + "https://gamedori.xyz/");
} catch (Exception e2) {
}
}
});
menu_4_system_sub_1.setText("사이트: https://gamedori.xyz/");
MenuItem menu_4_system_sub_2 = new MenuItem(menu_4_system_bar, SWT.NONE);
menu_4_system_sub_2.setText("이메일: psjump@psjump.com");
MenuItem menu_4_system_sub_3 = new MenuItem(menu_4_system_bar, SWT.NONE);
menu_4_system_sub_3.setText("네이트온: psjump@psjump.com");
viewComposite = new ViewComposite(shell, SWT.NONE);
viewComposite.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true, 2, 1));
consoleComposite = new ConsoleComposite(shell, SWT.NONE);
GridData gd_consoleComposite = new GridData(SWT.FILL, SWT.FILL, true, false, 2, 1);
gd_consoleComposite.heightHint = 125;
consoleComposite.setLayoutData(gd_consoleComposite);
// 이벤트 등록.
menu_1_system_sub_1.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
// 서버 정보 로드.
Main.init();
// 맵뷰어 랜더링 시작.
viewComposite.getScreenRenderComposite().start();
// 정보 변경.
menu_1_system_sub_1.setEnabled(false);
menu_1_system_sub_2.setEnabled(true);
menu_1_system_sub_3.setEnabled(true);
}
});
menu_1_system_sub_2.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
new Thread(Shutdown.getInstance()).start();
}
});
menu_1_system_sub_3.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
Main.close();
}
});
// 매니저를 윈도우화면 가운데 좌표로 변경.
shell.setBounds((display.getBounds().width / 2) - (shell.getBounds().width / 2),
(display.getBounds().height / 2) - (shell.getBounds().height / 2), shell.getBounds().width,
shell.getBounds().height);
shell.open();
shell.layout();
while (!shell.isDisposed()) {
try {
if (!display.readAndDispatch())
display.sleep();
} catch (Exception e) {
}
}
Main.close();
}
static public ViewComposite getViewComposite() {
return viewComposite;
}
static public ConsoleComposite getConsoleComposite() {
return consoleComposite;
}
static public void toTimer(long time) {
// 뷰어 처리.
viewComposite.toTimer(time);
// 초기화 안된 상태.
if (!menu_2_system_sub_2.isEnabled()) {
// 메뉴 활성화.
menu_2_system_sub_2.setEnabled(true);
menu_2_system_sub_1.setEnabled(true);
menu_2_system_sub_3.setEnabled(true);
// Lineage 설정 정보 갱신
menu_2_system_sub_2_event_1.setSelection(Lineage.event_poly);
menu_2_system_sub_2_event_2.setSelection(Lineage.event_buff);
menu_2_system_sub_2_event_3.setSelection(Lineage.event_illusion);
menu_2_system_sub_2_event_4.setSelection(Lineage.event_christmas);
menu_2_system_sub_2_event_5.setSelection(Lineage.event_halloween);
menu_2_system_sub_2_event_6.setSelection(Lineage.event_lyra);
}
}
/**
* 경고창 띄울때 사용.
*
* @param msg
*/
static public void toMessageBox(final String msg) {
toMessageBox(SERVER_VERSION, msg);
}
static public void toMessageBox(final String title, final String msg) {
MessageBox messageBox = new MessageBox(shell, SWT.ICON_WARNING);
messageBox.setText(String.format("경고 :: %s", title));
messageBox.setMessage(msg);
messageBox.open();
}
}
기존 소스가 조금 통일되지 못한 관계로 규칙을 넣어 통일시켰습니다.
서버창의 맨위의 메뉴들은
menu_1_system //서버온오프
menu_2_system //이벤트 명령어 리로드
menu_3_system //실행
menu_4_system //도움말
맨위의 메뉴들의 스크롤 바는 _bar 만 붙였습니다
menu_1_system_bar //서버온오프
menu_2_system_bar //이벤트 명령어 리로드
menu_3_system_bar //실행
menu_4_system_bar //도움말
맨위의 메뉴들의 서브메뉴들은
menu_1_system_sub_1 //맨위첫메뉴의 첫번째 서브메뉴
menu_1_system_sub_2 //맨위첫메뉴의 두번째 서브메뉴
menu_1_system_sub_3
menu_2_system_sub_1 //맨위두번째메뉴의 첫번째 서브메뉴
menu_2_system_sub_2
menu_2_system_sub_3
서브메뉴에 하위메뉴가 또 있어 스크롤바가 필요하면
menu_2_system_sub_1_bar //맨위두번째메뉴의 첫번째 서브메뉴 바
menu_2_system_sub_2_bar
menu_2_system_sub_3_bar
서브메뉴의 하위메뉴는 sub대신 이름붙임
menu_2_system_sub_1_command_1 //올버프
menu_2_system_sub_1_command_2 //청소
menu_2_system_sub_1_command_3 //캐릭터 저장
menu_2_system_sub_2_event_1; // 변신 이벤트
menu_2_system_sub_2_event_2; // 자동버프 이벤트
menu_2_system_sub_2_event_3; // 환상 이벤트
menu_2_system_sub_1_reload_1 // lineage_conf 리로드
menu_2_system_sub_1_reload_2 //notice.txt 리로드
menu_2_system_sub_1_reload_3
===========================통째로 복사하시고 연동안되는부분만 주석처리하세요====================================
이미 주석처리된 부분은 나중에 연동시킬예정이라 넣어놨습니다.
lineage.gui.GuiMain.java
package lineage.gui;
import lineage.Main;
//import lineage.database.FishListDatabase;
import lineage.database.ItemBundleDatabase;
//import lineage.database.ItemChanceBundleDatabase;
import lineage.database.ItemDatabase;
import lineage.database.ItemSkillDatabase;
import lineage.database.MonsterBossSpawnlistDatabase;
import lineage.database.MonsterDatabase;
import lineage.database.MonsterDropDatabase;
import lineage.database.MonsterSkillDatabase;
import lineage.database.NpcDatabase;
import lineage.database.NpcShopDatabase;
import lineage.database.PolyDatabase;
import lineage.database.ServerNoticeDatabase;
import lineage.database.SpriteFrameDatabase;
import lineage.database.SummonListDatabase;
//import lineage.database.TeamBattleDatabase;
//import lineage.database.TimeDungeonDatabase;
import lineage.gui.composite.ConsoleComposite;
import lineage.gui.composite.ViewComposite;
import lineage.share.Lineage;
import lineage.util.Shutdown;
import lineage.util.Util;
import lineage.world.World;
import lineage.world.controller.CommandController;
import lineage.world.controller.EventController;
import lineage.world.controller.KingdomController;
import lineage.world.controller.NoticeController;
import lineage.world.object.instance.MonsterInstance;
import lineage.world.object.instance.PcInstance;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Menu;
import org.eclipse.swt.widgets.MenuItem;
import org.eclipse.swt.widgets.MessageBox;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.widgets.Tray;
import org.eclipse.swt.widgets.TrayItem;
import com.swtdesigner.SWTResourceManager;
//import all_night.Lineage_Balance;
//import all_night.Npc_promotion;
//import all_night.util.Monster_Drop_sql;
//import all_night.util.Monster_spawnlist_sql;
//import all_night.util.Spr_Action_sql;
public final class GuiMain {
// gui 컴포넌트들.
static public Display display;
static public Shell shell;
static private ViewComposite viewComposite;
static private ConsoleComposite consoleComposite;
static private MenuItem menu_1_system_sub_1; // 서버가동
static private MenuItem menu_1_system_sub_2; // 서버종료
static private MenuItem menu_1_system_sub_3; // 서버바로종료
static private MenuItem menu_2_system_sub_1; // 명령어
static private MenuItem menu_2_system_sub_2; // 이벤트
static private MenuItem menu_2_system_sub_3; // 리로드
static private MenuItem menu_2_system_sub_2_event_1; // 변신 이벤트
static private MenuItem menu_2_system_sub_2_event_2; // 자동버프 이벤트
static private MenuItem menu_2_system_sub_2_event_3; // 환상 이벤트
static private MenuItem menu_2_system_sub_2_event_4; // 크리스마스 이벤트
static private MenuItem menu_2_system_sub_2_event_5; // 할로윈 이벤트
static private MenuItem menu_2_system_sub_2_event_6; // 토템 이벤트
// 서버팩 버전
static public final String SERVER_VERSION = " Ver 1.0";
// 클라이언트 접속 최대치값.
static public int CLIENT_MAX = 300;
/**
* Open the window.
*
* @wbp.parser.entryPoint
*/
static public void open() {
display = Display.getDefault();
shell = new Shell();
shell.setSize(900, 600);
shell.setText(String.format("서버 %s", SERVER_VERSION));
shell.setImage(SWTResourceManager.getImage("images/icon.ico"));
GridLayout gl_shell = new GridLayout(2, false);
gl_shell.verticalSpacing = 0;
gl_shell.horizontalSpacing = 0;
gl_shell.marginHeight = 0;
gl_shell.marginWidth = 0;
shell.setLayout(gl_shell);
Menu menu = new Menu(shell, SWT.BAR);
shell.setMenuBar(menu);
//첫번째 메뉴 서버ON/OFF
MenuItem menu_1_system = new MenuItem(menu, SWT.CASCADE);
menu_1_system.setText("서버ON/OFF");
//첫번째 메뉴 바
Menu menu_1_system_bar = new Menu(menu_1_system);
menu_1_system.setMenu(menu_1_system_bar);
//첫번째 메뉴 서브메뉴1
menu_1_system_sub_1 = new MenuItem(menu_1_system_bar, SWT.NONE);
menu_1_system_sub_1.setText("서버 ON");
//첫번째 메뉴 서브메뉴2
menu_1_system_sub_2 = new MenuItem(menu_1_system_bar, SWT.NONE);
menu_1_system_sub_2.setText("서버 OFF");
menu_1_system_sub_2.setEnabled(false);
//첫번째 메뉴 바 줄
new MenuItem(menu_1_system_bar, SWT.SEPARATOR);
//첫번째 메뉴 서브메뉴3
menu_1_system_sub_3 = new MenuItem(menu_1_system_bar, SWT.NONE);
menu_1_system_sub_3.setText("서버 바로 종료");
menu_1_system_sub_3.setEnabled(false);
//첫번째 메뉴 바 줄
new MenuItem(menu_1_system_bar, SWT.SEPARATOR);
//첫번째 메뉴 서브메뉴4
MenuItem menu_1_system_sub_4 = new MenuItem(menu_1_system_bar, SWT.NONE);
menu_1_system_sub_4.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
final Tray tray = display.getSystemTray();
if (tray != null) {
// 현재 윈도우 감추기.
shell.setVisible(false);
// 트레이 활성화.
final TrayItem item = new TrayItem(tray, SWT.NONE);
item.setToolTipText(String.format("%s : %d", SERVER_VERSION, Lineage.server_version));
item.setImage(SWTResourceManager.getImage("images/icon.ico"));
// 이벤트 등록.
item.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
item.dispose();
shell.setVisible(true);
shell.setFocus();
}
});
}
}
});
menu_1_system_sub_4.setText("최소 창모드");
//두번째 메뉴 명령어|이벤트|리로드
MenuItem menu_2_system = new MenuItem(menu, SWT.CASCADE);
menu_2_system.setText("명령어|이벤트|리로드");
Menu menu_2_system_bar = new Menu(menu_2_system);
menu_2_system.setMenu(menu_2_system_bar);
menu_2_system_sub_1 = new MenuItem(menu_2_system_bar, SWT.CASCADE);
menu_2_system_sub_1.setEnabled(false);
menu_2_system_sub_1.setText("명령어");
Menu menu_2_system_sub_1_bar = new Menu(menu_2_system_sub_1);
menu_2_system_sub_1.setMenu(menu_2_system_sub_1_bar);
/** MenuItem menu_2_system_sub_1_command_1 = new MenuItem(menu_2_system_sub_1_bar, SWT.CHECK);
menu_2_system_sub_1_command_1.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
CommandController.serverOpenWait();
menu_2_system_sub_1_command_1.setSelection(true);
}
});
menu_2_system_sub_1_command_1.setText("서버 오픈대기");
MenuItem menu_2_system_sub_1_command_2 = new MenuItem(menu_2_system_sub_1_bar, SWT.NONE);
menu_2_system_sub_1_command_2.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
CommandController.serverOpen();
menu_2_system_sub_1_command_1.setSelection(false);
}
});
menu_2_system_sub_1_command_2.setText("서버 오픈");
*/
MenuItem menu_2_system_sub_1_command_3 = new MenuItem(menu_2_system_sub_1_bar, SWT.NONE);
menu_2_system_sub_1_command_3.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
CommandController.toBuffAll(null);
}
});
menu_2_system_sub_1_command_3.setText("올버프");
MenuItem menu_2_system_sub_1_command_4 = new MenuItem(menu_2_system_sub_1_bar, SWT.NONE);
menu_2_system_sub_1_command_4.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
CommandController.toWorldItemClear(null);
}
});
menu_2_system_sub_1_command_4.setText("월드맵 청소");
MenuItem menu_2_system_sub_1_command_5 = new MenuItem(menu_2_system_sub_1_bar, SWT.NONE);
menu_2_system_sub_1_command_5.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
for (PcInstance pc : World.getPcList())
pc.toCharacterSave();
lineage.share.System.println("캐릭터 정보 저장 완료");
}
});
menu_2_system_sub_1_command_5.setText("캐릭터 저장");
MenuItem menu_2_system_sub_1_command_6 = new MenuItem(menu_2_system_sub_1_bar, SWT.NONE);
menu_2_system_sub_1_command_6.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
CommandController.toBanAllRemove(null);
}
});
menu_2_system_sub_1_command_6.setText("전체 벤 해제");
/** MenuItem menu_2_system_sub_1_command_7 = new MenuItem(menu_2_system_sub_1_bar, SWT.NONE);
menu_2_system_sub_1_command_7.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
RobotController.reloadPcRobot(false);
}
});
menu_2_system_sub_1_command_7.setText("로봇 전체 사용");
MenuItem menu_2_system_sub_1_command_8 = new MenuItem(menu_2_system_sub_1_bar, SWT.NONE);
menu_2_system_sub_1_command_8.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
RobotController.reloadPcRobot(true);
}
});
menu_2_system_sub_1_command_8.setText("로봇 전체 사용 안함");
*/
/** MenuItem menu_2_system_sub_1_command_9 = new MenuItem(menu_2_system_sub_1_bar, SWT.NONE);
menu_2_system_sub_1_command_9.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
Spr_Action_sql.writeSql();
}
});
menu_2_system_sub_1_command_9.setText("spr_action.sql 생성");
*/
/** MenuItem menu_2_system_sub_1_command_10 = new MenuItem(menu_2_system_sub_1_bar, SWT.NONE);
menu_2_system_sub_1_command_10.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
Monster_Drop_sql.writeSql();
}
});
menu_2_system_sub_1_command_10.setText("monster_drop.sql 생성");
*/
/** MenuItem menu_2_system_sub_1_command_11 = new MenuItem(menu_2_system_sub_1_bar, SWT.NONE);
menu_2_system_sub_1_command_11.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
Monster_spawnlist_sql.writeSql();
}
});
menu_2_system_sub_1_command_11.setText("monster_spawnlist.sql 생성");
*/
/** MenuItem menu_2_system_sub_1_command_12 = new MenuItem(menu_2_system_sub_1_bar, SWT.NONE);
menu_2_system_sub_1_command_12.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
CommandController.setKingdomWar();
}
});
menu_2_system_sub_1_command_12.setText("공성전");
*/
menu_2_system_sub_2 = new MenuItem(menu_2_system_bar, SWT.CASCADE);
menu_2_system_sub_2.setEnabled(false);
menu_2_system_sub_2.setText("이벤트");
Menu menu_2_system_sub_2_bar = new Menu(menu_2_system_sub_2);
menu_2_system_sub_2.setMenu(menu_2_system_sub_2_bar);
menu_2_system_sub_2_event_1 = new MenuItem(menu_2_system_sub_2_bar, SWT.CHECK);
menu_2_system_sub_2_event_1.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
EventController.toPoly(menu_2_system_sub_2_event_1.getSelection());
}
});
menu_2_system_sub_2_event_1.setText("변신 이벤트");
menu_2_system_sub_2_event_2 = new MenuItem(menu_2_system_sub_2_bar, SWT.CHECK);
menu_2_system_sub_2_event_2.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
EventController.toBuff(menu_2_system_sub_2_event_2.getSelection());
}
});
menu_2_system_sub_2_event_2.setText("자동버프 이벤트");
menu_2_system_sub_2_event_1 = new MenuItem(menu_2_system_sub_2_bar, SWT.CHECK);
menu_2_system_sub_2_event_1.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
EventController.toIllusion(menu_2_system_sub_2_event_1.getSelection());
}
});
menu_2_system_sub_2_event_1.setText("환상 이벤트");
menu_2_system_sub_2_event_1 = new MenuItem(menu_2_system_sub_2_bar, SWT.CHECK);
menu_2_system_sub_2_event_1.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
EventController.toChristmas(menu_2_system_sub_2_event_1.getSelection());
}
});
menu_2_system_sub_2_event_1.setText("크리스마스 이벤트");
menu_2_system_sub_2_event_1 = new MenuItem(menu_2_system_sub_2_bar, SWT.CHECK);
menu_2_system_sub_2_event_1.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
EventController.toHalloween(menu_2_system_sub_2_event_1.getSelection());
}
});
menu_2_system_sub_2_event_1.setText("할로윈 이벤트");
menu_2_system_sub_2_event_1 = new MenuItem(menu_2_system_sub_2_bar, SWT.CHECK);
menu_2_system_sub_2_event_1.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
EventController.toTotem(menu_2_system_sub_2_event_1.getSelection());
}
});
menu_2_system_sub_2_event_1.setText("토템 이벤트");
/**
MenuItem menu_2_system_sub_2_event_7 = new MenuItem(menu_2_system_sub_2_bar, SWT.CHECK);
menu_2_system_sub_2_event_7.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
EventController.toRankPoly(menu_2_system_sub_2_event_7.getSelection());
}
});
menu_2_system_sub_2_event_7.setText("랭킹 변신 이벤트");
*/
/** MenuItem menu_2_system_sub_2_event_8 = new MenuItem(menu_2_system_sub_2_bar, SWT.NONE);
menu_2_system_sub_2_event_8.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
TimeDungeonDatabase.resetGiranDungeonTime();
}
});
menu_2_system_sub_2_event_8.setText("기란감옥 이용시간 초기화");
*/
/** MenuItem menu_2_system_sub_2_event_9 = new MenuItem(menu_2_system_sub_2_bar, SWT.NONE);
menu_2_system_sub_2_event_9.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
TimeDungeonDatabase.resetGiranDungeonScrollCount();
}
});
menu_2_system_sub_2_event_9.setText("기란감옥 초기화 주문서 사용횟수 초기화");
*/
menu_2_system_sub_3 = new MenuItem(menu_2_system_bar, SWT.CASCADE);
menu_2_system_sub_3.setEnabled(false);
menu_2_system_sub_3.setText("리로드");
Menu menu_2_system_sub_3_bar = new Menu(menu_2_system_sub_3);
menu_2_system_sub_3.setMenu(menu_2_system_sub_3_bar);
MenuItem menu_2_system_sub_3_reload_1 = new MenuItem(menu_2_system_sub_3_bar, SWT.NONE);
menu_2_system_sub_3_reload_1.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
Lineage.init();
}
});
menu_2_system_sub_3_reload_1.setText("lineage.conf 파일 리로드");
/**
MenuItem menu_2_system_sub_3_reload_2 = new MenuItem(menu_2_system_sub_3_bar, SWT.NONE);
menu_2_system_sub_3_reload_2.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
Lineage_Balance.init();
}
});
menu_2_system_sub_3_reload_2.setText("lineage_balance.conf 파일 리로드");
*/
MenuItem menu_2_system_sub_3_reload_3 = new MenuItem(menu_2_system_sub_3_bar, SWT.NONE);
menu_2_system_sub_3_reload_3.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
NoticeController.reload();
}
});
menu_2_system_sub_3_reload_3.setText("notice.txt 파일 리로드");
/** MenuItem menu_2_system_sub_3_reload_4 = new MenuItem(menu_2_system_sub_3_bar, SWT.NONE);
menu_2_system_sub_3_reload_4.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
FishListDatabase.reload();
}
});
menu_2_system_sub_3_reload_4.setText("fishing_item_list 테이블 리로드");
*/
MenuItem menu_2_system_sub_3_reload_5 = new MenuItem(menu_2_system_sub_3_bar, SWT.NONE);
menu_2_system_sub_3_reload_5.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
ItemDatabase.reload();
}
});
menu_2_system_sub_3_reload_5.setText("item 테이블 리로드");
MenuItem menu_2_system_sub_3_reload_6 = new MenuItem(menu_2_system_sub_3_bar, SWT.NONE);
menu_2_system_sub_3_reload_6.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
ItemBundleDatabase.reload();
}
});
menu_2_system_sub_3_reload_6.setText("item_bundle 테이블 리로드");
/**
MenuItem menu_2_system_sub_3_reload_7 = new MenuItem(menu_2_system_sub_3_bar, SWT.NONE);
menu_2_system_sub_3_reload_7.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
ItemChanceBundleDatabase.reload();
}
});
menu_2_system_sub_3_reload_7.setText("item_chance_bundle 테이블 리로드");
*/
MenuItem menu_2_system_sub_3_reload_8 = new MenuItem(menu_2_system_sub_3_bar, SWT.NONE);
menu_2_system_sub_3_reload_8.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
ItemSkillDatabase.reload();
}
});
menu_2_system_sub_3_reload_8.setText("item_skill 테이블 리로드");
MenuItem menu_2_system_sub_3_reload_9 = new MenuItem(menu_2_system_sub_3_bar, SWT.NONE);
menu_2_system_sub_3_reload_9.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
MonsterDatabase.reload();
}
});
menu_2_system_sub_3_reload_9.setText("monster 테이블 리로드");
MenuItem menu_2_system_sub_3_reload_10 = new MenuItem(menu_2_system_sub_3_bar, SWT.NONE);
menu_2_system_sub_3_reload_10.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
Lineage.init();
MonsterDropDatabase.reload();
for (MonsterInstance mon : World.getMonsterList())
mon.readDrop();
}
});
menu_2_system_sub_3_reload_10.setText("monster_drop 테이블 리로드");
MenuItem menu_2_system_sub_3_reload_11 = new MenuItem(menu_2_system_sub_3_bar, SWT.NONE);
menu_2_system_sub_3_reload_11.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
MonsterBossSpawnlistDatabase.reload();
}
});
menu_2_system_sub_3_reload_11.setText("monster_spawnlist_boss 테이블 리로드");
MenuItem menu_2_system_sub_3_reload_12 = new MenuItem(menu_2_system_sub_3_bar, SWT.NONE);
menu_2_system_sub_3_reload_12.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
MonsterBossSpawnlistDatabase.reload();
}
});
menu_2_system_sub_3_reload_12.setText("monster_spawnlist_boss 테이블 리로드");
MenuItem menu_2_system_sub_3_reload_13 = new MenuItem(menu_2_system_sub_3_bar, SWT.NONE);
menu_2_system_sub_3_reload_13.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
MonsterSkillDatabase.reload();
}
});
menu_2_system_sub_3_reload_13.setText("monster_skill 테이블 리로드");
MenuItem menu_2_system_sub_3_reload_14 = new MenuItem(menu_2_system_sub_3_bar, SWT.NONE);
menu_2_system_sub_3_reload_14.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
NpcDatabase.reload();
}
});
menu_2_system_sub_3_reload_14.setText("npc 테이블 리로드");
MenuItem menu_2_system_sub_3_reload_15 = new MenuItem(menu_2_system_sub_3_bar, SWT.NONE);
menu_2_system_sub_3_reload_15.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
NpcShopDatabase.reload();
}
});
menu_2_system_sub_3_reload_15.setText("npc_shop 테이블 리로드");
MenuItem menu_2_system_sub_3_reload_16 = new MenuItem(menu_2_system_sub_3_bar, SWT.NONE);
menu_2_system_sub_3_reload_16.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
PolyDatabase.reload();
}
});
menu_2_system_sub_3_reload_16.setText("poly 테이블 리로드");
MenuItem menu_2_system_sub_3_reload_17 = new MenuItem(menu_2_system_sub_3_bar, SWT.NONE);
menu_2_system_sub_3_reload_17.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
CommandController.serverMagicReload();
}
});
menu_2_system_sub_3_reload_17.setText("skill 테이블 리로드");
MenuItem menu_2_system_sub_3_reload_18 = new MenuItem(menu_2_system_sub_3_bar, SWT.NONE);
menu_2_system_sub_3_reload_18.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
SpriteFrameDatabase.reload();
}
});
menu_2_system_sub_3_reload_18.setText("spr_frame 테이블 리로드");
MenuItem menu_2_system_sub_3_reload_19 = new MenuItem(menu_2_system_sub_3_bar, SWT.NONE);
menu_2_system_sub_3_reload_19.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
SummonListDatabase.reload();
}
});
menu_2_system_sub_3_reload_19.setText("summon_list 테이블 리로드");
MenuItem menu_2_system_sub_3_reload_20 = new MenuItem(menu_2_system_sub_3_bar, SWT.NONE);
menu_2_system_sub_3_reload_20.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
ServerNoticeDatabase.reload();
}
});
menu_2_system_sub_3_reload_20.setText("server_notice 테이블 리로드");
/** MenuItem menu_2_system_sub_3_reload_21 = new MenuItem(menu_2_system_sub_3_bar, SWT.NONE);
menu_2_system_sub_3_reload_21.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
CommandController.serverReload();
}
});
menu_2_system_sub_3_reload_21.setText("server_reload 테이블 리로드");
*/
/** MenuItem menu_2_system_sub_3_reload_22 = new MenuItem(menu_2_system_sub_3_bar, SWT.NONE);
menu_2_system_sub_3_reload_22.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
TeamBattleDatabase.reload();
}
});
menu_2_system_sub_3_reload_22.setText("team_battle_item 테이블 리로드");
*/
/** MenuItem menu_2_system_sub_3_reload_23 = new MenuItem(menu_2_system_sub_3_bar, SWT.NONE);
menu_2_system_sub_3_reload_23.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
BackgroundDatabase.reload();
}
});
menu_2_system_sub_3_reload_23.setText("background_spawnlist 테이블 리로드");
*/
/**
MenuItem menu_2_system_sub_3_reload_24 = new MenuItem(menu_2_system_sub_3_bar, SWT.NONE);
menu_2_system_sub_3_reload_24.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
KingdomController.reload();
}
});
menu_2_system_sub_3_reload_24.setText("kingdom 테이블 리로드");
*/
MenuItem menu_3_system = new MenuItem(menu, SWT.CASCADE);
menu_3_system.setText("실행");
Menu menu_3_system_bar = new Menu(menu_3_system);
menu_3_system.setMenu(menu_3_system_bar);
MenuItem menu_3_system_sub_1 = new MenuItem(menu_3_system_bar, SWT.NONE);
menu_3_system_sub_1.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
try {
Runtime.getRuntime().exec("C:/WINDOWS/system32/notepad.exe " + System.getProperty("user.dir") + "/lineage.conf");
} catch (Exception e2) {
}
}
});
menu_3_system_sub_1.setText("lineage.conf 실행");
MenuItem menu_3_system_sub_2 = new MenuItem(menu_3_system_bar, SWT.NONE);
menu_3_system_sub_2.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
try {
Runtime.getRuntime().exec("C:/WINDOWS/system32/notepad.exe " + System.getProperty("user.dir") + "/mysql.conf");
} catch (Exception e2) {
}
}
});
menu_3_system_sub_2.setText("mysql.conf 실행");
MenuItem menu_3_system_sub_3 = new MenuItem(menu_3_system_bar, SWT.NONE);
menu_3_system_sub_3.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
try {
Runtime.getRuntime().exec("C:/WINDOWS/system32/notepad.exe " + System.getProperty("user.dir") + "/socket.conf");
} catch (Exception e2) {
}
}
});
menu_3_system_sub_3.setText("socket.conf 실행");
MenuItem menu_3_system_sub_4 = new MenuItem(menu_3_system_bar, SWT.NONE);
menu_3_system_sub_4.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
try {
Runtime.getRuntime().exec("C:/WINDOWS/system32/notepad.exe " + System.getProperty("user.dir") + "/web.conf");
} catch (Exception e2) {
}
}
});
menu_3_system_sub_4.setText("web.conf 실행");
MenuItem menu_3_system_sub_5 = new MenuItem(menu_3_system_bar, SWT.NONE);
menu_3_system_sub_5.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
try {
Runtime.getRuntime().exec("C:/WINDOWS/system32/notepad.exe " + System.getProperty("user.dir") + "/log.conf");
} catch (Exception e2) {
}
}
});
menu_3_system_sub_5.setText("log.conf 실행");
MenuItem menu_3_system_sub_6 = new MenuItem(menu_3_system_bar, SWT.NONE);
menu_3_system_sub_6.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
try {
Runtime.getRuntime().exec("C:/WINDOWS/system32/notepad.exe " + System.getProperty("user.dir") + "/notice.txt");
} catch (Exception e2) {
}
}
});
menu_3_system_sub_6.setText("notice.txt 실행");
MenuItem menu_3_system_sub_7 = new MenuItem(menu_3_system_bar, SWT.NONE);
menu_3_system_sub_7.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
try {
Runtime.getRuntime().exec("C:/Program Files (x86)/PremiumSoft/Navicat Premium 8.2/navicat.exe");
} catch (Exception e2) {
}
try {
Runtime.getRuntime().exec("C:/Program Files (x86)/PremiumSoft/Navicat Premium 8.0/navicat.exe");
} catch (Exception e2) {
}
}
});
menu_3_system_sub_7.setText("나비켓 실행");
MenuItem menu_3_system_sub_8 = new MenuItem(menu_3_system_bar, SWT.NONE);
menu_3_system_sub_8.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
try {
Runtime.getRuntime().exec("C:/Program Files (x86)/Google/Chrome/Application/chrome.exe");
} catch (Exception e2) {
}
}
});
menu_3_system_sub_8.setText("구글 크롬 실행");
MenuItem menu_4_system = new MenuItem(menu, SWT.CASCADE);
menu_4_system.setText("도움말");
Menu menu_4_system_bar = new Menu(menu_4_system);
menu_4_system.setMenu(menu_4_system_bar);
MenuItem menu_4_system_sub_1 = new MenuItem(menu_4_system_bar, SWT.NONE);
menu_4_system_sub_1.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
try {
Runtime.getRuntime()
.exec("C:/Program Files (x86)/Google/Chrome/Application/chrome.exe " + "https://gamedori.xyz/");
} catch (Exception e2) {
}
}
});
menu_4_system_sub_1.setText("사이트: https://gamedori.xyz/");
MenuItem menu_4_system_sub_2 = new MenuItem(menu_4_system_bar, SWT.NONE);
menu_4_system_sub_2.setText("이메일: psjump@psjump.com");
MenuItem menu_4_system_sub_3 = new MenuItem(menu_4_system_bar, SWT.NONE);
menu_4_system_sub_3.setText("네이트온: psjump@psjump.com");
viewComposite = new ViewComposite(shell, SWT.NONE);
viewComposite.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true, 2, 1));
consoleComposite = new ConsoleComposite(shell, SWT.NONE);
GridData gd_consoleComposite = new GridData(SWT.FILL, SWT.FILL, true, false, 2, 1);
gd_consoleComposite.heightHint = 125;
consoleComposite.setLayoutData(gd_consoleComposite);
// 이벤트 등록.
menu_1_system_sub_1.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
// 서버 정보 로드.
Main.init();
// 맵뷰어 랜더링 시작.
viewComposite.getScreenRenderComposite().start();
// 정보 변경.
menu_1_system_sub_1.setEnabled(false);
menu_1_system_sub_2.setEnabled(true);
menu_1_system_sub_3.setEnabled(true);
}
});
menu_1_system_sub_2.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
new Thread(Shutdown.getInstance()).start();
}
});
menu_1_system_sub_3.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
Main.close();
}
});
// 매니저를 윈도우화면 가운데 좌표로 변경.
shell.setBounds((display.getBounds().width / 2) - (shell.getBounds().width / 2),
(display.getBounds().height / 2) - (shell.getBounds().height / 2), shell.getBounds().width,
shell.getBounds().height);
shell.open();
shell.layout();
while (!shell.isDisposed()) {
try {
if (!display.readAndDispatch())
display.sleep();
} catch (Exception e) {
}
}
Main.close();
}
static public ViewComposite getViewComposite() {
return viewComposite;
}
static public ConsoleComposite getConsoleComposite() {
return consoleComposite;
}
static public void toTimer(long time) {
// 뷰어 처리.
viewComposite.toTimer(time);
// 초기화 안된 상태.
if (!menu_2_system_sub_2.isEnabled()) {
// 메뉴 활성화.
menu_2_system_sub_2.setEnabled(true);
menu_2_system_sub_1.setEnabled(true);
menu_2_system_sub_3.setEnabled(true);
// Lineage 설정 정보 갱신
menu_2_system_sub_2_event_1.setSelection(Lineage.event_poly);
menu_2_system_sub_2_event_2.setSelection(Lineage.event_buff);
menu_2_system_sub_2_event_3.setSelection(Lineage.event_illusion);
menu_2_system_sub_2_event_4.setSelection(Lineage.event_christmas);
menu_2_system_sub_2_event_5.setSelection(Lineage.event_halloween);
menu_2_system_sub_2_event_6.setSelection(Lineage.event_lyra);
}
}
/**
* 경고창 띄울때 사용.
*
* @param msg
*/
static public void toMessageBox(final String msg) {
toMessageBox(SERVER_VERSION, msg);
}
static public void toMessageBox(final String title, final String msg) {
MessageBox messageBox = new MessageBox(shell, SWT.ICON_WARNING);
messageBox.setText(String.format("경고 :: %s", title));
messageBox.setMessage(msg);
messageBox.open();
}
}
관련자료
댓글 0
등록된 댓글이 없습니다.