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

경험치랭킹
포인트랭킹
글작성랭킹
댓글작성랭킹
리니지연구소 통계
  • 354(13) 명현재 접속자
  • 12,766 명오늘 방문자
  • 10,712 명어제 방문자
  • 17,525 명최대 방문자
  • 4,188,789 명전체 방문자
  • 603,623 개전체 게시물
  • 81,111 개전체 댓글수
  • 13,563 명전체 회원수
SNS 공유
    Facebook Twitter GooglePlus KakaoStory NaverBand
홍보글은 홍보게시판에만.. 게시판 잘보고 올리세요! 홍보게시판 외에 홍보글 발견시 바로 아이디 차단됩니다!
새글
새댓글
질문게시판
채택됨
작두 2023.11.15 23:26  
그냥 소스쪽보다 나비켓에 skill 부분에 쇼크스턴 지속시간 있습니다 그부분 수정하시면 됩니다
5 Comments
워드 2023.11.12 15:13  
버전이어떻게되실까용
pieceB 2023.11.12 19:46  
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;
}

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

컴파일해주시면 서버에 적용 가능하십니다.
워드 2023.11.12 20:06  
제목에 2.0이라고 써여잇군용 미안해용 ㄷㄷ.. pieceB님말씀이맞습니당.

럭키 포인트 33 점 당첨!! 축하드립니다!

a1szs 2023.11.13 10:13  
제가 잘 모르지만 위에 말씀 주신 부분은 스턴의 확률에 대한 말씀 이신것 같습니다.
작성자분은 스턴 시간을 말씀하신거로 보입니다.
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초로 알고 있습니다.
작두 2023.11.15 23:26  
그냥 소스쪽보다 나비켓에 skill 부분에 쇼크스턴 지속시간 있습니다 그부분 수정하시면 됩니다
상태 제목