Показать сообщение отдельно
Старый 25.03.2011, 14:24   #4335
Black_Phantom

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

По умолчанию Re: Gothic 1, 2, 3: Технические вопросы

To Wandar:
Вы просили меня провести небольшое расследование по поводу сейва. Хотел бы доложить о результатах.
Я проерил сейвы и выяснил, что изменение этого элемента массива происходит в Долине рудников в 3-й главе, однако повторить причину мне не удалось. Т.е. у меня есть два сейва с разницей в одни игровые сутки - в первом еще 0, в во втором уже не 0. Поэтому точнее, наверное, не смогу сказать.

А по поводу данного значения, если посмотерть, то присвоение этого значения ( 9 - AR_GuildEnemy) происходит в скриптах в двух местах - может быть в этом дело:

1. ZS_Attack (STR: 2):
Cпойлер(щелкните, чтобы прочесть):
func void B_AssessSurprise()
{
* * *Npc_SetTarget(self,other);
* * *self.aivar[AIV_ATTACKREASON] = AR_GuildEnemy;
};

2. ZS_Attack (STR: 164):
Cпойлер(щелкните, чтобы прочесть):
if(Wld_GetGuildAttitude(self.guild,other.guild) == ATT_HOSTILE)
* * * * * * * * *{
* * * * * * * * * * * *self.aivar[AIV_ATTACKREASON] = AR_GuildEnemy;
* * * * * * * * * * * *if(C_NpcIsHero(other))
* * * * * * * * * * * *{
* * * * * * * * * * * * * * *self.aivar[AIV_LastPlayerAR] = AR_GuildEnemy;
* * * * * * * * * * * * * * *self.aivar[AIV_LastFightAgainstPlayer] = FIGHT_CANCEL;
* * * * * * * * * * * * * * *self.aivar[AIV_LastFightComment] = FALSE;
* * * * * * * * * * * *};
* * * * * * * * *}


Меня смущает проверка:
if(C_NpcIsHero(other))

Может быть, все-таки эта функция выполняется для ГГ?

Добавление от 03/25/11, в 13:32:10
P.S. Я сравнил файл ZS_Attack.d из патча и соответствующий файл из оригинальной немецкой версии 2.6:
Есть такое отличие:

Cпойлер(щелкните, чтобы прочесть):
Патч:
STR : 165: if(C_NpcIsHero(other))

Немецкая верси:
STR : 165: if(Npc_IsPlayer(other))

Кто-нибудь подскажет, в чем разница?



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