![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() ![]() |
![]() |
![]()
Сообщение
#2851
|
|
Level 5 ![]() ![]() Класс: Друид Характер: Lawful Neutral Раса: Человек ![]() |
Ты 2 параметр указал не верно, вместо ABILITY_DEXTERITY должно быть ItemPropertyAbilityBonus(ABILITY_DEXTERITY,1). 1 параметр это то что мы повышаем, а на сколько увеличится бонус ловкости даваемый предметом. Дело в том что свойство предмета это тип данных. Например можно записать так
Neverwinter Script Source itemproperty ipDex=ItemPropertyAbilityBonus( ABILITY_DEXTERITY, 1 ); AddItemProperty( DURATION_TYPE_PERMANENT, ipDex , GetObjectByTag( "SKURKA" ) ); Все свойства начинаются с ItemProperty, а дальше в зависимости, что хочеш добавить(ItemPropertyACBonus(),ItemPropertyBonusFe t() и т.д.) |
![]()
Сообщение
#2852
|
|
Level 5 ![]() Класс: Обыватель Характер: Lawful Neutral Раса: Человек NWN: Модмейкер Проклятие Левора Порядок Времени ![]() |
Впрочем и не тянет уже... Откровенно говоря. Помните? Былые времена? Заходишь... "Новые сообщения"... предатель (IMG:style_emoticons/kolobok_light/smile.gif) |
![]()
Сообщение
#2853
|
|
Level 11 ![]() ![]() ![]() Класс: Воин Характер: Lawful Good Раса: Человек ![]() |
Лекс, неужели даже ты не знаешь ответов на вопросы:
Код П.С. Никто не знает, как проверить, открыл ли ПС дверь?(скрипт на OnHeatbat) П.П.С. И еще, как при создании NPC сделать так, чтобы он сверху спускался? Как пауки в ХОТУ. (IMG:style_emoticons/kolobok_light/sad.gif) Цитата Помните? Былые времена? Заходишь... "Новые сообщения"... ...А там... Просто раньше большинство вопросов были новыми, а сейчас люди ругаются на постоянно повторяющиеся, не хотят отвечать, так как ответы были даны по несколько раз. Да и тулсет раньше был более популярен, чем сейчас. Гостей здесь всегда много. Готов поспорить - 50% ищут какую-то инфу по ПЛ, 35% по НВН или новые моды, и лишь 15% пытаются с помощью ГМ построить "свое чудо". (IMG:style_emoticons/kolobok_light/declare.gif) Жаль, что не у всех терпение и воля есть, как, к примеру, у Лекса. Вон, уже демку выпустил на ядре НВН2, респект, что ж есчо сказать? =) Сообщение отредактировал Белатрис - Dec 24 2007, 13:30 |
![]()
Сообщение
#2854
|
|
Вечно меняющийся ![]() Класс: Монах Характер: True Neutral Раса: Человек NWN: Скриптинг [Sn] ![]() |
2 Белатрис, я прекрасно знаю почему, и что случилось, прекрасно понимаю смысл выражения "все имеет свойство надоедать", это --- всего лишь банальные воспоминания.
Ведь раньше трава была зеленее, небо светлее Не стоит обращать на них внимания, а на воспоминания подобного рода, с моей стороны тем паче не стоит. Кстати, интересно... а ведь вопрос, по-поводу пауков из HotU (SoU --- склеп) уже разбирался... так что вопспользуйся поиском. Я на сто процентов уверен, что это уже было. Помню как сейчас. Или Aiwan или Zirrex отвечал. Наверное последний (дело в том, что нужно накаладывать эффект. Какой? Поиск). Насчет двери. Я наверное уже отстал от крутых технологий, хе-хе. Но один из вариантов решения, лично мне, видится так:
Не знаю, понятно ли я объяснил (понял), но думаю подобный ход лучше банального выкладывания кодов, как это делал(и, ют) ранее. |
![]()
Сообщение
#2855
|
|
Level 5 ![]() Класс: Обыватель Характер: Lawful Neutral Раса: Человек NWN: Модмейкер Проклятие Левора Порядок Времени ![]() |
П.П.С. И еще, как при создании NPC сделать так, чтобы он сверху спускался? Как пауки в ХОТУ. последний параметр в функции CreateObject поставь TRUE Или наложить эффект Desapear/apear.. точно уже не помню, смотри описания. а сейчас люди ругаются на постоянно повторяющиеся, не хотят отвечать ну щас уже ругаться перестали. просто или отвечают или молчат. (IMG:style_emoticons/kolobok_light/smile.gif) Мне не влом ответить, написать 100ый раз. (как например про "появление как пачки в ХОТУ"). П.С. Никто не знает, как проверить, открыл ли ПС дверь?(скрипт на OnHeatbat) лучше всего проверять через слот onOpen. Если через него нельзя совсем - бери Состояние двери (GetObjectState) и ищи последнего, кто дверь открывал (GetLastUsedBy / GetLastOpenedBy (GetLastOpener.. без тулса под рукой не помню точных имен)) |
![]()
Сообщение
#2856
|
|
Level 11 ![]() ![]() ![]() Класс: Воин Характер: Lawful Good Раса: Человек ![]() |
Обоим большое спасибо! Паучки теперь "летают" (IMG:style_emoticons/kolobok_light/declare.gif) Гхы )))
Блин, а вот поиск нифига не работает. Я серьезно - ошибку выдает, типа я неправильно ввел... (IMG:style_emoticons/kolobok_light/sad.gif) Лекс, не напомнишь, как перевести из int в string? На С++ atoi() и atof(), но в тулсете ошибку выдает... Я помню, что уже спрашивал, но найти не смог. Поиск не пашет... П.С. И, кстати, почему этих функций нет нигде, ни циклов, ни операторов ветвления... Где их отыскивать? или это слишком лементарное? (IMG:style_emoticons/kolobok_light/rolleyes.gif) |
![]()
Сообщение
#2857
|
|
Level 5 ![]() Класс: Обыватель Характер: Lawful Neutral Раса: Человек NWN: Модмейкер Проклятие Левора Порядок Времени ![]() |
nt в string? не поверишь, IntToString (для таких вещей юзай фильтр-поиск в боковом меню. По ключевым словам ищется на ура) П.С. И, кстати, почему этих функций нет нигде, ни циклов, ни операторов ветвления... Где их отыскивать? или это слишком лементарное? эт ты про что? каких функций? |
![]()
Сообщение
#2858
|
|
Level 11 ![]() ![]() ![]() Класс: Воин Характер: Lawful Good Раса: Человек ![]() |
Ну, я имел ввиду операторов (IMG:style_emoticons/kolobok_light/rolleyes.gif)
Спасибо. Цитата (для таких вещей юзай фильтр-поиск в боковом меню. По ключевым словам ищется на ура) Говорю же - не пашет поиск... ошибку выдает. И тот и другой... Тут есчо вопросик. Можно ли дверь закрыть на ключик, чтоб потом не открывалась? А то у меня дверь закрыта, ключ берешь, открываешь, кое-что происходит и дверь закрывается. Вот только потом ее можно свободно открыть... П.С. И еще. У меня сразу после драки игрок и НПС становятся друзьями и НПС должен начать диалог. Но из-за того, что они только что дрались этого делать нельзя... Как обойти сие ограничение? Заранее спасибо. Сообщение отредактировал Белатрис - Dec 25 2007, 13:45 |
![]()
Сообщение
#2859
|
|
Level 12 ![]() Класс: Оборотень Характер: Chaotic Neutral Раса: Нежить NWN: Скриптинг [Sn] ![]() |
Можно ли дверь закрыть на ключик, чтоб потом не открывалась? А то у меня дверь закрыта, ключ берешь, открываешь, кое-что происходит и дверь закрывается. Вот только потом ее можно свободно открыть... в свойствах двери ищи поле "отобрать ключ после открытия" П.С. И еще. У меня сразу после драки игрок и НПС становятся друзьями и НПС должен начать диалог. Но из-за того, что они только что дрались этого делать нельзя... Как обойти сие ограничение? ClearAllActions(TRUE); |
![]()
Сообщение
#2860
|
|
Level 11 ![]() ![]() ![]() Класс: Воин Характер: Lawful Good Раса: Человек ![]() |
Цитата в свойствах двери ищи поле "отобрать ключ после открытия" Я так делал, и знаешь, все равно можно открыть! И без ключа... (IMG:style_emoticons/kolobok_light/unsure.gif) Следующий скрипт вешается на строку диалога. Чел должен проверить количество предметов в интвентаре и посчитать их. Но игра зависает и через несколько секунд выводится сообщение, что слишком много инструкций... Что не так? Neverwinter Script Source const int V = 10, T = 60;
int Gold; void main( ) { int i; i = 0; Gold = 0; // ВОЛК object shkura = GetObjectByTag( "w_gray" ); if( GetIsObjectValid( shkura )) { while( GetIsObjectValid( shkura )) { DestroyObject( shkura ); i++; } GiveGoldToCreature( GetPCSpeaker( ), i*V ); Gold = Gold + i*V; // ТИГР }/* i = 0; object shkura_ = GetObjectByTag( "w_tigr1" ); while( GetIsObjectValid( shkura_ ) != 0 ) { DestroyObject( shkura_ ); i++; } GiveGoldToCreature( GetPCSpeaker( ), i*T ); Gold = Gold + i*T; GiveGoldToCreature( GetPCSpeaker( ), Gold ); } Сообщение отредактировал Белатрис - Dec 25 2007, 14:59 |
![]()
Сообщение
#2861
|
|
Level 5 ![]() Класс: Обыватель Характер: Lawful Neutral Раса: Человек NWN: Модмейкер Проклятие Левора Порядок Времени ![]() |
Ну, я имел ввиду операторов ну тады почему нету? for, while - циклы. Ветвление.. не знаю, что ты имеешь ввиду, но switch есть Добавлено через 2 минуты 44 секунды П.С. И еще. У меня сразу после драки игрок и НПС становятся друзьями и НПС должен начать диалог. Но из-за того, что они только что дрались этого делать нельзя... Как обойти сие ограничение? как делаешь друзьями? можно очистить личные отношения, перевести в дружественную фракцию, сделать друзьями временно и тд. А потом очистить стек. Neverwinter Script Source while( GetIsObjectValid( shkura ) ) { DestroyObject( shkura ); i++; } вечный цикл. Нехватает shkura = GetObjectByTag( "w_gray",i ); (или что ты там хотел) Это к вопросу о "слишком много инструкций". Второй цикл тоже вечный. |
![]()
Сообщение
#2862
|
|
Level 9 ![]() Класс: Обыватель Характер: Lawful Good Раса: Человек NWN: Модмейкер Рыцарская Сага ![]() |
П.С. И еще. У меня сразу после драки игрок и НПС становятся друзьями и НПС должен начать диалог. Но из-за того, что они только что дрались этого делать нельзя... Как обойти сие ограничение? Тогда вам поможет скрипт прекращения атаки всех существ в радиусе 30 метров от героя. Учтите, скрипт не меняет фракционных отношений! Если нужно вернуть нормальное отношение фракции, то пропишите это в диалоге, на проверку локалки KONEZ_BOY на НПС, или в скрипте проверки сигнала на невидимом ближайшем объекте с тегом S_BOYA. НПС - носитель скрипта, должен быть бессмертным, чтобы случайным критическим ударом не отправить его на тот свет… Neverwinter Script Source //::////////////////////////////////////////////////// //:: Прекращение атаки //:: File name: end_attak //:: Слот: OnDamaged, OnCombatRoundEnd, OnHeartBeat //::////////////////////////////////////////////////// void main( ) { object oPC = GetFirstPC( ); object oSelf = OBJECT_SELF; object oNPC = GetFirstObjectInShape( SHAPE_SPHERE, 30.0, GetLocation( oPC ), TRUE ); if ( GetCurrentHitPoints( oSelf ) < 30 && GetLocalInt( oSelf, "KONEZ_BOY" ) != 1 ) { while ( GetIsObjectValid( oNPC )) // Все существа в радиусе 30 метров { if( GetIsInCombat( oNPC ) || GetIsEnemy( oPC, oNPC )) { AssignCommand( oNPC, SurrenderToEnemies( ) ); AssignCommand( oNPC, ClearAllActions( TRUE )); } oNPC = GetNextObjectInShape( SHAPE_SPHERE, 30.0, GetLocation( oPC ), TRUE ); } SetLocalInt( oSelf, "KONEZ_BOY", 1 ); AssignCommand( oPC, ClearAllActions( TRUE )); SpeakString( "Я сдаюсь... Прекратим бой!" ); AssignCommand( oSelf, ActionPlayAnimation( ANIMATION_FIREFORGET_BOW )); DelayCommand( 1.5, PlaySound( "as_pl_wailingm2" )); int nHeal = GetMaxHitPoints( oSelf ) - GetCurrentHitPoints( oSelf ); effect eHeal = EffectHeal( nHeal ); DelayCommand( 100.0, ApplyEffectToObject( DURATION_TYPE_INSTANT, eHeal, oSelf )); DelayCommand( 100.0, SetLocalInt( oSelf, "KONEZ_BOY", FALSE )); // Дать сигнал SignalEvent( GetNearestObjectByTag( "S_BOYA" ), EventUserDefined( 777 )); } } /* Все существа в радиусе 30 метров прекращают бой. Владелиц скрипта, получает переменную для начала диалога. Через 100 сек. снимается эта переменная и лечится персонаж. Подается сигнал на ближайший объект с тегом S_BOYA */ |
![]()
Сообщение
#2863
|
|
Level 12 ![]() Класс: Оборотень Характер: Chaotic Neutral Раса: Нежить NWN: Скриптинг [Sn] ![]() |
|
![]()
Сообщение
#2864
|
|
Level 11 ![]() ![]() ![]() Класс: Воин Характер: Lawful Good Раса: Человек ![]() |
Всем спасибо! (IMG:style_emoticons/kolobok_light/thank_you.gif)
Цитата вечный цикл. Нехватает shkura = GetObjectByTag( "w_gray",i ); (или что ты там хотел) Это к вопросу о "слишком много инструкций". Второй цикл тоже вечный. Упс... че-т до меня не доперло... Что где не там стоит? помоему я shkura объявил в начале. Или то, что ты написал нужно поставить в цикле? |
![]()
Сообщение
#2865
|
|
Level 5 ![]() Класс: Обыватель Характер: Lawful Neutral Раса: Человек NWN: Модмейкер Проклятие Левора Порядок Времени ![]() |
Или то, что ты написал нужно поставить в цикле? угу. Ибо в цикле ты что делаешь? удаляешь объект shkura постоянно (НЕ переопределяя его. Те удалил его 1 раз, а дальше уже в холостую) и плюсуешь i. Так как удаление само не происходит мгновенно (а если точнее, то само удаление происходит после окончания скрипта) то условие GetIsObjectValid( shkura ) будет всегда правдивым. Добавлено через 1 минуту 53 секунды если цель была удалить все объекты с таким тэгом, переопределение shkura надо вносить внутрь цикла сразу после i++; Причем i обязательно должно быть среди параметров задачи shkura Neverwinter Script Source GetObjectByTag( "w_gray", i ); иначе ниче не будет. |
![]()
Сообщение
#2866
|
|
Level 11 ![]() ![]() ![]() Класс: Воин Характер: Lawful Good Раса: Человек ![]() |
Neverwinter Script Source while( GetIsObjectValid( shkura )) { DestroyObject( shkura ); i++; object shkura = GetObjectByTag( "w_gray", i ); } Я, наверное, неверно понял, т.к. снова много инструкций.. (IMG:style_emoticons/kolobok_light/unsure.gif) |
![]()
Сообщение
#2867
|
|
Level 5 ![]() Класс: Обыватель Характер: Lawful Neutral Раса: Человек NWN: Модмейкер Проклятие Левора Порядок Времени ![]() |
тут уже должно быть не "слишком много инструкций", а "омг!! что ж происходит то, епт!". Ибо нельзя под цикл заносить определение переменной.
Neverwinter Script Source object shkura = GetObjectByTag( "w_gray", i ); while( GetIsObjectValid( shkura ) ) { DestroyObject( shkura ); i++; shkura = GetObjectByTag( "w_gray", i ); } найдите 2 отличия, что называется. |
![]()
Сообщение
#2868
|
|
Level 9 ![]() Класс: Обыватель Характер: Lawful Good Раса: Человек NWN: Модмейкер Рыцарская Сага ![]() |
Илья, я бы записал примерно так:
Neverwinter Script Source void main( ) { object oPC = GetPCSpeaker( ); object oItem = GetFirstItemInInventory( oPC ); // Первый предмет int iGold, iTigr, iGray; while( GetIsObjectValid( oItem )) // Если существует предмет { if ( GetTag( oItem ) == "w_gray" ) // ВОЛК {iGold+=10; iGray++; DestroyObject( oItem );} if ( GetTag( oItem ) == "w_tigr1" ) // ТИГР {iGold+=60; iTigr++; DestroyObject( oItem );} oItem = GetNextItemInInventory( oPC ); // Следующий предмет } if( iGold > 0 ) { GiveGoldToCreature( oPC, iGold ); if( iGray > 0 ) // Количество шкур Волка SendMessageToPC( oPC, "Продано шкур Волка: "+IntToString( iGray )); if( iTigr > 0 ) // Количество шкур Тигра SendMessageToPC( oPC, "Продано шкур Тигра: "+IntToString( iTigr )); } } P.S. Что будет не понятно спрашивай, и все же почитай про написание циклов… Лекс, а зачем удалять все шкурки в модуле? (IMG:style_emoticons/kolobok_light/biggrin.gif) |
![]()
Сообщение
#2869
|
|
Level 5 ![]() Класс: Обыватель Характер: Lawful Neutral Раса: Человек NWN: Модмейкер Проклятие Левора Порядок Времени ![]() |
Лекс, а зачем удалять все шкурки в модуле? да я тупо не прочитал исходную задачу. Правил только проблемный кусок с зависшим циклом. То что там неправильная работа с инвентарем - я как-то и не заметил. (IMG:style_emoticons/kolobok_light/smile.gif) и кстати ты имхо зря целиком пишешь скрипт. Надо проблемные кусочки + подсказки как самому исправлять. А целиком.. (IMG:style_emoticons/kolobok_light/nea.gif) |
![]()
Сообщение
#2870
|
|
Level 11 ![]() ![]() ![]() Класс: Воин Характер: Lawful Good Раса: Человек ![]() |
Спасибо огромное вам обоим! К сожалению, пришлось воспользоваться скриптом Геннадия, так как мой скрип забирал и шкурки у самого торговца)))) А золото мне давал, кстати)))
|
![]()
Сообщение
#2871
|
|
Level 5 ![]() Класс: Обыватель Характер: Lawful Neutral Раса: Человек NWN: Модмейкер Проклятие Левора Порядок Времени ![]() |
Спасибо огромное вам обоим! К сожалению, пришлось воспользоваться скриптом Геннадия, так как мой скрип забирал и шкурки у самого торговца)))) А золото мне давал, кстати))) это потому что кроме проблемы бесконечного цикла у тебя еще куча неточностей была. В следующий раз сделаешь просто ту же ошибку, не более того. |
![]()
Сообщение
#2872
|
|
Level 2 ![]() Класс: Маг Характер: True Neutral Раса: Эльф ![]() |
Напишите, пожалуйста, скрипт на то, чтобы с появления персонажа он лежал на спине...
|
![]()
Сообщение
#2873
|
|
Level 5 ![]() Класс: Обыватель Характер: Lawful Neutral Раса: Человек NWN: Модмейкер Проклятие Левора Порядок Времени ![]() |
могу подсказать куда копать. Готовый скрипт в принципе тоже могу дать, но толку будет 0: все скрипты для модуля за тебя никто не напишет. нужно осваивать самому или привлекать скриптера.
собсна подсказка: функция ActionPlayAnimation + константа-параметр ANIMATION_***_DEAD_BACK (там под *** FIREFORGET вроде, но я не уверен). Если под персонажем ты имел ввиду НПС, то добавить получившуюся строку в onSpawn скрипт. Если персонаж - игрок, то втыкать это надо в onClientEnter в слотах модуля. Но там придется воспользоваться AssignCommand |
![]()
Сообщение
#2874
|
|
Level 3 ![]() Класс: Обыватель Характер: Chaotic Evil Раса: Человек ![]() |
QUOTE как перевести из int в string? На С++ atoi() и atof() atof переводила массив чаров в дабл. atoi переводила массив чаров в инт. Чтение хедеров фтв. |
![]()
Сообщение
#2875
|
|
Level 11 ![]() ![]() ![]() Класс: Воин Характер: Lawful Good Раса: Человек ![]() |
|
![]() ![]() |
Текстовая версия | Сейчас: 28th April 2025 - 01:08 |