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

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

amik,

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

Еще 10 лет таких цен, зарплат и пенсий, и вместо переписи населения будет перекличка

Ссылка на комментарий
Куфзук, (тоже оффтоп, но общедоступное пояснение необходимо) я отработал по конкретному заказу (поэтому заказчику в ЛС), который подразумевал под собой вполне конкретную сценку. Для полностью универсальной схемы просто не хватает окончательной "огранки" (и... лень немного), плюс требуется составление дополнительной техдокументации по модифицированной схеме follower (я специально не стал создавать отдельный клон схемы - просто нужно будет использовать дополнительные параметры существующей). Это необходимо, т.к. для скриптера, ясное дело, всё будет понятно, но ведь настройщик логики (режиссёр скриптовых сценок) вовсе не обязан быть таковым - и я с этим фактом полностью согласен. Если всё это действительно кому-то интересно - доделаю "универсалку" и выложу :).
Ссылка на комментарий

Схема zoneguard работает в ЗП?

 

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

перенес еще локу с ЧН в ЗП, все хорошо, но при создании любой логики

Expression : !m_error_code

Function : raii_guard::~raii_guard

File : D:\prog_repository\sources\trunk\xrServerEntities\script_storage.cpp

Line : 748

Description : ...l.k.e.r. - Зов Припяти\gamedata\scripts\utils.script:469: bad argument #1 to 'gsub' (string expected, got nil)

 

Не соответствует. N6260

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

Каким образом сделать ГГ временно невидимым для врагов, но чтобы он не становился нейтралом к ним и не урезать дальность видимости у врагов ?

Пробовал исключать ГГ из врагов с помощью enable_memory_object. Может не там ставил (в хр_мотиваторе и хр_комбат), но не помогло.

 

Jurok, а это не приведет к тому, что непись не будет вступать в бой и с другими своими врагами когда его главным врагом является ГГ ?

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

В ЗП это делается следующим образом.

Открываем логику предположительного врага, находим нужную секцию и пишим:

 

combat_ignore_cond = {=check_enemy_name(actor) +инфопоршень_для_активации} true, {+инфопоршень_для_отключения} false

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

Использованние функций времени в схамах логики НПС.

 

На прмере логики работ гулага escape_lager попробуем заставить нпс менять работы каждые два часа, так же добавим точки сна и соответствующие им работы с логикой + 4 работы на которых сталкеры будут спать с 21 до 6 утра в подвалах, а в остальное время гулять (уходить в рейд).

 

Потребуется AC/DC и блокнот .

Важно: В конкретный отрезок времени нпс должен находится в одной схеме поведения срого соответствующей этому отрезку.

 

Итак в нашем случае это выглядит так .

Разделим обитателей лагеря на пары по уже имеющимся работам + добавим 2 новые (сон).

Имеем 2 охранников 2 парулирующих 2 сидящих у костра добавляем 2 спящих и 4 уходяших в рейд.

Итого 12 работ .

 

файл gulag_escape.script измененная часть

--' Лагерь новичков на Escape
    if type == "esc_lager" then
-- охранники
    t = { section =  "logic@esc_lager_zoneguard1",    
        idle = 0,
        prior = 10, state = {0,1,2},
        online = true,
        in_rest = "", out_rest = "",
    }
    table.insert(sj, t)
    t = { section = "logic@esc_lager_zoneguard2",
        idle = 0,
        prior = 9, state = {0,1,2},
        online = true,
        in_rest = "", out_rest = "",
    }
    table.insert(sj, t)
-- патрулирующие
    t = { section = "logic@esc_lager_walker3",
        idle = 0,
        prior = 11, state = {0,1,2},
        online = true,
        in_rest = "", out_rest = ""
    }
    table.insert(sj, t)
    t = { section = "logic@esc_lager_walker4",
        idle = 0,
        prior = 12, state = {0,1,2},
        online = true,
        in_rest = "", out_rest = "",
    }
    table.insert(sj, t)
-- сидящие у костра
    t = { section = "logic@esc_lager_kamp1",
        idle = 0,
        prior = 16, state = {0,1,2},
        online = true,
        in_rest = "", out_rest = "",
    }
    table.insert(sj, t)

    t = { section = "logic@esc_lager_kamp2",
        idle = 0,
        prior = 15, state = {0,1,2},
        online = true,
        in_rest = "", out_rest = ""
    }
    table.insert(sj, t)
-- спящие
    t = { section = "logic@esc_lager_mods31", 
        idle = 0,
        prior = 14, state = {0,1,2},
        online = true,
        in_rest = "", out_rest = ""
    }
    table.insert(sj, t)
    
    t = { section = "logic@esc_lager_mods41",
        idle = 0,
        prior = 13, state = {0,1,2},
        online = true,
        in_rest = "", out_rest = ""
    }
    table.insert(sj, t)
-- Сони сони (спящие и гуляющие)
    t = { section = "logic@esc_lager_mods1",
        idle = 0,
        prior = 21, state = {0,1,2},
        online = true,
        in_rest = "", out_rest = ""
    }
    table.insert(sj, t)
    t = { section = "logic@esc_lager_mods2",
        idle = 0,
        prior = 22, state = {0,1,2},
        online = true,
        in_rest = "", out_rest = ""
    }
    table.insert(sj, t)
    t = { section = "logic@esc_lager_mods3",
        idle = 0,
        prior = 23, state = {0,1,2},
        online = true,
        in_rest = "", out_rest = ""
    }
    table.insert(sj, t)
    t = { section = "logic@esc_lager_mods4",
        idle = 0,
        prior = 24, state = {0,1,2},
        online = true,
        in_rest = "", out_rest = ""
    }
    table.insert(sj, t)

Удаленно название рестриктора в параметре out_rest = "" иначе вылет any vertex

В файл S.T.A.L.K.E.R. - Shadow of Chernobyl\gamedata\config\misc\gulag_escape.ltx добавляем логику для новых работ

;сони которые пойдут гулять

[logic@esc_lager_mods1]
active = sleeper@esc_lager_mods1

[sleeper@esc_lager_mods1]
path_main = mod1
meet = meet@lager

[logic@esc_lager_mods2]
active = sleeper@esc_lager_mods2

[sleeper@esc_lager_mods2]
path_main = mod2
meet = meet@lager

[logic@esc_lager_mods3]
active = sleeper@esc_lager_mods3

[sleeper@esc_lager_mods3]
path_main = mod3
meet = meet@lager

[logic@esc_lager_mods4]
active = sleeper@esc_lager_mods4

[sleeper@esc_lager_mods4]
path_main = mod4
meet = meet@lager

;места для сна в домиках 

[logic@esc_lager_mods31]
active = sleeper@esc_lager_mods31

[sleeper@esc_lager_mods31]
path_main = mod7
meet = meet@lager

[logic@esc_lager_mods41]
active = sleeper@esc_lager_mods41

[sleeper@esc_lager_mods41]
path_main = mod8
meet = meet@lager[/spoiler]

Далее, так как в оригинале всего 8 работ, в лагере добавляем в алл спавн еще 4 сталкеров

[870]
; cse_abstract properties
section_name = stalker
name = esc_lager8
position = -225.604339599609,-20.221607208252,-147.097625732422
direction = 0.0623090341687202,0.00229393295012414,0.0141186164692044

; cse_alife_trader_abstract properties
money = 5000
character_profile = esc_stalker_novice

; cse_alife_object properties
game_vertex_id = 47
distance = 3.5
level_vertex_id = 29123
object_flags = 0xffffffbf
custom_data = <<END
[smart_terrains]
esc_lager = true
END

; cse_visual properties
visual_name = actors\novice\green_stalker_2

; cse_alife_creature_abstract properties
g_team = 0
g_squad = 1
g_group = 5
health = 1
dynamic_out_restrictions = 
dynamic_in_restrictions = 

upd:health = 1
upd:timestamp = 0xef20e0ec
upd:creature_flags = 0xe5
upd:position = -225.604339599609,-20.221607208252,-147.097625732422
upd:o_model = 0
upd:o_torso = 0.00229393295012414,0.0623090341687202,0
upd:g_team = 0
upd:g_squad = 1
upd:g_group = 5

; 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,0,1,0
predicate4 = 2,1,2,1

; cse_ph_skeleton properties

upd:start_dialog = 

; se_stalker properties

ну и далее еще 3 по анологии

добавляем точки сна

[esc_lager_mod1]
points = p0
p0:name = name00
p0:position = -207.075561523438,-22.0614719390869,-126.956001281738
p0:game_vertex_id = 58
p0:level_vertex_id = 45952

[esc_lager_mod2]
points = p0
p0:name = name00
p0:position = -214.630157470703,-22.8474712371826,-126.470748901367
p0:game_vertex_id = 59
p0:level_vertex_id = 39266

[esc_lager_mod3]
points = p0
p0:name = name00
p0:position = -210.716583251953,-22.8824710845947,-122.083511352539
p0:game_vertex_id = 59
p0:level_vertex_id = 42634

[esc_lager_mod4]
points = p0
p0:name = name00
p0:position = -210.383865356445,-22.8766937255859,-125.027153015137
p0:game_vertex_id = 59
p0:level_vertex_id = 42626

[esc_lager_mod5]
points = p0
p0:name = name00
p0:position = -238.831893920898,-20.0025863647461,-157.837829589844
p0:game_vertex_id = 47
p0:level_vertex_id = 18736

[esc_lager_mod6]
points = p0
p0:name = name00
p0:position = -218.885314941406,-19.9301738739014,-159.005096435547
p0:game_vertex_id = 47
p0:level_vertex_id = 34720

[esc_lager_mod7]
points = p0
p0:name = name00
p0:position = -204.821105957031,-19.8968200683594,-157.583831787109
p0:game_vertex_id = 53
p0:level_vertex_id = 47822

[esc_lager_mod8]
points = p0
p0:name = name00
p0:position = -185.258697509766,-19.244384765625,-130.855834960938
p0:game_vertex_id = 56
p0:level_vertex_id = 64958

ну и путь рейда

[esc_lager_reid1]
points = p0,p1,p2,p3,p4,p5
p0:name = wp00
p0:position = -8.943,-13.336,-148.609
p0:game_vertex_id = 108
p0:level_vertex_id = 267549
p0:links = p1(1)

p1:name = wp01
p1:position = -19.6868887329102,4.10310536956787,36.844128295898
p1:game_vertex_id = 82
p1:level_vertex_id = 257553
p1:links = p2(1)

p2:name = wp02
p2:position = -84.155615112305,11.521396697998,130.523866210938
p2:game_vertex_id = 84
p2:level_vertex_id = 182907
p2:links = p3(1)

p3:name = wp03
p3:position = -153.528093994141,2.2575981140137,18.302373291016
p3:game_vertex_id = 80
p3:level_vertex_id = 96857
p3:links = p4(1)

p4:name = wp04
p4:position = -192.871530517578,-2.9981938781738,-67.598228881836
p4:game_vertex_id = 68
p4:level_vertex_id = 58669
p4:links = p5(1)

p5:name = wp00
p5:position = -33.743641113281,2.4169506835938,68.040124755859
p5:game_vertex_id = 86
p5:level_vertex_id = 244276
p5:links = p0(1)

 

Итак имеем: 2 охранников, 2 патрулирующих, 2 сидящих у костра, добавляем 2 спящих. Нужно заставить их менятся, сделаем так: 2 охрранника поидут потруировать, 2 патрулиных - спать, 2 спящих - к костру, 2 сидящих у костра - охранять, ну и далее по кругу.

Логика одного охранника с коментариями и функциями из xr_conditions

функции

function time_testoww()
    if level.get_time_hours() >= 6 and level.get_time_hours() < 24 then 
        return true 
    else
        return false 
    end
end

function time2_testoww()
    if level.get_time_hours() < 4 and level.get_time_hours()  >=  0 then
        return true 
    else
        return false 
    end
end

если время больше 6 и меньше 24 (24 часов в сталкере не бывает но бывает 23.59) и меньше 4, но больше 0 - перключение на walker5@esc_lager (патрулирует)

[logic@esc_lager_zoneguard1]
active = walker@esc_lager_zoneguard1

[walker@esc_lager_zoneguard1] 
on_info = {=time_testoww} walker5@esc_lager
on_info2 = {=time2_testoww} walker5@esc_lager
path_walk  = guard_walk1
path_look  = guard_look1
meet = meet@zoneguard_novice_lager1

[meet@zoneguard_novice_lager1]
meet_state         = 10| wait@talk_hello
meet_state_wpn     = 10| threat@threat_weap
victim             = 10| actor
victim_wpn         = 10| actor
use            = true
use_wpn        = true
meet_dialog        = escape_lager_guard_start_dialog

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

function time_testoww1()
    if level.get_time_hours() >= 8 and level.get_time_hours() < 24 then
        return true 
    else
        return false 
    end
end

function time2_testoww1()
    if level.get_time_hours() < 6 and level.get_time_hours()  >=  0 then
        return true 
    else
        return false 
    end
end

если время больше или равно 8 и меньше 24 (24 часов в сталкере не бывает но бывает 23.59) и меньше 8, но больше 0 - перключение на sleeper10@esc_lager (спит)

[walker5@esc_lager]
on_info = {=time_testoww1} sleeper10@esc_lager
on_info2 = {=time2_testoww1} sleeper10@esc_lager
path_walk  = guard_walk4
meet = meet@lager

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

function time_testoww2()
    if level.get_time_hours() >= 10 and level.get_time_hours() < 24 then
        return true 
    else
        return false 
    end
end

function time2_testoww2()
    if level.get_time_hours() < 8 and level.get_time_hours()  >=  0 then
        return true 
    else
        return false 
    end
end

если время больше или равно 10 и меньше 24 (24 часов в сталкере не бывает но бывает 23.59) и меньше 10, но больше 0 - перключение на kamp5@esc_lager (сидит у костра )

[sleeper10@esc_lager]
on_info = {=time_testoww2} kamp5@esc_lager
on_info2 = {=time2_testoww2} kamp5@esc_lager
path_main = mod6
meet = meet@lager

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

function time_testoww3()
    if level.get_time_hours() >= 12 and level.get_time_hours() < 24 then
        return true 
    else
        return false 
    end
end

function time2_testoww3()
    if level.get_time_hours() < 10 and level.get_time_hours()  >=  0 then
        return true 
    else
        return false 
    end
end

если время больше или равно 12 и меньше 24 (24 часов в сталкере не бывает но бывает 23.59) и меньше 12, но больше 0 - перключение на walker1@esc_lager_zoneguard1 (охраняет)

[kamp5@esc_lager]
on_info = {=time_testoww3} walker1@esc_lager_zoneguard1
on_info2 = {=time2_testoww3} walker1@esc_lager_zoneguard1
center_point  = camp_center
path_walk = camp_center_task
soundgroup = esc_lager
meet = meet@lager

Важно!walker1@esc_lager_zoneguard1 отдельная схема поведения, хоть и является копией walker@esc_lager_zoneguard1, в противном случае - дальнейшие переключения были не возможны, так как walker@esc_lager_zoneguard1 уже использует предназначеный ей отрезок времени.

 

Ну, а дальше - по аналогии, вот блок функций :

-------------------------------------------------------------------------------------------шаг первый -----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

function time_testoww()
    if level.get_time_hours() >= 6 and level.get_time_hours() < 24 then
        return true 
    else
        return false 
    end
end

function time2_testoww()
    if level.get_time_hours() < 4 and level.get_time_hours()  >=  0 then
        return true 
    else
        return false 
    end
end

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

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

function time_testoww1()
    if level.get_time_hours() >= 8 and level.get_time_hours() < 24 then
        return true 
    else
        return false 
    end
end

function time2_testoww1()
    if level.get_time_hours() < 6 and level.get_time_hours()  >=  0 then
        return true 
    else
        return false 
    end
end

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

function time_testoww2()
    if level.get_time_hours() >= 10 and level.get_time_hours() < 24 then
        return true 
    else
        return false 
    end
end

function time2_testoww2()
    if level.get_time_hours() < 8 and level.get_time_hours()  >=  0 then
        return true 
    else
        return false 
    end
end

-----------------------------------------------------------------------------------------------------------------------------------------------------------------четвертый ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

function time_testoww3()
    if level.get_time_hours() >= 12 and level.get_time_hours() < 24 then
        return true 
    else
        return false 
    end
end

function time2_testoww3()
    if level.get_time_hours() < 10 and level.get_time_hours()  >=  0 then
        return true 
    else
        return false 
    end
end

-------------------------------------------------------------------------------------------------------------------------------------------------------------------------пятый

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

function time_testoww4()
    if level.get_time_hours() >= 14 and level.get_time_hours() < 24 then
        return true 
    else
        return false 
    end
end

function time2_testoww4()
    if level.get_time_hours() < 12 and level.get_time_hours()  >=  0 then
        return true 
    else
        return false 
    end
end

----------------------------------------------------------------------------------------------------------------------------------------------------------------------------шестой

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

function time_testoww5()
    if level.get_time_hours() >= 16 and level.get_time_hours() < 24 then
        return true 
    else
        return false 
    end
end

function time2_testoww5()
    if level.get_time_hours() < 14 and level.get_time_hours()  >=  0 then
        return true 
    else
        return false 
    end
end

---------------------------------------------------------------------------------------------------------------------------------------------------------------------седьмой ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

function time_testoww6()
    if level.get_time_hours() >= 18 and level.get_time_hours() < 24 then
        return true 
    else
        return false 
    end
end

function time2_testoww6()
    if level.get_time_hours() < 16 and level.get_time_hours()  >=  0 then
        return true 
    else
        return false 
    end
end

---------------------------------------------------------------------------------------------------------------------------------------------------------------------восьмой ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

function time_testoww7()
    if level.get_time_hours() >= 20 and level.get_time_hours() < 24 then
        return true 
    else
        return false 
    end
end

function time2_testoww7()
    if level.get_time_hours() < 18 and level.get_time_hours()  >=  0 then
        return true 
    else
        return false 
    end
end

---------------------------------------------------------------------------------------------------------------------------------------------------------------------девятый ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

function time_testoww8()
    if level.get_time_hours() >= 22 and level.get_time_hours() < 24 then
        return true 
    else
        return false 
    end
end

function time2_testoww8()
    if level.get_time_hours() < 20 and level.get_time_hours()  >=  0 then
        return true 
    else
        return false 
    end
end

---------------------------------------------------------------------------------------------------------------------------------------------------------------------десятый ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

function time_testoww9()
    if level.get_time_hours() >= 0 and level.get_time_hours() < 22 then
        return true 
    else
        return false 
    end
end

---------------------------------------------------------------------------------------------------------------------------------------------------------------------одинадцатый ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

function time_testoww10()
    if level.get_time_hours() >= 2 and level.get_time_hours() < 24 then
        return true 
    else
        return false 
    end
end

---------------------------------------------------------------------------------------------------------------------------------------------------------------------двенадцатый ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

function time_testoww11()
    if level.get_time_hours() >= 4 and level.get_time_hours() < 24 then
        return true 
    else
        return false 
    end
end

function time2_testoww11()
    if level.get_time_hours() < 2 and level.get_time_hours()  >=  0 then
        return true 
    else
        return false 
    end
end

 

Еще раз напоминаю, что все нижеприведенные схемы являются отдельными, хоть и копиями вышеприведенных

[walker[b]1[/b]@esc_lager_zoneguard1]
on_info = {=time_testoww4} walker6@esc_lager
on_info2 = {=time2_testoww4} walker6@esc_lager 
path_walk  = guard_walk1
path_look  = guard_look1
meet = meet[b]1[/b]@zoneguard_novice_lager1

[meet[b]1[/b]@zoneguard_novice_lager1]
meet_state         = 10| wait@talk_hello
meet_state_wpn     = 10| threat@threat_weap
victim             = 10| actor
victim_wpn         = 10| actor
use            = true
use_wpn        = true
meet_dialog        = escape_lager_guard_start_dialog

[walker6@esc_lager]
on_info = {=time_testoww5} sleeper11@esc_lager
on_info2 = {=time2_testoww5} sleeper11@esc_lager 
path_walk  = guard_walk4
meet = meet@lager

[sleeper11@esc_lager]
on_info = {=time_testoww6} kamp6@esc_lager
on_info2 = {=time2_testoww6} kamp6@esc_lager
path_main = mod6
meet = meet@lager

[kamp6@esc_lager]
on_info = {=time_testoww7} walker2@esc_lager_zoneguard1
on_info2 = {=time2_testoww7} walker2@esc_lager_zoneguard1
center_point  = camp_center
path_walk = camp_center_task
soundgroup = esc_lager
meet = meet@lager

[walker2@esc_lager_zoneguard1]
on_info = {=time_testoww8} walker7@esc_lager
on_info2 = {=time2_testoww8} walker7@esc_lager 
path_walk  = guard_walk1
path_look  = guard_look1
meet = meet2@zoneguard_novice_lager1

[meet2@zoneguard_novice_lager1]
meet_state         = 10| wait@talk_hello
meet_state_wpn     = 10| threat@threat_weap
victim             = 10| actor
victim_wpn         = 10| actor
use            = true
use_wpn        = true
meet_dialog        = escape_lager_guard_start_dialog

[walker7@esc_lager] 
on_info = {=time_testoww9} sleeper12@esc_lager
path_walk  = guard_walk4
meet = meet@lager

[sleeper12@esc_lager]
on_info = {=time_testoww10} kamp7@esc_lager
path_main = mod6
meet = meet@lager

[kamp7@esc_lager]
on_info = {=time_testoww11} walker@esc_lager_zoneguard1
on_info2 = {=time2_testoww11} walker@esc_lager_zoneguard1
center_point  = camp_center
path_walk = camp_center_task
soundgroup = esc_lager
meet = meet@lager

 

Логика уходящих в рейд:

[sleeper@esc_lager_mods1]
on_info = {=akkk_sleepreids} walker@esc_lager_reids1
path_main = mod1
meet = meet@lager

[walker@esc_lager_reids1]
on_info = {=akkk_raidsleep}sleeper@esc_lager_mods1
on_info2 = {=akkk_raidsleep1}sleeper@esc_lager_mods1
path_walk  = reid1
meet = meet@lager

 

Функции:

function akkk_sleepreids()
    if level.get_time_hours() >= 6 and level.get_time_hours() < 21 then больше 6 меньше 21 гуляем
        return true  
    else
        return false 
    end
end

function akkk_raidsleep()
    if level.get_time_hours() >= 21 and level.get_time_hours() < 24 then  больше 21 меньше 24 спим
        return true  
    else
        return false 
    end
end
function akkk_raidsleep1()
    if level.get_time_hours()  >= 0  and level.get_time_hours() <  6 then   больше 0 меньше 6 спим
        return true  
    else
        return false 
    end
end

 

Да и использованние 2 функций не совсем оптимально вместо

function time_testoww()
    if level.get_time_hours() >= 6 and level.get_time_hours() < 24 then
        return true 
    else
        return false 
    end
end

function time2_testoww()
    if level.get_time_hours() < 4 and level.get_time_hours()  >=  0 then
        return true 
    else
        return false 
    end
end

достаточно 1 вида

local hours = level.get_time_hours() 
return (hours >= 6 and hours < 24) or (hours<4 and hours >= 0) 
end

 

Спасибо Erlik

 

Рабочий пример сдесь

http://narod.ru/disk/7377687001/lager.rar.html

Версия 1.0004 чистая новая игра обязательна. Смена работ каждые два часа начиная с 6, 4 сталкера в 6 уходят в рейд, а с 21 до 6 спят в подвалах.

 

Посты объеденил и немного подправил в пользу компактности правок в код никаких не вносил. Куфзук

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

А как можно вывести таблицу методом news_manager.send_tip? Например я создал таблицу со значениями гейм_вертексов (определённых) как мне её теперь сообщением вывести чтобы все от 1 до последнего были в одном сообщении?

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

ели хочешь то перебором таблицу и выводи сообщение. Получится 20 сообщений в каждом по вертиксу. Потом в ПДА посмотришь. Но я бы советовал в лог

 

Freedom

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

Knyaz

 

Обьясните подробней что вам требуется .

Что такое Smart Cover даже не представляю . :ny_ph34r_1:

т.к занимаюсь исключительно ТЧ.

Остальные части шлак (IMXO).

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

Knyaz, так же как в ЧН не выйдет. Этой фичи в ТЧ просто напросто нет. Можно что-то подобное смастерить, если очень точно и тчательно покопаться и настроить логику.

AKKK1,

Смарткаверы - это спаун объект, который управляет анимациями NPC. Используется для создания сценок со сложной анимацией.
Определение ПЫСов. Изменено пользователем Куфзук
Ссылка на комментарий

Создал логику для ЗП(впервые, только учусь)

[logic@marsh_a9_walker]

active = walker@mar_a9_guard_1

prior = 70

 

[walker@mar_a9_guard_1]

path_walk = guard_1_walk

 

 

По идее НПС должен встать в точку для теста и стоять, но игра вылетает

 

001B:06BAE8B3 xrGame.dll, CDialogHolder::CDialogHolder()

001B:06BAFB45 xrGame.dll, CDialogHolder::CDialogHolder()

001B:023B2EA3 lua.JIT.1.1.4.dll, luaopen_io()

 

 

 

Не соответствует. N6260

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

Есть такой баг в ЗП - не проверяется есть ли путь или нет. Поэтому проверь есть ли у тебя путь имя_смарта_guard_1_walk

 

У меня такие же вылеты были пока я проверок не понаставил в xr_walker xr_camper. Только у меня сразу 6 движковых вылетов обычно

Freedom

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

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

Не соответствует. N6260

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

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

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

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

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

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

Войти

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

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

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