2013年5月17日 星期五

【Java教學】黑妖技能(自爆)


黑妖法術(自爆)java文章

C_RequestItemUSe.java
在public class C_RequestItemUSe extends ClientBasePacket { 下方新增

private L1PcInstance player = null;
public int Damage = 10;

在隨便一個private 上方加入

private void areaskill( L1PcInstance npc, int dmg, int vis) // 攻集npc
{
      Random random = new Random();
          //(以自身)計算攻擊範圍-使用方式areaskill(player,(int)d,幾格的範圍)
      L1Object visibleObjects[] = L1World.getInstance().getVisibleObjects(npc, vis);
      for(int i = 0; i < visibleObjects.length; i++)
      {
        if(visibleObjects == null)
            continue;
        if(visibleObjects instanceof L1MonsterInstance)
        {
            L1NpcInstance targetNpc = (L1NpcInstance)visibleObjects;
            targetNpc.ReceiveDamage(targetNpc,dmg, 0); // 怪被範圍魔法打死的怪經驗不會給玩家
             
        }
      }
}



同樣的 在隨便一個private 地方加入
private void area3skill( L1PcInstance player, int dmg, int vis) // 攻集玩家
{
   
      Random random = new Random();
          //(以自身)計算攻擊範圍-使用方式areaskill(player,(int)d,幾格的範圍)
      L1Object al1object[] = L1World.getInstance().getVisibleObjects(player , vis);
      for (int j = 0; j < al1object.length; j++)
      {
        if(al1object[j] == null)
            continue;
        if(al1object[j] instanceof L1PcInstance)
        {
          L1PcInstance l1pcinstance = (L1PcInstance)al1object[j];
            l1pcinstance.ReceiveDamage(l1pcinstance,dmg, 0);
             
        }
      }
}




C_RequestItemUSe.java   加入

在隨便一個物品下面加入限定黑妖才能使用~~
else if (itemId == 80002) { // 自爆法術
  if (l1pcinstance.get_classId() == 2786|| l1pcinstance.get_classId() == 2796 ){//這邊是限定黑妖才能使用
      if(l1pcinstance.get_level() >= 70 ){//等級需到達70才會有以下效果
      int dmg = l1pcinstance.get_currentHp() + Damage; // 傷害 = 黑妖目前的血量 + 傷害
      areaskill(l1pcinstance,(int)dmg, 8);//八格以內的npc受到傷害
      area3skill(l1pcinstance,(int)dmg, 8);//八格以內的玩家受到傷害
      l1pcinstance.sendPackets(new S_AttackStatus(l1pcinstance,2, 19)); //施法動作
      l1pcinstance.broadcastPacket(new S_AttackStatus(l1pcinstance, 2, 19));
      l1pcinstance.sendPackets(new S_SkillSound(j, 4890));
      l1pcinstance.broadcastPacket(new S_SkillSound(j, 4890));
      l1pcinstance.sendPackets(new S_SkillSound(j, 4611));
      l1pcinstance.broadcastPacket(new S_SkillSound(j, 4611));
      l1pcinstance.Death((L1PcInstance)l1pcinstance); //使用者 死亡
      l1pcinstance.set_exp(l1pcinstance.get_exp() - dmg * 500); //經驗值倒扣公式為 傷害 * 500 (血量月多者 給予傷害月大 但經驗相對 倒扣月多          
        }else
      if(l1pcinstance.get_level() <= 69){ //如果玩家等級小於 69級 出現以下訊息
        l1pcinstance.sendPackets(new S_SystemMessage("你的等級不足以承受這力量"));
      }
  }
  }

沒有留言:

張貼留言