Хелдар
Участник форума
- Регистрация
- 3 Июл 2012
- Сообщения
- 2.450
- Благодарности
- 780
- Баллы
- 375
Не знаю, поможет ли, но попытка не пыткагг разговаривает с персонажем. Слово за слово, персонаж атакует гг.
Код:AI_StopProcessInfos(self); B_Attack(self,other,AR_NONE,1);
1. Как заставить персонажа атаковать не тем оружием, которым экипирован, а кулаками?
2. Как отменить состояние атаки, когда гг сумел убежать от персонажа?
Пока держу в голове следующие варианты:
1. Разэкипировать персонажа
2. Как-то отслеживать через триггер-скрипт (по времени, что ли?)
Применение Npc_SetToFistMode(self) не помогает, поскольку персонаж становится в боевую стойку в начале диалога, а дерется все равно дубинкой.
Еще проблема: гг в процессе диалога пьет вино. Он должен захмелеть. Я применяю
Wld_PlayEffect("SLOW_TIME",other,other,0,0,0,FALSE);
Но в одних случаях это срабатывает в начале (ветки) диалога. В другом случае в конце (в разных функциях. Для каждой функции в свой момент. Ситуация повторяется из раза в раз. То есть для каждой функции свое время срабатывания. Одно и то же.) но только не в тот момент, в который этот вызов поставлен.
Может кто подскажет, где грабли?
1. НастасьСанна чуть раньше предлагала по немного другому поводу вот такое решение:
2. У Вама нашел такую вещь:
// если расстояние между НПС и агрессором > дистанции преследования
if(Npc_GetDistToNpc(self,other) > FIGHT_DIST_CANCEL)
{
// очистка очереди AI состояний НПС
Npc_ClearAIQueue(self);
return LOOP_END;
};
Чтобы НПС потом не агрился, попробуй добавить внутрь условие
if(Hlp_GetInstanceID(self) == Hlp_GetInstanceID(*инстанция необходимого НПС*))
{
*инстанция необходимого НПС*.npcType = NPCTYPE_NEUTRAL;
ИЛИ
*инстанция необходимого НПС*.npcType = NPCTYPE_FRIEND;
(В зависимости от ситуации, которая у тебя там)
};
Что если указать дамаг с минусом? Кулаки тогда окажутся всяко лучше, и НПС будет драться ими. Не уверен, но попробовать бы стоило.можно почистить инвентарь от всего или сделать спец. инстанцию оружия. В этой спец. инстанции указываем, например, damage[0] = 9999; Реально этот урон наноситься не будет, а вот учитываться при выборе оружия - будет. Только строчку нужно прописать после damageTotal и damagetype.
2. У Вама нашел такую вещь:
// если расстояние между НПС и агрессором > дистанции преследования
if(Npc_GetDistToNpc(self,other) > FIGHT_DIST_CANCEL)
{
// очистка очереди AI состояний НПС
Npc_ClearAIQueue(self);
return LOOP_END;
};
Чтобы НПС потом не агрился, попробуй добавить внутрь условие
if(Hlp_GetInstanceID(self) == Hlp_GetInstanceID(*инстанция необходимого НПС*))
{
*инстанция необходимого НПС*.npcType = NPCTYPE_NEUTRAL;
ИЛИ
*инстанция необходимого НПС*.npcType = NPCTYPE_FRIEND;
(В зависимости от ситуации, которая у тебя там)
};