聯眾公升級協議分析續篇(五)
雲網(jimzj@21**.***
) 接上篇
五、出牌命令
上面說是這麼多,現在終於到了全部協議分析中最重要的部分內容了;記錄每乙個玩家所出的牌資訊,這樣就可以分析還剩餘什麼樣的牌了。
0x0000
0d 20 00 00
38 00 00 00-00 00 00 00 01 00 00 00. ..8...........
0x0010
00 00 00 00 00 00 00 00-01 00 00 00 00 00 00 00................
0x00203c 00 00 00 2f 00 00 00-01 00 00 00 09 00 00 00
<.../...........
0x003000 00 00 00 00 00 00 00-01 00 00 00 01 00 00 00................
出牌的資訊中應該包括了出牌人編號,下乙個出牌編號,出牌張數,出的牌的顏色和出的牌的編號,有了這個資訊的了解,相資訊你看懂這段資料不成問題的,除開命令字,其它的內容就很容易理解了。另外通過協議的分析,還包含了一輪的結事標誌,當前的得分,呵呵,這個可是由伺服器傳送過來的,相修改都有些難
l。對於得分,這個倒是要接上多幾個這樣的指令才能看得出來,因為前幾個一般都是零,所以看不出來。所以你要顯示在外掛程式上的剩餘分也可以利用這個的校對。
對於出牌的資料結構定義如下(因為有多個牌,所以要迴圈)
typedef struct _tagshjisendcard
shjisendcard, *lpshjisendcard ;
typedef struct _tagshjicardinfo
shjicardinfo, *lpshjicardinfo;
大家看過的定義的資料結構多數都是分為兩個部分,因為乙個包中包含了多個迴圈的部分,所以不必對於重複的部分來定義相同的結構,只有迴圈一下就可以了。利用上面的結構,就可以得到玩家出的牌的資訊了,如下所示:
void __fastcall tfrmmain::revsendcard( char * ppackcontent ) }
setsendcardpic( pinfo->ccurout, pinfo->**extout, pinfo->nscore, (gamecardcolor)pcard->ccolor, pcard->ccard ) ;
if( i == 0 )
if( m_curcolor.btstatus == 2 )//
檢測當前使用者是否沒有這種牌
} else if( (gamecardcolor)pcard->ccolor != m_curcolor.rcurcolor ) }
}
每個玩家出牌的資訊都收集到之後,就可以根據每乙個玩家所現的牌資訊來判斷一下他有什麼樣的牌,分析的結果直接顯示在外掛程式介面上。讓你的使用者一目了然地知道別人有什麼牌,知已知彼,百戰百勝,呵呵
j
聯眾公升級協議分析1
聯眾公升級協議分析 雲網 jimzj 21 記得剛到大學時,第一件和大家一起玩的就是打牌,相信很多人都會有這個經歷 我也是在那時候學會公升級 拖拉機 的。大二時曾經瘋狂玩過,所以對公升級一直都很情有獨衷 但工作後,一方面找不到人,另一方面就算找到人了也不能像以前一樣通 宵的去玩。還好,一次看到別人在...
聯眾公升級協議分析4
聯眾公升級協議分析 續篇 三 雲網 jimzj 21 接上篇下面就去如何去分析每個命令字作說明 在這之前,我們先定義每乙個包的包頭結構 typedef struct tagpackhead int n mand 命令字 int ndatalen 包長度 packhead,lppackhead 上面的...
網路協議分析 VRRP協議分析
2 rip 2的報文格式 3 rip 2的驗證報文 三 例項化 rip報文由頭部 header 和多個路由表項 route entries 部分組成。乙個rip表項中最多可以有25個路由表項。rip是基於udp協議的,所以rip報文的資料報不能超過512個位元組。1 command 長度8bit,報...