DEADSOFTWARE

net: refactor bans
[d2df-sdl.git] / src / game / g_player.pas
index cda360c1006e6ad066964625442ae568e12fac86..1468551a3c29fcd0ee26e32bc564ed7800559c2d 100644 (file)
@@ -623,7 +623,7 @@ procedure g_Player_ResetAll(Force, Silent: Boolean);
 function  g_Player_Get(UID: Word): TPlayer;
 function  g_Player_GetCount(): Byte;
 function  g_Player_GetStats(): TPlayerStatArray;
-function  g_Player_ValidName(Name: String): Boolean;
+function  g_Player_ExistingName(Name: String): Boolean;
 function  g_Player_CreateCorpse(Player: TPlayer): Integer;
 procedure g_Player_CreateGibs(fX, fY: Integer; ModelName: String; fColor: TRGB);
 procedure g_Player_CreateShell(fX, fY, dX, dY: Integer; T: Byte);
@@ -1024,7 +1024,7 @@ begin
   _name := '';
   if BotNames <> nil then
     for a := 0 to High(BotNames) do
-      if g_Player_ValidName(BotNames[a]) then
+      if g_Player_ExistingName(BotNames[a]) then
       begin
         _name := BotNames[a];
         Break;
@@ -1116,11 +1116,13 @@ begin
 
 // Èìÿ áîòà:
   _name := BotList[num].name;
-// Çàíÿòî - âûáèðàåì ñëó÷àéíîå:
-  if not g_Player_ValidName(_name) then
-  repeat
-    _name := Format('DFBOT%.2d', [Random(100)]);
-  until g_Player_ValidName(_name);
+  if (_name = '') and (BotNames <> nil) then
+    for a := 0 to High(BotNames) do
+      if g_Player_ExistingName(BotNames[a]) then
+      begin
+        _name := BotNames[a];
+        Break;
+      end;
 
 // Ìîäåëü:
   _model := BotList[num].model;
@@ -1131,7 +1133,10 @@ begin
 // Ñîçäàåì áîòà:
   with g_Player_Get(g_Player_Create(_model, BotList[num].color, Team, True)) as TBot do
   begin
-    Name := _name;
+  // Åñëè èìåíè íåò, äåëàåì åãî èç UID áîòà
+    if _name = ''
+      then Name := Format('DFBOT%.5d', [UID])
+      else Name := _name;
 
     FDifficult.DiagFire := BotList[num].diag_fire;
     FDifficult.InvisFire := BotList[num].invis_fire;
@@ -1266,12 +1271,17 @@ begin
         model := config.ReadStr(IntToStr(a), 'model', '');  // Ìîäåëü
 
         // Êîìàíäà
-        if config.ReadStr(IntToStr(a), 'team', 'red') = 'red'
-          then team := TEAM_RED
-          else team := TEAM_BLUE;
+        s := config.ReadStr(IntToStr(a), 'team', '');
+        if s = 'red' then
+          team := TEAM_RED
+        else if s = 'blue' then
+          team := TEAM_BLUE
+        else
+          team := TEAM_NONE;
 
         // Öâåò ìîäåëè
         sa := parse(config.ReadStr(IntToStr(a), 'color', ''));
+        SetLength(sa, 3);
         color.R := StrToIntDef(sa[0], 0);
         color.G := StrToIntDef(sa[1], 0);
         color.B := StrToIntDef(sa[2], 0);
@@ -5559,7 +5569,7 @@ begin
             (y >= 0) and (y <= PLAYER_RECT.Height);
 end;
 
-function g_Player_ValidName(Name: string): Boolean;
+function g_Player_ExistingName(Name: string): Boolean;
 var
   a: Integer;
 begin