ColR_iT 171 Опубликовано 3 Февраля 2012 KitkaT.Net, ссылку на статью скинь. И НПС в гулаг не телепортируются. Где заспавнил там и появились, а если НПС на Свалке вписать гулаг на Кордоне, то он ножками туда пойдёт, в этом можно убедиться, если поставить на него метку. Поделиться этим сообщением Ссылка на сообщение
ColR_iT 171 Опубликовано 5 Февраля 2012 (изменено) Кстати, хороший вопрос... Как в ТЧ отследить вхождение в рестриктор НПС? Не какого-то конкретного, а любого. Изменено 5 Февраля 2012 пользователем ColR_iT 1 Поделиться этим сообщением Ссылка на сообщение
ColR_iT 171 Опубликовано 17 Февраля 2012 (изменено) Daniar299 Скриптовый спавн перехода, вот здесь: >>Click Me<<, третий пост. Скриптовый спавн вообще, вот здесь: >>Click Me<< поделитель пожалуйста файлами чужихВо-первых, это что вообще такое? Во-вторых, с подобными вопросами сюда: "Ищу файлы / моды / аддоны" Изменено 17 Февраля 2012 пользователем ColR_iT Поделиться этим сообщением Ссылка на сообщение
ColR_iT 171 Опубликовано 17 Февраля 2012 (изменено) Tris, жаль, что не помогло тебе, потому что мне помогло. Неужели так сложно заглянуть в lua_help.script, что и предлагал Artos, и посмотреть методы для класса sound_object? Раз уж так одолевает лень, то вот он, класс: C++ class sound_object { const looped = 1; const s2d = 2; const s3d = 0; property frequency; property max_distance; property min_distance; property volume; sound_object (string); sound_object (string, enum ESoundTypes); function set_position(const vector&); function stop_deffered(); function get_position() const; function play_no_feedback(game_object*, number, number, vector, number); function play_at_pos(game_object*, const vector&); function play_at_pos(game_object*, const vector&, number); function play_at_pos(game_object*, const vector&, number, number); function stop(); function length(); function play(game_object*); function play(game_object*, number); function play(game_object*, number, number); function playing() const; }; Найти нужные тебе методы поможет переводчик, если с английским не очень, если же всё хорошо, то... ты сможешь найти решение своего вопроса самостоятельно. Удачи! Изменено 17 Февраля 2012 пользователем ColR_iT Поделиться этим сообщением Ссылка на сообщение
ColR_iT 171 Опубликовано 21 Февраля 2012 (изменено) strelok200, мог бы и проверить. Не сложно ведь задать такую логику кому либо и глянуть. А вообще - нет. Если НПС находится под логикой walkerа и стоит он на одной точке, то точка look обязательна. Если же он будет ходить по "кругу" из нескольких точек, то можно и не прописывать. По умолчанию, точка взгляда будет следующая точка пути. Изменено 21 Февраля 2012 пользователем ColR_iT Поделиться этим сообщением Ссылка на сообщение
ColR_iT 171 Опубликовано 22 Февраля 2012 (изменено) strelok200, за тем же зачем и в остальных точках: точках пути, спавна и т.д. и тому подобное. Биться сейвы из-за этого точно не будут. Что это такое можно найти минут за пять воспользовавшись поиском. Daniar299, функция спавн монстра ничем не отличается от спавна того же НПС или же какого-нибудь предмета. Примеры тебе предоставили разработчики в оригинальных файлах. Вооружаешься поиском по словам (выбрать есть из чего) и вперёд на фронт в геймдату. Изменено 22 Февраля 2012 пользователем ColR_iT Поделиться этим сообщением Ссылка на сообщение
ColR_iT 171 Опубликовано 22 Февраля 2012 Daniar299, если прочитать твои два поста, то становится очень не понятно чего тебе нужно. Ты просишь спавн через скрипт и тут же говоришь, что лучше через "алл". Определись с выбором то. Ещё раз повторюсь: функция спавна монстра ничем не отличается от функции спавна НПС, что там, что там тебе нужно прописать секцию и координаты. Если тебе нужно заспавнить моба через all.spawn, то распаковавши его, скопируй похожую, измени номер секции спавна, поправь имя и координаты, и будет тебе счастье. Туторов тьма-тьмущая. Открой хотя бы тот же Stalkerin и изучай. Поделиться этим сообщением Ссылка на сообщение
ColR_iT 171 Опубликовано 25 Февраля 2012 Tris Да и вообще, зачем эти громоздкие конструкции с if ... end? Вот тебе твой же код, только гораздо проще и легче: function object_eat(obj) local sect = obj:section() if db.actor:has_info("wpn_porshein") then db.actor:disable_info_portion("wpn_porshein") iTimer = nil db.actor:restore_weapon() end if sect == "medkit" or sect == "medkit_army" or sect == "medkit_scientic" then db.actor:hide_weapon() random_time() end end function random_time() local random_table_function = math.random(1,5) iTimer = time_global() + (3+2*random_table_function)*1000 db.actor:give_info_portion("wpn_porshein") end function Timer_N_minutes() if iTimer and iTimer < time_global() then iTimer = nil db.actor:disable_info_portion("wpn_porshein") db.actor:restore_weapon() end end Нету кучи проверок, не нужно никаких инициализаций, переменная iTimer принимает нужное тебе значение, в зависимости от того, что тебе выдаст random. Поделиться этим сообщением Ссылка на сообщение
ColR_iT 171 Опубликовано 26 Февраля 2012 (изменено) Ребята, поймал ступор... На Волке проверяю простенький диалог актора из последовательности фраз, без ветвления и каких либо условий на появление диалога/фразы. Собственно вот такой: <dialog id="test_dialog"> <phrase_list> <phrase id="0"> <text>Hello, Wolf!</text> <next>1</next> </phrase> <phrase id="1"> <text>Hello, Shooter! What do you want?</text> <next>2</next> </phrase> <phrase id="2"> <text>I conduct an experiment.</text> <next>3</next> </phrase> <phrase id="3"> <text>Ok! What we do?</text> <next>4</next> </phrase> <phrase id="4"> <text>Now I call the function, then you. I'm, now you!</text> <action>escape_dialog.my_phrase</action> <next>5</next> </phrase> <phrase id="5"> <text>Ok, calling.</text> <action>escape_dialog.my_phrase</action> <next>6</next> </phrase> <phrase id="6"> <text>Nice, thank you.</text> <next>7</next> </phrase> <phrase id="7"> <text>Not at all! Come on, if that.</text> <action>dialogs.break_dialog</action> </phrase> </phrase_list> </dialog> В двух фразах ставлю простенькие проверки: function my_phrase(first_speaker, second_speaker) log1("my_phrase function") local obj_npc if first_speaker:id() == -1 then obj_npc = second_speaker log1("Actor is first_speaker.") else obj_npc = first_speaker log1("Actor is second_speaker.") end end function wolf_phrase(first_speaker, second_speaker) log1("wolf_phrase function") local obj_npc if first_speaker:id() == -1 then obj_npc = second_speaker log1("Actor is first_speaker.") else obj_npc = first_speaker log1("Actor is second_speaker.") end end Т.е. как видно функции идентичны, разное лишь название. Обратите внимание, что первую функцию я вызываю из реплики ГГ, вторую из реплики Волка. Вопрос: почему у меня в консоле вот такое: my_phrase function Actor is second_speaker. wolf_phrase function Actor is second_speaker. Почему в обоих случаях, актор является second_speaker? P.S. log1 использую из X-Ray extension, в качестве нормального вывода в лог. ------------- To strong... Загляни вот в этот пост: пост #100, думаю тебя заинтересует. Изменено 26 Февраля 2012 пользователем ColR_iT Поделиться этим сообщением Ссылка на сообщение
ColR_iT 171 Опубликовано 1 Марта 2012 (изменено) Тема подверглась изменениям. Все нововведения в "шапке". ColR_iT Изменено 1 Марта 2012 пользователем ColR_iT Поделиться этим сообщением Ссылка на сообщение
ColR_iT 171 Опубликовано 12 Марта 2012 Сообщение от модератора ColR_iT Вопрос Viнt@rь и всю суть перенёс в соответствующую тему: [CoP] Ковыряемся в файлах, подобным вопросам там самое место, здесь же без кодов делать нечего... Поделиться этим сообщением Ссылка на сообщение
ColR_iT 171 Опубликовано 13 Марта 2012 (изменено) Artos, извиняюсь за 5 копеек, но боюсь, что Вы оба думаете о разных вещах. Осмелюсь предположить, что AndreySol, хочет именно вкл/выкл фонарик и именно скриптами. Я приблизительно догадываюсь для чего это вообще нужно - батарейки для фонаря, так ведь, AndreySol? Если не ошибаюсь, то фонарик принадлежит классу CTorch, если это так, то набор методов для него скудный и метода вкл/выкл я там не наблюдаю... Изменено 13 Марта 2012 пользователем ColR_iT Поделиться этим сообщением Ссылка на сообщение
ColR_iT 171 Опубликовано 21 Марта 2012 (изменено) Боягуз, а что мешает сделать аналогично? Впиши весь спавн в одину функцию, а затем в начале игры вызови её. Умный_колобок После фразы, вызываешь функцию, которая будет спавнить бутылку водки актору и он тут же её будет выпивать. Спавн делаешь функцией: alife():create ("vodka", db.actor:position(), db.actor:level_vertex_id(), db.actor:game_vertex_id(), db.actor:id()) "Употребить" водку можно функцией: db.actor:eat("vodka") Условия составляешь сам, как тебе нужно. Изменено 21 Марта 2012 пользователем ColR_iT Поделиться этим сообщением Ссылка на сообщение
ColR_iT 171 Опубликовано 22 Марта 2012 (изменено) Боягуз, задание "Убить Стрелка" выдаётся через инфопорцию storyline_actor_start, которую актор получает в начале игры. Допиши к выдачи задания и вызов функции при помощи тегов <action></action>. P.S. Вопрос уже уходит от смысла темы, думаю будет уместным переместится в "ковырялку". [spoiler=To Whisper]Твой вопрос был перемещён в "ковырялку", где ему место. Изменено 22 Марта 2012 пользователем ColR_iT Поделиться этим сообщением Ссылка на сообщение
ColR_iT 171 Опубликовано 27 Марта 2012 (изменено) olaf1 Дело не в том, что вы допускаете много ошибок при написании текста, а в том, что текст этот очень сложно читать, тем самым понять, что именно вам нужно, практически не представляется возможным. Я изначально просил вас писать на родном вам языке, на том которым вы пользуетесь в повседневной жизни. Но даже и это не является проблемой. Есть такая поговорка - "Изобретать велосипед", думаю, не стоит объяснять смысл этой фразы... Так вот вы пытаетесь воспроизвести то, что сделали разработчики и то, чем все прекрасно пользуются. В игре присутствует респавн НПС после их смерти. Да, в большей степени это реализовано для гулагов, но что мешает использовать их? Если на это есть веская причина и единственным решением является использование НПС с их собственной логикой, то Gun12 в последнем своём сообщении дал, возможно, единственное правильное решение того, что вам необходимо. И последнее. Иностранный гость для нас это хорошо, но на форуме существуют правила, одно из которых гласит, что нужно соблюдать правила правописания и это относится не только к русскому языку, но и ко всем остальным, на котором пишут пользователи. Поэтому, я настоятельно рекомендую вам писать грамотнее, в противном случае я вынужден буду наказывать вас согласно предписанным правилам. P.S. В дальнейшем пишите, пожалуйста, ваши вопросы на родном вам языке под одним спойлером, а также перевод на русский язык под другим спойлером, как в данном случае сделал я. Благодарю за понимание. It's not that you are allowing a lot of mistakes when writing text, and that this text is very difficult to read and thus to understand exactly what you need, almost impossible. I originally asked you to write in their native language you on how you use in everyday life. But even this is not a problem. There is a saying - "Re-invent the wheel", I think it is not necessary to explain the meaning of this phrase... So you're trying to reproduce what did the developers and what are all well. The game has NPC respawn after their death. Yes, to a greater extent it is implemented for the gulags, but what prevents you from using them? If this is a good reason and the only solution is to use the NPCs with their own logic, then Gun12 in his latest report gave possibly the only correct decision on what you need. And the last one. A foreign visitor to us is good, but there are rules on the forum, one of which states that it is necessary to comply with the rules of spelling and this applies not only to the Russian language, but also to all others in which users write. Therefore, I urge you to write correctly, otherwise I will have to punish you according to prescribed rules. P.S. In the future, please write your questions in their native language, you are under a spoiler, as well as the Russian translation of a different spoiler, as in this case I did. Thank you for your understanding. Изменено 27 Марта 2012 пользователем ColR_iT Поделиться этим сообщением Ссылка на сообщение
ColR_iT 171 Опубликовано 13 Апреля 2012 (изменено) panzyuza, я конечно не очень понимаю для чего тебе понадобилась новая схема для space_restrictorов, поскольку при помощи уже существующих схем и функций, можно осуществить задуманное, если я правильно понял предназначение. Хоть и не в тему, но позволь дать один небольшой совет... Метод play_sounds уж больно у тебя громоздкий и достаточно расточительный. Все твои проверки можно уместить в две строки: function action_poltergeist:play_sounds() local sSound = [[ambient\under\fear_sound_0]]..math.random(8) ogse.PlaySound(sSound) end При одном маленьком условии: переименуй название твоих .ogg файлов эквивалентно следующей таблице: [[ambient\under\fear_sound_25]] -> [[fear_sound_00]] [[ambient\under\fear_sound_10]] -> [[fear_sound_01]] [[ambient\under\fear_sound_2]] -> [[fear_sound_02]] [[ambient\under\fear_sound_7]] -> [[fear_sound_03]] [[ambient\under\fear_sound_9]] -> [[fear_sound_04]] [[ambient\under\fear_sound_16]] -> [[fear_sound_05]] [[ambient\under\fear_sound_20]] -> [[fear_sound_06]] [[ambient\under\fear_sound_24]] -> [[fear_sound_07]] [[ambient\ugrnd\ugrnd_whispers_2]] -> [[fear_sound_08]] Ну и положи их в одну папку. P.S. Кстати, в твоём случае файл fear_sound_25, никогда проигрываться не будет, поскольку ниже по коду его "затрёт" один из вариантов. Изменено 13 Апреля 2012 пользователем ColR_iT Поделиться этим сообщением Ссылка на сообщение
ColR_iT 171 Опубликовано 8 Июня 2012 Кто подскажет, что это за метод такой чудный - play_no_feedback, у класса sound_object, что при его использовании метод playing, этого же класса, всегда возвращает false, хотя я отчётливо слышу в наушник, как звук проигрывается? И вообще для чего у него аж пять аргументов? В принципе, первый, второй и пятый более менее понятны, а вот остальные для чего? Ну и вдогонку по классу sound_object... Совсем непонятны свойство frequency и метод stop_deffered. У кого какие мысли на счёт них? Поделиться этим сообщением Ссылка на сообщение
ColR_iT 171 Опубликовано 9 Июня 2012 Artos, не очень понял твои слова об "обратной связи". Вот код: if hud:GetCustomStatic("main_task") then --# Определим объект и что будем играть local snd_obj = xr_sound.get_safe_sound_object([[detectors\bomb_timer]]) --# Затычка запуска один раз if varible == 0 then --# Играем звук snd_obj:play_no_feedback(db.actor, sound_object.s2d, 0, vector(), 1) --# "Затыкаем" varible = varible + 1 end get_console():execute("load ~~~ Playing is "..tostring(snd_obj:playing())) end Висит на апдейте актора. Зажимаю Tab - в консоле только false. Если для проигрывания использую метод play: snd_obj:play(db.actor, 0, sound_object.s2d) То пока звук играет выводит true. Так задумано? Поделиться этим сообщением Ссылка на сообщение
ColR_iT 171 Опубликовано 14 Июня 2012 (изменено) _Призрак_, а чем плох метод перевода схемы рестриктора в nil? Их апдейты при этом не работают, схемы - подавно, висят себе в сохранениях... Изменено 14 Июня 2012 пользователем ColR_iT Поделиться этим сообщением Ссылка на сообщение
ColR_iT 171 Опубликовано 20 Июня 2012 (изменено) Tris, свойства для объектов класса game_object работают несколько иначе. Вот такой код: local actor_radiation = db.actor.radiation присвоит переменной actor_radiation текущее значение радиации. А вот такой: db.actor.radiation = 0.1 увеличит текущее значение на 0.1 (отрицательное значение уменьшает текущие значение). Поэтому ты в своём коде к текущему значению радиации прибавляешь ещё столько же плюс 0.00001 (ты вероятно точку не там поставил). Всё это справедливо для всех свойств: health (здоровье), morale (мораль), power (выносливость), psy_health (пси-звдоровье), radiation (радиация), bleeding (кровотечение, только в ЗП). Изменено 20 Июня 2012 пользователем ColR_iT Поделиться этим сообщением Ссылка на сообщение