![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() ![]() |
![]() |
![]()
Сообщение
#146
|
|
Level 19 ![]() Класс: Обыватель Характер: True Neutral Раса: Дварф NWN: Контент ![]() |
У Door State есть вариант "No visible model" (он же Destroyed), которым можно воспользоваться при ситуации:
Допустим есть тайная дверь, которую игрок никак не должен увидеть до момента, когда ей нужно открыться. Вопрос в том, можно ли его менять через скрипты. Сообщение отредактировал Vhall - Sep 4 2007, 21:09 |
![]()
Сообщение
#147
|
|
Level 5 ![]() Класс: Обыватель Характер: Lawful Neutral Раса: Человек NWN: Модмейкер Проклятие Левора Порядок Времени ![]() |
Логика в том, что если объект static -то мы не можем выбрать его курсором и совершить с ним какие-то действия. этого же эффекта можно добиться и просто не поставив галочку Статик и Активный. (IMG:style_emoticons/kolobok_light/smile.gif) У Door State есть вариант "No visible model" (он же Destroyed), которым можно воспользоваться при ситуации раньше 100 пудов можно было такое проделывать с плейсами. В нвн2 и с дверьми - я не пробовал.
|
![]()
Сообщение
#148
|
|
Level 11 ![]() Класс: Вор Характер: Neutral Evil Раса: Эльф NWN: Скриптинг [PW] Validor2 ![]() |
Цитата Если не ошибаюсь, в официальной компании НВН1 тайные двери были соответствующим плейсом, со скриптом на onXB, укрытые эффектом прозрачности (невидимки). Скрипт проверял: есть ли игрок в пределах XX метров, если есть, идет проверка его навыка "Spot" - и только в том случае, если игрок обойдет заданное ДЦ, эффект прозрачности удаляется с двери, а сама она открывается. Готовый скрипт, стало быть, нужно искать в компаниях первой или второй части игры (или писать самому). впринципе это все скриптами и без спец плейсов реализуется... рисуется тригер, у него на входе проверка спота.... если чек прошел, то в нужном месте появляется плейс типа двери, у которого на он клик стоит скрипт переноса чара в нужное место... короче тупо плейс сделаный под дверь (IMG:style_emoticons/kolobok_light/smile.gif) а так в палитре нвн2 видел какие то секретные двери, но что у них за фичи и как ими пользоваться я честно говоря не пробовал... |
![]()
Сообщение
#149
|
|
Level 18 ![]() Класс: Страж Тьмы Характер: True Neutral Раса: Человек МАСТЕР D&D ![]() |
Задумался над таким моментом: как в скриптах менять параметр static у предметов? Допустим есть тайная дверь, которую игрок никак не должен увидеть до момента, когда ей нужно открыться. То есть логично сделать ее до этого static, а после наступления условия - этот static снять... каким образом это сделать? В кампании это, вроде сделано предметами - сама секретная дверь и шкаф, который ее закрывает. Так вот этот шкаф имел static - false, collision - true. И поскольку эти двери становились видны только после надевания очков, то почему не сделалать так же? |
![]()
Сообщение
#150
|
|
Level 1 Класс: Дварф-Защитник Характер: Neutral Good Раса: Дварф ![]() |
Здравствуйте уважаемые мастера.
Вот наткнулся в скриптах на отладочную функцию: Neverwinter Script Source PrettyDebug( sOut ); PrettyDebug( "Total influence with " + GetStringByStrRef( GetCompanionNameStringRef( nCompanion )) + " = " + IntToString( nNewInfluence )); ИМХО понятно, что срабатывает она при включении отладки и выводит текст. Вопрос: 1.где и как включается этот отладочный режим. 2. куда выводиться отладочная информация(окно сообщений,экран, что нить особое...). P.S. Сорри, если вопрос нубский или написал не в том топике, прошу не бить больно (IMG:style_emoticons/kolobok_light/smile.gif) P.P.S.(поиск юзал (IMG:style_emoticons/kolobok_light/sad.gif) ) |
![]()
Сообщение
#151
|
|
Миловидный Бегрюссунг ![]() Класс: Воин Характер: Chaotic Good Раса: Человек NWN: Модмейкер Проклятие Левора Порядок Времени ![]() |
Обычно функция описывается. надо навести на нее курсор и в инфопанели внизу будет описание. Но честно, говоря лучше сделать простую дебаг инклюду и пользоваться. Вы собсвенно что хотите увидеть в дебаге? Дебаг НВН-а это место куда идут все сообщения во время игры. Внизу окно такое растягивается.
|
![]()
Сообщение
#152
|
|
Level 1 Класс: Дварф-Защитник Характер: Neutral Good Раса: Дварф ![]() |
Обычно функция описывается. надо навести на нее курсор и в инфопанели внизу будет описание. Как ни печально, но описания этих отладочных функций(PrettyDebug,PrettyError) в инфопанели я не нашел. Цитата Но честно, говоря лучше сделать простую дебаг инклюду и пользоваться. Подключать к рабочему скрипту свой отладочный? Зачем писать свой, если есть уже написанные? Цитата Вы собсвенно что хотите увидеть в дебаге? Давайте попробуем по порядку: Возьмем глобальный скрипт : Neverwinter Script Source // ga_influence( int nCompanion, int nChange ) /* This adjusts the influence rating of the companion to the PC ( the players as a whole technically ). The influence rating is based on a scale between -100( worst ) and 100( best ). ( 0 being neutral ) Parameters: int nCompanion = This is the integer value of the companion to adjust. ( See ginc_companions ) int nChange = This is the amount to adjust influence by. 1 Khelgar 2 Neeshka 3 Elanee 4 Qara 5 Sand 6 Grobnar 7 Casavir 8 Bishop 9 ShandraJerro 10 Construct 11 Zhjaeve 12 AmmonJerro 13 Bevil */ // FAB 10/4 // ChazM 5/4/05 // BMA 5/5/05 ginc_companions id look up // BMA-OEI 8/22/05 added companion id table // ChazM 12/16/05 added bevil // ChazM 4/18/06 prepped for adding influence indicator // ChazM 4/25/06 added string ref constants // ChazM 5/1/06 fixed "temp text" bug. // EPF 7/10/06 - added debug strings for balance testing // BMA-OEI 7/10/06 -- Updated to use GetInfluenceByNumber( ) #include "kinc_companion" const int STRING_REF_LOST_INFLUENCE = 178842; const int STRING_REF_GAINED_INFLUENCE = 178841; int GetCompanionNameStringRef( int nCompanion ) { // companions str refs are 178843 - 178855 return ( 178842 + nCompanion ); } void main( int nCompanion, int nChange ) { if ( nChange == 0 ) { PrettyError( "ga_influence: companion " + IntToString( nCompanion ) + " no influence change" ); return; } int nOldInfluence = GetInfluenceByNumber( nCompanion ); IncInfluenceByNumber( nCompanion, nChange ); int nNewInfluence = GetInfluenceByNumber( nCompanion ); string sOut; int nDelta = nNewInfluence - nOldInfluence; //nChange; // Actual nDelta may not == nChange if ( nDelta > 0 ) sOut = GetStringByStrRef( STRING_REF_GAINED_INFLUENCE ); else sOut = GetStringByStrRef( STRING_REF_LOST_INFLUENCE ); sOut += " " + GetStringByStrRef( GetCompanionNameStringRef( nCompanion )) + ": " + IntToString( nDelta ); object oPC = ( GetPCSpeaker( )==OBJECT_INVALID?OBJECT_SELF:GetPCSpeaker( ) ); SendMessageToPC( oPC, sOut ); PrettyDebug( sOut ); PrettyDebug( "Total influence with " + GetStringByStrRef( GetCompanionNameStringRef( nCompanion )) + " = " + IntToString( nNewInfluence )); } 31 строка: Цитата // EPF 7/10/06 - added debug strings for balance testing и далее в теле идут отладочные функции PrettyError и PrettyDebug Раз авторы их добавлялм ,они ими пользовались. Значит режим отладки где то должен включаться. Во встроенных функциях этих нет. Вопросы: могут эти функции быть только в тулсете, а не в игре? Возможно ли их как то задействовать в самой игре? Как вариант , могут ли они после завершения создания модуля удалены из тулсета/игры? Существует ли в тулсете система отладки скриптов, (которая мне не известна,но может быть известна вам)? Цитата Дебаг НВН-а это место куда идут все сообщения во время игры. Внизу окно такое растягивается. Мы говорим об окне сообщений, или о чем то другом? В режиме DebugMode 0 все сообщения в игре отправляются в окно сообщений, в частности строка : Цитата SendMessageToPC( oPC, sOut ); А при включенном режиме DebugMode 1 некоторые команды ,например showfps выводятся просто на экран. Значит стандартный вывод можно менять? А вэтих строках получается , что выводится 3 сообщения: Цитата SendMessageToPC( oPC, sOut ); // вывод в окно сообщений PrettyDebug( sOut ); // повторение той же строки не понятно куда PrettyDebug("Total influence with " + GetStringByStrRef(GetCompanionNameStringRef(nCompa ion)) + " = " + IntToString(nNewInfluence)); // и вывод третьей строки с отладочной информацией Вот и все же хотелось бы узнать как режим включить если это возможно, и как сделать такой вывод отладки во время игры(с возможностью отключения конечно) как в своих скриптах,так и в оригинальных(раз уж функции там уже прописаны). Как вариант ,как выводить просто текст на экран в любом произвольном месте,накладывая на игру, возможно ли это? |
![]()
Сообщение
#153
|
|
Level 3 ![]() Класс: Рейнджер Характер: Neutral Good Раса: Человек ![]() |
Здравствуйте уважаемые мастера!
Вот, скопилась целая порция вопросов. 1. Относительно точек приложения скриптов. Пока вижу, что их можно вешать на эвенты (события) из выпадающих списков в пропертях для модуля, для локации, для NPC кажется... И для каждого случая этот набор событий похоже фиксирован. Можно ли его расширить? Можно ли сделать обработку событий с клавиатуры, например? И как можно использовать событие UserDefinеdEvent? 2. Пожалуйста, посоветуйте, каким образом лучше и проще делать информационную печать в скрипте? Например, чтобы без перехода в отладочный режим можно было видеть - вызвался ли скрипт и с какими данными вызвался. Другими словами есть ли тут аналог функции printf? 3. В готовом игровом модуле nv2 - туториал (это нулевой акт) обнаружила заюзанный скрипт на onRest. Скрипт не принадлежал этому модулю, а был взят из длинного выпадающего списка готовых скриптов. Без проблем загрузила энтот чужой скрипт в редактор, изменила, скомпилила - после чего запущенный модуль вполне себе воспринял эти изменения. И догадываюсь, что если перекомпилить остальные модули, которые его используют, то с ними будет тож самое.... Вопрос - а где все эти готовые скрипты живут на уровне исходных текстов? По другим модулям разложены что ли? Или есть где-то для них общее место? Сообщение отредактировал Zmeika - Dec 24 2007, 18:11 |
![]()
Сообщение
#154
|
|
Level 5 ![]() Класс: Обыватель Характер: Lawful Neutral Раса: Человек NWN: Модмейкер Проклятие Левора Порядок Времени ![]() |
1. Относительно точек приложения скриптов. Пока вижу, что их можно вешать на эвенты (события) из выпадающих списков в пропертях для модуля, локации, для NPC кажется... И для каждого случая этот набор событий похоже фиксирован. Можно ли его расширить? Можно ли сделать обработку событий с клавиатуры, например? И как можно использовать событие UserDefinеdEvent? можно расширить (см систему SSS AC на нашем сайте, как вариант). Другое дело что насколько оно вам необходимо? С клавиатурой.. так как вы описали - нельзя. Но можно сделать обработку написанного в чат текста. Разбиралось много раз для НВН1, возможно годится для НВН2. Надо экспериментировать. 2. Пожалуйста, посоветуйте, каким образом лучше и проще делать информационную печать в скрипте? Например, чтобы без перехода в отладочный режим можно было видеть - вызвался ли скрипт и с какими данными вызвался. Другими словами есть ли тут аналог функции printf? я пользуюсь SendMessageToPC - она выдает текст в игровой лог. Мне удобнее в режиме онлайн отслеживать происходящее, чем потом читать текстовой файл с логами. Хотя факт - в таком файле больше полезной инфы относительно некорректной работы скриптов.. например при проблеме с памятью или кэшэм. . В готовом игровом модуле nv2 - туториал (это нулевой акт) обнаружила заюзанный скрипт на onRest. Скрипт не принадлежал этому модулю, а был взят из длинного выпадающего списка готовых скриптов. Без проблем загрузила энтот чужой скрипт в редактор, изменила, скомпилила - после чего запущенный модуль вполне себе воспринял эти изменения. И догадываюсь, что если перекомпилить остальные модули, которые его используют, то с ними будет тож самое.... не совсем. дело в том, что все стандартные скрипты живут в ресурсах игры. Если скрипт меняется - он перекачовывает в модуль. Соотв изменив стандартный скрипт, вы изменили его лишь для данного модуля. Все остальные модули будут работать как работали, сколько бы вы их не перекомпиливали. |
![]()
Сообщение
#155
|
|
Level 3 ![]() Класс: Рейнджер Характер: Neutral Good Раса: Человек ![]() |
можно расширить (см систему SSS AC на нашем сайте, как вариант). Другое дело что насколько оно вам необходимо? Пока не знаю. Мне нужно засечь момент, когда солнышко заходит, причем точное время заката (в часах) известно. Такое ощущение, что только на onHeartBeat проверку по времени суток вешать. Пока не уверена, что это оправдано. (IMG:style_emoticons/kolobok_light/sad.gif) Правда, с другой стороны оч может быть, что сама игра определяет ход небес по этому же самому таймеру я пользуюсь SendMessageToPC - она выдает текст в игровой лог. Мне удобнее в режиме онлайн отслеживать происходящее, чем потом читать текстовой файл с логами. Хотя факт - в таком файле больше полезной инфы относительно некорректной работы скриптов.. ага, мне тоже так удобно, уже подключила, спасип дело в том, что все стандартные скрипты живут в ресурсах игры. Если скрипт меняется - он перекачовывает в модуль. Соотв изменив стандартный скрипт, вы изменили его лишь для данного модуля. Все остальные модули будут работать как работали, сколько бы вы их не перекомпиливали. Странно, у меня не перекочевывается. Остается на прежнем месте в исправленном состоянии, и все другие модули начинают видеть исправленную версию. Правда, перкомпиляцию не пробовала... |
![]()
Сообщение
#156
|
|
Level 12 ![]() Класс: Оборотень Характер: Chaotic Neutral Раса: Нежить NWN: Скриптинг [Sn] ![]() |
так и хочется сказать "не знаю как там у вас в нвн2, а в нвн1 было так..." (IMG:style_emoticons/kolobok_light/smile.gif)
лучше всего создать новый скрипт с новым именем, который будет храниться в модуле, и уже его вешать на эвенты. если необходимо то же имя скрипта (например, заклинание нужно поменять) опять же в модуле создать скрипт с таким же названием, в этом модуле он будет заменять исходный. в общем сначала игруха ищет нужный ресурс в папке override (удобно для патчей-хотфиксов-дебагов) потом в кампейне потом в модуле (хотя логичнее было бы сначала в модуле, а потом в кампейне) потом в ресурсах игры. |
![]()
Сообщение
#157
|
|
Level 2 ![]() Класс: Клерик Характер: Lawful Evil Раса: Человек ![]() |
Блин хочу написать скрипт для простейшего квеста и не могу (IMG:style_emoticons/kolobok_light/sad.gif) (IMG:style_emoticons/kolobok_light/scratch_one-s_head.gif) ктонибудь помогите. хочу поставить локальную переменную ИНТ под названием "deathwolf"
Код void main() { SetLocalInt(OBJECT_SELF, "deathWolf", 0); } уверен что делаю что то не так после постановки в нужный слот (Респаун) НПС ставлю скрипт волку Код void main() { SetLocalInt(OBJECT_SELF, "deathWolf", 2); } создаю диалог Код Переменная не работает----------------------\ убей волка (deathwolf = 0)-----------------\ молодец (deathwolf = 2) Плиз ПОМАГИТЕ (IMG:style_emoticons/kolobok_light/help.gif) (IMG:style_emoticons/kolobok_light/help.gif) (IMG:style_emoticons/kolobok_light/help.gif) А то я уже с ума схожу (IMG:style_emoticons/kolobok_light/crazy.gif) (IMG:style_emoticons/kolobok_light/prankster2.gif) |
![]()
Сообщение
#158
|
|
Level 5 ![]() Класс: Обыватель Характер: Lawful Neutral Раса: Человек NWN: Модмейкер Проклятие Левора Порядок Времени ![]() |
проблема у тебя в том, что ты ставишь 2 локалки, а не 1, как ты думаешь.
Ибо deathWolf у НПС и deathWolf у волка - 2 совершенно разные локалки. Мысль ясна? Чтобы это была одна локалка, тебе в скрипте волка (кстати почему в Респаун ты поставил скрипт? А не в Death?) написать не Neverwinter Script Source SetLocalInt( OBJECT_SELF, "deathWolf", 2 ); а Neverwinter Script Source SetLocalInt( GetObjectByTag( "Тэг НПС, который выдает квест" ), "deathWolf", 2 ); Я тебе в соседней теме не зря советовал использовать SetGlobal*/GetGlobal. Самое незамороченное решение, подходящее для начала (IMG:style_emoticons/kolobok_light/smile.gif) |
![]()
Сообщение
#159
|
|
Level 3 ![]() Класс: Обыватель Характер: Chaotic Evil Раса: Человек ![]() |
QUOTE я пользуюсь SendMessageToPC - она выдает текст в игровой лог. Мне удобнее в режиме онлайн отслеживать происходящее, чем потом читать текстовой файл с логами. Хотя факт - в таком файле больше полезной инфы относительно некорректной работы скриптов.. например при проблеме с памятью или кэшэм. Небольшой оффтоп, про какой именно кэш идет речь? Сообщение отредактировал Edwin - Jan 3 2008, 08:46 |
![]()
Сообщение
#160
|
|
Level 2 ![]() Класс: Клерик Характер: Lawful Evil Раса: Человек ![]() |
Arigato Спасибо Mersi Thenx кое что понял щас попробую (IMG:style_emoticons/kolobok_light/rolleyes.gif)
|
![]()
Сообщение
#161
|
|
Level 5 ![]() Класс: Обыватель Характер: Lawful Neutral Раса: Человек NWN: Модмейкер Проклятие Левора Порядок Времени ![]() |
про какой именно кэш идет речь? спроси у шардовиков, я от них это слышал, сам этим логом не пользуюсь (IMG:style_emoticons/kolobok_light/smile.gif) |
![]()
Сообщение
#162
|
|
Level 17 ![]() Класс: Волшебник Характер: Neutral Good Раса: Человек NWN: Скриптинг [PW] Axistown SR 1.9 NWNX ![]() |
Я тоже не понял, что за кэш и память и как они выводятся в лог.
|
![]()
Сообщение
#163
|
|
Level 5 ![]() Класс: Обыватель Характер: Lawful Neutral Раса: Человек NWN: Модмейкер Проклятие Левора Порядок Времени ![]() |
ну раз даже вирь не знает, значит я перепутал НВН с другим приложением (IMG:style_emoticons/kolobok_light/smile.gif) сам я натыкался только на переполнение стека, деление на 0 и какие-то ошибки с памятью (слово memory было (IMG:style_emoticons/kolobok_light/smile.gif) )
|
![]()
Сообщение
#164
|
|
Level 3 ![]() Класс: Обыватель Характер: Chaotic Evil Раса: Человек ![]() |
Ну если про память еще можно понять (сегментейшен фолт, хоть ни в каких логах ее ессесно не будет), то про кеш меня ввело в ступор, т.к. кеш абсолютно прозрачен для людей и управляется только хардвэйром. Даже через ассамблер в него не влезть.
Сообщение отредактировал Edwin - Jan 3 2008, 13:57 |
![]()
Сообщение
#165
|
|
Level 17 ![]() Класс: Волшебник Характер: Neutral Good Раса: Человек NWN: Скриптинг [PW] Axistown SR 1.9 NWNX ![]() |
Ну если про память еще можно понять (сегментейшен фолт, хоть в логах ее не будет), то про кеш меня ввело в ступор, т.к. кеш абсолютно прозрачен для людей и управляется только хардвэйром. Даже через ассамблер в него не влезть. Кэшей много разных, и в НВНе есть кэш (2da, скриптов и ресурсов), но в лог инфа о нём не выводится (даже через DummyLog).Ошибки стека в скриптах, TMI, деление на ноль - да, бывает, но это тоже в лог не идёт, насколько я помню. |
![]()
Сообщение
#166
|
|
Level 5 ![]() Класс: Обыватель Характер: Lawful Neutral Раса: Человек NWN: Модмейкер Проклятие Левора Порядок Времени ![]() |
Ошибки стека в скриптах, TMI, деление на ноль - да, бывает, но это тоже в лог не идёт, насколько я помню. в НВН1 вроде идет и в лог файл и в лог в игре. А иначе очень странный лог получается, никакой инфы по ошибкам? (IMG:style_emoticons/kolobok_light/smile.gif) А вот в НВН2 мб и не идет, я лог-файлом тут и подавно не пользуюсь. зы: что-то мы с оффтопом перебрали, пора завязывать (IMG:style_emoticons/kolobok_light/ph34r.gif) |
![]()
Сообщение
#167
|
|
Level 3 ![]() Класс: Обыватель Характер: Chaotic Evil Раса: Человек ![]() |
А в обычном компиляторе у тебя много информации об ошибках во время экзекуции? stderr, try-catch и руки - все что надо для отладки. Ффс.....
Сообщение отредактировал Edwin - Jan 3 2008, 14:58 |
![]()
Сообщение
#168
|
|
Level 9 ![]() Класс: Фея Характер: Chaotic Evil Раса: Тварь NWN: Скриптинг [PW] ![]() |
кеш абсолютно прозрачен для людей и управляется только хардвэйром. Даже через ассамблер в него не влезть. prefetch/prefetchw/prefetchnta/prefetcht0(1,2) (IMG:style_emoticons/kolobok_light/whistle3.gif)
|
![]()
Сообщение
#169
|
|
Level 3 ![]() Класс: Обыватель Характер: Chaotic Evil Раса: Человек ![]() |
Ок, про асм я загнул. Можно. Но ненужно, т.к. этим вероятнее всего пользуются только в написании мега симуляторов и софта для посадки шаттлов.
|
![]()
Сообщение
#170
|
|
Level 5 ![]() Класс: Обыватель Характер: Lawful Neutral Раса: Человек NWN: Модмейкер Проклятие Левора Порядок Времени ![]() |
софта для посадки шаттлов. тады уж Бурана, ибо только он садился на автопилоте, Шаттлы - вручную. завязываем асм, компиляторы и дебагеры. тема не про это. Если хочется всетаки об этом - выделю вам отдельный топик (IMG:style_emoticons/kolobok_light/smile.gif) А то что выше почищу завтра, чтобы не пугать скриптеров (IMG:style_emoticons/kolobok_light/smile.gif) |
![]() ![]() |
Текстовая версия | Сейчас: 16th July 2025 - 18:31 |