![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() ![]() |
![]() |
![]()
Сообщение
#3361
|
|
Level 5 ![]() ![]() Класс: Пьяный Мастер Характер: Chaotic Good Раса: Человек ![]() |
мне уже даже интересно - в чем различие будет в данном примере? - тогда уж объясни
я прекрасно понимаю что вообще nNum++ nNum+1 отличаются, но в данном примере разве не произойдет увеличение на 1, при установки локалки? |
![]()
Сообщение
#3362
|
|
Level 7 ![]() ![]() Класс: Некромант Характер: True Neutral Раса: Нежить ![]() |
я прекрасно понимаю что вообще nNum++ nNum+1 отличаются, но в данном примере разве не произойдет увеличение на 1, при установки локалки? Не произойдёт. SetLocalInt поставит то значение, которое указано третьим параметром. nNum + 1 честно посчитается и локалка выставится в nNum + 1, а значение самого nNum не изменится.nNum++ вернёт nNum, поэтому локалка станет nNum, а сам nNum увеличится на единицу. Так как мне всё равно нечего делать: представим, что наша переменная nNum это ящик. У ящика есть некоторый вес, который можно регистрировать весами (в качестве весов возьмём значение локальной переменной после SetLocalInt). nNum + 1 это как положить на весы этот ящик и _рядом_ ещё один брусок. ++nNumber это как сначала положить брусок _внутрь_ ящик, а потом взвесить. nNum++ это сначала взвесить ящик без бруска, а потом положить брусок внутрь. Сообщение отредактировал greye - Oct 26 2010, 21:36 |
![]()
Сообщение
#3363
|
|
Level 5 ![]() ![]() Класс: Пьяный Мастер Характер: Chaotic Good Раса: Человек ![]() |
Все верно. Поставил нвн и проверил сам.
Neverwinter Script int nNum = GetLocalInt(.... , "....."); SetLocalInt(.... , ".....", nNum++); в этом случае действительно не произойдет увеличение, а вот в это случае Neverwinter Script int nNum = GetLocalInt(.... , "....."); nNum++; SetLocalInt(.... , ".....", nNum); уже произойдет. Спасибо, такой нюанс, а сцукО. Сообщение отредактировал Laajin - Oct 26 2010, 22:04 |
![]()
Сообщение
#3364
|
|
Level 19 ![]() Класс: Воин Характер: Lawful Good Раса: Человек NWN: Скриптинг [PW] Gem of the North Край Лесов ![]() |
1. Всё же неплохо сначала проверять, а потом советовать (IMG:style_emoticons/kolobok_light/smile.gif)
2. Ну вы ещё часов 12 поспорьте, чему равно ++nNum++, строя разные теории и аналогии, но не утруждая себя запустить на 3 минуты тулсет (IMG:style_emoticons/kolobok_light/smile.gif) |
![]()
Сообщение
#3365
|
|
Level 17 ![]() Класс: Волшебник Характер: Neutral Good Раса: Человек NWN: Скриптинг [PW] Axistown SR 1.9 NWNX ![]() |
Оператор n++ заменяет выражение n=n+1, но вот от его положения зависит то, будет ли это выполняться до выражения, где он фигурирует или нет.
Neverwinter Script x = ++n; эквивалентноNeverwinter Script n = n+1; ,x = n; Neverwinter Script x = n++; ЭквивалентноNeverwinter Script x = n; n = n+1; Для самого n результат одинаковый, для выражения, в котором оно участвует - нет. Как обычно, напомню, что всё это, и многое другое, описано в Лексиконе. Чем догадываться, лучше один раз прочитать. |
![]()
Сообщение
#3366
|
|
Level 2 ![]() Класс: Волшебник Характер: True Neutral Раса: Эльф ![]() |
Нужно наложить EffectDazed() на монаха 20+ уровня .... но вылетает что у него иммунитет. как побороть?
это для системы смерти, после превращения в светлячка, чтобы персонаж не мог никого атаковать иначе спадет полиморф. Прошу помогите. |
![]()
Сообщение
#3367
|
|
Level 8 ![]() ![]() ![]() Класс: Псионик Характер: Chaotic Neutral Раса: Хафлинг ![]() |
Нужно наложить EffectDazed() на монаха 20+ уровня .... но вылетает что у него иммунитет. как побороть? это для системы смерти, после превращения в светлячка, чтобы персонаж не мог никого атаковать иначе спадет полиморф. Прошу помогите. Забей на даз. В НВНХ можно отловить события выбора атаки и каста. |
![]()
Сообщение
#3368
|
|
Level 2 ![]() Класс: Волшебник Характер: True Neutral Раса: Эльф ![]() |
спасибо. А можно пример отлова события атаки?
|
![]()
Сообщение
#3369
|
|
Level 11 ![]() Класс: Волшебник Характер: Lawful Evil Раса: Эльф NWN: Скриптинг [PW] Gem of the North ![]() |
Цитата Забей на даз. В НВНХ можно отловить события выбора атаки и каста. Ты бы сначала спросил, может, для сингла нужно, а ты NWNX предлагаешь (IMG:style_emoticons/kolobok_light/smile.gif) Цитата спасибо. А можно пример отлова события атаки? Ридми для плагина. Но это работает только в мультиплеере. Строго говоря, для сингла есть расширение, но я не ковырял его функционал.
|
![]()
Сообщение
#3370
|
|
Level 5 ![]() Класс: Обыватель Характер: Lawful Neutral Раса: Человек NWN: Модмейкер Проклятие Левора Порядок Времени ![]() |
Запрашиваю подробную инфу. Пошарил по форуму, видел лишь реализацию связкой "добавить запись"+"установить переменную о том, что добавили записи", затем "проверить переменную с записи". Это то, что имелось ввиду или в дебрях NSS от меня прячутся реально клевые ништяки? я просто имел ввиду что переменная не обязательно должна быть вида NW_JOURNAL_[ENTRYTAG]. Имя переменной с журналом связывается скриптером, а не системой. Соотв. он волен выбирать то, как она (переменная) будет называться. Использовать в имени переменной журнальный идентификатор - это удобно. А вот "NW_JOURNAL" можно и сократить немного. Речь только об этом. скажем у нас была такая система: Q_<quest_name>_<id> - переменная <quest_name> - журнальная запись |
![]()
Сообщение
#3371
|
|
Level 2 ![]() Класс: Волшебник Характер: True Neutral Раса: Эльф ![]() |
как раз нужно для мультиплеера. спасибо за подсказки буду разбираться.
|
![]()
Сообщение
#3372
|
|
Level 6 ![]() ![]() Класс: Маг Характер: Lawful Evil Раса: Нежить ![]() |
я просто имел ввиду что переменная не обязательно должна быть вида NW_JOURNAL_[ENTRYTAG]. Имя переменной с журналом связывается скриптером, а не системой. Соотв. он волен выбирать то, как она (переменная) будет называться. Использовать в имени переменной журнальный идентификатор - это удобно. А вот "NW_JOURNAL" можно и сократить немного. Речь только об этом. скажем у нас была такая система: Q_<quest_name>_<id> - переменная <quest_name> - журнальная запись (IMG:style_emoticons/kolobok_light/scratch_one-s_head.gif) Тащем-то, имя переменной связывается с журналом как раз системой. Выполнив команду AddJournalQuestEntry("CHAPTER1", 10, oPC, TRUE, TRUE);, на персонажа системой повесится целочисленная переменная NW_JOURNAL_ENTRYCHAPTER1 со значением 10. Соответственно и обратится к ней можно только таким образом. Шаблон насколько мне известно вшитый, поэтому я не представляю, как можно обратиться по, например, Q_<quest_name>_<id>. Откуда игра знать-то будет, что это - переменная журнала? Ниоткуда. Поэтому я предполагаю, что у вас таки использовалась ненужная дополнительная переменная. Для проверки, попробуй два таких скрипта на рычаге: Neverwinter Script void main() { object oPC = GetLastUsedBy(); AddJournalQuestEntry("CHAPTER1", 10, oPC, TRUE, TRUE); if(GetLocalInt(oPC, "NW_JOURNAL_ENTRYCHAPTER1") == 10) { AddJournalQuestEntry("CHAPTER1", 20, oPC, TRUE, TRUE); } } Neverwinter Script void main() { object oPC = GetLastUsedBy(); AddJournalQuestEntry("CHAPTER1", 10, oPC, TRUE, TRUE); if(GetLocalInt(oPC, "ENTRYCHAPTER1") == 10) { AddJournalQuestEntry("CHAPTER1", 20, oPC, TRUE, TRUE); } } (журнал CHAPTER1, записи 10 и 20) Первый скрипт выполнится и выставит журнал последовательно в 10 и в 20. Второй скрипт - только в 10. Можешь подставлять в GetLocalInt что угодно, никогда он не выполнится, потому что имя переменной журнала установлено системой. Сообщение отредактировал Talarasha - Oct 27 2010, 10:50 |
![]()
Сообщение
#3373
|
|
Level 5 ![]() Класс: Обыватель Характер: Lawful Neutral Раса: Человек NWN: Модмейкер Проклятие Левора Порядок Времени ![]() |
Хы, не знал. Надо глянуть в 1.32 был ли такой функционал (с переменной), если да, то ДБКолл недоглядел, когда писал для ПЛ/ПВ квестовую систему, потому что мы заводили свою переменную. (IMG:style_emoticons/kolobok_light/smile.gif) Все это было внутри библы, а снаружи осталось несколько функций, с ними и работали.
зы: кто там спрашивает периодически, сколько скрипты изучать? я вот спустя почти 10 лет что-то новое узнаю иногда, как сейчас (IMG:style_emoticons/kolobok_light/smile.gif) |
![]()
Сообщение
#3374
|
|
Level 5 ![]() ![]() Класс: Пьяный Мастер Характер: Chaotic Good Раса: Человек ![]() |
Цитата зы: кто там спрашивает периодически, сколько скрипты изучать? я вот спустя почти 10 лет что-то новое узнаю иногда, как сейчас smile.gif вот и я аналогично) Talarasha NW_JOURNAL_ENTRYCHAPTER1 имеет какие-то связи с AddJournalQuestEntry("CHAPTER1 ", 10, oPC, TRUE, TRUE); - я правильно понял? Нвн уже удалил, так что не проверить Сообщение отредактировал Laajin - Oct 27 2010, 13:55 |
![]()
Сообщение
#3375
|
|
Level 6 ![]() ![]() Класс: Маг Характер: Lawful Evil Раса: Нежить ![]() |
Цитата Talarasha NW_JOURNAL_ENTRYCHAPTER1 имеет какие-то связи с AddJournalQuestEntry("CHAPTER1 ", 10, oPC, TRUE, TRUE); - я правильно понял? Нвн уже удалил, так что не проверить Имеет, имеет. Функцию AJQE можно представить в следующем виде: Neverwinter Script void AddJournalQuestEntry(string szPlotID, int nState, object oCreature, int bAllPartyMembers=TRUE, int bAllPlayers=FALSE, int bAllowOverrideHigher=FALSE) { AddEntry(); SetLocalInt(object oCreature,"NW_JOURNAL_ENTRY"+szPlotID,nState); // (для наглядности опущены проверки bAllPartyMembers, bAllPlayers и bAllowOverrideHigher) } Где AddEntry(); - какой-то системный функционал по обновлению журнала. Но этим функционалом функция AJQE не заканчивается, она еще и вешает переменную для получения доступа к журналу. Просто это в отличие от AddEntry(); визуально не определяется, поэтому не совсем очевидно, но повсевместно используется в скриптах оригинальной кампании. А работа с журналом по типу: Neverwinter Script AddJournalQuestEntry("TAG",#,oPC,TRUE,TRUE); SetLocalInt(oPC,"Q1_TAG_ID",#); if(GetLocalInt(),"Q1_TAG_ID") == #) { AddJournalQuestEntry("TAG",#+1,oPC,TRUE,TRUE); SetLocalInt(oPC,"Q1_TAG_ID",#+1); } просто игнорирует оригинальный функционал и заводит по отдельной переменной на журнальные записи. Само по себе это не страшно, просто требует новый шаблон (которых и так бывает немало) и увеличивает объем кода (к каждому обновлению записи - по обновлению переменной), поэтому менее грамотно. Цитата зы: кто там спрашивает периодически, сколько скрипты изучать? я вот спустя почти 10 лет что-то новое узнаю иногда, как сейчас На мой взгляд, гораздо, гораздо меньше. Года должно хватить всем. Главное ведь не выучить названия и функционал всех-всех функций, а понять принцип, систему. Как только понял - все, дальше все задачи под силу, нужно только представлять, что хочешь. Поэтому владеющим C вообще ничего учить не надо, зашел и кодь, функции - вот они все. Вышеприведенная фишка - это просто недосмотр со стороны разрабов, которые не упомянули про это в описании AJQE. Сообщение отредактировал Talarasha - Oct 27 2010, 14:57 |
![]()
Сообщение
#3376
|
|
Level 17 ![]() Класс: Волшебник Характер: Neutral Good Раса: Человек NWN: Скриптинг [PW] Axistown SR 1.9 NWNX ![]() |
На самом деле, там ещё 2 переменные вешаются:
NW_JOURNAL_DATE* NW_JOURNAL_TIME* Более того, если я ничего не пропустил при беглом взлягде на код, он кроме установки переменных вообще ничего не делает. То есть можно просто вешать локалки с тем же успехом. Обновление журнальных данных происходит в самой функции SetLocalInt. |
![]()
Сообщение
#3377
|
|
Level 6 ![]() ![]() Класс: Маг Характер: Lawful Evil Раса: Нежить ![]() |
Цитата Более того, если я ничего не пропустил при беглом взлягде на код, он кроме установки переменных вообще ничего не делает. То есть можно просто вешать локалки с тем же успехом. Это абстрактный пример. Подразумевается, что вместо AddEntry() там код, реализующий обновление журнала. |
![]()
Сообщение
#3378
|
|
Level 17 ![]() Класс: Волшебник Характер: Neutral Good Раса: Человек NWN: Скриптинг [PW] Axistown SR 1.9 NWNX ![]() |
Я имел в виду реальный код, реализующий эту функцию.
|
![]()
Сообщение
#3379
|
|
Level 6 ![]() ![]() Класс: Маг Характер: Lawful Evil Раса: Нежить ![]() |
Реальный код какой функции, AddEntry()? Так я такого вроде на рассмотрение не представлял. Реальный код, реализующий AJQE? Тоже не представлял. Реальный код, использующий AJQE в полной мере просто будет меньше, чем код, игнорирующий включенную в AJQE установку переменных.
Реальный код, реализующий AJQE как минимум будет содержать кучу проверок из тех, что передаются функции, они же будут передаваться и AddEntry, и будут соответственно установки NW_JOURNAL_DATE*, NW_JOURNAL_TIME*, просто мы же не занимаемся переписыванием оригинальных функций, мы показываем, откуда берется переменная для проверки. Сообщение отредактировал Talarasha - Oct 27 2010, 15:28 |
![]()
Сообщение
#3380
|
|
Level 5 ![]() ![]() Класс: Пьяный Мастер Характер: Chaotic Good Раса: Человек ![]() |
Да он про сам код игры, а не язык нвнскриптинг
Цитата На самом деле, там ещё 2 переменные вешаются: NW_JOURNAL_DATE* NW_JOURNAL_TIME* А время и дата возвращаются в каком виде? Просто у времени там часы, минуты, сек, а дата, дни месяцы и тд. Сообщение отредактировал Laajin - Oct 27 2010, 15:27 |
![]()
Сообщение
#3381
|
|
Level 6 ![]() ![]() Класс: Маг Характер: Lawful Evil Раса: Нежить ![]() |
Цитата Да он про сам код игры, а не язык нвнскриптинг А, понял. |
![]()
Сообщение
#3382
|
|
Level 17 ![]() Класс: Волшебник Характер: Neutral Good Раса: Человек NWN: Скриптинг [PW] Axistown SR 1.9 NWNX ![]() |
|
![]()
Сообщение
#3383
|
|
Level 5 ![]() ![]() Класс: Пьяный Мастер Характер: Chaotic Good Раса: Человек ![]() |
Можно в принципе через IntToString посмотреть, наверное
|
![]()
Сообщение
#3384
|
|
Level 5 ![]() ![]() Класс: Паладин Характер: Chaotic Good Раса: Человек ![]() |
Как сделать так чтобы если игрок зайдет в тень в режиме скрытности его никто не видел?
|
![]()
Сообщение
#3385
|
|
Level 6 ![]() ![]() Класс: Клерик Характер: Chaotic Neutral Раса: Животное ![]() |
|
![]() ![]() |
Текстовая версия | Сейчас: 3rd May 2025 - 15:18 |