Перейти к контенту

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

@BossBoroda Попробуй через таймер запустить:

====================================

 function action_timer()
      .... ваш код по истечению таймера ....
   end
   function start_timer()
      -- взводим таймер на 10 секунд
      local iTimer = time_global() + 10000
      -- функция ожидания истечения таймера
      local function check_timer()
         return time_global() > iTimer
      end
      -- ставим её на апдейт
      level.add_call(check_timer, action_timer)
   end

-------------------------------------------------------------------------------------

Изменено пользователем KURT2013

Pir%40t%40s.gif

Ссылка на комментарий

Можешь пример с этой фун. привести (а то я чет не понял ничего)?

 

function go()
    news_manager.send_tip(db.actor, "st_test1", 2, "default", 6000)
     news_manager.send_tip(db.actor, st_test2, 8, "default", 6000) 

end

Изменено пользователем Kirgudu
Избыточное цитирование
Ссылка на комментарий

Господа, доброго времени. Прошу вашей подсказки. 

Смотрите. Имеем интересный диалог, в котором мы предлагаем случайному НПС распить водку. Водку в инвентаре имеем. Функция проверила, что водка у нас есть и разрешила с НПС нам ее распить (появилась соответствующая ветка в диалоге с НПС). И вот тут я хочу через диалог передать водку НПС и заставить его ее выпить. Через функцию водку передал, а вот как заставить его выпить водку? Суть в том, что просто уничтожить водку - не подойдет. Имеется модификация, которая заставит НПС после выпитой водки сначала отрубиться спать, а потом чувствовать жуткое похмелье. Так вот, как заставить НПС съесть водку? А вдруг можно как-то заставить скриптово НПС еще и анимацию проиграть? Как в Зов Припяти, например, когда с нами бородач там водку распивал. Есть идеи, хорошие мои?

Ссылка на комментарий

@BossBoroda Ты сообщения как запускаешь, через поршень или диалог? Если через поршень, то это будет примерно так:

<info_portion id="твой поршень">                           
<action>твой скрипт.go</action>                        
<action>my_timers.start_timer</action>
</info_portion>

А в скрипте пишешь:

function start_timer()
      -- взводим таймер на 60 секунд
      local iTimer = time_global() + 60000
      -- функция ожидания истечения таймера
      local function check_timer()
         return time_global() > iTimer
      end
      -- ставим её на апдейт
      level.add_call(check_timer, action_timer)
   end

function action_timer()
 твой скрипт. go2()    
   end

скрипт с сообщениями:

 funtion go()

news_manager.send_tip(db.actor, "st_test1", 2, "default", 6000)

end

funtion go2()

 news_manager.send_tip(db.actor, st_test2, 8, "default", 6000) 

end

Pir%40t%40s.gif

Ссылка на комментарий

Даже не знаю, я дурак или что.

Пишу формулу в скрипте:

local act_cond_2 = (sleepness / 360) - (health - 1)

Для проверки результата вывожу всякое в лог, и вижу внезапно вот это:

[09/08/17 15:11:51]	sleepness = 0 
[09/08/17 15:11:51]	health = 1 
[09/08/17 15:11:51]	act_cond_2 = 0.10833333432674 

И как это понимать, я вас спрашиваю? :blink:

  • Смешно 2

---------------------------------

www.amk-zone.de

Ссылка на комментарий

как изменить время исчезание трупов в  тч

и их одновременное кол во в игре?

Изменено пользователем BossBoroda
Ссылка на комментарий

Ребят, все еще прошу помощи. Не получается заставить НПС "съесть" водку через диалог. 

Имеем функцию, которая вызывается через диалог:

Скрытый текст

function drink_vodka()   --в диалоге вызывается функция, если:

      if new_dialog.item_much("vodka" ,1) ~= false   --..если в инвентаре имеем хотя бы одну водку
      then  
                 dialogs.relocate_item_section(second_speaker, "vodka", "out")  --отдаем одну бутылочку горючки НПС через диалог (работает, у НПС появляется в инвентаре моя водка, а у меня пропадает)
                 db.actor:eat(db.actor:object("vodka"))  --сами выпиваем водочку (РАБОТАЕТ, мы пьянеем и экран покачивается)
                 self.npc:eat(self.npc:object("vodka"))   --НПС должен выпить водку (не работает)
     end

end

В итоге игра грузится, начинаю диалог с НПС. Проверка на наличие водки проходит и появляется строчка с предложением к НПС распить водочку. Жмем и тут же вылет:

Скрытый текст

....... "attempt to index global 'self' (a nil value)"

Есть идеи, как таки заставить НПС съесть водку и пофиксить скрипт? :(

Ссылка на комментарий
1 час назад, _Sk8_AsTeR_ сказал:

self.npc:eat(self.npc:object("vodka"))   --НПС должен выпить водку (не работает)

self. убери и там и там.

1 час назад, _Sk8_AsTeR_ сказал:

dialogs.relocate_item_section(second_speaker, "vodka", "out") 

second_speaker откуда у тебя взялось? В твоем коде не вижу...

И вообще - зачем тебе непосредственное "выпивание" водки неписем ? Толку от этого ноль: эффекта на непися не будет и анимацию он не отыграет.

Ссылка на комментарий

@AndreySol А без self просто выкидывает с ошибкой на этот файл.script

А заставить его съесть водку хочу потому что подключен АИ от МОНка, где есть схема "пьянчуга", вроде как НПС должен страдать похмельем, или же вообще упасть и отрубиться. Я копался в этом скрипте и вроде как там написано что если НПС ест водку, то включается схема пьянчуги. 

А анимацию его через диалог никак не заставить проигрывать, да?

Ссылка на комментарий
31 минуту назад, _Sk8_AsTeR_ сказал:

А без self просто выкидывает с ошибкой на этот файл.script

Чевой-то у тебя там по накручено...

Попробуй так:

...     
db.actor:eat(db.actor:object("vodka"))  --сами выпиваем водочку (РАБОТАЕТ, мы пьянеем и экран покачивается)
second_speaker:eat(second_speaker:object("vodka"))   --НПС должен выпить водку (не работает)
...

 

Ссылка на комментарий

@_Sk8_AsTeR_ , попробуй так:

function drink_vodka(fs, ss)   --в диалоге вызывается функция, если:

  if new_dialog.item_much("vodka" ,1) ~= false   --..если в инвентаре имеем хотя бы одну водку

  then

    dialogs.relocate_item_section(second_speaker, "vodka", "out")  --отдаем одну бутылочку горючки НПС через диалог (работает, у НПС появляется в инвентаре моя водка, а у меня пропадает)

    db.actor:eat(db.actor:object("vodka"))  --сами выпиваем водочку (РАБОТАЕТ, мы пьянеем и экран покачивается)

    local npc = fs:id()==0 and ss or fs

 

    if npc:object("vodka") then

      npc:eat(npc:object("vodka"))   --НПС должен выпить водку (не работает)

    end

  end

end



Хотя и это работать не будет :)

Надо сначала передавать, а потом пить актёром и неписью. Если делать всё это одновременно в одной функции, да ещё и через *:object(), то будет либо вылет по парентам, либо ещё какая фигня.

Аддон для ОП-2.09.2: Яндекс/Google/GitHub

naxac.gif

Ссылка на комментарий

Да, ты прав. Просто вылет без конкретной ошибки. Слушай, а если вначале создать условную дополнительную функцию (любое название, допустим "РАЗДВАТРИ") распития водки НПСёй, а потом, когда будет вызываться наша главная функция drink_vodka, то в ней будет:

1) передача водки

2) распитие актором другой водки (если водки в инвентаре нет, то актор просто ее не пьет)

3) вызов нашей только что созданной предыдущей функции "РАЗДВАТРИ", где описан процесс распития водки НПСёй

Так может сработать? 

Блин, надеюсь ты меня понял)

Изменено пользователем _Sk8_AsTeR_
Ссылка на комментарий

И еще возник вопрос уже по другой теме.

Модернизирую "динамические сообщения". Заставляю НПС именно чатиться друг с другом по разным темам. Получается довольно интересно. То есть могут быть по 3-4 сообщения об одной теме. 

Вот только имена у нпс, отправивших сообщение - просто рандомные имя и фамилия из файлика. То есть отправляют сообщения несуществующие нпс. Отсюда вопрос: А можно сделать так, чтобы отправители сообщения были реальными рандомными нпс? Пытался что-то выдернуть из файла "News_main" из сообщений про торговлю пушками от случайных нпс, но не вышло. Отправитель не отображается, просто пустота вместо имени и фамилии. Или хотя бы есть способ разные рандомные иконки персонажей прикрутить к сообщениям? Хоть как-то сделать этот процесс общения по сталкерской сети немного реалистичнее...

Ссылка на комментарий
2 часа назад, _Sk8_AsTeR_ сказал:

просто рандомные имя и фамилия из файлика. То есть отправляют сообщения несуществующие нпс. Отсюда вопрос: А можно сделать так, чтобы отправители сообщения были реальными рандомными нпс?

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

 

@BossBoroda

Цитата

как увеличить длительность исчезание трупов

Это понял, а вот это

Цитата

и одновременное их нахождение в игре?

не понял.

Если память не изменяет, в "чистой" ТЧ вообще нет уборки(исчезания) трупов. По этому уточни - что у тебя там за часть трилогии и мод.

Ссылка на комментарий
23 минуты назад, AndreySol сказал:

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

 

@BossBoroda

Это понял, а вот это

не понял.

Если память не изменяет, в "чистой" ТЧ вообще нет уборки(исчезания) трупов. По этому уточни - что у тебя там за часть трилогии и мод.

чистый тч(ну как почти), ну вроде там же трупы исчезают? или это просто их длительность жизни значит? и как ее увеличить ?

Ссылка на комментарий

@BossBoroda выборка имен и прозвищ и так идет из АМКшной таблицы. Но они рандомно сочитабтся друг с другом. А я имею в виду чтобы реально скществующие НПС были авторами сообщений. Повстречали мв под мостом Андрей Штврь сталкера, и вот чтобы этот Андрей Штырь, например, и был автором сообщения

Ссылка на комментарий
Только что, _Sk8_AsTeR_ сказал:

выборка имен и прозвищ и так идет из АМКшной таблицы. Но они рандомно сочетаются друг с другом.

Это как понимать ?

Только что, _Sk8_AsTeR_ сказал:

А я имею в виду чтобы реально существующие НПС были авторами сообщений.

Ну так проверь, как вообще заполняется эта "АМКшная" таблица. Что мешает перебрать все объекты в игре, которые являются сталкерами, и заполнить таблицу реально существующими(заспавненными) неписями ?

Ссылка на комментарий

@BossBoroda если нет уборщика трупов, то движок убирает, ориентируясь на эти параметры

	corpse_remove_game_time_interval	= 12 ; in hours
	stay_after_death_time_interval		= 12 ; in hours

 

  • Согласен 1
Ссылка на комментарий

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

Комментарии могут оставлять только зарегистрированные пользователи

Создать аккаунт

Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!

Зарегистрировать новый аккаунт

Войти

Есть аккаунт? Войти.

Войти
  • Недавно просматривали   1 пользователь

AMK-Team.ru

×
×
  • Создать...