USFM(www.maplestorylab.com)에 오신것을 환영합니다! 카페규칙에 어긋나는 게시글은 자동 삭제되며 관련 게시물 작성자는 제재될 수 있습니다. |
[Rain MS]
- 하이퍼 재접팅 해결방법 [모든하이퍼스킬]
에반 10차 전직하고 난뒤 하이퍼스킬 찍으시 재접팅 걸리는점도 해결됨
100~139 때 스킬마스터하면 재접팅걸리던점도 수정됨
먼저 Src\packet\creators << 이경로로 들어가 PacketProvider.java 이것을 열어줍니다 .
그런 다음 public static final void addSkillInfo 이것을 검색한뒤
public static final void addSkillInfo 이거의 전체 내용을
이렇게 바꿔줍니다 .
public static final void addSkillInfo(final WritingRain w, final RainPlayer chr) {
final Map<ISkill, SkillEntry> skills = chr.getSkills();
final Map<ISkill, SkillEntry> skillscopy = new LinkedHashMap<ISkill, SkillEntry>(skills);
for (Integer s : GameConstants.용사의의지()) {
skillscopy.remove(SkillFactory.getSkill(s));
}
for (Integer s : GameConstants.getHiddenSkill()) {
skillscopy.remove(SkillFactory.getSkill(s));
}
if(chr.getJob() == 112 || chr.getJob() == 122 || chr.getJob() == 132 || chr.getJob() == 212 || chr.getJob() == 222 || chr.getJob() == 232 || chr.getJob() == 2112 || chr.getJob() == 2217 || chr.getJob() == 2312 || chr.getJob() == 2412 || chr.getJob() == 5112 || chr.getJob() == 2712 || chr.getJob() == 6112 || chr.getJob() == 6512) {
skillscopy.remove(SkillFactory.getSkill((chr.getJob() * 10000 + 1052)));
skillscopy.remove(SkillFactory.getSkill((chr.getJob() * 10000 + 1053)));
skillscopy.remove(SkillFactory.getSkill((chr.getJob() * 10000 + 1054)));
skillscopy.remove(SkillFactory.getSkill((chr.getJob() * 10000 + 1055)));
skillscopy.remove(SkillFactory.getSkill((chr.getJob() * 10000 + 1056)));
skillscopy.remove(SkillFactory.getSkill((chr.getJob() * 10000 + 30)));
skillscopy.remove(SkillFactory.getSkill((chr.getJob() * 10000 + 31)));
skillscopy.remove(SkillFactory.getSkill((chr.getJob() * 10000 + 32)));
skillscopy.remove(SkillFactory.getSkill((chr.getJob() * 10000 + 33)));
skillscopy.remove(SkillFactory.getSkill((chr.getJob() * 10000 + 34)));
skillscopy.remove(SkillFactory.getSkill((chr.getJob() * 10000 + 35)));
skillscopy.remove(SkillFactory.getSkill((chr.getJob() * 10000 + 36)));
skillscopy.remove(SkillFactory.getSkill((chr.getJob() * 10000 + 37)));
skillscopy.remove(SkillFactory.getSkill((chr.getJob() * 10000 + 38)));
skillscopy.remove(SkillFactory.getSkill((chr.getJob() * 10000 + 39)));
skillscopy.remove(SkillFactory.getSkill((chr.getJob() * 10000 + 40)));
skillscopy.remove(SkillFactory.getSkill((chr.getJob() * 10000 + 41)));
skillscopy.remove(SkillFactory.getSkill((chr.getJob() * 10000 + 42)));
skillscopy.remove(SkillFactory.getSkill((chr.getJob() * 10000 + 43)));
skillscopy.remove(SkillFactory.getSkill((chr.getJob() * 10000 + 44)));
skillscopy.remove(SkillFactory.getSkill((chr.getJob() * 10000 + 45)));
skillscopy.remove(SkillFactory.getSkill((chr.getJob() * 10000 + 46)));
skillscopy.remove(SkillFactory.getSkill((chr.getJob() * 10000 + 47)));
skillscopy.remove(SkillFactory.getSkill((chr.getJob() * 10000 + 49)));
skillscopy.remove(SkillFactory.getSkill((chr.getJob() * 10000 + 48)));
skillscopy.remove(SkillFactory.getSkill((chr.getJob() * 10000 + 50)));
skillscopy.remove(SkillFactory.getSkill((chr.getJob() * 10000 + 51)));
skillscopy.remove(SkillFactory.getSkill((chr.getJob() * 10000 + 52)));
}
if(chr.getJob() == 2218) {
skillscopy.remove(SkillFactory.getSkill((22170030)));
skillscopy.remove(SkillFactory.getSkill((22170031)));
skillscopy.remove(SkillFactory.getSkill((22170032)));
skillscopy.remove(SkillFactory.getSkill((22170033)));
skillscopy.remove(SkillFactory.getSkill((22170034)));
skillscopy.remove(SkillFactory.getSkill((22170035)));
skillscopy.remove(SkillFactory.getSkill((22170036)));
skillscopy.remove(SkillFactory.getSkill((22170037)));
skillscopy.remove(SkillFactory.getSkill((22170038)));
skillscopy.remove(SkillFactory.getSkill((22170039)));
skillscopy.remove(SkillFactory.getSkill((22170040)));
skillscopy.remove(SkillFactory.getSkill((22170041)));
skillscopy.remove(SkillFactory.getSkill((22170042)));
skillscopy.remove(SkillFactory.getSkill((22170043)));
skillscopy.remove(SkillFactory.getSkill((22170044)));
skillscopy.remove(SkillFactory.getSkill((22170045)));
skillscopy.remove(SkillFactory.getSkill((22170046)));
skillscopy.remove(SkillFactory.getSkill((22170047)));
skillscopy.remove(SkillFactory.getSkill((22170048)));
skillscopy.remove(SkillFactory.getSkill((22170049)));
skillscopy.remove(SkillFactory.getSkill((22170050)));
skillscopy.remove(SkillFactory.getSkill((22170051)));
skillscopy.remove(SkillFactory.getSkill((22170052)));
skillscopy.remove(SkillFactory.getSkill((22171052)));
skillscopy.remove(SkillFactory.getSkill((22171053)));
skillscopy.remove(SkillFactory.getSkill((22171054)));
skillscopy.remove(SkillFactory.getSkill((22171055)));
skillscopy.remove(SkillFactory.getSkill((22171056)));
}
w.writeShort(skillscopy.size());
for (final Entry<ISkill, SkillEntry> skill : skillscopy.entrySet()) {
if (GameConstants.isProfessionSkill(skill.getKey().getId())) {
w.writeInt(skill.getKey().getId());
if (skill.getKey().getId() == chr.getProfession().getFirstProfessionSkill()) {
w.writeShort(chr.getProfession().getFirstProfessionExp());
w.write(0);
w.write(chr.getProfession().getFirstProfessionLevel());
} else if (skill.getKey().getId() == chr.getProfession().getSecondProfessionSkill()) {
w.writeShort(chr.getProfession().getSecondProfessionExp());
w.write(0);
w.write(chr.getProfession().getSecondProfessionLevel());
} else {
w.writeInt(2147483647);
}
w.writeLong(getTime(-1));
} else {
w.writeInt(skill.getKey().getId());
w.writeInt(skill.getValue().skillevel);
w.writeLong(getTime(skill.getValue().expiration));
if (skill.getKey().isFourthJob()) {
w.writeInt(skill.getValue().masterlevel);
}
}
}
}
그럼 하이퍼스킬 재접팅은 완료됩니다.
그런다음 이제 하이퍼스킬 포인트 유지 방법인데요 .
Src\handler\channel << 이경로로 들어가 InterServerHandler.java 이것을 열어봅니다.
그리고 안에보시면
for (Integer hiddenskill : GameConstants.getHiddenSkill()) {
if (c.getPlayer().getMasterLevel(hiddenskill) > 0) {
c.send(MainPacketCreator.updateSkill(hiddenskill, c.getPlayer().getOriginSkillLevel(hiddenskill), c.getPlayer().getMasterLevel(hiddenskill), -1));
}
}
이런게 있을꺼예요.
그럼 밑에다
if(c.getPlayer().getJob() == 112 || c.getPlayer().getJob() == 122 || c.getPlayer().getJob() == 132 || c.getPlayer().getJob() == 212 || c.getPlayer().getJob() == 222 || c.getPlayer().getJob() == 232 || c.getPlayer().getJob() == 2112 || c.getPlayer().getJob() == 2217 || c.getPlayer().getJob() == 2312 || c.getPlayer().getJob() == 2412 || c.getPlayer().getJob() == 5112 || c.getPlayer().getJob() == 2712 || c.getPlayer().getJob() == 6112 || c.getPlayer().getJob() == 6512) {
for(int i = 30; i < 59; i++) {
int hiddenskill = (c.getPlayer().getJob() * 10000 + i);
c.send(MainPacketCreator.updateSkill(hiddenskill, c.getPlayer().getOriginSkillLevel(hiddenskill), c.getPlayer().getMasterLevel(hiddenskill), -1));
}
for(int i = 1052 ; i < 1057; i++) {
int hiddenskill = (c.getPlayer().getJob() * 10000 + i);
c.send(MainPacketCreator.updateSkill(hiddenskill, c.getPlayer().getOriginSkillLevel(hiddenskill), c.getPlayer().getMasterLevel(hiddenskill), -1));
}
}
if(c.getPlayer().getJob() == 2218) {
for(int i = 22170030; i < 22170059; i++) {
int hiddenskill = (i);
c.send(MainPacketCreator.updateSkill(hiddenskill, c.getPlayer().getOriginSkillLevel(hiddenskill), c.getPlayer().getMasterLevel(hiddenskill), -1));
}
for(int i = 22171052 ; i < 22171057; i++) {
int hiddenskill = (i);
c.send(MainPacketCreator.updateSkill(hiddenskill, c.getPlayer().getOriginSkillLevel(hiddenskill), c.getPlayer().getMasterLevel(hiddenskill), -1));
}
}
if (GameConstants.isKaiser(player.getJob())) {
c.send(MainPacketCreator.giveMorphGauge(0));
}
이걸 추가 해줍니다 .
그럼 이제 완벽하게 완료 .
ㅎ
수고하세요
'게임 관련 정보 > @USFM' 카테고리의 다른 글
HaCreator 1.5 (0) | 2013.06.08 |
---|---|
[1/5] 1.2.182 로그인창 / League(c_hase_st) (0) | 2012.12.28 |
옵코드(핸들러)에 대해서 정확히 파헤쳐 봅시다. / Projecter(alslwjd12) (2) | 2012.12.28 |
버전업할때팁 / Projecter(alslwjd12) (0) | 2012.12.28 |
패킷강의 (복호화실습) / Projecter(alslwjd12) (0) | 2012.12.28 |