📄 ugroup.pas
字号:
TUser (FighterUser).EndUser;
TUser (OwnerUser).EndUser;
TUser (OwnerUser).BasicData.X := OwnerXpos;
TUser (OwnerUser).BasicData.Y := BOTH_YPOS;
TUser (OwnerUser).BasicData.Dir := OwnerDir;
// TUser (OwnerUser).CommandChangeCharState (wfs_normal, false);
// TUser (OwnerUser).BasicData.Feature.rfeaturestate := wfs_normal;
TUser (FighterUser).BasicData.X := FighterXpos;
TUser (FighterUser).BasicData.Y := BOTH_YPOS;
TUser (FighterUser).BasicData.Dir := FighterDir;
// TUser (FighterUser).CommandChangeCharState (wfs_normal, false);
// TUser (FighterUser).BasicData.Feature.rfeaturestate := wfs_normal;
TUser (OwnerUser).SendClass.SendMap (TUser (OwnerUser).BasicData,
TUser (OwnerUser).Manager.MapName, TUser (OwnerUser).Manager.ObjName,
TUser (OwnerUser).Manager.RofName, TUser (OwnerUser).Manager.TilName,
TUser (OwnerUser).Manager.SoundBase);
TUser (FighterUser).SendClass.SendMap (TUser (FighterUser).BasicData,
TUser (FighterUser).Manager.MapName, TUser (FighterUser).Manager.ObjName,
TUser (FighterUser).Manager.RofName, TUser (FighterUser).Manager.TilName,
TUser (FighterUser).Manager.SoundBase);
TUser (OwnerUser).StartUser;
TUser (FighterUser).StartUser;
TUser (OwnerUser).SetActionState (as_ice);
TUser (FighterUser).SetActionState (as_ice);
TUser (OwnerUser).SendRefillMessage (TUser (OwnerUser).BasicData.ID, TUser(OwnerUser).BasicData);
TUser (FighterUser).SendRefillMessage (TUser (FighterUser).BasicData.ID, TUser(FighterUser).BasicData);
OwnerPercent := 100;
FighterPercent := 100;
if (aStage mod 2) = 1 then begin
TUser (OwnerUser).SendClass.SendBattleBar (Fighter, Owner, FighterWin, OwnerWin, 100, 100, BattleType);
TUser (FighterUser).SendClass.SendBattleBar (Fighter, Owner, FighterWin, OwnerWin, 100, 100, BattleType);
// RoomStatus := brs_readyfight;
// exit;
end else begin
TUser (OwnerUser).SendClass.SendBattleBar (Owner, Fighter, OwnerWin, FighterWin, 100, 100, BattleType);
TUser (FighterUser).SendClass.SendBattleBar (Owner, Fighter, OwnerWin, FighterWin, 100, 100, BattleType);
{
if (OwnerWin = WIN_SCORE) or (FighterWin = WIN_SCORE) then begin
inc (Stage);
exit;
end else begin
RoomStatus := brs_readyfight;
exit;
end;
}
end;
end;
procedure TBattleRoom.RemoveConnector (aConnector : TConnector);
begin
if OwnerConnector = nil then exit;
if OwnerUser <> nil then begin
if OwnerConnector = aConnector then begin
FboAllowDelete := true;
TUserList (UserList).FinalLayer (OwnerConnector);
OwnerConnector := nil;
OwnerUser := nil;
Owner := '';
exit;
end;
if FighterConnector = aConnector then begin
TUserList (UserList).FinalLayer (FighterConnector);
TConnector (FighterConnector).ExitBattleRoom;
FighterConnector := nil;
FighterUser := nil;
Fighter := '';
exit;
end;
end;
RemoveViewerConnector (aConnector);
end;
procedure TBattleRoom.ExitConnector (aConnector : TConnector);
var
prd : PTSShowListWindow;
ComData : TWordComData;
Str : String;
begin
if OwnerConnector = nil then exit;
if OwnerConnector = aConnector then begin
FboAllowDelete := true;
exit;
end;
if FighterConnector = aConnector then begin
TUserList (UserList).FinalLayer (FighterConnector);
TConnector (FighterConnector).ExitBattleRoom;
FighterConnector := nil;
FighterUser := nil;
Fighter := '';
end else begin
RemoveViewerConnector (aConnector);
end;
prd := @ComData.Data;
prd^.rMsg := SM_SHOWSPECIALWINDOW;
prd^.rWindow := WINDOW_ROOMWINDOW;
prd^.rType := 3;
Str := GetRoomString;
SetWordString (prd^.rWordString, str);
ComData.Cnt := sizeof(TSShowListWindow) - sizeof(TWordString) + sizeofwordstring(prd^.rWordString);
ConnectorList.SendLatestRoomList (aConnector.GroupTitle, @ComData, ComData.Cnt + SizeOf (Word));
// ConnectorList.SendLatestList (ws_room, @ComData, ComData.Cnt + SizeOf (Word));
end;
procedure TBattleRoom.SetBattleBar (aSenderInfo : TBasicData; aPercent : Integer);
begin
if OwnerUser = nil then exit;
if aSenderInfo.id = TUser (OwnerUser).BasicData.id then begin
OwnerPercent := aPercent;
end else if aSenderInfo.id = TUser (FighterUser).BasicData.id then begin
FighterPercent := aPercent;
end;
end;
procedure TBattleRoom.SetUserMotion (aSenderInfo : TBasicData; aMotion : Integer);
begin
if OwnerUser = nil then exit;
if aSenderInfo.id = TUser (OwnerUser).BasicData.id then begin
OwnerMotion := aMotion;
end else if aSenderInfo.id = TUser (FighterUser).BasicData.id then begin
FighterMotion := aMotion;
end;
end;
procedure TBattleRoom.SendWatchMessage (aStr : String; aColor : Byte);
var
i : Integer;
Connector : TConnector;
begin
if ViewerList.Count <= 0 then exit;
if OwnerUser <> nil then begin
if OwnerConnector <> nil then begin
TConnector (OwnerConnector).SendChatMessage (aStr, aColor);
end;
if FighterConnector <> nil then begin
TConnector (FighterConnector).SendChatMessage (aStr, aColor);
end;
for i := 0 to ViewerList.Count - 1 do begin
Connector := ViewerList.Items [i];
Connector.SendChatMessage (aStr, aColor);
end;
end else begin
for i := 0 to JoinList.Count - 1 do begin
Connector := JoinList.Items [i];
Connector.SendChatMessage (aStr, aColor);
end;
end;
end;
procedure TBattleRoom.SendWatchMap;
var
i : Integer;
doumiConnector, Connector : TConnector;
doumiUser : TUser;
begin
doumiConnector := SearchConnector (DOUMI_CHAR);
if doumiConnector = nil then exit;
doumiUser := TUserList (Self.UserList).GetUserPointer (doumiConnector.Name);
for i := 0 to ViewerList.Count - 1 do begin
Connector := ViewerList.Items [i];
Connector.SendMap (doumiUser.BasicData, MapName, ObjName, RofName, TilName, SoundBase);
end;
end;
procedure TBattleRoom.SendRankData (aConnector : TConnector);
var
RankData : TGetRankData;
begin
RankData.rName := aConnector.CharName;
RankData.rServerName := aConnector.ServerName;
RankData.rAge := aConnector.GetCharAge;
if StrPas (@aConnector.CharData.Sex) = '巢' then
RankData.rSex := 0
else RankData.rSex := 1;
if BattleDBSender <> nil then
BattleDBSender.PutPacket (aConnector.connectID, BSBD_GETRANKDATA, 0, @RankData, SizeOf (TGetRankData)); // sdb data 阂矾坷扁
end;
procedure TBattleRoom.SendResultData (aOwnerWin, aFighterWin, aOwnerDisCon, aFighterDisCon : Integer);
var
ResultData : TBattleResultData;
begin
ResultData.rOwnerName := OwnerName;
ResultData.rOwnerServer := OwnerServer;
ResultData.rFighterName := FighterName;
ResultData.rFighterServer := FighterServer;
ResultData.rOwnerWin := aOwnerWin;
ResultData.rOwnerLose := aFighterWin;
ResultData.rOwnerDisCon := aOwnerDisCon;
ResultData.rFighterWin := aFighterWin;
ResultData.rFighterLose := aOwnerWin;
ResultData.rFighterDisCon := aFighterDisCon;
if BattleDBSender <> nil then begin
BattleDBSender.PutPacket (0, BSBD_BATTLERESULT, 0, @ResultData, SizeOf (TBattleResultData));
// ConnectID甫 构肺 秦具窍瘤? 0栏肺 烙矫利栏肺 持菌绰单.. ;;;; 铝.
// 0栏肺... 怖 罐阑荤恩 犬牢 绝捞...
if OwnerConnector <> nil then begin
SendRankData (TConnector (OwnerConnector));
end;
if FighterConnector <> nil then begin
SendRankData (TConnector (FighterConnector));
end;
end;
end;
procedure TBattleRoom.KickOutChar (aName : String);
var
i : Integer;
Connector : TConnector;
begin
if OwnerUser = nil then begin
if aName = '' then begin
for i := JoinList.Count - 1 downto 0 do begin
Connector := JoinList.Items [i];
if Connector.SysopScope < 100 then begin
Connector.WhereStatus := ws_group;
Connector.SendBattleGroupList (0);
Connector.SendChatMessage ('款康磊 夸没俊 狼秦 规俊辑 唱癌聪促', SAY_COLOR_SYSTEM);
Connector.ExitShareRoom;
end;
end;
exit;
end else begin
for i := 0 to JoinList.Count - 1 do begin
Connector := JoinList.Items [i];
if Connector.CharName = aName then begin
Connector.WhereStatus := ws_group;
Connector.SendBattleGroupList (0);
Connector.SendChatMessage ('款康磊 夸没俊 狼秦 规俊辑 唱癌聪促', SAY_COLOR_SYSTEM);
Connector.ExitShareRoom;
exit;
end;
end;
{
for i := 0 to ViewerList.Count - 1 do begin
Connector := ViewerList.Items [i];
if Connector.CharName = aName then begin
Connector.WhereStatus := ws_group;
Connector.SendBattleGroupList (0);
Connector.SendChatMessage ('款康磊 夸没俊 狼秦 规俊辑 唱癌聪促', SAY_COLOR_SYSTEM);
Connector.ExitShareRoom;
exit;
end;
end;
}
end;
end else begin
if FighterConnector <> nil then begin
if TConnector (FighterConnector).CharName = aName then begin
TConnector (FighterConnector).WhereStatus := ws_room;
TConnector (FighterConnector).SendChatMessage ('规厘 夸没俊 狼秦 规俊辑 唱癌聪促', SAY_COLOR_SYSTEM);
ExitConnector (TConnector (FighterConnector));
exit;
end;
end;
for i := 0 to ViewerList.Count - 1 do begin
Connector := ViewerList.Items [i];
if Connector.CharName = aName then begin
Connector.WhereStatus := ws_room;
Connector.SendChatMessage ('规厘 夸没俊 狼秦 规俊辑 唱癌聪促', SAY_COLOR_SYSTEM);
ExitConnector (Connector);
exit;
end;
end;
end;
end;
function TBattleRoom.SearchConnector (aCharName : String) : TConnector;
var
i : Integer;
Connector : TConnector;
begin
Result := nil;
for i := 0 to JoinList.Count - 1 do begin
Connector := JoinList.Items [i];
if Connector.CharName = aCharName then begin
Result := Connector;
exit;
end;
end;
end;
procedure TBattleRoom.ExitViewerConnector (aConnector : TConnector);
var
i : Integer;
tmpConnector, Connector : TConnector;
begin
tmpConnector := SearchConnector (DOUMI_CHAR);
if tmpConnector = aConnector then begin
for i := 0 to ViewerList.Count - 1 do begin
Connector := ViewerList.Items [i];
RemoveViewerConnector (Connector);
Connector.WhereStatus := ws_group;
Connector.SendBattleGroupList (0);
Connector.SendChatMessage ('瘤陛篮 包恩且 荐 绝嚼聪促', SAY_COLOR_SYSTEM);
end;
end;
end;
// TBattleGroup;
constructor TBattleGroup.Create (aGroupData : PTCreateGroupData);
begin
Name := aGroupData^.Name;
ViewName := aGroupData^.ViewName;
RoomLimit := aGroupData^.RoomLimit;
MinAge := aGroupData^.MinAge;
MaxAge := aGroupData^.MaxAge;
boGrade := aGroupData^.boGrade;
DataList := TList.Create;
end;
destructor TBattleGroup.Destroy;
var
i : Integer;
BattleRoom : TBattleRoom;
begin
for i := 0 to DataList.Count - 1 do begin
BattleRoom := DataList.Items [i];
BattleRoom.Free;
end;
DataList.Clear;
DataList.Free;
inherited Destroy;
end;
function TBattleGroup.GetGroupString : String;
var
Str : String;
begin
if boGrade = true then begin
Str := ' <' + '鉴困扁废' + '>';
end else begin
Str := '';
end;
Result := ViewName + ':' + ' ( 俺汲规荐 ' + IntToStr (Count) + ' )' + Str;
end;
function TBattleGroup.CreateBattleRoom (aOwnerConnector : TConnector; aOwner : String; var aRetStr : String) : TBattleRoom;
var
i, iNo : Integer;
boFlag : Boolean;
ComData : TWordComData;
pd : PTSShowListWindow;
BattleRoom : TBattleRoom;
Age : Integer;
str : String;
begin
Result := nil;
if DataList.Count >= RoomLimit then begin
aRetStr := '歹 捞惑 父甸 荐 绝嚼聪促';
exit;
end;
Age := aOwnerConnector.GetCharAge;
if (Age < MinAge) or (Age > MaxAge) then begin
aRetStr := '捞 弊缝俊绰 父甸 荐 绝嚼聪促';
exit;
end;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -