Перейти к содержанию

FAQ-Тема для простых вопросов - "Что? Где? Как?"


Рекомендуемые сообщения

Как примерно выглядит скрипт, отвечающий за переменную, которая должна сменить гритинги у неписей, когда сменится с 0 на 1?

Хочу реализовать невозможность говорить с неписями фракции эшлендер до тех пор пока игрок не "выучит язык".

Ссылка на комментарий
Поделиться на другие сайты

  • Ответов 272
  • Создана
  • Последний ответ

Топ авторов темы

Топ авторов темы

Изображения в теме

Гритинги, как и топики, меняются не столько под воздействием какого-либо скрипта, сколько из-за разнообразных условий. Это может быть раса игрока, пол, локация, принадлежность к организации, локальная или глобальная переменная и т.д. Но более всего, пожалуй, распространены условия по журнальным записям.

Создай журнальную запись "1_yazyk", сделай запись с индексом 1 такого содержания "эшлендеры не хотят разговаривать со мной, пока я не выучу их язык" и запись с индексом 5 - "Я выучил язык эшлендеров, теперь могу свободно разговаривать с ними".

Далее создай новый гритинг (наверное, среди Greeting 0) и фразу для фракции эшлендеров. Типа "Мы не будем говорить с тобой, пока ты не выучишь {наш язык}" В результ нужно написать journal "1_yazyk" 1

Далее создать для эшлендеров повыше еще один гритинг с фразой: "Ты еще не знаешь наш язык. Иди учи его, балбес". В условиях journal "1_yazyk" == 1. В результе goodbye.

А повыше еще одну фразу для эшлендеров, нейтрального содержания типа "Привет, собеседник!" с условием journal "1_yazyk" >= 5. Для ситуации, когда язык выучен.

 

Остается только пройти курс изучения эшлендерского языка. :) По его завершении добавить в скрипт или диалог строчку journal "1_yazyk" 5

Ссылка на комментарий
Поделиться на другие сайты

Огромное спасибо) Но можно наверное обойтись и одной журнальной записью, если нет необходимости создавать гритинг "ты всё ещё". Надо же, а я и не подумал)

Только сомневаюсь что эшлендер, знающий Имперский язык будет заставлять тебя его учить :jokingly: Я как раз-таки исхожу из того, что большинство вообще ничего из речи игрока не понимают. Но это так, на полях.

Ссылка на комментарий
Поделиться на другие сайты

На здоровье! :)

Тут надо еще исключить возможность эшлендерам бесконечно начинать инициировать квест. Поэтому лучше несколько записей.

 

Только сомневаюсь что эшлендер, знающий Имперский язык будет заставлять тебя его учить

Тебе как автору виднее :)))

Ссылка на комментарий
Поделиться на другие сайты

  • 2 недели спустя...
В некоторой локации лежит предмет А, у меня в инвентаре есть предмет Б. Условие сдачи квеста: иметь при себе предмет А, а предмет Б оставить в той локации. Как организовать?
Ссылка на комментарий
Поделиться на другие сайты

В некоторой локации лежит предмет А, у меня в инвентаре есть предмет Б. Условие сдачи квеста: иметь при себе предмет А, а предмет Б оставить в той локации. Как организовать?

Звучит несложно. Момент закрытия квеста - это момент завершения обмена вещи А на вещь Б?

Наличие предмета А проверяем функцией GetItemCount

Наличие предмета Б в локации я бы проверил, наверное, функцией GetDistance - if ( GetDistance, "Объект_Б"

Скрипт весишь на какой-либо уникальный объект в локации (не А или Б).

Обе проверки применяешь в одном скрипте как условие для повышения индекса журнала.

Оба объекта должны иметь галку Reference Persist.

 

На объект Б весишь скриптик со строками:

if ( onActivate )
if ( GetJournalIndex >= 100 ) ;индекс, при котором квест считается сданным
return
endif
endif

чтобы после сдачи квеста объект Б нельзя было забрать.

Изменено пользователем TJ
Ссылка на комментарий
Поделиться на другие сайты

  • 2 недели спустя...

Нужен скрипт:

если у любого непися в игре появляется такой-то предмет в инвентаре, нужно чтобы через час он исчез из инвентаря.

если непись с этим предметом убит, тоже нужно чтобы предмет исчез.

Ссылка на комментарий
Поделиться на другие сайты

Begin Script
short doonce
float time
if ( getitemcount "предмет" > 0 )
if ( doonce == 0 );Чтобы не зацикливалось
set doonce to 1
set time to ( gamehour + 1 ); через час удаляем
endif
endif
if ( doonce == 1 )
if ( gamehour  >= time )
set doonce to 2
removeitem "предмет" 1
elseif ( gamehour >= 0 )
if ( time >= 24 )
set doonce to 2
removeitem "предмет" 1
endif
endif
endif;Если тело не уберут, то скрипт сработает и на трупе, а чтобы тело не убрали, надо в свойствах npc(там где respawn) поставить галочку corpses persist.
end Script

Ссылка на комментарий
Поделиться на другие сайты

На npc. Или глобальный.

Begin Script
short doonce
float time
if ( npc->getitemcount "предмет" > 0 )
if ( doonce == 0 );Чтобы не зацикливалось
set doonce to 1
set time to ( gamehour + 1 ); через час удаляем
endif
endif
if ( doonce == 1 )
if ( gamehour  >= time )
set doonce to 2
npc->removeitem "предмет" 1
elseif ( gamehour >= 0 )
if ( time >= 24 )
set doonce to 2
removeitem "предмет" 1
endif
endif
endif;Если тело не уберут, то скрипт сработает и на трупе, а чтобы тело не убрали, надо в свойствах npc(там где respawn) поставить галочку corpses persist.
end Script

Ссылка на комментарий
Поделиться на другие сайты

Тогда либо NPC Enhanced, там для стандартных рас скрипт, только требует MWE. Или много скриптов на различные ID.
Ссылка на комментарий
Поделиться на другие сайты

На npc. Или глобальный.

Begin Script
short doonce
float time
if ( npc->getitemcount "предмет" > 0 )
if ( doonce == 0 );Чтобы не зацикливалось
set doonce to 1
set time to ( gamehour + 1 ); через час удаляем
endif
endif
if ( doonce == 1 )
if ( gamehour  >= time )
set doonce to 2
npc->removeitem "предмет" 1
elseif ( gamehour >= 0 )
if ( time >= 24 )
set doonce to 2
removeitem "предмет" 1
endif
endif
endif;Если тело не уберут, то скрипт сработает и на трупе, а чтобы тело не убрали, надо в свойствах npc(там где respawn) поставить галочку corpses persist.
end Script

 

Этот скрипт работает только на одном конкретном NPC, поэтому для того, что хочет сделать Pro-Lid (использовать в ЧО) он не годится. Можно сделать проще, для любых NPC с этим скриптом, да ещё и с автоматическим добавлением предмета:

 

begin BusyNPCScript
float GH

if ( GetItemCount, "zH_beer_of_business" == 0 )
   AddItem "zH_beer_of_business", 1
   set GH to ( GameHour + 1) ; NPC станет свободным через 1 час
else        
  if ( GH >= GameHour )
      RemoveItem "zH_beer_of_business", 1
      StopScript "BusyNPCScript"
  endif
endif

end

(вешать этот скрипт надо локально)

 

И ещё, этот скрипт автоматически завершается после выполнения и не грузит попусту процессор. А первый будет выполнятся до скончания века, особенно если последовав твоему совету сделать все тела неубираемыми. :-D

Изменено пользователем z-Hunter
Ссылка на комментарий
Поделиться на другие сайты

здрасьте!) подскажите, а можно как-нибудь через скрипт заставить ГГ спать определённое кол-во времени?
Ссылка на комментарий
Поделиться на другие сайты

Я думаю, тут помогут эксперименты с глобальной переменной Hour. Что-то в духе

set Hour to ( Hour + 8 ) - прошло 8 часов.

Ну и, конечно, fadeout/fadein создадут затемнение, что позволит подумать, что это быд сон.

 

Я делала скрипт, позволяющий проскочить день с помощью команды set Day to (Day + 1)

http://fullrest.ru/forum/topic/13564-kak-virubit-igroka/ - вот тут.

Ссылка на комментарий
Поделиться на другие сайты

  • 1 месяц спустя...
Задам вопрос "Кто?". Кто возьмётся за нелёгкую задачу по переводу девятой версии MSFD? У нас в базе 8.1 в переводе и, как я поняла, дополнении Gwathlobala. Это существенно упрощает задачу.
Ссылка на комментарий
Поделиться на другие сайты

  • 4 недели спустя...

Выручите, друзья. Тут в квесте, по задумке разрабов, должно быть так: ты с неписем говоришь, и под конец разговора экран темнеет (FadeOut), а когда снова светлеет, то непись пропадает.

А в реале экран-то темнеет, но непись никуда не девается. Вопрос: это нереальная задумка или багованный скрипт :D?

Ссылка на комментарий
Поделиться на другие сайты

Непонятно. Если это чужой плагин, то с таким вопросом по прохождению нужно обратиться в другую тему или создать специальный топик.

Или может быть вопрос в том, что технически происходит при затемнении экрана? Только затемнение. Непися надо дисейблить отдельным скриптом (или отдельной командой).

 

ЗЫ: затемнение при диалоге? Гм. Мне кажется, это выглядит неэстетично. Лучше скрипт запустить через диалог глобальный на затемнение.

Изменено пользователем LofZ
Ссылка на комментарий
Поделиться на другие сайты

Непися надо дисейблить отдельным скриптом (или отдельной командой).

Это понятно.

Я вопрос переформулирую: возможно ли убрать непися с глаз без перезагрузки локации и без активных действий со стороны непися =)?

 

затемнение при диалоге? Гм. Мне кажется, это выглядит неэстетично.

Не, там это очень в тему ;-)

 

LofZ, ему для локализации надо. А плагин оказался глючным, приходится чинить чужие глюки.

Да, будь прокляты буржуи =(

Ссылка на комментарий
Поделиться на другие сайты

Через таймер. Goodbye, fadeout(на несколько секунд), set timer to ( timer + getsecondspassed ), disable Изменено пользователем Муурн Шепард
Ссылка на комментарий
Поделиться на другие сайты

  • 2 месяца спустя...

В скриптах не очень, посему вопрос.

Есть два объекта: первый с анимацией, второй - кнопка. По нажатию на кнопку должна срабатывать анимация первого объекта.

Можете предложить простой скрипт с двумя действиями? По нажатию на кнопку объект включается/выключается.

Ссылка на комментарий
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти
  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...