Создаешь диалог, пишеш в нем типо:
Code
Привет
\---Присоединяйся к пати.
\---Конечно! /сюда скрипт\
\---Вон из пати!
\---Я никому не нужен :(((/сюда скрипт\
\---Ничего
\---Ничего так ничего
В строчке где написано "сюда скрипт" во вкладке Actions ставишь этот скрипт:
Code
void main(int Action)
{
object oPC = (GetPCSpeaker()==OBJECT_INVALID?OBJECT_SELF:GetPCSpeaker());
object oNPC = GetObjectByTag("n_helper2");
if (!GetIsRosterMember(oNPC)) {
AddRosterMemberByCharacter("helper", oNPC);
SetIsRosterMemberSelectable("helper", TRUE);
}
if (Action) AddRosterMemberToParty("helper", oPC);
else {
RemoveRosterMemberFromParty("helper", oPC);
SetIsRosterMemberSelectable("helper", TRUE);
object waypoint = GetObjectByTag("NW_WAYPOINT001");
SpawnRosterMember("helper", GetLocation(waypoint));
}
}
Переменную Action (int) в первом случае ставиш 1, во втором 0.
Могу написать с проверкой на принадлежность к пати (типо чтоб если он уже в пати, то не предлагал присоединится, а если не в пати, то чтоб не предлагал выйти), но получится длиннее.
Я в скриптах не особо шарю, это я выдрал из JegTraining модуля.
Добавлено (Сегодня, 21:28)
---------------------------------------------
Напишу все-таки проверку:
Code
int StartingConditional()
{
object oNPC = GetObjectByTag("n_helper2");
if (GetIsRosterMember(oNPC))
return (!GetIsRosterMemberAvailable("helper"));
return FALSE;
}
Ее пешеш как скрипт. Теперь в строчках где написано "проверка" ставишь ее во вкладку conditions:
Code
Привет
\---Присоединяйся к пати. (проверка и ставишь галочку в поле NOT)
\---Конечно! /сюда скрипт\
\---Вон из пати!(проверка)
\---Я никому не нужен :(((/сюда скрипт\
\---Ничего
\---Ничего так ничего
Добавлено (Сегодня, 21:34)
---------------------------------------------
Черт, чуть не так. В первом скрипте удали строчки
Code
object waypoint = GetObjectByTag("NW_WAYPOINT001");
SpawnRosterMember("helper", GetLocation(waypoint));
И в обоих нужно "n_helper2" заменить на "ИМЯ_ТВОЕГО_НПЦ".
Вроде больше ничего не пропустил :)))) Не бейте сильно Ж)