Dennis_Chikin 3 661 Опубликовано 3 Марта 2017 Берем, и ВЕЗДЕ меняем. Либо на game.CTime(), либо сохранения делаем как-то типа вот так: local n = 0 -- корректировка и сохранение времени for k, v in pairs( tm_sec ) do n = n + 1 end pk:w_u32( n ) for k, v in pairs( tm_sec ) do pk:w_stringZ( k ); pk:w_float( v - game_time_sec ) end n = 0 for k, v in pairs( tm_ms ) do n = n + 1 end pk:w_u32( n ) for k, v in pairs( tm_ms ) do pk:w_stringZ( k ); pk:w_float( v - game_time_ms ) end преимущества последнего варианта - меньший объем сэйва, быстрее все вычисления, недостаток - кто-то из принципа может проторчать на одной локации не сохраняясь до 35 мая. Солянка обезжиренная, диетическая, полезные советы по "солянке", текущий тестовый патч Поделиться этим сообщением Ссылка на сообщение
Dennis_Chikin 3 661 Опубликовано 3 Марта 2017 (изменено) это в g.script? Ну, у меня отдельным модулем. И все "временные" данные на сохранение везде кладутся в отдельное место, и сохраняется тоже в отдельное место.. Можно и прямо по месту сохранений, но их - МНОГО. Принципиальная разница между двумя вариантами - либо операции с 64 битами, и время от старта игры или от изобретения персоналок, либо 32 бита "от загрузки". Изменено 3 Марта 2017 пользователем Dennis_Chikin 1 Солянка обезжиренная, диетическая, полезные советы по "солянке", текущий тестовый патч Поделиться этим сообщением Ссылка на сообщение
Dennis_Chikin 3 661 Опубликовано 4 Марта 2017 Справедливости ради, имена секций в конфигах, подобных торговым, имеют к движку довольно отдаленное отношение. Ни кто не мешает их переименовать как угодно, с простой правкой скрипта или даже и вовсе без таковой. Солянка обезжиренная, диетическая, полезные советы по "солянке", текущий тестовый патч Поделиться этим сообщением Ссылка на сообщение
Dennis_Chikin 3 661 Опубликовано 4 Марта 2017 (изменено) Вообще-то обычный непись на оригинальном движке так не может. Ему надо дернуть за npc:buy_supplies( ini, section ) И, да, есть, как всегда, флажок, говорящий, что оружие, назначенное preffered, он в торговле не показывает. Ну а за пределами оригнала, тем более в солянке, тем боле в ее клонах - куча разного, которое постоянно что-то спавнит-удаляет. upd: а вот что у движка действительно есть, так это поганая манера после смерти непися в непонятно какой момент пытаться удалить часть патронов, по непонятному принципу, но не обращая внимания на их существование к моменту собственно удаления. Изменено 4 Марта 2017 пользователем Dennis_Chikin Солянка обезжиренная, диетическая, полезные советы по "солянке", текущий тестовый патч Поделиться этим сообщением Ссылка на сообщение
Dennis_Chikin 3 661 Опубликовано 11 Марта 2017 Внезапно глупый вопрос: а где-то регулируется скорость стрельбы неписей из рпг ? Что-то заметил, что они из него строчат как из пулемета... Или только запретить "бесконечные боеприпасы", и спавн гранат вручную ? Солянка обезжиренная, диетическая, полезные советы по "солянке", текущий тестовый патч Поделиться этим сообщением Ссылка на сообщение
Dennis_Chikin 3 661 Опубликовано 11 Марта 2017 ef_weapon_type И что это даст ? По идее, это надо неписям с анимациями что-то делать, чтобы перезаряжали какое-то длительное время, но хотелось бы "малой кровью". Солянка обезжиренная, диетическая, полезные советы по "солянке", текущий тестовый патч Поделиться этим сообщением Ссылка на сообщение
Dennis_Chikin 3 661 Опубликовано 19 Марта 2017 В продолжение вопроса об гранатомете с пулеметной лентой: can_be_unlimited = true в секции боеприпасов - это, часом, не оно ли ? Солянка обезжиренная, диетическая, полезные советы по "солянке", текущий тестовый патч Поделиться этим сообщением Ссылка на сообщение
Dennis_Chikin 3 661 Опубликовано 19 Марта 2017 (изменено) function get_key( npc ) -- Формирование ключа персонажа local npc_id = npc:id() local ovr = get_overrides( npc ) local key = ( ovr and ovr.soundgroup ) or tostring( npc_id ) if t_keys[ npc_id ] ~= key then local n = t_keys[npc_id] -- если непись уже в другой группе - убираем if t_grps[n] then t_grps[n].num = t_grps[n].num - 1 end t_keys[npc_id] = key -- и создаем новую local t = t_grps[key] if t then t.num = t.num + 1 -- if npc:name() == "esc_tolik" then -- log( "info", "get_key, group: %s, n: %s (%s)", key, t.num, to_str( npc ) ) -- end else t_grps[key] = { ["num"] = 1, ["idle"] = 0, ["upd_time"] = 0 } -- if npc:name() == "esc_tolik" then -- log( "info", "get_key, group: %s, single (%s)", key, to_str( npc ) ) -- end end end return key endкак-то так. А bar_bar_hunter прописано в script_sound.ltx, да. Или в аналогах. Изменено 19 Марта 2017 пользователем Dennis_Chikin 1 Солянка обезжиренная, диетическая, полезные советы по "солянке", текущий тестовый патч Поделиться этим сообщением Ссылка на сообщение
Dennis_Chikin 3 661 Опубликовано 21 Марта 2017 look смотри. Правда, там еще с "толяном" все очень смешно, да... 1 Солянка обезжиренная, диетическая, полезные советы по "солянке", текущий тестовый патч Поделиться этим сообщением Ссылка на сообщение
Dennis_Chikin 3 661 Опубликовано 21 Марта 2017 Уже не помню, но сцена срабатывает через раз. Короче, там проще все закрасить было, чем отскребать. Что в итоге Петрович и сделал. Солянка обезжиренная, диетическая, полезные советы по "солянке", текущий тестовый патч Поделиться этим сообщением Ссылка на сообщение
Dennis_Chikin 3 661 Опубликовано 30 Марта 2017 (изменено) Вы удивитесь, но ЛЮБАЯ функция, вызываемая из логики будь то {=...} или %=...% получает в аргументах этого самого непися. Имя этого непися получается, внезапно, через npc:name() А чтобы узнать, в каком смарте любой непись, то на это есть obj:smart_terrain_id() возвращающая id объекта smart_terrain либо 65535. http://www.amk-team.ru/forum/topic/12926-sistema-alife-logika-povedeniia-igrovykh-obektov/?p=1019434 и далее. "На дворе шел 2017 год, а посреди степи стояло 2 метра бетонной стены с многочисленными вмятинами от голов модоразработчиков". Изменено 30 Марта 2017 пользователем Dennis_Chikin 1 1 Солянка обезжиренная, диетическая, полезные советы по "солянке", текущий тестовый патч Поделиться этим сообщением Ссылка на сообщение
Dennis_Chikin 3 661 Опубликовано 9 Апреля 2017 (изменено) Так а в чем, собственно, проблема ? level.add_call(), внутри - device:pause( true ), get_console():execute( "save " .. fn ), device:pause( false ) - не ? Но вообще, просто не надо в момент сэйва создавать/удалять пачками объекты. Изменено 9 Апреля 2017 пользователем Dennis_Chikin 1 Солянка обезжиренная, диетическая, полезные советы по "солянке", текущий тестовый патч Поделиться этим сообщением Ссылка на сообщение
Dennis_Chikin 3 661 Опубликовано 10 Апреля 2017 (изменено) Лис - gulag_escape.script if type == "esc_stalker_camp" then return function(gulag) if has_alife_info("yan_provodnik_spawn") then return 1 else return 0 end end endОстальные - идея та же, но в олспавне. 2 АndrewMor: Порги и Бесс - это опера такая. Но с гендером здесь явно что-то не то. Изменено 10 Апреля 2017 пользователем Dennis_Chikin Солянка обезжиренная, диетическая, полезные советы по "солянке", текущий тестовый патч Поделиться этим сообщением Ссылка на сообщение
Dennis_Chikin 3 661 Опубликовано 10 Апреля 2017 Вылет, разумеется, будет, поскольку состояние 0 должно быть всегда. Если что-то менять, то это там, где оно используется: выше в том же файле: if type == "esc_stalker_camp" then t = { section = "logic@esc_stalker_camp_provodnik", idle = 0, prior = 10, state = {0}, online = false, in_rest = "", out_rest = "", predicate = function(obj_info) return obj_info.profile_name == "esc_provodnik" end } table.insert(sj, t) t = { section = "logic@esc_stalker_fox", idle = 0, prior = 10, state = {0}, in_rest = "", out_rest = "", predicate = function(obj_info) return obj_info.profile_name == "esc_fox" end } table.insert(sj, t) t = { section = "logic@esc_stalker_camp_provodnik", idle = 0, prior = 10, state = {1}, in_rest = "", out_rest = "", predicate = function(obj_info) return obj_info.profile_name == "esc_provodnik" end } table.insert(sj, t) t = { section = "logic@esc_stalker_camp1", idle = 0, prior = 8, state = {1}, online = false, in_rest = "", out_rest = "", predicate = function(obj_info) return obj_info.profile_name == "esc_fox" end } table.insert(sj, t) end Солянка обезжиренная, диетическая, полезные советы по "солянке", текущий тестовый патч Поделиться этим сообщением Ссылка на сообщение
Dennis_Chikin 3 661 Опубликовано 11 Апреля 2017 надо по экспериментировать Не надо экспериментировать. Надо просто понять: что делается, и зачем. Например, state = {0}, online = false - "не выпускать Проводника". Или state = {1}, online = false - спрятать Лиса. Солянка обезжиренная, диетическая, полезные советы по "солянке", текущий тестовый патч Поделиться этим сообщением Ссылка на сообщение
Dennis_Chikin 3 661 Опубликовано 11 Апреля 2017 Угадали. Единственно, что - если посмотреть варианты рядом, то там вообще нет ни каких online, и этого вполне достаточно. 1 Солянка обезжиренная, диетическая, полезные советы по "солянке", текущий тестовый патч Поделиться этим сообщением Ссылка на сообщение
Dennis_Chikin 3 661 Опубликовано 9 Мая 2017 Ну мы вроде ВСЕ знаем, зачем именно в _g.script пишут printf( "%s" ), не ? По тому что если до этого дошло, то УЖЕ в морг. А причина, по которой дошло - может быть разной. Солянка обезжиренная, диетическая, полезные советы по "солянке", текущий тестовый патч Поделиться этим сообщением Ссылка на сообщение
Dennis_Chikin 3 661 Опубликовано 3 Июня 2017 current_level_going_speed = монстрам вообще нужна, или где-то в недрах есть дефолтная ? Солянка обезжиренная, диетическая, полезные советы по "солянке", текущий тестовый патч Поделиться этим сообщением Ссылка на сообщение
Dennis_Chikin 3 661 Опубликовано 26 Июня 2017 В 15.06.2017 в 23:20, Morder07 сказал: Если я правильно понимаю, 146% авторов модов прибивают свое собственное время респавна гвоздями, и на эти строчки им плевать. Кроме того, у 145% время отсчитывается не от события, ПОСЛЕ которого должен случится респавн, и даже не интервалы проверки, а "время готовности замены свежему трупу". То есть, чтоб как только кто-то помер - другой появился НЕМЕДЛЕННО на какой-то из соседних локаций, и спасибо что не на голову игроку. В разделе есть темка, где расписываются подробности. Солянка обезжиренная, диетическая, полезные советы по "солянке", текущий тестовый патч Поделиться этим сообщением Ссылка на сообщение
Dennis_Chikin 3 661 Опубликовано 26 Июня 2017 В 24.06.2017 в 16:32, MGS сказал: e_parent && e_entity Аналогично, читайте соседние темки. Ни какой "уборщик трупов", удаления непонятно чего и даже замены движка Вам не помогут. (точнее, один из случаев подобного вылета лечится в ОГСЕ, но именно один из). Кроме того, занятие "угадай игру", оно, конечно, увлекательно, но малопродуктивно. Это Вы ведь про "минера" из win3.11 сейчас писали, да ? ;) Солянка обезжиренная, диетическая, полезные советы по "солянке", текущий тестовый патч Поделиться этим сообщением Ссылка на сообщение