|
Re: Уроки скриптологии
Тема третья: Искусственный интеллект.
Все функции, константы и переменные искусственного интелекта находятся в папке ..\AI
1. Константы AI. Они описаны в файле ..\AI_Intern\AI_Constants.d
// ************************** // AIVAR - Константы для людей // **************************
// ------ Новости и память ---------------------
const int * AIV_LastFightAgainstPlayer * * *= 0; * *//Параметры последнего сражения с ГГ const int * * * FIGHT_NONE * * * * * * *= 0; * * * *//Сражения с ГГ не было const int * * * FIGHT_LOST * * * * * * *= 1; * * * *//Сражение проиграно (победа ГГ) const int * * * FIGHT_WON * * * * * * * = 2; * * * *//Сражение выиграно (победа НПС) const int * * * FIGHT_CANCEL * * * * * *= 3; * * * *//Сражение прервано
const int * AIV_NpcSawPlayerCommit * * * * *= 1; * *//НПС видел какой криминал совершил ГГ const int * * * CRIME_NONE * * * * * * *= 0; * * * *//Криминала не было const int * * * CRIME_SHEEPKILLER * * * = 1; * * * *//ГГ убил овцу const int * * * CRIME_ATTACK * * * * * *= 2; * * * *//ГГ сражался с НПС (параметры в AIV_LastFightAgainstPlayer) const int * * * CRIME_THEFT * * * * * * = 3; * * * *//ГГ занимался воровством const int * * * CRIME_MURDER * * * * * *= 4; * * * *//ГГ совершил убийство
const int * AIV_NpcSawPlayerCommitDay * * * = 2; * *//День, когда ГГ совершил криминал
// ------ Восприятие диалога ------------------- const int * AIV_NpcStartedTalk * * * * * * *= 3; * *//Устанавливается в TRUE, если НПС с важной информацией обращается к другому НПС
// ------ Диалог ------------------------------- const int * AIV_INVINCIBLE * * * * * * * * *= 4; * *//Устанавливается в TRUE в начале диалога для обоих НПС const int * AIV_TalkedToPlayer * * * * * * *= 5; * *//Устанавливается в TRUE, если НПС уже разговаривал с ГГ
// ------ Карманная кража ---------------------- const int * AIV_PlayerHasPickedMyPocket * * = 6; * *//Устанавливается в TRUE, если ГГ залезал в карман НПС
// ------ Сражение ----------------------------- const int * AIV_LASTTARGET * * * * * * * * *= 7; * *//Ссылка на последнего атакованного НПС const int * AIV_PursuitEnd * * * * * * * * *= 8; * *//Устанавливается в TRUE, если НПС закончил преследование
// ------ Причина нападения ------------ const int * AIV_ATTACKREASON * * * * * * * *= 9; * *//Причина нападения (по приоритетам) const int * * * AR_NONE * * * * * * * * = 0; * * * *//Причины нет const int * * * AR_LeftPortalRoom * * * = 1; * * * *//ГГ находится в помещении с ограниченным доступом const int * * * AR_ClearRoom * * * * * *= 2; * * * *//ГГ находится в помещении другого НПС const int * * * AR_GuardCalledToRoom * *= 3; * * * *//Вызвана охрана для защиты помещения const int * * * AR_MonsterVsHuman * * * = 4; * * * *//Монстр сражается с человеком, ГГ помогает человеку const int * * * AR_MonsterMurderedHuman = 5; * * * *//Монстр убил человека const int * * * AR_SheepKiller * * * * *= 6; * * * *//Овца была атакована и убита (человеком или монстром) const int * * * AR_Theft * * * * * * * *= 7; * * * *//ГГ что-то украл const int * * * AR_UseMob * * * * * * * = 8; * * * *//ГГ использовал МОВ с флагом принадлежности другому НПС const int * * * AR_GuardCalledToThief * = 9; * * * *//Вызвана стража по факту воровства ГГ const int * * * AR_ReactToWeapon * * * *= 10; * * * //Преступник не убрал оружие после двукратного пердупреждения или пустился в бега const int * * * AR_ReactToDamage * * * *= 11; * * * //Преступник ранил НПС const int * * * AR_GuardStopsFight * * *= 12; * * * //Охрана прекращает атаковать преступника const int * * * AR_GuardCalledToKill * *= 13; * * * //Вызвана охрана по факту убийства const int * * * AR_GuildEnemy * * * * * = 14; * * * //НПС является врагом гильдии (человек или монстр) const int * * * AR_HumanMurderedHuman * = 15; * * * //Человек убил человека const int * * * AR_MonsterCloseToGate * = 16; * * * //Охрана ворот атакует враждебного монстра const int * * * AR_GuardStopsIntruder * = 17; * * * //Охрана ворот атакует незваного гостя const int * * * AR_SuddenEnemyInferno * = 18; * * * //Немедленная атака противника (невзирая на блокировку) const int * * * AR_KILL * * * * * * * * = 19; * * * //ГГ убил НПС
// ------ Обыскивание трупов -------------------- const int * AIV_RANSACKED * * * * * * * * * = 10; * //Устанавливается TRUE, если труп обыскивается
// ------ Смерть -------------------------------- const int * AIV_DeathInvGiven * * * * * * * = 11; * //Устанавливается TRUE, если труп обыскан
// ------ Охрана -------------------------------- const int * AIV_Guardpassage_Status * * * * = 12; * //Статус предупреждений охраны const int * * * GP_NONE * * * * * * * * = 0; * * * *//Нет предупреждений const int * * * GP_FirstWarnGiven * * * = 1; * * * *//НПС получил первое предупреждение const int * * * GP_SecondWarnGiven * * *= 2; * * * *//НПС получил второе предупреждение const int * AIV_LastDistToWP * * * * * * * *= 13; * //Расстояние от WP охраны до точки, в которой НПС получил предупреждение const int * AIV_PASSGATE * * * * * * * * * *= 14; * //TRUE - проход возможен, FALSE - проход запрещен
// ------ Предоставление экспы ------------------ const int * AIV_PARTYMEMBER * * * * * * * * = 15; * //Если TRUE, то экспа за убитых монстров сопровождавшим идет ГГ. const int * AIV_VictoryXPGiven * * * * * * *= 16; * //Устанавливается TRUE, когда экспа за победу начислена
// ------ Пол ----------------------------------- const int AIV_Gender * * * * * * * * * * * *= 17; * //Пол НПС const int * * * MALE * * * * * * * * * *= 0; * * * *//Мужской const int * * * FEMALE * * * * * * * * *= 1; * * * *//Женский
// ------ Пища ---------------------------------- const int AIV_Food * * * * * * * * * * * * *= 18; * //Употребляемая пища const int * * * FOOD_Apple * * * * * * *= 0; * * * *//Яблоко const int * * * FOOD_Cheese * * * * * * = 1; * * * *//Сыр const int * * * FOOD_Bacon * * * * * * *= 2; * * * *//Бекон const int * * * FOOD_Bread * * * * * * *= 3; * * * *//Хлеб
// ------ Вспомогательные параметры для ТА ------ const int AIV_TAPOSITION * * * * * * * * * *= 19; * //Позиции выполненния ТА const int * * * ISINPOS * * * * * * * * = 0; * * * *//НПС в позиции выполнения ТА const int * * * NOTINPOS * * * * * * * *= 1; * * * *//НПС не в позиции выполнения ТА const int * * * NOTINPOS_WALK * * * * * = 2; * * * *//НПС идет к точке выполнения ТА
// ------ Выбор заклинания ---------------------- const int AIV_SelectSpell * * * * * * * * * = 20; * //Случайное число, соответствующее заклинанию, выбранному НПС
// ------ Наблюдение ---------------------------- const int AIV_SeenLeftRoom * * * * * * * * *= 21; * //TRUE, если НПС наблюдает за своим помещением
//////////////////////////////////// * * * * * * * *//Переменные использующиеся при комментариях действий ГГ var int Player_SneakerComment; * * * * * * * * * * *//ГГ крадется var int Player_LeftRoomComment; * * * * * * * * * * //ГГ зашел в чужое помещение var int Player_DrawWeaponComment; * * * * * * * * * //ГГ вытащил оружие var int Player_GetOutOfMyBedComment; * * * * * * * *//ГГ лег на чужую кровать ////////////////////////////////////
// ------ Сражение со вторым противником -------- const int AIV_HitByOtherNpc * * * * * * * * = 22; * //Расстояние до другого НПС const int AIV_WaitBeforeAttack * * * * * * *= 23; * //Если != 0, то вводится задержка перед атакой const int AIV_LastAbsolutionLevel * * * * * = 24; * //Репутация ГГ для конкретной локации
// ---------------------------------------------- const int AIV_ToughGuyNewsOverride * * * * *= 25; * //НПС не имеет новостей о "жестком парне" (ГГ)
|