FantomICW 678 Опубликовано 19 Августа 2013 @riddik121, на слово enemy. То есть выходит: function glavny_vrag(first_speaker, second_speaker) second_speaker:set_relation(game_object.enemy, first_speaker) end Поделиться этим сообщением Ссылка на сообщение
FantomICW 678 Опубликовано 5 Января 2014 (изменено) @aleksn09, по идее, ты строки прописал в нужное место. Это ведь постоянное обновление. Что-то мне подсказывает, что нужно пробовать переписать зажигание, используя движковую функцию-проверку is_on(). Как-то так, что ли: if db.actor:position():distance_to(self.object:position()) <= 4 and not self.campfire:is_on() then self.campfire:turn_on() end Изменено 5 Января 2014 пользователем FantomICW Поделиться этим сообщением Ссылка на сообщение
FantomICW 678 Опубликовано 24 Марта 2014 @Romann, не в шапке конечно, но лови) Smart_terrain (в простонароде - гулаг) Интересный способ настройки логики для гулагов Скриптовая часть игровой логики 1 Поделиться этим сообщением Ссылка на сообщение
FantomICW 678 Опубликовано 18 Мая 2014 (изменено) @J.A.A., добавляй функцию в xr_effects.script: function load_savedgame(actor, npc, p) --Выставляем p-аргумент (он является названием сейва) local savedgame = p[1] --Устанавливаем локальную переменную для p[1] if savedgame ~= nil then --Проверка на наличие сейва get_console():execute("load "..savedgame) --Запускаем сейв через консольную команду end end Потом в рестрикторе делай проверку на инфу и запускай функцию: on_info = {+some_info -load_spec_save} %=load_savedgame(название_сейва) +load_spec_save% Изменено 18 Мая 2014 пользователем FantomICW Поделиться этим сообщением Ссылка на сообщение
FantomICW 678 Опубликовано 29 Июня 2014 @J.A.A., в логике ему пропиши по инфопорции анимку punch в ремарке. P.S. Какая платформа? Поделиться этим сообщением Ссылка на сообщение
FantomICW 678 Опубликовано 12 Июля 2014 @demon96, тебе же @AndreySol, конкретно указал на функцию и значение, которые нужно выставить...Вообще, можно, конечно, и движковую give_game_news использовать, но мне лично удобней просто задать третье значения в send_tip: news_manager.send_tip(db.actor, "%c[255,255,128,128] Ну вот и добрались, я развязываю тебе глаза и ухожу. Не пытайся меня искать, удачи! %c[default]", 15000, "stalker", nil, 30000) Поделиться этим сообщением Ссылка на сообщение
FantomICW 678 Опубликовано 2 Августа 2014 (изменено) Добрый день. Старался написать функцию спавна физического объекта, но, так как с Нет Пакетом знаком плохо и писал почти от фонаря, словил вылет при запуске. Очень большая просьба: помогите кто-нибудь поправить функцию и, если можно, объяснить, в чем конкретно была проблема... function create_physic_obj(obj_sect, obj_pos, obj_lvid, obj_gvid, obj_dir, obj_mass) local obj = alife():create(obj_sect, obj_pos, obj_lvid, obj_gvid) local packet = net_packet() obj:STATE_Write(packet, 60) -- Свойства cse_abstract local direction = packet:r_vec3() -- Свойства cse_alife_object local game_vertex_id = packet:r_u16() 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() -- Свойства cse_alife_object_physic local mass = packet:r_float() local physic_type = packet:r_u32() local upd:num_items = packet:r_u8() local upd:ph_force = packet:r_vec3() local upd:ph_torque = packet:r_vec3() local upd:ph_position = packet:r_vec3() local upd:ph_rotation = packet:r_vec4() local upd:ph_angular_vel = packet:r_vec3() local upd:ph_linear_vel = packet:r_vec3() -- Заполнение -- Свойства cse_alife_object packet:w_begin(game_vertex_id) packet:w_u32(level_vertex_id) packet:w_u32(object_flags) packet:w_stringZ(custom_data) packet:w_u32(story_id) -- Свойства cse_abstract if obj_dir ~= nil then direction = obj_dir end packet:w_vec3(direction) -- Свойства cse_alife_object_physic if obj_mass ~= nil then mass = obj_mass end packet:w_float(mass) packet:w_u32(physic_type) packet:w_u8(upd:num_items) packet:w_vec3(upd:ph_position) packet:w_vec4(upd:ph_rotation) packet:w_vec3(upd:ph_angular_vel) packet:w_vec3(upd:ph_linear_vel) packet:w_vec3(upd:ph_force) packet:w_vec3(upd:ph_torque) -- Считываем скорректированные параметры packet:r_seek(0) obj:STATE_Read(packet, packet:w_tell()) end Вылет: xr_effects.script:3552: attempt to index global 'my_spawn' (a nil value) function test_spawn_obj_1() local pos = vector():set(39.930305480957,8.70378112792969,-66.7609176635742) local dir = vector():set(-9.90768057818059,1.57078802585602,-1.09473432985396) local lv = 102321 local gv = 0 my_spawn.create_physic_obj("test_anim_obj", pos, lv, gv, dir, 10) end Изменено 2 Августа 2014 пользователем FantomICW Поделиться этим сообщением Ссылка на сообщение
FantomICW 678 Опубликовано 2 Августа 2014 (изменено) @Dennis_Chikin, ну, наверное, что-то в роде того, только я здесь комплект m_netpk.script от Artos'а не задействую...Но, если знаешь, как с помощью этого скрипта реализовать функцию, то такое вполне сойдет. Также подойдет функция, которая может повернуть уже заспавненный объект, т. е. альтернатива параметра direction в алл.спавн-секции. Изменено 2 Августа 2014 пользователем FantomICW Поделиться этим сообщением Ссылка на сообщение
FantomICW 678 Опубликовано 2 Июня 2015 (изменено) Юзаешь итем - отыгрывается анима? Вечный вопрос. Первый вариант - править двиг, делать удобную функцию. Второй - костыли. Я лично создаю секцию аним-объекта на основе оружия. Ему в draw-анимацию прописываю нужную анимку, прописываем ему какой-нибудь рабочий слот. Дальше используем юз-коллбек в bind_stalker.script. Собственно, нам нужно совершить следующее: Выдать ГГ аним-айтем Поместить айтем в слот (часто используется слот бинокля или болта, тогда приходится сначала временно удалять бинокль/болт) Активизировать слот аним-айтема Теперь вопрос заключается в окончании анимации...Вариант первый - ставить таймер для функции удаления на апдейт, так во всех модах. Второй намного удобней: использовать коллбек анимации камеры. По нему, если интересно, могу урок сделать. Кстати, посмотри скрипты этого мода. Изменено 2 Июня 2015 пользователем FantomICW 3 Поделиться этим сообщением Ссылка на сообщение
FantomICW 678 Опубликовано 2 Июня 2015 @Struck, level.add_cam_effector(string, number, boolean, string) level.add_cam_effector2(string, number, boolean, string, number) level.add_cam_effector("camera_effects\\surge_02.anm", 10, false, "bind_stalker.anabiotic_callback") Можешь "лолштокать" дальше 4 Поделиться этим сообщением Ссылка на сообщение
FantomICW 678 Опубликовано 2 Июня 2015 (изменено) @Struck, никто же не отрицает, что это аргумент. Но... Даже @Malandrinus назвал это коллбеком : http://www.amk-team.ru/forum/index.php?showtopic=7450&p=343515 (см. пространство level) Но ок, не будем опираться на то, что писал @Malandrinus. Смотрим в sr_cutscene.script, пробиваем поиском по "callback": if not (eff.global_cameffect) then level.add_cam_effector("camera_effects\\"..eff.anim..".anm", 210408, false, "sr_cutscene.effector_callback") else level.add_cam_effector2("camera_effects\\"..eff.anim..".anm", 210408, false, "sr_cutscene.effector_callback", self.st.fov or db.actor:fov()*0.75) end sr_cutscene.effector_callback() self:cutscene_callback() function action_cutscene:cutscene_callback() function effector_callback(obj) xr_logic.issue_event(object_scene, storage_scene, "cutscene_callback") end Ну ничего себе, сколько раз GSC назвали коллбеком то, что по классу коллбеком не является: Просто так назвали, наверное. Могли бы назвать сигналом...И, блин, тоже не верно было бы! Сигналы - это же другое: const act_end = 128; const anim_end = 4; const look_end = 2; const move_end = 1; const object_end = 32; const sound_end = 8; const time_end = 64; Ситуация не из легких, по ходу. Назовем это "аргумент, который срабатывает в момент окончания анимации камеры и оповещает об этом, запуская функцию". Звучит однозначно лучше, чем наименование "коллбек", которое передает ту же суть. Разговор тупо "ниочом". Более того, я готов сказать, что этот аргумент - действительно никакой не коллбек (по своей движково-скриптовой сути), который в тех же биндерах используется. Если тебе столь важно выявить единственное истинное наименование, то поздравляю, молодец. Если смысл в том, чтобы ограничить себя в канонах и терминах, тоже поздравляю. Моя цель была - намекнуть о системе для аним-айтемов, если что)) class callback { const action_animation = 21; const action_movement = 18; const action_object = 24; const action_particle = 23; const action_removed = 20; const action_sound = 22; const action_watch = 19; const actor_sleep = 25; const article_info = 12; const death = 8; const helicopter_on_hit = 27; const helicopter_on_point = 26; const hit = 16; const inventory_info = 11; const inventory_pda = 10; const level_border_enter = 7; const level_border_exit = 6; const map_location_added = 14; const on_item_drop = 29; const on_item_take = 28; const patrol_path_in_point = 9; const script_animation = 30; const sound = 17; const take_item_from_box = 34; const task_state = 13; const trade_perform_operation = 3; const trade_sell_buy_item = 2; const trade_start = 0; const trade_stop = 1; const trader_global_anim_request = 31; const trader_head_anim_request = 32; const trader_sound_end = 33; const use_object = 15; const weapon_no_ammo = 35; const zone_enter = 4; const zone_exit = 5; }; Изменено 2 Июня 2015 пользователем FantomICW 1 4 Поделиться этим сообщением Ссылка на сообщение