網名館

解讀珊瑚蟲CoralQQ.ini代碼的祕密

珊瑚蟲QQ的參數配置文件 中有很多代碼,裏面藏着珊瑚蟲QQ的許多祕密。現把我解讀出來的部分提供給大家,不正確的地方請大家指正,也可以在文章下面的主題社區留言發表你的看法。

1、參數

解讀珊瑚蟲CoralQQ.ini代碼的祕密

所有參數區分大小寫。部分參數所代表的意義如下:

“%A”——對方所在地區。

“%a”——對方詳細地址。

“%I”——對方IP地址,無IP地址時為“”。

“%N”——對方暱稱

“%n”——對方QQ號。

“%o”——對方在線狀態返回碼之一(檢測對方是否上線。1:在線,0:離線或隱身)。

“%P”——對方端口號。

“%p”——換行。

“%s”——對方在線狀態返回碼之二(檢測對方上線以後的狀態。10:在線,20:離線或隱身,30:離開)。

“%t”——當前系統時間

“%V”——對方QQ版本號,沒有測到版本號時為“<移動QQ>”。

 2、運算符

   “;”——註釋符,用於幫助讀懂代碼,其後整行的字符不視為代碼,不執行。

“=”——關係運算符,用於符號和值之間數值比較。

“()”——語句範圍符,用於限定關係式的範圍。它必須成對使用,否則將出錯。

“?”——判斷符,用於判斷邏輯關係。

“:”——轉折符,用於邏輯關係的轉折。

邏輯關係採用 x?y:z 格式的三目運算,即,當 x 成立時結果為 y,否則結果為 z。

  3、代碼解讀

下面以“消息對話框傳統 IP 信息格式”為例説明代碼的應用。

IpFormat=(%I=)?(%o=0?(%V=<移動QQ>?%N 離線%p無法顯示其所在地區、IP地址和QQ版本號:%N 隱身上線或已下線%p%V):(%s=10?%N 在線%p:%N 離開%p)暫時未能顯示其所在地區和IP地址%p%V):(%s=20?%N 正在隱身或已下線%p:(%s=10?%N 在線%p:%N 離開%p))%A(%a=()?:%a)%p%I(%P=0?::%P)%V

上述代碼看似複雜,其實只是簡單的三目運算,簡化如下,看得清楚些:

IpFormat=(%I=)?(%o=0?(%V=<移動QQ>?%N 離線:%N 隱身上線或已下線):%s=10?%N 在線:%N 離開):%s=20?%N 正在隱身或已下線:(%s=10?%N 在線:%N 離開)

第一層是(%I=)? 部分,就是判斷有沒有 IP 地址,是一個三目運算,有如下兩種情況:

(1)沒有 IP,就是 %I= 成立,這時執行以下代碼:“%o=0?(%V=<移動QQ>?%N 離線:%N 隱身上線或已下線):%s=10?%N 在線:%N 離開”,具體內容下面再做解釋。

(2)有 IP,就是 %I= 不成立,這時執行剩下的代碼:“%s=20?%N 正在隱身或已下線:(%s=10?%N 在線:%N 離開)”。

第二層之一是 %o=0? 部分,就是判斷對方是否上線,仍是一個三目運算,也有兩種情況:

(1)對方沒上線,就是 %o=0 成立,這時執行以下代碼:“%V=<移動QQ>?%N 離線:%N 隱身上線或已下線”。

(2)對方上線,就是 %o=0 不成立,這時執行以下代碼:“%s=10?%N 在線:%N 離開”。

第二層之二是 %s=20? 部分,就是判斷對方上線後的情況,仍是一個三目運算,也有兩種情況:

(1)對方不在線,就是 %s=20 成立,這時要麼對方隱身,要麼對方已經下線了,所以顯示對方“正在隱身或已下線”。

(2)對方在線,就是 %s=20 不成立,這時繼續執行“%s=10?%N 在線:%N 離開”。

第三層之一是 %V=<移動QQ>? 部分,就是判斷對方是否有 QQ 版本號,%V=<移動QQ>成立時,説明對方離線;%V=<移動QQ>不成立時,説明對方隱身上線或已下線。

第三層之二是 %s=10? 部分,就是判斷對方是否在線,%s=10 成立時,説明對方在線;%s=10 不成立時,説明對方離開。

未簡化前的代碼只是在判斷了相應的在線狀態後增加了顯示所在地區、IP 地址和 QQ 版本號等內容,用 %p 換行顯示。

好了,先到這裏吧。