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

Внимание. На форуме проводятся технические работы с боковым меню.

_Val_ _Val_

[SoC] Ковыряемся в файлах


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

Ну я же и говорила:

2 часа назад, Купер сказал:

Существует мнение

Если уж:

Цитата

В движке не вижу

В таком случае поясните мне такой параметр:

min_wound_size = 0.0256  ;минимальный размер раны, после которого она считается зажившей

Точнее - а как вообще считается размер раны?

Изменено пользователем Змея

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

@Han Sola, можно, например, проверять на апдейте, какое оружие находится у ГГ в соответствуюшем слоте, потом проверять броник, и, если не соответствует, ронять ствол или убирать в рюкзак..





  local wpn = db.actor:item_in_slot(1)

  if wpn and wpn:section() == "wpn_pm" then

    local outfit = db.actor:get_current_outfit()

    if not (outfit and outfit:section() == "novice_outfit") then

      db.actor:drop_item(wpn)

      news_manager.send_tip(db.actor, "Для использования ПМ нужно надеть куртку новичка.")

    end

  end

  • Спасибо 1
  • Полезно 2

Аддон для ОП-2.09.2: Яндекс/Google/GitHub/Тема на AP-PRO

naxac.gif

@naxac, здравствуй, как я вижу - код можно переделать под использование шлемов, что бы одевались лишь с некоторыми костюмами не имеющими встроенных шлемов. А не подскажешь ли как в строчке

if not (outfit and outfit:section() == "novice_outfit") then

прописать не один броник а несколько, что бы проверялось наличие одного из них в слоте.

П.с. Я примерно представляю как это делается но синтаксис вещь такая, если в форуме за грамматические ошибки ещё можно словить предупреждение то движок - админ строгий, чуть что сразу бан, то есть вылет:grin2:

Изменено пользователем UriZzz

 Моя нычка, Нычка в арендованном у Опричника холодильнике  

Мы хорошие ребята, жаль патронов маловато:):ukostra:

UriZzz.gif

@UriZzz, сделай ссылку в этой функции на другие функции,  в которых будут прописаны условия для разных комбезов.

 

andreyholkin.gif

rod_cccp.gif

 

Может быть так?

if not (outfit and outfit:section() == "novice_outfit") then.....

elseif not (outfit and outfit:section() == "novice_outfit_m1") then...

.В одной функции без ссылок на другие.

ЗЫ. Ага - не сообразила, через таблицу лучше))

Изменено пользователем Змея
  • Согласен 1

@UriZzz, не могу проверить работоспособность, но синтаксис точно правильный.

В таблице нужно указать НЕ совместимые броники и оружие.

Скрытый текст

local wpn_outfit_tbl = {
	["wpn_pm"] = {
		["novice_outfit"] = true,
		["следующий_броник"] = true
		},
	["следующий ствол"] = {
		["novice_outfit"] = true,
		["следующий_броник"] = true
		}
}

function wpn_for_outfit()
	local wpn = db.actor:item_in_slot(1)
	local wpn_sc = (wpn and wpn:section()) or "nil"
	if wpn_outfit_tbl[wpn_sc] then
		local outfit = db.actor:get_current_outfit()
		local outfit_sc = (outfit and outfit:section()) or "nil"
		if wpn_outfit_tbl[wpn_sc][outfit_sc] then
			db.actor:drop_item(wpn)
			news_manager.send_tip(db.actor, "Это оружие невозможно использовать в этой броне!")
		end
	end
end

 

 

  • Спасибо 1
  • Согласен 1

S.T.A.L.K.E.R. CoP Objects  >200 шт  (upd 21.05.26) - Скачать  (Яндекс-диск)

@WinCap, то есть правильно ли я понял: тут в функцие wpn_outfit_tbl ,  под "wpn_pm" пишутся броники которые НЕ можно носить вместе с ПМ, да?

  • Согласен 1

 Моя нычка, Нычка в арендованном у Опричника холодильнике  

Мы хорошие ребята, жаль патронов маловато:):ukostra:

UriZzz.gif

@naxac, можешь помочь? Мне нужна функция: если одет комбинезон, даём один поршень и забираем второй, если не надет - забираем один поршень и даём второй.
Вот моя функция:


function check_exo()
local outfit = db.actor:item_in_slot(6)
if outfit and outfit:section() == "last_day_outfit" then
db.actor:give_info_portion("swa_last_day_friend")
db.actor:disable_info_portion("swa_last_day_enemy")
else
db.actor:give_info_portion("swa_last_day_enemy")
db.actor:disable_info_portion("swa_last_day_friend")
end
end


Подхожу к нпс, не стреляет, снимаю костюм - стреляет, уже хорошо, но когда надеваю костюм ничего не происходит, нпс так и стреляет.
Вот ещё это исправить и всё отлично будет...

Нужен 3D-артист для правок геометрии локаций.
Кто может помочь - пишите в ЛС.

@Houdini_one, если я не ошибаюсь, тут косяк логики - если ты для нпс стал врагом, он на тебя обижен,

даже после выдачи поршня - "друг", ему нужно время "забыть обиду", тут либо перезагрузка нужна,

либо чтоб нпс потерял тебя из виду, на какое-то время

 

12 часов назад, ted.80 сказал:

тут косяк логики

Косяка тут нет, все соответствует принципам работы ИИ движка: НПС работает под логикой, в которой ему запрещено агриться на ГГ. Выдаем инфо-порцию, после которой ГГ становится врагом - НПС тут же выходит из под логики, и отрабатывает боевку под прямым управлением движка. Выдаем инфо-порцию, которая должна опять примирить непися с ГГ, но он то находится под прямым управлением движка, и логика, прописанная ему, пока не работает. А если скрыться из виду этого НПСа на определенное время, то движок отпускает его из боевки и опять начинает работать логика - и уже можно спокойно гулять рядом с неписем.

  • Согласен 1

@Houdini_one, в этой функции всё нормально.

Как используются swa_last_day_friend и swa_last_day_enemy?

S.T.A.L.K.E.R. CoP Objects  >200 шт  (upd 21.05.26) - Скачать  (Яндекс-диск)

@AndreySol, странная у ботов логика, был враг, ушел, сделал добро группировке, пришел и непись друг. Ага, я бы плевать хотел на приказы с выше, если меня этот чел пытался убить, а потом тот отмазался у начальника по возвращении, будь я ботом, был бы ГГ трупом 100%.

 

Вообще по-уму, надо каждому нпс, делать индивидуальную группировку. А там уже на уровне группировок, делать надстройку, в виде еще одной таблицы.

Изменено пользователем Expropriator
  • Смешно 2
  • Сочувствую 1
  • Сомнительно 1

andreyholkin.gif

rod_cccp.gif

 

@UriZzz,

В 03.08.2018 в 22:35, UriZzz сказал:

А не подскажешь ли как в строчке


if not (outfit and outfit:section() == "novice_outfit") then

прописать не один броник а несколько,

Можно сделать табличку с брониками и проверять, есть ли там тот, что надет на гг.

 

local outfits = {

  ["novice_outfit"] = true,

  ["stalker_outfit"] = true

}

...

if not ( outfit and outfits[outfit:section()] ) then

Изменено пользователем naxac
  • Спасибо 1

Аддон для ОП-2.09.2: Яндекс/Google/GitHub/Тема на AP-PRO

naxac.gif

@WinCap ,смотри:

[logic]

active = walker

combat_ignore = combat_ignore

 

[walker]

path_walk = swa_last_day_kvest_1_walk

path_look = swa_last_day_kvest_1_look

combat_ignore_cond = always

on_info = {+swa_last_day_enemy} walker@2

 

[walker@2]

path_walk = swa_last_day_kvest_1_walk

path_look = swa_last_day_kvest_1_look

on_info = {+swa_last_day_friend} walker

 

Пробовал выходить за пределы алайфа нпс - всё так же палят по мне.

Нужен 3D-артист для правок геометрии локаций.
Кто может помочь - пишите в ЛС.

@Houdini_one,  как и говорили выше - оверрайд

combat_ignore_cond = always

работает только под логикой. Если до перехода в эту секцию непись был враждебен ГГ и стрелял в него, то он находился под управлением движка.

И переход в секцию с игнором ничего не даст, пока непись видит ГГ.

Зы...Перепиши логику.

[logic]

active = {-swa_last_day_enemy}walker,walker@2

combat_ignore = combat_ignore



[walker]

path_walk = swa_last_day_kvest_1_walk

path_look = swa_last_day_kvest_1_look

combat_ignore_cond = always

on_info = {+swa_last_day_enemy} walker@2 %-swa_last_day_friend%



[walker@2]

path_walk = swa_last_day_kvest_1_walk

path_look = swa_last_day_kvest_1_look

on_info = {+swa_last_day_friend} walker %-swa_last_day_enemy%

 

Изменено пользователем Змея
1 час назад, Змея сказал:

пока непись видит ГГ.

Написал же, что очень далеко убегал - всё равно стреляют.

Утром попробую твою логику - отпишусь.

Нужен 3D-артист для правок геометрии локаций.
Кто может помочь - пишите в ЛС.

@Houdini_one,  конечно попробуй. 

Только в принципе, когда я так написала - совсем забыла твою функцию посмотреть. А поршни там дисаблятся...

Это получается в логике просто костыль на случай того, если в функции не происходит переключение при обратном переодевании...

Тебе надо бы отладчик какой иметь, чтобы видеть - в какой секции находится непись...Или хотя-бы отслеживать выдаваемые поршни, чтобы лишние проблемы исключить сразу...

Далее..

1. "очень далеко" - понятие растяжимое. Понизь радиус алайфа для теста до удобоваримых величин, чтобы можно было увидеть - что ты действительно вышел из алайфа.

2. Посмотри - какие данджеры прописаны у непися. Там есть дефолтные величины, которые обычно не указываются..

Например danger_inertion_time...Попробуй его уменьшить.

Изменено пользователем Змея

Парни, сталкивался кто-нибудь с такой проблемой?

Скрытый текст

[zone_burning_fuzz]
GroupControlSection    = spawn_group_zone
$spawn             = "zones\burning fuzz"
;$prefetch         = 16
class            = ZS_BFUZZ
hit_impulse_scale    = 0
effective_radius    = 0.75 ;размер радиуса в процентах от оригинального, где действует зона
sound            = zone_mosquito_bald
postprocess        = postprocess_fuzz

ef_anomaly_type            = 1
ef_weapon_type            = 13

artefacts        =
BirthProbability = 0.0
min_speed_to_react = 0.05
;----------- Anomaly settings -----------------------
min_start_power        = 3.99
max_start_power        = 4.0
attenuation            = 1
period                = 1
min_artefact_count    = 0
max_artefact_count    = 1

 


hit_type        = chemical_burn
hit_effect        = anomaly2\hit_metal_02

idle_particles        = anomaly2\pux_idle
blowout_particles    = anomaly2\pux_blast

;hit_small_particles        = hit_fx\hit_metal_02
;hit_big_particles            = anomaly2\
idle_small_particles        = anomaly2\pux_damage_smoke_01
idle_big_particles            = anomaly2\pux_damage_smoke_02
entrance_small_particles    = anomaly2\electra_entrance_small
entrance_big_particles        = anomaly2\electra_entrance_big

;idle_sound                    = anomaly\anomaly_gravy_idle
blowout_sound                = anomaly\pux_blast
hit_sound                    = anomaly\electra_hit
;entrance_sound                = anomaly\electra_hit

disable_time                = 500    ;время игнорирования неживого объекта в зоне (-1 если не нужно)
disable_time_small            = 500    ;время игнорирования маленького неживого объекта в зоне (-1 если не нужно)
disable_idle_time            = 1000    ;время отключения idle партиклов

awaking_time                = 100
blowout_time                = 300    
accamulate_time                = 5000

attack_animation_start        = 10
attack_animation_end        = 100

ignore_nonalive        = false;
ignore_small        = false;
ignore_artefacts    = true

blowout_light        = off
idle_light            = off

visible_by_detector = on

blowout_wind        = off

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;рождение артефактов во время срабатывания
spawn_blowout_artefacts = off

 

Скрытый текст

[651]
; cse_abstract properties
section_name = zone_burning_fuzz_strong
name = agr_under_zone_burning_fuzz_strong
position = 98.8945007324219,-11.0683765411377,59.5764389038086
direction = 3.40000005962793e-005,-1.7207989692688,-7.00000009601354e-006

; cse_alife_object properties
game_vertex_id = 1566
distance = 4.90000009536743
level_vertex_id = 2873
object_flags = 0xffffef3e

; cse_shape properties
shapes = shape0,shape1
shape0:type = sphere
shape0:offset = 0,0,0
shape0:radius = 1
shape1:type = box
shape1:axis_x = 3.29319977760315,0,0
shape1:axis_y = 0,6.15606021881104,0
shape1:axis_z = 0,0,1.82799804210663
shape1:offset = 0.00374799990095198,-3.0699999332428,0.00312000000849366

; cse_alife_space_restrictor properties
restrictor_type = 3

; cse_alife_custom_zone properties
max_power = 500

; cse_alife_anomalous_zone properties
offline_interactive_radius = 30
artefact_spawn_count = 32
artefact_position_offset = 0x4bde

; cse_visual properties
visual_name = physics\anomaly\topolinypuh

; cse_alife_zone_visual properties
idle_animation = idle
attack_animation = idle

; se_zone_visual properties

Локация - подземка Агро, адаптированная под ТЧ, Рыжий лес - тоже под ТЧ.

Проблема в том, что аномалия совершенно не наносит хит. Ни на костюм, ни на ГГ.

Можно это как-то изменить?

@Marafon6540, в Рыжем лесу можно, увеличив высоту шейпа, чтоб она сильно погрузилась в террейн. В подземке Агро - почти нереально.

  • Спасибо 1

banner_2.jpg

 

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

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

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

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

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

Войти

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

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

    • Ни один зарегистрированный пользователь не просматривает эту страницу.
×
×
  • Создать...