마법크리이펙트(에바일팩소스)
위치 - 분홍색
검색 - 파랑색
추가 - 빨강색
주석 - 초록색
구분선 - 보라색(신경안쓰셔두됨)
============================================================================================
우선 DB에 필드 추가
============================================================================================
나비켓에 들어가셔서
skills 테이블로 들어갑니다
그후 필드추가 Ctrl + D 또는 파일 -> 테이블 설계하기 누르시고 설계 하시면됩니다.
이름 criticalgfx, 타입 int, 길이 10, 십진법 0, 제로 허용 체크해제, 디폴트 0, 서명하지않음 체크
해주시구요~
============================================================================================
이제 코딩부분으로 넘어가서
============================================================================================
l1j.server.server.datatables.SkillsTable.java
============================================================================================
l1skills.setCastGfx(rs.getInt("castgfx"));
l1skills.setCastGfx2(rs.getInt("castgfx2"));
l1skills.setSysmsgIdHappen(rs.getInt("sysmsgID_happen"));
l1skills.setSysmsgIdStop(rs.getInt("sysmsgID_stop"));
l1skills.setSysmsgIdFail(rs.getInt("sysmsgID_fail"));
/**크리이펙트추가-KCH**/
l1skills.setCriticalGfx(rs.getInt("criticalgfx"));
/**크리이펙트추가-KCH**/
============================================================================================
l1j.server.server.templates.L1Skills.java
============================================================================================
private int _castGfx;
private int _castGfx2;
private int _sysmsgIdHappen;
private int _sysmsgIdStop;
private int _sysmsgIdFail;
/**크리이펙트추가-KCH**/
private int _criticalGfx;
/**크리이펙트추가-KCH**/
.
.
.
.
public int getSysmsgIdHappen() {
return _sysmsgIdHappen;
}
public void setSysmsgIdHappen(int i) {
_sysmsgIdHappen = i;
}
public int getSysmsgIdStop() {
return _sysmsgIdStop;
}
public void setSysmsgIdStop(int i) {
_sysmsgIdStop = i;
}
public int getSysmsgIdFail() {
return _sysmsgIdFail;
}
public void setSysmsgIdFail(int i) {
_sysmsgIdFail = i;
}
/**크리이펙트추가-KCH**/
public int getCriticalGfx() {
return _criticalGfx;
}
public void setCriticalGfx(int i) {
_criticalGfx = i;
}
/**크리이펙트추가-KCH**/
============================================================================================
l1j.server.server.model.L1Magic.java
============================================================================================
double criticalCoefficient = 1.4;
int rnd = random.nextInt(100) + 1;
if (_calcType == PC_PC || _calcType == PC_NPC) {
switch (skillId) { // 6레벨 이하 광역마법 제외한 공격마법
case ENERGY_BOLT:
case ICE_DAGGER:
case WIND_CUTTER:
case CHILL_TOUCH:
case SMASH:
case FIRE_ARROW:
case STALAC:
case VAMPIRIC_TOUCH:
case CONE_OF_COLD:
case CALL_LIGHTNING:
case SUNBURST:
case DISINTEGRATE:
int propCritical = (CalcStat.calcBaseMagicCritical(
_pc.getType(), _pc.ability.getBaseInt()) + 15);
if (_calcType == PC_PC || _calcType == PC_NPC) {
if (_pc.getSkillEffectTimerSet().hasSkillEffect(LIND_MAAN)
|| _pc.getSkillEffectTimerSet().hasSkillEffect(
SHAPE_MAAN) // 형상의 마안 - 일정확률로 마법치명타+1
|| _pc.getSkillEffectTimerSet().hasSkillEffect(
LIFE_MAAN)) { // 생명의 마안 - 일정확률로 마법치명타+1
propCritical += 1; // 마안에 의한 마법치명타 +1
}
}
if (criticalOccur(propCritical)) {
magicDamage *= 1.3;
/**크리이펙트추가-KCH**/
if (l1skills.getCriticalGfx() != 0) // 크리이펙이 디비에 추가되어있다면
L1SkillUse.CRITICAL_GFX = true;
/**크리이펙트추가-KCH**/
break;
}
} else if (_calcType == NPC_PC || _calcType == NPC_NPC) {
if (rnd <= 15) {
magicDamage *= criticalCoefficient;
}
}
============================================================================================
l1j.server.server.model.skill.L1SkillUse.java
============================================================================================
public static final int TYPE_NORMAL = 0;
public static final int TYPE_LOGIN = 1;
public static final int TYPE_SPELLSC = 2;
public static final int TYPE_NPCBUFF = 3;
public static final int TYPE_GMBUFF = 4;
/**크리이펙트추가-KCH**/
public static boolean CRITICAL_GFX = false;
/**크리이펙트추가-KCH**/
.
.
.
.
private void sendGrfx(boolean isSkillAction) {
int actionId = _skill.getActionId();
int castgfx = _skill.getCastGfx();
/**크리이펙트추가-KCH**/
int criticalgfx = _skill.getCriticalGfx(); // 크리 이펙트 이미지 변수
if(CRITICAL_GFX == true){ //크리티컬시
castgfx = criticalgfx; //캐스트그라운드이미지는 크리티컬 그라운드이미지로 변경
}
CRITICAL_GFX = false;//크리티컬이미지 계속 나오지안도록 false
/**크리이펙트추가-KCH**/
if (castgfx == 0) {
return;
}
if (castgfx == 1) {
return;
}
/** 황금닷지 리뉴얼-KCH **/
if (_skillId == UNCANNY_DODGE) {
if (_player.getAC().getAc() <= -100) castgfx = criticalgfx;
}
/** 황금닷지 리뉴얼-KCH **/
.
.
.
.
.
if (castgfx != _skill.getCastGfx()) { //검색 and 주석 or 변경
return; // 그래픽 번호가 다르다.
}
/**크리이펙트추가-KCH**/
if (castgfx != _skill.getCastGfx() && castgfx != _skill.getCriticalGfx()) { //변경
/**크리이펙트추가-KCH**/
return; // 그래픽 번호가 다르다.
}
출처-팝존

웨롭지않아 님의 최근 댓글
트리플 쓰면 클라이언트가 에러 나서 꺼지네용;; 어떻게 이걸 수정해야될지;; 2016 05.19 다운 받고 싶은댕 포인트 압박이 장난 아니네요 2016 04.25 등업해야 되는걸로 알고잇어요 2016 04.21 안녕하세요~ 2016 04.20