Тут обсуждают, что Терапевт должен сделать, чтобы мне было хорошо. |
|
Тема: Наука и религия в исходниках НО. Страниц: 1 2 3 4 5 | Прочитано 68506 раз |
Dirk_Diggler [Дерзкий шахтёр]
Прирожденный Джаец
ы
Репутация: +48
|
|
Re: Наука и религия в исходниках НО. « Ответ #200 от 17.11.2010 в 19:43:57 » |
|
17.11.2010 в 19:33:03, MAn писал(a):Багмонстр грит, что быдто 40 или 60% |
| Там большая и толстая процедура определения шанса, зависит от расстояния и т.п. А вот если мы туда и целились - то все 100% Code: uiChanceOfHit = ChanceOfBulletHittingStructure( pBullet->iLoop, pBullet->iDistanceLimit, pBullet->sHitBy ); if (iGridNo == (INT32) pBullet->sTargetGridNo) { fIntended = TRUE; // if in the same tile as our destination, we WANT to hit the structure! if ( fIntended ) { uiChanceOfHit = 100; } |
| а потом вот так добавляем в структуры: Code: if ( PreRandom( 100 ) < uiChanceOfHit ) { gpLocalStructure[iNumLocalStructures] = pStructure; gubLocalStructureNumTimesHit[iNumLocalStructures] = 0; iNumLocalStructures++; } |
|
|
|
Зарегистрирован |
|
|
|
Dirk_Diggler [Дерзкий шахтёр]
Прирожденный Джаец
ы
Репутация: +48
|
|
Re: Наука и религия в исходниках НО. « Ответ #201 от 17.11.2010 в 19:50:21 » |
|
А bugmonster-то прав... В принципе, в LOS.c есть всё, чтобы поменять модель стрельбы...
|
|
Зарегистрирован |
|
|
|
MAn [Человечище!!!]
Пол: Репутация: +403
|
|
Re: Наука и религия в исходниках НО. « Ответ #202 от 17.11.2010 в 19:53:04 » |
|
17.11.2010 в 19:38:03, Dirk_Diggler писал(a):Обратить внимание на ddMinimumMiss и его использование. |
| Гм, ну я не силён в английском, но мне кажется, что там написано: 17.11.2010 в 19:38:03, Dirk_Diggler писал(a):Want to make sure that not too many misses actually hit the target after all // to miss a target at 1 tile is about 30 degrees off, at 5 tiles, 6 degrees off // at 15 tiles, 2 degrees off. Thus 30 degrees divided by the # of tiles distance. |
| Хотим, мол, чтобы не слишком часто "промахи" попадали в цель. Для этого вводится ограничение по отклонению, то бишь пуля отклонившаяся на некоторый градус = 30/колво тайлов не поражает цель, даже если и проходит через неё.
|
|
Зарегистрирован |
|
|
|
Dirk_Diggler [Дерзкий шахтёр]
Прирожденный Джаец
ы
Репутация: +48
|
|
Re: Наука и религия в исходниках НО. « Ответ #203 от 17.11.2010 в 20:00:31 » |
|
17.11.2010 в 19:53:04, MAn писал(a): Хотим, мол, чтобы не слишком часто "промахи" попадали в цель. |
| ddAmountOfMiss = ( (ddMaximumMiss - ddMinimumMiss) * (DOUBLE) iMissedBy) / 100.0 + ddMinimumMiss; Т.е. ddAmountOfMiss не может быть меньше этого ddMinimumMiss. А мы потом углы на этот ddAmountOfMiss правим. Т.е ограничение конусом "изнутри" есть. Вопрос в том, это именно строгий конус, или просто уменьшение вероятности - не так важно, лень формулу разбирать. В любом случае, если угол слишком точный - он дополнительно отклоняется.
|
|
Зарегистрирован |
|
|
|
MAn [Человечище!!!]
Пол: Репутация: +403
|
|
Re: Наука и религия в исходниках НО. « Ответ #204 от 17.11.2010 в 20:11:46 » |
|
17.11.2010 в 20:00:31, Dirk_Diggler писал(a):не так важно, лень формулу разбирать. В любом случае, если угол слишком точный - он дополнительно отклоняется. |
| Ага Вообще, внутреннее устройства кода интересно ( и понятно полностью) только программисту... мне же достаточно общего вывода - что в конце концов происходит
|
|
Зарегистрирован |
|
|
|
valuta
Псих
Я люблю этот Форум!
Пол: Репутация: ---
|
|
Re: Наука и религия в исходниках НО. « Ответ #205 от 04.03.2012 в 21:42:21 » |
|
Всем привет! Я новенький, ногами не бейте, плиз. В исходниках шанс попадания = (меткость + кондиция оружия) / 2. Видимо в оригинале Джа 2 так же. Значит: 1)неандерталец, найдя ствол 100% исправный, попадет в цель фифти-фифти 2)профи с меткостью 100 из ствола нулевой кондиции тоже фифти-фифти. Без учета штрафов и бонусов ессно. IMHO надо брать корень произведения sqrt( меткость*кондиция).
|
« Изменён в : 04.03.2012 в 21:54:36 пользователем: valuta » |
Зарегистрирован |
|
|
|
coolberg [Ядрёна-Матрёна]
Прирожденный Джаец
Пол: Репутация: +138
|
|
Re: Наука и религия в исходниках НО. « Ответ #206 от 05.03.2012 в 01:10:15 » |
|
2valuta: насколько я помню, среднее арифметическое бралось только в том случае, когда кондиция оружия меньше меткости стрелка, в остальных случаях за базовый шанс бралась просто меткость. Поэтому для неандертальца шанс так и будет ноль, если я ничего не путаю.
|
|
Зарегистрирован |
|
|
|
valuta
Псих
Я люблю этот Форум!
Пол: Репутация: ---
|
|
Re: Наука и религия в исходниках НО. « Ответ #207 от 05.03.2012 в 05:40:10 » |
|
2coolberg: Да нет, еще раз глянул, именно среднеарифметическое. Неандерталец очень опасен.
|
|
Зарегистрирован |
|
|
|
valuta
Псих
Я люблю этот Форум!
Пол: Репутация: ---
|
|
Re: Наука и религия в исходниках НО. « Ответ #208 от 08.03.2012 в 04:31:19 » |
|
2coolberg: Однако вы сударь правы. Тем не менее среднеарифметическое не есть гуд. Это величины вероятностные, соотв. надо перемножать/делить, а не складывать/пополамить.
|
|
Зарегистрирован |
|
|
|
Bonarienz [Хороший ариец]
Враг Джавдета в анимации ДжА2, Бон-а-рьен-ц!
Репутация: +346
|
|
Re: Наука и религия в исходниках НО. « Ответ #209 от 08.03.2012 в 07:37:02 » |
|
2valuta: "Сударь" - уничижит. или шутлив.-иронич. сокращение от "Милостивый государь". В общении с незнакомыми или малознакомыми - недопустимо. (Для свед. - Множ. числа не имеет.) Как на счет приближения функции вероятности эллиптическими? Это ведь не просто суммы, но суммы с условиями - т.е. кус.-лин. аппроксимация заметно более сложных непрерывных зависимостей. А вот "куркулируются" такие зависимости заметно быстрее (на порядки быстрее) функциональных зависимостей. Банан по выч. мат... Фтопку идеи! Ведь игре при просчете этихпля функций надо еще анимации крутить...
|
|
Зарегистрирован |
Deleatur (лат.) - Стереть все, совсем все!
|
|
|
valuta
Псих
Я люблю этот Форум!
Пол: Репутация: ---
|
|
Re: Наука и религия в исходниках НО. « Ответ #210 от 08.03.2012 в 09:22:14 » |
|
2Bonarienz: О как ! Бум знать. Может быть и так. Разница в расчетах будет существенна, лишь случаях использования практически неисправного ствола. Чего в игре не бывает. Можно забить.
|
|
Зарегистрирован |
|
|
|
Seven [Голос Америки]
Прирожденный Джаец
Пол: Репутация: +351
|
|
Re: Наука и религия в исходниках НО. « Ответ #211 от 26.05.2016 в 16:00:44 » |
|
Нашел только эту тему про исходники. Вопрос специалистам, вот есть в НО 1.2 такой код: Quote:SOLDIERCLASS * FindSoldierByProfileID( UINT8 ubProfileID, BOOLEAN fPlayerMercsOnly ) { UINT8 ubLoop, ubLoopLimit; SOLDIERCLASS * pSoldier; if (fPlayerMercsOnly) { ubLoopLimit = gTacticalStatus.Team[0].bLastID; } else { ubLoopLimit = MAX_NUM_SOLDIERS; } for (ubLoop = 0, pSoldier = MercPtrs[0]; ubLoop < ubLoopLimit; ubLoop++, pSoldier++) { if (pSoldier->bActive && pSoldier->ubProfile == ubProfileID) { return( pSoldier ); } } return( NULL ); } |
| bLastID = это максимальный возможный ID для команды (то есть, солдат с таким ID может реально существовать). MAX_NUM_SOLDIERS - это значение, на 1 больше максимально возможного ID солдата в игре (для команды цивилов последний ID равен MAX_NUM_SOLDIERS - 1). В итоге, цикл, проверяющий ubLoop < ubLoopLimit будет корректно работать для всех случаев, кроме случая, когда ищется последний ID для команды игрока.
|
|
Зарегистрирован |
Сборки 1.13 | Ja2+AI | Youtube | VK
|
|
|
Терапевт [Кулибин]
Кардинал
Народный целитель. Шарлатан высшей категории.
Пол: Репутация: +1187
|
|
Re: Наука и религия в исходниках НО. « Ответ #212 от 31.05.2016 в 14:42:29 » |
|
2Seven: Данная историческая ошибка теоретически чревата лишь какими-то глюками с транспортом игрока при наличии сразу двух машин. Например, NPC не сможет заправить вторую машину, если есть квест с такой реакцией. Причём она такая не единственная, есть ещё.
|
|
Зарегистрирован |
Весна! Я уже не грею пиво! (с) В.Цой
|
|
|
Seven [Голос Америки]
Прирожденный Джаец
Пол: Репутация: +351
|
|
Re: Наука и религия в исходниках НО. « Ответ #213 от 14.07.2017 в 20:44:24 » |
|
Вопрос знатокам. В функции UseGun есть такой вызов: FireBulletGivenTarget( pSoldier, dTargetX, dTargetY, dTargetZ, pSoldier->usAttackingWeapon, (UINT16) (uiHitChance - uiDiceRoll), fBuckshot, FALSE ); При этом FireBulletGivenTarget определена в LOS.h как INT8 FireBulletGivenTarget( SOLDIERCLASS * pFirer, FLOAT dEndX, FLOAT dEndY, FLOAT dEndZ, UINT16 usHandItem, INT16 sHitBy, BOOLEAN fBuckshot, BOOLEAN fFake ); Для чего (uiHitChance - uiDiceRoll) преобразуется в UINT16, если передавать нужно INT16, причем отрицательное значение имеет смысл и означает величину промаха? Например, вызов CalculateLaunchItemParamsForThrow в UseThrown производится корректно, с преобразованием в INT8: CalculateLaunchItemParamsForThrow( pSoldier, sTargetGridNo, pSoldier->bTargetLevel, (INT16)(pSoldier->bTargetLevel * 256 ), &(pSoldier->inv[ HANDPOS ] ), (INT(uiDiceRoll - uiHitChance), THROW_ARM_ITEM, 0 );
|
« Изменён в : 14.07.2017 в 21:06:00 пользователем: Seven » |
Зарегистрирован |
Сборки 1.13 | Ja2+AI | Youtube | VK
|
|
|
Терапевт [Кулибин]
Кардинал
Народный целитель. Шарлатан высшей категории.
Пол: Репутация: +1187
|
|
Re: Наука и религия в исходниках НО. « Ответ #214 от 21.07.2017 в 15:34:42 » |
|
14.07.2017 в 20:44:24, Seven писал(a):Для чего (uiHitChance - uiDiceRoll) преобразуется в UINT16, если передавать нужно INT16, причем отрицательное значение имеет смысл и означает величину промаха? |
| Хотя по логическому смыслу это неправильно, но в данном случае не имеет значения к знаковому или беззнаковому типу происходит преобразование, главное, что к двухбайтовому, подходящему по размеру. Целое отрицательное число хранится, как положительное больше 32767. Например, -1 будет храниться, как 65535; -2, как 65534 и т.п. Таким образом знак числа при передаче в функцию не теряется, и все вычисления внутри выполняются корректно.
|
|
Зарегистрирован |
Весна! Я уже не грею пиво! (с) В.Цой
|
|
|
Seven [Голос Америки]
Прирожденный Джаец
Пол: Репутация: +351
|
|
Re: Наука и религия в исходниках НО. « Ответ #215 от 21.07.2017 в 21:54:13 » |
|
2Терапевт: А вот еще из исходников НО 1.2: В UseGun(): Вычисляем шанс попасть: Quote: uiHitChance = CalcChanceToHitGun( pSoldier, sTargetGridNo, pSoldier->bAimTime, pSoldier->bAimShotLocation ); |
| Затем случайное число: Quote:// ROLL DICE uiDiceRoll = PreRandom( 100 ); |
| Если uiDiceRoll <= uiHitChance, то это попадание, то есть пуля полетит точно в цель. Quote:fGonnaHit = uiDiceRoll <= uiHitChance; |
| и передается в FireBulletGivenTarget( как sHitBy параметр: Quote:FireBulletGivenTarget( pSoldier, dTargetX, dTargetY, dTargetZ, pSoldier->usAttackingWeapon, (UINT16) (uiHitChance - uiDiceRoll), fBuckshot, FALSE ); |
| Если sHitBy >=0, то это попадание. Получается, что при вычисленном шансе попасть uiHitChance = 0, есть 1% вероятность реального попадания (uiDiceRoll = 0, 0<=0). При вычисленном шансе uiHitChance = 1%, реальный шанс попасть будет 2% (0<=1, 1<=1). Ванильный баг в AI функции SearchForItems: Quote:case ARMOURCLASS_VEST: if (pSoldier->inv[VESTPOS].usItem == NOTHING) { iTempValue = 200 + EffectiveArmour( pObj ); } else if ( EffectiveArmour( &(pSoldier->inv[HELMETPOS]) ) > EffectiveArmour( pObj ) ) { iTempValue = 100 * EffectiveArmour( pObj ) / EffectiveArmour( &(pSoldier->inv[VESTPOS]) ); } else { iTempValue = 0; } break; |
| Проверяем жилетку, а сравниваем броню поднимаемого объекта с броней шапки: Quote:else if ( EffectiveArmour( &(pSoldier->inv[HELMETPOS]) ) > EffectiveArmour( pObj ) ) |
| Аналогично и со штанами. Кроме того, EffectiveArmour() при определенных условиях может вернуть 0, что приведет к предсказуемым последствиям: Quote:INT8 EffectiveArmour( OBJECTTYPE * pObj ) { INT32 iValue; INT8 bPlate; if (pObj == NULL || Item[pObj->usItem].usItemClass != IC_ARMOUR) { return( 0 ); } ... } |
|
|
|
Зарегистрирован |
Сборки 1.13 | Ja2+AI | Youtube | VK
|
|
|
Терапевт [Кулибин]
Кардинал
Народный целитель. Шарлатан высшей категории.
Пол: Репутация: +1187
|
|
Re: Наука и религия в исходниках НО. « Ответ #216 от 22.07.2017 в 00:12:43 » |
|
21.07.2017 в 21:54:13, Seven писал(a):Ванильный баг в AI функции SearchForItems: |
| В НО боты не ищут броню. Ищут только оружие и патроны.
|
|
Зарегистрирован |
Весна! Я уже не грею пиво! (с) В.Цой
|
|
|
Bonarienz [Хороший ариец]
Враг Джавдета в анимации ДжА2, Бон-а-рьен-ц!
Репутация: +346
|
|
Re: Наука и религия в исходниках НО. « Ответ #217 от 22.07.2017 в 01:52:33 » |
|
2Терапевт: Как же так? С Барреттом и голой жопой - впирёт на фрагА?!. Нипарядык!
|
|
Зарегистрирован |
Deleatur (лат.) - Стереть все, совсем все!
|
|
|
Seven [Голос Америки]
Прирожденный Джаец
Пол: Репутация: +351
|
|
Re: Наука и религия в исходниках НО. « Ответ #218 от 30.08.2017 в 10:52:53 » |
|
В CreatureDecideActionBlack() Quote:// DIGGLER ON 21.11.2010 // Теперь у нас 2 процедуры на каждый случай жизни #ifdef NEW_AI_STRUCT if ( gfTurnBasedAI || (gTacticalStatus.uiFlags & TURNBASED) ) return(DecideActionRedTB(pSoldier,FALSE)); else return(DecideActionRedRT(pSoldier,FALSE)); #else return(DecideActionRed(pSoldier,FALSE)); #endif // DIGGLER OFF |
| Разве тут не должно вызываться CreatureDecideActionRed?
|
|
Зарегистрирован |
Сборки 1.13 | Ja2+AI | Youtube | VK
|
|
|
Терапевт [Кулибин]
Кардинал
Народный целитель. Шарлатан высшей категории.
Пол: Репутация: +1187
|
|
Re: Наука и религия в исходниках НО. « Ответ #219 от 30.08.2017 в 23:27:28 » |
|
Наверно да, но с оригинала идёт именно так.
|
|
Зарегистрирован |
Весна! Я уже не грею пиво! (с) В.Цой
|
|
|
Seven [Голос Америки]
Прирожденный Джаец
Пол: Репутация: +351
|
|
Re: Наука и религия в исходниках НО. « Ответ #220 от 30.08.2017 в 23:34:14 » |
|
2Терапевт: Судя по всему, это просто неудачная копипаста из DecideAction.c - там есть ровно такой же код - если единственный доступный для атаки противник умирает, ищем нормального и если находим, будем через Red AI к нему добираться, так как в Black AI нет поиска противника. То есть скопировать скопировали, а имя функции поменять забыли.
|
|
Зарегистрирован |
Сборки 1.13 | Ja2+AI | Youtube | VK
|
|
|
Seven [Голос Америки]
Прирожденный Джаец
Пол: Репутация: +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 [Голос Америки]
Прирожденный Джаец
Пол: Репутация: +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
|
|
|
Терапевт [Кулибин]
Кардинал
Народный целитель. Шарлатан высшей категории.
Пол: Репутация: +1187
|
|
Re: Наука и религия в исходниках НО. « Ответ #223 от 30.10.2018 в 13:33:00 » |
|
2Seven: И в чём он выражается?
|
|
Зарегистрирован |
Весна! Я уже не грею пиво! (с) В.Цой
|
|
|
Seven [Голос Америки]
Прирожденный Джаец
Пол: Репутация: +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
|
|
|
Терапевт [Кулибин]
Кардинал
Народный целитель. Шарлатан высшей категории.
Пол: Репутация: +1187
|
|
Re: Наука и религия в исходниках НО. « Ответ #225 от 30.10.2018 в 16:57:46 » |
|
2Seven: Понятно. Я бы сказал, что это не баг, а субъективный взгляд на данную примитивную линейную нормализацию величины. Ведь самый громкий звук необязательно будет самым важным. По крайней мере в случаях, когда игрок нападает на вражеский сектор.
|
|
Зарегистрирован |
Весна! Я уже не грею пиво! (с) В.Цой
|
|
|
Seven [Голос Америки]
Прирожденный Джаец
Пол: Репутация: +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
|
|
|
|