Это популярное сообщение. Dennis_Chikin 3 658 Опубликовано 16 Мая 2014 Это популярное сообщение. Поделиться Опубликовано 16 Мая 2014 (изменено) Ковыряемся в файлах ТЧ Прежде чем писать в тему - внимательно читаем первый пост, и пользуемся поиском.Возможно, ответ на Ваш вопрос уже есть.Касательно телепатии: если Вы передаете Ваши файлы телепатическим путем - ответы будут передаваться тоже телепатически. Если Вы предлагаете угадать, отчего у Вас в подвале происходит странный стук - ответ будет передан стуком. Изменено 23 Февраля 2016 пользователем warwer 4 8 6 12 Солянка обезжиренная, диетическая, полезные советы по "солянке", текущий тестовый патч Ссылка на комментарий
Kober(BRUC) 99 Опубликовано 14 Августа 2016 Поделиться Опубликовано 14 Августа 2016 (изменено) @Ximera_1999, создание переходов скриптом. Автор - не я. function create_level_changer( -- Спавн переходов между локациями p_story_id, -- STORY_ID нового level_changer (понадобится нам позже) p_position, -- вектор, координаты точки, в которой будет располагаться центр нового level_changer p_lvertex_id, -- level_vertext_id - идентифицируют уровень, на котором будет создан level_changer p_gvertex_id, -- game_vertext_id p_dest_lv, -- level_vertex_id - идентифицируют уровень, на который level_changer будет перебрасывать игрока p_dest_gv, -- game_vertex_id p_dest_pos, -- координаты точки, в которой на новом уровне окажется игрок p_dest_dir, -- направрение взгляда игрока p_dest_level, -- название уровня, например "L11_Pripyat" p_silent -- следует задать 1, чтобы подавить вопрос о смене уровня (автоматический переход) ) local obj = alife():create("level_changer", p_position, p_lvertex_id, p_gvertex_id) level.map_add_object_spot(obj.id, "level_changer", "") local packet = net_packet() obj:STATE_Write(packet) -- свойства cse_alife_object 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() -- свойства cse_shape local shape_count = packet:r_u8() for i=1,shape_count do local shape_type = packet:r_u8() if shape_type == 0 then -- sphere local center = packet:r_vec3() local radius = packet:r_float() else -- box local axis_x_x = packet:r_float() local axis_x_y = packet:r_float() local axis_x_z = packet:r_float() local axis_y_x = packet:r_float() local axis_y_y = packet:r_float() local axis_y_z = packet:r_float() local axis_z_x = packet:r_float() local axis_z_y = packet:r_float() local axis_z_z = packet:r_float() local offset_x = packet:r_float() local offset_y = packet:r_float() local offset_z = packet:r_float() end end -- свойства cse_alife_space_restrictor local restrictor_type = packet:r_u8() -- свойства cse_level_changer local dest_game_vertex_id = packet:r_u16() local dest_level_vertex_id = packet:r_u32() local dest_position = packet:r_vec3() local dest_direction = packet:r_vec3() local dest_level_name = packet:r_stringZ() local dest_graph_point = packet:r_stringZ() local silent_mode = packet:r_u8() packet:w_begin(game_vertex_id) -- 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) -- level_vertex_id packet:w_u32( bit_not(193) ) -- object_flags = -193 = 0xFFFFFF3E packet:w_stringZ(custom_data) packet:w_u32(p_story_id) -- story_id packet:w_u32(spawn_story_id) packet:w_u8(1) -- количество фигур packet:w_u8(1) -- тип фигуры: box packet:w_float(2) -- axis_x_x packet:w_float(0) -- axis_x_y packet:w_float(0) -- axis_x_z packet:w_float(0) -- axis_y_x packet:w_float(4) -- axis_y_y packet:w_float(0) -- axis_y_z packet:w_float(0) -- axis_z_x packet:w_float(0) -- axis_z_y packet:w_float(4) -- axis_z_z packet:w_float(0) -- offset_x packet:w_float(0) -- offset_y packet:w_float(0) -- offset_z packet:w_u8(3) -- restrictor_type packet:w_u16(p_dest_gv) -- destination game_vertex_id packet:w_u32(p_dest_lv) -- destination level_vertex_id packet:w_vec3(p_dest_pos) -- destination position packet:w_vec3(p_dest_dir) -- destination direction (направление взгляда) packet:w_stringZ(p_dest_level) -- destination level name packet:w_stringZ("start_actor_99") -- some string, always const packet:w_u8(p_silent) -- 1 for silent level changing packet:r_seek(0) obj:STATE_Read(packet, packet:w_tell()) end function Название_функции() create_level_changer(31410, vector():set( 917.35, 0.419, -316.35 ), 403866, 2401, 73868, 2117, vector():set( 31.3, 3.0, 240.0 ), vector():set( 0.0, 0.0, -1.0 ), "L11_Pripyat", 0) end Отметка на карте: --Находим файл level_tasks.script и в функции add_lchanger_location пишим: obj = sim:story_object(11410) if obj then level.map_add_object_spot(obj.id, "level_changer", "To Pripyat") end Здесь 11410 - story_id нашего level_changer Криво и косо описал. Но надеюсь поймешь. Если нет, то в ЛС. Изменено 14 Августа 2016 пользователем Kober(BRUC) 1 Ссылка на комментарий
AndrewMor 517 Опубликовано 14 Августа 2016 Поделиться Опубликовано 14 Августа 2016 (изменено) Сдается мне, что твои функции пытаются передать один и тот же предмет. Да я таким способом сколько раз передавал предметы, и не по одному, а помногу. Опытным путем выяснил, что передача одного (!) предмета проходит на ура, передача двух и более (именно этих!) предметов - вылет. При том, что любые другие предметы (патроны, например) передаются кучами без вылета. Собсно, не может ли это быть связано с массой предмета (в районе 4 кг)? мб через цикл, что то типа У меня была такая мысль, но я уже отказался от всей этой затеи. Изменено 14 Августа 2016 пользователем AndrewMor Сталкер - наше всё! Ссылка на комментарий
monk 2 772 Опубликовано 14 Августа 2016 Поделиться Опубликовано 14 Августа 2016 (изменено) Остается только вопрос с курсором Если смог разобраться с этим, то прошу поделиться опытом. Изменено 14 Августа 2016 пользователем monk 1 Подарки Ссылка на комментарий
Silver Raven 197 Опубликовано 14 Августа 2016 Поделиться Опубликовано 14 Августа 2016 (изменено) @monk, пока нет. Бала одна теория, но почитав соответствующие статьи понял, что на ТЧ это невозможно реализовать. Во всяком случае без правок движка, а в этом я не бум-бум... З.Ы. По прежнему ищу функцию вида: if game_difficulty = "novice" or "stalker" then return true end return false end Понятое дело не в виде такого бреда. Чисто для передачи общей структуры. Не знаю, как у нас в игре ПЫС указывали сложность, цифрами или пресетами. Изменено 14 Августа 2016 пользователем Silver Raven 1 aka Stalker_AleX333 Мои проекты - ЯндексДиск | Я на Gamer-Mods.ru Ссылка на комментарий
Overfirst 628 Опубликовано 14 Августа 2016 Поделиться Опубликовано 14 Августа 2016 @Silver Raven, не знаю, работает ли в ТЧ подобная вещь, но попробуй сделать так: var = get_console():get_float("g_game_difficulty") if var == "novice" or "stalker" then ... end Возможные значения: novice, stalker, expirience, gd_master. Отпиши потом, самому интересно, но, честно говоря, я склоняюсь к вылету... Ранее был известен под ником BoBaH_671. Ссылка на комментарий
Eugen81 1 008 Опубликовано 14 Августа 2016 Поделиться Опубликовано 14 Августа 2016 @BoBaH_671, вылетит. get_float - дробное число, а там строка. @Silver Raven, local game_difficult = get_console():execute( "g_game_difficulty" ) if game_difficult == "gd_novice" or "gd_stalker" then return true end return false Ссылка на комментарий
Silver Raven 197 Опубликовано 14 Августа 2016 Поделиться Опубликовано 14 Августа 2016 @BoBaH_671, @Eugen81, игра падает с обоими вариантами. Добавлено Eugen81, 14 Августа 2016 А так: if game_difficult == "gd_novice" or game_difficult == "gd_stalker" then ? aka Stalker_AleX333 Мои проекты - ЯндексДиск | Я на Gamer-Mods.ru Ссылка на комментарий
Overfirst 628 Опубликовано 14 Августа 2016 Поделиться Опубликовано 14 Августа 2016 @Silver Raven, лог? Ранее был известен под ником BoBaH_671. Ссылка на комментарий
Silver Raven 197 Опубликовано 14 Августа 2016 Поделиться Опубликовано 14 Августа 2016 (изменено) А так: if game_difficult == "gd_novice" or game_difficult == "gd_stalker" then ? И так не хочет работать. @BoBaH_671, лог - классика жанра: FATAL ERROR [error]Expression : fatal error [error]Function : CScriptEngine::lua_error [error]File : E:\stalker\sources\trunk\xr_3da\xrGame\script_engine.cpp [error]Line : 73 [error]Description : <no expression> [error]Arguments : LUA error: ...a.l.k.e.r. - trilogy\shoc\gamedata\scripts\_g.script:20: bad argument #2 to 'format' (string expected, got no value) Изменено 14 Августа 2016 пользователем Silver Raven aka Stalker_AleX333 Мои проекты - ЯндексДиск | Я на Gamer-Mods.ru Ссылка на комментарий
Eugen81 1 008 Опубликовано 14 Августа 2016 Поделиться Опубликовано 14 Августа 2016 (изменено) @Silver Raven, а вот так? local difficultyNumber = level.get_game_difficulty() if difficultyNumber <= 1 then return true end return false 0 - новис3 - мастер Изменено 14 Августа 2016 пользователем Eugen81 1 2 Ссылка на комментарий
Kondr48 314 Опубликовано 14 Августа 2016 Поделиться Опубликовано 14 Августа 2016 А чего вы ожидали товарищи?) Пытаетесь читать строку как число с плавающей запятой. Сделайте так: local game_difficult = get_console():get_string("g_game_difficulty") function difficult_check() if game_difficult == "gd_novice" or game_difficult == "gd_stalker" then return true else return false end end Ссылка на комментарий
EggIeRar(V.N.S.L) 0 Опубликовано 14 Августа 2016 Поделиться Опубликовано 14 Августа 2016 Доброго времени суток, уважаемые пользователи амк-форума. Я хотел бы поинтересоваться,можно ли реализовать фичу из ЛА(ЛостАльфа),Где если ты убил нпс,а у него в рюкзаке был дробаш к примеру(то он у него на спине висит)Думаю понятно про что я твержу.Мне один человек подсказал что это настраивается как-то и вовсе не мод это.(где-то в конфигах.) Простите если оффтоп или что-то не правильно.Поправьте в данном случае. А и еще вопрос к знатокам - как сделать квест большой.(не обычный "подай - принеси"),а большой как например с флешкой у волка. Многоэтапный такой и все такое. помогите,буду благодарен. 2 Ссылка на комментарий
Kondr48 314 Опубликовано 14 Августа 2016 Поделиться Опубликовано 14 Августа 2016 EggIeRar(V.N.S.L), касательно дробовика вообще непонятно на самом деле. А по поводу квеста, вот свой пример с флешкой волка и смотрите. Квест esc_flash_task ищите в файлах. Ссылка на комментарий
EggIeRar(V.N.S.L) 0 Опубликовано 14 Августа 2016 Поделиться Опубликовано 14 Августа 2016 EggIeRar(V.N.S.L), касательно дробовика вообще непонятно на самом деле. А по поводу квеста, вот свой пример с флешкой волка и смотрите. Квест esc_flash_task ищите в файлах. понял спасибо. Постораюсь понятнее донести. - Если у нпс есть пушка,то она висит за спиной (ну как у Петрухи пока он с биноклем например). -И во время смерти(т.е если убить чтоб пушка дальше так же и висела за спиной).и виузал оружия будет зависить от того какое оно в рюкзаке у убитого. надеюсь понятно. Ссылка на комментарий
Kondr48 314 Опубликовано 14 Августа 2016 Поделиться Опубликовано 14 Августа 2016 (изменено) EggIeRar(V.N.S.L), в xr_motivator.script есть колбек (function motivator_binder:death_callback(victim, who) ) который вызывается при смерти каждого НПС. Посмотрите, мб эти изменения в нём. Изменено 14 Августа 2016 пользователем Kondr48 Ссылка на комментарий
EggIeRar(V.N.S.L) 0 Опубликовано 14 Августа 2016 Поделиться Опубликовано 14 Августа 2016 (изменено) EggIeRar(V.N.S.L), в xr_motivator.script есть колбек (function motivator_binder:death_callback(victim, who) ) который вызывается при смерти каждого НПС. Посмотрите, мб эти изменения в нём. Я в скриптах плохо. Если только прописать что куда либо, и то, могу напортачить. Вот. Я посмотрю,_покопаю,_может чего и найду. Изменено 14 Августа 2016 пользователем Eugen81 Добавлено Eugen81, 14 Августа 2016 Правила цитирования.Проверка орфографии. Ссылка на комментарий
Silver Raven 197 Опубликовано 14 Августа 2016 Поделиться Опубликовано 14 Августа 2016 @Eugen81, и так тоже. Добавлено Eugen81, 14 Августа 2016 Морочишь голову... Думал догадаешься завернуть в function bla-bla()... Второй код рабочий. aka Stalker_AleX333 Мои проекты - ЯндексДиск | Я на Gamer-Mods.ru Ссылка на комментарий
Карлан 1 049 Опубликовано 14 Августа 2016 Поделиться Опубликовано 14 Августа 2016 @EggIeRar(V.N.S.L), это движковая фишка, файл называется stalker_death_actions.cpp, достаточно запретить дроп и ничего с оружием не делать, но я не рекомендую, и сразу, не рекомендую копировать из лост альфы, это такая мерзкая фишка на самом деле, не вижу смысла расписывать портянку по клиент-серверу, но вот как есть, можете, конечно, попытаться и поймете о чем я говорю. @Silver Raven, local game_difficulty_by_num = { [0] = "novice", [1] = "stalker", [2] = "veteran", [3] = "master", } function get_str_diff() return game_difficulty_by_num[level.get_game_difficulty()] end local diff = get_str_diff() if diff == 'novice' then --// bla-bla-bla end 1 Ссылка на комментарий
BFG 7 576 Опубликовано 14 Августа 2016 Поделиться Опубликовано 14 Августа 2016 Существует маленький мод позволяющий видеть рестрикторы. Чем то они там подсвечиваются, вроде партиклами. А существует ли скриптовый способ, точно так же подсветить все фэйковые поверхности на локации ? Спасибо. "Кругом зомби.....у меня кончаются патроны...." Ссылка на комментарий
Silver Raven 197 Опубликовано 14 Августа 2016 Поделиться Опубликовано 14 Августа 2016 (изменено) @BFG, дык у нас на форуме, вроде была тема по какой-то разработке с такими возможностями. Забыл где. И рестрикторы отрисовываются и спавном можно заниматься, прямо на месте. @Карлан, отлично. Работает. Как и этот вариант от @Kondr48: local game_difficult = get_console():get_string("g_game_difficulty") function difficult_check() if game_difficult == "gd_novice" or game_difficult == "gd_stalker" then return true else return false end end А возможно как-то обойти необходимость регистрировать\прописывать функции вызываемые из логики в xr_effects.script? Насчет курсора, есть одна идея. Ему можно задавать координаты на экране? Если да, то как вывести его далеко за пределы экрана, тем самым "скрыв" от игрока? Возможно как-нибудь разделить такую портянку на части? Читать очень неудобно: [sr_idle@check_game_difficult_and_actor_outfit] on_actor_inside = %=lab_x7_check_game_difficult =lab_x7_biohazard_check_actor_outfit% {-lab_x7_actor_chose_hight_difficult -lab_x7_actor_have_bioprotection_outfit} sr_timer@biohazard_without_bioprotection_outfit_low_difficult, {-lab_x7_actor_chose_hight_difficult +lab_x7_actor_have_bioprotection_outfit} sr_timer@biohazard_with_bioprotection_outfit_low_difficult, {+lab_x7_actor_chose_hight_difficult -lab_x7_actor_have_bioprotection_outfit} sr_timer@biohazard_without_bioprotection_outfit_hight_difficult, {+lab_x7_actor_chose_hight_difficult +lab_x7_actor_have_bioprotection_outfit} sr_timer@biohazard_with_bioprotection_outfit_hight_difficult Изменено 14 Августа 2016 пользователем Silver Raven aka Stalker_AleX333 Мои проекты - ЯндексДиск | Я на Gamer-Mods.ru Ссылка на комментарий
Рекомендуемые сообщения
Создайте аккаунт или авторизуйтесь, чтобы оставить комментарий
Комментарии могут оставлять только зарегистрированные пользователи
Создать аккаунт
Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!
Зарегистрировать новый аккаунтВойти
Есть аккаунт? Войти.
Войти