![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() ![]() |
![]() |
![]()
Сообщение
#2236
|
|
Level 8 ![]() ![]() ![]() Класс: Тайный Лучник Характер: Lawful Good Раса: Эльф ![]() |
if (conditions)
return; //Можно написать else (IMG:style_emoticons/kolobok_light/smile.gif) { Скобки - типа для "else"! code >1 line code } |
![]()
Сообщение
#2237
|
|
Level 19 ![]() Класс: Воин Характер: Lawful Good Раса: Человек NWN: Скриптинг [Sn] ![]() |
Первое.
Nashman, учи мат часть. Тем более сейчас, когда она на русском доступна! else можно и не писать, но и скобки смысловой нагрузки не несут. Их можно использовать, чтобы блоки кода формировать, чисто визуально разбераться легче. Но в четырех строчках ты не запутаешься. И ВТОРОЕ Вот это что такое?! NSS void main() { object oPC=GetFirstPC(); object oTrg=OBJECT_SELF; object oNPC=GetNearestObjectByTag("НЕПИСЬ"): //вот это!!!! Скрипт ведь не компилится!!! |
![]()
Сообщение
#2238
|
|
Level 5 ![]() Класс: Обыватель Характер: Lawful Neutral Раса: Человек NWN: Модмейкер Проклятие Левора Порядок Времени ![]() |
QUOTE(-fenix- @ May 14 2006, 02:48) [snapback]81709[/snapback] Скрипт ведь не компилится!!! QUOTE(Nashman @ May 14 2006, 00:57) [snapback]81693[/snapback] ПС: В версии для форума упрощен(IMG:style_emoticons/kolobok_light/smile.gif) object oTrg=OBJECT_SELF; - лишнее ActionDoCommand(AssignCommand(oNPC, ActionStartConversation(oPC))); - тут ActionDoCommand лишнее. |
![]()
Сообщение
#2239
|
|
Level 19 ![]() Класс: Воин Характер: Lawful Good Раса: Человек NWN: Скриптинг [Sn] ![]() |
Но ведь не смотря на все это скрипт работает. Единственное, из-за чего приведеный скрипт может не работать, это двоеточие.
|
![]()
Сообщение
#2240
|
|
Level 8 ![]() ![]() ![]() Класс: Тайный Лучник Характер: Lawful Good Раса: Эльф ![]() |
QUOTE else можно и не писать, но и скобки смысловой нагрузки не несут. Их можно использовать, чтобы блоки кода формировать, чисто визуально разбераться легче. Но в четырех строчках ты не запутаешься. Это на форуме 4 скобки, а так больше(пойди туда, сделай то...).QUOTE object oTrg=OBJECT_SELF; - лишнее мне так удобнее, потом, сли код большой, а надо скрипт на кого-то другого, то исправить не так уж много прийдется. QUOTE ActionDoCommand(AssignCommand(oNPC, ActionStartConversation(oPC))); - тут ActionDoCommand лишнее. плохая прывычка (IMG:style_emoticons/kolobok_light/sad.gif) .Все выше учту в будущем (IMG:style_emoticons/kolobok_light/wink3.gif) QUOTE Но ведь не смотря на все это скрипт работает. Единственное, из-за чего приведеный скрипт может не работать, это двоеточие. оСПРАВИЛ - работает, но почему компилятор не выдавал ошибку?
Сообщение отредактировал Nashman - May 14 2006, 10:12 |
![]()
Сообщение
#2241
|
|
Миловидный Бегрюссунг ![]() Класс: Воин Характер: Chaotic Good Раса: Человек NWN: Модмейкер Проклятие Левора Порядок Времени ![]() |
QUOTE(Lex @ May 14 2006, 04:52) [snapback]81710[/snapback] object oTrg=OBJECT_SELF; - лишнее Пять юаней. Во многих сложных системах или при использовании актионов и прочих функций OBJECT_SELF может не работать корректно. Это даже в комментах лексекона есть. Рекомендую использовать только в простых не сложных скриптах иначе будете искать причину того что действие не сработало очень долго... Биовар в скриптах ХоТУ почти везеде юзает object oSelf = OBJECT_SELF; |
![]()
Сообщение
#2242
|
|
Вечно меняющийся ![]() Класс: Монах Характер: True Neutral Раса: Человек NWN: Скриптинг [Sn] ![]() |
QUOTE оСПРАВИЛ - работает, но почему компилятор не выдавал ошибку? Компилятор ошибку видит, скорее всего, ты просто забыл скомпилировать скрипт. (IMG:style_emoticons/kolobok_light/smile.gif) |
![]()
Сообщение
#2243
|
|
Level 8 ![]() ![]() ![]() Класс: Тайный Лучник Характер: Lawful Good Раса: Эльф ![]() |
хз я F7 жал, это ж компилятор?
|
![]()
Сообщение
#2244
|
|
Вечно меняющийся ![]() Класс: Монах Характер: True Neutral Раса: Человек NWN: Скриптинг [Sn] ![]() |
Да это, но я повторюсь ошибку компилятор ВИДИТ, ради интиреса попробуй скомпилировать тот скрипт еще раз.
|
![]()
Сообщение
#2245
|
|
Level 5 ![]() Класс: Обыватель Характер: Lawful Neutral Раса: Человек NWN: Модмейкер Проклятие Левора Порядок Времени ![]() |
QUOTE(Aiwan @ May 14 2006, 11:11) [snapback]81718[/snapback] Пять юаней. Во многих сложных системах или при использовании актионов и прочих функций OBJECT_SELF может не работать корректно. Это даже в комментах лексекона есть. Рекомендую использовать только в простых не сложных скриптах иначе будете искать причину того что действие не сработало очень долго... Биовар в скриптах ХоТУ почти везеде юзает object oSelf = OBJECT_SELF; я с этим не спорю, но в написанном выше скрипте - триггер только для локалки - все равно написано там OBJECT_SELF так что в том конкретном скрипте лишнее. Что я и написал. |
![]()
Сообщение
#2246
|
|
Миловидный Бегрюссунг ![]() Класс: Воин Характер: Chaotic Good Раса: Человек NWN: Модмейкер Проклятие Левора Порядок Времени ![]() |
Леш, неужели ты решил что я твой код правлю? (IMG:style_emoticons/kolobok_light/crazy.gif) Я еще с ума не сошел. Дружище, просто пять юаней это пять юаней! (IMG:style_emoticons/kolobok_light/pardon.gif)
|
![]()
Сообщение
#2247
|
|
Level 8 ![]() ![]() ![]() Класс: Паладин Характер: Lawful Good Раса: Полуэльф ПОДМАСТЕРЬЕ ![]() |
Посоветуйте, пожалуйста, как сделать так, чтобы в стек действий попало условие. Именно чтобы строка "if ...." выполнилась ПОСЛЕ окончания действия ActionMoveToObject()/
|
![]()
Сообщение
#2248
|
|
Вечно меняющийся ![]() Класс: Монах Характер: True Neutral Раса: Человек NWN: Скриптинг [Sn] ![]() |
Можно попробовать так,
NSS void ActionTemp()
{ if( // Нужная проверка и т.д... { // <...> } } void main() { // <...> ActionDoCommand(ActionTemp()); // <...> } Сообщение отредактировал Dik Morris - May 14 2006, 19:53 |
![]() ![]()
Сообщение
#2249
|
|
Level 3 ![]() Класс: Паладин Характер: Lawful Good Раса: Человек ![]() |
Скажите а можно изменить расу. Вот я хочу поменять полуорков на Ракшисов. Как это сделать? И если это скрипт тонапишите пожалуйста. (IMG:style_emoticons/kolobok_light/nea.gif)
|
![]()
Сообщение
#2250
|
|
Вечно меняющийся ![]() Класс: Монах Характер: True Neutral Раса: Человек NWN: Скриптинг [Sn] ![]() |
|
![]()
Сообщение
#2251
|
|
Level 8 ![]() ![]() ![]() Класс: Тайный Лучник Характер: Lawful Good Раса: Эльф ![]() |
Привет,
пытался уже многими способами сделать но не получилось, помогите! Ситуация: - Появляется ПС, на тригере, далее включается КаСцена и начинается разговор с НПС, после того как ПС проговорит определенные фразы, то в зависимости от выбраного диалога ПС и НПС должны пойти в куда-то. При выборе первого варианта в точку А, при выборе второго в точку Б. ПС: Два дня и 0, жуть! Быть может кто-то поможет.. |
![]()
Сообщение
#2252
|
|
Level 5 ![]() Класс: Волшебник Характер: Chaotic Good Раса: Дракон NWN: Скриптинг [Sn] ![]() |
QUOTE(Nashman @ May 16 2006, 06:09) [snapback]81934[/snapback] Появляется ПС, на тригере, далее включается КаСцена и начинается разговор с НПС под точкой появления ПС рисуем триггер, на его onEnter вешаем скрипт NSS object oPC = GetEnteringObject(); object oNPC = GetObjectByTag("TAGNPC"); if (!GetIsPC(oPC)) return; SetCutsceneMode(oPC); if (GetPlotFlag(oPC)) SetPlotFlag(oPC, FALSE); // на всякий случай, чтобы ПС не становился в режим бога AssignCommand(oPC, ActionStartConversation(oNPC, "dialog")); QUOTE(Nashman @ May 16 2006, 06:09) [snapback]81934[/snapback] При выборе первого варианта в точку А, при выборе второго в точку Б. На варианте выбора NSS object oPoint = GetObjectByTag("POINT_A"); // тоже и с поинтом Б object oNPC = OBJECT_SELF; object oPC = GetLastSpeaker(); AssignCommand(oNPC, ActionMoveToObject(oPoint)); ApplyEffectToObject(DURATION_TYPE_PERMANENT, EffectSlow(), oPC); // просто, чтобы не бегал DelayCommand(2.0f, AssignCommand(oPC , ActionMoveToObject(oPoint))); Если все равно не работает проверяй теги Сообщение отредактировал StalkerDtN - May 16 2006, 04:10 |
![]()
Сообщение
#2253
|
|
Level 8 ![]() ![]() ![]() Класс: Тайный Лучник Характер: Lawful Good Раса: Эльф ![]() |
А идет сама проверка какую фразу ПС сказал, а то я что-то не вижу...
|
![]()
Сообщение
#2254
|
|
Вечно меняющийся ![]() Класс: Монах Характер: True Neutral Раса: Человек NWN: Скриптинг [Sn] ![]() |
Nashman
Тогда ставь локальные переменные на игрока, потом проверяй в скрипте. NSS // Set oObject's local integer variable sVarName to nValue void SetLocalInt(object oObject, string sVarName, int nValue) NSS // Get oObject's local integer variable sVarName // * Return value on error: 0 int GetLocalInt(object oObject, string sVarName) |
![]()
Сообщение
#2255
|
|
Level 8 ![]() ![]() ![]() Класс: Тайный Лучник Характер: Lawful Good Раса: Эльф ![]() |
Я делал так:
на определенной строке диалога я ставил переменную, но потом не знаю как ее использовать в катсцене, тоесть у меня может быть два варианта а как тогда мне определить конец диалога? IsInConversation(object OObject) что она должна вернуть если диалог закончен? |
![]()
Сообщение
#2256
|
|
Вечно меняющийся ![]() Класс: Монах Характер: True Neutral Раса: Человек NWN: Скриптинг [Sn] ![]() |
QUOTE(Nashman @ May 16 2006, 14:33) [snapback]81952[/snapback] тоесть у меня может быть два варианта а как тогда мне определить конец диалога? А какие проблемы то... ? Юзай слот ActionTakens и будет тебе счастье... (IMG:style_emoticons/kolobok_light/smile.gif) PS: QUOTE IsInConversation
This function returns TRUE or FALSE based on the conversation state of the target. Use this function to conditionally execute behavior based on the target's conversation status. Сообщение отредактировал Dik Morris - May 16 2006, 11:49 |
![]()
Сообщение
#2257
|
|
Level 5 ![]() Класс: Волшебник Характер: Chaotic Good Раса: Дракон NWN: Скриптинг [Sn] ![]() |
QUOTE(Nashman @ May 16 2006, 16:09) [snapback]81948[/snapback] А идет сама проверка какую фразу ПС сказал, а то я что-то не вижу... Хех, Nashman, берешь, просто, на обе ветки диалога ставишь по скрипту. В первом скрипте будет NSS object oPoint = GetObjectByTag("POINT_A"); в другом NSS object oPoint = GetObjectByTag("POINT_B"); и будет все работать (IMG:style_emoticons/kolobok_light/smile.gif) PS: хотя интереснее как предложил Dik Morris |
![]()
Сообщение
#2258
|
|
Level 17 ![]() Класс: Волшебник Характер: Neutral Good Раса: Человек NWN: Скриптинг [PW] Axistown SR 1.9 NWNX ![]() |
QUOTE(Nashman @ May 16 2006, 12:33) [snapback]81952[/snapback] Я делал так: на определенной строке диалога я ставил переменную, но потом не знаю как ее использовать в катсцене, тоесть у меня может быть два варианта а как тогда мне определить конец диалога? IsInConversation(object OObject) что она должна вернуть если диалог закончен? В настройках любого диалога можно установить 2 скрипта: на нормальное завершение диалога и на прерывание (нажатие Esc). Если нужно поставить переменные в каждой ветке - сделай там соответствующие скрипты. А на скрипт завершения диалога можно вешать всё остальное... Сообщение отредактировал virusman - May 16 2006, 14:34 |
![]()
Сообщение
#2259
|
|
Level 9 ![]() Класс: Обыватель Характер: Lawful Good Раса: Человек NWN: Модмейкер Рыцарская Сага ![]() |
Nashman, все очень просто. Для начала запустим кат сценку:
NSS void main() { object oNPC = GetObjectByTag("PERS"); object oPC = GetEnteringObject(); if (!GetIsPC(oPC)) return; AssignCommand(oPC, ClearAllActions()); AssignCommand(oNPC, ClearAllActions()); SetCutsceneMode(oPC, TRUE); DelayCommand(0.1,AssignCommand(oPC, SetCameraFacing(330.0, 15.0, 50.0, CAMERA_TRANSITION_TYPE_MEDIUM))); DelayCommand(1.0,AssignCommand(oNPC,ActionForceMoveToObject(oPC, FALSE))); DelayCommand(7.0, AssignCommand(oNPC, ActionStartConversation(oPC))); } Запустили диалог перса. Идем дальше, есть один нюанс: убери все скрипты, в панели редактора диалога, на вкладке «Текущий Файл», и включи галку «Прекращение увеличения», для того, чтобы не мотало камеру. Затем присвой переменные на ветки диалога. У тебя в модуле должны уже быть такие на определение последовательности диалога. Ели нет, то сделай. Пример: NSS SetLocalInt(GetPCSpeaker(),"D1_"+GetTag(OBJECT_SELF), 1); SetLocalInt(GetPCSpeaker(),"D2_"+GetTag(OBJECT_SELF), 1); Дальше работает один скрипт на обе ветви диалога. В зависимости от выбранной ветви в диалоге, персы идут к нужной точке. NSS void main()
{ object oPoint1 = GetObjectByTag("POINT_A"); object oPoint2 = GetObjectByTag("POINT_B"); object oNPC = OBJECT_SELF; object oPC = GetPCSpeaker(); object oByTag = GetObjectByTag("Nashman_TRIGER"); AssignCommand(oPC, ClearAllActions()); AssignCommand(oNPC, ClearAllActions()); ApplyEffectToObject(DURATION_TYPE_TEMPORARY, EffectSlow(), oPC, 10.0); // просто, чтобы не бегал if(GetLocalInt(GetPCSpeaker(), "D1_"+GetTag(OBJECT_SELF)) == 1) { AssignCommand(oNPC, ActionMoveToObject(oPoint1)); AssignCommand(oPC, ActionMoveToObject(oPoint1)); } if(GetLocalInt(GetPCSpeaker(), "D2_"+GetTag(OBJECT_SELF)) == 1) { AssignCommand(oNPC, ActionMoveToObject(oPoint2)); AssignCommand(oPC, ActionMoveToObject(oPoint2)); } DestroyObject(oByTag); // удалим триггер DelayCommand(10.0, SetCutsceneMode(oPC, FALSE)); } Сообщение отредактировал gennady - May 16 2006, 14:40 |
![]()
Сообщение
#2260
|
|
Level 8 ![]() ![]() ![]() Класс: Тайный Лучник Характер: Lawful Good Раса: Эльф ![]() |
gennady , спасибо это то, что нужно было, только вопрос:
Как убрать имунитет к замедлению? Если он есть |
![]() ![]() |
Текстовая версия | Сейчас: 29th April 2025 - 04:30 |