Показать сообщение отдельно
Старый 06.04.2005, 09:45   #137
Vam

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

По умолчанию 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);
* *};
};

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