📄 uconnect.pas
字号:
doumiUser := TUserList (ShareRoom.UserList).GetUserPointer (doumiConnector.Name);
tmpUser.XPosMove := doumiUser.BasicData.x;
tmpUser.YPosMove := doumiUser.BasicData.y;
tmpUser.MoveConnector;
end;
exit;
end;
end;
if (UpperCase (RetStr) = '@APPEAR') then begin
if WhereStatus <> ws_inroom then exit;
if BattleRoom <> nil then exit;
if doumiConnector <> Self then exit;
RetStr := GetToken (Str, ' ', 1);
tmpConnector := ShareRoom.SearchConnector (RetStr);
tmpUser := TUserList (ShareRoom.UserList).GetUserPointer (tmpConnector.Name);
if tmpUser = nil then begin
SendChatMessage (format ('%s丛捞 绝嚼聪促.',[RetStr]), SAY_COLOR_SYSTEM);
end else begin
doumiUser := TUserList (ShareRoom.UserList).GetUserPointer (doumiConnector.Name);
doumiUser.XPosMove := tmpUser.BasicData.x;
doumiUser.YPosMove := tmpUser.BasicData.y;
doumiUser.MoveConnector;
end;
exit;
end;
}
{
if Str = '@辑滚喊鉴困' then begin
Rankpart.rAge := 0;
RankPart.rStart := 1;
RankPart.rEnd := 6;
if BattleDBSender <> nil then begin
BattleDBSender.PutPacket (ConnectID, BSBD_GETSERVERRANK, 0, @RankPart, SizeOf (TGetRankPart));
end;
exit;
end;
RetStr := GetToken (Str, ' ', 0);
if RetStr = '@林公傍' then begin
MagicStr := GetToken (Str, ' ', 1);
if Trim (MagicStr) = '' then begin
SendChatMessage ('@林公傍 (鼻过啊/八过啊/档过啊/芒过啊/硼过啊 吝 茄俺)', SAY_COLOR_SYSTEM);
end else begin
MainMagic := SearchExtremeMagic (MagicStr);
if MainMagic = '' then exit;
MainMagicData.rName := CharName;
MainMagicData.rServerName := ServerName;
MainMagicData.rMagic := MainMagic;
if BattleDBSender <> nil then begin
BattleDBSender.PutPacket (ConnectID, BSBD_MAGICRESULT, 0, @MainMagicData, SizeOf (TMainMagicData));
end;
end;
exit;
end;
RetStr := GetToken (Str, ' ', 0);
if RetStr = '@公傍鉴困' then begin
MagicStr := GetToken (Str, ' ', 1);
if Trim (MagicStr) = '' then begin
SendChatMessage ('@公傍鉴困 (鼻过啊/八过啊/档过啊/芒过啊/硼过啊 吝 茄俺)', SAY_COLOR_SYSTEM);
end else begin
MainMagicRank.rMainMagic := MagicStr;
MainMagicRank.rStart := 1;
MainMagicRank.rEnd := 50;
if BattleDBSender <> nil then begin
BattleDBSender.PutPacket (ConnectID, BSBD_GETMAINMAGICRANK, 0, @MainMagicRank, SizeOf (TGetMainMagicRank));
end;
exit;
end;
end;
}
if User = nil then begin
Case WhereStatus of
ws_inroom :
begin
if BattleRoom = nil then begin
ShareRoom.SendWatchMessage (CharName + ' : ' + str, SAY_COLOR_NORMAL);
end else begin
TBattleRoom (BattleRoom).SendWatchMessage (CharName + ' : ' + str, SAY_COLOR_NORMAL);
end;
end;
ws_room :
begin
ConnectorList.WaitRoomMessage (GroupTitle, CharName + ' : ' + Str, SAY_COLOR_NORMAL);
end;
end;
exit;
end;
end;
if User <> nil then begin
Move (aComData^, ComData, aComData^.cnt + SizeOf (Word));
TUser (User).MessageProcess (ComData);
end;
end;
end;
end;
procedure TConnector.BattleDBMessageProcess (aPacket : PTPacketData);
var
pSendRankData : PTSendRankData;
pSendRankPart : PTSendRankPart;
pSendServerRankPart : PTSendServerRankPart;
i, nCount : Integer;
Str, Dest : String;
begin
Case aPacket^.RequestMsg of
BDBS_SENDRANKDATA :
begin
if aPacket^.ResultCode = 0 then exit;
pSendRankData := @aPacket^.Data;
Win := pSendRankData^.rWin;
Lose := pSendRankData^.rLose;
DisConnected := pSendRankData^.rDisConnected;
BattleRecord := pSendRankData^.rBattleRecord;
Points := pSendRankData^.rPoints;
Grade := pSendRankData^.rGrade;
end;
BDBS_SENDRANKPART :
begin
if aPacket^.ResultCode = 0 then exit;
pSendRankPart := @aPacket^.Data;
nCount := pSendRankPart^.rEnd - pSendRankPart^.rStart + 1;
Str := '';
Dest := '';
for i := 0 to nCount - 1 do begin
Str := IntToStr (pSendRankPart^.rData [i].rGrade) + '困 ' +
IntToStr (pSendRankPart^.rData [i].rPoints) + ' ' +
pSendRankPart^.rData [i].rCharName + ' ( ' +
pSendRankPart^.rData [i].rServerName + ' ) ' + ' <' +
IntToStr (pSendRankPart^.rData [i].rWin) + '铰 ' +
IntToStr (pSendRankPart^.rData [i].rLose) + '菩' + '>' + ',';
Dest := Dest + Str;
end;
SendGradeList (Dest);
end;
BDBS_SENDSERVERRANK :
begin
exit;
if aPacket^.ResultCode = 0 then exit;
pSendServerRankPart := @aPacket^.Data;
nCount := pSendServerRankPart^.rEnd - pSendServerRankPart^.rStart + 1;
Str := '';
Dest := '';
for i := 0 to nCount - 1 do begin
Str := pSendServerRankPart^.rData [i].rServerName + ' (' +
IntToStr (pSendServerRankPart^.rData [i].rPoints) + ')' + #13;
Dest := Dest + Str;
end;
SendChatMessage (Dest, SAY_COLOR_NORMAL);
end;
BDBS_SENDMAINMAGICRANK :
begin
exit;
if aPacket^.ResultCode = 0 then exit;
pSendRankPart := @aPacket^.Data;
nCount := pSendRankPart^.rEnd - pSendRankPart^.rStart + 1;
Str := '';
Dest := '';
for i := 0 to nCount - 1 do begin
Str := IntToStr (pSendRankPart^.rData [i].rGrade) + '困 ' +
IntToStr (pSendRankPart^.rData [i].rPoints) + ' ' +
pSendRankPart^.rData [i].rCharName + ' ( ' +
pSendRankPart^.rData [i].rServerName + ' ) ' + ' <' +
IntToStr (pSendRankPart^.rData [i].rWin) + '铰 ' +
IntToStr (pSendRankPart^.rData [i].rLose) + '菩' + '>' + #13;
Dest := Dest + Str;
end;
SendChatMessage (Dest, SAY_COLOR_NORMAL);
end;
end;
end;
procedure TConnector.AddReceiveData (aData : PChar; aSize : Integer);
begin
if ReceiveBuffer.Put (aData, aSize) = false then begin
frmMain.WriteLogInfo ('TConnector.AddReceiveData() failed');
end;
end;
procedure TConnector.AddSendData (aData : PChar; aSize : Integer);
begin
if aSize <= 4096 then begin
GameServerConnectorList.AddSendData (GateNo, ConnectID, aData, aSize);
end else begin;
frmMain.WriteLogInfo ('TConnector.AddSendData Size > 4096');
end;
end;
procedure TConnector.SearchPositionbyServer (aServerName : String; var aXpos, aYpos : Integer);
var
i, Xpos, Ypos : Integer;
DB : TUserStringDB;
iName, ServerName, CharName : String;
begin
ServerName := '';
CharName := '';
DB := TUserStringDB.Create;
DB.LoadFromFile ('.\Setting\CreateSpecialArea.SDB');
for i := 0 to DB.Count - 1 do begin
iName := DB.GetIndexName (i);
if iName = '' then continue;
ServerName := DB.GetFieldValueString (iName, 'Name');
Xpos := DB.GetFieldValueInteger (iName, 'X');
Ypos := DB.GetFieldValueInteger (iName, 'Y');
if ServerName = aServerName then begin
aXpos := Xpos;
aYpos := Ypos;
exit;
end;
end;
end;
function TConnector.SearchGradeStrList (aServerName, aCharName : String) : Boolean;
var
i, j : Integer;
Strs : Array [0..5] of String;
Str : String;
begin
Result := false;
if (aCharName = '') or (aServerName = '') then exit;
for i := 0 to GradeStrList.Count - 1 do begin
Str := GradeStrList.Strings [i];
for j := 0 to 5 do begin
Str := GetValidStr3 (Str, Strs [j], ',');
if Str = '' then break;
end;
if (Strs[1] = aServerName) and (Strs[2] = aCharName) then begin
Result := true;
exit;
end;
end;
end;
function TConnector.SearchExtremeMagic (aStr : String) : String;
var
i, nMagic : Integer;
MagicData : TMagicData;
begin
Result := '';
nMagic := 0;
if aStr = '鼻过啊' then begin
for i := 0 to HAVEMAGICSIZE - 1 do begin
MagicClass.GetMagicData (StrPas (@CharData.HaveMagicArr[i].Name), MagicData, CharData.HaveMagicArr [i].Skill);
if (MagicData.rMagicType = MAGICTYPE_WRESTLING) and (MagicData.rcSkillLevel = 9999) then begin
inc (nMagic);
end;
end;
if (nMagic = 6) and (GetLevel (CharData.BasicMagicArr[0].Skill) = 9999) then begin
Result := aStr;
end;
exit;
end;
if aStr = '八过啊' then begin
for i := 0 to HAVEMAGICSIZE - 1 do begin
MagicClass.GetMagicData (StrPas (@CharData.HaveMagicArr[i].Name), MagicData, CharData.HaveMagicArr [i].Skill);
if (MagicData.rMagicType = MAGICTYPE_FENCING) and (MagicData.rcSkillLevel = 9999) then begin
inc (nMagic);
end;
end;
if (nMagic = 6) and (GetLevel (CharData.BasicMagicArr[1].Skill) = 9999) then begin
Result := aStr;
end;
exit;
end;
if aStr = '档过啊' then begin
for i := 0 to HAVEMAGICSIZE - 1 do begin
MagicClass.GetMagicData (StrPas (@CharData.HaveMagicArr[i].Name), MagicData, CharData.HaveMagicArr [i].Skill);
if (MagicData.rMagicType = MAGICTYPE_SWORDSHIP) and (MagicData.rcSkillLevel = 9999) then begin
inc (nMagic);
end;
end;
if (nMagic = 6) and (GetLevel (CharData.BasicMagicArr[2].Skill) = 9999) then begin
Result := aStr;
end;
exit;
end;
if aStr = '硼过啊' then begin
for i := 0 to HAVEMAGICSIZE - 1 do begin
MagicClass.GetMagicData (StrPas (@CharData.HaveMagicArr[i].Name), MagicData, CharData.HaveMagicArr [i].Skill);
if (MagicData.rMagicType = MAGICTYPE_HAMMERING) and (MagicData.rcSkillLevel = 9999) then begin
inc (nMagic);
end;
end;
if (nMagic = 6) and (GetLevel (CharData.BasicMagicArr[3].Skill) = 9999) then begin
Result := aStr;
end;
exit;
end;
if aStr = '芒过啊' then begin
for i := 0 to HAVEMAGICSIZE - 1 do begin
MagicClass.GetMagicData (StrPas (@CharData.HaveMagicArr[i].Name), MagicData, CharData.HaveMagicArr [i].Skill);
if (MagicData.rMagicType = MAGICTYPE_SPEARING) and (MagicData.rcSkillLevel = 9999) then begin
inc (nMagic);
end;
end;
if (nMagic = 6) and (GetLevel (CharData.BasicMagicArr[4].Skill) = 9999) then begin
Result := aStr;
end;
exit;
end;
end;
procedure TConnector.SendBattleGroupList (aType : Byte);
var
ComData : TWordComData;
psShowGroupList : PTSShowListWindow;
begin
psShowGroupList := @ComData.Data;
BattleGroupList.GetBattleGroupData (psShowGroupList, aType);
ComData.Cnt := sizeof(TSShowListWindow) - sizeof(TWordString) + sizeofwordstring(psShowGroupList^.rWordString);
AddSendData (@ComData, ComData.Cnt + SizeOf (Word));
end;
procedure TConnector.SendBattleRoomList (aGroupTitle : String; aType : Byte);
var
ComData : TWordComData;
psShowRoomList : PTSShowListWindow;
begin
psShowRoomList := @ComData.Data;
BattleGroupList.GetBattleRoomData (psShowRoomList, aGroupTitle, aType);
ComData.Cnt := sizeof(TSShowListWindow) - sizeof(TWordString) + sizeofwordstring(psShowRoomList^.rWordString);
AddSendData (@ComData, ComData.Cnt + SizeOf (Word));
end;
procedure TConnector.SendGradeList (aWordStr : String);
var
ComData : TWordComData;
psShowListWindow : PTSShowListWindow;
begin
psShowListWindow := @ComData.Data;
with psShowListWindow^ do begin
rMsg := SM_SHOWSPECIALWINDOW;
rWindow := WINDOW_GRADEWINDOW;
rType := 0;
SetWordString (rWordString, aWordStr);
ComData.Cnt := sizeof(TSShowListWindow) - sizeof(TWordString) + sizeofwordstring(rwordstring);
end;
AddSendData (@ComData, ComData.Cnt + SizeOf (Word));
end;
function TConnector.GetCharAge : Integer;
begin
Result := GetLevel (CharData.Light + CharData.Dark);
end;
procedure TConnector.SendChatMessage (astr: string; aColor: byte);
var
ComData : TWordComData;
psChatMessage : PTSChatMessage;
begin
psChatMessage := @ComData.Data;
with psChatMessage^ do begin
rmsg := SM_CHATMESSAGE;
case acolor of
SAY_COLOR_NORMAL : begin rFColor := WinRGB (22,22,22); rBColor := WinRGB (0, 0 ,0); end;
SAY_COLOR_SHOUT : begin rFColor := WinRGB (22,22,22); rBColor := WinRGB (0, 0 ,24); end;
SAY_COLOR_SYSTEM : begin rFColor := WinRGB (22,22, 0); rBColor := WinRGB (0, 0 ,0); end;
SAY_COLOR_NOTICE : begin rFColor := WinRGB (255 div 8, 255 div 8, 255 div 8); rBColor := WinRGB (133 div 8, 133 div 8, 133 div 8); end;
SAY_COLOR_GRADE0 : begin rFColor := WinRGB (18, 16, 14); rBColor := WinRGB (2,4,5); end;
SAY_COLOR_GRADE1 : begin rFColor := WinRGB (26, 23, 21); rBColor := WinRGB (2,4,5); end;
SAY_COLOR_GRADE2 : begin rFColor := WinRGB (31, 29, 27); rBColor := WinRGB (2,4,5); end;
SAY_COLOR_GRADE3 : begin rFColor := WinRGB (22, 18, 8); rBColor := WinRGB (1,4,11); end;
SAY_COLOR_GRADE4 : begin rFColor := WinRGB (23, 13, 4); rBColor := WinRGB (1,4,11); end;
SAY_COLOR_GRADE5 : begin rFColor := WinRGB (31, 29, 21); rBColor := WinRGB (1,4,11); end;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -