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

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

Объясните, пожалуйста, как работают скрипты БТРов на Кордоне из АМК мода, хочу по их принципу сделать пулеметы на станке у этих же вояк. Тоесть как в ЧН

Изменено пользователем ShteiN
Ссылка на комментарий

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) длительность времени (в мс реального времени), на протяжении которого вертолёт будет смотреть в данную точку. Если этот параметр не задан, то вертолёт пронесётся без остановки, но постарается на ходу развернуться к этой вершине.

Если заинтересовало, спрашивай у меня где то полная была

Изменено пользователем ColR_iT
Ссылка на комментарий

ClearSky, а как делать принадлежность вертолёта к группировке? как спавнить вертолёт (скриптом и через ACDC)?

 

Kirag, а сила аномалии разве не в zone_.ltx прописывается?и (параметр max_power_start)

Изменено пользователем ColR_iT
Ссылка на комментарий

Люди,а как заспавнить зомби через АСДС?

сколько пробывал,а так и не допёрло :(

Не бойтесь совершенства. Вам его не достичь.
C. Дали
Ссылка на комментарий
Kirag, а сила аномалии разве не в zone_.ltx прописывается?и (параметр max_power_start)

 

Там прописано непонятно что, во всяком случае у меня аномалии на изменение этого параметра не реагируют. Увеличиваю на порядок-другой, а как било еле-еле, так и дальше бьет. Другое дело выставить силу скриптом при спавне, или set_anomaly_power. Эффект зависит от типа аномалии, но в любом случае он ярко выраженный.

Мои работы:

Ночные прицелы + смена ножевого слота

AI вертолетов + ПЗРК

Soul Cube

 

Работаю только с ТЧ. С ковырянием ЧН/ЗП не связываюсь ни в какой форме. Совсем.

Ссылка на комментарий

Влад, раскапывать 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 с огромным радиусом. но ведь на янтаре не так. :)

Изменено пользователем ColR_iT
Ссылка на комментарий
и что за параметр: offset.

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

АГА!!! всё понял. offset позволяет смещать шейп. т.о. можно сделать следующее: входишь в арку церкви на болотах. а там тебе как жарка ******, причём зажгутся сразу все аномалии, расставленные по периметру забора.

Объясни, пожалуйста, подробней. Что значит "позволяет смещать шейп" и от чего аномалии срабатывают все сразу?

Кто весел - тот смеется, кто хочет - тот добьется, кто ищет - тот всегда найдет!

Ссылка на комментарий

IQDDD на Янтаре поставлен обычный рестриктор с share box и логикой [sr_psy_antenna]. Почитай "Настройка логики", там понятно написано.

 

Добавлено через 7 мин.:

Параметр offset отвечает за смещение координат относительно осей. Например если задан shape box, то offset отвечает за поворот этого прямоугольника по осям(соответственно)х,y,z.

Ссылка на комментарий

IQDDD

СПС.

ато научился НПЦ норм спавнить,а вот зомби неврубил как.

 

Влад, так вроде технология одна и та же. Странно.

 

section_name = stalker_zombied

name = yan_zombie_20

 

character_profile = [секция одного из профилей одного из файлов character_desc_[локация].xml]

 

Изменено пользователем Влад
Не бойтесь совершенства. Вам его не достичь.
C. Дали
Ссылка на комментарий

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 мин.:

Влад, так вроде технология одна и та же. Странно.

Изменено пользователем IQDDD
Ссылка на комментарий

Вопрос по скриптам:

Есть Функция:

    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 секунд вызывалась определённая функция, убивающая всех этих неписей.

Изменено пользователем IQDDD
Ссылка на комментарий

Как сделать рандомный (желательно, но не обязательно) спавн НПС за спиной ГГ после какого-либо действия?

Изменено пользователем Отшель[НИК]
  • Нравится 1
Ссылка на комментарий

Отшель[НИК]

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 - секция непися, который спаунится

Изменено пользователем IQDDD
  • Нравится 1
Ссылка на комментарий

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'

Изменено пользователем зомба 2008
Ссылка на комментарий

Не функция, а секция, это совершенно разные вещи. Проверь конфиги, где-то в них ошибка, что-то прописать забыл.

  • Не нравится 1

Мои работы:

Ночные прицелы + смена ножевого слота

AI вертолетов + ПЗРК

Soul Cube

 

Работаю только с ТЧ. С ковырянием ЧН/ЗП не связываюсь ни в какой форме. Совсем.

Ссылка на комментарий

Здраствуйте сталкеры-ветераны! Подскажите пожалуйста новичку, как создать нового нпс и заспаунить его с помощью программы ACDC! Я уж пытался создать но у меня были вылеты...можете пожалуйста поподробнее мне разжевать что делать) заранее спасибо

Разработка Andrew's Pack Mod V0.5..

Ссылка на комментарий

это все обсуждалось в тнеме не раз и не в одной -ну ладно

заспавнить нпс несложно -но сначала нужно решить с какой целью

для начала нужно узнать координаты спавна ,позишн информер-хорошо ,но у него есть маленький недостаток -он не показывает наличие АИ сетки надежнее координатным скриптом

затем распаковыываешь алл спавн(для каждой версии игры и модификаций нужен свой АСДС) и в папке алайф -название уровня добавляешь своего нпс

самое простое -копируешь любой существующий профиль,ставишь в конец и меняешь номер на следующий за последним-меняешь координаты на свои-координаты там прописаны дважды

меняешь наме на свое (потом этому имени нужно дать описание в файлах -конфиг/гемплей/характер дек-описание персонажа(смотри по аналогии с существующими

а вообще это отдельная тема и к примеру файл нпс амк-сдесь класс персонажа)

после костом дата прописывается логика нпс -это или пренадлежность к гулагу и его название или ссылка на файл скрипт в конфигах где тоже прописывается логика нпс если он в гулаг не входит

если персонаж экслюзивный ему можно дать личный номер ИД,еще в конце профиля можно указать здоровье нпс

Ссылка на комментарий

Создайте аккаунт или авторизуйтесь, чтобы оставить комментарий

Комментарии могут оставлять только зарегистрированные пользователи

Создать аккаунт

Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!

Зарегистрировать новый аккаунт

Войти

Есть аккаунт? Войти.

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

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