![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() ![]() |
![]() |
![]()
Сообщение
#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 Раса: Животное ![]() |
|
![]()
Сообщение
#3386
|
|
Level 7 ![]() ![]() Класс: Некромант Характер: True Neutral Раса: Нежить ![]() |
Нарисовать по контурам тени триггер и на онентер вешать скрипт. Например дающий эффект инвиза или санок Ага, особенно это проканает в экстериорах при смене положения источников света, в тенях от персонажей, да и просто при внесении новых источников света вроде факелов. Скорее всего никак. Впрочем, человека в стелсе и так не должно быть видно. |
![]()
Сообщение
#3387
|
|
Level 5 ![]() ![]() Класс: Паладин Характер: Chaotic Good Раса: Человек ![]() |
А можно скрипт?
|
![]()
Сообщение
#3388
|
|
Level 2 ![]() Класс: Псионик Характер: Chaotic Evil Раса: Чудовище ![]() |
Помню на кормире у ассасина был запрет на хайд при освещении, только не помню как реализован был.
Вот, может это поможет: http://www.nwnlexicon.com/compiled/functio...lumination.html http://www.nwnlexicon.com/compiled/categor...ingeffects.html |
![]()
Сообщение
#3389
|
|
Level 5 ![]() ![]() Класс: Убийца Характер: Lawful Evil Раса: Человек ![]() |
Код void main() { object oPC = GetEnteringObject(); object oArea1 = GetArea(oPC); object oArea2 = GetObjectByTag(FVgreatbridge); AssignCommand(oPC, ActionJumpToLocation(oArea2, vector Vector(315.0,GetDistanceBetweenLocations(location Loc1(oArea1,vector vec(0.0, 0.0, 0.0),0.0),GetLocation(oPC)),0.0),0.0)); } Хотел сделать перемещение между локациями (идешь в триггер на краю локации по, например, дороге, выходишь на другой локации на ту же дорогу, а не на заранее заданный вэйпоинт, например). Ругается на строчку с ассигнкомманд (ERROR: UNKNOWN STATE IN COMPILER) Мне кажется, что напортачил в Код vector Vector(315.0,GetDistanceBetweenLocations(location Loc1(oArea1,vector vec(0.0, 0.0, 0.0),0.0),GetLocation(oPC)),0.0) а именно в Код GetDistanceBetweenLocations(location Loc1(oArea1,vector vec(0.0, 0.0, 0.0),0.0),GetLocation(oPC)) но где - не понимаю. Там, где 315 - координата по х (подразумевался переход с левого края одной локации на левый другой, где-то вычитал, что размер тайла - 10х10м, обе локации 32х32 тайла) |
![]()
Сообщение
#3390
|
|
Level 7 ![]() ![]() Класс: Некромант Характер: True Neutral Раса: Нежить ![]() |
Neverwinter Script AssignCommand(oPC, ActionJumpToLocation(oArea2, vector Vector(315.0,GetDistanceBetweenLocations(location Loc1(oArea1,vector vec(0.0, 0.0, 0.0),0.0),GetLocation(oPC)),0.0),0.0)); Neverwinter Script AssignCommand(oPC, ActionJumpToLocation(oArea2, Vector(315.0, GetDistanceBetweenLocations(Loc1(oArea1, vec(0.0, 0.0, 0.0), 0.0), GetLocation(oPC)), 0.0), 0.0)); Зачем-то поставил типы возвращаемых значений при вызове. |
![]()
Сообщение
#3391
|
|
Level 5 ![]() ![]() Класс: Убийца Характер: Lawful Evil Раса: Человек ![]() |
Попытася описать
Код void main() { object oPC = GetEnteringObject(); object oArea1 = GetArea(oPC); object oArea2 = GetObjectByTag(FVgreatbridge); vector vec = GetPosition(GetObjectByTag("WPfoJumpto")); location Loc1 = SetLocalLocation(oPC,"Var4locj1",oArea1,vec,0.0); location l = SetLocalLocation(oPC,"Var4locj2",oArea2,315.0,GetDistanceBetweenLocations(Loc1, GetLocation(oPC)),0.0,0.0); //vector vect = 315.0,GetDistanceBetweenLocations(Loc1, GetLocation(oPC),0.0); AssignCommand(oPC, ActionJumpToLocation(l); } или Код void main() { object oPC = GetEnteringObject(); object oArea1 = GetArea(oPC); object oArea2 = GetObjectByTag(FVgreatbridge); vector vec = GetPosition(GetObjectByTag("WPfoJumpto")); location Loc1 = SetLocalLocation(oPC,"Var4locj1",oArea1,vec,0.0); vector vect = 315.0,GetDistanceBetweenLocations(Loc1, GetLocation(oPC)),0.0); AssignCommand(oPC, ActionJumpToLocation(oArea2, vect, 0.0); } или Код void main() { object oPC = GetEnteringObject(); object oArea1 = GetArea(oPC); object oArea2 = GetObjectByTag(FVgreatbridge); vector vec = GetPosition(GetObjectByTag("WPfoJumpto")); location Loc1 = SetLocalLocation(oPC,"Var4locj1",oArea1,vec,0.0); AssignCommand(oPC, ActionJumpToLocation(oArea2, 315.0, GetDistanceBetweenLocations(Loc1, GetLocation(oPC)), 0.0, 0.0); } Во всех случаях ругается на строчку с Код GetDistanceBetweenLocations(Loc1, GetLocation(oPC)) UNKNOWN STATE IN COMPILER или PARSING VARIABLES LIST, в зависимости от месстонахождения оной |
![]()
Сообщение
#3392
|
|
Level 11 ![]() ![]() ![]() Класс: Воин Характер: Lawful Good Раса: Человек ![]() |
Такая ностальгия сейчас...
Жаль, что времена NWN 1 прошли... |
![]()
Сообщение
#3393
|
|
Level 5 ![]() ![]() Класс: Убийца Характер: Lawful Evil Раса: Человек ![]() |
попробовал еще вариант
Neverwinter Script void main() { object oPC = GetEnteringObject(); object oArea1 = GetArea(oPC); object oArea2 = GetObjectByTag("FVgreatbridge"); vector Loc1 = GetPosition(oPC); vector vec; location loc; float f = Loc1.y; vec = 315,f,0; loc = oArea2, vec, 0; AssignCommand(oPC,ActionJumpToLocation(loc)); } Теперь ругается на отсутствие точки с запятой (ERROR: NO SEMICOLON AFTER EXPRESSION) после Neverwinter Script vec = 315,f,0;
|
![]()
Сообщение
#3394
|
|
Level 7 ![]() ![]() Класс: Некромант Характер: True Neutral Раса: Нежить ![]() |
Neverwinter Script vec = 315,f,0; loc = oArea2, vec, 0; Мой разум отказывается понимать, чего ты хотел этим добиться. В примерах выше такая же ошибка: ты почему-то записываешь не вызов функции для формирования вектора или положения (Vector(float x, float y, float z), Location(object oArea, vector vPosition, float fOrientation)), а только их параметры, удивляясь, что ничего не работает. |
![]()
Сообщение
#3395
|
|
Level 5 ![]() ![]() Класс: Убийца Характер: Lawful Evil Раса: Человек ![]() |
попробовал описать так:
Neverwinter Script void main() { void main() { object oPC = GetEnteringObject(); object oArea1 = GetArea(oPC); vector Loc1 = GetPosition(oPC); vector vec = Vector(315.0f,Loc1.y,0.0f); object oArea2 = GetObjectByTag("FVgreatbridge"); AssignCommand(oPC,ActionJumpToLocation(oArea2, vec(vek.x,vek.y,vek.z), 0.0f)); } в ассигнкомманде vec с любыми параметрами (пробовал vec(vek.x,vek.y,vek.z), vec(315.0f,Loc1.y,0.0f) и vec(), так же 2й вариант с Loc1.y выраженным отдельной переменной) выдаёт неизвестный индификатор (UNDEFINED IDENTIFIER (vec)), без параметров же ругается на отсутствие, собственно, параметров (DECLARATION DOES NOT MATCH PARAMETERS) записал по аналогу Лексикона Neverwinter Script void main() { object oPC = GetEnteringObject(); object oArea1 = GetArea(oPC); vector Loc1 = GetPosition(oPC); object oArea2 = GetObjectByTag("FVoutcastle"); vector vec = Vector(315.0f,Loc1.y,0.0f); float fAngle = 0.0; location loc = Location(oArea2,vec,fAngle) AssignCommand(oPC,JumpToLocation(loc); } На строчку ассигнкомманд ругается PARSING VARIABLE LIST |
![]()
Сообщение
#3396
|
|
Level 7 ![]() ![]() Класс: Некромант Характер: True Neutral Раса: Нежить ![]() |
Neverwinter Script void main() или{ object oPC = GetEnteringObject(); object oArea1 = GetArea(oPC); vector Loc1 = GetPosition(oPC); object oArea2 = GetObjectByTag("FVgreatbridge"); vector vec = Vector(315.0, Loc1.y, 0.0); AssignCommand(oPC,ActionJumpToLocation(Location(oArea2, vec, 0.0))); } Neverwinter Script void main() { object oPC = GetEnteringObject(); object oArea1 = GetArea(oPC); vector Loc1 = GetPosition(oPC); object oArea2 = GetObjectByTag("FVgreatbridge"); AssignCommand(oPC,ActionJumpToLocation(Location(oArea2, Vector(315.0, Loc1.y, 0.0), 0.0f))); } А в твоём последнем вариант скобка не закрыта после AssignCommand. Сообщение отредактировал greye - May 23 2011, 19:26 |
![]()
Сообщение
#3397
|
|
Level 5 ![]() ![]() Класс: Убийца Характер: Lawful Evil Раса: Человек ![]() |
Огромное спасибо, особенно за терпение, работает
|
![]()
Сообщение
#3398
|
|
Level 5 ![]() ![]() Класс: Убийца Характер: Lawful Evil Раса: Человек ![]() |
Neverwinter Script int StartingConditional() { if(!HasItem(GetPCSpeaker(), "Mmodacid")||!HasItem(GetPCSpeaker(), "Mmodacid_long")||!HasItem(GetPCSpeaker(), "Mmodacid_strong")) return TRUE; return FALSE; } Задумка: проверка в диалоге наличия в инвентаре PC одной из трех вещей. (Немного модифицированный скрипт из мастера) Назначение: на реплику PC Симптомы: наличие реплики (возможность PC сказать ее) при полном отсутсвии данных предметов или при наличии всех трех Предостережение: в тэгах предметов несовпадений нет; правильно работает при одном либо двух предметах Предварительный диагноз: напортачено в логике |
![]()
Сообщение
#3399
|
|
Level 11 ![]() Класс: Волшебник Характер: Lawful Evil Раса: Эльф NWN: Скриптинг [PW] Gem of the North ![]() |
Судя по коду, если все теги написаны без ошибок, фраза должна появляться, если отсутствует хотя бы 1 предмет. Если хотя бы 1 тег написан неправильно, то фраза будет появляться всегда. Может, все-таки перепроверить теги? В частности, теги чувствительны к регистру.
Кстати, код намного легче читается, если операторы (вроде ||) выделять пробелами. Сообщение отредактировал Ilerien - May 24 2011, 21:14 |
![]()
Сообщение
#3400
|
|
Level 5 ![]() ![]() Класс: Убийца Характер: Lawful Evil Раса: Человек ![]() |
А такой вопрос, возможно глупый: "!" случаем не обозначает отрицание?
Вопрос снимается, извиняюсь за беспокойство, именно так. Убрал - работает |
![]() ![]() |
Текстовая версия | Сейчас: 28th April 2025 - 01:00 |