底比斯天堂
瘋天堂私服發佈網站廣告欄位!
害怕天堂私服倒閉嗎?快使用天堂分析師!
天堂私服抽獎扭蛋物品及機率測試器
天堂私服稱號顏色製造器
瘋天堂私服發佈網站教您註冊推文收藏私服!
天堂私服血量魔力計算器
瘋天堂私服發布網站廣告贊助及爆料私服客服
教您如何不用註冊也可以推文天堂私服!
天堂私服270怪物查詢掉落資料庫
天堂私服盟徽製造器
test0428
2013-12-27 01:33

天堂魔法弱點曝光java寫法!

首先我們要先新增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
========================================================================
完工...



上一篇文章:天堂樂透系統java寫法!
下一篇文章:天堂魔法武器武卷加成多加1種魔法攻擊2種3種(核心)java寫法!

分享文章:分享到微博! 分享到臉書! 分享到噗浪! 分享到維特! 分享到Google+! 分享到LINE!