那就是誤判。
明明還沒死卻上了公告,結果變成殺死一個玩家要公告不少次~
此外,使用反擊屏障或致命身軀之類,受傷才會反擊的魔法將對手擊敗時也不會公告。
所以乾脆改寫到L1PcInstance去~
改寫到L1PcInstance有一個優點,
在反擊屏障或致命身軀把對手擊敗時也會公告出來。
以下是不getWeapon或者getSkillId的寫法
搜尋
CODE:
public void receiveDamage(L1Character attacker, double damage, boolean isMagicDamage) {
再往下搜尋
CODE:
if (damage > 0) {
delInvis();
if (attacker instanceof L1PcInstance) {
L1PinkName.onAction(this, attacker);
}
然後在下面插入這一段
CODE:
// 玩家PK公告
if (attacker != null && damage >= getCurrentHp()) {
String msg = "";
if (attacker instanceof L1PcInstance) {
msg = "玩家【" + attacker.getName() + "】幹掉了玩家【" + getName() + "】";
} else if (attacker instanceof L1SummonInstance || attacker instanceof L1PetInstance) {
L1PcInstance master = null; //以下是參考丫傑大的怪死公告判斷之召喚獸和寵物的寫法,特此感謝
if (attacker instanceof L1SummonInstance) { //召喚
master = (L1PcInstance) ((L1SummonInstance)attacker).getMaster();
} else if (attacker instanceof L1PetInstance) { //寵物
master = (L1PcInstance) ((L1PetInstance) attacker).getMaster();
}
msg = "玩家【" + master.getName() + "】的【" + attacker.getName() + "】幹掉了玩家【" + getName() + "】";
}
L1World.getInstance().broadcastPacketToAll(new S_SystemMessage(msg));
}
// 玩家PK公告 END
以上是不getWeapon的寫法,簡單完成~
如果想要公布武器名稱的話~~~~就改成插入以下~~
這是getWeapon的寫法
CODE:
// 玩家PK公告
if (attacker != null && attacker.getId() != getId() && damage >= getCurrentHp()) {
String msg = "";
if (attacker instanceof L1PcInstance) {
if (isMagicDamage) {
msg = "玩家【" + attacker.getName() + "】使用魔法攻擊幹掉了玩家【" + getName() + "】";
} else {
L1PcInstance pc = (L1PcInstance) attacker;
if (pc.getWeapon() != null) {
msg = "玩家【" + attacker.getName() + "】使用【" + pc.getWeapon().getName()
+ "】幹掉了玩家【" + getName() + "】";
} else {
msg = "玩家【" + attacker.getName() +"】以最高境界【赤手空拳】幹掉了玩家【" + getName() + "】";
}
}
} else if (attacker instanceof L1SummonInstance || attacker instanceof L1PetInstance) {
L1PcInstance master = null;
if (attacker instanceof L1SummonInstance) { //召喚
master = (L1PcInstance) ((L1SummonInstance)attacker).getMaster();
} else if (attacker instanceof L1PetInstance) { //寵物
master = (L1PcInstance) ((L1PetInstance) attacker).getMaster();
}
msg = "玩家【" + master.getName() + "】的【" + attacker.getName() + "】幹掉了玩家【" + getName() + "】";
}
L1World.getInstance().broadcastPacketToAll(new S_SystemMessage(msg));
}
// 玩家PK公告 END
若是要顯示魔法名稱
L1PcInstance
新增
修改
將
修改為
L1SkillUse
搜尋
在下面新增
這樣就可以殺死玩家顯示魔法名稱了
以上已測試
L1PcInstance
新增
CODE:
//顯示魔法名稱
private String _skillName;
public String getSkillName() {
return _skillName;
}
public void setSkillName(String s) {
_skillName = s;
}
//顯示魔法名稱
private String _skillName;
public String getSkillName() {
return _skillName;
}
public void setSkillName(String s) {
_skillName = s;
}
//顯示魔法名稱
修改
將
CODE:
msg = "玩家【" + attacker.getName() + "】使用魔法幹掉了玩家【" + getName() + "】";
修改為
CODE:
msg = "玩家【" + attacker.getName() + "】使用魔法"+((L1PcInstance)attacker).getSkillName()+"幹掉了玩家【" + getName() + "】";
L1SkillUse
搜尋
CODE:
if ((dmg > 0) || (drainMana != 0)) {
在下面新增
CODE:
_player.setSkillName(_skill.getName());
這樣就可以殺死玩家顯示魔法名稱了
以上已測試
沒有留言:
張貼留言