⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ugroup.pas

📁 千年源代码,只缺少控件,可以做二次开发用,好不容易得来的
💻 PAS
📖 第 1 页 / 共 4 页
字号:
         tmpConnector.ExitBattleRoom;
         exit;
      end;
   end;
end;

function TBattleRoom.GetJoinCount : Integer;
begin
   Result := JoinList.Count;
end;

procedure TBattleRoom.AddJoinConnector (aConnector : TConnector);
begin
   JoinList.Add (aConnector);
end;

procedure TBattleRoom.RemoveJoinConnector (aConnector : TConnector);
var
   i : Integer;
   tmpConnector : TConnector;
begin
   for i := 0 to JoinList.Count - 1 do begin
      tmpConnector := JoinList.Items [i];
      if tmpConnector = aConnector then begin
         JoinList.Delete (i);
         exit;
      end;
   end;
end;

function TBattleRoom.GetViewerConnector (aIndex : Integer) : TConnector;
begin
   Result := nil;

   if ViewerList.Count = 0 then exit;
   if aIndex >= ViewerList.Count then exit;

   Result := ViewerList.Items [aIndex];
end;

procedure TBattleRoom.Update (CurTick : Integer);
var
   Users : TUserList;
   OwnConnector, FgtConnector : TConnector;
   OwnUser, FgtUser : TUser;
begin
   Users := nil;
   
   if UserList <> nil then begin
      Users := TUserList (UserList);
      Users.Update (CurTick);
   end;

   if OwnerConnector = nil then exit;

   if (OwnerUser = nil) and (Owner <> '') then begin
      OwnerUser := Users.GetUserPointer (Owner);
   end;
   if (FighterUser = nil) and (Fighter <> '') then begin
      FighterUser := Users.GetUserPointer (Fighter);
   end;

   // Users.Update (CurTick);

   if (Fighter = '') and (RoomStatus <> brs_waitfighter) and
      (RoomStatus <> brs_none) then begin
      RoomStatus := brs_none;
      if (Stage > 0) and (Stage < TOTAL_SCORE) then begin
         if FboRoomGrade = true then begin
            SendResultData (OwnerWin, FighterWin, 0, 1);
         end;
      end;
   end;

   OwnConnector := TConnector (OwnerConnector);
   FgtConnector := TConnector (FighterConnector);
   OwnUser := TUser (OwnerUser);
   FgtUser := TUser (FighterUser);

   Case RoomStatus of
      brs_none :
         begin
            if OwnerUser <> nil then begin
               OwnUser.SendClass.SendShowCenterMessage('措访 惑措磊啊 甸绢棵锭鳖瘤 措扁窍咯 林技夸', WinRGB(31, 31, 31));
               RoomStatus := brs_waitfighter;
            end;
         end;
      brs_waitfighter :
         begin
            if (OwnerUser <> nil) and (FighterUser <> nil) then begin
               SendRankData (OwnConnector);
               SendRankData (FgtConnector);

               OwnerName := OwnConnector.CharName;
               FighterName := FgtConnector.CharName;
               OwnerServer := OwnConnector.ServerName;
               FighterServer := FgtConnector.ServerName;

               OwnUser.SendRefillMessage (OwnUser.BasicData.ID, OwnUser.BasicData);
               FgtUser.SendRefillMessage (FgtUser.BasicData.ID, FgtUser.BasicData);

               OwnUser.SendClass.SendBattleBar (Owner, Fighter, OwnerWin, FighterWin, OwnerPercent, FighterPercent, BattleType);
               FgtUser.SendClass.SendBattleBar (Owner, Fighter, OwnerWin, FighterWin, OwnerPercent, FighterPercent, BattleType);

               if OwnUser.BasicData.X <> OWNER_XPOS then begin
                  OwnerXpos := OWNER_XPOS;
                  OwnerDir := DR_2;

                  OwnUser.EndUser;

                  OwnUser.BasicData.X := OwnerXpos;
                  OwnUser.BasicData.Y := BOTH_YPOS;
                  OwnUser.BasicData.Dir := OwnerDir;
//                  OwnUser.BasicData.Feature.rfeaturestate := wfs_normal;

                  OwnUser.SendClass.SendMap (OwnUser.BasicData, OwnUser.Manager.MapName,
                     OwnUser.Manager.ObjName, OwnUser.Manager.RofName,
                     OwnUser.Manager.TilName, OwnUser.Manager.SoundBase);

                  OwnUser.StartUser;
                  OwnUser.SetActionState (as_ice);
               end;

               OwnUser.SendClass.SendShowCenterMessage (format ('%s丛捞 措访惑措磊肺,甸绢坷继嚼聪促', [Fighter]), WinRGB (31, 31, 31));
               FgtUser.SendClass.SendShowCenterMessage (format ('%s丛阑 措访惑措磊肺,急琶窍继嚼聪促', [Owner]), WinRGB (31, 31, 31));
               OwnUser.SendClass.SendChatMessage (format ('%s丛狼 傈利篮 %d铰 %d菩 %d谗辫 %d痢 %d困 涝聪促',
                  [Fighter, FgtConnector.Win, FgtConnector.Lose, FgtConnector.DisConnected, FgtConnector.Points, FgtConnector.Grade]), SAY_COLOR_SYSTEM);
               FgtUser.SendClass.SendChatMessage (format ('%s丛狼 傈利篮 %d铰 %d菩 %d谗辫 %d痢 %d困 涝聪促',
                  [Owner, OwnConnector.Win, OwnConnector.Lose, OwnConnector.DisConnected, OwnConnector.Points, OwnConnector.Grade]), SAY_COLOR_SYSTEM);

//               BattleStartTick := CurTick;
               StatusElapsedTick := CurTick;

               RoomStatus := brs_ready;
            end;
         end;
      brs_ready :
         begin
            OwnUser.SendClass.SendShowCenterMessage ('措访霖厚 窍绞矫坷', WinRGB (31, 31, 31));
            FgtUser.SendClass.SendShowCenterMessage ('措访霖厚 窍绞矫坷', WinRGB (31, 31, 31));
            OwnUser.SendClass.SendShowCenterMessage ('霖厚啊 场唱搁 牢荤(F4)窍绞矫坷', WinRGB (31, 31, 31));
            FgtUser.SendClass.SendShowCenterMessage ('霖厚啊 场唱搁 牢荤(F4)窍绞矫坷', WinRGB (31, 31, 31));

            OwnerXpos := OWNER_XPOS;
            FighterXpos := FIGHTER_XPOS;
            OwnerDir := DR_2;
            FighterDir := DR_6;
            StatusElapsedTick := CurTick;

            Stage := 0;
            OwnerWin := 0;
            FighterWin := 0;

            RoomStatus := brs_readyfight;
         end;
      brs_readyfight :
         begin
            if CurTick > StatusElapsedTick + 4000 then begin
               OwnConnector.SendShowCenterMessage ('霖厚矫埃捞 版苞登绢,措访篮 吝瘤邓聪促', WinRGB (31, 31, 31));
               FgtConnector.SendShowCenterMessage ('霖厚矫埃捞 版苞登绢,措访篮 吝瘤邓聪促', WinRGB (31, 31, 31));
               FboAllowDelete := true;
               StatusElapsedTick := CurTick;
               exit;
            end;

            if Stage >= 1 then begin
               if (OwnUser.BasicData.X = OwnerXpos) and (OwnUser.BasicData.Y = BOTH_YPOS) and
                  (OwnUser.BasicData.Dir = OwnerDir) then begin
                  if (FgtUser.BasicData.X = FighterXpos) and (FgtUser.BasicData.Y = BOTH_YPOS) and
                     (FgtUser.BasicData.Dir = FighterDir) then begin

                     OwnUser.SendClass.SendShowCenterMessage ('磊府甫 颗败 措访阑 矫累钦聪促', WinRGB (31, 31, 31));
                     FgtUser.SendClass.SendShowCenterMessage ('磊府甫 颗败 措访阑 矫累钦聪促', WinRGB (31, 31, 31));

                     OwnUser.SendClass.SendShowCenterMessage ('霖厚窍绞矫坷', WinRGB (31, 31, 31));
                     FgtUser.SendClass.SendShowCenterMessage ('霖厚窍绞矫坷', WinRGB (31, 31, 31));

                     inc (Stage);

                     OwnUser.SendClass.SendShowCenterMessage (format ('STAGE %d', [Stage]), WinRGB (31, 31, 31));
                     FgtUser.SendClass.SendShowCenterMessage (format ('STAGE %d', [Stage]), WinRGB (31, 31, 31));

                     StatusElapsedTick := CurTick;
                     BattleStartTick := CurTick;
                     RoomStatus := brs_fighting;
                     exit;
                  end;
               end;
            end else begin
               if (OwnUser.BasicData.X = OwnerXpos) and (OwnUser.BasicData.Y = BOTH_YPOS) and
                  (OwnUser.BasicData.Dir = OwnerDir) and (OwnerMotion = AM_HELLO) then begin
                  if (FgtUser.BasicData.X = FighterXpos) and (FgtUser.BasicData.Y = BOTH_YPOS) and
                     (FgtUser.BasicData.Dir = FighterDir) and (FighterMotion = AM_HELLO) then begin

                     OwnUser.SendRefillMessage (OwnUser.BasicData.ID, OwnUser.BasicData);
                     FgtUser.SendRefillMessage (FgtUser.BasicData.ID, FgtUser.BasicData);
                     OwnUser.SendClass.SendBattleBar (Owner, Fighter, OwnerWin, FighterWin, OwnerPercent, FighterPercent, BattleType);
                     FgtUser.SendClass.SendBattleBar (Owner, Fighter, OwnerWin, FighterWin, OwnerPercent, FighterPercent, BattleType);

                     OwnUser.SendClass.SendShowCenterMessage ('措访阑 矫累钦聪促', WinRGB (31, 31, 31));
                     FgtUser.SendClass.SendShowCenterMessage ('措访阑 矫累钦聪促', WinRGB (31, 31, 31));

                     inc (Stage);

                     OwnUser.SendClass.SendShowCenterMessage (format ('STAGE %d', [Stage]), WinRGB (31, 31, 31));
                     FgtUser.SendClass.SendShowCenterMessage (format ('STAGE %d', [Stage]), WinRGB (31, 31, 31));

                     OwnerMotion := AM_NONE;
                     FighterMotion := AM_NONE;

                     StatusElapsedTick := CurTick;
                     BattleStartTick := CurTick;
                     RoomStatus := brs_fighting;
                     exit;
                  end;
               end;;
            end;
         end;
      brs_fighting :
         begin
            if OwnConnector.WaitTick = 0 then begin
               if OwnUser.GetActionState = as_ice then begin
                  OwnUser.SetActionState (as_free);
                  FgtUser.SetActionState (as_free);
                  OwnConnector.WaitStartTick := 0;
                  FgtConnector.WaitStartTick := 0;
               end;
            end;

            StatusElapsedTick := CurTick;
{
            if TUser (OwnerUser).BasicData.dir <> OwnerDir then begin
               TUser (OwnerUser).SendClass.SendChatMessage (format ('%s丛捞 磊府捞呕肺 菩窍继嚼聪促', [Owner]), WinRGB (31, 31, 31));
               TUser (FighterUser).SendClass.SendChatMessage (format ('%s丛捞 磊府捞呕肺 菩窍继嚼聪促', [Owner]), WinRGB (31, 31, 31));
               inc (FighterWin);
               RoomStatus := brs_nextready;
               exit;
            end else if TUser (FighterUser).BasicData.dir <> FighterDir then begin
               TUser (OwnerUser).SendClass.SendChatMessage (format ('%s丛捞 磊府捞呕肺 菩窍继嚼聪促. 促澜措访栏肺 逞绢癌聪促', [Owner]), WinRGB (31, 31, 31));
               TUser (FighterUser).SendClass.SendChatMessage (format ('%s丛捞 磊府捞呕肺 菩窍继嚼聪促. 促澜措访栏肺 逞绢癌聪促', [Owner]), WinRGB (31, 31, 31));
               inc (OwnerWin);
               RoomStatus := brs_nextready;
               exit;
            end;
}

            if OwnUser.BasicData.Feature.rfeaturestate = wfs_die then begin
               inc (FighterWin);
               OwnUser.SendClass.SendShowCenterMessage (format ('%s丛捞 %d铰 窍继嚼聪促.', [Fighter, FighterWin]), WinRGB (31, 31, 31));
               FgtUser.SendClass.SendShowCenterMessage (format ('%s丛捞 %d铰 窍继嚼聪促.', [Fighter, FighterWin]), WinRGB (31, 31, 31));
               RoomStatus := brs_nextready;
               exit;
            end else if FgtUser.BasicData.Feature.rfeaturestate = wfs_die then begin
               inc (OwnerWin);
               OwnUser.SendClass.SendShowCenterMessage (format ('%s丛捞 %d铰 窍继嚼聪促.', [Owner, OwnerWin]), WinRGB (31, 31, 31));
               FgtUser.SendClass.SendShowCenterMessage (format ('%s丛捞 %d铰 窍继嚼聪促.', [Owner, OwnerWin]), WinRGB (31, 31, 31));
               RoomStatus := brs_nextready;
               exit;
            end;

            if CurTick > BattleStartTick + 8000 then begin
               if OwnerPercent > FighterPercent then begin
                  inc (OwnerWin);
                  OwnUser.SendClass.SendShowCenterMessage (format ('%s丛捞 %d铰 窍继嚼聪促.', [Owner, OwnerWin]), WinRGB (31, 31, 31));
                  FgtUser.SendClass.SendShowCenterMessage (format ('%s丛捞 %d铰 窍继嚼聪促.', [Owner, OwnerWin]), WinRGB (31, 31, 31));
                  RoomStatus := brs_nextready;
                  exit;
               end else if OwnerPercent < FighterPercent then begin
                  inc (FighterWin);
                  OwnUser.SendClass.SendShowCenterMessage (format ('%s丛捞 %d铰 窍继嚼聪促.', [Fighter, FighterWin]), WinRGB (31, 31, 31));
                  FgtUser.SendClass.SendShowCenterMessage (format ('%s丛捞 %d铰 窍继嚼聪促.', [Fighter, FighterWin]), WinRGB (31, 31, 31));
                  RoomStatus := brs_nextready;
                  exit;
               end else if OwnerPercent = FighterPercent then begin
                  OwnUser.SendClass.SendShowCenterMessage ('措访矫埃捞 版苞窍咯 措访阑 辆丰钦聪促', WinRGB (31, 31, 31));
                  FgtUser.SendClass.SendShowCenterMessage ('措访矫埃捞 版苞窍咯 措访阑 辆丰钦聪促', WinRGB (31, 31, 31));
                  FboAllowDelete := true;
                  BattleStartTick := CurTick;
                  exit;
               end;

               BattleStartTick := CurTick;
            end;
         end;
      brs_nextready :
         begin
            {
            if Stage < TOTAL_SCORE then begin
               if CurTick > StatusElapsedTick + 500 then begin
                  RemakeBattleChar (Stage);
                  StatusElapsedTick := CurTick;
               end;
            end;

            if CurTick > StatusElapsedTick + 500 then begin
               if Stage = 3 then begin
                  OwnUser.SetActionState (as_ice);
                  FgtUser.SetActionState (as_ice);

                  if OwnerWin = WIN_SCORE then begin
                     Winner := Owner;
                     Loser := Fighter;
                     OwnUser.SendClass.SendShowCenterMessage (format ('%d : %d 肺 %s丛捞,铰府窍继嚼聪促', [OwnerWin, FighterWin, Winner]), WinRGB (31, 31, 31));
                     FgtUser.SendClass.SendShowCenterMessage (format ('%d : %d 肺 %s丛捞,菩窍继嚼聪促', [OwnerWin, FighterWin, Loser]), WinRGB (31, 31, 31));
                  end else if FighterWin = WIN_SCORE then begin
                     Winner := Fighter;
                     Loser := Owner;
                     OwnUser.SendClass.SendShowCenterMessage (format ('%d : %d 肺 %s丛捞,菩窍继嚼聪促', [FighterWin, OwnerWin, Loser]), WinRGB (31, 31, 31));
                     FgtUser.SendClass.SendShowCenterMessage (format ('%d : %d 肺 %s丛捞,铰府窍继嚼聪促', [FighterWin, OwnerWin, Winner]), WinRGB (31, 31, 31));
                  end;

                  if FboRoomGrade = true then begin
                     SendResultData (OwnerWin, FighterWin, 0, 0);
                  end;

                  OwnUser.SendClass.SendShowCenterMessage ('措访捞 场车嚼聪促,F4甫 穿福搁 唱哎 荐 乐嚼聪促', WinRGB (31, 31, 31));
                  FgtUser.SendClass.SendShowCenterMessage ('措访捞 场车嚼聪促,F4甫 穿福搁 唱哎 荐 乐嚼聪促', WinRGB (31, 31, 31));

                  RoomStatus := brs_end;
               end;
            end;
            }

            if CurTick <= StatusElapsedTick + 700 then exit;

            RemakeBattleChar (Stage);
            StatusElapsedTick := CurTick;

            if (OwnerWin = WIN_SCORE) or (FighterWin = WIN_SCORE) then begin
               OwnUser.SetActionState (as_ice);
               FgtUser.SetActionState (as_ice);

               if OwnerWin = WIN_SCORE then begin
                  Winner := Owner;
                  Loser := Fighter;
                  OwnUser.SendClass.SendShowCenterMessage (format ('%d : %d 肺 %s丛捞,铰府窍继嚼聪促', [OwnerWin, FighterWin, Winner]), WinRGB (31, 31, 31));
                  FgtUser.SendClass.SendShowCenterMessage (format ('%d : %d 肺 %s丛捞,菩窍继嚼聪促', [OwnerWin, FighterWin, Loser]), WinRGB (31, 31, 31));
               end else if FighterWin = WIN_SCORE then begin
                  Winner := Fighter;
                  Loser := Owner;
                  OwnUser.SendClass.SendShowCenterMessage (format ('%d : %d 肺 %s丛捞,菩窍继嚼聪促', [FighterWin, OwnerWin, Loser]), WinRGB (31, 31, 31));
                  FgtUser.SendClass.SendShowCenterMessage (format ('%d : %d 肺 %s丛捞,铰府窍继嚼聪促', [FighterWin, OwnerWin, Winner]), WinRGB (31, 31, 31));
               end;

               OwnerMotion := AM_NONE;
               FighterMotion := AM_NONE;

               if FboRoomGrade = true then begin
                  SendResultData (OwnerWin, FighterWin, 0, 0);
               end;

               OwnUser.SendClass.SendShowCenterMessage ('措访捞 场车嚼聪促,F4甫 穿福搁 唱哎 荐 乐嚼聪促', WinRGB (31, 31, 31));
               FgtUser.SendClass.SendShowCenterMessage ('措访捞 场车嚼聪促,F4甫 穿福搁 唱哎 荐 乐嚼聪促', WinRGB (31, 31, 31));

               inc (Stage);
               RoomStatus := brs_end;
            end else begin
               RoomStatus := brs_readyfight;
            end;
         end;
      brs_end :
         begin
            if (OwnerMotion = AM_HELLO) or (FighterMotion = AM_HELLO) then begin
               FboAllowDelete := true;
            end;

            if CurTick > StatusElapsedTick + 30000 then begin
               FboAllowDelete := true;
            end;
         end;

   end;
end;

procedure TBattleRoom.RemakeBattleChar (aStage : Integer);
begin
   if (aStage mod 2) = 1 then begin
      OwnerXpos := FIGHTER_XPOS;
      FighterXpos := OWNER_XPOS;
      OwnerDir := DR_6;
      FighterDir := DR_2;
   end else begin
      OwnerXpos := OWNER_XPOS;
      FighterXpos := FIGHTER_XPOS;
      OwnerDir := DR_2;
      FighterDir := DR_6;
   end;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -