A.I.M. Jagged Alliance2

Добро пожаловать, Гость. Пожалуйста, выберите:
Вход || Регистрация.
19.04.2024 в 22:10:06

Главная Главная Помощь Помощь Поиск Поиск Участники Участники Вход Вход Регистрация Регистрация
A.I.M. « Наука и религия в исходниках НО. »
Тут обсуждают, что Терапевт должен сделать, чтобы мне было хорошо.

   A.I.M.
   Обсуждаем игры
   Night Ops
(Модераторы: ПМ, Терапевт, maks_tm)
   Наука и религия в исходниках НО.
« Предыдущая Тема | Следующая Тема »
  Тема:  Наука и религия в исходниках НО.             Страниц:  1     « Открыть сокрытое! »Прочитано 69009 раз
Seven
[Голос Америки]
Прирожденный Джаец




WWW

Пол:
Репутация: +351
Re: Наука и религия в исходниках НО.
« Ответ #220 от 30.08.2017 в 23:34:14 »

2Терапевт:  
Судя по всему, это просто неудачная копипаста из DecideAction.c - там есть ровно такой же код - если единственный доступный для атаки противник умирает, ищем нормального и если находим, будем через Red AI к нему добираться, так как в Black AI нет поиска противника. То есть скопировать скопировали, а имя функции поменять забыли.
Зарегистрирован

Сборки 1.13 | Ja2+AI | Youtube | VK
Seven
[Голос Америки]
Прирожденный Джаец




WWW

Пол:
Репутация: +351
Re: Наука и религия в исходниках НО.
« Ответ #221 от 19.12.2017 в 18:31:33 »

Еще один ванильный баг в 1.2:
 
FindLocations.c
Quote:
UINT8 NumberOfTeamMatesAdjacent( SOLDIERCLASS * pSoldier, INT16 sGridNo )
{
 UINT8 ubLoop, ubCount, ubWhoIsThere;
 INT16 sTempGridNo;
 
 ubCount = 0;
 
 for( ubLoop = 0; ubLoop < NUM_WORLD_DIRECTIONS; ubLoop++ )
 {
  sTempGridNo = NewGridNo( sGridNo, DirectionInc( ubLoop ) );
  if ( sTempGridNo != sGridNo )
  {
   ubWhoIsThere = WhoIsThere2( sGridNo, pSoldier->bLevel );
   if ( ubWhoIsThere != NOBODY && ubWhoIsThere != pSoldier->ubID && MercPtrs[ ubWhoIsThere ]->bTeam == pSoldier->bTeam )
   {
    ubCount++;
   }
  }
 }
 
 return( ubCount );
}

 
Должно быть:
Quote:
ubWhoIsThere = WhoIsThere2( sTempGridNo, pSoldier->bLevel );

 
Из-за этого бага еще с оригинала не работает антискучивание в FindBestNearbyCover:
Quote:
iCurrentCoverValue -= (iCurrentCoverValue / 10) * NumberOfTeamMatesAdjacent( pSoldier, pSoldier->sGridNo );
...
iCoverValue -= (iCoverValue / 10) * NumberOfTeamMatesAdjacent( pSoldier, sGridNo );
Зарегистрирован

Сборки 1.13 | Ja2+AI | Youtube | VK
Seven
[Голос Америки]
Прирожденный Джаец




WWW

Пол:
Репутация: +351
Re: Наука и религия в исходниках НО.
« Ответ #222 от 29.10.2018 в 21:26:25 »

Ванильный баг в 1.2:  
 
opplist.c, HearNoise()
 
Quote:
if (ubVolume >= pSoldier->ubNoiseVolume)
{
 // yes it is, so remember this noise INSTEAD (old noise is forgotten)
 pSoldier->sNoiseGridno = sGridNo;
 pSoldier->bNoiseLevel = bLevel;
 
 // no matter how loud noise was, don't remember it for than 12 turns!
 if (ubVolume < MAX_MISC_NOISE_DURATION)
 {
  pSoldier->ubNoiseVolume = ubVolume;
 }
 else
 {
  pSoldier->ubNoiseVolume = MAX_MISC_NOISE_DURATION;
 }
 
 SetNewSituation( pSoldier );  // force a fresh AI decision to be made
}
Зарегистрирован

Сборки 1.13 | Ja2+AI | Youtube | VK
Терапевт
[Человек в чёрном]
Кардинал


Народный целитель. Шарлатан высшей категории.




Пол:
Репутация: +1190
Re: Наука и религия в исходниках НО.
« Ответ #223 от 30.10.2018 в 13:33:00 »

2Seven:  
И в чём он выражается?
Зарегистрирован

Весна! Я уже не грею пиво! (с) В.Цой
Seven
[Голос Америки]
Прирожденный Джаец




WWW

Пол:
Репутация: +351
Re: Наука и религия в исходниках НО.
« Ответ #224 от 30.10.2018 в 13:36:47 »

2Терапевт:  
MAX_MISC_NOISE_DURATION = 12
ubVolume - громкость, может быть до 100 и больше.
В существующем виде AI запоминает не самый громкий звук (и самый важный, как следствие), а просто любой последний громче минимального уровня в 12, что приводит к некорректному поведению AI.
Зарегистрирован

Сборки 1.13 | Ja2+AI | Youtube | VK
Терапевт
[Человек в чёрном]
Кардинал


Народный целитель. Шарлатан высшей категории.




Пол:
Репутация: +1190
Re: Наука и религия в исходниках НО.
« Ответ #225 от 30.10.2018 в 16:57:46 »

2Seven:  
Понятно. Я бы сказал, что это не баг, а субъективный взгляд на данную примитивную линейную нормализацию величины. Ведь самый громкий звук необязательно будет самым важным. По крайней мере в случаях, когда игрок нападает на вражеский сектор.
Зарегистрирован

Весна! Я уже не грею пиво! (с) В.Цой
Seven
[Голос Америки]
Прирожденный Джаец




WWW

Пол:
Репутация: +351
Re: Наука и религия в исходниках НО.
« Ответ #226 от 10.11.2018 в 19:29:15 »

Ванильный баг в 1.2
 
Quote:
// set values for the tiles EXITED from this location
FORCE_SET_MOVEMENTCOST( usGridNo - WORLD_COLS, NORTH, 0, TRAVELCOST_NONE );
SET_MOVEMENTCOST( usGridNo - WORLD_COLS + 1, NORTHEAST, 0, TRAVELCOST_OBSTACLE );
SET_MOVEMENTCOST( usGridNo + 1, EAST, 0, TRAVELCOST_OBSTACLE );
SET_MOVEMENTCOST( usGridNo + WORLD_COLS + 1, SOUTHEAST, 0, TRAVELCOST_OBSTACLE );
FORCE_SET_MOVEMENTCOST( usGridNo + WORLD_COLS, SOUTH, 0, TRAVELCOST_NONE );
SET_MOVEMENTCOST( usGridNo + WORLD_COLS - 1, SOUTHWEST, 0, TRAVELCOST_OBSTACLE );
SET_MOVEMENTCOST( usGridNo - 1, WEST, 0, TRAVELCOST_OBSTACLE );
SET_MOVEMENTCOST( usGridNo - WORLD_COLS - 1, NORTHWEST, 0, TRAVELCOST_OBSTACLE );

Должно быть
Quote:
// set values for the tiles EXITED from this location
if (gubWorldMovementCosts[usGridNo - WORLD_COLS][NORTH][0] < TRAVELCOST_BLOCKED)
 FORCE_SET_MOVEMENTCOST(usGridNo - WORLD_COLS, NORTH, 0, TRAVELCOST_NONE);
ET_MOVEMENTCOST( usGridNo - WORLD_COLS + 1, NORTHEAST, 0, TRAVELCOST_OBSTACLE );
SET_MOVEMENTCOST( usGridNo + 1, EAST, 0, TRAVELCOST_OBSTACLE );
SET_MOVEMENTCOST( usGridNo + WORLD_COLS + 1, SOUTHEAST, 0, TRAVELCOST_OBSTACLE );
if (gubWorldMovementCosts[usGridNo + WORLD_COLS][SOUTH][0] < TRAVELCOST_BLOCKED)
 FORCE_SET_MOVEMENTCOST(usGridNo + WORLD_COLS, SOUTH, 0, TRAVELCOST_NONE);
SET_MOVEMENTCOST( usGridNo + WORLD_COLS - 1, SOUTHWEST, 0, TRAVELCOST_OBSTACLE );
SET_MOVEMENTCOST( usGridNo - 1, WEST, 0, TRAVELCOST_OBSTACLE );
SET_MOVEMENTCOST( usGridNo - WORLD_COLS - 1, NORTHWEST, 0, TRAVELCOST_OBSTACLE );

Лечит подвисание AI при попытке перепрыгнуть в северном направлении забор, за которым расположен непроходимый объект.
Зарегистрирован

Сборки 1.13 | Ja2+AI | Youtube | VK
Страниц: 1     « Открыть сокрытое! » Послать Тему Послать Тему Печатать Печатать

« Предыдущая Тема | Следующая Тема »

Статистика. Размер данных: 30666 GZip: off
A.I.M. » Powered by YaBB Modification 4 (v.4.0.0-pre)!
YaBB © 2000-2003. All Rights Reserved.