Город Мастеров
IPB

Здравствуйте, гость ( Вход | Регистрация )

 Правила этого форума ПРАВИЛА РАЗДЕЛА
147 страниц V  « < 114 115 116 117 118 > »   
Ответить в эту темуОткрыть новую тему
> Скрипты, Все вопросы и ответы по скриптам
Lex
сообщение Dec 25 2007, 15:18
Сообщение #2861


Level 5
Иконки Групп

Класс: Обыватель
Характер: Lawful Neutral
Раса: Человек
NWN: Модмейкер
Проклятие Левора
Порядок Времени



Цитата(Белатрис @ Dec 25 2007, 12:51) *
Ну, я имел ввиду операторов

ну тады почему нету? for, while - циклы. Ветвление.. не знаю, что ты имеешь ввиду, но switch есть

Добавлено через 2 минуты 44 секунды

Цитата(Белатрис @ Dec 25 2007, 12:51) *
П.С. И еще. У меня сразу после драки игрок и НПС становятся друзьями и НПС должен начать диалог. Но из-за того, что они только что дрались этого делать нельзя... Как обойти сие ограничение?

как делаешь друзьями? можно очистить личные отношения, перевести в дружественную фракцию, сделать друзьями временно и тд. А потом очистить стек.

Neverwinter Script Source

    while( GetIsObjectValid( shkura ) )
    {
        DestroyObject( shkura );
        i++;
    }

вечный цикл. Нехватает shkura = GetObjectByTag( "w_gray",i ); (или что ты там хотел)
Это к вопросу о "слишком много инструкций". Второй цикл тоже вечный.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
gennady
сообщение Dec 25 2007, 15:36
Сообщение #2862


Level 9
Иконки Групп

Класс: Обыватель
Характер: Lawful Good
Раса: Человек
NWN: Модмейкер
Рыцарская Сага



Цитата(Белатрис @ Dec 25 2007, 12:51) *
П.С. И еще. У меня сразу после драки игрок и НПС становятся друзьями и НПС должен начать диалог. Но из-за того, что они только что дрались этого делать нельзя... Как обойти сие ограничение?

Тогда вам поможет скрипт прекращения атаки всех существ в радиусе 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    */




Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
azathoth
сообщение Dec 25 2007, 16:00
Сообщение #2863


Level 12
Иконки Групп

Класс: Оборотень
Характер: Chaotic Neutral
Раса: Нежить
NWN: Скриптинг [Sn]



Цитата(Белатрис @ Dec 25 2007, 14:05) *
Я так делал, и знаешь, все равно можно открыть! И без ключа...

Neverwinter Script Source
// The action subject will lock oTarget, which can be a door or a placeable
// object.
void ActionLockObject( object oTarget )
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Белатрис
сообщение Dec 26 2007, 08:37
Сообщение #2864


Level 11
***

Класс: Воин
Характер: Lawful Good
Раса: Человек



Всем спасибо! (IMG:style_emoticons/kolobok_light/thank_you.gif)

Цитата
вечный цикл. Нехватает shkura = GetObjectByTag( "w_gray",i ); (или что ты там хотел)
Это к вопросу о "слишком много инструкций". Второй цикл тоже вечный.

Упс... че-т до меня не доперло... Что где не там стоит? помоему я shkura объявил в начале. Или то, что ты написал нужно поставить в цикле?
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Lex
сообщение Dec 26 2007, 09:09
Сообщение #2865


Level 5
Иконки Групп

Класс: Обыватель
Характер: Lawful Neutral
Раса: Человек
NWN: Модмейкер
Проклятие Левора
Порядок Времени



Цитата(Белатрис @ Dec 26 2007, 08:37) *
Или то, что ты написал нужно поставить в цикле?

угу. Ибо в цикле ты что делаешь? удаляешь объект shkura постоянно (НЕ переопределяя его. Те удалил его 1 раз, а дальше уже в холостую) и плюсуешь i. Так как удаление само не происходит мгновенно (а если точнее, то само удаление происходит после окончания скрипта) то условие GetIsObjectValid( shkura ) будет всегда правдивым.

Добавлено через 1 минуту 53 секунды

если цель была удалить все объекты с таким тэгом, переопределение shkura надо вносить внутрь цикла сразу после i++; Причем i обязательно должно быть среди параметров задачи shkura
Neverwinter Script Source
GetObjectByTag( "w_gray", i );

иначе ниче не будет.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Белатрис
сообщение Dec 27 2007, 08:17
Сообщение #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)
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Lex
сообщение Dec 27 2007, 09:31
Сообщение #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 отличия, что называется.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
gennady
сообщение Dec 27 2007, 09:36
Сообщение #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)

Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Lex
сообщение Dec 27 2007, 09:37
Сообщение #2869


Level 5
Иконки Групп

Класс: Обыватель
Характер: Lawful Neutral
Раса: Человек
NWN: Модмейкер
Проклятие Левора
Порядок Времени



Цитата(gennady @ Dec 27 2007, 09:36) *
Лекс, а зачем удалять все шкурки в модуле?

да я тупо не прочитал исходную задачу. Правил только проблемный кусок с зависшим циклом. То что там неправильная работа с инвентарем - я как-то и не заметил. (IMG:style_emoticons/kolobok_light/smile.gif)


и кстати ты имхо зря целиком пишешь скрипт. Надо проблемные кусочки + подсказки как самому исправлять. А целиком.. (IMG:style_emoticons/kolobok_light/nea.gif)
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Белатрис
сообщение Dec 27 2007, 12:12
Сообщение #2870


Level 11
***

Класс: Воин
Характер: Lawful Good
Раса: Человек



Спасибо огромное вам обоим! К сожалению, пришлось воспользоваться скриптом Геннадия, так как мой скрип забирал и шкурки у самого торговца)))) А золото мне давал, кстати)))
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Lex
сообщение Dec 27 2007, 13:08
Сообщение #2871


Level 5
Иконки Групп

Класс: Обыватель
Характер: Lawful Neutral
Раса: Человек
NWN: Модмейкер
Проклятие Левора
Порядок Времени



Цитата(Белатрис @ Dec 27 2007, 12:12) *
Спасибо огромное вам обоим! К сожалению, пришлось воспользоваться скриптом Геннадия, так как мой скрип забирал и шкурки у самого торговца)))) А золото мне давал, кстати)))

это потому что кроме проблемы бесконечного цикла у тебя еще куча неточностей была. В следующий раз сделаешь просто ту же ошибку, не более того.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Scrat
сообщение Dec 29 2007, 08:37
Сообщение #2872


Level 2
*

Класс: Маг
Характер: True Neutral
Раса: Эльф



Напишите, пожалуйста, скрипт на то, чтобы с появления персонажа он лежал на спине...
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Lex
сообщение Dec 29 2007, 09:23
Сообщение #2873


Level 5
Иконки Групп

Класс: Обыватель
Характер: Lawful Neutral
Раса: Человек
NWN: Модмейкер
Проклятие Левора
Порядок Времени



могу подсказать куда копать. Готовый скрипт в принципе тоже могу дать, но толку будет 0: все скрипты для модуля за тебя никто не напишет. нужно осваивать самому или привлекать скриптера.

собсна подсказка: функция ActionPlayAnimation + константа-параметр ANIMATION_***_DEAD_BACK (там под *** FIREFORGET вроде, но я не уверен).
Если под персонажем ты имел ввиду НПС, то добавить получившуюся строку в onSpawn скрипт.
Если персонаж - игрок, то втыкать это надо в onClientEnter в слотах модуля. Но там придется воспользоваться AssignCommand
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Edwin
сообщение Jan 3 2008, 01:45
Сообщение #2874


Level 3
*

Класс: Обыватель
Характер: Chaotic Evil
Раса: Человек



QUOTE
как перевести из int в string? На С++ atoi() и atof()


atof переводила массив чаров в дабл.
atoi переводила массив чаров в инт.

Чтение хедеров фтв.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Белатрис
сообщение Jan 3 2008, 05:27
Сообщение #2875


Level 11
***

Класс: Воин
Характер: Lawful Good
Раса: Человек



Цитата(Edwin @ Jan 3 2008, 09:45) *
atof переводила массив чаров в дабл.
atoi переводила массив чаров в инт.

Чтение хедеров фтв.

Это ты к чему? Мне уже давно ответили, а что во что переводит я и так знаю, для примера привел эти два оператора.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Edwin
сообщение Jan 3 2008, 07:18
Сообщение #2876


Level 3
*

Класс: Обыватель
Характер: Chaotic Evil
Раса: Человек



QUOTE
для примера привел эти два оператора.


Это не операторы, это функции.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Alian REXis
сообщение Jan 10 2008, 12:40
Сообщение #2877


Level 7
Иконки Групп

Класс: Обыватель
Характер: True Neutral
Раса: Человек
NWN: Модмейкер
Начало Войны



Есть невидимые объекты (creature). Нужно реализовать, чтобы они были видимыми только когда у PC надет определенный айтем (шлем к примеру), при этом всем другим PC они должны оставаться невидимыми. Подскажите как реализовать, если это возможно.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
azathoth
сообщение Jan 10 2008, 13:24
Сообщение #2878


Level 12
Иконки Групп

Класс: Оборотень
Характер: Chaotic Neutral
Раса: Нежить
NWN: Скриптинг [Sn]



шлем с трусиингом?
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Alian REXis
сообщение Jan 10 2008, 13:31
Сообщение #2879


Level 7
Иконки Групп

Класс: Обыватель
Характер: True Neutral
Раса: Человек
NWN: Модмейкер
Начало Войны



Наподобе, но чтобы стандартные заклинания определяющие невидимых не работали на этих существах.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
virusman
сообщение Jan 10 2008, 13:50
Сообщение #2880


Level 17
Иконки Групп

Класс: Волшебник
Характер: Neutral Good
Раса: Человек
NWN: Скриптинг [PW]
Axistown SR 1.9
NWNX



Цитата(Alian REXis @ Jan 10 2008, 12:40) *
Есть невидимые объекты (creature). Нужно реализовать, чтобы они были видимыми только когда у PC надет определенный айтем (шлем к примеру), при этом всем другим PC они должны оставаться невидимыми. Подскажите как реализовать, если это возможно.
Стандартными средставми NWN именно так, как описано, сделать нельзя. Я недавно сделал Proof of Concept и в скором времени напишу NWNX-плагин для таких вещей (индивидуальное управление видимостью объектов).
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Golthana
сообщение Feb 12 2008, 00:08
Сообщение #2881


Level 1


Класс: Обыватель
Характер: Lawful Good
Раса: Человек



Добрый вечер. Скажите, пожалуйста, как можно прописать в скрипте, чтобы девастат не убивал, а, например, заберал 80% ХП?
Ответ можно прислать и на мыло: dracul@ukr.net
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
ZipovUA
сообщение Feb 12 2008, 23:01
Сообщение #2882


Level 2
*

Класс: Маг
Характер: Chaotic Good
Раса: Человек



Вообщето я не понял, кто такой девостат, но...
почему нельзя просто узнать сколько у персонажа XP и просто присвоить ему на 80% меньше?

типа:

Код
object oPC=GetFirstPC();//работаем з нашим главным персонажем
//або якщо комусь більше подобається, можна написати object oPC=GetEnteringObject();
int XP=0;//инициируем переменную
XP = GetXP(oPC);//вытаскиваем нинищнее значение XP
XP = FloatToInt(XP-XP*0.8); //Выщитываем результат
SetXP(oPC,XP);//Бросаем назад нашему персонажу



Если я правильно понял - то так (IMG:style_emoticons/kolobok_light/rolleyes.gif)

Сообщение отредактировал ZipovUA - Feb 12 2008, 23:05
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Lex
сообщение Feb 13 2008, 01:54
Сообщение #2883


Level 5
Иконки Групп

Класс: Обыватель
Характер: Lawful Neutral
Раса: Человек
NWN: Модмейкер
Проклятие Левора
Порядок Времени



1. ХП - Хит Поинты, а не очки опыта. Так что приведенный код малек не туда
2. проблема описанной идеи не в написании кода (это как раз детский сад). А в том, чтобы привязать код к эффекту от девастата. Я не помню как там сделано в НВН1, но вроде бы девастат - фит не активируемый на противнике.. соотв своего скрипта-исполнителя у него нету. Поэтому как решить задачу не через nwnx не знаю (через нвнх тоже не знаю как, но знаю что можно)
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Golthana
сообщение Feb 14 2008, 02:10
Сообщение #2884


Level 1


Класс: Обыватель
Характер: Lawful Good
Раса: Человек



Возможно вы не поняли суть вопроса, шард имеет лвлкап 25, девастат в чистом виде сильно крут для этого шарда, спасы не соответсвуют, но выключать его полностью - значит сделать дисбаланс в сторону магов, можно ли как-то или понизить дц девастата или сделать чтоб он не убивал, а снимал Х число хитов, либо в процентах?
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Lex
сообщение Feb 14 2008, 09:10
Сообщение #2885


Level 5
Иконки Групп

Класс: Обыватель
Характер: Lawful Neutral
Раса: Человек
NWN: Модмейкер
Проклятие Левора
Порядок Времени



Цитата(Golthana @ Feb 14 2008, 02:10) *
Возможно вы не поняли суть вопроса

поняли мы суть вопроса, вы суть ответа не поняли: "У девастата нет скрипта => изменить характер его работы обычными методами нельзя."
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения

147 страниц V  « < 114 115 116 117 118 > » 
Ответить в эту темуОткрыть новую тему
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0

 



Текстовая версия Сейчас: 30th April 2025 - 16:30