請版主移除
本帖最後由 新手上路 於 2024-5-20 16:05 編輯請版主移除 懇請前輩 你的語法來源 沒附
你的錯誤截圖 沒貼
沒有人知道你把語法貼哪
沒有人看得到你語法錯哪
傷害顯示 圖檔的部分
傷害破千 就會有四組0~9
傷害破萬 就會有五組0~9
以此類推
假設打出來傷害是123
那就是個位數3 顯示第一組0~9中的3
那就是十位數2 顯示第二組0~9中的2
那就是百位數1 顯示第三組0~9中的1
只要了解原理 應該就很好新增了
先找到你版本傷害 寫在哪邊 叫什麼名
假設你版本傷害 叫做 a
那你就是把 a 拆成 個位數 十位數 百位數 ...以此類推
然後分別顯示對應圖檔 在攻擊對象身上
這樣就完成了 本帖最後由 新手上路 於 2024-5-17 09:29 編輯
yasioukon 發表於 2024-5-17 08:59
你的語法來源 沒附
你的錯誤截圖 沒貼
前輩你好,
我是看這篇文章
https://lineage45.com/forum.php?mod=viewthread&tid=105001&highlight=傷害
他教學是這樣
核心修改
編輯 L1Attack.java
[*]收尋 public void commit() {
[*]將以下程式碼取代原 commit() Function
請依照個人圖檔編碼調整以下程式內容
public void commit() { /** 程式說明:
* 首先取得 _damage(傷害)的個位 十位 百位 ... 數值
* 假設傷害為171,則以下變數為:
* i = 1 + 8000 // 8001為個位數"1"特效編號
* k = 7 + 8010 // 8017為個十數"7"特效編號
* h = 1 + 8020 // 8021為個百數"1"特效編號
* s = 0 + 8030
* m = 0 + 8040
**/
if (_isHit) {
if (_calcType == PC_PC || _calcType == NPC_PC) {
commitPc();
} else if (_calcType == PC_NPC || _calcType == NPC_NPC) {
commitNpc();
}
}
// 傷害顯示特效開關
if (!Config.ALT_ATKMSG) {
return;
}
final String srcatk = _pc.getName();// 攻擊者
String tgatk = "";// 被攻擊者
String hitinfo = "";// 資訊
String dmginfo = "";// 傷害
String atkinfo = "";// 最終資訊
int i = (int) ((_damage/Math.pow(10,0)) % 10) + 8000;//個位0-9
int k = (int) ((_damage/Math.pow(10,1)) % 10) + 8010;//十位0-9
int h = (int) ((_damage/Math.pow(10,2)) % 10) + 8020;//百位0-9
int s = (int) ((_damage/Math.pow(10,3)) % 10) + 8030;//千位0-9
int m = (int) ((_damage/Math.pow(10,4)) % 10) + 8040;//萬位0-9
switch (this._calcType) {
case PC_PC:
tgatk = _targetPc.getName();
hitinfo = " 命中率 " + _hitRate + "% 剩餘 HP" + _targetPc.getCurrentHp();
dmginfo = _isHit ? _damage + " 傷害" : "攻擊失敗";
atkinfo = srcatk + " > " + tgatk + " " + dmginfo + hitinfo;
_pc.sendPackets(new S_ServerMessage(166, atkinfo));
if ( _damage <= 0 ){
_pc.sendPackets(new S_SkillSound(_targetPc.getId() , 8050));//Miss數特效
}
else if ( _damage > 0 && _damage < 10 ){
_pc.sendPackets(new S_SkillSound(_targetPc.getId() , i));//個位數特效
}
else if ( _damage >= 10 && _damage < 100){
_pc.sendPackets(new S_SkillSound(_targetPc.getId() , i));//個位數特效
_pc.sendPackets(new S_SkillSound(_targetPc.getId() , k));//十位數特效
}
else if ( _damage >= 100 && _damage < 1000){
_pc.sendPackets(new S_SkillSound(_targetPc.getId() , i));//個位數特效
_pc.sendPackets(new S_SkillSound(_targetPc.getId() , k));//十位數特效
_pc.sendPackets(new S_SkillSound(_targetPc.getId() , h));//百位數特效
}
else if ( _damage >= 1000 && _damage < 10000){
_pc.sendPackets(new S_SkillSound(_targetPc.getId() , i));//個位數特效
_pc.sendPackets(new S_SkillSound(_targetPc.getId() , k));//十位數特效
_pc.sendPackets(new S_SkillSound(_targetPc.getId() , h));//百位數特效
_pc.sendPackets(new S_SkillSound(_targetPc.getId() , s));//千位數特效
}
else if ( _damage >= 10000){
_pc.sendPackets(new S_SkillSound(_targetPc.getId() , i));//個位數特效
_pc.sendPackets(new S_SkillSound(_targetPc.getId() , k));//十位數特效
_pc.sendPackets(new S_SkillSound(_targetPc.getId() , h));//百位數特效
_pc.sendPackets(new S_SkillSound(_targetPc.getId() , s));//千位數特效
_pc.sendPackets(new S_SkillSound(_targetPc.getId() , m));//萬位數特效
}
break;
case PC_NPC:
tgatk = _targetNpc.getName();
hitinfo = " 命中率 " + _hitRate + "% 剩餘 HP " + _targetNpc.getCurrentHp();
dmginfo = _isHit ? _damage + " 傷害" : "攻擊失敗";
atkinfo = srcatk + " > " + tgatk + " " + dmginfo + hitinfo;
_pc.sendPackets(new S_ServerMessage(166, atkinfo));
if ( _damage <= 0 ){
_pc.sendPackets(new S_SkillSound(_targetNpc.getId() , 8050));//Miss數特效
}
else if ( _damage > 0 && _damage < 10 ){
_pc.sendPackets(new S_SkillSound(_targetNpc.getId() , i));//個位數特效
}
else if ( _damage >= 10 && _damage < 100){
_pc.sendPackets(new S_SkillSound(_targetNpc.getId() , i));//個位數特效
_pc.sendPackets(new S_SkillSound(_targetNpc.getId() , k));//十位數特效
}
else if ( _damage >= 100 && _damage < 1000){
_pc.sendPackets(new S_SkillSound(_targetNpc.getId() , i));//個位數特效
_pc.sendPackets(new S_SkillSound(_targetNpc.getId() , k));//十位數特效
_pc.sendPackets(new S_SkillSound(_targetNpc.getId() , h));//百位數特效
}
else if ( _damage >= 1000 && _damage < 10000){
_pc.sendPackets(new S_SkillSound(_targetNpc.getId() , i));//個位數特效
_pc.sendPackets(new S_SkillSound(_targetNpc.getId() , k));//十位數特效
_pc.sendPackets(new S_SkillSound(_targetNpc.getId() , h));//百位數特效
_pc.sendPackets(new S_SkillSound(_targetNpc.getId() , s));//千位數特效
}
else if ( _damage >= 10000){
_pc.sendPackets(new S_SkillSound(_targetNpc.getId() , i));//個位數特效
_pc.sendPackets(new S_SkillSound(_targetNpc.getId() , k));//十位數特效
_pc.sendPackets(new S_SkillSound(_targetNpc.getId() , h));//百位數特效
_pc.sendPackets(new S_SkillSound(_targetNpc.getId() , s));//千位數特效
_pc.sendPackets(new S_SkillSound(_targetNpc.getId() , m));//萬位數特效
}
break;
}
}———————————————我的L1Attack.java
public void commit() { if (_isHit) { if ((_calcType == PC_PC) || (_calcType == NPC_PC)) { commitPc(); } else if ((_calcType == PC_NPC) || (_calcType == NPC_NPC)) { commitNpc(); } }
請問是以上這段覆蓋上面代碼嗎?還是要在往下延伸呢?
我的傷害數字圖檔編碼都已經改好了。
求教學,
小弟完全新手
用380完全底版
源碼核心慢慢學習這,
可能好幾年前的簡單概念
根本如喝水簡單的問題
小弟還是一知半 你看的教學 有寫取代喔 ...................
頁:
[1]