lekzd 1 Опубликовано 25 Января 2010 (изменено) malandrinus, просто хотелось бы, чтобы предмет именно висел как в HL 2 есть скрипт amk_target - он выводит на худ целеуказатели, которые наводятся точно на голову (точнее на кость) НПС-ам в округе скрипт вообще недоделан - но самая сложная математика там есть я смог допилить его до тут по 5 костям я вычисляю примерно в какие "рамки" можно загнать непися для отображения + добавил увеличение - уменьшения рамки взависимости от расстояния, FOV и прочего + добавил отсеивание тех НПС, которые стоят за стенами и другим препятствиями (правда если хоть чуть ноги видно - непись определяется) с предметами все будет нааамного проще Изменено 25 Января 2010 пользователем lekzd Поделиться этим сообщением Ссылка на сообщение
lekzd 1 Опубликовано 25 Января 2010 malandrinus, есть кнопка tab - нажали один раз - подтянули предмет - нажали второй раз - и сколько держим - с такой силой и кинем его Поделиться этим сообщением Ссылка на сообщение
lekzd 1 Опубликовано 25 Января 2010 malandrinus, речь шла только о физических объектах - а у них вроде секция только одна вот еще ни одного мода не видел, где на tab что-либо вешали а определние ЛКМ - можно сделать без смещения FOV - тогда расчитываем по функции math.ceil(db.actor.accuracy()*1000) если возвращает единицу - значит мы целимся, иначе число будет выше Поделиться этим сообщением Ссылка на сообщение
lekzd 1 Опубликовано 27 Января 2010 Monnoroch, В диалогах вылезет ошибка, если функция вернет nil Поделиться этим сообщением Ссылка на сообщение
lekzd 1 Опубликовано 27 Января 2010 qwertyuiop, иди в тему "Справочник по функциям и классам" Поделиться этим сообщением Ссылка на сообщение
lekzd 1 Опубликовано 28 Января 2010 qwertyuiop, ты просил описания - ты получил описания - ради тебя никто стараться не будет - а флудить по этому поводу в справочнике не стоит лучше после выкидывания объекта давай ему пинок - так будет проще item:get_physics_shell():apply_force(0,item:mass()*10,0) подбросит предмет вверх со скоростью 10 м/с - осталось тебе найти, как прикладывать силу взависимости от направления взгляда скриптового определения есть ли стенка в нужной точке НЕ СУЩЕСТВУЕТ Поделиться этим сообщением Ссылка на сообщение
lekzd 1 Опубликовано 1 Февраля 2010 Starter, тогда "отключится" вешание артефактов на пояс - ибо после двойного клика артефакт оказывается там - значит, если он на поясе, то удаляем его и создаем аномалию - способ менее красивый. чем оригинальный Поделиться этим сообщением Ссылка на сообщение
lekzd 1 Опубликовано 2 Февраля 2010 Friday13, Создать два вида "данного" оружия - одно будет с магазином в 0 патронов, другое - сколько надо если надет экзоскелет и в инвентаре 0-вое оружие - удаляем и спавним вместо него стреляющее оружие и наоборот, если не надет экзоскелет Поделиться этим сообщением Ссылка на сообщение
lekzd 1 Опубликовано 2 Февраля 2010 _Призрак_, после if (weapon:section()=="wpn_pkm" or weapon:section()=="wpn_m60" or weapon:section()=="wpn_minigun") then вставляешь local cur_weap = weapon:section() далее функция спавна будет выглядеть так: local tmpw = amk.spawn_item_in_inv(cur_weap) Поделиться этим сообщением Ссылка на сообщение
lekzd 1 Опубликовано 2 Февраля 2010 (изменено) Starter, SCRIPT, походу никто из вас не читал скриптов 1935-го билда - я даже их отдельно все собрал: ----------------------------------------------------------------------------------------------------------------------------------- function play_sound (obj, delay, theme, sub_theme, phrase_set, sub_phrase) --Немного поменял Джон. Просьба не ругаться и не бить(особенно по голове - ей еще думать). Закоментированное --надо будет стереь. У меня рука не поднялась. this.play_sound_rnd(obj, delay, delay + 1, theme, sub_theme, phrase_set, sub_phrase) end ----------------------------------------------------------------------------------------------------------------------------------- -- Отбайндивание моих действий от сталкера -- Если мужик друг и у нас более 50 оборотов здоровья, то идем на помощь -- Враг. Идем его мочить, если у нас хорошее вооружение и здоровья не менее 90% -- не поддается классификации - пошел вон --Херово построен путь. Читай доку по настройке стрелка //Тут по идее может вылетать --Stalker_zombe - и ежу понятно, что это сталкер зомби -- Переменные ниже - не настроечные, их менять нельзя :-) --' Если мы подошли к трупу - поплакать и уйти --'4. Если стоим на точке - петь песенки и прочую херню --printf( "OPAAAAAA!!!!!! Actor is close!!!!!!!!!!!!" ) SCRIPT, не ну ты же не тупой (включай мозг) у меня в кофигах вообще голова орущего спартанца - я всегда это понимал, как пасхалку для мододелов Изменено 2 Февраля 2010 пользователем lekzd Поделиться этим сообщением Ссылка на сообщение
lekzd 1 Опубликовано 3 Февраля 2010 Monnoroch, sleep_callback - правда он закомментирован, но если сон восстановили - должен работать Поделиться этим сообщением Ссылка на сообщение
lekzd 1 Опубликовано 6 Февраля 2010 STARTS, 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(0) -- тип фигуры: сфера -- packet:w_vec3(vector():set(0, 0, 0)) -- sphere_center -- packet:w_float(3.0) 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_s32(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_02") -- 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()) level.add_pp_effector ("teleport.ppe", 2006, false) end function spawn_tele_bar(obj) -- local art_section = "af_electra_moonlight" if obj:section() == "tele_bar" then --and db.actor:object(art_section) then local rnd = math.random(7) if rnd == 1 then bar() alife():release(alife():object(obj:id())) elseif rnd == 2 then bar2() alife():release(alife():object(obj:id())) elseif rnd == 3 then bar3() alife():release(alife():object(obj:id())) elseif rnd == 4 then bar4() alife():release(alife():object(obj:id())) elseif rnd == 5 then bar5() alife():release(alife():object(obj:id())) elseif rnd == 6 then bar6() alife():release(alife():object(obj:id())) else bar7() alife():release(alife():object(obj:id())) end end end function bar() create_level_changer(9821, db.actor:position(), db.actor:level_vertex_id(), db.actor:game_vertex_id(), 45474, 1188, vector():set(193.61143493652,0.097166806459427,71.526657104492), vector():set(0.0, 0.0, 0.0), "l05_bar", 1) end function bar2() create_level_changer(9843, db.actor:position(), db.actor:level_vertex_id(), db.actor:game_vertex_id(), 47206, 1270, vector():set(198.24176025391,3.271665096283,-77.252685546875), vector():set(0.0, 0.0, 0.0), "l05_bar",1) end function bar3() create_level_changer(9844, db.actor:position(), db.actor:level_vertex_id(), db.actor:game_vertex_id(),59366, 1277, vector():set(232.64491271973,5.1447978019714,-113.61502838135), vector():set(0.0, 0.0, 0.0), "l05_bar", 1) end function bar5() create_level_changer(9845, db.actor:position(), db.actor:level_vertex_id(), db.actor:game_vertex_id(),68763, 1274, vector():set(276.64755249023,0.055086404085159,-66.742523193359), vector():set(0.0, 0.0, 0.0), "l05_bar", 1) end function bar6() create_level_changer(9846, db.actor:position(), db.actor:level_vertex_id(), db.actor:game_vertex_id(),35860, 1238,vector():set(128.80438232422,-4.8249382972717,16.76756477356), vector():set(0.0, 0.0, 0.0),"l05_bar", 1) end function bar7() create_level_changer(9847, db.actor:position(), db.actor:level_vertex_id(), db.actor:game_vertex_id(),33903, 1239, vector():set(116.09830474854,-5.3052234649658,12.649393081665), vector():set(0.0, 0.0, 0.0), "l05_bar", 1) end --################################################################################ #################### function spawn_stasok() local obj = amk.spawn_item("stasok",vector():set(-234.90,-19.67,-156.88),47,20038) local tbl = amk.read_stalker_params(obj) tbl.health = 0 tbl.updhealth = 0 amk.write_stalker_params(tbl, obj) end function flash(first_speaker, second_speaker) dialogs.relocate_item_section(first_speaker, "ogg_flash_1", "in") end function xna(stalker, player) return stalker:object ("pda") ~= nil end function pda(first_speaker, second_speaker) dialogs.relocate_item_section(second_speaker, "pda", "out") end function af_rak(first_speaker, second_speaker) dialogs.relocate_item_section(second_speaker, "af_wind", "out") end function proverka_antirad() if not db.actor:object("antirad") then local news_text = "%c[255,160,160,160]Автоматическая система ввода медицинских препаратов\\n%c[default]Напоминаю: %c[255,230,0,0]Противорадиационные препараты отстутствуют!%c[default]Автоматический ввод препаратов невозможен " db.actor:give_game_news(news_text, "ui\\ui_iconsTotal",Frect():set(0,188,83,47), 0, 3000) end end 2 ошибки были: случайно сделал перенос в комментарии "--########" пропустил один end в конце в следующий раз юзай lua checker Поделиться этим сообщением Ссылка на сообщение
lekzd 1 Опубликовано 8 Февраля 2010 Monnoroch, Только вот тут сомнение,что если сделать эдит активным - будет ли активным сталкер... финалка по-дефолту встанет на паузу (более ранние билды вообще вылетали) - проверено + главная сложность не в том, чтобы отловить клавишу (это можно делать глобально: функция GetAssyhcKeyState() - читаем MSDN), а в том, чтобы клавишу нажать в DXInput, видел наработки для других игр, но сорцов нигде нет единственный путь, что я знаю - писать драйвер, иначе с клавиатурным буфером работать не получается Поделиться этим сообщением Ссылка на сообщение
lekzd 1 Опубликовано 8 Февраля 2010 Shader 3.00, в SDK есть прога - Shader editor Поделиться этим сообщением Ссылка на сообщение
lekzd 1 Опубликовано 9 Февраля 2010 SCRIPT, textures/prop/prop_map_dolg.dds Поделиться этим сообщением Ссылка на сообщение
lekzd 1 Опубликовано 9 Февраля 2010 Starter, выкладывай , я на прицеливаниях собаку съел Добавлено через 2 мин.: Monnoroch, определение нажатия ПКМ работает и с биноклем не работает только с ножами, болтами и гранатами Поделиться этим сообщением Ссылка на сообщение
lekzd 1 Опубликовано 9 Февраля 2010 malandrinus, ага, и плавать, как в денди - прыжками по воде)))) Поделиться этим сообщением Ссылка на сообщение
lekzd 1 Опубликовано 10 Февраля 2010 Starter я этим уже занят - пока утром перед институтом удалось по-быстрому скачать твои модели, присобачить их к биноклю и отключить рамки, и увеличение скриптами может сегодня ночью, после работы займусь Поделиться этим сообщением Ссылка на сообщение
lekzd 1 Опубликовано 12 Февраля 2010 sapsan, лови инфопоршень!!! без этого level.main_input_receiver() вернет nil имена сам узнаешь - просто сунь в bind_stalker.script после function actor_binder:info_callback(npc, info_id) строку get_console():execute(info_id) далее в этой же функции можешь делать условие по info_id Поделиться этим сообщением Ссылка на сообщение
lekzd 1 Опубликовано 12 Февраля 2010 (изменено) sapsan, db.actor:has_info("ui_inventory") и больше тебе ничего не надо, если итем не съедобный (т.е. его можно выкинуть только из инвентаря) Добавлено через 16 мин.: sapsan, ну да - тебе же он нужен - эта функция вернет true - если открыт именно просмотр своего инвентаря - иначе false ------------------------------------------------------------ Да черт его знает кажется совместить серверные и клиентские копии объектов можно только перебором по id Изменено 12 Февраля 2010 пользователем lekzd Поделиться этим сообщением Ссылка на сообщение