서버 구축

토렌트콜
안전 메이저 놀이터 찾는 방법

드래곤진주

2018.12.18 16:39

도니짱 조회 수:194

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 *= 드진;
      } 

프리다모아

프리다모아