![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() ![]() |
![]() |
![]()
Сообщение
#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 Раса: Человек ![]() |
Э... неужели никто не знает?...
|
![]()
Сообщение
#2826
|
|
Level 9 ![]() Класс: Вор Характер: Chaotic Good Раса: Эльф МАСТЕР Переводов ![]() |
Neverwinter Script Source void main( ) { object oPC = GetFirstPC( ); int iGold = GetGold( oPC ); effect eSTR = EffectAbilityIncrease( ABILITY_STRENGTH, 1 ); } Здорово! Сама недавно искала такой скрипт. Но в связи с этим возникает вопрос: это увеличение способности накладывается насовсем или на какое-то время? Вроде, временной промежуток не задается, но это же базовая способность, все-таки. |
![]()
Сообщение
#2827
|
|
Level 5 ![]() Класс: Обыватель Характер: Lawful Neutral Раса: Человек NWN: Модмейкер Проклятие Левора Порядок Времени ![]() |
тут пока еще ниче не накладывается.
В ApplyEffect есть параметр duration. Ставь там DURATION_TYPE_INSTANT - будет постоянный бонус (или PERMANENT.. я за много лет так и не понял какой когда правильнее использовать (IMG:style_emoticons/kolobok_light/smile.gif) ). Однако есть пара моментов: - бонус можно отдиспелить - бонус можно снять отдыхом чтобы этого избежать, надо использовать EffectSupernatural и EffectExtraordinary (ну или как-то так, по памяти пишу). |
![]()
Сообщение
#2828
|
|
Level 9 ![]() Класс: Вор Характер: Chaotic Good Раса: Эльф МАСТЕР Переводов ![]() |
Эээ... Все бы ничего, да вот только этих EffectSupernatural и EffectExtraordinary в тулсете нет ни в функциях, ни в константах, а у функции EffectAbilityIncrease только два параметра - (int nAbilityToIncrease, int nModifyBy). (IMG:style_emoticons/kolobok_light/scratch_one-s_head.gif)
Неужели шкурку придется делать? Я не смогу... (IMG:style_emoticons/kolobok_light/sad.gif) |
![]()
Сообщение
#2829
|
|
Level 5 ![]() Класс: Обыватель Характер: Lawful Neutral Раса: Человек NWN: Модмейкер Проклятие Левора Порядок Времени ![]() |
перестановка слов даст офигенный результат: SupernaturalEffect, ExtraordinaryEffect.
зы: могли бы сами искать не тупо по полному названию, а по ключевой части (IMG:style_emoticons/kolobok_light/smile.gif) |
![]()
Сообщение
#2830
|
|
Level 9 ![]() Класс: Вор Характер: Chaotic Good Раса: Эльф МАСТЕР Переводов ![]() |
перестановка слов даст офигенный результат: SupernaturalEffect, ExtraordinaryEffect. зы: могли бы сами искать не тупо по полному названию, а по ключевой части (IMG:style_emoticons/kolobok_light/smile.gif) Если тебе интересно, о остроумнейший, искала по слову Effect. Извини, что побеспокоила. |
![]()
Сообщение
#2831
|
|
Level 5 ![]() Класс: Обыватель Характер: Lawful Neutral Раса: Человек NWN: Модмейкер Проклятие Левора Порядок Времени ![]() |
Если тебе интересно, о остроумнейший, искала по слову Effect. Извини, что побеспокоила. эффектов куча, искать надо по более уникальной части. Ну это совет на будущее (IMG:style_emoticons/kolobok_light/smile.gif) нашла хотяб? (IMG:style_emoticons/kolobok_light/smile.gif) |
![]()
Сообщение
#2832
|
|
Миловидный Бегрюссунг ![]() Класс: Воин Характер: Chaotic Good Раса: Человек NWN: Модмейкер Проклятие Левора Порядок Времени ![]() |
Сделай сейв и загрузи его. Проверь сохранится или нет.
|
![]()
Сообщение
#2833
|
|
Level 9 ![]() Класс: Обыватель Характер: Lawful Good Раса: Человек NWN: Модмейкер Рыцарская Сага ![]() |
Ну, раз и меня подключили к этому скрипту, то хочу немного добавить. Вам нужно выбрать что-то одно, т.к. это разные эффекты…
Как уже неоднократно писалось, да и в WIKI тема эффектов разобрана по полочкам, да и я тут тоже типа обучалки скриптингу написал, можно посмотреть и там о наложение эффектов: http://remmgen.narod.ru/tscript2.html Neverwinter Script void main( ) { object oPC = GetFirstPC( ); effect eSTR = EffectAbilityIncrease( ABILITY_STRENGTH, 3 ); // Экстраординарные ( Extraordinary ) – не могут быть сняты с помощью заклинания, автоматически снимаются в конце отдыха. effect eExt = ExtraordinaryEffect( eSTR ); // Сверхъестественные ( Supernatural ) – не могут быть сняты ни заклинанием, ни с помощью отдыха. effect eSup = SupernaturalEffect( eSTR ); // Накладываем эффекты ApplyEffectToObject( DURATION_TYPE_PERMANENT, eExt, oPC ); // или чтобы не снимался ApplyEffectToObject( DURATION_TYPE_PERMANENT, eSup, oPC ); } а у функции EffectAbilityIncrease только два параметра - (int nAbilityToIncrease, int nModifyBy). Тут все просто… меняем константы: ABILITY_CHARISMA ABILITY_CONSTITUTION ABILITY_DEXTERITY ABILITY_INTELLIGENCE ABILITY_STRENGTH ABILITY_WISDOM и величину int nModifyBy т.е. на сколько хотим добавить тот или иной бонус к характеристики. Если не ошибаюсь, то max= 176… Неужели этого недостаточно?! Сообщение отредактировал gennady - Sep 4 2010, 16:50 |
![]()
Сообщение
#2834
|
|
Level 5 ![]() Класс: Обыватель Характер: Lawful Neutral Раса: Человек NWN: Модмейкер Проклятие Левора Порядок Времени ![]() |
Неужели этого недостаточно?! неа (IMG:style_emoticons/kolobok_light/ph34r.gif) это не совсем корректно, точнее совсем не корректно. Твоим скриптом мы получим 2х кратный бонус, часть которого снимется после отдыха, а часть после диспела. Задача же базово совсем в другом. зы: влезание в тему, это похвально, но надо внимательнее читать пост про поставленную задачу. (IMG:style_emoticons/kolobok_light/smile.gif) Сделай сейв и загрузи его. Проверь сохранится или нет. это не то. Нужно проверять отдыхом и диспелом. Сэйв/Лоад сохраняет временные эффекты, что уж говорить об Инстант или Перманент Я Шад уже все в приват написал, но там что-то не работает. Приеду домой, сам посмотрю. зы: самый надежный способ - шкуркой. |
![]()
Сообщение
#2835
|
|
Миловидный Бегрюссунг ![]() Класс: Воин Характер: Chaotic Good Раса: Человек NWN: Модмейкер Проклятие Левора Порядок Времени ![]() |
зы: самый надежный способ - шкуркой. Но самый муторный. Самое надежное забить на это и жить длаьше. Игрок вашего геммора даже не заметит, не то что бы оценить! (IMG:style_emoticons/kolobok_light/declare.gif) |
![]() ![]() |
Текстовая версия | Сейчас: 30th April 2025 - 11:45 |