_Sk8_AsTeR_ 117 Опубликовано 7 Сентября 2017 Поделиться Опубликовано 7 Сентября 2017 Господа, доброго времени. Прошу вашей подсказки. Смотрите. Имеем интересный диалог, в котором мы предлагаем случайному НПС распить водку. Водку в инвентаре имеем. Функция проверила, что водка у нас есть и разрешила с НПС нам ее распить (появилась соответствующая ветка в диалоге с НПС). И вот тут я хочу через диалог передать водку НПС и заставить его ее выпить. Через функцию водку передал, а вот как заставить его выпить водку? Суть в том, что просто уничтожить водку - не подойдет. Имеется модификация, которая заставит НПС после выпитой водки сначала отрубиться спать, а потом чувствовать жуткое похмелье. Так вот, как заставить НПС съесть водку? А вдруг можно как-то заставить скриптово НПС еще и анимацию проиграть? Как в Зов Припяти, например, когда с нами бородач там водку распивал. Есть идеи, хорошие мои? Ссылка на комментарий
Pir@t@s 36 Опубликовано 7 Сентября 2017 Поделиться Опубликовано 7 Сентября 2017 @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 Ссылка на комментарий
naxac 2 447 Опубликовано 7 Сентября 2017 Поделиться Опубликовано 7 Сентября 2017 @_Sk8_AsTeR_ , npc:eat ( npc:object ( "vodka" ) ) 1 Аддон для ОП-2.09.2: Яндекс/Google/GitHub Ссылка на комментарий
Wlad777 24 Опубликовано 8 Сентября 2017 Поделиться Опубликовано 8 Сентября 2017 Даже не знаю, я дурак или что. Пишу формулу в скрипте: 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 И как это понимать, я вас спрашиваю? 2 --------------------------------- www.amk-zone.de Ссылка на комментарий
BossBoroda 7 Опубликовано 8 Сентября 2017 Поделиться Опубликовано 8 Сентября 2017 (изменено) как изменить время исчезание трупов в тч и их одновременное кол во в игре? Изменено 8 Сентября 2017 пользователем BossBoroda Ссылка на комментарий
_Sk8_AsTeR_ 117 Опубликовано 10 Сентября 2017 Поделиться Опубликовано 10 Сентября 2017 Ребят, все еще прошу помощи. Не получается заставить НПС "съесть" водку через диалог. Имеем функцию, которая вызывается через диалог: Скрытый текст 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)" Есть идеи, как таки заставить НПС съесть водку и пофиксить скрипт? Ссылка на комментарий
AndreySol 215 Опубликовано 10 Сентября 2017 Поделиться Опубликовано 10 Сентября 2017 1 час назад, _Sk8_AsTeR_ сказал: self.npc:eat(self.npc:object("vodka")) --НПС должен выпить водку (не работает) self. убери и там и там. 1 час назад, _Sk8_AsTeR_ сказал: dialogs.relocate_item_section(second_speaker, "vodka", "out") second_speaker откуда у тебя взялось? В твоем коде не вижу... И вообще - зачем тебе непосредственное "выпивание" водки неписем ? Толку от этого ноль: эффекта на непися не будет и анимацию он не отыграет. Ссылка на комментарий
_Sk8_AsTeR_ 117 Опубликовано 10 Сентября 2017 Поделиться Опубликовано 10 Сентября 2017 @AndreySol А без self просто выкидывает с ошибкой на этот файл.script А заставить его съесть водку хочу потому что подключен АИ от МОНка, где есть схема "пьянчуга", вроде как НПС должен страдать похмельем, или же вообще упасть и отрубиться. Я копался в этом скрипте и вроде как там написано что если НПС ест водку, то включается схема пьянчуги. А анимацию его через диалог никак не заставить проигрывать, да? Ссылка на комментарий
AndreySol 215 Опубликовано 10 Сентября 2017 Поделиться Опубликовано 10 Сентября 2017 31 минуту назад, _Sk8_AsTeR_ сказал: А без self просто выкидывает с ошибкой на этот файл.script Чевой-то у тебя там по накручено... Попробуй так: ... db.actor:eat(db.actor:object("vodka")) --сами выпиваем водочку (РАБОТАЕТ, мы пьянеем и экран покачивается) second_speaker:eat(second_speaker:object("vodka")) --НПС должен выпить водку (не работает) ... Ссылка на комментарий
naxac 2 447 Опубликовано 11 Сентября 2017 Поделиться Опубликовано 11 Сентября 2017 @_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 Ссылка на комментарий
_Sk8_AsTeR_ 117 Опубликовано 11 Сентября 2017 Поделиться Опубликовано 11 Сентября 2017 (изменено) Да, ты прав. Просто вылет без конкретной ошибки. Слушай, а если вначале создать условную дополнительную функцию (любое название, допустим "РАЗДВАТРИ") распития водки НПСёй, а потом, когда будет вызываться наша главная функция drink_vodka, то в ней будет: 1) передача водки 2) распитие актором другой водки (если водки в инвентаре нет, то актор просто ее не пьет) 3) вызов нашей только что созданной предыдущей функции "РАЗДВАТРИ", где описан процесс распития водки НПСёй Так может сработать? Блин, надеюсь ты меня понял) Изменено 11 Сентября 2017 пользователем _Sk8_AsTeR_ Ссылка на комментарий
_Sk8_AsTeR_ 117 Опубликовано 11 Сентября 2017 Поделиться Опубликовано 11 Сентября 2017 И еще возник вопрос уже по другой теме. Модернизирую "динамические сообщения". Заставляю НПС именно чатиться друг с другом по разным темам. Получается довольно интересно. То есть могут быть по 3-4 сообщения об одной теме. Вот только имена у нпс, отправивших сообщение - просто рандомные имя и фамилия из файлика. То есть отправляют сообщения несуществующие нпс. Отсюда вопрос: А можно сделать так, чтобы отправители сообщения были реальными рандомными нпс? Пытался что-то выдернуть из файла "News_main" из сообщений про торговлю пушками от случайных нпс, но не вышло. Отправитель не отображается, просто пустота вместо имени и фамилии. Или хотя бы есть способ разные рандомные иконки персонажей прикрутить к сообщениям? Хоть как-то сделать этот процесс общения по сталкерской сети немного реалистичнее... Ссылка на комментарий
BossBoroda 7 Опубликовано 11 Сентября 2017 Поделиться Опубликовано 11 Сентября 2017 кто знает как увеличить длительность исчезание трупов и одновременное их нахождение в игре? Ссылка на комментарий
AndreySol 215 Опубликовано 11 Сентября 2017 Поделиться Опубликовано 11 Сентября 2017 2 часа назад, _Sk8_AsTeR_ сказал: просто рандомные имя и фамилия из файлика. То есть отправляют сообщения несуществующие нпс. Отсюда вопрос: А можно сделать так, чтобы отправители сообщения были реальными рандомными нпс? Сделать вместо файла, как я понял, из которого идет выборка имен и погонял, табличку, которую заполнять именами и прозвищами реальных неписей. Затем выборку делать уже из этой таблички. @BossBoroda Цитата как увеличить длительность исчезание трупов Это понял, а вот это Цитата и одновременное их нахождение в игре? не понял. Если память не изменяет, в "чистой" ТЧ вообще нет уборки(исчезания) трупов. По этому уточни - что у тебя там за часть трилогии и мод. Ссылка на комментарий
BossBoroda 7 Опубликовано 11 Сентября 2017 Поделиться Опубликовано 11 Сентября 2017 23 минуты назад, AndreySol сказал: Сделать вместо файла, как я понял, из которого идет выборка имен и погонял, табличку, которую заполнять именами и прозвищами реальных неписей. Затем выборку делать уже из этой таблички. @BossBoroda Это понял, а вот это не понял. Если память не изменяет, в "чистой" ТЧ вообще нет уборки(исчезания) трупов. По этому уточни - что у тебя там за часть трилогии и мод. чистый тч(ну как почти), ну вроде там же трупы исчезают? или это просто их длительность жизни значит? и как ее увеличить ? Ссылка на комментарий
_Sk8_AsTeR_ 117 Опубликовано 11 Сентября 2017 Поделиться Опубликовано 11 Сентября 2017 @BossBoroda выборка имен и прозвищ и так идет из АМКшной таблицы. Но они рандомно сочитабтся друг с другом. А я имею в виду чтобы реально скществующие НПС были авторами сообщений. Повстречали мв под мостом Андрей Штврь сталкера, и вот чтобы этот Андрей Штырь, например, и был автором сообщения Ссылка на комментарий
AndreySol 215 Опубликовано 11 Сентября 2017 Поделиться Опубликовано 11 Сентября 2017 Только что, _Sk8_AsTeR_ сказал: выборка имен и прозвищ и так идет из АМКшной таблицы. Но они рандомно сочетаются друг с другом. Это как понимать ? Только что, _Sk8_AsTeR_ сказал: А я имею в виду чтобы реально существующие НПС были авторами сообщений. Ну так проверь, как вообще заполняется эта "АМКшная" таблица. Что мешает перебрать все объекты в игре, которые являются сталкерами, и заполнить таблицу реально существующими(заспавненными) неписями ? Ссылка на комментарий
dsh 3 824 Опубликовано 11 Сентября 2017 Поделиться Опубликовано 11 Сентября 2017 @BossBoroda если нет уборщика трупов, то движок убирает, ориентируясь на эти параметры corpse_remove_game_time_interval = 12 ; in hours stay_after_death_time_interval = 12 ; in hours 1 dsh mod: https://github.com/dsh2dsh/op2ogse Ссылка на комментарий
naxac 2 447 Опубликовано 12 Сентября 2017 Поделиться Опубликовано 12 Сентября 2017 (изменено) @_Sk8_AsTeR_, нет, и так не сработает. Раздели на два экшена из разных фраз: в первом передаём водку, во втором бухаем. Изменено 12 Сентября 2017 пользователем naxac Аддон для ОП-2.09.2: Яндекс/Google/GitHub Ссылка на комментарий
AndrewMor 529 Опубликовано 12 Сентября 2017 Поделиться Опубликовано 12 Сентября 2017 (изменено) 13 часов назад, BossBoroda сказал: чистый тч(ну как почти), ну вроде там же трупы исчезают? Точно не помню, в каком файле, но что-то связанное с временем исчезновения трупов монстров. Меняешь его - и все трупы (и монстров, и НПС) исчезают либо дольше, либо быстрее. В оригинале время уборки трупов вроде 36 часов. Упс, оказывается dsh уже ответил Изменено 12 Сентября 2017 пользователем AndrewMor Сталкер - наше всё! Ссылка на комментарий
Рекомендуемые сообщения
Создайте аккаунт или авторизуйтесь, чтобы оставить комментарий
Комментарии могут оставлять только зарегистрированные пользователи
Создать аккаунт
Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!
Зарегистрировать новый аккаунтВойти
Есть аккаунт? Войти.
Войти