드래곤의 진주 소스
프리서버 오픈소스 리니지 드래곤의 진주 추가 소스
검색
추가
Opcodes.java
public static final int S_OPCODE_DRAGonPERI = 0x72;
(ui4차 8월29일자 기준)
L1SkillId.txt
public static final int STATUS_DRAGonPERL = 999;
S_DRAGONPERL.java
통 첨부.
S_PacketBox.java
public static final int DRAGonPERL = 60; //드진 상수 추가 by사부
.
.
.
public S_PacketBox(int subCode, int type, int time) {
writeC(Opcodes.S_OPCODE_PACKETBOX);
writeC(subCode);
switch (subCode) {
///////////////위 검색/////////////////
case DRAGONPERL://추가by사부
writeC(time);
writeC(type);
break;
//////////////////////////아래 검색///////////
case ACCOUNT_TIME:
writeD(time);
writeC(type);
break;
case ICON_COOKING:
.
.
.
L1PcInstance.java
public boolean isThirdSpeed() {
return (getSkillEffectTimerSet().hasSkillEffect(L1SkillId.DRAGONPERL)
|| get진주속도() == 1);//;;;;
}
private int _진주속도; // ● 진주 상태 0.통상 1.치우침 이브
public int get진주속도() {
return _진주속도;
}
public void set진주속도(int i) {
_진주속도= i;
}
C_ItemUse.java
}else if (itemId == 600012){ // 아이템번호..
진주포션사용(pc);
pc.getInventory().consumeItem(600012, 1);//해당아이템 삭제
pc.sendPackets(new S_ServerMessage(1065)); //드진 멘트
.
.
.
//적당한곳에 추가//
private void 진주포션사용(L1PcInstance pc) {
if (pc.getSkillEffectTimerSet().hasSkillEffect(71) == true) { // 디케이포션 상태
pc.sendPackets(new S_ServerMessage(698));
return;
}
if (pc.getSkillEffectTimerSet().hasSkillEffect(L1SkillId.DRAGONPERL)) {
pc.getSkillEffectTimerSet().killSkillEffectTimer(L1SkillId.DRAGONPERL);
pc.sendPackets(new S_PacketBox(S_PacketBox.DRAGONPERL, 0 ,0));
Broadcaster.broadcastPacket(pc, new S_DRAGONPERL(pc.getId(), 0
pc.sendPackets(new S_DRAGONPERL(pc.getId(), 0 ));
pc.set진주속도(0);
}
pc.cancelAbsoluteBarrier();//앱솔해제(팩에 이 메소드없으면 무시)
int time = 600 *1000;
int stime = ((time/1000)/4)-2;
pc.getSkillEffectTimerSet().setSkillEffect(L1SkillId.DRAGONPERL, time);
pc.sendPackets(new S_PacketBox(S_PacketBox.DRAGONPERL,stime, 8));
pc.sendPackets(new S_DRAGONPERL(pc.getId(), 8 ));
Broadcaster.broadcastPacket(pc, new S_DRAGONPERL(pc.getId(), 8 ));
pc.sendPackets(new S_SkillSound(pc.getId(),197));//말갱이 이팩트...
Broadcaster.broadcastPacket(pc, new S_SkillSound(pc.getId(), 197));
pc.set진주속도(1);
}
CharBuffTable.java
private static final int[] buffSkill = { 2, 67, // 라이트, 셰이프 체인지
/////////////////////////여기 리스트에 999(드래곤진주스킬아이디)추가
private static final int[] buffSkill = { 999, 2, 67, // 라이트, 셰이프 체인지
/////////////예시
L1SkillTimer.java
case 999: // 진주스킬아이디
if (cha instanceof L1PcInstance) {
L1PcInstance pc = (L1PcInstance) cha;
pc.sendPackets(new S_DRAGONPERL(pc.getId(),0));
pc.sendPackets(new S_PacketBox(S_PacketBox.DRAGONPERL, 0, 0));
pc.set진주속도(0);
}
break;
C_SelectCharacter.java
private void buff(LineageClient clientthread, L1PcInstance pc) {
/////////////////////////////////검색
.
.
switch(skillid) {
case 999://드진 스킬아이디
int stime = (remaining_time/4)-2;
pc.sendPackets(new S_DRAGONPERL(pc.getId(),8));
pc.sendPackets(new S_PacketBox(S_PacketBox.DRAGONPERL,stime, 8));
pc.set진주속도(1);
break;
l1j.server.server.utils.Teleportation.java
(텔레포트시 문제가 없다면 넣지않아도 됩니다.)
if (pc.getSkillEffectTimerSet().hasSkillEffect(L1SkillId.DRAGONPERL)) {
int reminingtime = pc.getSkillEffectTimerSet().getSkillEffectTimeSec(L1SkillId.DRAGONPERL);
pc.sendPackets(new S_PacketBox(S_PacketBox.DRAGONPERL, (reminingtime /4) -2), 8);
//만약 텔할때 시간이 이상해진다면,((reminingtime /1000 )/4)-2 로 해주세요
pc.sendPackets(new S_DRAGONPERL(pc.getId(), 8 ));
Broadcaster.broadcastPacket(pc, new S_DRAGONPERL(pc.getId(), 8 ));
pc.set진주속도(1);
}
아참... 스핵 기본으로 들어가있는 스핵소스 사용중이신분은...
l1j.server.server.model.AcceleratorChecker.java
private static final double 드진 = 0.874;//by사부
.
.
.
if (_pc.isThirdSpeed()) {
interval *= 드진;
}