![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() ![]() |
![]() |
![]()
Сообщение
#2801
|
|
Level 11 ![]() ![]() ![]() Класс: Воин Характер: Lawful Good Раса: Человек ![]() |
мне надо, чтобы каждый день повторялось. спасибо.
|
![]()
Сообщение
#2802
|
|
Level 11 ![]() ![]() ![]() Класс: Воин Характер: Lawful Good Раса: Человек ![]() |
А для животных есть какая-нибудь анимация? Я что-то не нашел...
|
![]()
Сообщение
#2803
|
|
Level 5 ![]() Класс: Обыватель Характер: Lawful Neutral Раса: Человек NWN: Модмейкер Проклятие Левора Порядок Времени ![]() |
есть. Где-то четверть от анимационных констант работают для животных. Лечь, головой вертеть.. не помню какие еще.
|
![]()
Сообщение
#2804
|
|
Level 5 ![]() ![]() Класс: Друид Характер: True Neutral Раса: Человек ![]() |
Как уничтожить "декоративный трупик" скриптом (например через опцию в диалоге), созданный
Neverwinter Script Source object oNpc = OBJECT_SELF; SetIsDestroyable( FALSE, FALSE, FALSE ); ApplyEffectToObject( DURATION_TYPE_INSTANT, EffectDeath( TRUE, TRUE ), oNpc ); скриптом, который стоит на OnAppear (ну или на OnDeath)? Сообщение отредактировал Shadenuat - Oct 16 2007, 15:01 |
![]()
Сообщение
#2805
|
|
Level 5 ![]() Класс: Обыватель Характер: Lawful Neutral Раса: Человек NWN: Модмейкер Проклятие Левора Порядок Времени ![]() |
Neverwinter Script Source void main( ) { SetIsDestroyable( TRUE, FALSE, FALSE ); DestroyObject( OBJECT_SELF ); } на строке диалога |
![]()
Сообщение
#2806
|
|
Level 5 ![]() ![]() Класс: Друид Характер: True Neutral Раса: Человек ![]() |
Это если трупик говорящий?
А можно применить действие SetIsDestroyable к тегу трупа? |
![]()
Сообщение
#2807
|
|
Level 12 ![]() Класс: Оборотень Характер: Chaotic Neutral Раса: Нежить NWN: Скриптинг [Sn] ![]() |
Цитата А можно применить действие SetIsDestroyable к тегу трупа? вот так можно променять объект для функции по умолчанию работающие с OBJECT_SELF. Neverwinter Script Source AssignCommand( GetObjectByTag( "TAG" ), SetIsDestroyable( TRUE ));
|
![]()
Сообщение
#2808
|
|
Level 5 ![]() ![]() Класс: Друид Характер: True Neutral Раса: Человек ![]() |
Второй день мучаюсь, наконец получилось что надо. Спасибо Lex, огромное спасибо Azathoth.
|
![]()
Сообщение
#2809
|
|
Level 11 ![]() ![]() ![]() Класс: Воин Характер: Lawful Good Раса: Человек ![]() |
Я вот думал, думал... как сделать, чтобы анимация проигрывалась постоянно? Пока условие не станет ложным.
И, правильно ли это: Neverwinter Script Source i = GetTimeHour( ); // Типа, если время между 11 вечера и семи утра, то выполняется то-то и то-то. if( i > 23 && i < 7 ) { ...... } Заранее спасибо! П.С. Ах, еще забыл. Как засечь время. К примеру, мне нужно, чтобы строка диалога появлялась каждые три дня. На heartbeat ставить проверку? Ну, допустим, прошел час - прибавили к переменной единицу. А потом, когда в диалоге строка была использована, переменная обнуляется... (IMG:style_emoticons/kolobok_light/unsure.gif) А как определить, прошел ли час? (IMG:style_emoticons/kolobok_light/prankster2.gif) |
![]()
Сообщение
#2810
|
|
Level 5 ![]() Класс: Обыватель Характер: Lawful Neutral Раса: Человек NWN: Модмейкер Проклятие Левора Порядок Времени ![]() |
if( i > 23 && i < 7 ) у тебя не может быть число одновременно больше 23 и меньше 7. Ты бы проверил чтоли сам для начала (IMG:style_emoticons/kolobok_light/biggrin.gif) Добавлено через 2 минуты 33 секунды П.С. Ах, еще забыл. Как засечь время. К примеру, мне нужно, чтобы строка диалога появлялась каждые три дня. На heartbeat ставить проверку? Ну, допустим, прошел час - прибавили к переменной единицу. А потом, когда в диалоге строка была использована, переменная обнуляется... unsure.gif А как определить, прошел ли час? prankster2.gif лучше всего юзать старый (хз кем запатентованный) способ: переводить все в часы. Вплоть до года. Соотв. в начальный момент запоминаешь это мега число. Сравниваешь в ХБ, как только разница между текущей датой (переведенной в часы) станет ровна или превысит 72 - значит прошло ровно 3 суток с момента запоминания. Выполняй действие, а момент запоминания ставь текущий и все начнется по новой. Осилишь написать скрипт по такому описанию? Это всего лишь 3 строки кода. |
![]()
Сообщение
#2811
|
|
Level 12 ![]() Класс: Оборотень Характер: Chaotic Neutral Раса: Нежить NWN: Скриптинг [Sn] ![]() |
можно вообще без хб, и без часов...
Neverwinter Script Source // Appears when... int StartingConditional( ) { int nLastDay = GetLocalInt( OBJECT_SELF, "last_randompostfix" ); return ( GetCalendarDay( ) - nLastDay ) >= 2; // ecли прошло два дня } Neverwinter Script Source // Action
void main( ) { SetLocalInt( OBJECT_SELF, "last_randompostfix", GetCalendarDay( ) ); // устанавливаешь день последнего использования } |
![]()
Сообщение
#2812
|
|
Level 9 ![]() Класс: Обыватель Характер: Lawful Good Раса: Человек NWN: Модмейкер Рыцарская Сага ![]() |
П.С. Ах, еще забыл. Как засечь время. К примеру, мне нужно, чтобы строка диалога появлялась каждые три дня. На heartbeat ставить проверку? На строку диалога, слот появления… azathoth, немного не так... Нужно еще учесть переход между началом и концом месяца... Neverwinter Script Source ////////////////// Текущий день ////////////////////////// int Day( int nYear=1 ) { int nDay = GetCalendarDay( ); int nMes = 28*GetCalendarMonth( ); int iDay = 336*nYear+nMes+nDay; return iDay; } ///////////////////////////////////////////////////// int StartingConditional( ) { if( GetLocalInt( GetPCSpeaker( ), "day_3" ) <= Day( ) ) {SetLocalInt( GetPCSpeaker( ), "day_3", Day( )+3 ); return TRUE;} else { SpeakString( "Приходи через "+IntToString( GetLocalInt( GetPCSpeaker( ), "day_3" )-Day( ) ) + " ДНЯ" ); return FALSE; } } |
![]()
Сообщение
#2813
|
|
Level 12 ![]() Класс: Оборотень Характер: Chaotic Neutral Раса: Нежить NWN: Скриптинг [Sn] ![]() |
о, а ведь был в полной уверености, что функция отсчитывает от "рождества христова". буду знать.
|
![]()
Сообщение
#2814
|
|
Level 5 ![]() Класс: Обыватель Характер: Lawful Neutral Раса: Человек NWN: Модмейкер Проклятие Левора Порядок Времени ![]() |
чтобы банально уменьшить число, можно запомнить год начала игры и считать от него (те из текущего года вычитать год игры). Но в целом Гена то самое и написал. Только я хотел чтобы это Белатрис сделал. Эх, не судьба.
|
![]()
Сообщение
#2815
|
|
Level 11 ![]() ![]() ![]() Класс: Воин Характер: Lawful Good Раса: Человек ![]() |
Не выполняется сий скрипт:
Neverwinter Script Source //:: ////////////////////////////////// //:: Автор: Lex //:: ////////////////////////////////// void ANIMATION( object oD ) { int A1=0; float T1, S1; switch ( Random( 5 )+1 ) { case 1: A1=ANIMATION_FIREFORGET_PAUSE_SCRATCH_HEAD;T1=5.0;S1=2.0;break; case 2: A1=ANIMATION_FIREFORGET_TAUNT;T1=5.0;S1=2.0;break; case 3: A1=ANIMATION_FIREFORGET_PAUSE_BORED;S1=2.0;break; case 4: A1=ANIMATION_FIREFORGET_DRINK;T1=6.0;S1=3.0;break; case 5: A1=ANIMATION_LOOPING_PAUSE_TIRED;T1=5.0;S1=2.0;break; } if ( A1==0 ) return; AssignCommand( oD, PlayAnimation( A1, S1, T1 )); } //:: ////////////////////////////////// //:: Автор: тут уже ЙА! //:: ////////////////////////////////// void main( ) { object FERGUS = GetObjectByTag( "fergus" ); object wp1 = GetObjectByTag( "FERGUS_RASP_WP1" ); // ТОЧКА РЫНКА object wp2 = GetObjectByTag( "FERGUS_RASP_WP2" ); // ТОЧКА У КОСТРА РОЙГА object wp3 = GetObjectByTag( "FERGUS_RASP_WP3" ); // ТОЧКА У ДОМА object wp4 = GetObjectByTag( "FERGUS_RASP_WP4" ); // ТОЧКА У КОСТРА НА РЫНКЕ // object wp5 = GetObjectByTag( "FERGUS_RASP_WP5" ); // ТОЧКА ЗАПАСНАЯ int i = GetTimeHour( ); while( i > 1 && i < 13 ) { AssignCommand( FERGUS, ActionForceMoveToObject( wp1, FALSE, 1.0, 25.0 )); ANIMATION( FERGUS ); } while( i > 14 && i < 15 ) { AssignCommand( FERGUS, ActionForceMoveToObject( wp2, FALSE, 1.0, 25.0 )); ANIMATION( FERGUS ); } while( i > 15 && i < 18 ) { AssignCommand( FERGUS, ActionForceMoveToObject( wp3, FALSE, 1.0, 25.0 )); ANIMATION( FERGUS ); } while( i > 18 && i < 24 ) { AssignCommand( FERGUS, ActionForceMoveToObject( wp4, FALSE, 1.0, 25.0 )); ANIMATION( FERGUS ); } } |
![]()
Сообщение
#2816
|
|
Level 9 ![]() Класс: Обыватель Характер: Lawful Good Раса: Человек NWN: Модмейкер Рыцарская Сага ![]() |
Не выполняется сий скрипт: Чет не верится, что это Лекс писал… Я бы записал так… Объяснять не буду… все тут: cкрипты Neverwinter Script Source //:: //////////////////////////////////
//:: Афтор: Gennady //:: ////////////////////////////////// void ANIMATION( object oD, float Speed=1.0, float Time=0.0 ) { int A1; switch ( Random( 5 )+1 ) { case 1: A1=ANIMATION_FIREFORGET_PAUSE_SCRATCH_HEAD; break; case 2: A1=ANIMATION_FIREFORGET_TAUNT; break; case 3: A1=ANIMATION_FIREFORGET_PAUSE_BORED; break; case 4: A1=ANIMATION_FIREFORGET_DRINK; break; case 5: A1=ANIMATION_LOOPING_PAUSE_TIRED; if( Time==0.0 )Time=6.0; break; } AssignCommand( oD, ActionPlayAnimation( A1, Speed, Time ) ); } void main( ) { object FERGUS = GetObjectByTag( "fergus" ); if ( GetLocalInt( FERGUS, "ACTION" )==1 ) return; // Задежка цикла, если скриптт ДЛЯ ХБ object wp1 = GetObjectByTag( "FERGUS_RASP_WP1" ); // ТОЧКА РЫНКА object wp2 = GetObjectByTag( "FERGUS_RASP_WP2" ); // ТОЧКА У КОСТРА РОЙГА object wp3 = GetObjectByTag( "FERGUS_RASP_WP3" ); // ТОЧКА У ДОМА object wp4 = GetObjectByTag( "FERGUS_RASP_WP4" ); // ТОЧКА У КОСТРА НА РЫНКЕ int i = GetTimeHour( ); float fTime = 17.0; // Новый цикл ХБ=18 секундам // object wp5 = GetObjectByTag( "FERGUS_RASP_WP5" ); // ТОЧКА ЗАПАСНАЯ if ( i > 1 && i < 13 ) { if( GetDistanceBetween( FERGUS, wp1 ) > 1.0 ) AssignCommand( FERGUS, ActionForceMoveToObject( wp1, FALSE, 1.0, 25.0 ) ); ANIMATION( FERGUS ); SetLocalInt( FERGUS, "ACTION", 1 ); // ДЛЯ ХБ DelayCommand( fTime, SetLocalInt( FERGUS, "ACTION", 0 ) ); // ДЛЯ ХБ } // и т.д. ... } Сообщение отредактировал gennady - Nov 28 2007, 05:24 |
![]()
Сообщение
#2817
|
|
Level 5 ![]() Класс: Обыватель Характер: Lawful Neutral Раса: Человек NWN: Модмейкер Проклятие Левора Порядок Времени ![]() |
Чет не верится, что это Лекс писал… Я бы записал так… Объяснять не буду… все тут Эх ты (IMG:style_emoticons/kolobok_light/smile.gif) Смысл был именно в том, чтобы каждой анимации поставить адекватное время и скорость. А ты все в параметры вывел (кстати из скрипта ты эти параметры не вносишь, а значит время и скорость по умолчанию, можно тогда их вообще убирать) Добавлено через 40 Не выполняется сий скрипт: на будущее: пиши что именно не работает. |
![]()
Сообщение
#2818
|
|
Level 9 ![]() Класс: Обыватель Характер: Lawful Good Раса: Человек NWN: Модмейкер Рыцарская Сага ![]() |
Смысл был именно в том, чтобы каждой анимации поставить адекватное время и скорость. Это ж как??? А кто тут все учил, что FIREFORGET имеет только скорость? Как раз таки я и пытался вынести эти параметры, но первый блин комом (IMG:style_emoticons/kolobok_light/biggrin.gif) . Белатрис, скрипт я поправил, должно работать… Наверно, это писалось для ХБ плейса управления? И циклы тут уж точно не нужны… |
![]()
Сообщение
#2819
|
|
Level 5 ![]() Класс: Обыватель Характер: Lawful Neutral Раса: Человек NWN: Модмейкер Проклятие Левора Порядок Времени ![]() |
то ж как??? А кто тут все учил, что FIREFORGET имеет только скорость? там от балды цифры стоят, это скрипт-шаблон, настраивать нужно уже самому (IMG:style_emoticons/kolobok_light/smile.gif) |
![]()
Сообщение
#2820
|
|
Level 11 ![]() ![]() ![]() Класс: Воин Характер: Lawful Good Раса: Человек ![]() |
Не ходит, только проигрывает анимацию... (IMG:style_emoticons/kolobok_light/unsure.gif)
Neverwinter Script Source void main( )
{ object KLIFF = GetObjectByTag( "kliff" ); object wp1 = GetObjectByTag( "GRASS_WP1" ); object wp2 = GetObjectByTag( "GRASS_WP2" ); object wp3 = GetObjectByTag( "GRASS_WP3" ); object wp4 = GetObjectByTag( "GRASS_WP4" ); object wp5 = GetObjectByTag( "GRASS_WP5" ); object wp6 = GetObjectByTag( "GRASS_WP6" ); object wp7 = GetObjectByTag( "GRASS_WP7" ); object wp8 = GetObjectByTag( "GRASS_WP8" ); object wp9 = GetObjectByTag( "GRASS_WP9" ); object wp10 = GetObjectByTag( "GRASS_WP10" ); int i = GetTimeHour( ); float fTime = 17.0; if ( i > 10 && i < 18 ) // РАБОТАЕМ В ПОЛЕ { if( GetDistanceBetween( KLIFF, wp1 ) > 1.0 ) switch( Random( 10 )+1 ) { case 1: AssignCommand( KLIFF, ActionForceMoveToObject( wp1, FALSE, 1.0, 25.0 ) ); break; case 2: AssignCommand( KLIFF, ActionForceMoveToObject( wp2, FALSE, 1.0, 25.0 ) ); break; case 3: AssignCommand( KLIFF, ActionForceMoveToObject( wp3, FALSE, 1.0, 25.0 ) ); break; case 4: AssignCommand( KLIFF, ActionForceMoveToObject( wp4, FALSE, 1.0, 25.0 ) ); break; case 5: AssignCommand( KLIFF, ActionForceMoveToObject( wp5, FALSE, 1.0, 25.0 ) ); break; case 6: AssignCommand( KLIFF, ActionForceMoveToObject( wp6, FALSE, 1.0, 25.0 ) ); break; case 7: AssignCommand( KLIFF, ActionForceMoveToObject( wp7, FALSE, 1.0, 25.0 ) ); break; case 8: AssignCommand( KLIFF, ActionForceMoveToObject( wp8, FALSE, 1.0, 25.0 ) ); break; case 9: AssignCommand( KLIFF, ActionForceMoveToObject( wp9, FALSE, 1.0, 25.0 ) ); break; case 10: AssignCommand( KLIFF, ActionForceMoveToObject( wp10, FALSE, 1.0, 25.0 ) ); break; } AssignCommand( KLIFF, PlayAnimation( ANIMATION_LOOPING_GET_LOW, 1.0, 5.0 ) ); ActionWait( 3.0 ); SetLocalInt( KLIFF, "ACTION", 1 ); // ДЛЯ ХБ DelayCommand( fTime, SetLocalInt( KLIFF, "ACTION", 0 ) ); // ДЛЯ ХБ } } Сообщение отредактировал Белатрис - Oct 23 2007, 06:21 |
![]()
Сообщение
#2821
|
|
Level 9 ![]() Класс: Обыватель Характер: Lawful Good Раса: Человек NWN: Модмейкер Рыцарская Сага ![]() |
Цитата(Белатрис) Не ходит, только проигрывает анимацию... Если скрипт стоит на ХБ, то нужно еще учесть кучу моментов… Вот тебе для примера скрипт на заданную тему, писал давно, может что и глючит (т.к. писался не под стандартный ХБ скрипт), но идея была такая: Neverwinter Script Source //::///////////////////////////////////////////////////////////
//:: NPC ходит по стандартным точкам и эмитирует работу на поле //:://///////////////////////////////////////////////////////// void StringKrest( object oNPC ) { string sStr; switch ( Random( 5 )+1 ) { case 1: sStr = "Мне нужен отдых!"; break; case 2: sStr = "Эх! Прополка, ты прополка!"; break; case 3: sStr = "Скорей бы зима!"; break; case 4: sStr = "Любо братцы, любо! Любо братцы жить!"; break; case 5: sStr = "Сколько можно прорывать? Сил моих нет!"; break; } AssignCommand( oNPC, SpeakString( sStr )); } void main( ) { object oSelf = OBJECT_SELF; if( GetArea( GetFirstPC( ) ) != GetArea( oSelf )) // если ПС нет в локе { AssignCommand( oSelf, ClearAllActions( TRUE )); SetLocalInt( oSelf, "WPOIN_GO", 0 ); return; } if ( GetIsInCombat( oSelf )) { ExecuteScript( "nw_c2_default1", oSelf ); SetLocalInt( oSelf, "WPOIN_GO", 0 ); return; } if ( IsInConversation( oSelf )) {SetLocalInt( oSelf, "WPOIN_GO", 0 ); return;} if ( GetLocalInt( oSelf, "WPOIN_GO" ) == 1 ) return; object oWay = GetNearestObjectByTag( "WP_"+GetTag( oSelf )+"_01" ); int i =1; string sPoint = IntToString( i ); if ( GetIsObjectValid( oWay )) { ClearAllActions( ); SetLocalInt( oSelf, "WPOIN_GO", 1 ); } else {ExecuteScript( "de_sleep", oSelf ); return;} while ( GetIsObjectValid( oWay )) // Цикл на возрастание точек { ActionForceMoveToObject( oWay, FALSE, 0.0, 30.0 ); ActionPlayAnimation( ANIMATION_LOOPING_GET_LOW, 1.0, 3.0 ); ActionWait( 1.0*Random( 4 )+1 ); if ( Random( 10 )>5 ) ActionPlayAnimation( ANIMATION_FIREFORGET_PAUSE_SCRATCH_HEAD ); if ( Random( 10 )>5 ) { ActionDoCommand( StringKrest( oSelf )); ActionPlayAnimation( ANIMATION_FIREFORGET_TAUNT ); } i++; sPoint = IntToString( i ); oWay = GetNearestObjectByTag( "WP_"+GetTag( oSelf )+"_0"+sPoint ); } ActionDoCommand( SetLocalInt( oSelf, "WPOIN_GO", 0 )); } // Если нет точек для ходьбы, то запустится скрипт сна de_sleep |
![]()
Сообщение
#2822
|
|
Level 11 ![]() ![]() ![]() Класс: Воин Характер: Lawful Good Раса: Человек ![]() |
ээээ...... много не понятно. А какой тег точкам присваивать? (IMG:style_emoticons/kolobok_light/prankster2.gif)
|
![]()
Сообщение
#2823
|
|
Level 9 ![]() Класс: Обыватель Характер: Lawful Good Раса: Человек NWN: Модмейкер Рыцарская Сага ![]() |
NPC ходит по стандартным точкам... Хем... Это те точки, которые редактор задает сам при выборе NPC, и клике правой кнопкой: "Создать Точку Маршрута"...
ПС Школа по чтению скриптов простаивает, как у Айва, так и у Мамука. Стоит вам ее посетить! (IMG:style_emoticons/kolobok_light/biggrin.gif) |
![]()
Сообщение
#2824
|
|
Level 11 ![]() ![]() ![]() Класс: Воин Характер: Lawful Good Раса: Человек ![]() |
Всем доброго времени суток!
Как проиграть на строчке диалога 3D звук, находящийся в хак-паке? (IMG:style_emoticons/kolobok_light/rolleyes.gif) Заранее спасибо! |
![]()
Сообщение
#2825
|
|
Level 11 ![]() ![]() ![]() Класс: Воин Характер: Lawful Good Раса: Человек ![]() |
Э... неужели никто не знает?...
|
![]() ![]() |
Текстовая версия | Сейчас: 14th June 2025 - 07:06 |