首先我們要先新增missu0524的持續出現魔法特效
新增一個SkillSound內容↓
// Decompiled by Jad v1.5.8e2. Copyright 2001 Pavel Kouznetsov.
// Jad home page: http://kpdus.tripod.com/jad.html
// Decompiler options: packimports(3) fieldsfirst ansi space
package l1j.william;
import java.util.TimerTask;
import java.util.logging.Level;
import java.util.logging.Logger;
import l1j.server.server.model.Instance.L1PcInstance;
import l1j.server.server.serverpackets.S_SkillSound;
public class SkillSound extends TimerTask
{
private static Logger _log = Logger.getLogger(SkillSound.class.getName());
private final L1PcInstance _pc;
int _x;
public SkillSound(L1PcInstance l1pcinstance, int i)
{
_pc = l1pcinstance;
_x = i;
}
public void run()
{
if (_pc.isDead())
return;
try
{
_pc.sendPackets(new S_SkillSound(_pc.getId(), _x));
_pc.broadcastPacket(new S_SkillSound(_pc.getId(), _x));
}
catch (Throwable throwable)
{
_log.log(Level.WARNING, throwable.getLocalizedMessage(), throwable);
}
return;
}
}
========================================================================
再來修改檔案 L1PcInstance.Java
l1j\server\server\model\Instance\L1PcInstance
搜尋
import l1j.server.Config;
加入
import Threading.SkillSound;
搜尋
public void startMpReductionByAwake() {
final int INTERVAL_BY_AWAKE = 4000;
if (!_mpReductionActiveByAwake) {
_mpReductionByAwake = new MpReductionByAwake(this);
_regenTimer.scheduleAtFixedRate(_mpReductionByAwake,
INTERVAL_BY_AWAKE, INTERVAL_BY_AWAKE);
_mpReductionActiveByAwake = true;
}
}
加入
public void startSkillSound() {
final int INTERVAL = 4000;// 間隔時間
SkillSound SkillSound;
SkillSound = new SkillSound(this);
_regenTimer.scheduleAtFixedRate(SkillSound,
INTERVAL, INTERVAL);
}
========================================================================
進入正題 修改檔案L1SkillId.java
l1j\server\server\model\skill\L1SkillId
隨便找到個位置新增
public static final int D_ATTACK_ONE = 3051;//弱點爆光一
public static final int D_ATTACK_TWO = 3052;//弱點爆光二
public static final int D_ATTACK_THREE = 3053;//弱點爆光三
========================================================================
再來修改L1Attack.java
l1j\server\server\model\L1Attack
說明:_weaponType == 18 數字18為鎖鏈劍的type(每個版本說不定都不同...) 在db裡的weapon 裡面有個type要是chainsword才可以
在上方加入
import l1j.william.SkillSound;
收尋public int calcPcPcDamage()
在double dmg;下方一個地方加入
if (_weaponType != 20 && !_pc.hasSkillEffect(D_ATTACK_ONE) && !_pc.hasSkillEffect(D_ATTACK_TWO) && !_pc.hasSkillEffect(D_ATTACK_THREE) && _random.nextInt(100) + 1 <= 10)//機率
{
_pc.setSkillEffect(3051, 5000);
_pc.sendPackets(new S_SkillSound(_target.getId(), 6588));//魔法特效
_pc.broadcastPacket(new S_SkillSound(_target.getId(), 6588));//魔法特效
_pc.sendPackets(new S_SystemMessage("弱點曝光"));
}
if (_pc.hasSkillEffect(3051))
dmg += 10;//攻擊+10
if (_pc.hasSkillEffect(3052))
dmg += 15;//攻擊+15
if (_pc.hasSkillEffect(3053))
dmg += 20;//攻擊+20
收尋private int calcPcNpcDamage()
在double dmg;下方一個地方加入
if (_weaponType == 18 && !_pc.hasSkillEffect(D_ATTACK_ONE) && !_pc.hasSkillEffect(D_ATTACK_TWO) && !_pc.hasSkillEffect(D_ATTACK_THREE) && _random.nextInt(100) + 1 <= 10)//機率
{
_pc.setSkillEffect(3051, 5000);
_pc.sendPackets(new S_SkillSound(_target.getId(), 6588));//魔法特效
_pc.broadcastPacket(new S_SkillSound(_target.getId(), 6588));//魔法特效
_pc.sendPackets(new S_SystemMessage("弱點曝光"));
}
if (_pc.hasSkillEffect(3051))
dmg += 10;//攻擊+10
if (_pc.hasSkillEffect(3052))
dmg += 15;//攻擊+15
if (_pc.hasSkillEffect(3053))
dmg += 20;//攻擊+20
========================================================================
再來修改L1SkillUse.java
l1j\server\server\model\skill\L1SkillUse
收尋if (_skillId == FOE_SLAYER)
修改成
if (_skillId == FOE_SLAYER) {
for (int i = 3; i > 0; i--)
{
_target.onAction(_player);
if (_player.hasSkillEffect(3051))
{
_target.setCurrentHp(_target.getCurrentHp() - 10);
continue;
}
if (_player.hasSkillEffect(3052))
{
_target.setCurrentHp(_target.getCurrentHp() - 15);
continue;
}
if (_player.hasSkillEffect(3053))
_target.setCurrentHp(_target.getCurrentHp() - 20);
}
_player.sendPackets(new S_SkillSound(_target.getId(),
6509));
_player.sendPackets(new S_SkillSound(_player.getId(),
7020));
_player.broadcastPacket(new S_SkillSound(_target.getId(),
6509));
_player.broadcastPacket(new S_SkillSound(_player.getId(),
7020));
========================================================================
再來修改L1SkillTimer.java
l1j\server\server\model\skill\L1SkillTimer
在上方加入import java.util.Random;
在一個地方加入
if (skillId == 3051)
{
if (cha instanceof L1PcInstance)
{
L1PcInstance pc = (L1PcInstance) cha;
Random random = new Random();
if (random.nextInt(100) + 1 <= 100)
{
pc.setSkillEffect(3052, 5000);
pc.sendPackets(new S_SystemMessage("弱點曝光二階段"));
}
}
} else
if (skillId == 3052)
{
if (cha instanceof L1PcInstance)
{
L1PcInstance pc = (L1PcInstance) cha;
Random random = new Random();
if (random.nextInt(100) + 1 <= 100)
{
pc.setSkillEffect(3053, 5000);
pc.sendPackets(new S_SystemMessage("弱點曝光三階段"));
}
}
} else
if (skillId == 3053)
{
if (cha instanceof L1PcInstance)
{
L1PcInstance pc = (L1PcInstance) cha;
pc.sendPackets(new S_SystemMessage("弱點曝光結束"));
}
} else
========================================================================
完工...