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

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

 Правила этого форума ПРАВИЛА РАЗДЕЛА
147 страниц V  « < 49 50 51 52 53 > »   
Ответить в эту темуОткрыть новую тему
> Скрипты, Все вопросы и ответы по скриптам
Lex
сообщение Jun 2 2005, 08:31
Сообщение #1236


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

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



те он появляется, а тот НПС еще дергается? Так местами там поменяй функции анимации и создания скелета..
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
dumbo
сообщение Jun 2 2005, 21:54
Сообщение #1237


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

Класс: Фея
Характер: Chaotic Evil
Раса: Тварь
NWN: Скриптинг [PW]



Мефистофель
ну и задачку ты себе нашел! :crazy:
на OnDamage вешать эту анимацию не очень хорошо, потому как есть всякая нехорошая магия, которая убивает сразу. если смотреть в торону OnDeath, то при смерти движок с довольно большой вероятностью успевает до вызова скрипта навесить анимацию падения - отследить это без мазы, поэтому часто начальная часть анимации пропадает. хотя и в OnDamage могут убить в лежачем положении(кнок)... вобщем, сделать так, чтоб это работало всегда красиво и правильно невозможно, так что вешай вот это на OnDeath и смирись :yes:
Neverwinter Script Source
void main()
{
  object oNPC = OBJECT_SELF;
  if (GetLocalInt(oNPC,"DEATH")) return;
  SetLocalInt(oNPC,"DEATH",TRUE);
  ClearAllActions(TRUE);
  SetImmortal(oNPC,TRUE);
  SetIsDestroyable(FALSE);
  SetAILevel(oNPC, AI_LEVEL_VERY_LOW); // stop nw_c2_default1 and 2
  float fT = 0.0, fSpasm1 = 2.0, fSpasm2 = 1.0, fDestroy = 5.0;
  DelayCommand(fT+=0.01,ApplyEffectToObject(DURATION_TYPE_PERMANENT,
                        EffectResurrection(),oNPC));
  DelayCommand(fT+=0.01,ApplyEffectToObject(DURATION_TYPE_PERMANENT,
                        EffectHeal(30),oNPC));
  DelayCommand(fT+=0.10,PlayAnimation(ANIMATION_LOOPING_SPASM, 1.0, fSpasm1));
  DelayCommand(fT+=fSpasm1,SetCreatureAppearanceType(oNPC,
                          APPEARANCE_TYPE_SKELETON_COMMON));
  DelayCommand(fT+=0.01,PlayAnimation(ANIMATION_LOOPING_SPASM, 1.5, fSpasm2));
  DelayCommand(fT+=fSpasm2,SetImmortal(oNPC,FALSE));
  DelayCommand(fT+=0.01,ApplyEffectToObject(DURATION_TYPE_INSTANT,
                        EffectDeath(),oNPC));
  DelayCommand(fT+=fDestroy,SetIsDestroyable(TRUE));
}

также, на все остальные слоты лучше навесить врапперы типа:
Neverwinter Script Source
void main()
{
  if (!GetLocalInt(OBJECT_SELF,"DEATH"))
    ExecuteScript("nw_c2_default5", OBJECT_SELF);
}

вызываемый скрипт для каждого слота, естественно, свой. критичны 1,2,3,5,6,8,b... короче, проще все сделать. :crazy:

ps. после "чуть-чуть подумать" переделал все, посему пришлось прибегнуть к редактированию поста... :oops:

Сообщение отредактировал dumbo - Jun 3 2005, 03:42
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
minion
сообщение Jun 3 2005, 01:17
Сообщение #1238


Level 4
**

Класс: Волшебник
Характер: Chaotic Good
Раса: Эльф



mamuc У меня тут появилась немного другая идея, но раз ты предложил решенте проблемы то я сначала рассмотрю твое. Спасибо за помощь. :good:
Если будут еще вопросы, то непременно об этом сообщу.
Aiwan У меня и стаяли дебаги везде. Вот только я все равно не мог понять в чем баг. :yes: Но все равно спасибо.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Garou
сообщение Jun 3 2005, 09:59
Сообщение #1239


Level 3
*

Класс: Оборотень
Характер: Chaotic Good
Раса: Человек



В нормальном состоянии в игре кнопкой (Esc) можно прервать любой диалог, есть ли возможность вставив скрипт в () запретить прерывание (Уж больно ответственный момент в игре) диалога? Как выглядит этот скрипт?
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Lex
сообщение Jun 3 2005, 10:04
Сообщение #1240


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

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



Над этим бились очень долго сингловики. Выход нашли такой:
в начале диалога такое сделать (те в скрипте onDialog у НПС добавить строку)
Neverwinter Script Source
SetCutsceneMode(GetPCSpeaker(),TRUE); // вот не помню, катит тут такое определение игрока или нет

а в конце
Neverwinter Script Source
SetCutsceneMode(GetPCSpeaker(),FALSE);
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Garou
сообщение Jun 3 2005, 10:40
Сообщение #1241


Level 3
*

Класс: Оборотень
Характер: Chaotic Good
Раса: Человек



Попробую. Спас:)
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
minion
сообщение Jun 4 2005, 12:50
Сообщение #1242


Level 4
**

Класс: Волшебник
Характер: Chaotic Good
Раса: Эльф



mamuc А если я хочу, чтобы на одном спелле висело 3 ингридиента, а на другом допустим 4, то я могу сделать так:
Neverwinter Script Source
struct stRec
{
    string req1;
    string req2;
    string req3;
    string req4;
    string rez;
    int num;
};

struct stRec SetupLab(int nSpellID)
{
    struct stRec stR;
    switch (nSpellID)
    {
        case SPELL_MELFS_ACID_ARROW:
            stR.req1 = "NW_IT_MSMLMISC12";
            stR.req2 = "NW_IT_MSMLMISC09";
            stR.req3 = "****";
            stR.req4 = "****";         
            stR.rez = "****";
            stR.num = 4; // число ингридиентов
            break;
        case SPELL_MAGEARMOR:
            stR.req1 = "NW_IT_MSMLMISC12";
            stR.req2 = "NW_IT_MSMLMISC10";
            stR.req3 = "****";         
            stR.rez = "****";
            stR.num = 3;
            break;
        // пример для 2 спеллов     
    }
    return stR;
}


Т.е. сначала я определяю кастуемый спелл, а потом вызываю SetupLab (кастуемый спелл). Или мне надо сделать по другому?
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Archangel
сообщение Jun 5 2005, 19:01
Сообщение #1243


Восставший из пепла
***

Класс: Бледный Мастер
Характер: Neutral Evil
Раса: Человек
ПОДМАСТЕРЬЕ



Неподскажите, что тут неправильно:
Neverwinter Script Source
DelayCommand(2.2, AssignCommand(oPC, SetCameraFacing(CAMERA_MODE_STIFF_CHASE_CAMERA)));

Мдя... наверно тут написана полная охинея. :crazy: Че-то плоховато я разбираюсь с изменением режима камер. :swoon:
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
minion
сообщение Jun 5 2005, 19:07
Сообщение #1244


Level 4
**

Класс: Волшебник
Характер: Chaotic Good
Раса: Эльф



Archangelэ А что должно произойти по твоей задумке? А то не совсем понятно.
Добавлено в [mergetime]1117987770[/mergetime]
по тому что у тебя написано камера закрепится за игроком без возможности поворота.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Archangel
сообщение Jun 5 2005, 19:10
Сообщение #1245


Восставший из пепла
***

Класс: Бледный Мастер
Характер: Neutral Evil
Раса: Человек
ПОДМАСТЕРЬЕ



QUOTE
Archangelэ А что должно произойти по твоей задумке? А то не совсем понятно.

Должен поменятся режим камеры. От вида "сверху" к виду "со спины".
Добавлено в [mergetime]1117988024[/mergetime]
QUOTE
по тому что у тебя написано камера закрепится за игроком без возможности поворота.

Мне невожна возможность поворота. У мня КутСцена. Так что камера должна быть статичной.

Сообщение отредактировал Archangel - Jun 5 2005, 19:11
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
minion
сообщение Jun 5 2005, 19:15
Сообщение #1246


Level 4
**

Класс: Волшебник
Характер: Chaotic Good
Раса: Эльф



Как я написа камера по константе у тебя происходит закрепление камеры за игроком.
И для смены режима камеры используй
Neverwinter Script Source
void SetCameraMode(
    object oPlayer,
    int nCameraMode
);

Сама комманда с параметрами.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Мефистофель
сообщение Jun 6 2005, 01:20
Сообщение #1247


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

Класс: Страж Тьмы
Характер: Lawful Good
Раса: Баатезу



А помойму, нодо просто, джампить РС в другую точку и задать градусы.
Сделай обычный переход камеры от высоты, до спины, задав градусы положения. например 90.0, 6.0 50. вид с высока. и плавно переместив камеру градусами 90.0, 0.0, 79. вид со спины.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
dumbo
сообщение Jun 7 2005, 08:42
Сообщение #1248


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

Класс: Фея
Характер: Chaotic Evil
Раса: Тварь
NWN: Скриптинг [PW]



QUOTE (Анамиэль @ Jun 6 2005, 16:55)
Можно ли сделать так,чтобы НПС сидел в кресле,но так чтобы с ним было возможно ведение диалога?

насчет того, что непись должен встать для каких либо действий мы уже прояснили. теперь пару мелких скриптиков для реализации "сидоков".
1. создаем плэйс стула(static). тэг ему прописываем например CHAIR_01.
2. создаем непися. навешиваем на него локалку-string(правый клик на неписе-Variables(Переменные)) с именем Chair и значением = тэг стула, куда он должен садиться. т.е. в нашем случае "CHAIR_01".
3. в слот OnHeartBit неписю пишем скрипт:
Neverwinter Script Source
void main()
{
  if (GetAILevel() == AI_LEVEL_VERY_LOW) return;
  ExecuteScript("nw_c2_default1", OBJECT_SELF);
  if (!IsInConversation(OBJECT_SELF) &&
      !GetIsInCombat() &&
      GetCurrentAction() != ACTION_SIT)
    ExecuteScript("dd_sit",OBJECT_SELF);
}

4. в OnSpawn:
Neverwinter Script Source
void main()
{
  ExecuteScript("nw_c2_default9", OBJECT_SELF);
  ExecuteScript("dmb_sit", OBJECT_SELF);
}

5. собственно, сам dmb_sit:
Neverwinter Script Source
void main()
{
  int nIndex = 0;
  object oChair = OBJECT_INVALID;
  string sChairTag = GetLocalString(OBJECT_SELF, "Chair");
  if (sChairTag!="") {
    oChair = GetObjectByTag(sChairTag);
  }
  else
  {
    for (nIndex = 1; nIndex < 10; nIndex++) {
      oChair = GetNearestObject(OBJECT_TYPE_PLACEABLE, OBJECT_SELF, nIndex);
      if (!GetIsObjectValid(oChair)) break;
      if (FindSubString(GetStringUpperCase(GetTag(oChair)), "CHAIR")!=-1 &&
          !GetIsObjectValid(GetSittingCreature(oChair))) {
          nIndex = 0;
          break;
      }
    }
  }
  if (nIndex==0 && GetIsObjectValid(oChair)) ActionSit(oChair);
}


все. теперь непись при появлении будет сразу садиться на стул и усаживаться туда после разговора/драки. если на непися не вешать локалку с тэгом стула, то он поищет любой рядом стоящий стул для восседания.
ps. только сейчас, заметив в своем тестовом модуле, как мимо проносится девочка и водружает свою пятую точку на сундук, решил чутка подправить... :oops:

Сообщение отредактировал dumbo - Jun 7 2005, 23:03
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
mamuc
сообщение Jun 7 2005, 09:10
Сообщение #1249


Лорд AxisTown'a
Иконки Групп

Класс: Монах
Характер: Lawful Good
Раса: Дварф
NWN: Маппинг



то minion
да можно=)
только не забудь вместо **** поставить для stR.req3 ,stR.req4 тэги необходимых компонентов, а stR.rez - ресреф создаваемого итема :D :yes:

и можно сделать так что бы обойтись и без поля int num; (неиспользовать)
..ведь в другом скрипте ты наверняка будешь делать проверку наличия компонентов для соотв крафта ...и там поставить условие типа если , скажем stR.req4=="" ( то есть пустой, не используется) то наличие компонента ( пустого компонента =)) есть.. =)
но это уже так на любителя..можно иделать стакой структурой как ты создал =)
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
2GoDoom
сообщение Jun 7 2005, 10:17
Сообщение #1250


Level 11
***

Класс: Обыватель
Характер: True Neutral
Раса: Человек
NWN: Маппинг



dumbo, все круто... но вот одна недоработочка - если таких неписей (которые хотят сест ьпосидеть) будет куча - то буит жутко тормозить (из-за хертбита) тем более, что помимо "садящихся" неписей ест ьи другие скрипты.
Поэтому, имхо, лучше переписать этот скрипт под юзердейфайнед...
К тому же можно будет сразу делать проверку на то - сидит он или нет, и если нет - то скрипт вапще не выполялся (прерывался, не идя по следущим веткам) ;)

З.Ы.
Имхо так нада делать... но, возможно, я ошибаюсь?
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Aiwan
сообщение Jun 7 2005, 15:22
Сообщение #1251


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

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



2GoDoom воткни в начало и будет меньше проблем.
Neverwinter Script Source
//    if (GetArea(OBJECT_SELF)!=GetArea(GetNearestPC())) {return;}
      /*  Проверка для игры несколькими игроками. Разкомментируйте
        если вы собираетесь провести здесь партию. */

    if (GetArea(OBJECT_SELF)!=GetArea(GetFirstPC())) {return;}
    /* Работает это для одиночного режима игры. Так проще и быстрее. */
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Scaled
сообщение Jun 8 2005, 05:31
Сообщение #1252


Level 3
*

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



Пиветсвую всех.
На досуге решил спросить:
1. Обьясните плз, если не трудно, на примере мне функцию float
2. Не знаю где спросить - как можно добавить свой спецэффект заклинания, такое вообще можно?
3. Не помню, потом спрошу :yes:
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
mamuc
сообщение Jun 8 2005, 08:33
Сообщение #1253


Лорд AxisTown'a
Иконки Групп

Класс: Монах
Характер: Lawful Good
Раса: Дварф
NWN: Маппинг



QUOTE
Обьясните плз, если не трудно, на примере мне функцию float


float это не функция, а тип чисел с плавающей точкой ( 0.5-это число типа флоат, 3-число типа int)есть функции преобразующие числа одного типа в другой ( FloatToInt например) в скриптах весьма важно какими числами и переменными пользуешся и что за число(какого типа) получается в результате вычислений.

Сообщение отредактировал mamuc - Jun 8 2005, 08:35
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
DBColl
сообщение Jun 8 2005, 13:14
Сообщение #1254


4-х Кубовый
Иконки Групп

Класс: Некромант
Характер: Lawful Evil
Раса: Человек
NWN: Скриптинг [Sn]
Проклятие Левора



QUOTE (Scaled @ Jun 8 2005, 05:31)
2. Не знаю где спросить - как можно добавить свой спецэффект заклинания, такое вообще можно?

Можно, если хорошо знаком с 3DMax'ом и MDL-плагином. Тема достаточно сложная.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Yuri
сообщение Jun 9 2005, 04:56
Сообщение #1255


Level 1


Класс: Вор
Характер: Chaotic Neutral
Раса: Человек



Народ, подскажите начинающему мейкеру.
Проблема такая.
Перс появляется в таверне в начале модуля. Модуль снгл будет порядка 5-го уровня. Нужно чтобы не пришел броневик или слабак, - баланс нужен. Раздеть и вычистить инвентарь могу. Рядом сундук поставить для одевания в шмотки соотв. уровню - все это делается. Но вот, нужен скрипт: если он ниже 5-го добавить экспы - тоже вроде не сложно, а вот как если он будет 20-го до пятого сделать? Вариант как в Леворе "Вы уже где-то были" - не очень нравится.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Pather
сообщение Jun 9 2005, 07:54
Сообщение #1256


Level 1


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



Ответ Yuri: Есть функция, называющаяся,кажется SetXP. Она меняет асболютное количество экспы у PC и может снять уровни, если экспы станет меньше. Так что, делаешь SetXP(oPC, 10000) и он становиться 5 уровня.
Добавлено в [mergetime]1118293160[/mergetime]
Не подскажете, как можно ограничить выбор класса/скиллов/фитов при левелянии? Скажем разрешить брать уровень класса, только если игрок нашел тренера для этого класса?
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Aiwan
сообщение Jun 9 2005, 09:48
Сообщение #1257


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

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



Попробуй на слот OnPlayerLevelUP модуля воткнуть проверку. Какую тебе самому решать. Нет ее, долой уровень назад.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
minion
сообщение Jun 10 2005, 12:49
Сообщение #1258


Level 4
**

Класс: Волшебник
Характер: Chaotic Good
Раса: Эльф



mamuc Еще вопрос: я читал, что любой предмет может вместить до 75 строк скрипта. Теперь у меня появились сомнения. Вдруг мой скрипт вылезет за эти рамки, что тогда делать?

QUOTE
и можно сделать так что бы обойтись и без поля int num; (неиспользовать)


А как ты тогда придлагаешь мне различать комбинации с 3 и 4 ингридиентами?
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
dumbo
сообщение Jun 10 2005, 13:11
Сообщение #1259


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

Класс: Фея
Характер: Chaotic Evil
Раса: Тварь
NWN: Скриптинг [PW]



minion
плохо читал. скрипт не имеет ограничений по объему. а речь шла об action queue - она вмещает максимум 75 акций.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
minion
сообщение Jun 10 2005, 13:16
Сообщение #1260


Level 4
**

Класс: Волшебник
Характер: Chaotic Good
Раса: Эльф



dumbo А-а-а-а! Спасибо что объяснил. И правда не внимательно прочитал! :sorry: Остался еще один вопрос!
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения

147 страниц V  « < 49 50 51 52 53 > » 
Ответить в эту темуОткрыть новую тему
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



Текстовая версия Сейчас: 4th May 2025 - 21:05