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

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

 Правила этого форума ПРАВИЛА РАЗДЕЛА
14 страниц V  « < 12 13 14 >  
Ответить в эту темуОткрыть новую тему
> Скрипты: Все вопросы, Алгоритмы, оптимизация, особености и хитрости в скриптинге
Celestial
сообщение Sep 30 2010, 15:13
Сообщение #321


Level 14
****

Класс: Обыватель
Характер: Lawful Neutral
Раса: Эльф



1.
Цитата
if (HasItem(GetEnteringObject(), "it_playerpassport") == FALSE) GiveGoldToCreature(GetEnteringObject(), Random(501) + 500, FALSE));

Выдает ошибку. Все еще нужна помощь.

2.
Цитата
Не знаю как там в нвн2, но в нвн1 локалки с итемов случайным образом спадали при перезаходах.

В нвн2 как раз, если правильно помню, локалки на итемах сохраняются при перезаходах. Разве нет? Все еще нужна помощь.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Kcapra
сообщение Sep 30 2010, 15:30
Сообщение #322


Level 9
***

Класс: Фея
Характер: Chaotic Evil
Раса: Фея



Цитата(Lex @ Sep 30 2010, 02:40) *
Хм.. тогда рекомендую (весьма нескромно) вот это почитать: http://nwnmod.narod.ru/stat_anim_npc2.htm
проблема прерывания диалогом там освещена

Спасибо за ссылку, статья полезная. С анимациями еще работать не приходилось, чувствую еще майндфак предстоит неслабый (IMG:style_emoticons/kolobok_light/crazy.gif)
В итоге решил мозгу не парить и добавил скрипт в OnConversationEnd()

Написал ходилку по вайпоинтам (пока простую, затем буду усложнять)

Neverwinter Script
void main()
{
int nW; object oWP;
    if (GetLocalInt (OBJECT_SELF,"RUNONCE") != 1)
        {nW=1; SetLocalInt(OBJECT_SELF,"RUNONCE",1);}
    oWP=GetWaypointByTag("wWP_"+GetTag(OBJECT_SELF)+"_0"+IntToString(nW));
    if (GetIsObjectValid(oWP)==TRUE)
        {SpeakString("Объект найден, его тэг = "+GetTag(oWP)+" nW= "+IntToString(nW));
        if (GetCurrentAction(OBJECT_SELF)==ACTION_INVALID)
        {ActionMoveToLocation(GetLocation(oWP));
        nW+=1;}
        if (GetLocation(OBJECT_SELF)==GetLocation(oWP))
            {ClearAllActions();
            ActionDoCommand(ExecuteScript("wWP_"+GetTag(OBJECT_SELF), OBJECT_SELF));}
        }
    else SpeakString("Объект не найден. nW= "+IntToString(nW));
}


Проблема в алгоритме присвоения и увелечения переменной nW, только не понимаю где именно.
(приходит на первый вэйпоинт и говорит что Объект не наден и nW=0) все, вроде бы, логично.

EDIT: в локации 4 вэйпоинта с тэгами wWP_c_human_01, wWP_c_human_02, wWP_c_human_03, wWP_c_human_04

EDIT2: Ах, да скрипт висит на хартбите непися с тэгом c_human

Сообщение отредактировал Kcapra - Sep 30 2010, 17:28
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
denis0k
сообщение Sep 30 2010, 17:45
Сообщение #323


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

Класс: Воин
Характер: Lawful Good
Раса: Человек
NWN: Скриптинг [PW]
Gem of the North
Край Лесов



Цитата
Выдает ошибку. Все еще нужна помощь.
Какую? Я ж не пророк (IMG:style_emoticons/kolobok_light/smile.gif) Во-первых, там кажется лишняя скобка в конце. Во-вторых, в нвн1 у GiveGoldToCreature было 2 параметра, у тебя - 3 (нвн2 нет, чтобы проверить).
Цитата
В нвн2 как раз, если правильно помню, локалки на итемах сохраняются при перезаходах. Разве нет? Все еще нужна помощь.
Ну официально они и в нвн1 сохраняются. Только иногда пропадают. Причём не со всех итемов и не у всех чаров, но всё равно очень ненадёжно. Кстати, проверь и там лишнюю скобку (IMG:style_emoticons/kolobok_light/smile.gif)
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Celestial
сообщение Sep 30 2010, 19:32
Сообщение #324


Level 14
****

Класс: Обыватель
Характер: Lawful Neutral
Раса: Эльф



1. Спасибо, Дэн, все заработало, как убрал скобку. В нвн2 три параметра. Кому понадобиться, правильный вариант ниже:
Цитата
if (HasItem(GetEnteringObject(), "it_playerpassport") == FALSE) GiveGoldToCreature(GetEnteringObject(), Random(501) + 500, FALSE);


2. Убрал скобку, но все равно выдает ошибку ("oTarget"):
Цитата
if (GetLocalInt(it_playerpassport,"goharbeetle") == 1) AddJournalQuestEntry("beetlequest", 1, GetEnteringObject(), FALSE, FALSE, FALSE);
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Kcapra
сообщение Oct 1 2010, 13:42
Сообщение #325


Level 9
***

Класс: Фея
Характер: Chaotic Evil
Раса: Фея



Благодаря ДебагСерверу обнаружил проблему (простая скриптовая переменная резетилась при каждом хартбите)
Neverwinter Script
void main()
{
int nW=GetLocalInt(OBJECT_SELF, "nW"); object oWP;
    if (GetLocalInt (OBJECT_SELF,"RUNONCE") != 1)
        {SetLocalInt(OBJECT_SELF, "nW", 1); SetLocalInt(OBJECT_SELF,"RUNONCE",1);}
    oWP=GetWaypointByTag("wWP_"+GetTag(OBJECT_SELF)+"_0"+IntToString(nW));
    if (GetIsObjectValid(oWP)==TRUE)
        {SpeakString("Объект найден, его тэг = "+GetTag(oWP)+" nW= "+IntToString(nW));
        if (GetCurrentAction(OBJECT_SELF)==ACTION_INVALID)
        {ActionMoveToLocation(GetLocation(oWP));
        nW++;
        SetLocalInt(OBJECT_SELF, "nW", nW);}
        if (GetLocation(OBJECT_SELF)==GetLocation(oWP))
            {ClearAllActions();
            ActionDoCommand(ExecuteScript("wWP_"+GetTag(OBJECT_SELF), OBJECT_SELF));}
        }
    else SpeakString("Объект не найден. nW= "+IntToString(nW));
}

Теперь ходит, я рад (IMG:style_emoticons/kolobok_light/prankster2.gif)
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Orochi
сообщение Oct 10 2010, 15:09
Сообщение #326


Level 3
*

Класс: Маг
Характер: True Neutral
Раса: Нежить



Я до сих пор не могу разобраться как сделать проверку на диалог.Помогите кто нить.Каой скрипт для этого нужен.Мне над чтоб Непись не болтал с тобой пога ты не поговорил с другим Неписем. (IMG:style_emoticons/kolobok_light/scratch_one-s_head.gif) (IMG:style_emoticons/kolobok_light/shout.gif)
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
noooox
сообщение Jan 20 2011, 13:36
Сообщение #327


Level 2
*

Класс: Оборотень
Характер: True Neutral
Раса: Элементаль



У меня небольшая загвоздка.Помогите пажалуйста.Сделал я квест.В котором игроку надо принести нпс клыки болотного волка.И все там получилось.Только вот не пойму как сделать чтобы надо было отдать нпс не один клык а 10 штук этих клыков?
В диалоге я поставил скрипт чтоб нпс проверял итэм в рюкзаке игрока и тогда продолжаеться диалог по завершаюшей ветке квеста.Скрипт называеться gc_check_item.Он стандартный в тулсете. (IMG:style_emoticons/kolobok_light/scratch_one-s_head.gif)
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Merkuta
сообщение Jan 20 2011, 15:22
Сообщение #328


Level 3
*

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



noooox
Используй gc_item_count.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
noooox
сообщение Jan 21 2011, 02:52
Сообщение #329


Level 2
*

Класс: Оборотень
Характер: True Neutral
Раса: Элементаль



Большое спасибо.Все работает.Подскажишь? как сделать чтоб фонарные столбы в одной локации или во всем модуле ночью работали а днем выключались.Может скрипт какой в свойства каждого фонарика запихнуть?
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Aiwan
сообщение Jan 21 2011, 06:39
Сообщение #330


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

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



Цитата(noooox @ Jan 21 2011, 04:52) *
Большое спасибо.Все работает.Подскажишь? как сделать чтоб фонарные столбы в одной локации или во всем модуле ночью работали а днем выключались.Может скрипт какой в свойства каждого фонарика запихнуть?

Посмотри в базе скриптов. Есть такой скрипт. Правда, под НВН1...
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
anybit
сообщение Jan 29 2011, 18:14
Сообщение #331


Level 2
*

Класс: Бард
Характер: True Neutral
Раса: Гоблин



Подскажите команду, чтоб дать гг крылья и и убрать)

Типо гг был ангелом, затем ему отрезали крылья....))))
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
kiruhs
сообщение Jan 29 2011, 19:40
Сообщение #332


Level 6
**

Класс: Клерик
Характер: Chaotic Neutral
Раса: Животное



Цитата(anybit @ Jan 29 2011, 17:14) *
Подскажите команду, чтоб дать гг крылья и и убрать)

Типо гг был ангелом, затем ему отрезали крылья....))))


Это в НВН1. Может в НВН2 то же самое

Neverwinter Script
void SetCreatureWingType(int nWingType, object oCreature=OBJECT_SELF)


Сообщение отредактировал kiruhs - Jan 29 2011, 19:41
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Lorendroll
сообщение Mar 20 2011, 01:02
Сообщение #333


Level 9
***

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



Мне нужно в скрипте получить позицию, которую игрок выберет левым кликом мышки.

Как я видел, есть две функции возвращающие указанную игроком позицию:
1) GetItemActivatedTargetLocation
2) GetSpellTargetLocation

То есть игрока нужно либо заставить активировать айтем с уникальным свойством, вызывающим скрипт, либо заставить его скастовать спелл. Но ни то ни другое действие не может быть вызвано из скрипта. Так как ActionCastSpellAtObject или ActionCastSpellAtLocation требуют определенного аргумента для вызова, а мне нужно как раз получить это значение.

Как можно выйти из этой ситуации? Есть идея написать кастомный фит, вызывающий нужный кастомный спелл, вызывающий нужный скрипт, получающий нужное значение (IMG:style_emoticons/kolobok_light/smile.gif) Но похоже фит можно вызвать тоже только на определенный объект... Может быть есть выход при помощи custom GUI?

Подозреваю что можно извернуться с UIObject_Input_ActionTargetScript. Но как? Повесить невидимую кнопку на весь экран игрока?

Сообщение отредактировал Lorendroll - Mar 20 2011, 01:13
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Orochi
сообщение Jul 22 2011, 17:28
Сообщение #334


Level 3
*

Класс: Маг
Характер: True Neutral
Раса: Нежить



Кто нибудь знает скрипт на появление панели выбора команды как в SoZ?
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
noooox
сообщение Aug 21 2011, 07:54
Сообщение #335


Level 2
*

Класс: Оборотень
Характер: True Neutral
Раса: Элементаль



Какой скрипт можно поставить на проверку диалога который запускаеться 1 раз каждые сутки.Например в 8:00 утра.Суть такова.Делаю эдакое героическое приключение как в mmorpg.Вот и надо чтоб игрок мог его посешать каждые сутки.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
noooox
сообщение Aug 22 2011, 18:13
Сообщение #336


Level 2
*

Класс: Оборотень
Характер: True Neutral
Раса: Элементаль



И еше каким скриптом можно телепортировать объекты в пределах локации,ну например сушества,визуальный объект,итэмы?
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Lorendroll
сообщение Sep 14 2011, 21:14
Сообщение #337


Level 9
***

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



noooox,
1) ставить на персонажа переменную с пометкой о дате/времени взятия квеста, а потом проверять её значение и сверять с текущей датой/временем. Довольно нетривиальная задача для начинающего.
2) тоже надо писать свой скрипт где воспользоваться функциями ActionJumpToLocation в случае работы с персонажем, или CopyObject а затем DestroyObject оригинал в случае с иными типами объектов.

PS: по вопросам тулсета обращайтесь в icq, смогу оперативнее помочь
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения

14 страниц V  « < 12 13 14 >
Ответить в эту темуОткрыть новую тему
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0

 



Текстовая версия Сейчас: 17th July 2025 - 15:31