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 Ссылка на комментарий
ShteiN 0 Опубликовано 16 Мая 2009 Поделиться Опубликовано 16 Мая 2009 (изменено) Объясните, пожалуйста, как работают скрипты БТРов на Кордоне из АМК мода, хочу по их принципу сделать пулеметы на станке у этих же вояк. Тоесть как в ЧН Изменено 16 Мая 2009 пользователем ShteiN Ссылка на комментарий
sasha47007 3 Опубликовано 27 Мая 2009 Поделиться Опубликовано 27 Мая 2009 Как сделать логику вертолёту чтоб он летел за ГГ и атаковал его? Помогите пожалуйста)) Ссылка на комментарий
ClearSky 0 Опубликовано 7 Июня 2009 Поделиться Опубликовано 7 Июня 2009 (изменено) sasha47007, Легче простого!!!! Позволяет летать вертолёту по патрульному пути, регулировать скорость, зависать, стрелять по различным целям. Для схемы должен быть задан path_move – путь, по которому будет летать вертолёт. Он может содержать одну вершину, если нужно, чтоб вертолёт висел на месте. Можно (но не обязательно) задать path_look – путь, в вершины которого вертолет может смотреть. Вершины этих путей могут быть поставлены где угодно в пределах ограничивающего бокса уровня. Они не зависят от ai-nodes. По пути вертолёт летает без учёта связей между вершинами. Он летает от вершины к вершине в порядке возрастания их номера (т.е. в порядке, в котором их поставили на уровень). Вертолёт старается летать точно по вершинам пути. При желании можно сделать ювелирный пролёт под мостом. Вертолёт старается летать как можно быстрее. Пояснение: если ему задать, что в следующей вершине пути он должен иметь скорость 10 м/с, а его максимальная скорость установлена в 30 м/с, то он не станет сразу лететь 10 м/с. Он сначала будет разгоняться вплоть до 30 м/с и только на подлёте к целевой вершине начнёт тормозить с расчётом прибыть в неё имея 10 м/с. Если в вершине пути path_move задан набор флажков, то вертолёт будет смотреть в любую из вершин path_look, в которых задан такой же набор флажков. Поворачиваться к этой точке вертолёт начнёт с предыдущей вершины пути. На данном этапе вертолет не может, зависнув в одном месте, смотреть поочередно в несколько точек path_look Настройки: * engine_sound = true/false (по умолчанию true) Вкл/выкл звук двигателя вертолёта. * invulnerable = true/false (по умолчанию false) Неуязвимость. Если true, вертолёт игнорирует все хиты. * immortal = true/false (по умолчанию false) Бессмертие. Если true, вертолёт получает повреждения, но не умирает. * mute = true/false (по умолчанию false) Отключает универсальные реплики пилотов вертолета. * rocket_delay = msec (время в миллисекундах реального времени) Задержака между пусками ракет. По дефолту берется из ltx (сейчас 1250 мсек) * default_velocity = m/sec (скорость с которой летает вертолет, если не заданы другие параметры) Параметры, задаваемые в именах вершин пути path_move: «e» – (сокр. от enemy) задание врага (цели). Стрелять по этой цели вертолёт начнёт уже в предыдущей вершине. Если значение не задано, то будет стрелять в точку из path_look, которая соответствует данной вершине. Если задано «e=actor» (можно сокращённо «e=a»), то огонь будет вестись по актёру. Если задано «e=число», стрелять будет по объекту со story id равным числу. «w» – (сокр. от weapon) каким оружием стрелять. Возможные значения: w=1 – стрелять только пулемётом; w=2 – стрелять только ракетами. По умолчанию стреляет из всего. «v» - (сокр. от velocity) задание максимальной скорости (в м/с) на участке пути от данной вершины до следующей. Если этот параметр не задан, то умолчание берётся из файла helicopter.ltx. «dv» - (сокр. от destination velocity) задание скорости (в м/с), которую вертолёт должен иметь в момент прибытия в данную вершину. «die» - убить вертолёт. «flame» - начать дымить (как будто подбили). Параметры, задаваемые в именах вершин пути path_look: «e» - работает так же как и в path_move. Разница в том, что стрелять по указанной цели вертолёт начнёт лишь тогда, когда прибудет в вершину пути path_move, которая соответствует данной вершине path_look. «w» – см. такой же параметр для пути path_move. «t» - (сокр. от time) длительность времени (в мс реального времени), на протяжении которого вертолёт будет смотреть в данную точку. Если этот параметр не задан, то вертолёт пронесётся без остановки, но постарается на ходу развернуться к этой вершине. Если заинтересовало, спрашивай у меня где то полная была Изменено 17 Сентября 2011 пользователем ColR_iT Ссылка на комментарий
IQDDD 5 Опубликовано 7 Июня 2009 Поделиться Опубликовано 7 Июня 2009 (изменено) ClearSky, а как делать принадлежность вертолёта к группировке? как спавнить вертолёт (скриптом и через ACDC)? Kirag, а сила аномалии разве не в zone_.ltx прописывается?и (параметр max_power_start) Изменено 17 Сентября 2011 пользователем ColR_iT Ссылка на комментарий
Влад 9 Опубликовано 8 Июня 2009 Поделиться Опубликовано 8 Июня 2009 Люди,а как заспавнить зомби через АСДС? сколько пробывал,а так и не допёрло Мои работы Не бойтесь совершенства. Вам его не достичь. C. Дали Ссылка на комментарий
Kirag 39 Опубликовано 8 Июня 2009 Поделиться Опубликовано 8 Июня 2009 Kirag, а сила аномалии разве не в zone_.ltx прописывается?и (параметр max_power_start) Там прописано непонятно что, во всяком случае у меня аномалии на изменение этого параметра не реагируют. Увеличиваю на порядок-другой, а как било еле-еле, так и дальше бьет. Другое дело выставить силу скриптом при спавне, или set_anomaly_power. Эффект зависит от типа аномалии, но в любом случае он ярко выраженный. Мои работы: Ночные прицелы + смена ножевого слота AI вертолетов + ПЗРК Soul Cube Работаю только с ТЧ. С ковырянием ЧН/ЗП не связываюсь ни в какой форме. Совсем. Ссылка на комментарий
IQDDD 5 Опубликовано 9 Июня 2009 Поделиться Опубликовано 9 Июня 2009 (изменено) Влад, раскапывать ACDC'ом all.spawn умеешь? Да? Тогда в конце файла типа "alife_l07_[локация]" прописываешь: [[номер объекта. ВАЖНО: одинаковых номеров на одной локации быть не должно]] ; cse_abstract properties section_name = stalker_zombied name = yan_zombie_20 position = [i][координаты. например: 217.8,-54.4,32.0][/i] direction = 0,0,0 ; cse_alife_trader_abstract properties money = 5000 character_profile = [секция одного из профилей одного из файлов character_desc_[локация].xml] ; cse_alife_object properties game_vertex_id = [i][gvi][/i] distance = 79.0999984741211 level_vertex_id = [i][lvi][/i] object_flags = 0xffffffbf custom_data = <<END [можно прописать доп. параметры] END ; cse_visual properties visual_name = actors\stalker_zombied\stalker_zombied_4 ; cse_alife_creature_abstract properties g_team = 0 g_squad = 0 g_group = 0 health = 1 dynamic_out_restrictions = dynamic_in_restrictions = upd:health = 1 upd:timestamp = 0 upd:creature_flags = 0 upd:position = -4.18019390106201,-0.0927719995379448,-130.002517700195 upd:o_model = 0 upd:o_torso = 0,0,0 upd:g_team = 0 upd:g_squad = 0 upd:g_group = 0 ; cse_alife_monster_abstract properties upd:next_game_vertex_id = 65535 upd:prev_game_vertex_id = 65535 upd:distance_from_point = 0 upd:distance_to_point = 0 ; cse_alife_human_abstract properties predicate5 = 2,2,2,0,0 predicate4 = 0,1,2,0 ; cse_ph_skeleton properties upd:start_dialog = ; se_stalker properties Добавлено через 12 мин.: Kirag, рассмотрим конфиг аномалии: [zone_field_psychic]:zone_base GroupControlSection = spawn_group_zone $spawn = "zones\base\field_psychic" $def_sphere = 15 ;$prefetch = 16 class = Z_RADIO hit_impulse_scale = .01 effective_radius = 1.00;размер радиуса в процентах от оригинального, где действует зона sound =;zone_mosquito_bald postprocess = postprocess_psychic dof_enabled = true ef_anomaly_type = 3 ef_weapon_type = 15 artefacts = BirthProbability = 0 ;----------- Anomaly settings ----------------------- max_start_power = 0 attenuation = 0.5 period = 1 idle_particles =;zones\zone_electra_idle ;blowout_particles = ;hit_small_particles = damage_fx\burn_creatures ;hit_big_particles = damage_fx\burn_creatures00 ;idle_small_particles = damage_fx\burn_creatures ;idle_big_particles = damage_fx\burn_creatures00 idle_particles_dont_stop = true; ;idle_sound = ambient\fire2;iinoiyiiue caoe ;blowout_sound = anomaly\zhar_blow;ai a?aiy aua?ina(oaa?a) a oaio?a aiiiaeee ;hit_sound = ambient\zhar;ia ia?niia?a, eiaaa oio iieo?aao oeo ;entrance_sound = ambient\zhar;i?e iiiaaaiee iauaeoa a aiiiaee? hit_type = telepatic disable_time = -1;время игнорирования неживого объекта в зоне (-1 если не нужно) disable_time_small = -1;время игнорирования маленького неживого объекта в зоне (-1 если не нужно) disable_idle_time = -1;время отключения idle партиклов ignore_nonalive = true; ignore_small = false; ignore_artefacts = true blowout_light = off idle_light = off awaking_time = 100 blowout_time = 100 accamulate_time = 500 visible_by_detector = on blowout_wind = off shape_transp_color = 200, 200, 0, 60 shape_edge_color = 32, 32, 32, 255 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;рождение артефактов во время срабатывания spawn_blowout_artefacts = off [zone_field_psychic_weak]:zone_field_psychic $spawn = "zones\field_psychic_weak" awaking_time = 100 blowout_time = 100 accamulate_time = 100 ;----------- Anomaly settings ----------------------- max_start_power = 0.064 [zone_field_psychic_average]:zone_field_psychic $spawn = "zones\field_psychic_average" awaking_time = 100 blowout_time = 100 accamulate_time = 100 ;----------- Anomaly settings ----------------------- max_start_power = 0.115 [zone_field_psychic_strong]:zone_field_psychic $spawn = "zones\field_psychic_strong" awaking_time = 100 blowout_time = 100 accamulate_time = 100 ;----------- Anomaly settings ----------------------- max_start_power = 0.166 теперь рассмотрите, чем отличаются секции _weak, _average, _strong теперь возьмите любой другой конфиг. проверьте, что max_start_power в любой аномалии возрастает по лестнице: _weak, _average, _strong теперь откроем acdc: в параметрах любой аномалии есть такая вот штука: max_power = 0 которая наталкивает на мысль, что ранее сила аномалии указывалась в all.spawn, однако потом это изменили. изменять значение на какое-либо другое не пробовал, т.к. пока не до этого. зы: заодно рассмотрим вот это: ; cse_shape properties shapes = shape0 shape0:type = sphere shape0:offset = 0,0,0 shape0:radius = 1.5 есть ещё другие типы шейпов. я видел. но как каждый из них описывать? например, как значит это: shapes = shape0 shape0:type = box shape0:axis_x = 1,0,0 shape0:axis_y = 0,1,0 shape0:axis_z = 0,0,1 shape0:offset = 0,0,0 и что за параметр: offset. ------------------------------ АГА!!! всё понял. offset позволяет смещать шейп. т.о. можно сделать следующее: входишь в арку церкви на болотах. а там тебе как жарка ******, причём зажгутся сразу все аномалии, расставленные по периметру забора. зы1: а как сделать пси-излучение, подобное янтарскому, на другой локации. например, на складах. я понимаю, что можно сделать слабую-слабую zone_field_psychic_very_weak с огромным радиусом. но ведь на янтаре не так. Изменено 17 Сентября 2011 пользователем ColR_iT Ссылка на комментарий
Kostya V 31 Опубликовано 9 Июня 2009 Поделиться Опубликовано 9 Июня 2009 и что за параметр: offset. ------------------------------ АГА!!! всё понял. offset позволяет смещать шейп. т.о. можно сделать следующее: входишь в арку церкви на болотах. а там тебе как жарка ******, причём зажгутся сразу все аномалии, расставленные по периметру забора. Объясни, пожалуйста, подробней. Что значит "позволяет смещать шейп" и от чего аномалии срабатывают все сразу? Кто весел - тот смеется, кто хочет - тот добьется, кто ищет - тот всегда найдет! Ссылка на комментарий
Nazgool 250 Опубликовано 9 Июня 2009 Поделиться Опубликовано 9 Июня 2009 IQDDD на Янтаре поставлен обычный рестриктор с share box и логикой [sr_psy_antenna]. Почитай "Настройка логики", там понятно написано. Добавлено через 7 мин.: Параметр offset отвечает за смещение координат относительно осей. Например если задан shape box, то offset отвечает за поворот этого прямоугольника по осям(соответственно)х,y,z. Ссылка на комментарий
Влад 9 Опубликовано 9 Июня 2009 Поделиться Опубликовано 9 Июня 2009 (изменено) IQDDD СПС. ато научился НПЦ норм спавнить,а вот зомби неврубил как. Влад, так вроде технология одна и та же. Странно. section_name = stalker_zombied name = yan_zombie_20 character_profile = [секция одного из профилей одного из файлов character_desc_[локация].xml] Изменено 9 Июня 2009 пользователем Влад Мои работы Не бойтесь совершенства. Вам его не достичь. C. Дали Ссылка на комментарий
IQDDD 5 Опубликовано 9 Июня 2009 Поделиться Опубликовано 9 Июня 2009 (изменено) Kostya V, короче так: Допустим, что на карте есть две аномалии: одна аномалия с координатами: 215.7,0.4,-45.4, другая - с координтами: 212.7,0.4,-45.4. Мы знаем, что аномалия срабатывает тогда, когда актор попадает в шейп (англ. shape - фигура). Например, ; cse_shape properties shapes = shape0 shape0:type = sphere shape0:offset = 0,0,0 shape0:radius = 1.5 указывает шейп, представленный сферой в центре аномалии в радиусом 1.5. При попадании в эту сферу аномалия активируется. Если мы хотим, чтобы центр сферы был не в центре аномалии, а, например, чуть правее по оси x, то используем offset: ; cse_shape properties shapes = shape0 shape0:type = sphere shape0:offset = -4,0,0 shape0:radius = 1.5 Итак, нам необходимо, чтобы при попадании в аномалию №1 активировалась и аномалия №2. Центр первой аномалии оставляем без изменений, а второй смещаем на 3 единице вправо по оси x. Добавлено через 7 мин.: Влад, так вроде технология одна и та же. Странно. Изменено 9 Июня 2009 пользователем IQDDD Ссылка на комментарий
IQDDD 5 Опубликовано 10 Июня 2009 Поделиться Опубликовано 10 Июня 2009 (изменено) Вопрос по скриптам: Есть Функция: local b local obj[20] local num local pos = vector () local i local community1 local community2 community1 = "sim_default_duty_"..math.random (0,4) community2 = "sim_default_freedom_"..math.random (0,4) b = 7 + math.random (-3,3) for i=1, b do pos = db.actor:position() pos.x = pos.x + 18 + math.random (-4,4) pos.y = pos.y + 2 pos.z = pos.z + math.random(-8,8) obj[i] = alife():create(community1,pos,db.actor:level_vertex_id(),db.actor:game_vertex_id()) end num = b b = 7 + math.random (-3,3) for i=1, b do pos = db.actor:position() pos.x = pos.x - 18 - math.random (-4,4) pos.y = pos.y + 2 pos.z = pos.z + math.random(-8,8) obj [num + i] = alife():create(community2,pos,db.actor:level_vertex_id(),db.actor:game_vertex_id()) end num = num + b Как видим, здесь спавниться отряд чуваков из разных группировок. Созданные объекты запоминаются в obj[]. Их кол-во - в переменную num. Как сделать так, чтобы после 90 секунд вызывалась определённая функция, убивающая всех этих неписей. Изменено 10 Июня 2009 пользователем IQDDD Ссылка на комментарий
Отшель[НИК] 2 Опубликовано 12 Июня 2009 Поделиться Опубликовано 12 Июня 2009 (изменено) Как сделать рандомный (желательно, но не обязательно) спавн НПС за спиной ГГ после какого-либо действия? Изменено 12 Июня 2009 пользователем Отшель[НИК] 1 Ссылка на комментарий
IQDDD 5 Опубликовано 16 Июня 2009 Поделиться Опубликовано 16 Июня 2009 (изменено) Отшель[НИК] function SpawnAfterHead(long,prob,section) if math.random (1,100) < prob then local ArLong = { [0] = 2.5, [1] = 3.5, [2] = 4.5, [3] = 9 } obj = db.actor local dir = vector() local pos = vector() pos = obj:position() dir = obj:direction() pos.x = pos.x - dir.x * ArLong[long] pos.z = pos.z - dir.z * ArLong[long] alife():create(section,pos,db.actor:level_vertex_id(),db.actor:game_vertex_id()) end end prob - вероятность спавна в процентах long - как далеко от спины актора будет спавниться непись (0 - близко, 3 - далеко, 1 и 2 - средне) section - секция непися, который спаунится Изменено 16 Июня 2009 пользователем IQDDD 1 Ссылка на комментарий
зомба 2008 0 Опубликовано 20 Июня 2009 Поделиться Опубликовано 20 Июня 2009 Скажите пожалуйста, за что отвечает функция "separator"? Поиск не помог. Ссылка на комментарий
Push85 5 Опубликовано 20 Июня 2009 Поделиться Опубликовано 20 Июня 2009 зомба 2008, а ты где ее нашел? Ни в ЧН ни ТЧ такой функции нет. Возможно всё, ну или почти всё. Ссылка на комментарий
зомба 2008 0 Опубликовано 20 Июня 2009 Поделиться Опубликовано 20 Июня 2009 (изменено) 8push5, Просто при совмещении Weapon mod v.2.3 и баланса для АМК 1.4.1, выдал лог с вылетом, в котором было написано, что не найдена функция "separator". Вот я и решил спросить. Вот этот лог: FATAL ERROR [error]Expression : fatal error [error]Function : CInifile::r_section [error]File : E:\stalker\patch_1_0004\xrCore\Xr_ini.cpp [error]Line : 342 [error]Description : <no expression> [error]Arguments : Can't open section 'separator' Изменено 20 Июня 2009 пользователем зомба 2008 Ссылка на комментарий
Kirag 39 Опубликовано 20 Июня 2009 Поделиться Опубликовано 20 Июня 2009 Не функция, а секция, это совершенно разные вещи. Проверь конфиги, где-то в них ошибка, что-то прописать забыл. 1 Мои работы: Ночные прицелы + смена ножевого слота AI вертолетов + ПЗРК Soul Cube Работаю только с ТЧ. С ковырянием ЧН/ЗП не связываюсь ни в какой форме. Совсем. Ссылка на комментарий
andrewrap 1 Опубликовано 30 Июня 2009 Поделиться Опубликовано 30 Июня 2009 Здраствуйте сталкеры-ветераны! Подскажите пожалуйста новичку, как создать нового нпс и заспаунить его с помощью программы ACDC! Я уж пытался создать но у меня были вылеты...можете пожалуйста поподробнее мне разжевать что делать) заранее спасибо Разработка Andrew's Pack Mod V0.5.. Ссылка на комментарий
gruber 2481 Опубликовано 30 Июня 2009 Поделиться Опубликовано 30 Июня 2009 это все обсуждалось в тнеме не раз и не в одной -ну ладно заспавнить нпс несложно -но сначала нужно решить с какой целью для начала нужно узнать координаты спавна ,позишн информер-хорошо ,но у него есть маленький недостаток -он не показывает наличие АИ сетки надежнее координатным скриптом затем распаковыываешь алл спавн(для каждой версии игры и модификаций нужен свой АСДС) и в папке алайф -название уровня добавляешь своего нпс самое простое -копируешь любой существующий профиль,ставишь в конец и меняешь номер на следующий за последним-меняешь координаты на свои-координаты там прописаны дважды меняешь наме на свое (потом этому имени нужно дать описание в файлах -конфиг/гемплей/характер дек-описание персонажа(смотри по аналогии с существующими а вообще это отдельная тема и к примеру файл нпс амк-сдесь класс персонажа) после костом дата прописывается логика нпс -это или пренадлежность к гулагу и его название или ссылка на файл скрипт в конфигах где тоже прописывается логика нпс если он в гулаг не входит если персонаж экслюзивный ему можно дать личный номер ИД,еще в конце профиля можно указать здоровье нпс Ссылка на комментарий
Рекомендуемые сообщения
Создайте аккаунт или авторизуйтесь, чтобы оставить комментарий
Комментарии могут оставлять только зарегистрированные пользователи
Создать аккаунт
Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!
Зарегистрировать новый аккаунтВойти
Есть аккаунт? Войти.
Войти