Город Мастеров
IPB

Здравствуйте, гость ( Вход | Регистрация )

 Правила этого форума ПРАВИЛА РАЗДЕЛА
147 страниц V  « < 91 92 93 94 95 > »   
Ответить в эту темуОткрыть новую тему
> Скрипты, Все вопросы и ответы по скриптам
Aiwan
сообщение Jun 1 2006, 21:15
Сообщение #2291


Миловидный Бегрюссунг
Иконки Групп

Класс: Воин
Характер: Chaotic Good
Раса: Человек
NWN: Модмейкер
Проклятие Левора
Порядок Времени



QUOTE(gennady @ Jun 1 2006, 14:49) [snapback]83468[/snapback]
Тут у меня назрел вопрос по скриптам на OnSpawn, ведь насколько я понял локалки в вышеприведенном вами скрипте, вешаются именно там. Просто у меня было несколько проколов. Все работает 10-20 раз, а на тридцатом, бах висяк! Пришлось переписать и бросить все ХБ, т.к. с сюжетным персам это непозволительно.

Ни разу не произошло ни одного сбоя. (IMG:style_emoticons/kolobok_light/scratch_one-s_head.gif) приведи код скрипта сюда.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
gennady
сообщение Jun 2 2006, 06:13
Сообщение #2292


Level 9
Иконки Групп

Класс: Обыватель
Характер: Lawful Good
Раса: Человек
NWN: Модмейкер
Рыцарская Сага




QUOTE(Aiwan @ Jun 1 2006, 22:15) [snapback]83524[/snapback]
Ни разу не произошло ни одного сбоя. приведи код скрипта сюда.


Коды как мои, так и базовые, в том числе Леворовские. Неверский я видно тупо использовал, ребята спавнили перса в процессе игры, у меня же перс при загрузке уже находился в локе. Т.ч. есть рифы, и о них надо помнить. Да, забыл, были банальные баги при раздачи уровня. (IMG:style_emoticons/kolobok_light/scratch_one-s_head.gif)

Доморощенный код (последний баг, сработал 50/50, стал только сюжетным)
NSS
void main()
{
DelayCommand(0.5, ApplyEffectToObject(DURATION_TYPE_PERMANENT,
SupernaturalEffect(EffectPetrify()), OBJECT_SELF));
DelayCommand(1.5, SetPlotFlag(OBJECT_SELF, TRUE)); // сюжет
}


os_died (кусок кода из скрипта Левора, стоял полный код)
NSS
void main()
{
    SetLocalInt(OBJECT_SELF, "SPAWNED_DEAD", 1);
    SetIsDestroyable(FALSE, FALSE, FALSE);
    effect eDeath = EffectDeath();
    ApplyEffectToObject(DURATION_TYPE_INSTANT, eDeath, OBJECT_SELF);
}


nw_c2_j_assvict1 (базовый неверский код)
NSS
#include "NW_I0_GENERIC"
void main()
{
    SetSpawnInCondition(NW_FLAG_PERCIEVE_EVENT); 
    SetSpawnInCondition(NW_FLAG_DAMAGED_EVENT);
    SetListeningPatterns();    // Goes through and sets up which shouts  the NPC will listen to.
    WalkWayPoints();          // Optional Parameter: void WalkWayPoints(int nRun = FALSE, float fPause = 1.0)
                              // 1. Looks to see if any Way Points in the module have the tag "WP_" + NPC TAG + "_0X", if so walk them
                              // 2. If the tag of the Way Point is  "POST_" + NPC TAG the creature will return this way point after
                              //    combat.
}
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Aiwan
сообщение Jun 2 2006, 10:38
Сообщение #2293


Миловидный Бегрюссунг
Иконки Групп

Класс: Воин
Характер: Chaotic Good
Раса: Человек
NWN: Модмейкер
Проклятие Левора
Порядок Времени



Команда Делей не всегда корректно, а скажем почти всегда неккоректно работает с OBJECT_SELF. Делай так:
NSS
object oSelf = OBJECT_SELF;


NSS
void main()
{
    object oNpc = OBJECT_SELF;
    SetIsDestroyable(FALSE,FALSE,FALSE);
    ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectDeath(TRUE,TRUE), oNpc);
}

Вообще не рекомендую тереть скрипты спавновские полностью, если НПС должен что то делать. Если он мертвый то три. Код выше.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
-fenix-
сообщение Jun 2 2006, 18:15
Сообщение #2294


Level 19
Иконки Групп

Класс: Воин
Характер: Lawful Good
Раса: Человек
NWN: Скриптинг [Sn]



Делай лучше вообще не использовать в спауне, как раз всякие баги и 50/50 и вылезают.
Особенно, когда мод грузится, при загрузке лок либо нет такого, либо баги реже/меньше, но при загрузке мода 100% бяки вылезают.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Kavin
сообщение Jun 2 2006, 18:56
Сообщение #2295


Level 8
***

Класс: Паладин
Характер: Lawful Good
Раса: Полуэльф
ПОДМАСТЕРЬЕ



Возникла следующая проблема:
На одну из ветвей диалога вешаю вот такой скрипт:
NSS
const float SND_DURATION=5.0;

void main()
{
ClearAllActions();
ActionWait(1.5);
ActionDoCommand(PlaySound("sound_2"));
ActionWait(SND_DURATION);
ActionStartConversation(GetPCSpeaker(), "dialog_name", FALSE, FALSE);

}

По идее, NPC должен чуть подождать (1.5 сек), проиграть звук, а потом начать диалог.
А он ждет 5 секунд (SND_DURATION), а затем начинает диалог и параллельно проигрывает звук. Где у меня неправильно?..
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
kreon
сообщение Jun 2 2006, 20:27
Сообщение #2296


Level 8
Иконки Групп

Класс: Некромант
Характер: Chaotic Evil
Раса: Дракон
NWN: Скриптинг [PW]



NSS
const float SND_DURATION=5.0;

void main()
{
ClearAllActions();
DelayCommand(1.5, ActionDoCommand(PlaySound("sound_2")));
DelayCommand(SND_DURATION+1.5, ActionStartConversation(GetPCSpeaker(), "dialog_name", FALSE, FALSE));
}

Ждет полторы секунды, играет звук, ждет 5 секунд, начинает диалог.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Kavin
сообщение Jun 2 2006, 20:43
Сообщение #2297


Level 8
***

Класс: Паладин
Характер: Lawful Good
Раса: Полуэльф
ПОДМАСТЕРЬЕ



kreon, прикинь - не работает!
А вот что написано в лексиконе:
QUOTE
This might not be an actual bug, but though PlaySound isn't an action (you don't get the little yellow square on the screen), if you assign a PlaySound to someone, it will wait for their current action queue to finish before playing.


Сейчас буду извращаться на тему...
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
kreon
сообщение Jun 2 2006, 20:45
Сообщение #2298


Level 8
Иконки Групп

Класс: Некромант
Характер: Chaotic Evil
Раса: Дракон
NWN: Скриптинг [PW]



Гмм.. ща тоже чего-нить попробую... Я думал что ошибка в ActionWait(), т.к. действия воспроизведения звука не вейтятся вроде...
.
А, идея повяилась... Сделать SetCommandable(FALSE) (нечего будет ждать), воспроизвести звук и потом дать команду диалога.

Сообщение отредактировал kreon - Jun 2 2006, 20:47
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Kavin
сообщение Jun 2 2006, 20:56
Сообщение #2299


Level 8
***

Класс: Паладин
Характер: Lawful Good
Раса: Полуэльф
ПОДМАСТЕРЬЕ



Итак, злобно извратившись, я добился того, чего хотел.
Вот так:

Родительский скрипт:
NSS
void main()
{
object oSelf=OBJECT_SELF;

ClearAllActions();
DelayCommand(1.5, PlaySound("sound_1"));
DelayCommand(1.5, ExecuteScript("play1", oSelf));

}


Скрипт play1:
NSS
const float SND_DURATION=3.0;

void main()
{
ActionWait(SND_DURATION);
ActionStartConversation(GetPCSpeaker(), "dialog_1", FALSE, FALSE);
}


Сообщение отредактировал Kavin - Jun 2 2006, 20:56
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Lex
сообщение Jun 2 2006, 21:01
Сообщение #2300


Level 5
Иконки Групп

Класс: Обыватель
Характер: Lawful Neutral
Раса: Человек
NWN: Модмейкер
Проклятие Левора
Порядок Времени



а нафига так то?
NSS
void main()
{
ClearAllActions();
DelayCommand(1.5, PlaySound("sound_1"));
ActionWait(SND_DURATION + 1.5);
ActionStartConversation(GetPCSpeaker(), "dialog_1", FALSE, FALSE);
}

те звук через делей, остальное в стек.
ну или взять вариант Креона и выкинуть там ActionDoCommand, ибо в том варианте под задержкой он нафиг не нужен.
В стек стремно по 1 причине - можно сбить. Поэтому можно подстраховаться и стек закрыть (IMG:style_emoticons/kolobok_light/smile.gif)
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Kavin
сообщение Jun 2 2006, 21:15
Сообщение #2301


Level 8
***

Класс: Паладин
Характер: Lawful Good
Раса: Полуэльф
ПОДМАСТЕРЬЕ



Lex, попробовал - не сработало. Если верить лексикону, то получается, что PlaySound() не выполняется до тех пор, пока в стеке что-то есть. Глюк биоваревский. Т.е. очередь действий кончилась - начался звук.
Поэтому нужно делать так, чтобы PlaySound срабатывал, когда стек пуст, а затем он начинал заполняться. Разница в доли секунды получится, и глазу юзера будет незаметна.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
..::SERGO::..
сообщение Jun 6 2006, 16:35
Сообщение #2302


Level 3
*

Класс: Паладин
Характер: Lawful Good
Раса: Человек



NSS
void ANIMATION(object oD)

    {
    int A=0;
    float T,S;
    switch (Random(8)+1)
      {
      case 2: A=ANIMATION_FIREFORGET_PAUSE_SCRATCH_HEAD;T=3.0;S=1.0;break;
      case 3: A=ANIMATION_FIREFORGET_TAUNT;T=3.0;S=1.0;break;
      case 4: A=ANIMATION_FIREFORGET_PAUSE_BORED;S=1.0;break;
      case 5: A=ANIMATION_LOOPING_LISTEN;T=5.0;S=1.0;break;
      case 6: A=ANIMATION_LOOPING_LISTEN;T=5.0;S=1.0;break;
      }
    if (A==0) return;
    AssignCommand(oD,PlayAnimation(A,S,T));
    }

void DIALOG(object oD1,object oD2)
    {
    string s1="",s2="";
    string ya = GetName(GetObjectByTag("ya"));
    switch (Random(30))
        {
        case 0: s1="×òî ìû òåïåðü äåëàòü-òî áóäåì?";s2=" Íåçíàé! Âðåìÿ ïîêàæåò...";break;
        case 1: s1="À ó íàñ åñòü ÷å ïîåñòü òî, à?";s2="Ñõîäèì â òàâåðíó, òàì äîëæíû áûòü áîè, íàâåðíÿêà ìîíåòêè òî ïîñûïÿòñÿ íà çåìëþ, õåõå...";break;
        case 2: s1="Ó ìåíÿ â æèâîòå óð÷èò";s2="Òàê ñõîäè, ïîåøü, ñòàðóøêà äðÿõëàÿ ìîÿ!";break;
        case 3: s1="À íàøà äî÷êà íàâåðíî æèâåò ñ÷àñòëèâîé æèçíü...";s2="Ïðèøåë áû ÿ äîìîé íà ïÿòü ìèíóò ðàíüøå, ÿ áû èç Ñàí÷åçà âñþ äóðü òî âûáèë!! Ýõ ÿ åìó...";break;

        }
    AssignCommand(oD1,SpeakString(s1));
    AssignCommand(oD2,DelayCommand(5.0,SpeakString(s2)));
    }

void main()
{
object oPC = GetFirstPC();
if (GetArea(oPC)!=GetArea(OBJECT_SELF)) return;
object oD1 = GetNearestObjectByTag("oldman1");
object oD2 = GetNearestObjectByTag("oldwoman1");
if (GetIsInCombat(oD1)) return;
if (GetIsInCombat(oD2)) return;
if ( (IsInConversation(oD1)) || (IsInConversation(oD2)) ) return;
if (GetDistanceToObject(oPC)>10.0) return;
AssignCommand(oD1,SetFacingPoint(GetPosition(oD2)));
AssignCommand(oD2,SetFacingPoint(GetPosition(oD1)));
DIALOG(oD1,oD2);
ANIMATION(oD1);
ANIMATION(oD2);
}

Два вопроса.
1 - почему не составляется(хотя в игре все ОК)
2 - почему НПСы болтают вроде бы, но не слова не появляется!?
PS 1 - при английских словах все ОК
2 - при английских словах такаяже лажа(IMG:style_emoticons/kolobok_light/sad.gif)
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Dik Morris
сообщение Jun 6 2006, 17:04
Сообщение #2303


Вечно меняющийся
Иконки Групп

Класс: Монах
Характер: True Neutral
Раса: Человек
NWN: Скриптинг [Sn]



1.
Избавляйся от маленькой буквы я, либо ставь патч от dumbo.

NSS
...
"Избавл"+ya+"йся"
...


2.
Ты точно указал таги NPC ?

Сообщение отредактировал Dik Morris - Jun 6 2006, 17:06
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Lex
сообщение Jun 6 2006, 17:11
Сообщение #2304


Level 5
Иконки Групп

Класс: Обыватель
Характер: Lawful Neutral
Раса: Человек
NWN: Модмейкер
Проклятие Левора
Порядок Времени



QUOTE(..::SERGO::.. @ Jun 6 2006, 17:35) [snapback]83853[/snapback]
switch (Random(30))

а кейса 4. У тебя вероятность 4 к 30 что раз в 6 секунд они что-то скажут.
+ смотри, там же стоит проверка на дистанцию: те если игрок далеко, то фраз видно не будет.
ЗЫ: хм.. лучше поменять очередность.. анимация, потом проверка на дистанцию, потом слова. Так реалистичнее
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
gennady
сообщение Jun 7 2006, 06:37
Сообщение #2305


Level 9
Иконки Групп

Класс: Обыватель
Характер: Lawful Good
Раса: Человек
NWN: Модмейкер
Рыцарская Сага



QUOTE(..::SERGO::.. @ Jun 6 2006, 17:35) [snapback]83853[/snapback]
Два вопроса.
1 - почему не составляется(хотя в игре все ОК)
2 - почему НПСы болтают вроде бы, но не слова не появляется!?
PS 1 - при английских словах все ОК
2 - при английских словах такаяже лажа

SERGO, у тебя не правильно составлены стринги. Смотри как надо, и правь последнею строку сам. Если скрипт стоял на ХБ перса, то скрипт поэтому и не работал, он написан у тебя для работы с третьего перса. Маленький совет: копируй скрипт при русском шрифте в обоих редакторах, как в редакторе скриптов, так и в текстовом редакторе, должен стоять русский шрифт.

NSS
void ANIMATION(object oD)

    {
    int A=0;
    float T,S;
    switch (Random(5)+1)
      {
      case 2: A=ANIMATION_FIREFORGET_PAUSE_SCRATCH_HEAD;T=3.0;S=1.0;break;
      case 3: A=ANIMATION_FIREFORGET_TAUNT;T=3.0;S=1.0;break;
      case 4: A=ANIMATION_FIREFORGET_PAUSE_BORED;S=1.0;break;
      case 5: A=ANIMATION_LOOPING_LISTEN;T=5.0;S=1.0;break;
      case 6: A=ANIMATION_LOOPING_LISTEN;T=5.0;S=1.0;break;
      }
    if (A==0) return;
    AssignCommand(oD,PlayAnimation(A,S,T));
    }

void DIALOG(object oD1,object oD2)
    {
    string s1="",s2="";
    string ya = GetName(GetObjectByTag("ya"));
    switch (Random(30))
        {
        case 0: s1="Что мы теперь делать-то будем? ";s2="Не знаю! Врем"+ya+" покажет…";break;
        case 1: s1="А у нас есть че поесть-то, а? ";s2="Сходим в таверну, там должны быть бои, навер"+ya+"ка монетки-то посып"+ya+"тс"+ya+" на землю, хе-хе…";break;
        case 2: s1="У мен"+ya+" в животе урчит… ";s2="Так сходи, поешь, старуха др"+ya+"хла"+ya+" мо"+ya+"!";break;
        case 3: s1="А наша дочка наверно живет счастливой жизнью… ";s2="Пришел бы Я домой на пЯть минут раньше, Я бы из Санчеса всю дурь то выбил!! Эх Я ему…";break;

        }
    AssignCommand(oD1,SpeakString(s1));
    AssignCommand(oD2,DelayCommand(5.0,SpeakString(s2)));
    }

void main()
{
object oPC = GetFirstPC();
if (GetArea(oPC)!=GetArea(OBJECT_SELF)) return;
object oD1 = GetNearestObjectByTag("oldman1");
object oD2 = OBJECT_SELF;
if (GetIsInCombat(oD1)) return;
if (GetIsInCombat(oD2)) return;
if (IsInConversation(oD1) || IsInConversation(oD2)) return;
if (GetDistanceToObject(oPC)>10.0) return;
AssignCommand(oD1,SetFacingPoint(GetPosition(oD2)));
AssignCommand(oD2,SetFacingPoint(GetPosition(oD1)));
DIALOG(oD1,oD2);
ANIMATION(oD1);
ANIMATION(oD2);
}


Сообщение отредактировал gennady - Jun 7 2006, 15:17
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
..::SERGO::..
сообщение Jun 7 2006, 12:04
Сообщение #2306


Level 3
*

Класс: Паладин
Характер: Lawful Good
Раса: Человек



QUOTE
object oD2 = OBJECT_SELF;

Так я же ставил на "ХБ невидимого обьекта между ними"

Не пашет, все есть, токо слов не видно(IMG:style_emoticons/kolobok_light/sad.gif)
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Lex
сообщение Jun 7 2006, 14:35
Сообщение #2307


Level 5
Иконки Групп

Класс: Обыватель
Характер: Lawful Neutral
Раса: Человек
NWN: Модмейкер
Проклятие Левора
Порядок Времени



QUOTE(gennady @ Jun 7 2006, 07:37) [snapback]83894[/snapback]
Если скрипт стоял на ХБ перса, то скрипт поэтому и не работал, он написан у тебя для работы с третьего перса

он написан для стороннего контроллера и на его (контроллера) ХБ и стоит.
QUOTE(..::SERGO::.. @ Jun 7 2006, 13:04) [snapback]83897[/snapback]
Не пашет, все есть, токо слов не видно

я тебе сказал, в чем дело скорее всего. У тебя 4 пары фраз? Ну так ставь Рандом(5) а не 30.

____
кстати делай фразы покороче. Большие объемы текста выглядят не очень.

QUOTE(gennady @ Jun 7 2006, 07:37) [snapback]83894[/snapback]
if (GetArea(oPC)!=GetArea(OBJECT_SELF)) return; // Эта проверка здесь лишнЯЯ. Есть проверка дистанции…

не лишняя. Проверка дистанции, если игрок не в локации, даст -1.0, а это меньше 10. Так что проверка на своем месте. Тем более читай выше (поставить проверку дистанции после анимации, но до текста)

__
ЗЫ: у меня в Тсурле этот скрипт и его модификации различные пашут без проболем. Если проблема не в том, что я написал выше, у тебя верные тэги и условия соблюдены, в ХБ неписей ничего сбивающего не стоит, то я хз, почему у тебя не работает.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
gennady
сообщение Jun 7 2006, 14:51
Сообщение #2308


Level 9
Иконки Групп

Класс: Обыватель
Характер: Lawful Good
Раса: Человек
NWN: Модмейкер
Рыцарская Сага



QUOTE(..::SERGO::.. @ Jun 7 2006, 13:04) [snapback]83897[/snapback]
Так я же ставил на "ХБ невидимого обьекта между ними"

Не пашет, все есть, токо слов не видно

У меня скрипт пахал на ХБ перса, по скрипту я понял, что у тебя он стоял на невидимом объекте, для данного скрипта он в принципе лишний. Можешь вернуть
NSS
object oD2 = GetNearestObjectByTag("oldwoman1");

Будет усё пахать, только правильно настрой свойства невидимого объекта.
Поставь галку - сюжет
Убери галку - статик
Убери галку – используемый
Но может и глючить, желательно все же ставить «используемый», т.ч. лучше выкидай этот объект.
Проверка дистанции, если игрок не в локации, даст -1.0, а это меньше 10. Точно, Лекс прав. Ну, и голова!

Сообщение отредактировал gennady - Jun 7 2006, 15:14
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Lex
сообщение Jun 7 2006, 14:59
Сообщение #2309


Level 5
Иконки Групп

Класс: Обыватель
Характер: Lawful Neutral
Раса: Человек
NWN: Модмейкер
Проклятие Левора
Порядок Времени



можно просто без галки статик, у меня все контроллеры такие. Используемый - не обязательно совершенно. Не глючит при этом никогда.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
..::SERGO::..
сообщение Jun 8 2006, 10:59
Сообщение #2310


Level 3
*

Класс: Паладин
Характер: Lawful Good
Раса: Человек



АА! в задницу все! (IMG:style_emoticons/kolobok_light/declare.gif) Можно ли это заточить только под одного персонажа(типа торговца, который выкрикивает весь день)
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Dik Morris
сообщение Jun 8 2006, 11:35
Сообщение #2311


Вечно меняющийся
Иконки Групп

Класс: Монах
Характер: True Neutral
Раса: Человек
NWN: Скриптинг [Sn]



NSS
void ANIMATION(object oD)
{
    int A=0;
    float T,S;
    switch (Random(5)+1)
      {
      case 2: A=ANIMATION_FIREFORGET_PAUSE_SCRATCH_HEAD;T=3.0;S=1.0;break;
      case 3: A=ANIMATION_FIREFORGET_TAUNT;T=3.0;S=1.0;break;
      case 4: A=ANIMATION_FIREFORGET_PAUSE_BORED;S=1.0;break;
      case 5: A=ANIMATION_LOOPING_LISTEN;T=5.0;S=1.0;break;
      case 6: A=ANIMATION_LOOPING_LISTEN;T=5.0;S=1.0;break;
      }
    if (A==0) return;
    AssignCommand(oD,PlayAnimation(A,S,T));
}

void DIALOG(object oD1)
{
    string s1="";
    string ya = GetName(GetObjectByTag("ya"));
    switch (Random(4)+1)
        {
        case 1: s1="text"; break;
        case 2: s1="text"; break;
        case 3: s1="text"; break;
        case 4: s1="text"; break;
        }
    AssignCommand(oD1,SpeakString(s1));
}

void main()
{
object oPC = GetFirstPC();
if (GetArea(oPC)!=GetArea(OBJECT_SELF)) return;
object oD2 = OBJECT_SELF;
if (GetIsInCombat(oD2)) return;
if (IsInConversation(oD2)) return;
if (GetDistanceToObject(oPC)>10.0) return;
DIALOG(oD2);
ANIMATION(oD2);
}


Сообщение отредактировал Dik Morris - Jun 8 2006, 11:40
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Mandrake
сообщение Jun 8 2006, 13:11
Сообщение #2312


Level 3
*

Класс: Волшебник
Характер: Neutral Evil
Раса: Человек



NSS
void main()
{
    object oPC = OBJECT_SELF;



  if ((GetLevelByClass(CLASS_TYPE_PALEMASTER, oPC)>0))

  {
    int nLevel = GetLevelByClass(CLASS_TYPE_PALEMASTER, OBJECT_SELF);
    effect eSummon;
    float fDelay = 3.0;
    int nDuration = nLevel;
    if (nLevel >= 7)
        eSummon = EffectSummonCreature("NW_S_DOOMKGHT",VFX_FNF_SUMMON_UNDEAD);
    else
        eSummon = EffectSummonCreature("NW_S_GHAST",VFX_FNF_SUMMON_UNDEAD);

    ApplyEffectAtLocation(DURATION_TYPE_TEMPORARY, eSummon, GetSpellTargetLocation(), HoursToSeconds(nDuration));
    }


Привожу скипт для объяснения ситуации, сам скрипт работает, но у меня проблемы вот с чем. Хочется внести своего самона, ну например чтобы при 10 лвлах ПМа вылезал Командир Дум Найтов. Когда я ставлю его со стандартным его тегом, он вылезает, однако на нем нету скриптов хенчмана(или как их правильно назвать), поэтому управлять им не возможно. Я добавляю ему их, меняю таг, соответствено он перемещается из стандартных монстров, в сделаных мной, и когда я добавляю его в этот скрипт вместо командира вылезает голый дварф с 1 хп и без имени, мобы на него не реагируют (IMG:style_emoticons/kolobok_light/declare.gif) Объясните пожалуйста как с этим быть.

P.S. Если запостил не в тот раздел, прошу прощения, пока еще не разобрался с форумом.

Сообщение отредактировал Mandrake - Jun 8 2006, 13:25
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Lex
сообщение Jun 8 2006, 16:05
Сообщение #2313


Level 5
Иконки Групп

Класс: Обыватель
Характер: Lawful Neutral
Раса: Человек
NWN: Модмейкер
Проклятие Левора
Порядок Времени



все, что тебе нужно это указать резреф твоего ДумКнайта в функции EffectSummonCreature. (резреф, не тэг. Это важно.) те что-то такое
NSS
void main()
{
    object oPC = OBJECT_SELF;



  if ((GetLevelByClass(CLASS_TYPE_PALEMASTER, oPC)>0))

  {
    int nLevel = GetLevelByClass(CLASS_TYPE_PALEMASTER, OBJECT_SELF);
    string sSummon;
    float fDelay = 3.0;
    int nDuration = nLevel;
    if (nLevel >= 10) // с 10 левела твой командир
        sSummon = "твой резреф";
    else if (nLevel >= 7) // с 7 по 10 просто думкнайт
        sSummon = "NW_S_DOOMKGHT";
    else  // до 7го гаст.
        sSummon = "NW_S_GHAST";


    ApplyEffectAtLocation(DURATION_TYPE_TEMPORARY, EffectSummonCreature(sSummon,VFX_FNF_SUMMON_UNDEAD), GetSpellTargetLocation(), HoursToSeconds(nDuration));
    }
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Mandrake
сообщение Jun 8 2006, 20:02
Сообщение #2314


Level 3
*

Класс: Волшебник
Характер: Neutral Evil
Раса: Человек



Огромное спасибо (IMG:style_emoticons/kolobok_light/thank_you.gif) Теперь все стало работать. Я просто думал раз стандартные мобы указаны через тэги, то и мои должны быть через них (IMG:style_emoticons/kolobok_light/smile.gif)
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Lex
сообщение Jun 8 2006, 20:06
Сообщение #2315


Level 5
Иконки Групп

Класс: Обыватель
Характер: Lawful Neutral
Раса: Человек
NWN: Модмейкер
Проклятие Левора
Порядок Времени



у стандартных совпадаюи тэги и рефы. Тебе тоже стоит делать, чтобы совпадали. Обычно правило такое: реф маленькими буквами, тэг - большими. (и одинаковые по содержанию)
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения

147 страниц V  « < 91 92 93 94 95 > » 
Ответить в эту темуОткрыть новую тему
4 чел. читают эту тему (гостей: 4, скрытых пользователей: 0)
Пользователей: 0

 



Текстовая версия Сейчас: 29th April 2025 - 18:18