📄 uconnector.pas
字号:
end;
end;
end;
end;
procedure TConnector.DBMessageProcess (aPacket : PTPacketData);
var
i, cnt : Integer;
str : String;
ws : TWordInfoString;
pDBRecord : PTDBRecord;
LGRecord : TLGRecord;
CurDate, LastDate : TDateTime;
begin
Case aPacket^.RequestMsg of
DB_INSERT :
begin
if aPacket^.ResultCode = DB_OK then begin
if FGameStatus = gs_createchar then begin
pDBRecord := @aPacket^.Data;
Move (LoginData, LGRecord, SizeOf (TLGRecord));
for i := 0 to 5 - 1 do begin
// if LGRecord.CharInfo[i].CharName[0] = 0 then begin
// StrCopy (@LGRecord.CharInfo[i].CharName, @pDBRecord^.PrimaryKey);
// StrPCopy (@LGRecord.CharInfo[i].ServerName, ServerName);
if LGRecord.CharInfo [i].CharName = '' then begin
LGRecord.CharInfo[i].CharName := StrPas (@pDBRecord^.PrimaryKey);
LGRecord.CharInfo[i].ServerName := ServerName;
break;
end;
end;
ws.rmsg := SM_CHARINFO;
str := GetCharInfo;
SetWordString (ws.rwordstring, str);
cnt := sizeof(ws) - sizeof(TWordString) + SizeofWordString (ws.rWordstring);
AddSendData (@ws, cnt);
if LoginSender <> nil then begin
LoginSender.PutPacket (ConnectID, LG_UPDATE, 0, @LGRecord, SizeOf (TLGRecord));
end;
end;
end else begin
Case aPacket^.ResultCode of
DB_ERR_DUPLICATE :
begin
SendStatusMessage (MESSAGE_SELCHAR, '捞固 鞍篮 捞抚狼 某腐磐啊 乐嚼聪促');
end;
DB_ERR_NOTENOUGHSPACE :
begin
SendStatusMessage (MESSAGE_SELCHAR, '傍埃捞 何练秦 某腐磐甫 父甸 荐 绝嚼聪促');
end;
DB_ERR_INVALIDDATA :
begin
SendStatusMessage (MESSAGE_SELCHAR, '棵官弗 某腐磐 疙捞 酒凑聪促');
end;
DB_ERR_IO :
begin
SendStatusMessage (MESSAGE_SELCHAR, 'I/O 坷幅啊 惯积沁嚼聪促');
end;
Else
begin
SendStatusMessage (MESSAGE_SELCHAR, 'DB Server 郴何 坷幅涝聪促');
end;
end;
FGameStatus := gs_none;
end;
end;
DB_SELECT :
begin
if aPacket^.ResultCode = DB_OK then begin
if FGameStatus = gs_selectchar then begin
pDBRecord := @aPacket^.Data;
if TestStr (@pDBRecord^.PrimaryKey, 20) = false then begin
pDBRecord^.PrimaryKey[0] := 0;
end;
if TestStr (@pDBRecord^.PrimaryKey, 20) = false then begin
pDBRecord^.MasterName[0] := 0;
end;
if StrPas (@pDBRecord^.PrimaryKey) <> UseChar then begin
SendStatusMessage (MESSAGE_SELCHAR, 'DB 辑滚狼 郴何坷幅涝聪促');
UseChar := ''; UseLand := '';
FGameStatus := gs_none;
exit;
end;
if StrPas (@pDBRecord^.MasterName) <> LoginID then begin
SendStatusMessage (MESSAGE_SELCHAR, '夯牢狼 某腐磐啊 酒凑聪促');
UseChar := ''; UseLand := '';
FGameStatus := gs_none;
exit;
end;
if frmMain.sckGameConnect.Active = false then begin
SendStatusMessage (MESSAGE_SELCHAR, '了价钦聪促. 泪矫饶 促矫 楷搬秦 林技夸');
UseChar := ''; UseLand := '';
FGameStatus := gs_none;
exit;
end;
PlayChar := UseChar;
frmMain.AddLog (format ('某腐疙 : %s', [StrPas (@pDBRecord^.PrimaryKey)]));
Str := IpAddr + ',' + IntToStr (VerNo) + ',' + IntToStr (Byte (PaidType)) + ',' + IntToStr (Code);
StrPCopy (@pDBRecord^.Dummy, Str);
if GameSender <> nil then begin
GameSender.PutPacket (ConnectID, GM_CONNECT, 0, @aPacket^.Data, SizeOf (TDBRecord));
end;
FGameStatus := gs_gotogame;
end else if FGameStatus = gs_deletechar then begin
pDBRecord := @aPacket^.Data;
if StrPas (@pDBRecord^.PrimaryKey) <> UseChar then begin
SendStatusMessage (MESSAGE_SELCHAR, 'DB 辑滚狼 郴何坷幅涝聪促');
UseChar := ''; UseLand := '';
FGameStatus := gs_none;
exit;
end;
if StrPas (@pDBRecord^.MasterName) <> LoginID then begin
SendStatusMessage (MESSAGE_SELCHAR, '夯牢狼 某腐磐啊 酒凑聪促');
UseChar := ''; UseLand := '';
FGameStatus := gs_none;
exit;
end;
try
CurDate := Date - 7;
LastDate := StrToDate (StrPas (@pDBRecord^.LastDate));
if LastDate > CurDate then begin
SendStatusMessage (MESSAGE_SELCHAR, '弥辟 7老 捞傈 立加 某腐磐绰 瘤匡 荐 绝嚼聪促');
FGameStatus := gs_none;
exit;
end;
except
SendStatusMessage (MESSAGE_SELCHAR, '弥辟 7老 捞傈 立加 某腐磐绰 瘤匡 荐 绝嚼聪促');
FGameStatus := gs_none;
exit;
end;
Move (LoginData, LGRecord, SizeOf (TLGRecord));
for i := 0 to 5 - 1 do begin
// if StrPas (@LGRecord.CharInfo[i].CharName) = UseChar then begin
// if StrPas (@LGRecord.CharInfo[i].ServerName) = UseLand then begin
if LGRecord.CharInfo [i].CharName = UseChar then begin
if LGRecord.CharInfo [i].ServerName = UseLand then begin
FillChar (LGRecord.CharInfo[i], SizeOf (TCharInfo), 0);
break;
end;
end;
end;
if LoginSender <> nil then begin
LoginSender.PutPacket (ConnectID, LG_UPDATE, 0, @LGRecord, SizeOf (TLGRecord));
end;
end;
end else begin
Case aPacket^.ResultCode of
DB_ERR_NOTFOUND :
begin
SendStatusMessage (MESSAGE_SELCHAR, '急琶茄 某腐磐甫 茫阑 荐 绝嚼聪促');
end;
DB_ERR_INVALIDDATA :
begin
SendStatusMessage (MESSAGE_SELCHAR, '棵官弗 某腐磐 疙捞 酒凑聪促');
end;
DB_ERR_IO :
begin
SendStatusMessage (MESSAGE_SELCHAR, 'I/O 坷幅啊 惯积沁嚼聪促');
end;
Else
begin
SendStatusMessage (MESSAGE_SELCHAR, 'DB Server 郴何 坷幅涝聪促');
end;
end;
FGameStatus := gs_none;
end;
end;
DB_UPDATE :
begin
end;
Else
begin
// frmMain.AddLog (format ('%d Packet was received', [aPacket^.RequestMsg]));
end;
end;
end;
procedure TConnector.LoginMessageProcess (aPacket : PTPacketData);
var
cnt : Integer;
ws : TWordInfoString;
str : String;
PaidPacket : TPacketData;
pPaidData : PTPaidData;
PaidData : TPaidData;
begin
Case aPacket^.RequestMsg of
LG_INSERT :
begin
if aPacket^.ResultCode = DB_OK then begin
ShowWindow (cw_createlogin, FALSE);
ShowWindow (cw_login, TRUE);
SendStatusMessage (MESSAGE_LOGIN, '瘤陛 父电 立加捞抚栏肺 立加且 荐 乐嚼聪促');
end else begin
Case aPacket^.ResultCode of
DB_ERR_DUPLICATE :
begin
SendStatusMessage (MESSAGE_CREATELOGIN, '捞固 粮犁窍绰 立加捞抚涝聪促');
end;
Else
begin
SendStatusMessage (MESSAGE_CREATELOGIN, '肺弊牢 辑滚狼 郴何坷幅涝聪促');
end;
end;
end;
FGameStatus := gs_none;
end;
LG_SELECT :
begin
if aPacket^.ResultCode = DB_OK then begin
if FGameStatus = gs_login then begin
Move (aPacket^.Data, LoginData, SizeOf (TLGRecord));
{
if TestStr (@LoginData.PrimaryKey, 20) = false then begin
LoginData.PrimaryKey[0] := 0;
end;
if TestStr (@LoginData.Password, 20) = false then begin
LoginData.Password[0] := 0;
end;
if StrPas (@LoginData.PrimaryKey) <> LoginID then begin
SendStatusMessage (MESSAGE_LOGIN, format ('肺弊牢辑滚狼 郴何坷幅涝聪促', [ServerName]));
LoginID := ''; LoginPW := '';
FGameStatus := gs_none;
exit;
end;
if StrPas (@LoginData.Password) <> LoginPW then begin
SendStatusMessage (MESSAGE_LOGIN, format ('厚剐锅龋啊 棵官福瘤 臼嚼聪促', [ServerName]));
LoginID := ''; LoginPW := '';
FGameStatus := gs_none;
exit;
end;
}
if LoginData.PrimaryKey <> LoginID then begin
SendStatusMessage (MESSAGE_LOGIN, format ('肺弊牢辑滚狼 郴何坷幅涝聪促', [ServerName]));
LoginID := ''; LoginPW := '';
FGameStatus := gs_none;
exit;
end;
if LoginData.PassWord <> LoginPW then begin
SendStatusMessage (MESSAGE_LOGIN, format ('厚剐锅龋啊 棵官福瘤 臼嚼聪促', [ServerName]));
LoginID := ''; LoginPW := '';
FGameStatus := gs_none;
exit;
end;
ShowWindow (cw_login, FALSE);
ShowWindow (cw_selectchar, TRUE);
// StrPCopy (@LoginData.LastDate, DateToStr (Date));
// StrPCopy (@LoginData.IpAddr, IpAddr);
LoginData.LastDate := DateToStr (Date);
LoginData.IpAddr := IpAddr;
if LoginSender <> nil then begin
LoginSender.PutPacket (ConnectID, LG_UPDATE, 0, @LoginData, SizeOf (TLGRecord));
end;
ws.rmsg := SM_CHARINFO;
str := GetCharInfo;
SetWordString (ws.rwordstring, str);
cnt := sizeof(ws) - sizeof(TWordString) + SizeofWordString (ws.rWordstring);
AddSendData (@ws, cnt);
FGameStatus := gs_none;
if PaidSender = nil then begin
PaidType := pt_validate;
Code := 0;
end;
FillChar (PaidData, SizeOf (TPaidData), 0);
if PaidType = pt_none then begin
PaidData.rLoginID := LoginID;
PaidData.rIpAddr := IpAddr;
PaidData.rMakeDate := LoginData.MakeDate;
PaidSender.PutPacket (ConnectID, PM_CHECKPAID, 0, @PaidData, SizeOf (TPaidData));
SendStatusMessage (MESSAGE_SELCHAR, '蜡丰沥焊甫 犬牢吝涝聪促');
end else if PaidType = pt_timepay then begin
FillChar (PaidPacket, SizeOf (TPacketData), 0);
PaidPacket.PacketSize := SizeOf (Word) + SizeOf (Integer) + SizeOf (Byte) * 2 + SizeOf (TPaidData);
PaidPacket.RequestID := ConnectID;
PaidPacket.RequestMsg := PM_CHECKPAID;
PaidPacket.ResultCode := 1;
pPaidData := PTPaidData (@PaidPacket.Data);
pPaidData^.rLoginID := LoginID;
pPaidData^.rIpAddr := IpAddr;
pPaidData^.rRemainDay := 0;
pPaidData^.rPaidType := pt_timepay;
pPaidData^.rCode := 0;
PaidMessageProcess (@PaidPacket);
end else begin
PaidType := pt_validate;
SendStatusMessage (MESSAGE_SELCHAR, format ('[%s]某腐磐甫 急琶窍技夸.', [ServerName]));
end;
end;
end else begin
Case aPacket^.ResultCode of
DB_ERR_NOTFOUND :
begin
SendStatusMessage (MESSAGE_LOGIN, '拌沥沥焊甫 茫阑 荐 绝嚼聪促');
end;
DB_ERR_INVALIDDATA :
begin
SendStatusMessage (MESSAGE_LOGIN, '拌沥疙捞 棵官福瘤 臼嚼聪促');
end;
Else
begin
SendStatusMessage (MESSAGE_LOGIN, '促矫 涝仿秦 林技夸');
end;
end;
end;
FGameStatus := gs_none;
end;
LG_UPDATE :
begin
if aPacket^.ResultCode = DB_OK then begin
Move (aPacket^.Data, LoginData, SizeOf (TLGRecord));
Case FGameStatus of
gs_createchar : begin
SendStatusMessage (MESSAGE_SELCHAR, '某腐磐甫 父甸菌嚼聪促.');
ws.rmsg := SM_CHARINFO;
str := GetCharInfo;
SetWordString (ws.rwordstring, str);
cnt := sizeof(ws) - sizeof(TWordString) + SizeofWordString (ws.rWordstring);
AddSendData (@ws, cnt);
FGameStatus := gs_none;
end;
gs_changepass : begin
SendStatusMessage (MESSAGE_SELCHAR, '厚剐锅龋甫 函版沁嚼聪促');
FGameStatus := gs_none;
end;
gs_deletechar : begin
SendStatusMessage (MESSAGE_SELCHAR, '某腐磐甫 昏力沁嚼聪促');
ws.rmsg := SM_CHARINFO;
str := GetCharInfo;
SetWordString (ws.rwordstring, str);
cnt := sizeof(ws) - sizeof(TWordString) + SizeofWordString (ws.rWordstring);
AddSendData (@ws, cnt);
FGameStatus := gs_none;
end;
end;
end else begin
Case aPacket^.ResultCode of
DB_ERR_NOTFOUND :
begin
SendStatusMessage (MESSAGE_LOGIN, '拌沥沥焊甫 茫阑 荐 绝嚼聪促');
end;
end;
FGameStatus := gs_none;
end;
end;
Else
begin
// frmMain.AddLog (format ('%d Packet was received', [aPacket^.RequestMsg]));
end;
end;
end;
function TConnector.MessageProcess (aComData : PTWordComData) : Boolean;
var
i : Integer;
msg : PByte;
sKey : TCKey;
// pcKey : PTCKey;
pcVer : PTCVer;
// pcCreateIdPass : PTCCreateIdPass;
pcCreateIdPass2 : PTCCreateIdPass2;
pcCreateIdPass3 : PTCCreateIdPass3;
pcIdPass : PTCIdPass;
pcCreateChar : PTCCreateChar;
pcDeleteChar : PTCDeleteChar;
pcSelectChar : PTCSelectChar;
pcChangePassword : PTCChangePassword;
LGRecord : TLGRecord;
DBRecord : TDBRecord;
uStr : String;
boFlag : Boolean;
nYear, nMonth, nDay : Word;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -