|

樓主 |
發表於 2024-5-17 09:18
|
顯示全部樓層
 | |  |  | 本帖最後由 新手上路 於 2024-5-17 09:29 編輯
前輩你好,
我是看這篇文章
https://lineage45.com/forum.php? ... 5001&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(); } }
請問是以上這段覆蓋上面代碼嗎? 還是要在往下延伸呢?
我的傷害數字圖檔編碼都已經改好了。
| |  | |  |
|
|