OK論壇

 找回密碼
 註冊
查看: 13983|回復: 30

[教學] 【 源 碼 】 Ea源碼 - 修改源碼、技術分享 ( 第二章 )

[複製鏈接]
  • TA的每日心情
    開心
    2018-12-14 06:21 PM
  • 簽到天數: 123 天

    連續簽到: 2 天

    [LV.7]常住居民III

    發表於 2009-9-10 16:54:49 | 顯示全部樓層 |閱讀模式
    這邊需要考慮到這兩點…
        1. 如何傳送血條資訊
        2. 哪些時候該更新血條資訊
        關於第一點, 我們知道,和客戶端坐交涉的 都是 chrif.c 、 clif.c 首先我們從這邊開始找..
    位址 : ..\trunk\src\map


        我們用關鍵字 hp bar 下去找… 果然… 很快的我們找到了…clif_hpmeter_single

        這封包的資訊是這樣的
        | 0x106 | bl_id | hp | max hp |
        所以我們依樣畫葫蘆… 寫一個 clif_hpmeter_monster  
    void clif_hpmeter_monster(int fd,struct mob_data *md){
      WFIFOHEAD(fd,packet_len(0x106));
      WFIFOW(fd,0) = 0x106;
      WFIFOL(fd,2) = md->bl.id;
      WFIFOW(fd,6) = md->status.hp;
      WFIFOW(fd,8) = md->status.max_hp;
      WFIFOSET(fd, packet_len(0x106));
    }


        再來我們要得知哪些時候要更新血條資訊。
        由於 Ea 有 show_mob_info 的功能… 所以我們可以跟著她寫…
        我們收尋 "HP: 或者 "Lv 也或者 show_mob_info

        你因該會收尋到 clif_charnameack 來…
        這時我們只要在  &4 \ &1 \ &2 的後面加入個 &8 的判斷… 然後再調用 clif_hpmeter_monster 就可以了…
      if(battle_config.show_mob_info&8)
       clif_hpmeter_monster(fd,md);

        WBUFB(buf,30) = 0;
        WBUFB(buf,54) = 0;
        WBUFB(buf,78) = 0;

       
        然後再收尋 if (battle_config.show_mob_info&3) 把他變成 if (battle_config.show_mob_info&11)
        由於在clif_hpmeter_monster 後面出現了
    if (fd == 0)
      clif_send(buf, packet_len(cmd), bl, AREA);
        所以我們剛剛的 clif_hpmeter_monster 也要修改一下 變成
    void clif_hpmeter_monster(int fd,struct mob_data *md){
      if(fd==0){
       struct s_mapiterator* iter;
       TBL_PC* tsd;
       iter = mapit_getallusers();
       while( (tsd = (TBL_PC*)mapit_next(iter)) != NULL )
       {
        if(( tsd->bl.x > md->bl.x-AREA_SIZE ) && (tsd->bl.x < md->bl.x+AREA_SIZE) && ( tsd->bl.y > md->bl.y-AREA_SIZE ) && (tsd->bl.y < md->bl.y+AREA_SIZE))
        {
         WFIFOHEAD(tsd->fd,packet_len(0x106));
         WFIFOW(tsd->fd,0) = 0x106;
         WFIFOL(tsd->fd,2) = md->bl.id;
         WFIFOW(tsd->fd,6) = md->status.hp;
         WFIFOW(tsd->fd,8) = md->status.max_hp;
         WFIFOSET(tsd->fd, packet_len(0x106));
        }
       }
      }else{
       WFIFOHEAD(fd,packet_len(0x106));
       WFIFOW(fd,0) = 0x106;
       WFIFOL(fd,2) = md->bl.id;
       WFIFOW(fd,6) = md->status.hp;
       WFIFOW(fd,8) = md->status.max_hp;
       WFIFOSET(fd, packet_len(0x106));
      }
    }

    接著收尋 &battle_config.show_mob_info

       { "show_mob_info",                      &battle_config.show_mob_info,                   0,      0,      1|2|4,           },
    改成 { "show_mob_info",                      &battle_config.show_mob_info,                   0,      0,      1|2|4|8,        },
        恩… 變複雜了…
        相信聰明的你一定看的懂

    接著進行編譯 .. 前幾篇有提過這篇就不在提起了


    效果.. :



    【 源 碼 】 Ea源碼 - 修改源碼、技術分享
    【 源 碼 】 EA源碼 - 使用、開啟
    【 下 載 】 EA原碼 - 圖解

    本帖子中包含更多資源

    您需要 登錄 才可以下載或查看,沒有帳號?註冊

    x

    評分

    參與人數 1積分 +50 現金 +50 積極性 +50 收起 理由
    ‵Super”貓 + 50 + 50 + 50 精品文章

    查看全部評分

    回復

    使用道具 舉報

  • TA的每日心情
    慵懶
    2013-7-11 12:09 AM
  • 簽到天數: 118 天

    連續簽到: 1 天

    [LV.6]常住居民II

    發表於 2009-9-10 18:15:20 | 顯示全部樓層
    這是顯示怪物血條吧?
    回復 支持 反對

    使用道具 舉報

  • TA的每日心情
    開心
    2018-12-14 06:21 PM
  • 簽到天數: 123 天

    連續簽到: 2 天

    [LV.7]常住居民III

     樓主| 發表於 2009-9-10 18:42:23 | 顯示全部樓層
    這是顯示怪物血條吧?
    沒錯-/-!!..
    就是綠色那條
    回復 支持 反對

    使用道具 舉報

  • TA的每日心情
    慵懶
    2013-7-11 12:09 AM
  • 簽到天數: 118 天

    連續簽到: 1 天

    [LV.6]常住居民II

    發表於 2009-9-12 16:51:59 | 顯示全部樓層
    判斷用    if(sd==NULL)
            return 0;
    這樣不會全部血條都出來吧?
    回復 支持 反對

    使用道具 舉報

    頭像被屏蔽
  • TA的每日心情

    2010-5-9 09:31 PM
  • 簽到天數: 5 天

    連續簽到: 0 天

    [LV.2]偶爾看看I

    發表於 2009-9-20 07:02:34 | 顯示全部樓層
    提示: 作者被禁止或刪除 內容自動屏蔽
    回復 支持 反對

    使用道具 舉報

  • TA的每日心情
    郁悶
    2014-4-25 01:24 PM
  • 簽到天數: 25 天

    連續簽到: 1 天

    [LV.4]偶爾看看III

    發表於 2009-9-20 09:17:11 | 顯示全部樓層
    看起來好困難..好複雜

    我可能要看好幾次才看的懂...
    回復 支持 反對

    使用道具 舉報

    該用戶從未簽到

    發表於 2009-9-26 11:57:02 | 顯示全部樓層
    我還看不太懂耶!

    對我來說好像真的好難唷!
    回復 支持 反對

    使用道具 舉報

  • TA的每日心情

    2024-3-19 12:31 AM
  • 簽到天數: 171 天

    連續簽到: 1 天

    [LV.7]常住居民III

    發表於 2009-10-3 21:48:55 | 顯示全部樓層
    好酷哦!

    太棒了- -"

    不過還是不懂

    有空慢慢學~"~
    回復 支持 反對

    使用道具 舉報

  • TA的每日心情
    開心
    2020-1-9 05:56 AM
  • 簽到天數: 1 天

    連續簽到: 1 天

    [LV.1]初來乍到

    發表於 2009-10-5 18:04:47 | 顯示全部樓層
    好酷哦!

    看起來真的很不錯喔
    回復 支持 反對

    使用道具 舉報

  • TA的每日心情

    2022-6-12 07:34 PM
  • 簽到天數: 260 天

    連續簽到: 1 天

    [LV.8]以壇為家I

    發表於 2009-11-8 06:57:42 | 顯示全部樓層
    很多粗心的小新手
    照上面改完,發現沒有顯示,
    所以我補充一下..

    conf\battle\monster.conf
    裡的
    show_mob_info: 0
    要改成
    show_mob_info: 8
    回復 支持 反對

    使用道具 舉報

  • TA的每日心情
    郁悶
    2021-5-4 06:13 PM
  • 簽到天數: 365 天

    連續簽到: 1 天

    [LV.9]以壇為家II

    發表於 2009-11-24 17:26:58 | 顯示全部樓層
    哆啦大姐......
    我在clif.c裡找不到if (battle_config.show_mob_info&3)耶=  =
    回復 支持 反對

    使用道具 舉報

  • TA的每日心情

    2022-6-12 07:34 PM
  • 簽到天數: 260 天

    連續簽到: 1 天

    [LV.8]以壇為家I

    發表於 2009-11-25 02:33:21 | 顯示全部樓層
    本帖最後由 devil19891101 於 2009-11-25 02:35 AM 編輯
    哆啦大姐......
    我在clif.c裡找不到if (battle_config.show_mob_info&3)耶=  =
    阿鈞 發表於 2009-11-24 05:26 PM


    哪來的3 ?
    回復 支持 反對

    使用道具 舉報

  • TA的每日心情
    郁悶
    2021-5-4 06:13 PM
  • 簽到天數: 365 天

    連續簽到: 1 天

    [LV.9]以壇為家II

    發表於 2009-11-25 02:45:44 | 顯示全部樓層
    你只細看主樓阿
    真的是3=  =
    回復 支持 反對

    使用道具 舉報

  • TA的每日心情
    無聊
    2018-12-9 02:12 AM
  • 簽到天數: 6 天

    連續簽到: 1 天

    [LV.2]偶爾看看I

    發表於 2010-2-7 17:10:09 | 顯示全部樓層
    喔!!原來如此
    之前有下載已修改好的
    想問一下能增加百分比嗎?
    回復 支持 反對

    使用道具 舉報

  • TA的每日心情
    開心
    2010-12-7 09:42 AM
  • 簽到天數: 5 天

    連續簽到: 0 天

    [LV.2]偶爾看看I

    發表於 2010-2-8 00:45:53 | 顯示全部樓層
    好像有點難

    評分

    參與人數 1積分 -20 現金 -20 積極性 -20 收起 理由
    ‵Super”貓 -20 -20 -20 字數不足

    查看全部評分

    回復 支持 反對

    使用道具 舉報

    您需要登錄後才可以回帖 登錄 | 註冊

    本版積分規則

    Archiver|手機版|小黑屋|OK討論區

    GMT+8, 2024-5-2 09:24 AM , Processed in 0.087279 second(s), 24 queries , Gzip On.

    Powered by Discuz! X3.4

    Copyright © 2001-2020, Tencent Cloud.

    快速回復 返回頂部 返回列表