Показать сообщение отдельно
Старый 23.01.2005, 13:53   #80
Vam

AGFC
Гость
 
Сообщений: n/a

По умолчанию 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; * //НПС не имеет новостей о "жестком парне" (ГГ)

Ответить с цитированием