게시판 제목 잘보고 올리세요 일반게시판에 홍보글 보이면 바로 회원 차단입니다

2.0 스턴 지속시간은 소스 어디 만져야되나요?

컨텐츠 정보

  • 816 조회
  • 5 댓글
  • 0 추천
  • 0 비추천
  • 목록

본문

상세히 부탁드리겠습니다

관련자료

댓글 5
profile_image

pieceB님의 댓글

SkillControl.java 클래스를 확인해보시면 됩니다.

skill.getUid() == 16  >> 스턴의 스킬번호입니다.

if (skill.getUid() == 16) {
boolean result = false;
double probability = 0;
int level = cha.getLevel() - o.getLevel();

// 시전자가 레벨이 높을때
if (level > 0) {
if (level == 1)
probability = 0.32;
else if (level == 2)
probability = 0.34;
else if (level == 3)
probability = 0.36;
else if (level == 4)
probability = 0.38;
else if (level == 5)
probability = 0.40;
else if (level == 6)
probability = 0.42;
else if (level == 7)
probability = 0.44;
else if (level == 8)
probability = 0.46;
else if (level == 9)
probability = 0.48;
else
probability = 0.50;
} else {
// 시전자가 레벨이 같거나 낮을때
if (level == 0)
probability = 0.50;
else if (level == -1)
probability = 0.48;
else if (level == -2)
probability = 0.46;
else if (level == -3)
probability = 0.44;
else if (level == -4)
probability = 0.42;
else if (level == -5)
probability = 0.40;
else if (level == -6)
probability = 0.38;
else if (level == -7)
probability = 0.36;
else if (level == -8)
probability = 0.34;
else if (level == -8)
probability = 0.32;
else
probability = 0.30;
}

probability += cha.getDynamicStunHit();

if (cha.isAutoStun()) {
probability += Lineage.inv_auto_stun_percent;
}

if (o instanceof Character)
probability -= ((Character) o).getTotalStunResist() * 0.8;

probability *= 100;

result = Util.random(1, 100) < (probability < 1 ? Util.random(1, 3) : Math.round(probability));

if (Lineage.is_miss_effect && !result)
cha.toSender(
S_ObjectEffect.clone(BasePacketPooling.getPool(S_ObjectEffect.class), o, Lineage.miss_effect));

return result;
}

제어문이 보이실텐데요. 레벨이 같은 경우와 낮을경우에 대한 수치를 입력해주시면 스턴확률 조절이 가능하십니다.
각 수치별로 레벨에 대한 차이가 있었을 경우에 대한 확률이 나와있는데 이부분을 수정하여

컴파일해주시면 서버에 적용 가능하십니다.
profile_image

a1szs님의 댓글

제가 잘 모르지만 위에 말씀 주신 부분은 스턴의 확률에 대한 말씀 이신것 같습니다.
작성자분은 스턴 시간을 말씀하신거로 보입니다.
Skill 쪽 한번 검색해 보심이 어떠신지요?

저도 거진 10년만에 와가지고 제가 예전에 가지고 있던거 보니 하기와 같은 부분이 있었습니다.

동일 부분이 있으신지 확인해 보세여.

package l1j.server.server.model.skill.skills;

import java.util.Random;

import l1j.server.server.model.L1Character;
import l1j.server.server.model.L1EffectSpawn;
import l1j.server.server.model.Instance.L1MonsterInstance;
import l1j.server.server.model.Instance.L1NpcInstance;
import l1j.server.server.model.Instance.L1PcInstance;
import l1j.server.server.model.Instance.L1PetInstance;
import l1j.server.server.model.Instance.L1SummonInstance;
import l1j.server.server.serverpackets.S_Paralysis;

public class ShockStun {

public static void runSkill(Random random, L1Character cha, int _shockStunDuration) {
int[] stunTimeArray = { 500, 1000, 1500, 2000, 2500, 3000, 3500, 4000, 4500, 5000 };

int rnd = random.nextInt(stunTimeArray.length);
_shockStunDuration = stunTimeArray[rnd];

L1EffectSpawn.getInstance()
.spawnEffect(81162, _shockStunDuration, cha.getX(), cha.getY(), cha.getMapId());
if (cha instanceof L1PcInstance) {
L1PcInstance pc = (L1PcInstance) cha;
pc.sendPackets(new S_Paralysis(S_Paralysis.TYPE_STUN, true));
} else if (cha instanceof L1MonsterInstance
|| cha instanceof L1SummonInstance
|| cha instanceof L1PetInstance) {
L1NpcInstance npc = (L1NpcInstance) cha;
npc.setParalyzed(true);
npc.setParalysisTime(_shockStunDuration);
}
}
}

여기서 int[] stunTimeArray = { 500, 1000, 1500, 2000, 2500, 3000, 3500, 4000, 4500, 5000 }; 
요 부분을 수정 하시면 됩니다.
제 기억에 500은 0.5초 / 1000은 1초로 알고 있습니다.
전체 2,922 / 1 페이지
번호
제목
이름

포인트 랭킹


알림 0