|
Re: Уроки скриптологии
14. Отношения между гильдиями.
Отношения между гильдиями людей задаются в файле AI\Human\Guilds.d в виде таблицы. Ссылки в скриптах на эту таблицу вы не найдете, она используется только экзешником. Примечание: Таблицу необходимо смотреть в широкоформатном редакторе.
// размер таблицы const int TAB_ANZAHL = 16 * 16;
// таблица отношений между гильдиями людей const int GIL_ATTITUDES[TAB_ANZAHL] = * { // ***Гильдии*** * Отсутствует * Паладин * * * Милиционер * *Горожанин * * Маг огня * * *Послушник * * Охотник драк. Наемник * * * Крестьянин * *Бандит * * * *Заключенный *Черный маг * *Чузеземец * * Пират * * * * Маг воды * * *Публичная * * * /* Отсутствует **/ ATT_NEUTRAL, *ATT_NEUTRAL, *ATT_NEUTRAL, *ATT_NEUTRAL, *ATT_NEUTRAL, *ATT_NEUTRAL, *ATT_NEUTRAL, *ATT_NEUTRAL, *ATT_NEUTRAL, *ATT_HOSTILE, *ATT_NEUTRAL, ATT_NEUTRAL, *ATT_FRIENDLY, ATT_NEUTRAL, *ATT_NEUTRAL, *ATT_NEUTRAL, * * /************************************************** ***************************** ************************************************** ****************************** ************************************************** ****************************** /* Паладин * * **/ ATT_NEUTRAL, *ATT_FRIENDLY, ATT_FRIENDLY, ATT_FRIENDLY, ATT_FRIENDLY, ATT_FRIENDLY, ATT_NEUTRAL, *ATT_NEUTRAL, *ATT_NEUTRAL, *ATT_HOSTILE, *ATT_NEUTRAL, ATT_NEUTRAL, *ATT_FRIENDLY, ATT_NEUTRAL, *ATT_NEUTRAL, *ATT_NEUTRAL, * * /* Милиционер * */ ATT_NEUTRAL, *ATT_FRIENDLY, ATT_FRIENDLY, ATT_FRIENDLY, ATT_FRIENDLY, ATT_FRIENDLY, ATT_NEUTRAL, *ATT_NEUTRAL, *ATT_NEUTRAL, *ATT_HOSTILE, *ATT_NEUTRAL, ATT_NEUTRAL, *ATT_FRIENDLY, ATT_NEUTRAL, *ATT_NEUTRAL, *ATT_NEUTRAL, * * /* Горожанин * **/ ATT_NEUTRAL, *ATT_NEUTRAL, *ATT_NEUTRAL, *ATT_NEUTRAL, *ATT_NEUTRAL, *ATT_NEUTRAL, *ATT_NEUTRAL, *ATT_NEUTRAL, *ATT_NEUTRAL, *ATT_HOSTILE, *ATT_NEUTRAL, ATT_NEUTRAL, *ATT_FRIENDLY, ATT_NEUTRAL, *ATT_NEUTRAL, *ATT_NEUTRAL, * * /************************************************** ***************************** ************************************************** ****************************** ************************************************** ****************************** /* Маг огня * * */ ATT_NEUTRAL, *ATT_FRIENDLY, ATT_NEUTRAL, *ATT_NEUTRAL, *ATT_FRIENDLY, ATT_FRIENDLY, ATT_NEUTRAL, *ATT_NEUTRAL, *ATT_NEUTRAL, *ATT_HOSTILE, *ATT_NEUTRAL, ATT_NEUTRAL, *ATT_FRIENDLY, ATT_NEUTRAL, *ATT_NEUTRAL, *ATT_NEUTRAL, * * /* Послушник * **/ ATT_NEUTRAL, *ATT_FRIENDLY, ATT_FRIENDLY, ATT_FRIENDLY, ATT_FRIENDLY, ATT_FRIENDLY, ATT_NEUTRAL, *ATT_NEUTRAL, *ATT_NEUTRAL, *ATT_HOSTILE, *ATT_NEUTRAL, ATT_NEUTRAL, *ATT_FRIENDLY, ATT_NEUTRAL, *ATT_NEUTRAL, *ATT_NEUTRAL, * * /************************************************** ***************************** ************************************************** ****************************** ************************************************** ****************************** /* Охотник драк.*/ ATT_NEUTRAL, *ATT_NEUTRAL, *ATT_NEUTRAL, *ATT_NEUTRAL, *ATT_NEUTRAL, *ATT_NEUTRAL, *ATT_FRIENDLY, ATT_FRIENDLY, ATT_FRIENDLY, ATT_HOSTILE, *ATT_NEUTRAL, ATT_NEUTRAL, *ATT_FRIENDLY, ATT_NEUTRAL, *ATT_NEUTRAL, *ATT_NEUTRAL, * * /* Наемник * * **/ ATT_NEUTRAL, *ATT_NEUTRAL, *ATT_NEUTRAL, *ATT_NEUTRAL, *ATT_NEUTRAL, *ATT_NEUTRAL, *ATT_FRIENDLY, ATT_FRIENDLY, ATT_FRIENDLY, ATT_HOSTILE, *ATT_NEUTRAL, ATT_NEUTRAL, *ATT_FRIENDLY, ATT_NEUTRAL, *ATT_NEUTRAL, *ATT_NEUTRAL, * * /* Крестьянин * */ ATT_NEUTRAL, *ATT_NEUTRAL, *ATT_NEUTRAL, *ATT_NEUTRAL, *ATT_NEUTRAL, *ATT_NEUTRAL, *ATT_NEUTRAL, *ATT_NEUTRAL, *ATT_FRIENDLY, ATT_HOSTILE, *ATT_NEUTRAL, ATT_NEUTRAL, *ATT_FRIENDLY, ATT_NEUTRAL, *ATT_NEUTRAL, *ATT_NEUTRAL, * * /************************************************** ***************************** ************************************************** ****************************** ************************************************** ****************************** /* Бандит * * * */ ATT_HOSTILE, *ATT_HOSTILE, *ATT_HOSTILE, *ATT_HOSTILE, *ATT_HOSTILE, *ATT_HOSTILE, *ATT_HOSTILE, *ATT_HOSTILE, *ATT_HOSTILE, *ATT_FRIENDLY, ATT_NEUTRAL, ATT_NEUTRAL, *ATT_HOSTILE, *ATT_NEUTRAL, *ATT_NEUTRAL, *ATT_NEUTRAL, * * /* Заключенный **/ ATT_NEUTRAL, *ATT_NEUTRAL, *ATT_NEUTRAL, *ATT_NEUTRAL, *ATT_NEUTRAL, *ATT_NEUTRAL, *ATT_NEUTRAL, *ATT_NEUTRAL, *ATT_NEUTRAL, *ATT_NEUTRAL, *ATT_NEUTRAL, ATT_NEUTRAL, *ATT_NEUTRAL, *ATT_NEUTRAL, *ATT_NEUTRAL, *ATT_NEUTRAL, * * /* Черный маг * */ ATT_HOSTILE, *ATT_HOSTILE, *ATT_HOSTILE, *ATT_HOSTILE, *ATT_HOSTILE, *ATT_HOSTILE, *ATT_HOSTILE, *ATT_HOSTILE, *ATT_HOSTILE, *ATT_NEUTRAL, *ATT_HOSTILE, ATT_FRIENDLY, ATT_HOSTILE, *ATT_NEUTRAL, *ATT_NEUTRAL, *ATT_NEUTRAL, * * /************************************************** ***************************** ************************************************** ****************************** ************************************************** ****************************** /* Чужеземец * **/ ATT_FRIENDLY, ATT_FRIENDLY, ATT_FRIENDLY, ATT_FRIENDLY, ATT_FRIENDLY, ATT_FRIENDLY, ATT_FRIENDLY, ATT_FRIENDLY, ATT_FRIENDLY, ATT_HOSTILE, *ATT_NEUTRAL, ATT_NEUTRAL, *ATT_FRIENDLY, ATT_NEUTRAL, *ATT_FRIENDLY, ATT_NEUTRAL, * * /* Пират * * * **/ ATT_NEUTRAL, *ATT_NEUTRAL, *ATT_NEUTRAL, *ATT_NEUTRAL, *ATT_NEUTRAL, *ATT_NEUTRAL, *ATT_NEUTRAL, *ATT_NEUTRAL, *ATT_NEUTRAL, *ATT_HOSTILE, *ATT_NEUTRAL, ATT_NEUTRAL, *ATT_NEUTRAL, *ATT_FRIENDLY, ATT_NEUTRAL, *ATT_NEUTRAL, * * /* Маг воды * * */ ATT_NEUTRAL, *ATT_NEUTRAL, *ATT_NEUTRAL, *ATT_FRIENDLY, ATT_NEUTRAL, *ATT_NEUTRAL, *ATT_NEUTRAL, *ATT_NEUTRAL, *ATT_FRIENDLY, ATT_HOSTILE, *ATT_NEUTRAL, ATT_NEUTRAL, *ATT_FRIENDLY, ATT_NEUTRAL, *ATT_FRIENDLY, ATT_NEUTRAL, * * /* Публичная * **/ ATT_NEUTRAL, *ATT_NEUTRAL, *ATT_NEUTRAL, *ATT_NEUTRAL, *ATT_NEUTRAL, *ATT_NEUTRAL, *ATT_NEUTRAL, *ATT_NEUTRAL, *ATT_NEUTRAL, *ATT_NEUTRAL, *ATT_NEUTRAL, ATT_NEUTRAL, *ATT_NEUTRAL, *ATT_NEUTRAL, *ATT_NEUTRAL, *ATT_NEUTRAL };
Отношения между гильдиями монстров и гильдиями монстров и людей задаются в файле AI\Monster\B_Monster\B_InitMonsterAttitudes.d Данный файл я приводить не буду, у него очень большой размер (около 160 Кб). Все отношения задаются через вызов функции B_InitMonsterAttitudes(), эту функцию мы и рассмотрим: она расположена в этой же директории в одноименном файле.
// ************************************************** ****************** // Устанавливает отношения между гильдиями монстров и всеми остальными // ************************************************** ******************
// ================================================== ================== // Аргументы: // -------------------------------------------------------------------- // fromGuild - гильдия для которой устанавливается отношение // attitude - отношение // toGuild - гильдия с которой устанавливается отношение // ================================================== ==================
func void B_SetMonsterAttitude(var int fromGuild,var int attitude,var int toGuild) { * *// если отношение устанавливается с людьми * *if(toGuild == GIL_SEPERATOR_HUM) * *{ * * * *Wld_SetGuildAttitude(fromGuild,attitude,GIL_NONE) ; * * * *Wld_SetGuildAttitude(fromGuild,attitude,GIL_PAL); * * * *Wld_SetGuildAttitude(fromGuild,attitude,GIL_MIL); * * * *Wld_SetGuildAttitude(fromGuild,attitude,GIL_VLK); * * * *Wld_SetGuildAttitude(fromGuild,attitude,GIL_KDF); * * * *Wld_SetGuildAttitude(fromGuild,attitude,GIL_NOV); * * * *Wld_SetGuildAttitude(fromGuild,attitude,GIL_DJG); * * * *Wld_SetGuildAttitude(fromGuild,attitude,GIL_SLD); * * * *Wld_SetGuildAttitude(fromGuild,attitude,GIL_BAU); * * * *Wld_SetGuildAttitude(fromGuild,attitude,GIL_BDT); * * * *Wld_SetGuildAttitude(fromGuild,attitude,GIL_STRF) ; * * * *Wld_SetGuildAttitude(fromGuild,attitude,GIL_OUT); * * * *Wld_SetGuildAttitude(fromGuild,attitude,GIL_PIR); * * * *Wld_SetGuildAttitude(fromGuild,attitude,GIL_KDW); * *} * *// если отношение устанавливается для людей * *else if(fromGuild == GIL_SEPERATOR_HUM) * *{ * * * *Wld_SetGuildAttitude(GIL_NONE,attitude,toGuild); * * * *Wld_SetGuildAttitude(GIL_PAL, attitude,toGuild); * * * *Wld_SetGuildAttitude(GIL_MIL, attitude,toGuild); * * * *Wld_SetGuildAttitude(GIL_VLK, attitude,toGuild); * * * *Wld_SetGuildAttitude(GIL_KDF, attitude,toGuild); * * * *Wld_SetGuildAttitude(GIL_NOV, attitude,toGuild); * * * *Wld_SetGuildAttitude(GIL_DJG, attitude,toGuild); * * * *Wld_SetGuildAttitude(GIL_SLD, attitude,toGuild); * * * *Wld_SetGuildAttitude(GIL_BAU, attitude,toGuild); * * * *Wld_SetGuildAttitude(GIL_BDT, attitude,toGuild); * * * *Wld_SetGuildAttitude(GIL_STRF,attitude,toGuild); * * * *Wld_SetGuildAttitude(GIL_OUT, attitude,toGuild); * * * *Wld_SetGuildAttitude(GIL_PIR, attitude,toGuild); * * * *Wld_SetGuildAttitude(GIL_KDW, attitude,toGuild); * *} * *else // устанавливается отношение между монстрами * *{ * * * *Wld_SetGuildAttitude(fromGuild,attitude,toGuild); * *}; };
|