X-Git-Url: http://deadsoftware.ru/gitweb?a=blobdiff_plain;f=src%2Fgame%2Fg_player.pas;h=d0275d093fca62244370f201ff0cabb68bcb98f8;hb=3fb071dcefe7c3d8081e5a3906c1983d02b5ccd0;hp=cda360c1006e6ad066964625442ae568e12fac86;hpb=bc73e6c570ea4dc04ecbb501a90bfc670141e161;p=d2df-sdl.git diff --git a/src/game/g_player.pas b/src/game/g_player.pas index cda360c..d0275d0 100644 --- a/src/game/g_player.pas +++ b/src/game/g_player.pas @@ -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; @@ -1096,7 +1096,7 @@ begin Team := BotList[num].team; // CTF / TDM // Âûáèðàåì íàñòðîéêè áîòà èç ñïèñêà ïî íîìåðó èëè èìåíè: - if lName = '' then + if lName = '' then num := Random(Length(BotList)) else begin @@ -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); @@ -2337,13 +2347,8 @@ begin end; if t = HIT_WATER then - begin - g_GFX_Bubbles(FObj.X+PLAYER_RECT.X+(PLAYER_RECT.Width div 2), - FObj.Y+PLAYER_RECT.Y-4, value div 2, 8, 4); - if Random(2) = 0 - then g_Sound_PlayExAt('SOUND_GAME_BUBBLE1', FObj.X, FObj.Y) - else g_Sound_PlayExAt('SOUND_GAME_BUBBLE2', FObj.X, FObj.Y); - end; + g_Game_Effect_Bubbles(FObj.X+PLAYER_RECT.X+(PLAYER_RECT.Width div 2), + FObj.Y+PLAYER_RECT.Y-4, value div 2, 8, 4); end; // Áóôåð óðîíà: @@ -5414,12 +5419,8 @@ begin FAir := 0; end else if (FAir mod 31 = 0) and not blockmon then - begin - g_GFX_Bubbles(FObj.X+PLAYER_RECT.X+(PLAYER_RECT.Width div 2), FObj.Y+PLAYER_RECT.Y-4, 5+Random(6), 8, 4); - if Random(2) = 0 - then g_Sound_PlayExAt('SOUND_GAME_BUBBLE1', FObj.X, FObj.Y) - else g_Sound_PlayExAt('SOUND_GAME_BUBBLE2', FObj.X, FObj.Y); - end; + g_Game_Effect_Bubbles(FObj.X+PLAYER_RECT.X+(PLAYER_RECT.Width div 2), + FObj.Y+PLAYER_RECT.Y-4, 5+Random(6), 8, 4); end else if FAir < AIR_DEF then FAir := AIR_DEF; @@ -5559,7 +5560,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 @@ -6517,11 +6518,8 @@ begin if BodyInLiquid(0, 0) then begin - g_GFX_Bubbles(Obj.X+Obj.Rect.X+(Obj.Rect.Width div 2)+Random(3)-1, - Obj.Y+Obj.Rect.Height+8, 1, 8, 4); - if Random(2) = 0 - then g_Sound_PlayExAt('SOUND_GAME_BUBBLE1', FObj.X, FObj.Y) - else g_Sound_PlayExAt('SOUND_GAME_BUBBLE2', FObj.X, FObj.Y); + g_Game_Effect_Bubbles(Obj.X+Obj.Rect.X+(Obj.Rect.Width div 2)+Random(3)-1, + Obj.Y+Obj.Rect.Height+8, 1, 8, 4); Exit; end;