Svoboда 3 Опубликовано 23 Апреля 2009 Поделиться Опубликовано 23 Апреля 2009 Тема для обсуждения скриптов всего и всех в серии игр STALKER. Задавая вопрос (!): 1. Внимательно изучите суть вопроса. Вопрос должен соответствовать выбранной Вами темы. Это поможет сохранить порядок и читабельность темы, а также облегчит поиск и понимание сего; 2. Изучите то, что уже есть в теме (пролистайте "руками", воспользуйтесь поиском на форуме); 3. Изучите информацию которая может вам помочь: Stalkerin. Там есть много хороших статей касательно данной темы.Уроки по модостроению. Есть рабочие примеры готовых скриптов различного назначения. Справочное руководство по языку Lua 5.1https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/ruСправочник по функциям и классам. Собрано много информации по функциям и классам, не всем, но по основные сведения предоставлены. Логика со вступлением и четырьмя частями: ВступлениеЧасть перваяЧасть втораяЧасть третьяЧасть четвертая. Smart_terrain (в простонароде - гулаг)Интересный способ настроики логики для гулаговСкриптовая часть игровой логики 4. Дабы не превращать обсуждение в "кашу" разной информативной направленности, задавайте несколько вопросов по порядку (в разных постах) после того, как получите ответ на предыдущий вопрос; 5. "Спасибо" и тому подобное - будьте так любезны в ПМ. Если не любите писать в ПМ, в конце вопроса напишите фразу: "Заранее спасибо!" - или что-то в этом духе; 6. ПОЖАЛУЙСТА! Указывайте, для какой игры Вам необходима информация (ТЧ, ЧН, ЗП), если стоит мод - укажите название мода; 7. Если Вы что-то сделали и результат не такой, какой Вами задумывался, то, пожалуйста, приводите коды которые Вы изменяли/писали целиком! Это поможет другим правильно ответить на Ваш вопрос, а также оградит Вас от лишней писанины. 8. Оформляйте сообщение. Пользуйтесь тегами для того, чтобы отделить код от текста. Пишите грамотно - ПОЛЬЗУЙТЕСЬ ЗНАКАМИ ПРЕПИНАНИЯ. 9. И помните: «Правильно заданный вопрос – половина ответа». Какие вопросы следует задавать, а какие нет... Задавайте вопросы, которые касаются непосредственно скриптов и их работы, т.е. Вы что-то делаете, а у Вас что-то не получается, при этом у Вас на руках должен быть хотя бы какой-то код, свидетельствующий о Вашей причастности к вопросу. Вопросы которые будут удалятся, следовательно их задавать не нужно:-- Где находится та или иная функция? Для ответа используем поиск по словам среди файлов оригинальной игры или мода, если объект поиска относится к нему, при помощью программы, которая Вам наиболее симпатизирует;-- Как сделать что-то/то-то? С подобными вопросами, либо в "ковырялки", где Вам вероятнее всего так же не ответят, либо выдвигаем мысли, подкреплённые теорией, практикой (идеальный вариант) и здравым рассудком;-- Вопросы со смыслом: "сделайте", "совместите" и подобными глаголами повелительного наклонения.-- К тому же удалению будут подвергаться вопросы, в которых масштабно не используются теги, для отделения кода и цитат от основного текста, а также не вписан в спойлер код размером превышающие семь строк.Ответ на возможно возникший вопрос: В какую тему можно обратиться по поводу логики и спавна объектов? В тему "ковырялок" соответствующей версии игры, для которой Вы задаёте вопрос. И последнее: очень рекомендовано к прочтению Правила форума 1 2 Ссылка на комментарий
abramcumner 1 229 Опубликовано 28 Июня 2011 Поделиться Опубликовано 28 Июня 2011 (изменено) А я думал, все используют старый метод, когда просто НПС поворачивается от аномалии. Спасибо за ответ. Надо будет глянуть, правда не совсем понятно как из аномалии in\out рестрикторы выдрать. ничего выдирать не надо. Все аномалии унаследованы от рестриктора. Просто передаешь таблицу из нужных аномалий в функцию и все. Посмотри как используется в АМК или в описании функций Маландринуса. Понятие in, out применяется уже к НПЦ. В in-рестрикторы НПЦ нельзя заходить, Из out-рестрикторов выходить. (Вроде так - лучше уточнить - все время путаю). То есть аномалии добавляются только в тот тип рестрикторов, куда нельзя входить. Обход без рестрикторов был в первых версиях у Red75, и то он потом на рестрикторах сделал, все остальные обходы делались на рестрикторах Суть в том, что хочу перед вызовом функции пустить счётчик, а после вызова функции остановить и глянуть, сколько времени прошло после вызова функции. Специально для этого есть класс в lua_help profile_timer. Изменено 28 Июня 2011 пользователем abramcumner Ссылка на комментарий
panzyuza 53 Опубликовано 28 Июня 2011 Поделиться Опубликовано 28 Июня 2011 (изменено) А так через xr_conditions можно передать параметры? function time_ust(t1,t2) local t1 = p[1] local t2 = p[2] return level.get_time_hours() >= t1 and level.get_time_hours() <= t2 end А параметр так [smart_terrains] esc_lager = {=time_ust(6,8)} Изменено 28 Июня 2011 пользователем panzyuza AVS_LOCATION_MOD Ссылка на комментарий
*Shoker* 322 Опубликовано 28 Июня 2011 Поделиться Опубликовано 28 Июня 2011 (изменено) Да, но немного по другому, в function time_ust(t1,t2) если я не ошибаюсь нужно писать так: function time_ust(actor, npc, p) t1 = p[1] t2 = p[2] А в esc_lager = {=time_ust(6,8)} заменить на esc_lager = {=time_ust(6:8)} abramcumner Спасибище! Изменено 28 Июня 2011 пользователем *Shoker* Можно просто Shoker, форум АМК съел моё старое имя и не хочет отдавать о_О Мастер аномалий на свою заднюю точку. Ссылка на комментарий
SibireaStalker 0 Опубликовано 30 Июня 2011 Поделиться Опубликовано 30 Июня 2011 Может не в тему конечно... В билдах есть такая консольная команда jump_to_level. Можно ли её как-нибудь в ЗП возродить? Я Повелитель не очень люблю - он у меня очень много времени сжирает Выводы модмейкера: 1)Вылетает - это хорошо. Значит, работает 2) Если хочешь сделать что-то хорошо, делай сам! 3) Если падёшь духом, падёт и мод. 4) Он живой... Ссылка на комментарий
strelok200 0 Опубликовано 30 Июня 2011 Поделиться Опубликовано 30 Июня 2011 Дайте скриптовую функцию : Возможность наладить отношение с кланами за деньги. В солянке вроде была Создаю глобальный мод с новыми локациямЭ Ссылка на комментарий
serega-gamer 0 Опубликовано 1 Июля 2011 Поделиться Опубликовано 1 Июля 2011 Привет всем народ пытаюсь совместить 2 мода Helicopter AI+PZRK и Stories revival mod v0.6 подскажите пожалуйста ка бы мне совместить эти функции в _g скрипте function printf(fmt,...) log(string.format(fmt,...)) end function qqq(n) local scr = true local con = true local k = "debug data QQQ "..tostring(n) if scr then news_manager.send_tip(db.actor, k, nil, nil, 5000) end if con then get_console():execute ("load "..k) get_console():execute ("flush") end end function parse_data(str) local string_parts = {} if str == nil then string_parts[1] = nil return string_parts end local str_beg,str_end str_end = str local split_pos = find_split_pos(str_end) while split_pos ~= nil do str_beg, str_end = split_string(str_end,split_pos) table.insert(string_parts,str_beg) split_pos = find_split_pos(str_end) end table.insert(string_parts,str_end) return string_parts end function find_split_pos(str) local split_pos = string.find(str,",") if split_pos == nil then return nil end local br1_pos = string.find(str,"(",1,true) local br2_pos = string.find(str,")",1,true) if br1_pos ~= nil and br2_pos ~= nil and br1_pos < br2_pos and split_pos > br1_pos then local str_end1 = string.sub(str,(br2_pos +1),string.len(str)) if string.find(str_end1,",") ~= nil then split_pos = br2_pos + string.find(str_end1,",") else split_pos = nil end end return split_pos end function split_string(str,split_pos) local str_beg = (string.sub(str,1,split_pos-1)) local str_end = string.sub(str,(split_pos+1),string.len(str)) return str_beg,str_end end и function printf(fmt,...) -- local arg={...} -- if arg==nil or arg[0]==nil then -- mylog(fmt) -- else -- mylog(string.format(fmt,...)) -- end end local bufferedmessages={} function mylog(msg) -- if db and db.actor then -- if bufferedmessages then -- for k,v in ipairs(bufferedmessages) do -- db.actor:give_game_news(v, "ui\\ui_iconsTotal", Frect():set(0,0,100,100), 0, 15000) -- end -- bufferedmessages=nil -- end -- db.actor:give_game_news(msg, "ui\\ui_iconsTotal", Frect():set(0,0,100,100), 0, 15000) -- else -- table.insert(bufferedmessages,msg) -- end end Добавлено через 2 мин.: Забыл сказать первый код из Helicopter AI+PZRK ну а второй я думаю понятно откуда Строгое предупреждение от модератора kokkai Большие массивы прячем под спойлер Реклама любых модов бесплатно на моём сайте писать в личку Ссылка на комментарий
Gektor 0 Опубликовано 1 Июля 2011 Поделиться Опубликовано 1 Июля 2011 День добрый. Подскажите пожалуста, можно ли в зове припяти прописать аним поинту через логику другую анимацию? если да то как? Заранее спасибо. Команда ReWrite Team. От сталкера отошли. Пересели за другую платформу. Ссылка на комментарий
Clayman 104 Опубликовано 1 Июля 2011 Поделиться Опубликовано 1 Июля 2011 Gektor, можно конечно, секция будет выглядеть так: [animpoint@нужное_название] cover_name = название_смарт_кавера avail_animations = sleep; - название нужной анимации. А вот можно ли в такой секции прописывать звуки, которые будет издавать нпс и как это сделать хотелось бы и мне узнать. Ссылка на комментарий
Gektor 0 Опубликовано 1 Июля 2011 Поделиться Опубликовано 1 Июля 2011 Clayman, почемуто не срабатывает. Для того чтобы сработало в самом смарт_кавере не должно быть анимок прописано? Или я гдето в логике накосячил? [logic@esc_vishka_animp_1] active = animpoint@esc_vishka_animp_1 suitable = true prior = 100 [logic@esc_vishka_animp_2] active = animpoint@esc_vishka_animp_2 suitable = true prior = 90 [logic@esc_vishka_animp_3] active = animpoint@esc_vishka_animp_3 suitable = true prior = 90 [animpoint@esc_vishka_animp_gen] avail_animations = sit_ass use_camp = true meet = meet@esc_vishka_animpoint_meet [meet@esc_vishka_animpoint_meet] close_anim = nil close_victim = nil far_anim = nil far_victim = nil close_distance = 0 far_distance = 0 use = {=actor_enemy} false, {=dist_to_actor_le(3)} true, false snd_on_use = {!dist_to_actor_le(3)} nil meet_on_talking = false [animpoint@esc_vishka_animp_1]:animpoint@esc_vishka_animp_gen cover_name = esc_vishka_lager_animpoint_1 avail_animations = sit_ass [animpoint@esc_vishka_animp_2]:animpoint@esc_vishka_animp_gen cover_name = esc_vishka_lager_animpoint_2 avail_animations = sit_ass [animpoint@esc_vishka_animp_3]:animpoint@esc_vishka_animp_gen cover_name = esc_vishka_lager_animpoint_3 avail_animations = sit_ass Команда ReWrite Team. От сталкера отошли. Пересели за другую платформу. Ссылка на комментарий
_Призрак_ 11 Опубликовано 1 Июля 2011 Поделиться Опубликовано 1 Июля 2011 Оставь код из Helicopter AI+PZRK И добавь функцию function mylog(msg) end И будет тебе счастье Freedom Ссылка на комментарий
panzyuza 53 Опубликовано 1 Июля 2011 Поделиться Опубликовано 1 Июля 2011 а можно ли скриптово вывести худ предмета? AVS_LOCATION_MOD Ссылка на комментарий
7.9 174 Опубликовано 1 Июля 2011 Поделиться Опубликовано 1 Июля 2011 Если 3DHUD, то 10 из 9 - нет. Если 2DHUD - чуть позже будет "почти" полноценная система... Пока можешь попробовать прототип (file.qip.ru/file/120871441/4910c4e0/docviewer_v203.html) - не совсем худ, но внешний вид... Хотя, - смотря, что именно требуется... всё легко Ссылка на комментарий
Clayman 104 Опубликовано 2 Июля 2011 Поделиться Опубликовано 2 Июля 2011 Gektor, а что конкретно не срабатывает? НПС вообще под логику не берется или анимпоинт занимает, но нужную анимацию не играет? Да и еще, это ты случайно не посиделки-болталки у костра пытаешься делать? Ссылка на комментарий
Gektor 0 Опубликовано 2 Июля 2011 Поделиться Опубликовано 2 Июля 2011 Аним поинт занимает, но нужную анимацию, установленую в логике, не отыгрывает. Да, пытаюсь сделать посиделки у костра. Вот только сидят они у меня на воздухе. Команда ReWrite Team. От сталкера отошли. Пересели за другую платформу. Ссылка на комментарий
Clayman 104 Опубликовано 2 Июля 2011 Поделиться Опубликовано 2 Июля 2011 (изменено) Ну, для начала, чтобы в ЗП была анимация sit_ass я устанавливал скрипты от комрада nuclia. Для посиделок у костра, логику не нужно писать, достаточно поставить анимпоинты с установленной анимацией и накрыть это дело камп-зоной, тогда нпс будут в смарте автоматом как работы занимать эти анимпоинты и травить истории и лабать тяжелый рок на гитаре Цитирую урок от Nuclia: Смарт-каверы в ЗП. Применяются в основном в двух случаях: 1.- вместо точек путей в логике эксклюзивов. 2.- для кампов - посиделки у костра. Начнем с посиделок.Добавим в олл.спавн в зону нужного нам смарт-террейна несколько смарт-каверов и камп-зону "alife_zaton.ltx" [20001] ; cse_abstract properties section_name = camp_zone name = zat_a1_camp position = 241.788421630859,14.009066619873,467.594360351563 direction = 0,0,0 ; cse_alife_object properties game_vertex_id = 6 distance = 0 level_vertex_id = 1382565 object_flags = 0xffffff3e custom_data = <<END [camp] cfg = scripts\camp.ltx END ; cse_shape properties shapes = shape0 shape0:type = sphere shape0:offset = 0,0,0 shape0:radius = 5.84479999542236 ; cse_alife_space_restrictor properties restrictor_type = 3 [20002] ; cse_abstract properties section_name = smart_cover name = zat_a1_animpoint_1 position = 241.788421630859,14.009066619873,466.594360351563 direction = 0,3.13,0 ; cse_alife_object properties game_vertex_id = 6 distance = 0 level_vertex_id = 1382565 object_flags = 0xffffffbf ; cse_shape properties shapes = shape0 shape0:type = sphere shape0:offset = 0,0,0 shape0:radius = 2 ; cse_smart_cover properties cse_smart_cover__unk1_sz = animpoint_sit_low cse_smart_cover__unk2_f32 = 0 enter_min_enemy_distance = 15 exit_min_enemy_distance = 10 ; se_smart_cover properties last_description = animpoint_sit_low loopholes = animpoint_sit_low,1 [20003] ; cse_abstract properties section_name = smart_cover name = zat_a1_animpoint_2 position = 240.788421630859,14.009066619873,468.594360351563 direction = 0,0,0 ; cse_alife_object properties game_vertex_id = 6 distance = 0 level_vertex_id = 1382565 object_flags = 0xffffffbf ; cse_shape properties shapes = shape0 shape0:type = sphere shape0:offset = 0,0,0 shape0:radius = 2 ; cse_smart_cover properties cse_smart_cover__unk1_sz = animpoint_sit_low cse_smart_cover__unk2_f32 = 0 enter_min_enemy_distance = 15 exit_min_enemy_distance = 10 ; se_smart_cover properties last_description = animpoint_sit_low loopholes = animpoint_sit_low,1 [20004] ; cse_abstract properties section_name = smart_cover name = zat_a1_animpoint_3 position = 242.788421630859,14.009066619873,468.594360351563 direction = 0,0,0 ; cse_alife_object properties game_vertex_id = 6 distance = 0 level_vertex_id = 1382565 object_flags = 0xffffffbf ; cse_shape properties shapes = shape0 shape0:type = sphere shape0:offset = 0,0,0 shape0:radius = 2 ; cse_smart_cover properties cse_smart_cover__unk1_sz = animpoint_sit_low cse_smart_cover__unk2_f32 = 0 enter_min_enemy_distance = 15 exit_min_enemy_distance = 10 ; se_smart_cover properties last_description = animpoint_sit_low loopholes = animpoint_sit_low,1 Все - лагерь для посиделок готов, собираем все с предыдущими наработками. Важный момент - шейп камп-зоны должен покрывать смарт-каверы, иначе получатся слишком скучные посиделки - не будут травить анекдоты и прочее. За направление взгляда отвечает дирекшн смарт-кавера. Попробуй сделать пока так, с анимацией sit_low. Добавлено через 1 мин.: А если висят в воздухе, значит координаты смарт-кавера неправильные. Изменено 2 Июля 2011 пользователем Clayman Ссылка на комментарий
Gektor 0 Опубликовано 2 Июля 2011 Поделиться Опубликовано 2 Июля 2011 Ну собственно именно эта анимка была прописана в самом смарт кавере . Вопрос как раз и был в том чтоба прописать через логику анимку не из списка СДК. Выходит без шаманства со скриптами смарт каверов никак нужную анимку не проткнеш? Я так понял, что анимки логика смарт кавера черпает из state_mgr_animstate_list_animpoint.script и state_mgr_animation_list_animpoint.script так? И именно по этому игра не находит анимки и ставит ту что в смарт кавере? А можно ли гдето ковырнуть, чтобы туда и из остальных файлов со списками анимок бралось? если да то как? Команда ReWrite Team. От сталкера отошли. Пересели за другую платформу. Ссылка на комментарий
Clayman 104 Опубликовано 2 Июля 2011 Поделиться Опубликовано 2 Июля 2011 Да нет же, все работает. Шаманство со скриптами нужно чтобы добавить в анимпоинты недостающие анимации. А чтобы использовать стандартные из файла state_lib.script достаточно сделать секцию логики как я выше писал. И неважно что прописано в настройкахх смарт-кавера в сдк (аллспавне). Вот пример простейшей логики, я сделал научника в лагере новичков на кордоне, который днем бродит вокруг аномалии с детектором а ночью идет спать в лагерь новичков. Для дневной работы сделал обычный путь, а для сна что-то лень было ставить вей-поинт, ткнул смарт-кавер в нужном месте (анимация в сдк прописана любая, вроде sit_low). [logic@esc_sci] suitable = {=check_npc_name(esc_sci)} active = walker@esc_sci prior = 100 [walker@esc_sci] path_walk = walker_1_walk path_look = walker_1_look on_info = {!is_day} animpoint@esc_sci [animpoint@esc_sci] cover_name = esc_sci_sleep_smart_cover avail_animations = sleep on_info = {=is_day} walker@esc_sci И все работает. Ну на самом деле это я упрощенный вариант привел, там у меня еще секции на случай выбросов добавлены, куды ему бежать, секции [meet], но в таком виде все должно работать. Ссылка на комментарий
panzyuza 53 Опубликовано 2 Июля 2011 Поделиться Опубликовано 2 Июля 2011 просто есть худ детектора,что ни пробовал,при активации в слоте худа нет.Переделал как оружие,худа нет.Вот может через скрипт можно? AVS_LOCATION_MOD Ссылка на комментарий
Влад 9 Опубликовано 2 Июля 2011 Поделиться Опубликовано 2 Июля 2011 Как получить список файлов из конкретной папки? Мои работы Не бойтесь совершенства. Вам его не достичь. C. Дали Ссылка на комментарий
Gektor 0 Опубликовано 2 Июля 2011 Поделиться Опубликовано 2 Июля 2011 И тем не менее, эти подлые личности отказались принимать анимацию прописаную таким методом, как переходили в sit_low так и переходят. Команда ReWrite Team. От сталкера отошли. Пересели за другую платформу. Ссылка на комментарий
Рекомендуемые сообщения
Создайте аккаунт или авторизуйтесь, чтобы оставить комментарий
Комментарии могут оставлять только зарегистрированные пользователи
Создать аккаунт
Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!
Зарегистрировать новый аккаунтВойти
Есть аккаунт? Войти.
Войти