Artlira, скрипт компилится и работает, но работает не совсем правильно и просто так получилось, что он вообще работает.

Ты не так блоки сформировала.
Скобки нужны для формирования блоков кода. Первая пара скобок относит все написанное к функции void main(), которая запускает весь скрипт на выполнение. Блоки же в условии группируют несколько функций под данным условием. Тобишь, если условие верно, то выполнить все функции включенные в блок условия. Поэтому блок начинается и скобка открывается, после условия, а не перед ним. Так же превыкай правильно оформлять скрипт, а именно, пользоваться пробелами и пропуском строки. Так будет куда удобнее разбираться.
Данный скрипт должен выглядеть так:
NSS
void main()
{
object oPlayer = GetLastPlayerDied();
string sDeathMessage = "Текст";
if(GetRacialType(oPlayer) == RACIAL_TYPE_ELF)
{
sDeathMessage = " Текст _001 ";
DelayCommand(1.0, ApplyEffectToObject(DURATION_TYPE_INSTANT,
EffectVisualEffect(VFX_IMP_DEATH), oPlayer));
DelayCommand(4.0,PopUpDeathGUIPanel(oPlayer, FALSE, TRUE, 0, sDeathMessage));
}
if(GetRacialType(oPlayer) == RACIAL_TYPE_HALFORC)
{
sDeathMessage = " Текст _002";
DelayCommand(1.0, ApplyEffectToObject(DURATION_TYPE_INSTANT,
EffectVisualEffect(VFX_IMP_DEATH), oPlayer));
DelayCommand(4.0,PopUpDeathGUIPanel(oPlayer, FALSE, TRUE, 0, sDeathMessage));
}
else
{
DelayCommand(1.0, ApplyEffectToObject(DURATION_TYPE_INSTANT,
EffectVisualEffect(VFX_IMP_DEATH), oPlayer));
DelayCommand(4.0, PopUpDeathGUIPanel(oPlayer, FALSE, TRUE, 0, sDeathMessage));
}
}
Почемуже твой скрипт работает?
Дело в том, что можно формировать блоки просто для себя (анонимные блоки), для удобства, чтобы проще и нагляднее можно было разобраться в скрипте. Такие блоки ни к чему не относятся, если только не сделали ошибку и не поставили их перед, скажем, условием, без собственного блока, они служат просто как выделители, компилятор на них не ругается. В твоем случае так и получилось. Так как блок открывался ДО условия, то все, включая условие и кончая функцией открытия панельки, было воспринято, как анонимный блок. Дальше включилась в работу особенность условия. Дело в том, что один оператор относится к условию без формирования блока, нужно чтобы он просто шел после. Поэтому твой текст, согласно условию, менялся в зависимости от расы игрока. Все остальные функции выполняются столько раз, сколько написанны, так как условия на их выполнения нет. А не заметно это, потому что время их выполнения стоит одинаковым.
QUOTE(Aiwan @ Jul 8 2006, 10:01) [snapback]87375[/snapback]
Меняй хотя бы на сотую долю секунды.
Вот если поменяшь время, то сразу все увидешь. Ток разницу не в долю секунды поставь, а в пару секунд