Цитата(Ёжик @ Aug 16 2007, 07:05)
Кто мне скажет, как сделать так, чтобы НПС говорил с игроком не диалогом, а спикстрингами? В смысле фразы типа "привет-пока".
Ёжа, в 1 Невере можно было такое сделать тремя способами…
1. Пишем диалог из одних первых фраз НПС и на проверку ставим скрипт случайного начала диалога, например с вероятностью 25%. Самая нижняя ветка остается всегда без скрипта, для 100% вероятности появления фразы. Сприпт на проверку случайности:
Neverwinter Script Source
//::///////////////////////////////////////////////
//:: Случайность 25%
//:: FileName prov_25x100
//:://////////////////////////////////////////////
int StartingConditional()
{
if(Random(100) >= 25)
return FALSE;
return TRUE;
}
2. Если нужно, то можно записать несколько фраз, идущих последовательно при каждом клике по НПС. Пишем также диалог из одних фраз НПС и на проверку ставим ряд скриптов с проверкой и повышением локалки на этом НПС. В последней ветке на действие ставим скрипт обнуление локалки и тогда у нас цикл фраз замкнется… т.е. опять появитсь 1, потом 2 и т.д..
Neverwinter Script Source
// ПЕРВЫЙ ДИАЛОГ С ГЕРОЕМ
int StartingConditional()
{
object oSelf = OBJECT_SELF;
if(GetLocalInt(oSelf, "R_oPC_oSelf")== 0) // Тут в других скриптах повышаем переменную 1;2;3;4 и т.д. …
{
SetLocalInt(oSelf, "R_oPC_oSelf", GetLocalInt(oSelf, "R_oPC_oSelf") + 1);// Прибавить
return TRUE;
}
return FALSE;
}
Neverwinter Script Source
// ВОЗВРАТ К ПЕРВОМУ ДИАЛОГУ
void main()
{
object oSelf = OBJECT_SELF;
SetLocalInt(oSelf, "R_oPC_oSelf", 0);
}
3. Третий способ просто пишем скрипт с нужными фразами, а ветку НПС можно оставить пустой, в действие ставим скрипт на случайность:
Neverwinter Script Source
void main()
{
object oSelf = OBJECT_SELF;
string s1 = "Привет!";
string s2 = "Как Дела?!";
string s3 = "Пока!";
string sSpeak;
switch (Random(3))
{
case 0: sSpeak = s1; break;
case 1: sSpeak = s2; break;
case 2: sSpeak = s3; break;
}
AssignCommand(oSelf, SpeakString(sSpeak));
}
На последовательный цикл:
Neverwinter Script Source
void main()
{
object oSelf = OBJECT_SELF;
string s1 = "Привет!";
string s2 = "Как Дела?!";
string s3 = "Пока!";
string sSpeak;
int iLocal = GetLocalInt(oSelf, "Dialog_oSelf");
if(iLocal == 0) sSpeak = s1;
if(iLocal == 1) sSpeak = s2;
if(iLocal == 2) {sSpeak = s3; SetLocalInt(oSelf, "Dialog_oSelf", -1);}
AssignCommand(oSelf, SpeakString(sSpeak));
SetLocalInt(oSelf, "R_oPC_oSelf", GetLocalInt(oSelf, "Dialog_oSelf") + 1);// Прибавить
}