![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() ![]() |
![]() |
![]()
Сообщение
#2796
|
|
Level 11 ![]() ![]() ![]() Класс: Воин Характер: Lawful Good Раса: Человек ![]() |
Не сердись. Спасибо.
|
![]()
Сообщение
#2797
|
|
Level 11 ![]() ![]() ![]() Класс: Воин Характер: Lawful Good Раса: Человек ![]() |
Млин, помогайте. Я уже запарился. Как сделать, чтобы в три часа, к примеру, выполнялись действия. Как проверить время?... (IMG:style_emoticons/kolobok_light/unsure.gif)
|
![]()
Сообщение
#2798
|
|
Level 5 ![]() Класс: Обыватель Характер: Lawful Neutral Раса: Человек NWN: Модмейкер Проклятие Левора Порядок Времени ![]() |
Neverwinter Script Source int GetTimeHour() в любой периодическии исполняемый скрипт (например heartbeat модуля) ставишь проверку на время и нужные действия зы: поиск функций по слову "Time" зыы: функции работы с днем/месяцем/годом находятся по слову "calendar" |
![]()
Сообщение
#2799
|
|
Level 11 ![]() ![]() ![]() Класс: Воин Характер: Lawful Good Раса: Человек ![]() |
Так?
Neverwinter Script Source ........
int i; i = GetTimeHour(); if( i == 12 ) { /* действия */ } ........ |
![]()
Сообщение
#2800
|
|
Level 5 ![]() Класс: Обыватель Характер: Lawful Neutral Раса: Человек NWN: Модмейкер Проклятие Левора Порядок Времени ![]() |
почти.
2 момента: - у тебя исполняться будет в течении игрового часа каждые 6 секунд - у тебя это исполняться будет каждый игровой день в это время решается просто (если день не важен. Если важен, надо заюзать проверку дня) Neverwinter Script Source int i;
i = GetTimeHour(); if( i == 12 ) && (!GetLocalInt(OBJECT_SELF,"do_once_12_hours")) { SetLocalInt(OBJECT_SELF,"do_once_12_hours",TRUE); /* действия */ } |
![]()
Сообщение
#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 |
![]() ![]() |
Текстовая версия | Сейчас: 28th July 2025 - 11:16 |