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

📄 ugroup.pas

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

   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 + -