📄 uremoteconnector.pas
字号:
str := GetTokenStr (str, uCurHeadSeak, ',');
str := GetTokenStr (str, uCurArmSeak, ',');
str := GetTokenStr (str, uCurLegSeak, ',');
for i := 0 to 10 - 1 do begin
str := GetTokenStr (str, uBasicMagic[i], ',');
end;
for i := 0 to 8 - 1 do begin
str := GetTokenStr (str, uWearItem[i], ',');
end;
for i := 0 to 30 - 1 do begin
str := GetTokenStr (str, uHaveItem[i], ',');
end;
for i := 0 to 30 - 1 do begin
str := GetTokenStr (str, uHaveMagic[i], ',');
end;
StrPCopy (@DBRecord.PrimaryKey, uPrimaryKey);
StrPCopy (@DBRecord.MasterName, uMasterName);
StrPCopy (@DBRecord.Guild, uGuild);
StrPCopy (@DBRecord.LastDate, uLastDate);
StrPCopy (@DBRecord.CreateDate, uCreateDate);
StrPCopy (@DBRecord.Sex, uSex);
DBRecord.ServerID := _StrToInt (uServerId);
DBRecord.X := _StrToInt (uX);
DBRecord.Y := _StrToInt (uY);
DBRecord.Light := _StrToInt (uLight);
DBRecord.Dark := _StrToInt (uDark);
DBRecord.Energy := _StrToInt (uEnergy);
DBRecord.InPower := _StrToInt (uInPower);
DBRecord.OutPower := _StrToInt (uOutPower);
DBRecord.Magic := _StrToInt (uMagic);
DBRecord.Life := _StrToInt (uLife);
DBRecord.Talent := _StrToInt (uTalent);
DBRecord.GoodChar := _StrToInt (uGoodChar);
DBRecord.BadChar := _StrToInt (uBadChar);
DBRecord.Adaptive := _StrToInt (uAdaptive);
DBRecord.Revival := _StrToInt (uRevival);
DBRecord.Immunity := _StrToInt (uImmunity);
DBRecord.Virtue := _StrToInt (uVirtue);
DBRecord.CurEnergy := _StrToInt (uCurEnergy);
DBRecord.CurInPower := _StrToInt (uCurInPower);
DBRecord.CurOutPower := _StrToInt (uCurOutPower);
DBRecord.CurMagic := _StrToInt (uCurMagic);
DBRecord.CurLife := _StrToInt (uCurLife);
DBRecord.CurHealth := _StrToInt (uCurHealth);
DBRecord.CurSatiety := _StrToInt (uCurSatiety);
DBRecord.CurPoisoning := _StrToInt (uCurPoisoning);
DBRecord.CurHeadSeak := _StrToInt (uCurHeadSeak);
DBRecord.CurArmSeak := _StrToInt (uCurArmSeak);
DBRecord.CurLegSeak := _StrToInt (uCurLegSeak);
for i := 0 to 10 - 1 do begin
DBRecord.BasicMagicArr[i].Skill := _StrToInt (uBasicMagic[i]);
end;
for i := 0 to 8 - 1 do begin
rdstr := uWearItem[i];
rdstr := GetTokenStr (rdstr, uname, ':');
rdstr := GetTokenStr (rdstr, ucolor, ':');
rdstr := GetTokenStr (rdstr, ucount, ':');
StrPCopy (@DBRecord.WearItemArr[i].Name, uname);
DBRecord.WearItemArr[i].Color := _StrToInt (ucolor);
DBRecord.WearItemArr[i].Count := _StrToInt (ucount);
end;
for i := 0 to 30 - 1 do begin
rdstr := uHaveItem[i];
rdstr := GetTokenStr (rdstr, uname, ':');
rdstr := GetTokenStr (rdstr, ucolor, ':');
rdstr := GetTokenStr (rdstr, ucount, ':');
StrPCopy (@DBRecord.HaveItemArr[i].Name, uname);
DBRecord.HaveItemArr[i].Color := _StrToInt (ucolor);
DBRecord.HaveItemArr[i].Count := _StrToInt (ucount);
end;
for i := 0 to 30 - 1 do begin
rdstr := uHaveMagic[i];
rdstr := GetTokenStr (rdstr, uname, ':');
rdstr := GetTokenStr (rdstr, uskill, ':');
StrPCopy (@DBRecord.HaveMagicArr[i].Name, uname);
DBRecord.HaveMagicArr[i].Skill := _StrToInt (uskill);
end;
if DBProvider.Update (keyStr, @DBRecord) <> DB_OK then begin
RetStr := 'Message,data write failed';
Socket.SendText (RetStr);
exit;
end;
end else begin
frmMain.AddLog ('Unknown Command Received - ' + aData);
end;
end else begin
if UpperCase (cmdStr) = 'FIELDS' then begin
RetStr := 'Fields,' + frmMain.GetItemDataFields;
AddSendData (RetStr);
end else if UpperCase (cmdStr) = 'CREATE' then begin
end else if UpperCase (cmdStr) = 'DELETE' then begin
end else if UpperCase (cmdStr) = 'READ' then begin
if Trim (keyStr) = '' then exit;
FillChar (DBRecord, SizeOf (TDBRecord), 0);
StrPCopy (@DBRecord.PrimaryKey, KeyStr);
ConnectorList.AddPacketToGameServer (ConnectID, DB_ITEMSELECT, 0, @DBRecord.PrimaryKey, SizeOf (DBRecord.PrimaryKey));
end else if UpperCase (cmdStr) = 'WRITE' then begin
if Trim (keyStr) = '' then exit;
StrPCopy (@buffer, KeyStr + ',' + Str);
ConnectorList.AddPacketToGameServer (ConnectID, DB_ITEMUPDATE, 0, @buffer, StrLen (buffer) + 1);
end else begin
frmMain.AddLog ('Unknown Command Received - ' + aData);
end;
end;
end;
end;
// TRemoteConnectorList
constructor TRemoteConnectorList.Create;
begin
UniqueID := 0;
DataList := TList.Create;
end;
destructor TRemoteConnectorList.Destroy;
begin
Clear;
DataList.Free;
inherited Destroy;
end;
procedure TRemoteConnectorList.Clear;
var
i : Integer;
RemoteConnector : TRemoteConnector;
begin
for i := 0 to DataList.Count - 1 do begin
RemoteConnector := DataList.Items [i];
RemoteConnector.Free;
end;
DataList.Clear;
end;
function TRemoteConnectorList.GetCount : Integer;
begin
Result := DataList.Count;
end;
function TRemoteConnectorList.CreateConnect (aSocket : TCustomWinSocket; aType : TRemoteType) : Boolean;
var
RemoteConnector : TRemoteConnector;
begin
Result := true;
try
RemoteConnector := TRemoteConnector.Create (aSocket, aType, UniqueID);
DataList.Add (RemoteConnector);
Inc (UniqueID);
except
frmMain.AddEvent ('TRemoteConnectorList.CreateConnect failed (' + aSocket.RemoteAddress + ')');
Result := false;
end;
end;
function TRemoteConnectorList.DeleteConnect (aSocket : TCustomWinSocket) : Boolean;
var
i : Integer;
RemoteConnector : TRemoteConnector;
begin
Result := true;
for i := 0 to DataList.Count - 1 do begin
RemoteConnector := DataList.Items [i];
if RemoteConnector.Socket = aSocket then begin
DataList.Delete (i);
exit;
end;
end;
frmMain.AddEvent ('TRemoteConnectorList.DeleteConnect failed (' + aSocket.RemoteAddress + ')');
Result := false;
end;
procedure TRemoteConnectorList.AddReceiveData (aSocket : TCustomWinSocket; aData : String);
var
i : Integer;
RemoteConnector : TRemoteConnector;
begin
for i := 0 to DataList.Count - 1 do begin
RemoteConnector := DataList.Items [i];
if RemoteConnector.Socket = aSocket then begin
RemoteConnector.AddReceiveData (aData);
exit;
end;
end;
frmMain.AddEvent ('TRemoteConnectorList.AddReceiveData failed (' + aSocket.RemoteAddress + ')');
end;
procedure TRemoteConnectorList.AddRequestData (aMsgID, aConnectID, aResultCode : Integer; aData : String);
var
i : Integer;
RemoteConnector : TRemoteConnector;
begin
for i := 0 to DataList.Count - 1 do begin
RemoteConnector := DataList.Items [i];
if RemoteConnector.ConnectID = aConnectID then begin
RemoteConnector.AddRequestData (aMsgID, aResultCode, aData);
exit;
end;
end;
frmMain.AddEvent ('TRemoteConnectorList.AddRequestData failed');
end;
procedure TRemoteConnectorList.Update (CurTick : Integer);
var
i : Integer;
RemoteConnector : TRemoteConnector;
begin
for i := 0 to DataList.Count - 1 do begin
RemoteConnector := DataList.Items [i];
RemoteConnector.Update (CurTick);
end;
end;
procedure TRemoteConnectorList.SetWriteAllow (aSocket : TCustomWinSocket);
var
i : Integer;
RemoteConnector : TRemoteConnector;
begin
for i := 0 to DataList.Count - 1 do begin
RemoteConnector := DataList.Items [i];
if RemoteConnector.Socket = aSocket then begin
RemoteConnector.WriteAllow := true;
exit;
end;
end;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -