Перейти к содержанию

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

 
 

frankenshtayn он разбивает архивы? В самом первом есть папка sounds?

Изменено пользователем N42
  • Пост еще тот... 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 

frankenshtayn для распаковки и запаковки ТЧ архивов самый лучший это проверенный временем конвертер от Бардака, всё остальное дилетантская васня)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 

N42 не помогает
пытался двумя методами:

Спойлер

 

function see_actor(actor, npc)
    return npc:alive() and npc:see(actor)
end

function see_actor2(actor, npc)
    return npc:alive() and npc:see_right_now(actor)
end

 

такая проверка показывает что нпс всё же видит гг, но это лишь проверка и нпс тот - нейтрал

Спойлер

 local npc = level_object_by_sid(6)
if npc and npc:alive() and npc:see(db.actor) then
log1("npc can see actor now")
end

логика такого плана:

Спойлер

[logic@esc_bandit_atp_5_walker]
active = walker@esc_bandit_atp_5
 
[walker@esc_bandit_atp_5]
path_walk         = 5_walk
path_look         = 5_look
on_info = {+esc_bandit_detail_start =see_actor} %+esc_bandit_detail_fail%

копаю дальше - проверка работает только в случае если нпс нейтрален к ГГ и/или не состоит в состоянии danger
в этом и проблема... править как хз


Дополнено 25 минуты спустя

докопал всё же, вставил в логику:
combat_ignore_cond = {!is_night} allways


Дополнено 37 минуты спустя

Так, вопрос по гулагам

Спойлер

image.png

по идеи нпс должен переходить в другое состояние (день-ночь, ночью спит, днём охраняет), но вместо того чтобы перейти в другое состояние он уходит в оффлайн как править?

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 

В чем проблема? Бандиты должны игнорировать нас,  а они стреляют в меня(

[smart_terrains]
none = true

[logic]
active = walker

[walker]
path_walk = gar_rob_walker_2_walk
path_look = gar_rob_walker_2_look
combat_ignore = combat_ignore

[combat_ignore]

[remark]
anim = claim
snd = gar_dm_bandit_demand
target = actor

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 

Stalkervernite а где условие combat_ignore_cond = always

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 

[smart_terrains]
none = true

[logic]
active = walker
combat_ignore = combat_ignore

[walker]
path_walk = gar_rob_walker_2_walk
path_look = gar_rob_walker_2_look
combat_ignore_cond = always

[remark]
anim = claim
snd = gar_dm_bandit_demand
target = actor
combat_ignore_cond = always

[combat_ignore]
Stalkervernite 

  • Лайк 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
   
В 30.07.2023 в 15:22, N42 сказал:

он разбивает архивы? В самом первом есть папка sounds?

sounds есть в 4 и 5 архиве. Проблема не в этом, повторю "условие задачи загадки"):

- При наличии в корне игры папки gamedata, и отсутствии db-архивов (gamedata.db0-gamedata.dbb удалены, их нет в корне игры) - всё нормально, игра запускается, работает. Проблема начинается после упаковки геймдаты в db-архивы. Причем поисковик показывает, что эти файлы присутствуют по указанному в вылетах пути.

В 31.07.2023 в 03:01, CiberZold сказал:

frankenshtayn для распаковки и запаковки ТЧ архивов самый лучший это проверенный временем конвертер от Бардака, всё остальное дилетантская васня)

Так с него и начинал) А вообще,  пробовал разными конвертерами.

ПС. Вообще склоняюсь в сторону "криворукости", хотя не понимаю каким образом - если кидаю свои звуки, модели, шейдеры в геймдату и упаковываю её в архивы, а скрипты, конфиги, аллспавн и т.д. в отдельный архив, то начинаются танцы с вылетами по 

[error]Description   : Can't open wave file:
[error]Arguments     : d:\game\stalker\s.t.a.l.k.e.r. - shadow of hernobyl\gamedata\sounds\material\human\step\tmp_default4.ogg

А вот если оригинал (урезанный) упаковать отдельно, а мои все файлы отдельно, то всё работает.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 

frankenshtayn распакуй первый оригинальный архив и посмотри, как он устроен. Может в этом причина. Вроде как в первом архиве должны быть все папки (хоть пустые), но это не точно, не помню уже. Если не поможет - без понятия тогда

  • Пост еще тот... 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 
В 31.07.2023 в 16:42, imcrazyhoudini сказал:

по идеи нпс должен переходить в другое состояние (день-ночь, ночью спит, днём охраняет), но вместо того чтобы перейти в другое состояние он уходит в оффлайн как править?

Ну может быть задать для каждого состояния то, что он должен делать? Т.е. Для состояния 0 - одна логика, для состояния 1 другая?

Как пример простейшего гулага с двумя состояниями:

гулаг.скрипт:

Спойлер

 

local t = {}

function load_job(sj, gname, type, squad, groups)
--'--------------------------------------------------------------------------    
--' GARBAGE
--'--------------------------------------------------------------------------    
    

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

----------первый--------------

if type == "sv_st_smart_terrain" then
t = { section = "logic@sv_st_smart_terrain_walker1",
idle = 0,
prior = 5, state = {0},
online = true,
in_rest = "", out_rest = "",
}
table.insert(sj, t)
end

if type == "sv_st_smart_terrain" then
t = { section = "logic@sv_st_smart_terrain_kamp1",
idle = 0,
prior = 5, state = {1},
online = true,
in_rest = "", out_rest = "",
}
table.insert(sj, t)
end

----------второй-----------

if type == "sv_st_smart_terrain" then
t = { section = "logic@sv_st_smart_terrain_walker2",
idle = 0,
prior = 5, state = {0},
online = true,
in_rest = "", out_rest = "",
}
table.insert(sj, t)
end

if type == "sv_st_smart_terrain" then
t = { section = "logic@sv_st_smart_terrain_kamp2",
idle = 0,
prior = 5, state = {1},
online = true,
in_rest = "", out_rest = "",
}
table.insert(sj, t)
end

------третий-------------

if type == "sv_st_smart_terrain" then
t = { section = "logic@sv_st_smart_terrain_walker3",
idle = 0,
prior = 5, state = {0},
online = true,
in_rest = "", out_rest = "",
}
table.insert(sj, t)
end

if type == "sv_st_smart_terrain" then
t = { section = "logic@sv_st_smart_terrain_sleeper",
idle = 0,
prior = 5, state = {1},
online = true,
in_rest = "", out_rest = "",
}
table.insert(sj, t)
end
    
    
end


function load_states(gname, type)
if type == "sv_st_smart_terrain" then
return function(gulag)
if db.actor ~= nil then
if ( level.get_time_hours() >= 5 and level.get_time_hours() <= 22 ) then
return 0 -- день
else
return 1 -- ночь
end
else
return gulag.state
end
end
end
    
    
end

--------------------------------------------------------------------------
-- Dynamic ltx
--------------------------------------------------------------------------
function load_ltx(gname, type)
    return nil
end

function checkStalker(npc_community, gulag_type, npc_rank, se_obj)
    
    
    ---------
    
    if gulag_type == "sv_st_smart_terrain" then
return npc_community == "stalker"
end

    
    return false
end

function checkMonster(npc_community, gulag_type)
        if gulag_type == "gar_boars_nest2" then
            return npc_community == "boar"
        end
        
        if gulag_type == "gar_boars_nest" then
            return npc_community == "boar"
        end
        
        if gulag_type == "gar_nest_flesh" then
            return npc_community == "flesh"
        end
        
        if gulag_type == "gar_dogs_nest" then
            return npc_community == "dog"
        end
        
        if gulag_type == "gar_dogs_nest2" then
            return npc_community == "dog"
        end
    return false
end

 

гулаг.лтх:

Спойлер

 

;;;--------------------------------------------------- 
;;;-- сталкер1 walker 0, днем)
[logic@sv_st_smart_terrain_walker1]
active = walker@odin_hodit
on_hit = hit_w 

[hit_w]
on_info = %=zasada_spawn%

 
[walker@odin_hodit]
path_walk         = odin_walk
danger            = danger_condition
def_state_moving1 = patrol
def_state_moving2 = patrol
def_state_moving3 = patrol
meet = meet
 
;;;-- сталкер1 kamp 1, ночью)
[logic@sv_st_smart_terrain_kamp1]
active = kamp@odin_sidit
on_hit = hit_k 

[hit_k]
on_info = %=zasada_spawn%
 
[kamp@odin_sidit]
center_point = pole_kamp
meet = no_meet
 ;;;----------------------------------------------------------------
;;;-- сталкер2 walker 0, днем)
[logic@sv_st_smart_terrain_walker2]
active = walker@dva_hodit
 
[walker@dva_hodit]
path_walk         = dva_walk
danger            = danger_condition
def_state_moving1 = patrol
def_state_moving2 = patrol
def_state_moving3 = patrol
meet = meet
 
;;;-- сталкер2 kamp 1, ночью)
[logic@sv_st_smart_terrain_kamp2]
active = kamp@dva_sidit
 
[kamp@dva_sidit]
center_point = pole_kamp
meet = no_meet
 ;;;----------------------------------------------------------------------------
 ;;;-- сталкер3 walker 0, днем)
[logic@sv_st_smart_terrain_walker3]
active = kamp@tri_sidit
 
[kamp@tri_sidit]
center_point = pole_kamp
meet = meet 
 
 
;-- сталкер3 sleeper 1, ночью)
[logic@sv_st_smart_terrain_sleeper]
active = sleeper@tri_slip
 
[sleeper@tri_slip]
path_main = moy_sleep
wakeable  = false
meet = no_meet

 

И всё нормально работает:

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 

frankenshtayn да у меня такой же код
ещё раз попробовал - уже в оффлайн никто не уходит, странная херня

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 
21 минуту назад, N42 сказал:

распакуй первый оригинальный архив и посмотри, как он устроен. Может в этом причина. Вроде как в первом архиве должны быть все папки (хоть пустые), но это не точно, не помню уже. Если не поможет - без понятия тогда

Папки есть везде, не пустые.

 

архивы.jpg

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 

frankenshtayn у тебя самого на скрине в db0 4 папки только


Дополнено 0 минут спустя

Оригинальный этот архив посмотри

  • Пост еще тот... 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 
13 минут назад, imcrazyhoudini сказал:

да у меня такой же код
ещё раз попробовал - уже в оффлайн никто не уходит, странная херня

Разве? В скрипте для обоих состояний одна и та же логика, причем секции дублируются, например 

t = { section = "logic@esc_atp_bandit_kamp1"

idle = 0,
prior = 9, state = {0,1},
in_rest = "", out_rest = "",
}

t = { section = "logic@esc_atp_bandit_kamp1"

idle = 0,
prior = 9, state = {0,1},
in_rest = "", out_rest = "",
}

Чем они отличаются? Для чего это дублирование? Почему для обоих состояний 0 и 1 одна и та же логика?

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

Посмотри внимательнее, как сделано у меня - для каждого НПС в скрипте отдельный код для каждого состояния с ссылкой на РАЗНУЮ секцию логики, соответственно в конфиге для каждого НПС две секции логики для каждого состояния. Представь себе - работает)))

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 

frankenshtayn да а с этим то какие проблемы? всё как в оригинале, 3 одинаковые логики использует и всё отлично работать, зачем кучу дубликатов создавать


Дополнено 0 минут спустя

пример с оригинала например: гулаг esc_specnaz

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 
7 минут назад, N42 сказал:

frankenshtayn у тебя самого на скрине в db0 4 папки только


Дополнено 0 минут спустя

Оригинальный этот архив посмотри

Так эти 4 папки и весят 678 мГ, так же как и архив db0

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 

frankenshtayn я тебе про пустые папки говорю, ешкин кот, открой уже оригинальный db0

Изменено пользователем N42
  • Пост еще тот... 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 
16 минут назад, imcrazyhoudini сказал:

да а с этим то какие проблемы? всё как в оригинале, 3 одинаковые логики использует и всё отлично работать, зачем кучу дубликатов создавать

Так чтобы не путаться) Ну в принципе моё дело предложить, я не настаиваю)

21 минуту назад, imcrazyhoudini сказал:

пример с оригинала например: гулаг esc_specnaz

Гм... И? Если мне память не отшибает, то у них у всех всего одно состояние, и они все кемперы, то бишь тусуются кучкой вокруг одной общей точки.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 

frankenshtayn ну если мне нужно чтобы 3 чувака тусили возле костра, то зачем разную логику им делать) дубликат всего-то

а переход из одного состояния в другое сейчас происходит штатно

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 

Есть ли в оружейных конфигах параметр, отвечающий за расположение оружия на спине у сталкера?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 
5 минут назад, Кефир сказал:

Есть ли в оружейных конфигах параметр, отвечающий за расположение оружия на спине у сталкера?

Поищи в конфигах по слову strap.

  • Спасибо 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 

как заставить монстра смотреть куда мне нужно в mob_remark?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 

Приветствую всех! Делаю кастцену, камера смотрит туда куда не надо, что делать?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 

Stalkervernite сделай чтобы смотрела куда надо. В чём проблема?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 

imcrazyhoudini У меня вей поинт должен смотреть в другую сторону, а камера смотрит туда куда не надо, а как сделать, как исправить ошибку?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

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

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти

  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу