UID159057
帖子
精華
主題
積分2269
現金
積極性
威望
違規
熱心
推廣次數
閱讀權限10
註冊時間2009-5-26
在線時間 小時
最後登錄1970-1-1
TA的每日心情 | 開心 2018-12-14 06:21 PM |
---|
簽到天數: 123 天 連續簽到: 2 天 [LV.7]常住居民III
|
這邊需要考慮到這兩點…
1. 如何傳送血條資訊
2. 哪些時候該更新血條資訊
關於第一點, 我們知道,和客戶端坐交涉的 都是 chrif.c 、 clif.c 首先我們從這邊開始找..
我們用關鍵字 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
評分
-
查看全部評分
|