变量名 | 类 型 | 静态 | 数组 | 备 注 |
z | 字节集 | | |
写 | 写_封包写 | | |
全_配置 | 存取键值表 | | |
全_缓存.
取键值表 (全_端口 +
“基础配置”, 全_配置
)网页_访问 (全_配置.
取文本 (“游戏IP”) +
“:81/login/login.php”, 1,
“age=0&area=&channelNo=110001&channelType=0&checkAuth=1&game=wd&isRegister=0&isSetPwd=0&key=c0aea17ac7e8352843ffd9f1cc0c4fc0&mmid=&os=1&sid=” + 全_配置.
取文本 (“GM账号”) +
“×tamp=1702906312587&token=fcea920f7412b5da7be0cf42b8c93759&username=” + 全_配置.
取文本 (“GM账号”) +
“&userpwd=” +
密码加密 (全_配置.
取文本 (“GM密码”)) +
“&versionCode=202106290&versionName=2.073.0629”)
如果 (启动_TCP (全_配置.
取文本 (“游戏IP”), 全_配置.
取整数 (“GM区组”))
)
写.
HEX (“B0 58”)
写.
文本型_ (“110001” + 全_配置.
取文本 (“GM账号”),
真)
z = 写.
写封包 (0,
)
启动时间 =
GetTickCount64 ()
如果 (数据发送 (z
))

返回 (真)
返回 (假)

返回 (假)
返回 (客户端_发送 (全_客户端句柄, Z
))
变量名 | 类 型 | 静态 | 数组 | 备 注 |
写 | 写_封包写 | | |
z | 字节集 | | |
全_配置 | 存取键值表 | | |
全_缓存.
取键值表 (全_端口 +
“基础配置”, 全_配置
)写.
HEX (“23 50”)写.
文本型_ (type,
真)写.
文本型_ (“110001” + 全_配置.
取文本 (“GM账号”),
真)写.
文本型_ (M_des密文加密 (密文,
“userId=” + 全_配置.
取文本 (“GM账号”) +
“&game=wd&channelNo=110001&token=fcea920f7412b5da7be0cf42b8c93759”),
真)写.
文本型_ (“:15E2DB8523B131E72FA732754AF303F216E04E40DBBC3A8DDC7D95213CF6A31D016C4E1349100160C106409D9CB4CDAC0C5611D598E3E1DA21EFB9512896CC73:”,
真)写.
文本型_ (“::”,
真)写.
短整数型 (0,
真)写.
文本型_ (全_配置.
取文本 (“GM区组名”),
真)写.
字节型 (1
)写.
文本型_ (“110001”,
真)写.
文本型_ (“:0359D151E2FCCA40:”,
真)写.
文本型_ (“:1832E02B293D4FF09B2442D8F19A4E6051C3B6745278EF6F:”,
真)写.
文本型_ (“:5994E4F13929A3ACECA6671DABA81676:”,
真)写.
文本型_ (“2.072r.0617”,
真)写.
字节型 (1
)写.
文本型 (“M143678”,
真)写.
文本型 (“[]”,
真)z = 写.
写封包 (0
)数据发送 (z
)变量名 | 类 型 | 静态 | 数组 | 备 注 |
写 | 写_封包写 | | |
z | 字节集 | | |
验证运算 | 整数型 | | |
验证1_整数 | 整数型 | | |
验证2_整数 | 整数型 | | |
全_配置 | 存取键值表 | | |
全_缓存.
取键值表 (全_端口 +
“基础配置”, 全_配置
)验证运算 =
进制_十六到十 (验证1
)
如果 (验证运算 % 2 = 0
)
验证1_整数 =
进制_十六到十 (验证1
) + 1

验证1_整数 =
进制_十六到十 (验证1
) - 1

验证2_整数 =
进制_十六到十 (验证2
)写.
HEX (“30 02”)写.
文本型_ (“110001” + 全_配置.
取文本 (“GM账号”),
真) 写.
整数型 (验证1_整数,
真) 写.
整数型 (验证2_整数,
真) 写.
短整数型 (1,
真) 写.
文本型_ (“A538778986B9C746A2BA9F4CED1DAFEC”,
真) 写.
文本型_ (“7449b2c6b5a9275055ac6e39a4b82afc”,
真) 写.
字节型 (0
) 写.
短整数型 (1,
真) 写.
文本型_ (“9629FBF0021D84582221967A09E64372”,
真) 写.
文本型_ (“com.gbits.atm.cxwd”,
真) 写.
HEX (“00 00 00 00 04 01”) z = 写.
写封包 (0
)启动_TCP (全_配置.
取文本 (“游戏IP”), 全_配置.
取整数 (“GM线路”))
数据发送 (z
)心跳 ()|
GM登录_3在线登录 | | |
|
IP | 文本型 | | | |
端口 | 文本型 | | | | 验证1 | 文本型 | | | | 验证2 | 文本型 | | | |
变量名 | 类 型 | 静态 | 数组 | 备 注 |
写 | 写_封包写 | | |
z | 字节集 | | |
全_配置 | 存取键值表 | | |
全_缓存.
取键值表 (全_端口 +
“基础配置”, 全_配置
)写.
HEX (“30 02”)写.
文本型_ (“110001” + 全_配置.
取文本 (“GM账号”),
真) 写.
整数型 (到整数 (验证1
),
真) 写.
整数型 (到整数 (验证2
),
真) 写.
短整数型 (1,
真) 写.
文本型_ (“A538778986B9C746A2BA9F4CED1DAFEC”,
真) 写.
文本型_ (“7449b2c6b5a9275055ac6e39a4b82afc”,
真) 写.
字节型 (0
) 写.
短整数型 (1,
真) 写.
文本型_ (“9629FBF0021D84582221967A09E64372”,
真) 写.
文本型_ (“com.gbits.atm.cxwd”,
真) 写.
HEX (“00 00 00 00 04 01”) z = 写.
写封包 (0
)启动_TCP (全_配置.
取文本 (“游戏IP”), 全_配置.
取整数 (“GM线路”))
数据发送 (z
)心跳 ()写.
HEX (“10 60”)写.
文本型_ (角色名字,
真)z = 写.
写封包 (0,
真)数据发送 (z
)|
数据到达 | | |
|
pSende | 整数型 | | | |
dwConnID | 整数型 | | | | pData | 整数型 | | | | iLength | 整数型 | | | |
变量名 | 类 型 | 静态 | 数组 | 备 注 |
pBuffer | 字节集 | | |
a | 文本型 | | |
pBuffer =
指针到字节集 (pData, iLength
)
如果真 (pBuffer ≠
{ })
M_拆分返回包 (pBuffer
)
|
断开事件 | | |
|
pSender | | | | |
dwConnID | | | | | enOperation | | | | | iErrorCode | | | | |
Q_GM = 假
变量名 | 类 型 | 静态 | 数组 | 备 注 |
l_BuffData | 字节集 | | |
l_dLen | 整数型 | | |
l_Code | 字节型 | | |
l_Size | 整数型 | | |
l_Buffer | 字节集 | | |
l_Data | 字节集 | | |
l_len | 整数型 | | |
判断 (l_BuffData =
{ })
l_Buffer = Buffer

l_Buffer = l_BuffData + Buffer
l_dLen = 取字节集长度 (l_Buffer)
如果真 (l_dLen < 3
)
返回 ()
循环判断首 ()
l_Code = l_Buffer
[1
]
如果真 (l_Code ≠ 77
且 l_Buffer
[2
] ≠ 90
) 

l_BuffData =
{ } 
跳出循环 ()
如果真 (l_dLen < 10
)

l_BuffData = l_Buffer

跳出循环 ()
l_Size = 左移 (l_Buffer [9], 8) + l_Buffer [10]
l_Size = l_Size + 10

如果真 (l_Size > l_dLen
) 

l_BuffData = l_Buffer

跳出循环 ()
l_Data = 取字节集中间 (l_Buffer, 1, l_Size)
回调封包 (l_Data
) 
l_len = l_dLen - l_Size

如果真 (l_len ≤ 0
) 

l_BuffData =
{ }
跳出循环 ()
l_Buffer = 取字节集右边 (l_Buffer, l_len)
如果真 (l_len < 3
) 

l_BuffData = l_Buffer

跳出循环 ()
l_dLen = l_len
循环判断尾 (真)变量名 | 类 型 | 静态 | 数组 | 备 注 |
字节集 | 字节集 | | |
读 | 读_封包读 | | |
包头 | 文本型 | | |
type | 文本型 | | |
密匙 | 文本型 | | |
验证1_1 | 文本型 | | |
验证1_2 | 文本型 | | |
验证2 | 文本型 | | |
区组名 | 文本型 | | |
在线状态 | 整数型 | | |
信息 | 文本型 | | |
信息组 | 文本型 | | 0 |
频道 | 整数型 | | |
名字 | 文本型 | | |
内容 | 文本型 | | |
全_配置 | 存取键值表 | | |
名字组 | 文本型 | | 0 |
全_缓存.
取键值表 (全_端口 +
“基础配置”, 全_配置
)字节集 =
M_返回包解密 (Data,
真)读.
清数据 ()读.
置数据 (字节集
)读.
跳过 (10
)包头 = 读.
HEX (2
)
判断 (包头 =
“B1 F3”)
type = 读.
文本型_ ()
密匙 = 读.
文本型_ ()
如果真 (取文本长度 (密匙
) = 7
)
GM登录_2 (type, 密匙
)

Q_GM结果 =
“连接错误,错误代码 2”

判断 (包头 =
“33 57”)
验证1_1 = 读.
HEX (2
)
读.
跳过 (4
)
验证1_2 = 读.
HEX (2
)
读.
跳过 (2
)
读.
文本型_ ()
读.
跳过 (2
)
验证2 = 读.
HEX (4
)
读.
跳过 (2
)
区组名 =
文本_删右边 (读.
文本型_ (), 2
)
GM登录_3 (验证1_1 + 验证1_2, 验证2
)
Q_GM结果 =
“连接错误,错误代码 3”
判断 (包头 =
“F0 61”)
如果真 (读.
短整数型 () ≠ 1
)

Q_GM结果 =
“G登录区组没有开服呢”
返回 ()
如果真 (读.
短整数型 () < 1
)

Q_GM结果 =
“账号没有角色,无法登录”
返回 ()
读.跳过 (12)
在线状态 = 读.
字节型 ()
如果 (在线状态 = 0
)
GM登录_4 (全_配置.
取文本 (“GM名字”))


Q_GM结果 =
“角色在线或托管中,执行登录时貌似失败了”

判断 (包头 =
“10 B3”)
全_心跳时间 = 读.
整数型 ()
如果真 (全_心跳线程 =
假)
启动线程 (&定时心跳, ,
)

判断 (包头 =
“10 03”)
Q_GM = 真
判断 (包头 =
“B2 73”)
读.
文本型_ ()
读.
整数型 ()
信息 = 读.
文本型_ ()
信息组 =
分割文本 (信息,
“,”,
)
如果 (取数组成员数 (信息组
) = 4
)
GM登录_3在线登录 (信息组
[1
], 信息组
[2
], 信息组
[3
], 信息组
[4
])

Q_GM结果 =
“连接GM时,获取IP组信息失败”

判断 (包头 =
“B0 54”)
读.
跳过 (4
)
信息 = 读.
文本型_ ()
如果真 (寻找文本 (信息,
“来自其他地方的连接取代了你”, 1,
假) ≠ -1
)

Q_GM = 假


判断 (包头 =
“3F FF”)
频道 = 读.
短整数型 ()
如果真 (频道 = 9
或 频道 = 2
)

读.
跳过 (4
)

名字 = 读.
文本型_ ()

内容 = 读.
文本型 ()

如果真 (取文本左边 (内容, 1
) =
“@”)


如果真 (寻找文本 (名字,
“ ”, 1,
假) ≠ -1
)



名字组 =
分割文本 (名字,
“ ”,
)



名字 = 名字组
[1
]


如果真 (名字 ≠
“”)



如果真 (名字 ≠ 全_配置.
取文本 (“GM名字”))




喊话判断 (名字, 内容
)
















写.
HEX (“10 B2”)写.
整数型 (GetTickCount64 () - 启动