【3.A.S.T】网络安全爱好者's Archiver

黑客学习

超超 发表于 2008-10-7 14:30

【天堂1】怪物放魔法

我拿我使用的核心來教學!!這是protoplast大大所發的核心!

一種怪物可以讓他使用兩種魔法
有5種分分類
單體魔法、範圍魔法、全畫面魔法、召喚魔法,特殊魔法

要讓怪物使用魔法就重上面五種攻擊方式選兩種搭配
但是有些會有搭配會導緻隻有一種魔法效果

單體魔法+範圍魔法,範圍魔法就會失效   
全畫面魔法+召喚魔法,全畫面魔法就會失效

但是如果用範圍+全畫面、單體+全畫面,單體+召喚就能正常使用兩種魔法!

現在開始教學如何改! 請看註解!!
PS.請用eclipse去改! 不要用JC會很多錯!
首先!
先打開L1NpcInstance.java
尋找private void useSkill(L1Character target, int mobskill) {
下就是怪物魔法了!
現看到的是招換類型魔法
private void useSkill(L1Character target, int mobskill) {
    int bid = getNpcTemplate().get_npcId();
    int dmg = get_level() * get_int() / 6; // // 注意!ダメージ適當(範囲スキル用基本ダメージ)

    if (mobskill == 10 && !is_isdead() && get_currentHp() > 0) {
//20070725 protoplast change
        if (bid == 45685 || bid == 45684 || bid == 45683 || bid == 45682
            || bid == 45681 || bid == 45673 || bid == 45649
            || bid == 45671 || bid == 45672 || bid == 45524
                    || bid == 45542 || bid == 81075 || bid == 190020
                    || bid == 190021) {
        // 堕落、ヴァラカス、パプリオン、アンタラス、リンドビオル、グリムリーパー、デーモン、アリオク、リッチ
        if (bid == 45649 || bid == 45524 || bid == 45542) {// 惡魔 惡魔系列
            broadcastPacket(new S_AttackPacket(target, get_objectId(),
                30));
        } else if (bid == 45672) {// リッチ
            broadcastPacket(new S_AttackPacket(target, get_objectId(),
                18));
        } else {
            broadcastPacket(new S_AttackPacket(target, get_objectId(),
                19));
        }
        areaskill(this, dmg, 10);
        } else if (bid == 45569 || bid == 45573 || bid == 45583
            || bid == 45601 || bid == 45651 || bid == 45679
            || bid == 45499 || bid == 45604 || bid == 45606
            || bid == 45618 || bid == 45664 || bid == 81073
            || bid == 81039 || bid == 81040 || bid == 81041
            || bid == 190003 || bid == 190006 || bid == 45003) { //這一段是怪物編號 要新增怪物在這裡加入編號!!
        // バルログのバフォメット、バフォメット、ベレス、デスナイト、魔獣軍王 バランカ、バランカ、バンパイア、マーキス
        // バンパイア、バンパイア
        int gg = 0;
        if (bid == 45569 || bid == 45573 )這裡是會招換的怪物編號!!  
                                                                                                      要新增就依樣畫葫蘆!!
                                          // 炎魔的巴風特 巴風特:改召LV42殘暴的史巴托
            gg = 45455;//這裡是怪物召喚出來的編號!!
        if (bid == 45583)// 巴列斯:改召LV45地獄束縛犬
            gg = 45512;
        if (bid == 45601)// 死亡騎士:改召LV42殘暴的史巴托
            gg = 45455;
        if (bid == 45651 || bid == 45679 || bid == 45003)// 魔獣軍王 バランカ、バランカ
            gg = 45669;
        if (bid == 45499 || bid == 45604 || bid == 45606 || bid == 81073)// 吸血鬼 馬昆斯吸血鬼:改召LV38魔蝙蝠
            // バンパイア、バンパイア
            gg = 45290;
        if (bid == 45618 || bid == 45664)// 騎士範德:召暗黑黑騎士
            gg = 45503;
        if(bid == 81039)// 白金騎士:召喚黑暗騎士
            gg = 81030;
        if(bid == 81040)// 白金巡守:召喚黑暗法師
            gg = 81031;
        if(bid == 81041)// 白金巡守:召喚黑暗巡守
            gg = 81032;
        if(bid == 190003)// 白金刺客:召喚白金刺客的分身
            gg = 190004;
        if(bid == 190006)// 受詛咒的死亡騎士:召喚死亡騎士
            gg = 45601;
        if (bid == 45569 || bid == 45573 || bid == 45583   
                                            //在最後這裡! 也要加入新增怪物的編號! 這是施法動作!!
        || bid == 45601 || bid == 190006) {// 施法動作
            broadcastPacket(new S_AttackPacket(target, get_objectId(),
                18));
            broadcastPacket(new S_SkillSound(get_objectId(), 761));
            }else if (bid == 45651 || bid == 45679 || bid == 45499
                        || bid == 45604 || bid == 45606 || bid == 81050
                        || bid == 81073 || bid == 45003){// 魔獣軍王

            // バランカ、バランカ、バンパイア、マーキス
            // バンパイア、バンパイア
            broadcastPacket(new S_AttackPacket(target, get_objectId(),
                19));
        } else if (bid == 45618 || bid == 45664) {// 施法動作
            broadcastPacket(new S_AttackPacket(target, get_objectId(),
                30));
            broadcastPacket(new S_SkillSound(get_objectId(), 761));
        }
        mobspawn(this, gg);

接下來是全畫面魔法! 做法也是跟召換一樣做新增的動作!! 應該不難吧@@
} else if (bid == 45546 || bid == 45678 || bid == 45609
            || bid == 45617 || bid == 45680 || bid == 45677
            || bid == 45600 || bid == 45663 || bid == 45545
            || bid == 45595 || bid == 45654 || bid == 45265
            || bid == 45364 || bid == 81040 || bid == 81041
            || bid == 190008 || bid == 190019 || bid == 190020
            || bid == 190021 || bid == 190025 || bid == 81037
            || bid == 45676 || bid == 45672 || bid == 190049
            || bid == 190048 || bid == 190042 || bid == 190043) {//這裡加入新增!!
        // ドッペルゲンガー、ケレニス、アイス クイーン、フェニックス、ケンラウヘル
        int gg = 0;
        if (bid == 45546 || bid == 45678 || bid == 45609 || bid == 81040)// 變形怪首領 賽尼斯 冰之女皇 白金法師
            // 冰雪暴
            gg = 2261;
        if (bid == 45600)// 克特
                    // 死亡騎士-震烈-光  
            gg = 245;
        if (bid == 45676 || bid == 190049 || bid == 190042)// 冥法軍王.海露拜 長老.巴陸德
            gg = 4539;//黑流星群
        if (bid == 45545 || bid == 45595 || bid == 45654 || bid == 45265 || bid == 45364 || bid == 81041 || bid == 81037)// 黑長者 艾莉絲 黑暗精靈 白金巡守
                    // 龍捲風(ps.弓手類放不出來!白金法師)
            gg = 758;
        if (bid == 45663 || bid == 45677 || bid == 45676)// 法令軍王.蕾雅 蕾雅
                    // 冰烈術
            gg = 3933;
        if (bid == 45617)// 不死鳥
                    // 不死鳥-攻擊魔法A  
            gg = 1793;
        if (bid == 190048 || bid == 190043)//長老.拉曼斯
            gg = 5651;//超大龍捲風
        if (bid == 45672)// 巫妖
            gg = 2552;//黑色氣息
        if (bid == 45680)// 反王肯恩
            gg = 4223;
        if (bid == 190008)// 大王烏賊-迴旋漩渦
            gg = 5550;
        if (bid == 190019)// 特提斯-震裂踏擊
            gg = 5261;
        if (bid == 190020 || bid == 190021)// 炎魔(翅膀模式)-火焰放射
            gg = 5514;
        if (bid == 190025 || bid == 190026)// 火焰之影-毒氣放射
            gg = 5638;
        if (bid == 45678 || bid == 45663 || bid == 45677 || bid == 81040
                    || bid == 190025 || bid == 45672 || bid == 45617 || bid == 45676
                    || bid == 190049 || bid == 190048 || bid == 190042 || bid == 190043)// 賽尼斯 法令軍王.蕾雅 蕾雅 白金法師 炎魔
        {
            broadcastPacket(new S_AttackPacket(target, get_objectId(),
                30)); // 施法動作
        } else if (bid == 45546 || bid == 45609)//  變形怪首領 冰之女皇 黑長者 艾莉絲 黑暗精靈 白金巡守
        {
            broadcastPacket(new S_AttackPacket(target, get_objectId(),
                18)); // 施法動作:
        }
        broadcastPacket(new S_SkillSound(get_objectId(), gg));
        areaskill(this, dmg, 10);
        }

載來是單體魔法!請看註解!
} else if (bid == 45618 || bid == 45664 || bid == 45678
            || bid == 45569 || bid == 45573 || bid == 45583
            || bid == 45499 || bid == 45604 || bid == 45606
            || bid == 45456 || bid == 45478 || bid == 45464
            || bid == 45473 || bid == 45488 || bid == 45497
            || bid == 45513 || bid == 45515 || bid == 45516
            || bid == 45547 || bid == 45600 || bid == 45663
            || bid == 45677 || bid == 45671 || bid == 45391
            || bid == 45393 || bid == 45394 || bid == 45400
            || bid == 45450 || bid == 45451 || bid == 45545
            || bid == 45580 || bid == 45649 || bid == 45672
            || bid == 45215 || bid == 45673 || bid == 45680
                    || bid == 45524 || bid == 45542 || bid == 45569
                    || bid == 45575 || bid == 45579 || bid == 45597
                    || bid == 45598 || bid == 81069 || bid == 81073
                    || bid == 81075 || bid == 81039 || bid == 190007
                    || bid == 190008 || bid == 190023 || bid == 190028
                    || bid == 190030 || bid == 190031 || bid == 190032
                    || bid == 190037 || bid == 190038 || bid == 190020
                    || bid == 190021 || bid == 45679 || bid == 190003
                    || bid == 45676 || bid == 45606 || bid == 81036  
                    || bid == 81033 || bid == 45588 || bid == 45577  
                    || bid == 45574 || bid == 45585 || bid == 45496
                    || bid == 45522 || bid == 45480 || bid == 45648) {//這裡加入新增!! 單體不用加施法動作!
        // ナイトバルド、ナイトバルド、ケレニス、バルログのバフォメット、バフォメット、ベレス、バンパイア、マーキス
        // バンパイア、バンパイア、ネクロマンサー、ネクロマンサー、セマ、バルタザール、カスパー、メルキオール、ゼニス
        // クイーン、イフリート、イフリート、シアー、カーツ、魔霊軍王 ライア、ライア、アリオク
        int gg = 0;
        if (bid == 45473 || bid == 45569 || bid == 45573
                    || bid == 45569 || bid == 45579 || bid == 45597
                    || bid == 45598 || bid == 190030 || bid == 190031)// 巴土瑟 巴風特&巴列斯系列-地裂術
            gg = 129;
        if (bid == 45464 || bid == 45456 || bid == 45478)// 西瑪 魔法師 馬庫爾-極光雷電
            gg = 170;
        if (bid == 45488 || bid == 45583 || bid == 45649
                    || bid == 45524 || bid == 45542 || bid == 45480)// 卡士伯 巴列斯 惡魔 惡魔系列-燃燒的火球
            gg = 171;
        if (bid == 45497)// 憤怒的古代人亡靈-光箭
            gg = 167;
        if (bid == 45678 || bid == 45618 || bid == 45664
                    || bid == 190020 || bid == 190021 || bid == 45679 || bid == 190003 || bid == 190055)// 賽尼斯 騎士範德-流星雨
            gg = 762;
        if(bid == 45499 || bid == 45604 || bid == 45606 || bid == 81073)// 吸血鬼 馬昆斯吸血鬼-吸血鬼之吻
            gg = 236;
        if (bid == 45513)// 潔尼斯女王-網子
            gg = 2810;
        if (bid == 45496 || bid == 45522)//幼龍 骨龍
            gg = 1064;
        if (bid == 45515 || bid == 45516)// 伊弗利特-武器火A
            gg = 1776;
        if (bid == 45547)// 幻象眼魔-魔法攻擊
            gg = 4080;
        if (bid == 45671 || bid == 81075)// 阿利歐克-魔法攻擊
            gg = 3924;
        if (bid == 45215 || bid == 45600)// 長者 克特-極道落雷
            gg = 10;
        if (bid == 45663 || bid == 45677 || bid == 45676)// 魔靈軍王. 蕾雅 蕾雅-冰雪颶風
            gg = 3685;
        if (bid == 45391 || bid == 45393 || bid == 45394
                    || bid == 45400 || bid == 45575 || bid == 81069
                    || bid == 190028)// 思克巴系列-攻擊魔法(藍色妖女之吻)
            gg = 1115;
        if (bid == 45450 || bid == 45451 || bid == 45580)// 思克巴女皇 暗黑思克巴女皇-攻擊魔法(黃色妖女之吻)
            gg = 1119;
        if (bid == 45585 || bid == 45588 || bid == 45577 || bid == 45574)//暗殺團長.布雷哲 魔獸師長.辛克萊 突擊旅長.闇黑劍士 親衛隊長.凱特
            gg = 3740;
        if (bid == 45545)// 黑長者
                    // 靈光彈
            gg = 2546;
        if (bid == 45673)// 鐮刀死神-魔法攻擊
            gg = 3395;
        if (bid == 45680 || bid == 81039 || bid == 81036 || bid == 81033)// 反王肯恩 白金騎士
                    // 聖堂武士-劍氣(地上的劍氣)  
            gg = 1662;
        if (bid == 45672)// 巫妖-魔法
            gg = 2546;
        if (bid == 45648)// 暗殺軍王.史雷佛
            gg = 4785;//黑流星
        if (bid == 81073 || bid == 45606)// 吸血鬼-魔法
            gg = 3924;
        if (bid == 190007)// 骨鰻魚-有向魔法-魚刺投射
            gg = 5408;
        if (bid == 190008)// 大王烏賊-觸手攻擊
            gg = 5551;
        if (bid == 190022)// 食腐獸-腐蝕毒液
            gg = 5445;
        if (bid == 190023)// 巴薩斯-光球攻擊
            gg = 5467;
        if (bid == 190032)// 小安加斯-火焰噴射
            gg = 5272;
        if (bid == 190037 || bid == 190038)// 長老隨從-光球魔法
            gg = 5570;
        broadcastPacket(new S_UseArrowSkillMob(
            (L1MonsterInstance) this, target.get_objectId(), gg,
            target.get_x(), target.get_y()));
        sellskill(this, dmg, 2);


最後是範圍魔法!! 看註解應該很清楚 新增怪物魔法並不難!!
} else if (bid == 45650 || bid == 45547 || bid == 45601
            || bid == 45546 || bid == 45584 || bid == 45610
            || bid == 45613 || bid == 45614 || bid == 45685
            || bid == 81081 || bid == 190003 || bid == 190006
                    || bid == 190023 || bid == 190032 || bid == 190037  
                    || bid == 190038 || bid == 45602 || bid == 45615
                    || bid == 190044 || bid == 190045
                    || bid == 190046 || bid == 190047 || bid == 190048  
                    || bid == 190049 || bid == 190042){
        // ゾンビ ロード、シアー、デスナイト、ドッペルゲンガー、グレート ミノタウルス、エンシェント
        // ジャイアント、バルログ、堕落、グレイヴ ガーディアン ナイト、アイリス、アイリス
        int gg = 0;
        if (bid == 45601 || bid == 45613 )// 死亡騎士 炎魔
                  // 死亡騎士-震烈-光  
            gg = 245;
        if (bid == 190006)// 受詛咒的死亡騎士
                  // 死亡騎士-震烈-光
            gg = 245;
        if (bid == 190042 || bid == 190044 || bid == 190045|| bid == 190046 || bid == 190047 || bid == 190048 || bid == 190049)
            gg = 1819;
        if (bid == 45546 || bid == 45602 || bid == 45615)// 變形怪首領-火風暴
            gg = 1819;
        if (bid == 45584 || bid == 45610 || bid == 45614)// 巨大牛人 古代巨人 巨蟻女皇
                    // 震裂術
            gg = 2483;
        if (bid == 190003)// 白金刺客-鋼爪爪痕
            gg = 3671;
        if (bid == 190023)// 巴薩斯-音速衝擊
            gg = 5466;
        if (bid == 45650 || bid == 45547 || bid == 45601
                    || bid == 45613 || bid == 45546 || bid == 45584
                    || bid == 45610 || bid == 45614 || bid == 45602 || bid == 45615
                    || bid == 190044 || bid == 190045|| bid == 190046 || bid == 190047  
                    || bid == 190048 || bid == 190049 || bid == 190042)//
        // 施法動作
        {
            broadcastPacket(new S_AttackPacket(target, get_objectId(),
                19));
            if (bid == 45601 || bid == 45613 || bid == 190006 || bid == 190025 )// 死亡騎士 炎魔-範圍技
            {
            broadcastPacket(new S_SkillSound(get_objectId(), gg));
            }

END~
改完之後DB也要改喔!!
打開NPC 找area_atk 這欄!
1=會放一種 2=會2種以上 0=不會放!
PS.怪物的攻擊距離ranged超過2都不會放魔法喔!!
原因不清楚.... 所以弓手類不能放魔法!


龍的魔法屬於特殊魔法!
特殊魔法指的是在攻擊動作中本身就附加魔法圖示的怪物   
比如火龍的流星雨、水龍的水壓、風龍的全畫面閃電  
這些算是特殊魔法,應為這是附加在攻擊動作上的魔法圖示!
就像是火龍放流星雨時 是丟5顆不同座標的流星雨!
所以沒有魔法編號!!

要改機率的話要打開L1MonsterInstance.java (此為killen大大的教學)

找尋以下原碼!
@Override   
    public void onAttackSkill() {  
        int chance = getRnd().nextInt(100) + 1;
        if (getNpcTemplate().get_areaatk() == 2 && 95 < chance) {  
            _attackSkill = 10;   
            _attackRange = 10;  
        } else if (getNpcTemplate().get_areaatk() >= 1 && 5 > chance) {  
            _attackSkill = 6;   
            _attackRange = 5;  
        }  
    }  
修改源碼的 95 < chance 和 5 > chance 即可提升施放的機率
95 < chance 數值越低,施展廣範圍魔法的機率越高
5 > chance5 > chance 數值越高,施展方向性魔法的機率越高
建議不要調太高!! 可能導緻當掉的情況!
改為90 < chance 和 10 > chance 就差不多!

4XX以後的核心改法!
因為4XX之後的核心把怪物放魔法DB化!
也變得比較亂...是很亂= =
但改的方式一樣!!
我舉個例子!! 先把很亂的原碼牌整齊!!
我拿rev458的原碼 整理過後!!
變成以下這樣子!
比較好看^^


/*
* if (mobskill == 10 && !is_isdead() && get_currentHp() > 0) {  
* if (bid == 45685 || bid == 45684 || bid == 45683 || bid == 45682 || bid == 45681 || bid == 45673 ||
* bid == 45649 || bid == 45671 || bid == 45672) { //堕落、ヴァラカス、パプリオン、アンタラス、リンドビオル、グリムリーパー、デーモン、アリオク、リッチ  
* if (bid == 45649) {// デーモン
* broadcastPacket(new S_AttackPacket(target, get_objectId(), 30));
* } else if (bid == 45672) {// リッチ broadcastPacket(new S_AttackPacket(target,get_objectId(), 18));
* } else { broadcastPacket(new S_AttackPacket(target, get_objectId(), 19));  
* } areaskill(this, dmg, 10);  
* } else if (bid == 45569 || bid == 45573 || bid == 45583 || bid == 45601 || bid == 45651 || bid == 45679 ||
* bid == 45499 || bid == 45604 || bid == 45606) { //這裡是召換怪物的編碼 這裡新增!!
* //バルログのバフォメット、バフォメット、ベレス、デスナイト、魔獣軍王 バランカ、バランカ、バンパイア、マーキス // バンパイア、バンパイア  
* int gg =0;  
* if (bid == 45569 || bid == 45573)// バルログのバフォメット、バフォメット
* gg = 45107;  
* if (bid ==45583)// ベレス gg = 45241;  
* if (bid == 45601)// デスナイト  
* gg = 45161;  
* if (bid ==45651 || bid == 45679)// 魔獣軍王 バランカ、バランカ  
* gg = 45357;  
* if (bid == 45499 || bid ==45604 || bid == 45606)// バンパイア、マーキス // バンパイア、バンパイア  
* gg = 45290;  
* if (bid ==45618 || bid == 45664)// ナイトバルド、ナイトバルド  
* gg = 45503;  
* if (bid == 45569 || bid ==45573 || bid == 45583 || bid == 45601) {// バルログのバフォメット、バフォメット、ベレス、デスナイト  //這裡是施法動作  
* broadcastPacket(new S_AttackPacket(target, get_objectId(), 18));
* broadcastPacket(new S_SkillSound(get_objectId(), 761));  
* } else if (bid ==45651 || bid == 45679 || bid == 45499 || bid == 45604 || bid == 45606) {//魔獣軍王 // バランカ、バランカ、バンパイア、マーキス // バンパイア、バンパイア broadcastPacket(new
* S_AttackPacket(target, get_objectId(), 19)); } else if (bid == 45618 || bid == 45664) {// ナイトバルド、ナイトバルド  
* broadcastPacket(new S_AttackPacket(target,get_objectId(), 30));  
* broadcastPacket(new S_SkillSound(get_objectId(), 761)); }
* mobspawn(this, gg);  
* } else if (bid == 45546 || bid == 45678 || bid == 45609 ||
* bid == 45617 || bid == 45680) { // ドッペルゲンガー、ケレニス、アイス クイーン、フェニックス、ケンラウヘル  //這裡是全畫面魔法 這裡新增編號  
* intgg = 0;  
* if (bid == 45546 || bid == 45678 || bid == 45609)// ドッペルゲンガー、ケレニス、アイス //クイーン
* gg = 2261;  
* if (bid == 45617)// フェニックス  
* gg = 1793;  
* if (bid == 45680)//ケンラウヘル  
* gg = 4223;  
* if (bid == 45678)// ケレニス  
* { broadcastPacket(newS_AttackPacket(target, get_objectId(), 30));  
* } else if (bid == 45546 || bid ==45609 || bid == 45617 || bid == 45680)// ドッペルゲンガー、アイス クイーン、フェニックス、ケンラウヘル  //施法動作
* { broadcastPacket(new S_AttackPacket(target, get_objectId(), 18)); }
* broadcastPacket(new S_SkillSound(get_objectId(), gg));  
* areaskill(this, dmg,10);  
* } } else if (mobskill == 6 && !is_isdead() && get_currentHp() > 0) {  
* if(bid == 45685 || bid == 45684 || bid == 45683 || bid == 45682 || bid == 45681 ||
* bid == 45673 || bid == 45529 || bid == 45578) //堕落、ヴァラカス、パプリオン、アンタラス、リンドビオル、グリムリーパー、ドレイク、ドレイク  
* { Random random1 = newRandom();  
* int chance1 = random1.nextInt(100) + 1;  
* if (bid == 45685 || bid ==45673 || chance1 < 50 && (bid == 45684 || bid == 45683 || bid == 45682 || bid ==45681))// 堕落、グリムリーパー、ヴァラカス、パプリオン、アンタラス、リンドビオル  
* { broadcastPacket(newS_AttackPacket(target, get_objectId(), 18));  
* } else if (bid == 45684 || bid ==45683 || bid == 45682 || bid == 45681 || bid == 45529 || bid == 45578)//
* ヴァラカス、パプリオン、アンタラス、リンドビオル、ドレイク、ドレイク {  
* broadcastPacket(newS_AttackPacket(target, get_objectId(), 30));  
* } sellskill(this, dmg, 6);  
* }else if (bid == 45618 || bid == 45664 || bid == 45678 || bid == 45569 || bid ==
* 45573 || bid == 45583 || bid == 45499 || bid == 45604 || bid == 45606 || bid ==
* 45456 || bid == 45456 || bid == 45464 || bid == 45473 || bid == 45488 || bid ==
* 45497 || bid == 45513 || bid == 45515 || bid == 45516 || bid == 45547 || bid ==
* 45600 || bid == 45663 || bid == 45677 || bid == 45671) { //  這裡是單體魔法
* ナイトバルド、ナイトバルド、ケレニス、バルログのバフォメット、バフォメット、ベレス、バンパイア、マーキス //
* バンパイア、バンパイア、ネクロマンサー、ネクロマンサー、セマ、バルタザール、カスパー、メルキオール、ゼニス //
* クイーン、イフリート、イフリート、シアー、カーツ、魔霊軍王 ライア、ライア、アリオク  
* int gg = 0;  
* if (bid == 45464 ||bid == 45456 || bid == 45456)// セマ、ネクロマンサー、ネクロマンサー  
* gg = 170;  
* if (bid ==45473)// バルタザール  
* gg = 129;  
* if (bid == 45488)// カスパー  
* gg = 171;  
* if (bid ==45497)// メルキオール  
* gg = 167;  
* if (bid == 45678)// ケレニス  
* gg = 762;  
* if (bid ==45569)// バルログのバフォメット  
* gg = 129;  
* if (bid == 45573)// バフォメット  
* gg = 129;  
* if (bid ==45583)// ベレス  
* gg = 171;  
* if (bid == 45499)// バンパイア  
* gg = 236;  
* if (bid ==45604)// マーキス バンパイア  
* gg = 236;  
* if (bid == 45606)// バンパイア  
* gg = 236;  
* if (bid ==45513)// ゼニス クイーン  
* gg = 2810;  
* if (bid == 45515)// イフリート  
* gg = 1776;  
* if (bid ==45516)// イフリート  
* gg = 1776;  
* if (bid == 45547)// シアー  
* gg = 4080;  
* if (bid ==45671)// アリオク  
* gg = 3924;  
* if (bid == 45618)// ナイトバルド
* gg = 762;  
* if (bid ==45664)// ナイトバルド  
* gg = 762;  
* if (bid == 45600)// カーツ  
* gg = 10;  
* if (bid ==45663)// 魔霊軍王 ライア  
* gg = 1805;  
* if (bid == 45677)// ライア  
* gg = 1805;
* broadcastPacket(new S_UseArrowSkillMob( (L1MonsterInstance) this,target.get_objectId(), gg, target.get_x(), target.get_y()));  
* sellskill(this,dmg, 2);
* }else if (bid == 45650 || bid == 45547 || bid == 45601 || bid ==
* 45546 || bid == 45584 || bid == 45610 || bid == 45613 || bid == 45685 || bid ==
* 45545 || bid == 45595 || bid == 45654) { // ゾンビ ロード、シアー、デスナイト、ドッペルゲンガー、グレート //最後是範圍魔法!!
* ミノタウルス、エンシェント // ジャイアント、バルログ、堕落、グレイヴ ガーディアン ナイト、アイリス、アイリス  
* int gg = 0;  
* if (bid ==45601)// デスナイト  
* gg = 245;  
* if (bid == 45546)// ドッペルゲンガー  
* gg = 1819;  
* if (bid ==45584)// グレート ミノタウルス  
* gg = 2483;  
* if (bid == 45610)// エンシェント ジャイアント  
* gg = 2483;
* if (bid == 45613)// バルログ  
* gg = 245;  
* if (bid == 45545)// グレイヴ ガーディアン ナイト  
* gg =758;  
* if (bid == 45595)// アイリス  
* gg = 758;  
* if (bid == 45654)// アイリス  
* gg = 758;  
* if(bid == 45650 || bid == 45547 || bid == 45601)// ゾンビ // ロード、シアー、デスナイト {
* broadcastPacket(new S_AttackPacket(target, get_objectId(), 19));  
* if (bid ==45601)// デスナイト  
* { broadcastPacket(new S_SkillSound(get_objectId(), gg)); }
* areaskill(this, dmg, 6);  
* } else if (bid == 45546 || bid == 45584 || bid == 45610 || bid == 45613) {// ドッペルゲンガー、グレート ミノタウルス、エンシェント // ジャイアント、バルログ
* broadcastPacket(new S_AttackPacket(target, get_objectId(), 18));
* broadcastPacket(new S_SkillSound(get_objectId(), gg));  
* areaskill(this, dmg,6);  
* } else if (bid == 45685) {// 堕落 broadcastPacket(newS_AttackPacket(target, get_objectId(), 12));  
* areaskill(this, dmg, 6);  
* } elseif (bid == 45545) {// グレイヴ ガーディアン ナイト broadcastPacket(new
* S_AttackPacket(target, get_objectId(), 1)); broadcastPacket(new
* S_SkillSound(get_objectId(), gg)); areaskill(this, dmg, 6);  
* } else if (bid ==45595 || bid == 45654) {// アイリス、アイリス broadcastPacket(new
* S_AttackPacket(target, get_objectId(), 30)); broadcastPacket(new
* S_SkillSound(get_objectId(), gg)); areaskill(this, dmg, 6); } } }
*/

4XX以後的版本變得很亂!!
不好看= = 要整理一下!! 可以整理成跟舊版的一樣比較容易懂!!
改的方法一樣!!

關於mobskill DB 部分解析  (此為killen大大的解析)

mobid = npc DB的 npcid ,用來判斷這隻怪物會不會放魔法   
skilltype = 可以使用的魔法種類  
area_act1 , area_ranged1 = 範圍性魔法,不用讀取圖像   
area_gfxid2, area_act2 , area_ranged2 = 範圍性魔法,需要讀取圖像  
spell_act1 , spell_ranged1 = 方向性魔法,不用讀取圖像  
spell_gfxid2, spell_act2 , spell_ranged2 = 方向性魔法,需要讀取圖像  
s_summon, ss_gfxid, ss_act = 召喚怪物的魔法   
att_type = 設定特殊物攻和遠功的使用與否   
att_gfxid1 = att_gfxid1+att_act1 = 需要讀取圖像的特殊物理攻擊(發動機率 < 30)   
att_act1 = 特殊物理攻擊,發動機率 < 30   
att_act2 = 特殊物理攻擊,發動機率 < 60 到 發動機率 <=30  
att_act3 = 特殊物理攻擊,發動機率 < 50  
att_act4 = 特殊物理攻擊,發動機率 100%   
bow_gfxid, bow_act = 遠距離攻擊,圖像可以指定
   
關於 skilltype 如何設定數值   
1 = 使用範圍性魔法,不用讀取圖像   
2 = 使用範圍性魔法,需要讀取圖像  
4 = 使用方向性魔法,不用讀取圖像  
8 = 使用方向性魔法,需要讀取圖像  
16 = 使用召喚術   
32 = 四龍發動遠距離魔法時,會對玩家說「XXX 給你安息」  

當一個怪物會 1、8、16 這三種魔法類行時   
skilltype 就必須設定為 25,這是將三種類型的代號相加的值(1+8+16)
如果隻會單一種則直接輸入該類型代號即可

關於 att_type 如何設定數值  
1 = 使用att_act1   
2 = 使用att_act2   
4 = 使用att_act3  
8 = 使用att_act4   
16 = 使用att_act1 + att_gfxid1  
32 = 使用遠距離攻擊, bow_gfxid + bow_act   

當一個怪物會 1、4、32 這三種魔法類行時   
skilltype 就必須設定為 37,這是將三種類型的代號相加的值(1+4+32)  
如果隻會單一種則直接輸入該類型代號即可

DB 其他欄位的設定說明  
area_act1, area_act2,  spell_act1, spell_act2, ss_act :   
用來設定怪物施展魔法時,要做的動作代號  

att_act1, att_act2, att_act3, att_act4, bow_act  
用來設定怪物發動特殊攻擊時,要做的動作代號   

area_ranged1, area_ranged2,  spell_ranged1, spell_ranged2 :
表示射程或範圍  

area_gfxid2,  spell_gfxid2, ss_gfxid, att_gfxid1, bow_gfxid:  
表示魔法或攻擊特效的代號  
   
s_summon   
要召喚的怪物的代號,請輸入npc DB的 npcid 3  

注意:墮落的s_summon設定為0是因為他會召五種怪物,所以判斷是直接寫在源碼裡的  
   
設定後 npc DB 當中 area_atk 的設定方法   
當怪物隻會單一或複合的 4 , 8 和 32  (skilltype)這三種魔法,npc DB 當中 area_atk 請設定為 1   
如果會其他魔法或綜合多種(含全部skilltype代碼),npc DB 當中 area_atk 請設定為 2   
當怪物會特殊物理攻擊和遠距離攻擊,npc DB 當中 area_atk 請設定為 4   

但是如果怪物會多種,像是會 1 和 4,npc DB 當中 area_atk 就請設定成5 (1+4的結果)

小竹 发表于 2008-10-7 19:13

不错,学习了..

a5621324 发表于 2009-4-1 21:16

好东西。。COPY回家。。

页: [1]

Powered by Discuz! Archiver 7.2  © 2001-2009 Comsenz Inc.