[펌]만렙제한
charsettings.properties
#레벨 제한 (GM포함 / 50미만 지원안함 / 안쓸거라면 반드시 99로 설정)
RestrictionLevel = 99
Config.java
public static int RESTRICTION_LEVEL;
// charsettings.properties
try {
Properties charSettings = new Properties();
InputStream is = new FileInputStream(new File(
CHAR_SETTINGS_CONFIG_FILE));
charSettings.load(is);
is.close();
RESTRICTION_LEVEL = Integer.parseInt(charSettings.getProperty("RestrictionLevel", "99"));
} else if (pName.equalsIgnoreCase("Lv99Exp")) {
LV99_EXP = Integer.parseInt(pValue);
} else if (pName.equalsIgnoreCase("RestrictionLevel")) {
RESTRICTION_LEVEL = Integer.parseInt(pValue);
ExpTable.java
// public static final int MAX_LEVEL = 99; //주석
public static final int MAX_LEVEL = Config.RESTRICTION_LEVEL;
/*
이렇게 해주면 렙업해도 경험치바는 100%까지 오르나 실제 렙업은 적용안됨.
이럴일은 없겠지만 만약의 경우인데 컨피그파일이 임포트가 안되있다면
public final class ExpTable { 이부분에서
1.파이널 부분 삭제 2.컨피그 임포트 3.컴파일 4.파이널 부분 다시 원래대로 5.컴파일
하면 컨피그가 임포트된 상태로 컴파일될거에요.
이제 본섭처럼 99.9999%를 만들기 위한 소스를 추가해볼까요?
*/
public static int FullExp(int exp) { //아무곳에나 추가
if (Config.RESTRICTION_LEVEL == 50) {
exp = 0x579ead6 - 50;
} else if (Config.RESTRICTION_LEVEL == 51) {
exp = 0x7a03a1a - 50;
} else if (Config.RESTRICTION_LEVEL == 52) {
exp = 0x9c6895e - 50;
} else if (Config.RESTRICTION_LEVEL == 53) {
exp = 0xbecd8a2 - 50;
} else if (Config.RESTRICTION_LEVEL == 54) {
exp = 0xe1327e6 - 50;
} else if (Config.RESTRICTION_LEVEL == 55) {
exp = 0x1039772a - 50;
} else if (Config.RESTRICTION_LEVEL == 56) {
exp = 0x125fc66e - 50;
} else if (Config.RESTRICTION_LEVEL == 57) {
exp = 0x148615b2 - 50;
} else if (Config.RESTRICTION_LEVEL == 58) {
exp = 0x16ac64f6 - 50;
} else if (Config.RESTRICTION_LEVEL == 59) {
exp = 0x18d2b43a - 50;
} else if (Config.RESTRICTION_LEVEL == 60) {
exp = 0x1af9037e - 50;
} else if (Config.RESTRICTION_LEVEL == 61) {
exp = 0x1d1f52c2 - 50;
} else if (Config.RESTRICTION_LEVEL == 62) {
exp = 0x1f45a206 - 50;
} else if (Config.RESTRICTION_LEVEL == 63) {
exp = 0x216bf14a - 50;
} else if (Config.RESTRICTION_LEVEL == 64) {
exp = 0x2392408e - 50;
} else if (Config.RESTRICTION_LEVEL == 65) {
exp = 0x25b88fd2 - 50;
} else if (Config.RESTRICTION_LEVEL == 66) {
exp = 0x27dedf16 - 50;
} else if (Config.RESTRICTION_LEVEL == 67) {
exp = 0x2a052e5a - 50;
} else if (Config.RESTRICTION_LEVEL == 68) {
exp = 0x2c2b7d9e - 50;
} else if (Config.RESTRICTION_LEVEL == 69) {
exp = 0x2e51cce2 - 50;
} else if (Config.RESTRICTION_LEVEL == 70) {
exp = 0x30781c26 - 50;
} else if (Config.RESTRICTION_LEVEL == 71) {
exp = 0x329e6b6a - 50;
} else if (Config.RESTRICTION_LEVEL == 72) {
exp = 0x34c4baae - 50;
} else if (Config.RESTRICTION_LEVEL == 73) {
exp = 0x36eb09f2 - 50;
} else if (Config.RESTRICTION_LEVEL == 74) {
exp = 0x39115936 - 50;
} else if (Config.RESTRICTION_LEVEL == 75) {
exp = 0x3b37a87a - 50;
} else if (Config.RESTRICTION_LEVEL == 76) {
exp = 0x3d5df7be - 50;
} else if (Config.RESTRICTION_LEVEL == 77) {
exp = 0x3f844702 - 50;
} else if (Config.RESTRICTION_LEVEL == 78) {
exp = 0x41aa9646 - 50;
} else if (Config.RESTRICTION_LEVEL == 79) {
exp = 0x43d0e58a - 50;
} else if (Config.RESTRICTION_LEVEL == 80) {
exp = 0x45f734ce - 50;
} else if (Config.RESTRICTION_LEVEL == 81) {
exp = 0x481d8412 - 50;
} else if (Config.RESTRICTION_LEVEL == 82) {
exp = 0x4a43d356 - 50;
} else if (Config.RESTRICTION_LEVEL == 83) {
exp = 0x4c6a229a - 50;
} else if (Config.RESTRICTION_LEVEL == 84) {
exp = 0x4e9071de - 50;
} else if (Config.RESTRICTION_LEVEL == 85) {
exp = 0x50b6c122 - 50;
} else if (Config.RESTRICTION_LEVEL == 86) {
exp = 0x52dd1066 - 50;
} else if (Config.RESTRICTION_LEVEL == 87) {
exp = 0x55035faa - 50;
} else if (Config.RESTRICTION_LEVEL == 88) {
exp = 0x5729aeee - 50;
} else if (Config.RESTRICTION_LEVEL == 89) {
exp = 0x594ffe32 - 50;
} else if (Config.RESTRICTION_LEVEL == 90) {
exp = 0x5b764d76 - 50;
} else if (Config.RESTRICTION_LEVEL == 91) {
exp = 0x5d9c9cba - 50;
} else if (Config.RESTRICTION_LEVEL == 92) {
exp = 0x5fc2ebfe - 50;
} else if (Config.RESTRICTION_LEVEL == 93) {
exp = 0x61e93b42 - 50;
} else if (Config.RESTRICTION_LEVEL == 94) {
exp = 0x640f8a86 - 50;
} else if (Config.RESTRICTION_LEVEL == 95) {
exp = 0x6635d9ca - 50;
} else if (Config.RESTRICTION_LEVEL == 96) {
exp = 0x685c290e - 50;
} else if (Config.RESTRICTION_LEVEL == 97) {
exp = 0x6a827852 - 50;
} else if (Config.RESTRICTION_LEVEL == 98) {
exp = 0x6ca8c796 - 50;
} else if (Config.RESTRICTION_LEVEL == 99) {
exp = 0x6ecf16da - 50;
}
return exp;
}
이젠 이 소스를 제대로 적용시킴과 동시에 약간의 안정화 작업을 해야겠죠.
L1PcInstance.java
public void onChangeExp() {
int level = ExpTable.getLevelByExp(getExp());
int char_level = getLevel();
int gap = level - char_level;
if (gap == 0) {
if (getExp() < ExpTable.FullExp(getExp())) { //만렙이고 경험치가 풀이라면 렙업을 하지 않기 때문에
sendPackets(new S_Exp(this)); // 경험치 패킷을 보낼 필요가 없음.
// sendPackets(new S_OwnCharStatus(this)); //만약 요부분에 이게 있다면 삭제.
return; //그러므로 너의 경험치는 최대치가 아닐거야 라는 조건문을 추가.
}
}
public void CheckChangeExp() {
int level = ExpTable.getLevelByExp(getExp());
int char_level = CharacterTable.getInstance().PcLevelInDB(getId());
if(char_level == 0){ // 0이라면..에러겟지?
return; // 그럼 그냥 리턴
}
int gap = level - char_level;
if (gap == 0) {
if (getExp() < ExpTable.FullExp(getExp())) { //여기도 같은 이유로...
sendPackets(new S_Exp(this));
// sendPackets(new S_OwnCharStatus(this)); //여기도 요것이 있다면 삭제.
return;
}
}
public synchronized void addExp(int exp) {
_exp += exp;
if (getLevel() == Config.RESTRICTION_LEVEL) { //만렙이고 경험치가 최대치라면
if (_exp > ExpTable.FullExp(getExp())) { //99.9999까지만 적용되게
_exp = ExpTable.FullExp(getExp());
}
}
if (_exp > ExpTable.MAX_EXP) {
_exp = ExpTable.MAX_EXP;
}
}
옆동네 블랙님 펌

안약 님의 최근 댓글
천화님 두 명이서만 로봇켜고 놀려고 하는데 그래도 i5에 램8GB 정도로 사양 되어야 할까요? 2016 11.13