Уважаемые гости и новички, приветствуем Вас на нашем форуме
Здесь вы можете найти ответы практически на все свои вопросы о серии игр «Готика» (в том числе различных модах на нее), «Ведьмак», «Ризен», «Древние свитки», «Эра дракона» и о многих других играх. Можете также узнать свежие новости о разработке новых проектов, восхититься творчеством наших форумчан, либо самим показать, что вы умеете. Ну и наконец, можете обсудить общие увлечения или просто весело пообщаться с посетителями «Таверны».
Чтобы получить возможность писать на форуме, оставьте сообщение в этой теме.
Вы используете устаревший браузер. Этот и другие сайты могут отображаться в нём некорректно. Вам необходимо обновить браузер или попробовать использовать другой.
Вобщем, если интересно - контейнер нельзя закрывать пока не выполняется условие isopen. Т.е. пассивный и активный контейнеры должны сначала полностью открыться. Странно все это конечно, но это уже побороть просто.
Есть другая проблема - после какого-то патча сп перестал отображаться эффект горения. Причем как то странно - то горит то нет. Киллер мне давно говорил что это как то на ФПС завязано. Но так чем дальше в лес тем больше дров, ФПС меньше не станет. Вот тут даже юня бессильна
Подскажите пожалуйста, а каким образом происходит смерть у нпс? Имею ввиду как в г2, если побить горожанина, наемника они потеряют сознание, а если бандита или ищущего, то они сразу к белиару отправляются)
это от гильдии зависит или от чего? Хотел бы подобное на г1 замутить, но не совсем понимаю, как это работает?
// ********************************************************************************
// Убивается ли НПС по окончании жизни или переводится в бессознательное состояние
// ********************************************************************************
func int C_DropUnconscious()
{
// если преступник монстр или Черный маг (Ищущий) или бандит или преступнику разрешено убить НПС
if(other.guild > GIL_SEPERATOR_HUM) || (other.guild == GIL_DMT) || (other.guild == GIL_BDT) || (other.aivar[AIV_DropDeadAndKill] == TRUE)
{
// НПС будет убит
return FALSE;
};
// если НПС человек
if(self.guild < GIL_SEPERATOR_HUM)
{
// если НПС не Черный маг и не бандит и его не разрешено убивать преступнику
if(self.guild != GIL_DMT) && (self.guild != GIL_BDT) && (self.aivar[AIV_DropDeadAndKill] == FALSE)
{
// НПС будет безсознания
return TRUE;
};
};
// НПС будет убит
return FALSE;
};
Yo, boyos. I have a weird problem with sending a passive perception signal to nearby NPCs.
Mainly, there's that G_Picklock function in the scripts that, if the picklock snapped during the procedure, is responsible for making a roll and then sending a "perc ping":
This is the function from the original, not modded scripts, by the way, and it works flawlessly, waking up nearby NPCs if the picklock broke.
I added an armor that's supposed to nullify the issue of waking up nearby NPCs and modified the function as followed:
However, in this situation, even if the picklock broke during the procedure and the player didn't wear an armor or not that specific one, the passive perception function failed to wake up the nearby NPCs every single time. For the debugging purposes, I made 100 failed picklock attempts and altered the Rnd >= 1 entry as well, and nothing changed. Also, the PrintScreen function displays the relevant message correctly if that armor was put on; none if there's no armor or not that particular one.
Any suggestions why is this happening?
Slavemaster Sorry for spamming your Union thread, by the way. xD
Czudak, there is no bug in the code you show. Debug perception function: is it assigned to an NPC, is player in NPC's sense range, is it called. If called why it doesn't awake the NPC.
Czudak, there is no bug in the code you show. Debug perception function: is it assigned to an NPC, is player in NPC's sense range, is it called. If called why it doesn't awake the NPC.
Yes, to all three. I "print tested" all the steps, checked the function call via the expanded Marvin Helper (it works here), and everything was done within the 1000 range. Screw that, I will take care of that later, and thanks!
Czudak, думаю, причина того, что в новом варианте неписи перестают реагировать на посылку восприятия, заключается в самом факте получения ссылки на экипированный доспех. В Г2 это совсем не очевидно. Дело в том, что восприятие "тихих звуков" PERC_ASSESSQUIETSOUND изначально было заточено не только на "звук шагов", но и на "звук упавшего на пол предмета". Во всяком случае, в Г1 это так. Думаю, в Г2 что-то от этого могло остаться. Так вот, если имеется действительная ссылка на предмет item, то движок может посчитать, что речь идёт именно о факте падения предмета, а не о звуке шагов.
В функции-обработчике восприятия B_AssessQuietSound есть блокиратор реакции:
Daedalus:
if(Npc_CanSeeSource(self))
{
return;
};
Думаю, здесь как раз может определяться видимость до предмета item, ссылка на который была получена ранее.
Это всего лишь предположение, которое нужно проверять.
категорически не согласен. решения как правило ElderGamer более элегантные, грамотные и проработанные, чем "стоковые". а вот некоторые "стоковые" функции такие как например убийства при массовом использование могут привести к крашу игры
так что скорее это тюнинг, чем костыль
ElderGamer мне кажется или тут еще проверки на главу не хватает?
Daedalus:
// Активирован режим смерти без добивания -> переход в состояние смерти при соблюдении ряда условий.
else if(GameOptions & EnemyNonUnconsciousMode)
{
if(Npc_GetGuildAttitude(self,other) == ATT_HOSTILE)
{
if((self.guild == GIL_EBR) || (self.guild == GIL_GRD) || Npc_WasInState(self,ZS_Attack))
{
// Начисление опыта, если победитель - ГГ или его партнёр.
if(Npc_IsPlayer(other) || (other.aivar[AIV_PARTYMEMBER] == TRUE))
{
if(!self.aivar[AIV_WASDEFEATEDBYSC])
{
B_UnconciousXP();
self.aivar[AIV_WASDEFEATEDBYSC] = TRUE;
};
};
// Переход в состояние смерти, если победитель не человек или человек не в режиме кулачного боя.
if(!Npc_IsInFightMode(other,FMODE_FIST) || !C_NpcIsHuman(other))
{
Npc_SendPassivePerc(self,PERC_ASSESSMURDER,self,other);
Npc_ChangeAttribute(self,ATR_HITPOINTS,-1);
AI_StartState(self,ZS_Dead,0,"");
return;
};
};
};
//if(self.npcType == Npctype_ROGUE)
//if(self.aivar[AIV_IMPORTANT] == Npctype_ENEMY_OPTIONAL)
};
I figured it out. It was the custom plugin that correctly identifies the animation walk mode for sneaking; I used it in the place of the somewhat botched function for BS_SNEAK detection of the original scripts that didn't work in certain places, including the function for assessing the player's presence in the room. That particular function was taking precedence in the script for objects picklocking procedure, hence why the perception ping was never sent: because I always sneaked around in the sneaking mode.
In other words, I fell victim of my own overbore bugfixing. xD Maybe someone could use this entry for future reference.
Дорогие друзья погромисты (от слова погром), если кто шарит за рейтрейсинг. Хочу сделать такую хрень, чтобы направление луча исходило от кликнутого пикселя на экране вьюпорта (по сути сам луч идет от камеры, а направление задается от пикселя относительно угла обзора). Кто нибудь знает, как совершить подобное?
Дорогие друзья погромисты (от слова погром), если кто шарит за рейтрейсинг. Хочу сделать такую хрень, чтобы направление луча исходило от кликнутого пикселя на экране вьюпорта (по сути сам луч идет от камеры, а направление задается от пикселя относительно угла обзора). Кто нибудь знает, как совершить подобное?
На данном сайте используются файлы cookie, чтобы персонализировать контент и сохранить Ваш вход в систему, если Вы зарегистрируетесь.
Продолжая использовать этот сайт, Вы соглашаетесь на использование наших файлов cookie.