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

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

 Правила этого форума ПРАВИЛА РАЗДЕЛА
205 страниц V  « < 106 107 108 109 110 > »   
Ответить в эту темуОткрыть новую тему
> Вопросы новичков, Абсолютные глупости
Astoret
сообщение Jul 7 2006, 16:06
Сообщение #2676


Level 1


Класс: Страж Тьмы
Характер: Chaotic Evil
Раса: Гном



Подскажите плиз функцию которая определяет левел NPSа, а лутше оценивает его сложность
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Aiwan
сообщение Jul 7 2006, 21:20
Сообщение #2677


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

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



NSS
// Get the number of hitdice for oCreature.
// * Return value if oCreature is not a valid creature: 0
int GetHitDice(object oCreature)
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Lex
сообщение Jul 7 2006, 21:21
Сообщение #2678


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

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



QUOTE(Astoret @ Jul 7 2006, 17:06) [snapback]87338[/snapback]
а лутше оценивает его сложность

GetChallengeRating
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Noah
сообщение Jul 7 2006, 23:10
Сообщение #2679


Level 5
**

Класс: Убийца
Характер: Chaotic Neutral
Раса: Полуэльф



Люди!!Обьяснитe мне про flag и event я вроде врубаюсь но не совсем.Может гdе-то есть про это тема?
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Artlira
сообщение Jul 8 2006, 07:08
Сообщение #2680


Level 4
**

Класс: Маг
Характер: Chaotic Neutral
Раса: Танар'ри



Dik Morris спасибо за помощь. Панель выскакивает “на ура” (к сожалению, часть скрипта так и осталась для меня “туманной загадкой”, но видимо не все сразу…).

-fenix- благодарю за решение первого вопроса, с присвоением другой функции оРС – никаких чудес больше не наблюдается. И…
Вы абсолютно правы неписи по саркофагам не лазят… Бездумное копирование поставило меня в глупейшую ситуацию. “Если это не РС” – исправлено, осталась только обычная поверка переменной.

gennady , проверка на “фиксовый” предмет к сожалению проблемы не решает. Возможно я плохо объяснила ситуацию – юзанье любым предметом в инвентаре саркофага вызывает клонов. Может я зря заостряю на этом внимание (опыта в модулестроении у меня нет), но опыт “настолок” говорит, что при малейшем проколе ДМ(а), “Великий и Ужасный Манч бросает все дела, берет большую ложку и хавает до тех пор пока халява не закончится”… А в этом случае она никогда не закончится. Наверное можно сделать проверку и на любой предмет, но для меня это к сожалению слишком сложное решение. В любом случае, спасибо за помощь.

-fenix- и gennady спасибо за подсказку функции для “надгробной эпитафии” персонажей различных рас. Вроде бы получилось. (Аналог скрипта взят из "Левора" + подсказка с функцией GetRacialType(object))
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));
}
{
DelayCommand(1.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_IMP_DEATH), oPlayer));
DelayCommand(4.0, PopUpDeathGUIPanel(oPlayer, FALSE, TRUE, 0, sDeathMessage));
}
}

Компилится и работает, хотелось уточнить все ли верно с точки зрения “правописания” скриптов.

Сообщение отредактировал Artlira - Jul 8 2006, 07:55
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Dik Morris
сообщение Jul 8 2006, 08:52
Сообщение #2681


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

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



Noah, это подробно описывается в Лексиконе.

Artlira, gennady исправил первый скрипт. Теперь все должно работать.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Aiwan
сообщение Jul 8 2006, 09:01
Сообщение #2682


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

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



QUOTE(Artlira @ Jul 8 2006, 10:08) [snapback]87372[/snapback]
Компилится и работает, хотелось уточнить все ли верно с точки зрения “правописания” скриптов.

Я бы настоятельно не рекомендовал использовать одинаковое время таймингов команды DelayCommand() Будут проблемы. Меняй хотя бы на сотую долю секунды.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
-fenix-
сообщение Jul 8 2006, 11:49
Сообщение #2683


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

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



Artlira, скрипт компилится и работает, но работает не совсем правильно и просто так получилось, что он вообще работает. (IMG:style_emoticons/kolobok_light/smile.gif)

Ты не так блоки сформировала.
Скобки нужны для формирования блоков кода. Первая пара скобок относит все написанное к функции 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]
Меняй хотя бы на сотую долю секунды.

Вот если поменяшь время, то сразу все увидешь. Ток разницу не в долю секунды поставь, а в пару секунд

Сообщение отредактировал -fenix- - Jul 8 2006, 12:16
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Zirrex
сообщение Jul 8 2006, 17:47
Сообщение #2684


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

Класс: Друид
Характер: True Neutral
Раса: Эльф
NWN: Скриптинг [PW]
Амен



Гм, скрипты без оптимизации, верный путь к усложнению. Тот же скрипт, только гораздо короче:

NSS
void main()
{
    object oPlayer = GetLastPlayerDied();
    string sDeathMessage = "Текст";

    if (GetRacialType(oPlayer) == RACIAL_TYPE_ELF)          sDeathMessage = "Текст_001";
    else 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));
}

У нас же меняется только строковая переменная, а значит, все остальное остается постоянным. Так зачем же этот код внедрять в условия?

Да, значение "FALSE" в функции "PopUpDeathGUIPanel" не позволит воскреснуть игроку. Так и нужно?

По поводу саркофага, во-первых, почему Вампир появляется на локации сундука? Лучше ему назначить свое место появления, рассчитав точку появления от сундука, а во-вторых, скрипт, который представлен выше, работает как часы. Один раз взял вещь, больше вампир не появится, так как этому мешает переменная, которая переключается в момент взятия вещи. Немного измененный скрипт:

NSS
void main()
{
    object oItem = GetInventoryDisturbItem();
    effect eVis = EffectVisualEffect(VFX_FNF_SUMMON_UNDEAD);

    vector vSpawn = GetPositionFromLocation(GetLocation(OBJECT_SELF));
    float fFacing = GetFacing(OBJECT_SELF);

    vSpawn.x += cos(fFacing) * -4.0;
    vSpawn.y += sin(fFacing) * -4.0;

    location lVampire = Location(GetArea(OBJECT_SELF), vSpawn, fFacing);

    if (GetLocalInt(OBJECT_SELF, "Nosferatu") == 1) return;

    if (GetTag(oItem) == "item_tag")
    {
        object oWamp = CreateObject(OBJECT_TYPE_CREATURE, "vampire_nosferatu", lVampire);
        ApplyEffectAtLocation(DURATION_TYPE_INSTANT, eVis, GetLocation(oWamp));
        SetLocalInt(OBJECT_SELF, "Nosferatu", 1);
    }
}

Значение "-4" устанавливает расстояние от сундука. По-умолчанию, когда берешь требуемую вещь, вампир появляется за спиной у берущего. Правда, если берущий не стоит ровно лицом к сундуку, то вампир появится не за спиной, а лицом по отношению к сундуку. Это можно легко исправить, переориентировав точку отсчета, взяв за основу локацию берущего.

Сообщение отредактировал Zirrex - Jul 8 2006, 17:48
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Artlira
сообщение Jul 10 2006, 04:19
Сообщение #2685


Level 4
**

Класс: Маг
Характер: Chaotic Neutral
Раса: Танар'ри



1. gennady! Примите мои искренние извинения. Ваш второй скрипт действительно работает как часы. Во всем виновата моя невнимательность. Разобраться почему не работал скрипт не смогла, неграмотно списала на “фиксовый” предмет. С моими навыками в скриптах, мне гораздо легче было присвоить значение другой функции оРС. Огромное спасибо за помощь, и поскольку вам извиняться не за что, то саркофаг теперь вещает: “Artlira! Внимательно читай отредактированные посты!”.
Dik Morris и Zirrex благодарю за указание на отредактированный пост gennady. Буду внимательнее.
2. Aiwan и -fenix- поменяла время на 1,2,3 и.т д. сек. в каждом случае, вошла в модуль: “умер эльф”, “умер полуорк”, “умер человек”…. Ой-ой, а так радовалась, что чего-то сработало “из своего”.
-fenix- огромное спасибо за пояснения. Прочитала, скопировала - буду учиться.
3.Zirrex ваш укороченный вариант очень пригодился, наверно так правильнее – если условия одинаковые, зачем их писать 3 раза.
Да, значение "FALSE" в функции "PopUpDeathGUIPanel" не позволит воскреснуть игроку. Так и нужно?
Да, меня интересовала именно запись о смерти.
По поводу саркофага, во-первых, почему Вампир появляется на локации сундука?
Вот это мне даже в голову не приходило, “оно” меня так утомило клонированием, что мне уже все равно было где эта нежить появится, лишь бы один раз! Но теперь когда, благодаря скрипту gennady, оно определилось с появлением пусть теперь и является где положено! Спасибо за помощь, попробую сама хотя бы настроить точку появления.
Еще раз спасибо всем, кто помог с решением моих вопросов. Увы, боюсь не последних…

Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Артём
сообщение Jul 10 2006, 18:03
Сообщение #2686


Level 5
**

Класс: Друид
Характер: Neutral Good
Раса: Человек



Я тут набрел на прикольный модуль, (так мне кажется) "Eye of the Beholder", но скачать боюсь.
Кто-нибудь знает, идет этот модуль и его дополнение на пиратский диск?
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Dik Morris
сообщение Jul 10 2006, 18:14
Сообщение #2687


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

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



Нет, я лично не видел.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Astoret
сообщение Jul 11 2006, 12:24
Сообщение #2688


Level 1


Класс: Страж Тьмы
Характер: Chaotic Evil
Раса: Гном



Помогите плиз написать простинький скрипт на респаун NPS пи их смерти

и подскажите плиз почему не работает скрипт уборщика все зделал как написано , а в игре пишет : Ошибка скрипта, слишком много инструкций (IMG:style_emoticons/kolobok_light/shout.gif)
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Dik Morris
сообщение Jul 11 2006, 14:21
Сообщение #2689


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

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



Astoret, по поводу респауна, читай здесь.

Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Milfes
сообщение Jul 11 2006, 14:49
Сообщение #2690


Level 5
**

Класс: Друид
Характер: Lawful Neutral
Раса: Человек



QUOTE
подскажите плиз почему не работает скрипт уборщика все зделал как написано , а в игре пишет : Ошибка скрипта, слишком много инструкций


В скрипте лишняя строка

ClearAllActions();

Вцелом скрипт выгледит так

CODE
void main()
{
object oItem = GetFirstObjectInArea(GetArea(OBJECT_SELF));
while (GetIsObjectValid(oItem) == TRUE)
{
if (GetObjectType(oItem) == OBJECT_TYPE_ITEM)
{
ActionPickUpItem(oItem);
}
oItem = GetNextObjectInArea(GetArea(OBJECT_SELF));
}
}
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Dik Morris
сообщение Jul 11 2006, 15:15
Сообщение #2691


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

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



Milfes, желательно включить в скрипт проверку на диалог + сначала подойти к предмету, а потом уже подбирать, и чистить акции, NPC ведь может быть занят.

NSS
void main()
{
  object oItem = GetFirstObjectInArea(GetArea(OBJECT_SELF));

  if (IsInConversation(OBJECT_SELF)) return;

  while (GetIsObjectValid(oItem) == TRUE)
  {
    if (GetObjectType(oItem) == OBJECT_TYPE_ITEM)
    {
      ClearAllActions();
      ActionMoveToObject(oItem);
      ActionPickUpItem(oItem);
    }
  oItem = GetNextObjectInArea(GetArea(OBJECT_SELF));
  }
}
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Milfes
сообщение Jul 11 2006, 16:47
Сообщение #2692


Level 5
**

Класс: Друид
Характер: Lawful Neutral
Раса: Человек



QUOTE
желательно включить в скрипт проверку на диалог + сначала подойти к предмету, а потом уже подбирать, и чистить акции, NPC ведь может быть занят


Dik Morris, с этим я согласен, но есть не большая проблемка! Так как это действие происходит раз в 6 секунд, может возникнуть проблема если NPS находиться в движение! Он просто пройдёт мимо. Есть идеи, как это исправаить?
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
helvene
сообщение Jul 11 2006, 16:57
Сообщение #2693


Mystery
Иконки Групп

Класс: Маг
Характер: Lawful Evil
Раса: Тварь
NWN: Контент
Амен



QUOTE(Артём @ Jul 10 2006, 19:03) [snapback]87503[/snapback]
Я тут набрел на прикольный модуль, (так мне кажется) "Eye of the Beholder", но скачать боюсь.

Это - полный аналог оригинального Eye of the Beholder.
QUOTE(Артём @ Jul 10 2006, 19:03) [snapback]87503[/snapback]
Кто-нибудь знает, идет этот модуль и его дополнение на пиратский диск?

Нет.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Noah
сообщение Jul 11 2006, 17:41
Сообщение #2694


Level 5
**

Класс: Убийца
Характер: Chaotic Neutral
Раса: Полуэльф



У меня лексикон перевод leх'а,но там нет про флаги.Качал его весной, может разбирали где про это?Киньте ссылку,плс!
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Dik Morris
сообщение Jul 11 2006, 17:59
Сообщение #2695


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

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



Milfes, например с помощью локальных переменных, еще М/Б GetCurrentAction подойдет.

Noah, про какие флаги ? М/б NW_FLAG_* ?

Если да:
QUOTE
Used to cause events to fire various numeric signals to OnUserDefined and set other attributes of a creature during the OnSpawn script using SetSpawnInCondition. The OnUserDefined event can thus be used to customize the behavior of an object without actually modifying the default behavior.


PS: Перевод Lex'a ? Первый раз слышу.

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


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

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



QUOTE(Dik Morris @ Jul 11 2006, 18:59) [snapback]87598[/snapback]
PS: Перевод Lex'a ? Первый раз слышу.

я тоже.
о каких флагах речь? если те, что в спавне ставятся типа *_FLAG_*, то они все там в коментах и описаны. + почитай в топике..Готовые скрипты или Скрипты для хенчей, там есть Айвановские варианты спавна с русскими комментариями.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Noah
сообщение Jul 11 2006, 20:50
Сообщение #2697


Level 5
**

Класс: Убийца
Характер: Chaotic Neutral
Раса: Полуэльф



Да?А я где-то читал,что он твой...Спасиб,за подсказку(о флагах)
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Симирель
сообщение Jul 12 2006, 02:17
Сообщение #2698


Level 2
*

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



я ДИКО извеняюсь, но у меня вопрос как можно чтобы после разговора существо ушло к двери и изчезло?
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Artlira
сообщение Jul 12 2006, 05:53
Сообщение #2699


Level 4
**

Класс: Маг
Характер: Chaotic Neutral
Раса: Танар'ри



Симирель, здесь на форуме, в теме "Скрипты для новичков" есть скрипт с уходом Nps на WP(где он и дестроится), сам WP_EXSIT можно где угодно поставить. У меня, с помощью этого скрипта одно чудо даже в озере утопилось.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Milfes
сообщение Jul 12 2006, 12:52
Сообщение #2700


Level 5
**

Класс: Друид
Характер: Lawful Neutral
Раса: Человек



Подскажите, как сделать что бы фонарь включался в 20 и выключался в 8 часов?

И ещё кто-нибудь знает скрипт, что бы если ты берёш что-то из контейнера, а рядом стоит NPC, то он к тебе подбегал и что-то говорил?
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения

205 страниц V  « < 106 107 108 109 110 > » 
Ответить в эту темуОткрыть новую тему
5 чел. читают эту тему (гостей: 5, скрытых пользователей: 0)
Пользователей: 0

 



Текстовая версия Сейчас: 28th April 2025 - 13:45