Dennis_Chikin 3 662 Опубликовано 9 Января 2019 место, откуда вызывается, выбрано, конечно, "гениально". Но даже так: function spawn_npc() local id = db.storage[0].pstor.esc_tol if id then local obj = alife():object( tonumber( id ) ) if obj and obj:section_name() == "esc_tol" then if obj:alive() then return else alife():release( obj, true ) end end end local obj = alife():create("esc_tol",vector():set(-240.34, -20.01, -157.63),14953,47) db.storage[0].pstor.esc_tol = tostring( obj.id ) end Это если почувствовать себя Кашпировским, и предположить, что нужно восстановление непися при загрузке в случае, если тот помер. Если неписей больше одного - прописывать свежесозданным sid, и далее проверять по списку. Если нужен непись в конкретном месте - проверять это конкретное место. Короче, смотрим шапку темы касательно телепатии и стука по батарее. P.S. Аналогично - с "переселениями народов". Солянка обезжиренная, диетическая, полезные советы по "солянке", текущий тестовый патч Поделиться этим сообщением Ссылка на сообщение
Dennis_Chikin 3 662 Опубликовано 9 Января 2019 (изменено) Актуально для везде, где тщательно не проверены все модели этих самых неписей. Плюс еще бы и в движки поглядеть надо на предмет необходимости НИ после такого. Изменено 9 Января 2019 пользователем Dennis_Chikin 1 Солянка обезжиренная, диетическая, полезные советы по "солянке", текущий тестовый патч Поделиться этим сообщением Ссылка на сообщение
Dennis_Chikin 3 662 Опубликовано 9 Января 2019 Внезапно, логика есть у всего. Даже у огнетушителей. А вот это самое "здесь так принято", с непременными путями в матерной нотации и прочими черточками и кракозябрами, регулярно дает неизменно превосходные результаты вида [error]Description : any vertex in patrol path или вообще без лога, как на тех крысах, бегущих на ДТ, еще в 10й соли. @nasar75, вот только проверяются стволы, как правило, именно на тот слот, который для актора. А потом неписи очень забавно себя ведут с разными анимациями. Солянка обезжиренная, диетическая, полезные советы по "солянке", текущий тестовый патч Поделиться этим сообщением Ссылка на сообщение
Dennis_Chikin 3 662 Опубликовано 9 Января 2019 Радиусы для хома - вообще отдельный разговор. Надо восстанавливать утраченное армейским способом, и потом разбираться. В приведенном же примере - крысам, создававшимся в припяти прописывался вертекс, существующий на ДТ, и не существующий в баре. Забавно получалось, да... Солянка обезжиренная, диетическая, полезные советы по "солянке", текущий тестовый патч Поделиться этим сообщением Ссылка на сообщение
Dennis_Chikin 3 662 Опубликовано 10 Января 2019 (изменено) В соли почему-то у всех моделек контролеров поломана атака рукой. Точно помню, что была, сейчас он просто какое-то странное движение плечами производит. По рестрам - самоудаление в se_zones добавлено. Но это тоже не есть хорошо, ибо, во-первых, болтается в памяти до этого самого события, во вторых - еще и дополнительные операции со строками для всех этих болтающихся при каждой регистрации ну и собственно на локации. Сейчас вот только на одной ДТ 41 рестриктор снес. И это еще не все. Изменено 10 Января 2019 пользователем Dennis_Chikin Солянка обезжиренная, диетическая, полезные советы по "солянке", текущий тестовый патч Поделиться этим сообщением Ссылка на сообщение
Dennis_Chikin 3 662 Опубликовано 10 Января 2019 (изменено) С обычными как раз "не то". Впрочем, в оригинале вроде всего один был, а сейчас этих "обычных" именно что куча разных. Возможно, не все из них одинаково полезны. Изменено 10 Января 2019 пользователем Dennis_Chikin Солянка обезжиренная, диетическая, полезные советы по "солянке", текущий тестовый патч Поделиться этим сообщением Ссылка на сообщение
Dennis_Chikin 3 662 Опубликовано 10 Января 2019 (изменено) Ну а я, тогда, простите, где эту атаку рукой мог бы видеть, если ЧН еще на болотах и снес? Только ТЧ. Махал он рукой вблизи. Без всяких скриптов. Ну и анимация атаки должна быть в модельках, естественно, а не где-то "в движке". Изменено 10 Января 2019 пользователем Dennis_Chikin Солянка обезжиренная, диетическая, полезные советы по "солянке", текущий тестовый патч Поделиться этим сообщением Ссылка на сообщение
Dennis_Chikin 3 662 Опубликовано 10 Января 2019 (изменено) В 2008ом? Я, конечно, понимаю, что виндовс, компьютер и колесо тоже Пропер создал... Изменено 10 Января 2019 пользователем Dennis_Chikin 2 Солянка обезжиренная, диетическая, полезные советы по "солянке", текущий тестовый патч Поделиться этим сообщением Ссылка на сообщение
Dennis_Chikin 3 662 Опубликовано 11 Января 2019 Это примерно так: local t_del = false function dummy() end function del_zones() if t_del then local obj for k, v in pairs( t_del ) do obj = sim:object( k ) if obj and obj:name() == v then sim:release( obj, true ) end end end t_del = false return true end function se_restrictor:on_register() cse_alife_space_restrictor.on_register( self ) if not self.init_flag then self.init_flag = true local ini = self:spawn_ini() if ini and ini:section_exist( "spawner" ) and ini:line_exist( "spawner","auto_dell" ) then local t = xr_logic.parse_condlist1( ini:r_string( "spawner","auto_dell" ) ) if xr_logic.pick_section_from_condlist( db.actor, self, t ) ~= nil then if t_del then t_del[self.id] = self:name() else t_del = { [self.id] = self:name() } if sim then level.add_call( del_zones, dummy ) end end end end end end 1 Солянка обезжиренная, диетическая, полезные советы по "солянке", текущий тестовый патч Поделиться этим сообщением Ссылка на сообщение
Dennis_Chikin 3 662 Опубликовано 11 Января 2019 (изменено) alife():release() из самого себя не вполне корректно. Плюс кто-нибудь может этому рестриктору вписать тип, отличный от 0 или 3 со всеми вытекающими висяками неписей. Впрочем, от вписывания его же в base_inr или base_outr все равно не спасает. Изменено 11 Января 2019 пользователем Dennis_Chikin Солянка обезжиренная, диетическая, полезные советы по "солянке", текущий тестовый патч Поделиться этим сообщением Ссылка на сообщение
Dennis_Chikin 3 662 Опубликовано 11 Января 2019 (изменено) "по кругу" - на текущей локации. Впрочем, имеет смысл удалять его банально по имени/sid в числе прочих операций, когда реально становится не нужен, точно так же, как в ходе прочих операций создается. Проверка ВСЕХ существующих на наличие каких-то строк в кастомдате при каждой загрузке игры - действительно, перебор. Как пример - временная мера с удалением всего ненужного при переходе на янтарь с ДТ - ... for i, v in ipairs( { -- более не нужный мусор на ДТ "rostok_space_restrictor_0001", "rostok_sniper_space_restrictor_01", "rostok_volkodav_talking", "rostok_space_restrictor", "rostok_start_killer_combat", "bar_help_professor_restrictor", "rostok_cheat_sound_restrictor", "ros_zone_flame_small_0005", "ros_zone_flame_small_0006", "ros_zone_flame_small_0007", "ros_zone_flame_small_0008", "ros_zone_flame_small_0010", "zone_flame_0000", "zone_flame_0001", "zone_flame_0002", "rostok_zombied_spawner", "rostok_sniper_pda_restrictor", "rostok_heli_scene_start_restr", "rostok_start_killer_combat", "rostok_chase_restrictor", "rostok_freedom_attack_zone", "rostok_scientist_guard_restrictor", "rostok_space_restrictor_0002", "rostok_volkodav_band_mapspot", "rostok_kruglov_finish_mapspot", "rostok_volkodav_fire_sound", "rostok_volkodav_fire_sound_end", "rostok_sniper_space_restrictor_01_0000", "rostok_chase_reastictor_1" } ) do v = sim:object( v ) if v then sim:release( v, true ) end end ... с вызовом через for i, v in ipairs( t_info ) do if v[1] and ( not ( v[4] and actor:has_info( v[4] ) ) ) then когда надо было поддерживать совместимость по сэйвам и не было адекватной замены всему вот этому списку на 49 позиций. Изменено 11 Января 2019 пользователем Dennis_Chikin Солянка обезжиренная, диетическая, полезные советы по "солянке", текущий тестовый патч Поделиться этим сообщением Ссылка на сообщение
Dennis_Chikin 3 662 Опубликовано 11 Января 2019 1,2,4,5 - такое должно удаляться только в случае, если не успело войти в онлайн (и не пытается "вот прям счаз"). То есть, грубо говоря, лучше, когда находимся на другой локации. Солянка обезжиренная, диетическая, полезные советы по "солянке", текущий тестовый патч Поделиться этим сообщением Ссылка на сообщение
Dennis_Chikin 3 662 Опубликовано 11 Января 2019 (изменено) OUT и IN. Прописывать - можно, удалять в онлайне - нельзя. Изменено 11 Января 2019 пользователем Dennis_Chikin 1 Солянка обезжиренная, диетическая, полезные советы по "солянке", текущий тестовый патч Поделиться этим сообщением Ссылка на сообщение
Dennis_Chikin 3 662 Опубликовано 11 Января 2019 Почитать тему внимательно начиная с первого поста. в файле character_desc, внезапно, и должны быть только шаблоны для неписей. Очевидно, что для зверья ни имен, ни биографий, ни принадлежности к группировкам, ни костюмов, ни диалогов быть не не должно. По остальным пунктам - аналогично. Без понимания, что мы вообще хотим сделать - невозможно. Солянка обезжиренная, диетическая, полезные советы по "солянке", текущий тестовый патч Поделиться этим сообщением Ссылка на сообщение
Dennis_Chikin 3 662 Опубликовано 19 Января 2019 (изменено) Ну, ошибка здесь собственно в том, что каждые 20ms зачем-то вызывается проверка того, что требуется один раз при загрузке. С другой стороны, если на каждый чих игрока спавнить в одном месте по 1000 зомбей - без удаления дохлых слайдшоу гарантировано. Возможно, предполагается еще наличие функции, которая вызывается через некоторое время после зомбоспавна, и снова делает corspoff = true (а заодно вызывает мегалаг, пока тот сякоуборщик перебирает все объекты в игре, чтоб было нелегко и нерадостно). Некоторые еще используют подобный вызов для удаления квестовых предметов, чтоб игрок не успел их подобрать, и должен был переигрывать. Изменено 19 Января 2019 пользователем Dennis_Chikin Солянка обезжиренная, диетическая, полезные советы по "солянке", текущий тестовый патч Поделиться этим сообщением Ссылка на сообщение
Dennis_Chikin 3 662 Опубликовано 19 Января 2019 Где там кто "посередине подфункций"? Хотя, конечно, если в игре нет табунов в 1000 зомбей, я бы вставил куда-нибудь в net_spawn() Солянка обезжиренная, диетическая, полезные советы по "солянке", текущий тестовый патч Поделиться этим сообщением Ссылка на сообщение
Dennis_Chikin 3 662 Опубликовано 19 Января 2019 Если руки шаловливые не поковырялись - remove_gulag( true ), и добавить сохранение/загрузку флага. Солянка обезжиренная, диетическая, полезные советы по "солянке", текущий тестовый патч Поделиться этим сообщением Ссылка на сообщение
Dennis_Chikin 3 662 Опубликовано 20 Января 2019 remove_gulag() вызывается штатно для каждого смарта, когда в нем никого нет или надо очистить. Флаг - первоначально отладочная фича, но она работоспособна, если ничего не поломано. А вообще про взаимоотношения неписей со смартами, чувствую, пора статью писать. Что-то многовато последнее время однотипных проблем... Солянка обезжиренная, диетическая, полезные советы по "солянке", текущий тестовый патч Поделиться этим сообщением Ссылка на сообщение
Dennis_Chikin 3 662 Опубликовано 22 Января 2019 {условие} вероятность создания при каждом апдейте, вероятность при невыполнении условия. Я вроде эту часть тоже разбирал подробно. 1 Солянка обезжиренная, диетическая, полезные советы по "солянке", текущий тестовый патч Поделиться этим сообщением Ссылка на сообщение
Dennis_Chikin 3 662 Опубликовано 24 Января 2019 (изменено) function rostok_chase3() if not rostok_strn3 then rostok_strn3 = alife():object( "bar_freedom_chasers_attack" ) end local g = rostok_strn3 and rostok_strn3.gulag if g and g.population_comed >= 1 then return false elseif actor:dont_has_info( "bar_ambush_dead" ) then actor:give_info_portion( "bar_ambush_dead" ) end return true end Впрочем, и этот пост, как и соседнюю тему, все равно никто читать не будет. Не для этого на сей форум заходят, чтобы что-то там читать. Изменено 24 Января 2019 пользователем Dennis_Chikin 1 3 3 Солянка обезжиренная, диетическая, полезные советы по "солянке", текущий тестовый патч Поделиться этим сообщением Ссылка на сообщение