顯示具有 L1Attack 標籤的文章。 顯示所有文章
顯示具有 L1Attack 標籤的文章。 顯示所有文章

2014年5月26日 星期一

【Java教學】等級傷害加成系統

等級傷害加成

設想:攻擊方與目標方等級差距,會有傷害加成,無論是物理攻擊還是魔法攻擊。

一、打開src/l1j/server/server/model/L1Attack.java

加入宣告

import l1j.server.server.serverpackets.S_SystemMessage; 

复制代码

找到

private int calcPcPcDamage()

在該節的

return (int) dmg;

前加入

//等級差距傷害加成或減免 BY 遺忘島主
int pcLevel=_pc.getLevel();
int targetLevel=_targetPc.getLevel();
//等級超過30級以上的拒絕PVP
if (Math.abs(pcLevel-targetLevel)>30 && _pc.getMapId() == 4){
dmg=0;
_pc.sendPackets(new S_SystemMessage("在和平的亞丁大陸上,等級差距超過30級的玩家不能互相PK!!!"));
_targetPc.sendPackets(new S_SystemMessage("在和平的亞丁大陸上,等級差距超過30級的玩家不能互相PK!!!"));}
else
dmg = Math.floor(dmg * pcLevel / targetLevel);

//等級差距傷害加成或減免 BY 遺忘島主



复制代码

找到

private int calcPcNpcDamage()

在該節的

return (int) dmg;

前加入

//等級差距傷害加成或減免 BY 遺忘島主
int pcLevel=_pc.getLevel();
int targetLevel=_targetNpc.getLevel();
dmg = Math.floor(dmg * pcLevel / targetLevel);

//等級差距傷害加成或減免 BY 遺忘島主  

复制代码

找到

private int calcNpcPcDamage()

在該節的

return (int) dmg;

前加入

//等級差距傷害加成或減免 BY 遺忘島主
int npcLevel=_npc.getLevel();
int targetLevel=_targetPc.getLevel();
dmg = Math.floor(dmg * npcLevel / targetLevel);

//等級差距傷害加成或減免 BY 遺忘島主

复制代码  找到

private int calcNpcNpcDamage()

在該節的

return (int) dmg;

前加入

//等級差距傷害加成或減免 BY 遺忘島主
int npcLevel=_npc.getLevel();
int targetLevel=_targetNpc.getLevel();
dmg = Math.floor(dmg * npcLevel / targetLevel);

//等級差距傷害加成或減免 BY 遺忘島主  

复制代码

二、打開/rev2021/src/l1j/server/server/model/L1Magic.java

在下面的節中

public int calcMagicDamage(int skillId)

查找

damage = calcMrDefense(damage);

在其上加入

//等級差距傷害加成或減免 BY 遺忘島主
if (_calcType==PC_PC){
int pcLevel = _pc.getLevel();
int targetpcLevel=_targetPc.getLevel();
if (Math.abs(pcLevel-targetpcLevel)>30 && _pc.getMapId()==4){
damage=0;
_pc.sendPackets(new S_SystemMessage("在和平的亞丁大陸上,等級差距超過30級的玩家不能互相PK!!!"));
_targetPc.sendPackets(new S_SystemMessage("在和平的亞丁大陸上,等級差距超過30級的玩家不能互相PK!!!"));
}
else
damage=(int)Math.floor(damage*pcLevel/targetpcLevel);
}else if(_calcType==PC_NPC) {
int pcLevel = _pc.getLevel();
int targetnpcLevel=_targetNpc.getLevel();
damage=(int)Math.floor(damage*pcLevel/targetnpcLevel);
}else if(_calcType==NPC_NPC){
int npcLevel=_npc.getLevel();
int targetnpcLevel=_targetNpc.getLevel();
damage=(int)Math.floor(damage*npcLevel/targetnpcLevel);
}else if(_calcType==NPC_PC){
int npcLevel=_npc.getLevel();
int targetpcLevel=_targetPc.getLevel();
damage=(int)Math.floor(damage*npcLevel/targetpcLevel);
}

//等級差距傷害加成或減免 BY 遺忘島主  


作者:遺忘島主  

2013年5月15日 星期三

【Java教學】製作吸血武器


制作吸血武器
改這個的位置在哪裡?在原碼的l1j.server.server.model.L1Attack.java

public int DrainMana = 0;
下面新增:
public int DrainHp = 0;
--------------------------------------------------------------------------------------------

public void PlayerStaffOfManaCalc()
  {
下面新增:
if((weaponId == 41 || weaponId == 57 || weaponId == 14 || weaponId == 256))   // 吸血武器 武器編號可以自己更改
{
int som_lvl = weaponEnchant + 10; // 最大hp吸取量設定
if(som_lvl < 0) som_lvl = 0;
DrainHp = _random.nextInt(som_lvl) + 5;        
if(DrainHp > 30)   // 最大hp吸取量限制,紅色字體(可以依照自己的喜好把一次吸血上限調高)
{
DrainHp = 30; 紅色字體(可以依照自己的喜好把一次吸血上限調高)
}
}
--------------------------------------------------------------------------------------------

private void PcCommit()
  {
if(_calcType == PC_PC)
    {
下面新增:
 
if(DrainHp > 0 && targetPlayer.get_currentHp() > 0)
{
if(DrainHp > targetPlayer.get_currentHp())
DrainHp = targetPlayer.get_currentHp();
short newHp = (short) (targetPlayer.get_currentHp() - DrainHp);
targetPlayer.set_currentHp(targetPlayer, newHp);
newHp = (short) (player.get_currentHp() + DrainHp);
player.set_currentHp(player, newHp);
}
--------------------------------------------------------------------------------------------

private void NpcCommit()
  {
    if(_calcType == PC_NPC)
    {
下面新增:

if(DrainHp > 0 && targetNpc.get_currentHp() > 0)
{
if(DrainHp > targetNpc.get_currentHp())
DrainHp = targetNpc.get_currentHp();
//HP吸取限制處理追加
short newHp = (short) (targetNpc.get_currentHp() - DrainHp);
targetNpc.set_currentHp2(newHp);
newHp = (short) (player.get_currentHp() + DrainHp);
player.set_currentHp(player, newHp);
}

加上以後,就大功告成了 可以開始吸血了!!