UnLoaded 313 Опубликовано 20 Марта 2016 Поделиться Опубликовано 20 Марта 2016 с взлетами и посадками Это имеет отношение к Сталкеру, или же просто - использование движка для чего-то, совсем к нему не относящегося? 1 Ссылка на комментарий
Shennondoah 130 Опубликовано 20 Марта 2016 Поделиться Опубликовано 20 Марта 2016 Если конкретно- есть авианосец,на него хочу поставить что-то для движения.Правильного,с взлетами и посадками. Ну написать попробовать можно логику, на примере логики вертолета. Оц тоц перевертоц, бабушка здорова, Оц тоц перевертоц кушает компот. Оц тоц перевертоц и мечтает снова Оц тоц перевертоц пережить налет! Ссылка на комментарий
e1_nin0 3 Опубликовано 20 Марта 2016 Поделиться Опубликовано 20 Марта 2016 Смотрю в каждом втором моде динамические аномалии реализованы, а отдельно нигде не найти. Из ARS мода взял скрипт level_anomaly.script, но как его запустить? В bind_stalker.script и остальных скриптах (которые упоминаются в level_anomaly.script) прописал, как и в ARS моде , но при загрузке вылетает. Может кто нибудь подскажет как сделать динамические аномалии с этим скриптом или другой способ? Пробовал еще скрипт из OGSM, все работает, но не так как нужно. Все аномалии рандомно по карте раскидываются, а надо, чтобы старые аномалии на месте оставались. Ссылка на комментарий
HellRatz 2 836 Опубликовано 20 Марта 2016 Поделиться Опубликовано 20 Марта 2016 @e1_nin0, повторюсь с ответом: посмотри другие скрипты, откуда вызывается скрипт с дин. аномалиями. Не которые прописаны в нем, а остальные внешние, например xr_motivator, или другие скрипты от мода. И посмотреть надо что в логе пишет при вылете, это поможет направить в нужное русло. GTA 3 MAP X-Ray | NFS U:2 MAP X-Ray | RTCW MAP X-Ray | L2D | Раритетные моды на моем облаке — на память о былом. Ссылка на комментарий
e1_nin0 3 Опубликовано 21 Марта 2016 Поделиться Опубликовано 21 Марта 2016 Просмотрел все скрипты, дин. аномалии вызываются из bind_stalker, остальные вызовы дин. аномалий используются для вызова других скриптов, которые мне не нужны. В level_anomaly используются скрипты ars, ars_mod, se_zones, xrs_utils. Оставил в них только нужные мне функции. В se_zones закоментировал ссылки на ненужный скрипт zone_mgr. Вписал в surge_manager нужные строки с вызовом менеджера аномалий из level_anomaly и в bind_stalker как в ARS модепрописал менеджер аномалий и в update(delta) обновление этого менеджера. В итоге все равно вылет при загрузке. Пробовал редактировать _g.script , вписал туда новый новый класс аномалий и функцию. Ничего не выходит. Если уж так не получается, может кто нибудь написать функцию аномалии с таймерами? Вернее функция у меня есть, я хочу узнать как эти таймеры работают. Напишите готовый пример. Ссылка на комментарий
e1_nin0 3 Опубликовано 21 Марта 2016 Поделиться Опубликовано 21 Марта 2016 (изменено) Или используя скрипт dexxxа function dinamic_anomalis() for k=1, 65535 do obj = level.object_by_id(k) if obj ~= nil then if IsAnom(obj)==true then lv_id=obj:level_vertex_id() gv_id=obj:game_vertex_id() local lv_new local pos_new = vector() local n_obj lv_new = math.random(1571597) pos_new = level.vertex_position(lv_new) if string.find(obj:section(), "zone_mine_gravitational") or string.find(obj:section(), "_field_") or string.find(obj:section(), "zone_radioactive") then n_obj = create_anom(obj:section(),3,pos_new.x,pos_new.y,pos_new.z,lv_new, gv_id,"field") else n_obj = create_anom(obj:section(),3,pos_new.x,pos_new.y,pos_new.z,lv_new, gv_id) end remove_item(obj) end end end end Если убрать удаление аномалий remove_item(obj), то старые аномалии останутся на месте, а новые будут размножаться. Можно ли как то сделать, чтобы спустя какой то период аномалии, созданные скриптом удалялись? Изменено 21 Марта 2016 пользователем e1_nin0 Ссылка на комментарий
Старый уставший сталкер 10 Опубликовано 21 Марта 2016 Поделиться Опубликовано 21 Марта 2016 @e1_nin0, динамические аномалии создать на ЗП не проблема, т.е сам модуль, который будет спавнить по выбросу новые на локах, удаляя старые, учитывая сейф-зоны и другие плюшки. Проблемы начинаются в удалении аномалий. Т.е. объект аномалии нельзя просто удалить функцией release(), через несколько циклов спавна-удаления начинаются движковые вылеты без лога. Это связано с тем, что нужно чистить рестрикторы НПС перед удалением. А как это делать... уже второй вопрос, тут лучше к опытным скриптерам обратиться. Ссылка на комментарий
e1_nin0 3 Опубликовано 21 Марта 2016 Поделиться Опубликовано 21 Марта 2016 Ясно, спасибо за ответ. А можно создать псевдодинамические аномалии с таймерами, например по 30 минут реального времени. Чтобы каждая аномалия имела свой таймер запуска и спящего режима. Т.о. имитировать динамику. Или создать например 10 паков по 100 аномалий и каждый выброс рандомно выбирать какой из паков выберется. Это реально сделать или можно не заморачиваться? Ссылка на комментарий
Старый уставший сталкер 10 Опубликовано 21 Марта 2016 Поделиться Опубликовано 21 Марта 2016 Ну собственно по такому принципу работают аномальные поля (зоны) в ЗП. Там в конфигах зон посмотри - есть несколько слоев (уровней), которые рандомно включаются после выброса. Можно сделать глобальную аномальную зону на всю локу по такому принципу. Только будет одна проблема, перечеркивающая эту идею: при уходе-заходе на локацию на местах аномалий будут отыгрываться партиклы, а сами аномалии реагировать на ГГ не будут. Это проверено. Так что лучше все-таки найти скриптера, который напишет нормальные дин. аномалии. 1 Ссылка на комментарий
e1_nin0 3 Опубликовано 22 Марта 2016 Поделиться Опубликовано 22 Марта 2016 (изменено) В общем подправил немного скрипт dexxxа. Теперь при первом посещении по локации рандомно спавнятся аномалии. Старые аномалии не затрагиваются, скрипт копирует имеющиеся аномалии на карте и разбрасывает эти копии по карте. Вот основная функция: function dinamic_anomalis() if level.name() == "zaton" then not has_alife_info("zaton_dinamic_anomalis_done") then for k=1, 65535 do obj = level.object_by_id(k) if obj ~= nil then if IsAnom(obj)==true then lv_id=obj:level_vertex_id() gv_id=obj:game_vertex_id() local lv_new local pos_new = vector() local n_obj lv_new = math.random(1571597) pos_new = level.vertex_position(lv_new) if string.find(obj:section(), "zone_mine_gravitational") or string.find(obj:section(), "zone_mine_acidic") or string.find(obj:section(), "zone_mine_electric") or string.find(obj:section(), "mine_thermal") or string.find(obj:section(), "_field_") then n_obj = create_anom(obj:section(),3,pos_new.x,pos_new.y,pos_new.z,lv_new, gv_id,"field") else n_obj = create_anom(obj:section(),3,pos_new.x,pos_new.y,pos_new.z,lv_new, gv_id) end end end end db.actor:give_info_portion("zaton_dinamic_anomalis_done") elseif level.name() == "jupiter" then not has_alife_info("jupiter_dinamic_anomalis_done") then for k=1, 65535 do obj = level.object_by_id(k) if obj ~= nil then if IsAnom(obj)==true then lv_id=obj:level_vertex_id() gv_id=obj:game_vertex_id() local lv_new local pos_new = vector() local n_obj lv_new = math.random(1571597) pos_new = level.vertex_position(lv_new) if string.find(obj:section(), "zone_mine_gravitational") or string.find(obj:section(), "zone_mine_acidic") or string.find(obj:section(), "zone_mine_electric") or string.find(obj:section(), "mine_thermal") or string.find(obj:section(), "_field_") then n_obj = create_anom(obj:section(),3,pos_new.x,pos_new.y,pos_new.z,lv_new, gv_id,"field") else n_obj = create_anom(obj:section(),3,pos_new.x,pos_new.y,pos_new.z,lv_new, gv_id) end end end end db.actor:give_info_portion("jupiter_dinamic_anomalis_done") elseif level.name() == "pripyat" then not has_alife_info("pripyat_dinamic_anomalis_done") then for k=1, 65535 do obj = level.object_by_id(k) if obj ~= nil then if IsAnom(obj)==true then lv_id=obj:level_vertex_id() gv_id=obj:game_vertex_id() local lv_new local pos_new = vector() local n_obj lv_new = math.random(1571597) pos_new = level.vertex_position(lv_new) if string.find(obj:section(), "zone_mine_gravitational") or string.find(obj:section(), "zone_mine_acidic") or string.find(obj:section(), "zone_mine_electric") or string.find(obj:section(), "mine_thermal") or string.find(obj:section(), "_field_") then n_obj = create_anom(obj:section(),3,pos_new.x,pos_new.y,pos_new.z,lv_new, gv_id,"field") else n_obj = create_anom(obj:section(),3,pos_new.x,pos_new.y,pos_new.z,lv_new, gv_id) end end end end db.actor:give_info_portion("pripyat_dinamic_anomalis_done") end end Доп. функции: function IsAnom (obj) local s = obj:section() if string.find(s, "zone_mine_gravitational_strong") or string.find(s, "zone_mine_gravitational_average") or string.find(s, "zone_mine_acidic") or string.find(s, "zone_mine_thermal_strong") or string.find(s, "zone_mine_electric") then return true else return false end end function create_anom(section,rad_anom,x,y,z,lv,gv,mode,time1,time2) if gv==nil then gv=db.actor:game_vertex_id() end if lv==nil then lv=db.actor:level_vertex_id() end if pos==nil then pos=db.actor:position() end local p_obj = alife():create(section,vector():set(x,y,z),lv,gv) local packet = net_packet() packet:w_begin(0) p_obj:STATE_Write(packet) packet:r_seek(2) local game_vertex_id = packet:r_u16() local cse_alife_object__unk1_f32 = packet:r_float() local cse_alife_object__unk2_u32 = packet:r_s32() local level_vertex_id = packet:r_s32() local object_flags = packet:r_s32() local custom_data = packet:r_stringZ() local story_id = packet:r_s32() local cse_alife_object__unk3_u32 = packet:r_s32() 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 box = packet:r_matrix() end end local restrictor_type = packet:r_u8() local cse_alife_custom_zone__unk1_f32 = packet:r_float() local cse_alife_custom_zone__unk2_u32 = packet:r_s32() local on_off_mode_enabled_time = packet:r_s32() local on_off_mode_disabled_time = packet:r_s32() local on_off_mode_shift_time = packet:r_s32() local offline_interactive_radius = packet:r_float() local artefact_spawn_places_count = packet:r_u16() local cse_alife_anomalous_zone__unk1_u32 = packet:r_s32() local last_spawn_time_present = packet:r_u8() packet:w_u16(game_vertex_id) packet:w_float(cse_alife_object__unk1_f32) packet:w_s32(cse_alife_object__unk2_u32) packet:w_s32(level_vertex_id) packet:w_s32(object_flags) if mode~=nil then custom_data = mode end packet:w_stringZ(custom_data) packet:w_s32(story_id) packet:w_s32(cse_alife_object__unk3_u32) packet:w_u8(1) packet:w_u8(0) local sphere_center = vector() sphere_center:set(0, 0, 0) packet:w_vec3(sphere_center) radius = rad_anom packet:w_float(radius) packet:w_u8(restrictor_type) packet:w_float(cse_alife_custom_zone__unk1_f32) cse_alife_custom_zone__unk2_u32 = bit_not(0) packet:w_s32(cse_alife_custom_zone__unk2_u32) if time1 ~= nil then packet:w_s32(time1) else packet:w_s32(on_off_mode_enabled_time) end if time2 ~= nil then packet:w_s32(time2) else packet:w_s32(on_off_mode_disabled_time) end packet:w_s32(on_off_mode_shift_time) packet:w_float(offline_interactive_radius) packet:w_u16(artefact_spawn_places_count) packet:w_s32(cse_alife_anomalous_zone__unk1_u32) if mode==nil then packet:w_u8(last_spawn_time_present) else end p_obj:STATE_Read(packet, packet:w_tell()-packet:r_tell()) return p_obj end Если прописать в bind_stalker работать будет? Именно так, как я хочу, чтобы аномалии спавнились только один раз на каждой локе. Устранил ошибке в скрипте. function dinamic_anomalis() if level.name() == "zaton" then if not has_alife_info("zaton_dinamic_anomalis_done") then for k=1, 65535 do obj = level.object_by_id(k) if obj ~= nil then if IsAnom(obj)==true then lv_id=obj:level_vertex_id() gv_id=obj:game_vertex_id() local lv_new local pos_new = vector() local n_obj lv_new = math.random(1571597) pos_new = level.vertex_position(lv_new) if string.find(obj:section(), "zone_mine_gravitational") or string.find(obj:section(), "zone_mine_acidic") or string.find(obj:section(), "zone_mine_electric") or string.find(obj:section(), "zone_mine_thermal") or string.find(obj:section(), "_field_") then n_obj = create_anom(obj:section(),3,pos_new.x,pos_new.y,pos_new.z,lv_new, gv_id,"field") else n_obj = create_anom(obj:section(),3,pos_new.x,pos_new.y,pos_new.z,lv_new, gv_id) end end end db.actor:give_info_portion("zaton_dinamic_anomalis_done") end end elseif level.name() == "jupiter" then if not has_alife_info("jupiter_dinamic_anomalis_done") then for k=1, 65535 do obj = level.object_by_id(k) if obj ~= nil then if IsAnom(obj)==true then lv_id=obj:level_vertex_id() gv_id=obj:game_vertex_id() local lv_new local pos_new = vector() local n_obj lv_new = math.random(1571597) pos_new = level.vertex_position(lv_new) if string.find(obj:section(), "zone_mine_gravitational") or string.find(obj:section(), "zone_mine_acidic") or string.find(obj:section(), "zone_mine_electric") or string.find(obj:section(), "zone_mine_thermal") or string.find(obj:section(), "_field_") then n_obj = create_anom(obj:section(),3,pos_new.x,pos_new.y,pos_new.z,lv_new, gv_id,"field") else n_obj = create_anom(obj:section(),3,pos_new.x,pos_new.y,pos_new.z,lv_new, gv_id) end end end db.actor:give_info_portion("jupiter_dinamic_anomalis_done") end end elseif level.name() == "pripyat" then if not has_alife_info("pripyat_dinamic_anomalis_done") then for k=1, 65535 do obj = level.object_by_id(k) if obj ~= nil then if IsAnom(obj)==true then lv_id=obj:level_vertex_id() gv_id=obj:game_vertex_id() local lv_new local pos_new = vector() local n_obj lv_new = math.random(1571597) pos_new = level.vertex_position(lv_new) if string.find(obj:section(), "zone_mine_gravitational") or string.find(obj:section(), "zone_mine_acidic") or string.find(obj:section(), "zone_mine_electric") or string.find(obj:section(), "zone_mine_thermal") or string.find(obj:section(), "_field_") then n_obj = create_anom(obj:section(),3,pos_new.x,pos_new.y,pos_new.z,lv_new, gv_id,"field") else n_obj = create_anom(obj:section(),3,pos_new.x,pos_new.y,pos_new.z,lv_new, gv_id) end end end db.actor:give_info_portion("pripyat_dinamic_anomalis_done") end end end end function IsAnom (obj) local s = obj:section() if string.find(s, "zone_mine_gravitational_strong") or string.find(s, "zone_mine_gravitational_average") or string.find(s, "zone_mine_acidic") or string.find(s, "zone_mine_thermal_strong") or string.find(s, "zone_mine_electric") then return true else return false end end function create_anom(section,rad_anom,x,y,z,lv,gv,mode,time1,time2) if gv==nil then gv=db.actor:game_vertex_id() end if lv==nil then lv=db.actor:level_vertex_id() end if pos==nil then pos=db.actor:position() end local p_obj = alife():create(section,vector():set(x,y,z),lv,gv) local packet = net_packet() packet:w_begin(0) p_obj:STATE_Write(packet) packet:r_seek(2) local game_vertex_id = packet:r_u16() local cse_alife_object__unk1_f32 = packet:r_float() local cse_alife_object__unk2_u32 = packet:r_s32() local level_vertex_id = packet:r_s32() local object_flags = packet:r_s32() local custom_data = packet:r_stringZ() local story_id = packet:r_s32() local cse_alife_object__unk3_u32 = packet:r_s32() 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 box = packet:r_matrix() end end local restrictor_type = packet:r_u8() local cse_alife_custom_zone__unk1_f32 = packet:r_float() local cse_alife_custom_zone__unk2_u32 = packet:r_s32() local on_off_mode_enabled_time = packet:r_s32() local on_off_mode_disabled_time = packet:r_s32() local on_off_mode_shift_time = packet:r_s32() local offline_interactive_radius = packet:r_float() local artefact_spawn_places_count = packet:r_u16() local cse_alife_anomalous_zone__unk1_u32 = packet:r_s32() local last_spawn_time_present = packet:r_u8() packet:w_u16(game_vertex_id) packet:w_float(cse_alife_object__unk1_f32) packet:w_s32(cse_alife_object__unk2_u32) packet:w_s32(level_vertex_id) packet:w_s32(object_flags) if mode~=nil then custom_data = mode end packet:w_stringZ(custom_data) packet:w_s32(story_id) packet:w_s32(cse_alife_object__unk3_u32) packet:w_u8(1) packet:w_u8(0) local sphere_center = vector() sphere_center:set(0, 0, 0) packet:w_vec3(sphere_center) radius = rad_anom packet:w_float(radius) packet:w_u8(restrictor_type) packet:w_float(cse_alife_custom_zone__unk1_f32) cse_alife_custom_zone__unk2_u32 = bit_not(0) packet:w_s32(cse_alife_custom_zone__unk2_u32) if time1 ~= nil then packet:w_s32(time1) else packet:w_s32(on_off_mode_enabled_time) end if time2 ~= nil then packet:w_s32(time2) else packet:w_s32(on_off_mode_disabled_time) end packet:w_s32(on_off_mode_shift_time) packet:w_float(offline_interactive_radius) packet:w_u16(artefact_spawn_places_count) packet:w_s32(cse_alife_anomalous_zone__unk1_u32) if mode==nil then packet:w_u8(last_spawn_time_present) else end p_obj:STATE_Read(packet, packet:w_tell()-packet:r_tell()) return p_obj end -- Вывод инфы в консоль function con(msg) get_console():execute(msg) end -- Записываем переменную function save(variable_name, value) xr_logic.pstor_store(db.actor, variable_name, value) end -- Загружаем переменную function load(variable_name, value_if_not_found) return xr_logic.pstor_retrieve(db.actor, variable_name, value_if_not_found) end -- Удаляем переменную function del(variable_name) if db.storage[db.actor:id()].pstor[variable_name] then db.storage[db.actor:id()].pstor[variable_name] = nil end end Но все равно вылет при загрузке получаю. Изменено 22 Марта 2016 пользователем e1_nin0 Ссылка на комментарий
HellRatz 2 836 Опубликовано 22 Марта 2016 Поделиться Опубликовано 22 Марта 2016 Но все равно вылет при загрузке получаю. Лог то покажешь все-таки?) GTA 3 MAP X-Ray | NFS U:2 MAP X-Ray | RTCW MAP X-Ray | L2D | Раритетные моды на моем облаке — на память о былом. Ссылка на комментарий
e1_nin0 3 Опубликовано 22 Марта 2016 Поделиться Опубликовано 22 Марта 2016 (изменено) Expression : !m_error_code Function : raii_guard::~raii_guard File : D:\prog_repository\sources\trunk\xrServerEntities\script_storage.cpp Line : 748 Description : ...call of pripyat\gamedata\scripts\bind_stalker.script:71: attempt to index global 'dinamic_anomalies' (a nil value) в bind_stalker функцию добавил function actor_binder:update(delta) ... dinamic_anomalies.dinamic_anomalis() end Что не так? Скрипт с дин. аномалиями так и называется dinamic_anomalies.script А где найти инфопоршни рестрикторов на входе и выходе из локаций? Изменено 22 Марта 2016 пользователем e1_nin0 1 Ссылка на комментарий
naxac 2 445 Опубликовано 23 Марта 2016 Поделиться Опубликовано 23 Марта 2016 attempt to index global 'dinamic_anomalies' (a nil value) Синтаксическая ошибка. Проверь скрипт на синтаксис. 1 Аддон для ОП-2.09.2: Яндекс/Google/GitHub Ссылка на комментарий
e1_nin0 3 Опубликовано 23 Марта 2016 Поделиться Опубликовано 23 Марта 2016 (изменено) Нашел ошибку, были незакомментированы лишние строки Переписал немного и добавил в update(delta) -- Начало спавна аномалий if (not has_alife_info("zaton_random_anomalies_done") and level.name() =="zaton") then random_anomalies.zaton_random_anomalies() give_info("zaton_random_anomalies_done") end if (not has_alife_info("jupiter_random_anomalies_done") and level.name() == "jupiter") then random_anomalies.jupiter_random_anomalies() give_info("jupiter_random_anomalies_done") end if (not has_alife_info("pripyat_random_anomalies_done") and level.name() == "pripyat") then random_anomalies.pripyat_random_anomalies() give_info("pripyat_random_anomalies_done") end -- Конец спавна аномалий Сам скрипт function zaton_random_anomalies() for k=1, 65535 do obj = level.object_by_id(k) if obj ~= nil then if IsAnom(obj)==true then lv_id=obj:level_vertex_id() gv_id=obj:game_vertex_id() local lv_new local pos_new = vector() local n_obj lv_new = math.random(1571597) pos_new = level.vertex_position(lv_new) if string.find(obj:section(), "zone_mine_gravitational") or string.find(obj:section(), "zone_mine_thermal") or string.find(obj:section(), "zone_mine_electric") or string.find(obj:section(), "zone_mine_acidic") or string.find(obj:section(), "_field_") then n_obj = create_anom(obj:section(),3,pos_new.x,pos_new.y,pos_new.z,lv_new, gv_id,"field") else n_obj = create_anom(obj:section(),3,pos_new.x,pos_new.y,pos_new.z,lv_new, gv_id) end end end end end function jupiter_random_anomalies() for k=1, 65535 do obj = level.object_by_id(k) if obj ~= nil then if IsAnom(obj)==true then lv_id=obj:level_vertex_id() gv_id=obj:game_vertex_id() local lv_new local pos_new = vector() local n_obj lv_new = math.random(1571597) pos_new = level.vertex_position(lv_new) if string.find(obj:section(), "zone_mine_gravitational") or string.find(obj:section(), "zone_mine_thermal") or string.find(obj:section(), "zone_mine_electric") or string.find(obj:section(), "zone_mine_acidic") or string.find(obj:section(), "_field_") then n_obj = create_anom(obj:section(),3,pos_new.x,pos_new.y,pos_new.z,lv_new, gv_id,"field") else n_obj = create_anom(obj:section(),3,pos_new.x,pos_new.y,pos_new.z,lv_new, gv_id) end end end end end function pripyat_random_anomalies() for k=1, 65535 do obj = level.object_by_id(k) if obj ~= nil then if IsAnom(obj)==true then lv_id=obj:level_vertex_id() gv_id=obj:game_vertex_id() local lv_new local pos_new = vector() local n_obj lv_new = math.random(1571597) pos_new = level.vertex_position(lv_new) if string.find(obj:section(), "zone_mine_gravitational") or string.find(obj:section(), "zone_mine_thermal") or string.find(obj:section(), "zone_mine_electric") or string.find(obj:section(), "zone_mine_acidic") or string.find(obj:section(), "_field_") then n_obj = create_anom(obj:section(),3,pos_new.x,pos_new.y,pos_new.z,lv_new, gv_id,"field") else n_obj = create_anom(obj:section(),3,pos_new.x,pos_new.y,pos_new.z,lv_new, gv_id) end end end end end function IsAnom (obj) local s = obj:section() if string.find(s, "zone_mine_gravitational") or string.find(s, "zone_mine_acidic") or string.find(s, "zone_mine_thermal") or string.find(s, "zone_mine_electric") then return true else return false end end function create_anom(section,rad_anom,x,y,z,lv,gv,mode,time1,time2) if gv==nil then gv=db.actor:game_vertex_id() end if lv==nil then lv=db.actor:level_vertex_id() end if pos==nil then pos=db.actor:position() end local p_obj = alife():create(section,vector():set(x,y,z),lv,gv) local packet = net_packet() packet:w_begin(0) p_obj:STATE_Write(packet) packet:r_seek(2) local game_vertex_id = packet:r_u16() local cse_alife_object__unk1_f32 = packet:r_float() local cse_alife_object__unk2_u32 = packet:r_s32() local level_vertex_id = packet:r_s32() local object_flags = packet:r_s32() local custom_data = packet:r_stringZ() local story_id = packet:r_s32() local cse_alife_object__unk3_u32 = packet:r_s32() 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 box = packet:r_matrix() end end local restrictor_type = packet:r_u8() local cse_alife_custom_zone__unk1_f32 = packet:r_float() local cse_alife_custom_zone__unk2_u32 = packet:r_s32() local on_off_mode_enabled_time = packet:r_s32() local on_off_mode_disabled_time = packet:r_s32() local on_off_mode_shift_time = packet:r_s32() local offline_interactive_radius = packet:r_float() local artefact_spawn_places_count = packet:r_u16() local cse_alife_anomalous_zone__unk1_u32 = packet:r_s32() local last_spawn_time_present = packet:r_u8() packet:w_u16(game_vertex_id) packet:w_float(cse_alife_object__unk1_f32) packet:w_s32(cse_alife_object__unk2_u32) packet:w_s32(level_vertex_id) packet:w_s32(object_flags) if mode~=nil then custom_data = mode end packet:w_stringZ(custom_data) packet:w_s32(story_id) packet:w_s32(cse_alife_object__unk3_u32) packet:w_u8(1) packet:w_u8(0) local sphere_center = vector() sphere_center:set(0, 0, 0) packet:w_vec3(sphere_center) radius = rad_anom packet:w_float(radius) packet:w_u8(restrictor_type) packet:w_float(cse_alife_custom_zone__unk1_f32) cse_alife_custom_zone__unk2_u32 = bit_not(0) packet:w_s32(cse_alife_custom_zone__unk2_u32) if time1 ~= nil then packet:w_s32(time1) else packet:w_s32(on_off_mode_enabled_time) end if time2 ~= nil then packet:w_s32(time2) else packet:w_s32(on_off_mode_disabled_time) end packet:w_s32(on_off_mode_shift_time) packet:w_float(offline_interactive_radius) packet:w_u16(artefact_spawn_places_count) packet:w_s32(cse_alife_anomalous_zone__unk1_u32) if mode==nil then packet:w_u8(last_spawn_time_present) else end p_obj:STATE_Read(packet, packet:w_tell()-packet:r_tell()) return p_obj end -- Вывод инфы в консоль function con(msg) get_console():execute(msg) end -- Записываем переменную function save(variable_name, value) xr_logic.pstor_store(db.actor, variable_name, value) end -- Загружаем переменную function load(variable_name, value_if_not_found) return xr_logic.pstor_retrieve(db.actor, variable_name, value_if_not_found) end -- Удаляем переменную function del(variable_name) if db.storage[db.actor:id()].pstor[variable_name] then db.storage[db.actor:id()].pstor[variable_name] = nil end end Теперь все работает. _____________________________________________________________________________________________________ А может мне кто нибудь объяснить, зачем создавать файл с новыми инфопоршнями и прописывать его в system.ltx, если и без него эти новые инфопоршни нормально выдаются и убираются? Изменено 23 Марта 2016 пользователем e1_nin0 2 Ссылка на комментарий
Shennondoah 130 Опубликовано 23 Марта 2016 Поделиться Опубликовано 23 Марта 2016 А может мне кто нибудь объяснить, зачем создавать файл с новыми инфопоршнями и прописывать его в system.ltx, если и без него эти новые инфопоршни нормально выдаются и убираются? Чтоб не путаться, у меня вот в моде 11 локаций и 11 файлов с инфопоршнями, 11 файлов с персами, 11 файлов с квестами и тд. 1 Оц тоц перевертоц, бабушка здорова, Оц тоц перевертоц кушает компот. Оц тоц перевертоц и мечтает снова Оц тоц перевертоц пережить налет! Ссылка на комментарий
makdm 37 Опубликовано 24 Марта 2016 Поделиться Опубликовано 24 Марта 2016 А может мне кто нибудь объяснить, зачем создавать файл с новыми инфопоршнями В ЗП не нужно это делать. Движку вообще "по барабану" прописаны поршни или нет. 2 Ссылка на комментарий
Overfirst 630 Опубликовано 27 Марта 2016 Поделиться Опубликовано 27 Марта 2016 Решил поковырять ЗП. Создал, значит, непися, сделал ему диалог, а он наотрез отказывается говорить. При попытке начать разговор: "Все вопросы к главному"... Ранее был известен под ником BoBaH_671. Ссылка на комментарий
dukekan 5 Опубликовано 27 Марта 2016 Поделиться Опубликовано 27 Марта 2016 Есть ли какая-то возможность менять текстуру на детекторе в руках без перезагрузки? Мне на ум приходит только вариант с несколькими секциями, спавнить/удалять прибор с нужной текстурой, но если вариантов текстуры много, то метод далеко не элегантный. Ссылка на комментарий
warwer 900 Опубликовано 28 Марта 2016 Поделиться Опубликовано 28 Марта 2016 @BoBaH_671, удали у непися общеигровые диалоги типа: #include "gameplay\character_dialogs.xml" вставь свой диалог как стартовый: </supplies> <start_dialog>твоё_название</start_dialog> @dukekan, практически все текстуры считываются при загрузке игры, кроме малого исключения прямого обращения от движка. 1 HARDWARM☢D Ссылка на комментарий
dukekan 5 Опубликовано 28 Марта 2016 Поделиться Опубликовано 28 Марта 2016 @dukekan, практически все текстуры считываются при загрузке игры, кроме малого исключения прямого обращения от движка. А какие всё-таки исключения? Вроде, даже хотя xml хотя считывается каждый раз заново, для гуи, текстура загружается только в первый раз. И ещё, видел уже давненько наработку по динамической смене текстуры прицела, вот пример: Наверняка такое можно сделать в движке, но есть ли ещё какие способы? Кто-нибудь знает, как это реализовано? Ссылка на комментарий
Рекомендуемые сообщения
Создайте аккаунт или авторизуйтесь, чтобы оставить комментарий
Комментарии могут оставлять только зарегистрированные пользователи
Создать аккаунт
Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!
Зарегистрировать новый аккаунтВойти
Есть аккаунт? Войти.
Войти