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

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

@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:

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

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

 

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

Присоединиться к обсуждению

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

Гость
Ответить в этой теме...

×   Вы вставили отформатированный текст.   Удалить форматирование

  Допустимо не более 75 смайлов.

×   Ваша ссылка была автоматически заменена на медиа-контент.   Отображать как ссылку

×   Ваши публикации восстановлены.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.

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

AMK-Team.ru

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