Это популярное сообщение. Dennis_Chikin 3 658 Опубликовано 16 Мая 2014 Это популярное сообщение. Поделиться Опубликовано 16 Мая 2014 Ковыряемся в файлах ТЧ Прежде чем писать в тему - внимательно читаем первый пост, и пользуемся поиском. Возможно, ответ на Ваш вопрос уже есть. Касательно телепатии: если Вы передаете Ваши файлы телепатическим путем - ответы будут передаваться тоже телепатически. Если Вы предлагаете угадать, отчего у Вас в подвале происходит странный стук - ответ будет передан стуком. 4 8 6 12 Солянка обезжиренная, диетическая, полезные советы по "солянке", текущий тестовый патч Ссылка на комментарий
dmitry7874 0 Опубликовано 9 Февраля 2011 Поделиться Опубликовано 9 Февраля 2011 Гномик Да именно так я уже разабрался спс. Так что-же это такое и счем это едят? ; State = 7 ; 0 - бежать прямо на врага ; 1 - бежать на врага петляя ; 2 - бежать на врага по укрытиям ; 3 - бежать от врага по укрытиям ; 4 - паника ; 5 - прятаться от врага ; 6 - обходить врага Гномик Так эти параметры лучше прибавлять или убавлять для большей крутизны? Сообщение от модератора Cyclone disp_walk_stand ;-->> точность на медленном ходу во весь рост disp_walk_crouch ;-->> точность ползком в полном приясяде disp_run_stand ;-->> точность на ходу(трусцой) disp_run_crouch ;-->> точность ползком disp_stand_stand ;-->> точность стоя во весь рост disp_stand_crouch ;-->> точность сидя disp_stand_stand_zoom ;-->> точность прицелившись стоя во весь рост disp_stand_crouch_zoom ;-->> точность прицелившись сидя Чем меньше значение - тем выше меткость. совсем не важно от чего ты умрёшь - гораздо важнее для чего ты родился Ссылка на комментарий
ColR_iT 171 Опубликовано 9 Февраля 2011 Поделиться Опубликовано 9 Февраля 2011 (изменено) Scarabay, спасибо, конечно! Но миникарта как не менялась от уровня, так и не меняется! А где ты в ТЧ видел такую штуку-дрюку? Ладно, не об этом. Все, что я нашел по этому рестриктору floor_3_space_restrictor, так это запись у зомби в all.spawn следующего вида: base_out_restrictors = floor_3_space_restrictor. Вот на всякий случай он весь: [4567] ; cse_abstract properties section_name = stalker_zombied name = x16_zombied_0007 position = -40.9127502441406,11.5656766891479,-18.7846279144287 direction = 3.96806353819557e-005,4.32763913593703e-009,-0.000109061744296923 ; cse_alife_trader_abstract properties money = 5000 character_profile = yan_zombied ; cse_alife_object properties game_vertex_id = 1530 distance = 69.2999954223633 level_vertex_id = 2714 object_flags = 0xffffffff custom_data = <<END [smart_terrains] none = true [logic] active = walker [walker] path_walk = x16_zombied_5_walk sound_idle = state END ; cse_visual properties visual_name = actors\stalker_zombi\stalker_zombie2 ; cse_alife_creature_abstract properties g_team = 0 g_squad = 0 g_group = 0 health = 1 dynamic_out_restrictions = dynamic_in_restrictions = upd:health = 1 upd:timestamp = 0 upd:creature_flags = 0 upd:position = -40.9127502441406,11.5656766891479,-18.7846279144287 upd:o_model = 0 upd:o_torso = 4.32763913593703e-009,3.96806353819557e-005,0 upd:g_team = 0 upd:g_squad = 0 upd:g_group = 0 ; cse_alife_monster_abstract properties base_out_restrictors = floor_3_space_restrictor 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 = 1,0,2,2,0 predicate4 = 2,2,2,0 ; cse_ph_skeleton properties upd:start_dialog = ; se_stalker properties Вообще не понятно, для чего эти пустые рестрикторы. По совету Kiragа поиск в скриптах так же ничего не дал. Еще обратил внимание, что для костров, те которые в all.spawn, также существует "пустой" рестриктор, вот один для примера: [584] ; cse_abstract properties section_name = space_restrictor name = camp_fire_0001 position = 115.827072143555,-6.96181488037109,9.30737209320068 direction = -2.27373675443232e-013,0,0 ; cse_alife_object properties game_vertex_id = 0 distance = 0 level_vertex_id = 594270 object_flags = 0xffffff3e ; cse_shape properties shapes = shape0 shape0:type = box shape0:axis_x = 1.7837952375412,0,0 shape0:axis_y = 0,1.93420171737671,0 shape0:axis_z = 0,0,1.7837952375412 shape0:offset = 0,0,0 ; cse_alife_space_restrictor properties restrictor_type = 2 И если можно ответе на мой предыдущий вопрос: для чего нужны два параметра in_rest и out_rest в гулагах, и как отследить попадание ГГ в рестриктор, который без логики и не помеченый стори_айди? Изменено 9 Февраля 2011 пользователем Куфзук Ссылка на комментарий
AKKK1 6 Опубликовано 9 Февраля 2011 Поделиться Опубликовано 9 Февраля 2011 Куфзук Давай по порядку 1. для чего нужны два параметра in_rest и out_rest в гулагах in_rest запрешенно входить в данный рестриктор(зону) out_rest запрешенно выходить из данного рестриктора(зоны) . пример попробуй любого сталкера из лагеря новичков отправить допустим к АТП или вагончику получиш (вылет) типа any vertex в не досягаемости для обьекта (имя того кого попытался туда заслать). Да И движку совсем не важно какой размер шейпа у смарт терайна в алл спавне . Главное чтоб от 0 отличался :ny_thumbsup: хоть 123.56678989 хоть 0.00000000000000001 Ссылка на комментарий
PGU_tk 9 Опубликовано 10 Февраля 2011 Поделиться Опубликовано 10 Февраля 2011 Такой вопрос у меня. Как спавнится 1000 патронов? Как обычно делают? В цикле? Или есть функция, которую я не нашел, в которую можно впихивать количество объектов, массив или что-то такое? https://www.youtube.com/watch?v=1h34a3CpkIc Ссылка на комментарий
Malandrinus 615 Опубликовано 10 Февраля 2011 Поделиться Опубликовано 10 Февраля 2011 PGU_tk, посмотри в теме справочник. Там про alife_simulator Плагины Total Commander для работы с игровыми архивами: Архиваторный плагин (для работы с одиночным архивом): link1 link2 Системный плагин (для распаковки установленной игры): link1 link2 Ссылка на комментарий
PGU_tk 9 Опубликовано 10 Февраля 2011 Поделиться Опубликовано 10 Февраля 2011 (изменено) malandrinus, если честно, смотрел неоднократно cse_abstract* create(string <имя секции объекта>, vector* position, int level_vertex_id, int game_vertex_id, int parent_id) // создание объектов в инвентаре --- стандартная, создаст только один объект по имени секции cse_abstract* create_ammo(string <имя секции патронов>, vector* position, int level_vertex_id, int game_vertex_id, int parent_id, int amount) // создание пачек с патронами --- создаст все равно одну пачку, но с варьируемым кол-вом патронов. зы больше ничего не нашел подходящего, из чего делаю вывод, что только цикл... Но поэтому я и спросил - вдруг не врубаю чего.. Изменено 10 Февраля 2011 пользователем PGU_tk https://www.youtube.com/watch?v=1h34a3CpkIc Ссылка на комментарий
_Призрак_ 11 Опубликовано 10 Февраля 2011 Поделиться Опубликовано 10 Февраля 2011 PGU_tk function test() for i=1,33 do --делаем это 33 раза --твой код для спавна end end Freedom Ссылка на комментарий
Министр 3 Опубликовано 10 Февраля 2011 Поделиться Опубликовано 10 Февраля 2011 PGU_tk, так что же мешает воспользоваться 2-ой ф-ей из перечисленных тобой? Ссылка на комментарий
PGU_tk 9 Опубликовано 10 Февраля 2011 Поделиться Опубликовано 10 Февраля 2011 Министр, там неправильно написано - создание пачек. На самом деле создается только одна пачка. Если в последнем параметре написать патронов больше, чем прописано в box_size для данного типа, то они просто проигнорируются. Таким образом, если у меня пачки по 30 патронов, то придется в цикле это все плодить, чтобы до 1000... А это странно - странно, что нет функции, генерирующей эн однотипных объектов или у которой первый параметр массив секций. Впрочем, что есть, то есть. _Призрак_, спасиб за ответ, я так и понял. Цикл я и сам могу написать, просто хотелось услышать чье-нибудь подтверждение.. https://www.youtube.com/watch?v=1h34a3CpkIc Ссылка на комментарий
Malandrinus 615 Опубликовано 10 Февраля 2011 Поделиться Опубликовано 10 Февраля 2011 PGU_tk, там неправильно написано - создание пачек. На самом деле создается только одна пачка. Вот ведь буквоед, юрист что-ли? =) Ты вероятно первый, кто понял это таким образом. Руки дойдут - подправлю. это странно - странно, что нет функции, генерирующей эн однотипных объектов или у которой первый параметр массив секций. Как раз странно было-бы делать в движке то, что можно реализовать парой строк скриптов? Плагины Total Commander для работы с игровыми архивами: Архиваторный плагин (для работы с одиночным архивом): link1 link2 Системный плагин (для распаковки установленной игры): link1 link2 Ссылка на комментарий
Garry_Galler 7 Опубликовано 10 Февраля 2011 Поделиться Опубликовано 10 Февраля 2011 (изменено) PGU_tk Я на инсайд-вики еще год назад выложил функцию для спавна любого набора объектов с указанием нужного кол-ва каждого объекта. Причем она спавнит как в инвентарь - ГГ или NPC (оффлайн\онлайн), так и по координатам. В качестве аргумента передается именно массив секций и прочие данные. ссылка Изменено 10 Февраля 2011 пользователем Garry_Galler Ссылка на комментарий
Хантер 0 Опубликовано 11 Февраля 2011 Поделиться Опубликовано 11 Февраля 2011 Добрый вечер! Прошу помощи у коммьюнити! Подскажите, пожалуйста, как сделать, чтобы в автомобиль нельзя было сесть без наличия у актора определённого предмета (ключей)? Ссылка на комментарий
ColR_iT 171 Опубликовано 11 Февраля 2011 Поделиться Опубликовано 11 Февраля 2011 (изменено) Хантер, привет! Wiki тебе в помощь: >>Click Me<< Хантер, а наличие инфопоршня проверял? Просто тут только в этом загвоздка может быть. Изменено 11 Февраля 2011 пользователем Cyclone Ссылка на комментарий
Хантер 0 Опубликовано 11 Февраля 2011 Поделиться Опубликовано 11 Февраля 2011 (изменено) function proceed() local actor = db.actor if has_alife_info("tutorial_artefact_start") and not has_alife_info("tutorial_artefact_gain") and actor:object("af_blood_tutorial") ~= nil then actor:give_info_portion("tutorial_artefact_gain") end ---------------------------------------------------------------------- if not has_alife_info("actor_has_niva_key") and actor:object("niva_keys") ~= nil then actor:give_info_portion("actor_has_niva_key") --news_manager.send_tip(db.actor, "find_keys_info") end if actor:object("niva_keys")== nil then actor:disable_info_portion("actor_has_niva_key") end ----------------------------------------------------------------------- Это вставил в escape_tasks.script Прикол в том, что мой тестер говорит, якобы в тёмной долине сесть в автомобиль без ключа он не смог. 0_0 В тёмной долине автомобили заспаунены через all.spawn , а на кордоне через скрипт. Может, в скрипте нужно прописывать логику автомобиля? Изменено 11 Февраля 2011 пользователем Хантер Ссылка на комментарий
ColR_iT 171 Опубликовано 11 Февраля 2011 Поделиться Опубликовано 11 Февраля 2011 (изменено) Хантер, вероятно - да! Делаеться это через нет_пакеты, сказать как, наверняка не скажу, углубленно не ковырял, но где-то видел, как скриптами добавляли space_restrictor, можно посмотреть и сделать по аналогии, правда, где видел, чего-то запамятовал... --------- Вот нашел! Статья с СП: Первое обновление. Теперь можно выбирать, какой формы будет рестриктор, Шар или Куб. Для Куба устанавливаются размеры по x,y,z. Второе обновление. Теперь, в качестве кастом даты, можно указывать ltx файлы, из папки config. Путь указывается таким образом: local ltx = "scripts\имя_файла.ltx" Итак. Создаём файл _new_create.script, если такового ещё нет, и добавляем в него нашу функцию: function create_restr(storid, pos_restr, lvid_restr, gvid_restr, custom_restr, radius_restr, ax_x, ax_y, ax_z) local obj = alife():create("space_restrictor", pos_restr, lvid_restr, gvid_restr) local packet = net_packet() obj:STATE_Write(packet) ----------------------- load ------------------------------ local game_vertex_id = packet:r_u16() local cse_alife_object__unk1_f32 = packet:r_float() local cse_alife_object__unk2_u32 = packet:r_u32() local level_vertex_id = packet:r_u32() local object_flags = packet:r_u32() local custom_data = packet:r_stringZ() local story_id = packet:r_u32() local spawn_story_id = packet:r_u32() local shape_count = packet:r_u8() for i=1,shape_count do local shape_type = packet:r_u8() if shape_type == 0 then local center = packet:r_vec3() local radius = packet:r_float() else local axis_x = packet:r_vec3() local axis_y = packet:r_vec3() local axis_z = packet:r_vec3() local offset = packet:r_vec3() end end local restrictor_type = packet:r_u8() -------------------------- save ----------------------------- packet:w_begin(game_vertex_id) packet:w_float(cse_alife_object__unk1_f32) packet:w_u32(cse_alife_object__unk2_u32) packet:w_u32(level_vertex_id) packet:w_u32( bit_not(193) ) if custom_restr ~= nil then if string.find (custom_restr, '.ltx') ~= nil then custom_restr = '[logic]\n cfg = '..custom_restr..'\n' end packet:w_stringZ(custom_restr) else packet:w_stringZ(custom_data) end if storid ~= nil then packet:w_u32(storid) else packet:w_u32(story_id) end packet:w_u32(spawn_story_id) packet:w_u8(1) if radius_restr ~= nil then packet:w_u8(0) packet:w_vec3(vector():set(0, 0, 0)) packet:w_float(radius_restr) elseif radius_restr == nil and ax_x == nil then packet:w_u8(0) packet:w_vec3(vector():set(0, 0, 0)) packet:w_float(2.5) else packet:w_u8(1) packet:w_vec3(vector():set(ax_x, 0, 0)) packet:w_vec3(vector():set(0, ax_y, 0)) packet:w_vec3(vector():set(0, 0, ax_z)) packet:w_vec3(vector():set(0, 0, 0)) end packet:w_u8(restrictor_type) ----------------------------------------------------- packet:r_seek(0) obj:STATE_Read(packet, packet:w_tell()) end Вызов спавна будет производиться из других функций, других файлов, таким образом: для формы Шар: _new_create.create_restr(sid, pos, lv, gv, ltx, radius) для Формы Куб: _new_create.create_restr(sid, pos, lv, gv, ltx, nil, x, y, z) Где: sid --стори айди рестриктора (или nil, если не используется) pos --позиция спавна рестриктора vector():set(x,y,z) lv --левел вертекс позиции спавна gv --гейм вертекс позиции спавна ltx --кастом дата рестриктора radius --радиус зоны рестриктора (в метрах) (или nil, если используется форма куба) x,y,z --размеры куба, по x,y,z соответственно. Теперь разберём такие настройки как, ltx и sid. --------------------------------- ltx Кастом дата рестриктора. Тобишь, логика по которой будет работать данный рестриктор. Чтобы указать логику из статитеского файла ltx, находящегося в папке config, нужно прописать так: local ltx = "scripts\\имя_файла.ltx" или local ltx = "misc\\имя_файла.ltx" или local ltx = "имя_файла.ltx" В зависимости от того, где лежит требуемый файл, относительно папки config. Если нас статический ltx не устраивает. То можно прописать логику динамически. Тобишь, в той же функции, от куда и будет вызываться спавн рестриктора. Итак, пред вызовом спавна создаём локальную переменную ltx, и в значении данной переменной прописываем всю логику нашего рестриктора. Например, установим эффект активации слота "ножь", при входе ГГ в рестриктор: local ltx = "[logic]\n".. "active = sr_idle@in\n".. "[sr_idle@in]\n".. "on_actor_inside = %=activate_knife% sr_idle@out\n".. "[sr_idle@out]\n".. "on_actor_outside = sr_idle@in\n" Разберём особенности динамического ltx: \n -прописать в новой строке, динамического файла ltx. .. -привязать следующую строку к общей схеме динамического ltx. Каждая строка, обязательно заключается в кавычки, кроме двоеточия. В последней строке, двоеточие запрещается ставить категорически. Если логика рестриктора, не предусмотрена, то вместо неё ставить nil. ------------------------------------------------------- sid Стори айди рестриктора. Используется при отслеживании попадания неписей под рестриктор. Если не используется, то ставить значение nil. ------------------------------------------------------- Есть возможность использовать значения по умолчанию: _new_create.create_restr(sid, pos, lv, gv, ltx) или _new_create.create_restr(sid, pos, lv, gv) если custom_data не предусматривается. По умолчанию рестриктор имеет форму Шара, с радиусом 2.5 метра. Да, нет! Пример со спейс рестриктором я тебе привел, для того, чтобы показать (приблизительно), как объекту заспавненому через скрипт приписать, туже кустом_дату или стори_айди. Изменено 11 Февраля 2011 пользователем Cyclone Ссылка на комментарий
Хантер 0 Опубликовано 11 Февраля 2011 Поделиться Опубликовано 11 Февраля 2011 Что-то я не пойму... Спаун_рестриктор будет привязан к точке на местности или к машине, если его заспаунить туда же, куда и машину? Ссылка на комментарий
stunder 12 Опубликовано 11 Февраля 2011 Поделиться Опубликовано 11 Февраля 2011 Спейс_рестриктор привязан к точке на местности Мод "Жесть" В команду Two Team ("Жесть") требуется моделлер. Ссылка на комментарий
Хантер 0 Опубликовано 11 Февраля 2011 Поделиться Опубликовано 11 Февраля 2011 Кастом_дату привязать к машине в скрипте не получается. Просто ничего не меняется: подхожу к машине без ключей и сажусь в неё. Ссылка на комментарий
_Призрак_ 11 Опубликовано 11 Февраля 2011 Поделиться Опубликовано 11 Февраля 2011 Хантер Во-первых, почему бы тебе не заспавнить и вторую машину через алл.спавн? А во-вторых, попробуй зарегистрировать твою машинку в spawn_section. Не уверен что чтото получится, но все же: [meganiva]:niva custom_data = scripts\hanter\meganiva.ltx ;путь до файла с логикой Только вот я не помню какое имя секции у нивы, поэтому вместо niva напиши имя секции. И спавнить потом уже нужно будет не niva, а meganiva Freedom Ссылка на комментарий
Хантер 0 Опубликовано 11 Февраля 2011 Поделиться Опубликовано 11 Февраля 2011 Ничего не дало. А машину нельзя заспаунить через алл.спаун, потому что она должна появляться после определённой реплики в диалоге. Ссылка на комментарий
Рекомендуемые сообщения
Создайте аккаунт или авторизуйтесь, чтобы оставить комментарий
Комментарии могут оставлять только зарегистрированные пользователи
Создать аккаунт
Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!
Зарегистрировать новый аккаунтВойти
Есть аккаунт? Войти.
Войти