最新天堂1私服开机预告 【公告】99天堂发布站2000人QQ交流群 86429772
设为首页 | 加入收藏
首页 家族 文章 工具 优势   战歌
★ ★ ★  ★ ★ ★
  百度一下     360搜索     天堂图档     SEO查询     在线翻译     家族联盟     个性签名
发布游戏     发布家族     广告价格     宣传优势    广告联系     工具下载     技术文章
天堂套裝一定時間顯示動畫特效的java寫法!
文章作者:唯爱久久 文章来源:99天堂信息网 更新时间:4/26/2019 11:50:42 AM 

天堂套裝一定時間顯示動畫特效的java寫法!

在 armor_set 增加欄位 效果編號 - effect_id 及 效果間隔 - interval (單位:千分之一秒)

讓使用者在db可以設定穿套裝時設定法術效果及效果出現的頻率。


◇設定部分◇

step 1.

在db下按f6, 輸入下列資料,按ENTER。

ALTER table `armor_set` add `effect_id` int(10) NOT NULL default 0;

ALTER table `armor_set` add `interval` int(10) NOT NULL default 0;


複製代碼step 2.

在 L1ArmorSets 下找個適當的地方加入- ( l1j.server.server.templates.L1ArmorSets) // 套裝效果

private int _effect_id;

public int getEffectId() {

return _effect_id;

}

public void setEffectId(int i) {

_effect_id = i;

}

private int _interval;

public int getInterval() {

return _interval;

}

public void setInterval(int i) {

_interval = i;

}

複製代碼step 3.

在 ArmorSetTable 下找-

as.setDefenseFire(rs.getInt("defense_fire"));
as.setDefenseEarth(rs.getInt("defense_earth"));


複製代碼在下面加入-

as.setEffectId(rs.getInt("effect_id")); // 套裝效果
as.setInterval(rs.getInt("interval"));


複製代碼step 4.

在 L1ArmorSet 下找 - ( l1j.server.server.model.L1ArmorSet)

impl.addEffect(new AcHpMpBonusEffect(armorSets.getAc(),
armorSets.getHp(), armorSets.getMp(), armorSets
.getHpr(), armorSets.getMpr(), armorSets
.getMr()));


複製代碼更動為-

impl.addEffect(new AcHpMpBonusEffect(armorSets.getAc(),
armorSets.getHp(), armorSets.getMp(), armorSets
.getHpr(), armorSets.getMpr(), armorSets
.getMr(),armorSets.getEffectId(),armorSets.getInterval())); // 套裝效果


複製代碼找 -

private final int _regenMp;
private final int _addMr;

複製代碼在下面加入-

private final int _addEffectId; // 套裝效果
private final int _addInterval;


複製代碼找 -

public AcHpMpBonusEffect(int ac, int addHp, int addMp, int regenHp,

int regenMp, int addMr) {

_ac = ac;

_addHp = addHp;

_addMp = addMp;

_regenHp = regenHp;

_regenMp = regenMp;

_addMr = addMr;

}


複製代碼更動為 -

public AcHpMpBonusEffect(int ac, int addHp, int addMp, int regenHp,

int regenMp, int addMr,int addEffectId ,int addInterval) { // 套裝效果

_ac = ac;

_addHp = addHp;

_addMp = addMp;

_regenHp = regenHp;

_regenMp = regenMp;

_addMr = addMr;

_addEffectId = addEffectId; // 套裝效果

_addInterval = addInterval;

}


複製代碼找 -

public void giveEffect(L1PcInstance pc) {

pc.addAc(_ac);

pc.addMaxHp(_addHp);

pc.addMaxMp(_addMp);

pc.addHpr(_regenHp);

pc.addMpr(_regenMp);

pc.addMr(_addMr);

}

複製代碼更動為 -

public void giveEffect(L1PcInstance pc) {

pc.addAc(_ac);

pc.addMaxHp(_addHp);

pc.addMaxMp(_addMp);

pc.addHpr(_regenHp);

pc.addMpr(_regenMp);

pc.addMr(_addMr);

if (_addEffectId !=0){ // 套裝效果

pc.startSustainEffect(pc ,_addEffectId , _addInterval);

}

}


複製代碼找 -

public void cancelEffect(L1PcInstance pc) {
pc.addAc(-_ac);
pc.addMaxHp(-_addHp);
pc.addMaxMp(-_addMp);
pc.addHpr(-_regenHp);
pc.addMpr(-_regenMp);
pc.addMr(-_addMr);
}


複製代碼更動為 -

public void cancelEffect(L1PcInstance pc) {
pc.addAc(-_ac);
pc.addMaxHp(-_addHp);
pc.addMaxMp(-_addMp);
pc.addHpr(-_regenHp);
pc.addMpr(-_regenMp);
pc.addMr(-_addMr);
if (_addEffectId !=0){ // 套裝效果
pc.stopSustainEffect();
}
}

複製代碼step 5.

在 l1j.william 下新增類別 - SustainEffect (原 m大之 skillsound 改寫)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 SustainEffect extends TimerTask {

private static Logger _log = Logger.getLogger(SustainEffect.class.getName());

private final L1PcInstance Active_pc;

private final int effect_id;

public SustainEffect(L1PcInstance pc ,int effect) {

Active_pc = pc;

effect_id = effect;

}

@Override

public void run() {

try {

if (Active_pc.isDead()) {

return;

}

Active_pc.sendPackets(new S_SkillSound(Active_pc.getId(), effect_id));

Active_pc.broadcastPacket(new S_SkillSound(Active_pc.getId(), effect_id)); // 是否加入,請自行考量

} catch (Throwable e) {

_log.log(Level.WARNING, e.getLocalizedMessage(), e);

}

}

}


複製代碼step 6.

在 L1PcInstance 下找個適當的地方加入 -

// 套裝效果

private SustainEffect SustainEffect; // 記得先 import l1j.william.SustainEffect;

public void startSustainEffect(L1PcInstance pc ,int effect_id ,int Interval) {

final int _Interval = Interval; // 間隔時間

SustainEffect = new SustainEffect(pc ,effect_id);

_regenTimer.scheduleAtFixedRate(SustainEffect,_Interval, _Interval);

}

public void stopSustainEffect() {

SustainEffect.cancel();

SustainEffect = null;

}


複製代碼
......................................................

假如實裝OK了

人物走動後 卻出現效果還在屁股後面


請配合法術效果出現、走速、間隔,來調整至適當的情況。

將 skillsound 改成 -

S_EffectLocation packet = new S_EffectLocation(locx, locy, 法術效果編號);
pc.sendPackets(packet);
pc.broadcastPacket(packet); // 若要省資源,可對 broadcastPacket 做限制

其中,locx locy 先判斷是否與上一個 座標相同,若相同則不變~也就是原地停止時效果會在腳下!!

若座標不同則表示是在移動狀態,用取得人物面向,對下一出現的地點做預設,比如往面向前的2格~ (面向0~7的座標寫法可參火牢)

這樣也許可以~不過要實際去做才能調整至適當的情形!!

浏览次数:1
最新文章
· 天堂核心修改JAVA檔案名稱的用途介紹!...
· 教您怎麼新增或修改天堂地圖左下名字!...
· 天堂魔法娃娃db化追加韓版魔法娃娃加乘效果!...
· 天堂私服java寫出可自由控制的挖礦系統!...
· 天堂核心內的java檔案相關內容分析解說!...
· 天堂娃娃機&補血機&隨身祭司修改寫法!...
· 天堂java升級版本需要動的地方!...
· 天堂java 設置經驗每轉生一次越難練的寫法!...
· 為天堂GM加人物頭銜的java寫法!...
· 天堂開箱公告(須配合打寶公告)的java寫法!...
热门文章
· 天堂1私服哥唱的是寂寞...
· 天堂1私服架设三宝...
· 天堂1私服核心內的java檔案相關內容分析...
· 天堂1私服添加和删掉NPC的方法...
· 99天堂1私服发布站祝大家新年快乐...
· 天堂1私服新版l1jdb目录解析...
· 天堂1私服部分新水龙魔法编码...
· 永恒塔防5月14日更新 新服“银月之城”火爆开启...
· 天堂1私服怪物被攻擊後,對自己和組隊內的玩家顯示血...
· 天堂1私服元寶商城系統 完善版...
· 坏像有一种可能将物质转化之前用光束入言淌传的技拙...
· 详细的私服架设教程...
· 教你創造 NPC 、販賣物品...
· 天堂1私服“见与不见”都是一种修行...
关于我们广告联系更多天堂1私服网站帮助友情连接
Copyright 2008-2010 Www.99t1.cc 天堂1私服 All Rights Reserved (注:本站只接受官方授权游戏广告,非官方授权游戏请办理广告业务之前告知本站)
拒绝盗版游戏 注意自我保护 谨防受骗上当 适度游戏益脑 沉迷游戏伤身 合理安排时间 享受健康生活 品牌商标,文字,形象及内容归 Www.99t1.cc 天堂1私服发布站 版权所有,任何组织或个人未经 Www.99t1.cc 天堂1私服发布站 同意,不得使用和传播
本站所有游戏均来自网络版权归游戏业主所有,如果无意之中侵犯了您的版权,请来信告知,本站将在3个工作日内删除.联系邮箱:[email protected]
*注释:本站发布所有游戏信息,均来自互联网,与本站无关,请玩家仔细辨认游戏信息的真实性,避免上当受骗. 苏ICP备12011632号-1