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

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


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

Только что, Hind сказал:

значит 4 из них - лишние, и их надо убрать?

Да, ибо в них же идёт вызов смарта.

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

 

2 минуты назад, Hind сказал:

ничего. Пустота.

А зачем ты пишешь?

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

  • Спасибо 1

ищу человека, который смог бы заняться разработкой погоды на OGSR.
кто может помочь - пишите в ЛС.

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

@Houdini_oneво блин, о как... 

А ежели мне надо чтобы после получения инфы непись шёл куда мне конкретно надо? Если логика не читается, то получается, со смартом такое не выйдет сделать...

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

@андрей дронав 

Во втором варианте некролога несколько лишних end или не до конца "обернутая" часть обработчика – подсветка синтаксиса в помощь, ну или хотя бы табуляция "ёлочкой" для отслеживания начала и конца каждого блока.

 

Первый вариант работает как есть – проверял через битву на АТП. Может, вызов не добавлен в [xr_motivator.script] death_callback?

 

Еще в первом варианте сильно "ленивый" код:
• вместо повторяющейся проверки is victim можно сразу сделать выход if not victim then return end
• варианты killer можно сгруппировать так: по умолчанию "data error", дальше проверка на суицид, сталкера и мутанта (с дополнительной группировкой "общая часть условия > вариант / остаток > итог"), в конце проверка по таблице "если в строке найден ключ часть секции аномалии, подставить значение перевод названия"
• по-хорошему, переведенные названия мутантов и аномалий надо не прописывать в скрипте вручную, а читать из конфигов по ссылке who:section()

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

  • Согласен 1
  • Полезно 3

Мини-моды: ТЧ ЧН ЗП

Шпаргалка

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

@Hind читается логика которая в смарте.
SoC. Смартеррейны и гулаги и

ищу человека, который смог бы заняться разработкой погоды на OGSR.
кто может помочь - пишите в ЛС.

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

@Norman Eisenherz Похоже второй вариант рассчитан на старшие платформы. 

Должно быть что то типо:


...
        local task_texture, task_rect = get_texture_info("ui_iconsTotal_weapons")
        local news_text = news_caption .. "%c[230,255,128,64]" .. m_text_kill_string

В остальном я понял о чем ты, но не знаю как исправить код, я правда никогда углублённо не изучал язык программирования.

Попробую проанализировать на ошибки. 

 

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

Проблема следующая: дал логику чувакам, хочу чтобы они И ТОЛЬКО ОНИ выполняли схему камп (т.е сидели у костра и отдыхали)

 

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

[logic]
active = kamp
danger = danger_condition 
 
[kamp]
center_point = esc_blokpost_kamp
def_state_moving = run



Но вот беда - вместе с ними, к костру подходят люди, которые вообще никак не задействованы с этой логикой. Тупо прут к нему, и всё тут.

Логика одного из "нежелательных" гостей костра:
 

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

 

[smart_terrains]
none = true

[logic]
active = remark@base 
danger = danger_condition 
meet = meet
 
[remark@base]
anim = guard
no_move = true
meet = meet
 
[meet] 
victim = 10|actor
victim_wpn = 10|actor
use = true
use_wpn = true

 



Что делать? Как "оградить" незванных гостей от костра?

Ссылка на комментарий
16 минут назад, Hind сказал:

[smart_terrains]
none = true

Это прописано в ltx файле?

ищу человека, который смог бы заняться разработкой погоды на OGSR.
кто может помочь - пишите в ЛС.

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

@андрей дронав В ЧН/ЗП в give_game_news добавляется еще один текстовый аргумент – заголовок (первый), в остальном формат тот же.

По коду: именно ошибок нет, только повторяющиеся действия, которые можно собрать воедино.

  • Спасибо 1

Мини-моды: ТЧ ЧН ЗП

Шпаргалка

Ссылка на комментарий
1 час назад, Hind сказал:

Да

Я же говорил тебе, что с ltx файла не читает [smart_terrains], это указывается в алл спавне!

ищу человека, который смог бы заняться разработкой погоды на OGSR.
кто может помочь - пишите в ЛС.

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

@Hind скорее всего они занимают рандомную работу в лагере, добавь проверку на профиль, глянь как с Шустрым сделано.

ищу человека, который смог бы заняться разработкой погоды на OGSR.
кто может помочь - пишите в ЛС.

Ссылка на комментарий
14.10.2022 в 13:57, alex5773 сказал:

А как исправить файлы ,в которых всё сплошником идёт?

Сейчас смотрел что у меня на диске из старья, и увидел W-U_Conv

И вспомнил, что именно эта прога для этого)))

Запускаешь, выбираешь Конвертировать папку Unix в Windows и выбираешь папку, и всё готово. В папке все сразу файлы становятся нормальные за пару секунд)))

Можно и по одному файлу, можно и папку целиком. Можно и обратно с виндовс в уникс.

Весит W-U_Conv всего 52 кб )))

Оказывается не нотепадом это делается, значит нотепадом что-то другое делал тогда.

Три года прошло, забыл всё на фиг. Вот приходится вспоминать всё заново. 

Всё сплошником в файлах, в SRP-master для ЧН.

 

Это если блокнотом открывать)))

  • Полезно 1
Ссылка на комментарий

Notepad++

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

123.jpg

По идее, должно сработать.

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

Как сделать, чтобы непись подольше задержался на точке в smart_terrains? Мне надо чтобы он именно что стоял и охранял, а он тупо идёт. Иными словами, Как отрегулировать задержку на точке?

+ подскажите, почему неписи которые записаны в смарт террайн, идут куда хотят? Хотя работы есть. Они просто уходят.

И интересует то, что я не увидел практически ни одной кучки пацанов сидящих за телевизором или костром. Почему?

Вот схемки:

 

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

--' Escape blockpost
    if type == "esc_blokpost" then
     t = { section = "logic@esc_blockpost_patrol_yard",
         idle = 0,
         prior = 1, state = {0,1},
         position_threshold = 100,
             online = true,
         in_rest = "", out_rest = "escape_blockpost_zone"
     }
    table.insert(sj, t)
    t = { section = "logic@esc_blockpost_watch_tv1",
        idle = 0,
        prior = 1, state = {0},
        position_threshold = 100,
            online = true,
        in_rest = "", out_rest = "escape_blockpost_zone"
    }
    table.insert(sj, t)
    t = { section = "logic@esc_blockpost_watch_tv2",
        idle = 0,
        prior = 1, state = {0},
        position_threshold = 100,
            online = true,
        in_rest = "", out_rest = "escape_blockpost_zone"
    }
    table.insert(sj, t)
    t = { section = "logic@esc_blockpost_kamp1",
        idle = 0,
        prior = 6, state = {1},
        position_threshold = 100,
            online = true,
        in_rest = "", out_rest = "escape_blockpost_zone"
    }
    table.insert(sj, t)
    t = { section = "logic@esc_blockpost_kamp1",
        idle = 0,
        prior = 5, state = {1},
        position_threshold = 100,
            online = true,
        in_rest = "", out_rest = "escape_blockpost_zone"
    }
    table.insert(sj, t)
    t = { section = "logic@esc_blockpost_kamp2",
        idle = 0,
        prior = 4, state = {1},
        position_threshold = 100,
            online = true,
        in_rest = "", out_rest = "escape_blockpost_zone",
        predicate = function(obj_info)
                        return obj_info.name == "esc_blokpost_commander"
                    end
     }
    table.insert(sj, t)
    t = { section = "logic@esc_blockpost_comander_guard1",
        idle = 0,
        prior = 3, state = {2},
        position_threshold = 100,
            online = true,
        in_rest = "", out_rest = "escape_blockpost_zone"
    }
    table.insert(sj, t)
    t = { section = "logic@esc_blockpost_comander_guard2",
        idle = 0,
        prior = 2, state = {2},
        position_threshold = 100,
            online = true,
        in_rest = "", out_rest = "escape_blockpost_zone"
    }
    table.insert(sj, t)
    t = { section = "logic@esc_blockpost_camper1",
        idle = 0,
        prior = 7, state = {2},
        position_threshold = 100,
            online = true,
        in_rest = "", out_rest = "escape_blockpost_zone"
    }
    table.insert(sj, t)
    t = { section = "logic@esc_blockpost_camper2",
        idle = 0,
        prior = 0, state = {2},
        position_threshold = 100,
            online = true,
        in_rest = "", out_rest = "escape_blockpost_zone"
    }
    table.insert(sj, t)
        t = { section = "logic@esc_blokpost_kpp_guard2",
        idle = 0,
        prior = 0, state = {2},
        position_threshold = 100000,
            online = true,
        in_rest = "", out_rest = "escape_blockpost_zone"
    }
    table.insert(sj, t)
            t = { section = "logic@esc_blokpost_kpp2_guard3",
        idle = 0,
        prior = 0, state = {2},
        position_threshold = 100000,
            online = true,
        in_rest = "", out_rest = "escape_blockpost_zone"
    }
    table.insert(sj, t)
end
        t = { section = "logic@esc_blokpost_kazarma_guard1",
        idle = 0,
        prior = 0, state = {1},
        position_threshold = 100000,
            online = true,
        in_rest = "", out_rest = "escape_blockpost_zone"
    }
    table.insert(sj, t)
end
end


 

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

 

[logic@esc_blockpost_patrol1]
active = patrol@esc_blokpost_day_patrol_commander

[patrol@esc_blokpost_day_patrol_commander]
path_walk = day_patrol_walk
path_look = day_patrol_look
formation = back
commander = true


[logic@esc_blockpost_follower1]
active = patrol@esc_blokpost_day_patrol_follower1

[patrol@esc_blokpost_day_patrol_follower1]
path_walk = day_patrol_walk
path_look = day_patrol_look
formation = back
commander = false


[logic@esc_blockpost_follower2]
active = patrol@esc_blokpost_day_patrol_follower2

[patrol@esc_blokpost_day_patrol_follower2]
path_walk = day_patrol_walk
path_look = day_patrol_look
formation = back
commander = false


[logic@esc_blockpost_commander_day]
active = camper@esc_blockpost_commander_day
on_death = death@commander

[camper@esc_blockpost_commander_day]
path_walk = commander_walk
path_look = commander_look

[death@commander]
on_info = %+esc_commander_die%


[logic@esc_blockpost_post1]
active = walker@esc_blockpost_post1

[walker@esc_blockpost_post1]
path_walk = post_walk1
path_look = post_look1


[logic@esc_blockpost_post2]
active = walker@esc_blockpost_post2

[walker@esc_blockpost_post2]
path_walk = post_walk2
path_look = post_look2


[logic@esc_blockpost_camper_day]
active = camper@esc_blockpost_camper_day

[camper@esc_blockpost_camper_day]
path_walk = camper_day_walk
path_look = camper_day_look
sniper = true
def_state_campering = threat


[logic@esc_blockpost_patrol_yard]
active = walker@esc_blockpost_patrol_yard

[walker@esc_blockpost_patrol_yard]
path_walk = patrol_yard_walk


[logic@esc_blockpost_watch_tv1]
active = walker@esc_blockpost_watch_tv1

[walker@esc_blockpost_watch_tv1]
path_walk = watch_walk1
path_look = watch_look1


[logic@esc_blockpost_watch_tv2]
active = walker@esc_blockpost_watch_tv2

[walker@esc_blockpost_watch_tv2]
path_walk = watch_walk2
path_look = watch_look2


[logic@esc_blockpost_kamp1]
active = kamp@esc_blockpost_kamp1

[kamp@esc_blockpost_kamp1]
center_point = kamp
path_walk = kamp_task
soundgroup = esc_blokpost_soldier


[logic@esc_blockpost_kamp2]
active = kamp@esc_blockpost_kamp2
on_death = death@commander

[kamp@esc_blockpost_kamp2]
center_point = kamp
path_walk = kamp_task
soundgroup = esc_blokpost_soldier


[logic@esc_blockpost_sleep1]
active = sleeper@esc_blockpost_sleep1

[sleeper@esc_blockpost_sleep1]
path_main = sleep1
wakeable = false


[logic@esc_blockpost_sleep2]
active = sleeper@esc_blockpost_sleep2

[sleeper@esc_blockpost_sleep2]
path_main = sleep2
wakeable = false


[logic@esc_blockpost_sleep3]
active = sleeper@esc_blockpost_sleep3

[sleeper@esc_blockpost_sleep3]
path_main = sleep3
wakeable = false


[logic@esc_blockpost_sleep4]
active = sleeper@esc_blockpost_sleep4

[sleeper@esc_blockpost_sleep4]
path_main = sleep4
wakeable = false


[logic@esc_blockpost_comander_guard1]
active = walker@esc_blockpost_comander_guard1

[walker@esc_blockpost_comander_guard1]
path_walk = guard_walk1
path_look = guard_look1


[logic@esc_blockpost_comander_guard2]
active = walker@esc_blockpost_comander_guard2

[walker@esc_blockpost_comander_guard2]
path_walk = guard_walk2
path_look = guard_look2


[logic@esc_blockpost_camper1]
active = camper@esc_blockpost_camper1

[camper@esc_blockpost_camper1]
path_walk = camper1_walk
path_look = camper1_look
sniper = true


[logic@esc_blockpost_camper2]
active = camper@esc_blockpost_camper2

[camper@esc_blockpost_camper2]
path_walk = camper2_walk
path_look = camper2_look
sniper = true


[logic@esc_blockpost_alarm_patrol1]
active = walker@esc_blockpost_alarm_patrol1

[walker@esc_blockpost_alarm_patrol1]
path_walk = alarm1_walk


[logic@esc_blockpost_alarm_patrol2]
active = walker@esc_blockpost_alarm_patrol2

[walker@esc_blockpost_alarm_patrol2]
path_walk = alarm2_walk


[logic@esc_blokpost_kpp_guard2]
active = walker@esc_blokpost_kpp_guard2

[walker@esc_blokpost_kpp_guard2]
path_walk = esc_blokpost_kpp_guard_2_walk
path_look = esc_blokpost_kpp_guard_2_look

[logic@esc_blokpost_kpp2_guard3]
active = walker@esc_blokpost_kpp2_guard3

[walker@esc_blokpost_kpp2_guard3]
path_walk = esc_blokpost_kpp2_guard_3_walk
path_look = esc_blokpost_kpp2_guard_3_look

[logic@esc_blokpost_kazarma_guard1]
active = walker@esc_blokpost_kazarma_guard1

[walker@esc_blokpost_kazarma_guard1]
path_walk = esc_blokpost_kazarma_guard_1_walk
path_look = esc_blokpost_kazarma_guard_1_walk

 

 

Ссылка на комментарий
34 минуты назад, Hind сказал:

почему неписи которые записаны в смарт террайн, идут куда хотят? Хотя работы есть. Они просто уходят

А НПС подходят под эти работы? В смартах есть установки predicate (и не только -  у тебя вообще весь смарт может не работать. Тупо из-за мелкой ошибки в файле при написании.)

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

        t = { section = "logic@esc_blockpost_commander_day",
            idle = 0,
            prior = 100, state = {0,2},
            position_threshold = 100,
--            online = true,
            in_rest = "", out_rest = "escape_blockpost_zone",
            predicate = function(obj_info)
                            return obj_info.name == "esc_blokpost_commander"
                        end
        }

 

Вот здесь только для объекта esc_blokpost_commander

 

34 минуты назад, Hind сказал:

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

Скрытый текст
34 минуты назад, Hind сказал:

t = { section = "logic@esc_blockpost_kamp1",
        idle = 0,
        prior = 5, state = {1},
        position_threshold = 100,
            online = true,
        in_rest = "", out_rest = "escape_blockpost_zone"
    }

Обрати внимание на state. Эта работа выполняется при каком то условии - время суток, выданный/не выданный инфопоршен...

 

34 минуты назад, Hind сказал:

подольше задержался на точке в smart_terrains

Это установки в all.spawn. В секциях путей для данной работы, например:

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

[lim_exit_city_patrol_look]
points = p0,p1,p2,p3,p4
p0:name = wp00|p=100|t=30000
p0:flags = 0x1
p0:position = 13.822473526001,-0.789200007915497,-330.906127929688
p0:game_vertex_id = 3006
p0:level_vertex_id = 33386

p1:name = wp01|p=100|t=15000
p1:flags = 0x2
p1:position = 2.4173846244812,0.944146752357483,-355.61669921875
p1:game_vertex_id = 3006
p1:level_vertex_id = 25614

p2:name = wp02|p=100|t=15000
p2:flags = 0x3
p2:position = 9.83491706848145,0.779918670654297,-296.050415039063
p2:game_vertex_id = 3009
p2:level_vertex_id = 30559

p3:name = wp03|p=100|t=15000
p3:flags = 0x4
p3:position = 30.4576187133789,0.938418030738831,-288.948120117188
p3:game_vertex_id = 3018
p3:level_vertex_id = 42572

p4:name = wp04|p=100|t=15000
p4:flags = 0x5
p4:position = 4.57630348205566,0.66511857509613,-360.93310546875
p4:game_vertex_id = 3006
p4:level_vertex_id = 27268

 

Здесь на примере четыре точки на пути НПС, в которые он последовательно смотрит с вероятностью и продолжительностью (в миллисекундах)

 

 

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

Здесь могла быть ваша реклама.

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

@Купер Можно пояснение? Если я правильно понял, выражение означает "если перед New Line нет Carriage Return, то добавить такой спецсимвол".

  • Согласен 1

Мини-моды: ТЧ ЧН ЗП

Шпаргалка

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

@Hind , я же просто пример кинул. Ты в точке пути, будь то walk или look, указываешь время и вероятность, анимацию... Смотря, чего тебе надо. Я недавно скидывал ссылку на документ с разбором логики, там это есть.

Я же говорю - практикуй. Сделай простой смарт и всё на нём проверяй. В этом деле практика нужна.

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

Здесь могла быть ваша реклама.

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

UPD:
Настройки в state поменял на {1,2,3} и всё равно, никто не сидит за телеком или костром. Часть военных просто слоняется по базе, часть уходит в свободное плаванье.
 

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

     t = { section = "logic@esc_blockpost_patrol_yard",
         idle = 0,
         prior = 1, state = {0,1,2},
         position_threshold = 100,
             online = true,
         in_rest = "", out_rest = "escape_blockpost_zone"
     }
    table.insert(sj, t)
    t = { section = "logic@esc_blockpost_watch_tv1",
        idle = 0,
        prior = 1, state = {0,1,2},
        position_threshold = 100,
            online = true,
        in_rest = "", out_rest = "escape_blockpost_zone"
    }
    table.insert(sj, t)
    t = { section = "logic@esc_blockpost_watch_tv2",
        idle = 0,
        prior = 1, state = {0,1,2},
        position_threshold = 100,
            online = true,
        in_rest = "", out_rest = "escape_blockpost_zone"
    }
    table.insert(sj, t)
    t = { section = "logic@esc_blockpost_kamp1",
        idle = 0,
        prior = 6, state = {0,1,2},
        position_threshold = 100,
            online = true,
        in_rest = "", out_rest = "escape_blockpost_zone"
    }
    table.insert(sj, t)
    t = { section = "logic@esc_blockpost_kamp1",
        idle = 0,
        prior = 5, state = {0,1,2},
        position_threshold = 100,
            online = true,
        in_rest = "", out_rest = "escape_blockpost_zone"
    }
    table.insert(sj, t)
    t = { section = "logic@esc_blockpost_kamp2",
        idle = 0,
        prior = 4, state = {0,1,2},
        position_threshold = 100,
            online = true,
        in_rest = "", out_rest = "escape_blockpost_zone",
        predicate = function(obj_info)
                        return obj_info.name == "esc_blokpost_commander" or "esc_jawa" or "esc_kobelcev" or "esc_shamtkov" or "esc_melnik" or "esc_dumko" or "esc_grachov" or "esc_borisenkov" or "esc_boroday" or "esc_bondarenko"
                    end
     }
    table.insert(sj, t)
    t = { section = "logic@esc_blockpost_comander_guard1",
        idle = 0,
        prior = 3, state = {0,1,2},
        position_threshold = 100,
            online = true,
        in_rest = "", out_rest = "escape_blockpost_zone"
    }
    table.insert(sj, t)
    t = { section = "logic@esc_blockpost_comander_guard2",
        idle = 0,
        prior = 2, state = {0,1,2},
        position_threshold = 100,
            online = true,
        in_rest = "", out_rest = "escape_blockpost_zone"
    }
    table.insert(sj, t)
    t = { section = "logic@esc_blockpost_camper1",
        idle = 0,
        prior = 7, state = {0,1,2},
        position_threshold = 100,
            online = true,
        in_rest = "", out_rest = "escape_blockpost_zone"
    }
    table.insert(sj, t)
    t = { section = "logic@esc_blockpost_camper2",
        idle = 0,
        prior = 0, state = {0,1,2},
        position_threshold = 100,
            online = true,
        in_rest = "", out_rest = "escape_blockpost_zone"
    }
    table.insert(sj, t)
        t = { section = "logic@esc_blokpost_kpp_guard2",
        idle = 0,
        prior = 0, state = {0,1,2},
        position_threshold = 100000,
            online = true,
        in_rest = "", out_rest = "escape_blockpost_zone"
        predicate = function(obj_info)
                        return obj_info.name == "esc_blokpost_commander" or "esc_jawa" or "esc_kobelcev" or "esc_shamtkov" or "esc_melnik" or "esc_dumko" or "esc_grachov" or "esc_borisenkov" or "esc_boroday" or "esc_bondarenko"
                    end
    }
    table.insert(sj, t)
            t = { section = "logic@esc_blokpost_kpp2_guard3",
        idle = 0,
        prior = 0, state = {0,1,2},
        position_threshold = 100000,
            online = true,
        in_rest = "", out_rest = "escape_blockpost_zone"
        predicate = function(obj_info)
                        return obj_info.name == "esc_blokpost_commander" or "esc_jawa" or "esc_kobelcev" or "esc_shamtkov" or "esc_melnik" or "esc_dumko" or "esc_grachov" or "esc_borisenkov" or "esc_boroday" or "esc_bondarenko"
                    end
    }
    table.insert(sj, t)
end
        t = { section = "logic@esc_blokpost_kazarma_guard1",
        idle = 0,
        prior = 0, state = {0,1,2},
        position_threshold = 100000,
            online = true,
        in_rest = "", out_rest = "escape_blockpost_zone"
        predicate = function(obj_info)
                        return obj_info.name == "esc_blokpost_commander" or "esc_jawa" or "esc_kobelcev" or "esc_shamtkov" or "esc_melnik" or "esc_dumko" or "esc_grachov" or "esc_borisenkov" or "esc_boroday" or "esc_bondarenko"
                    end
    }
    table.insert(sj, t)
end
end



специально для теста оставил возможные работы в гулаге только свои собственные. И хоть бы хны - неписи всё равно не останавливаются на пост.




Настройки вейпойнта на примере одного из часовых:

look waypoint - wp00|t=50000|p=100
walk waypoint - wp00

 

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

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

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

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

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

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

Войти

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

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

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