UnLoaded 313 Опубликовано 20 Марта 2016 Поделиться Опубликовано 20 Марта 2016 с взлетами и посадками Это имеет отношение к Сталкеру, или же просто - использование движка для чего-то, совсем к нему не относящегося? 1 Ссылка на комментарий https://www.amk-team.ru/forum/topic/14899-cop-kovyrjaemsja-v-fajlah/page/305/#findComment-1001788
Shennondoah 130 Опубликовано 20 Марта 2016 Поделиться Опубликовано 20 Марта 2016 Если конкретно- есть авианосец,на него хочу поставить что-то для движения.Правильного,с взлетами и посадками. Ну написать попробовать можно логику, на примере логики вертолета. Оц тоц перевертоц, бабушка здорова, Оц тоц перевертоц кушает компот. Оц тоц перевертоц и мечтает снова Оц тоц перевертоц пережить налет! Ссылка на комментарий https://www.amk-team.ru/forum/topic/14899-cop-kovyrjaemsja-v-fajlah/page/305/#findComment-1001800
e1_nin0 3 Опубликовано 20 Марта 2016 Поделиться Опубликовано 20 Марта 2016 Смотрю в каждом втором моде динамические аномалии реализованы, а отдельно нигде не найти. Из ARS мода взял скрипт level_anomaly.script, но как его запустить? В bind_stalker.script и остальных скриптах (которые упоминаются в level_anomaly.script) прописал, как и в ARS моде , но при загрузке вылетает. Может кто нибудь подскажет как сделать динамические аномалии с этим скриптом или другой способ? Пробовал еще скрипт из OGSM, все работает, но не так как нужно. Все аномалии рандомно по карте раскидываются, а надо, чтобы старые аномалии на месте оставались. Ссылка на комментарий https://www.amk-team.ru/forum/topic/14899-cop-kovyrjaemsja-v-fajlah/page/305/#findComment-1002024
HellRatz 2 914 Опубликовано 20 Марта 2016 Поделиться Опубликовано 20 Марта 2016 @e1_nin0, повторюсь с ответом: посмотри другие скрипты, откуда вызывается скрипт с дин. аномалиями. Не которые прописаны в нем, а остальные внешние, например xr_motivator, или другие скрипты от мода. И посмотреть надо что в логе пишет при вылете, это поможет направить в нужное русло. GTA 3 MAP X-Ray | NFS U:2 MAP X-Ray | RTCW MAP X-Ray | L2D | Раритетные моды на моем облаке — на память о былом. Ссылка на комментарий https://www.amk-team.ru/forum/topic/14899-cop-kovyrjaemsja-v-fajlah/page/305/#findComment-1002025
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 , вписал туда новый новый класс аномалий и функцию. Ничего не выходит. Если уж так не получается, может кто нибудь написать функцию аномалии с таймерами? Вернее функция у меня есть, я хочу узнать как эти таймеры работают. Напишите готовый пример. Ссылка на комментарий https://www.amk-team.ru/forum/topic/14899-cop-kovyrjaemsja-v-fajlah/page/305/#findComment-1002115
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 Ссылка на комментарий https://www.amk-team.ru/forum/topic/14899-cop-kovyrjaemsja-v-fajlah/page/305/#findComment-1002219
Старый уставший сталкер 10 Опубликовано 21 Марта 2016 Поделиться Опубликовано 21 Марта 2016 @e1_nin0, динамические аномалии создать на ЗП не проблема, т.е сам модуль, который будет спавнить по выбросу новые на локах, удаляя старые, учитывая сейф-зоны и другие плюшки. Проблемы начинаются в удалении аномалий. Т.е. объект аномалии нельзя просто удалить функцией release(), через несколько циклов спавна-удаления начинаются движковые вылеты без лога. Это связано с тем, что нужно чистить рестрикторы НПС перед удалением. А как это делать... уже второй вопрос, тут лучше к опытным скриптерам обратиться. Ссылка на комментарий https://www.amk-team.ru/forum/topic/14899-cop-kovyrjaemsja-v-fajlah/page/305/#findComment-1002245
e1_nin0 3 Опубликовано 21 Марта 2016 Поделиться Опубликовано 21 Марта 2016 Ясно, спасибо за ответ. А можно создать псевдодинамические аномалии с таймерами, например по 30 минут реального времени. Чтобы каждая аномалия имела свой таймер запуска и спящего режима. Т.о. имитировать динамику. Или создать например 10 паков по 100 аномалий и каждый выброс рандомно выбирать какой из паков выберется. Это реально сделать или можно не заморачиваться? Ссылка на комментарий https://www.amk-team.ru/forum/topic/14899-cop-kovyrjaemsja-v-fajlah/page/305/#findComment-1002247
Старый уставший сталкер 10 Опубликовано 21 Марта 2016 Поделиться Опубликовано 21 Марта 2016 Ну собственно по такому принципу работают аномальные поля (зоны) в ЗП. Там в конфигах зон посмотри - есть несколько слоев (уровней), которые рандомно включаются после выброса. Можно сделать глобальную аномальную зону на всю локу по такому принципу. Только будет одна проблема, перечеркивающая эту идею: при уходе-заходе на локацию на местах аномалий будут отыгрываться партиклы, а сами аномалии реагировать на ГГ не будут. Это проверено. Так что лучше все-таки найти скриптера, который напишет нормальные дин. аномалии. 1 Ссылка на комментарий https://www.amk-team.ru/forum/topic/14899-cop-kovyrjaemsja-v-fajlah/page/305/#findComment-1002249
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 Ссылка на комментарий https://www.amk-team.ru/forum/topic/14899-cop-kovyrjaemsja-v-fajlah/page/305/#findComment-1002324
HellRatz 2 914 Опубликовано 22 Марта 2016 Поделиться Опубликовано 22 Марта 2016 Но все равно вылет при загрузке получаю. Лог то покажешь все-таки?) GTA 3 MAP X-Ray | NFS U:2 MAP X-Ray | RTCW MAP X-Ray | L2D | Раритетные моды на моем облаке — на память о былом. Ссылка на комментарий https://www.amk-team.ru/forum/topic/14899-cop-kovyrjaemsja-v-fajlah/page/305/#findComment-1002360
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 Ссылка на комментарий https://www.amk-team.ru/forum/topic/14899-cop-kovyrjaemsja-v-fajlah/page/305/#findComment-1002363
naxac 2 594 Опубликовано 23 Марта 2016 Поделиться Опубликовано 23 Марта 2016 attempt to index global 'dinamic_anomalies' (a nil value) Синтаксическая ошибка. Проверь скрипт на синтаксис. 1 Аддон для ОП-2.09.2: Яндекс/Google/GitHub/Тема на AP-PRO Ссылка на комментарий https://www.amk-team.ru/forum/topic/14899-cop-kovyrjaemsja-v-fajlah/page/305/#findComment-1002420
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 1 Ссылка на комментарий https://www.amk-team.ru/forum/topic/14899-cop-kovyrjaemsja-v-fajlah/page/305/#findComment-1002442
Shennondoah 130 Опубликовано 23 Марта 2016 Поделиться Опубликовано 23 Марта 2016 А может мне кто нибудь объяснить, зачем создавать файл с новыми инфопоршнями и прописывать его в system.ltx, если и без него эти новые инфопоршни нормально выдаются и убираются? Чтоб не путаться, у меня вот в моде 11 локаций и 11 файлов с инфопоршнями, 11 файлов с персами, 11 файлов с квестами и тд. Оц тоц перевертоц, бабушка здорова, Оц тоц перевертоц кушает компот. Оц тоц перевертоц и мечтает снова Оц тоц перевертоц пережить налет! Ссылка на комментарий https://www.amk-team.ru/forum/topic/14899-cop-kovyrjaemsja-v-fajlah/page/305/#findComment-1002462
makdm 37 Опубликовано 24 Марта 2016 Поделиться Опубликовано 24 Марта 2016 А может мне кто нибудь объяснить, зачем создавать файл с новыми инфопоршнями В ЗП не нужно это делать. Движку вообще "по барабану" прописаны поршни или нет. 1 Ссылка на комментарий https://www.amk-team.ru/forum/topic/14899-cop-kovyrjaemsja-v-fajlah/page/305/#findComment-1002778
Overfirst 637 Опубликовано 27 Марта 2016 Поделиться Опубликовано 27 Марта 2016 Решил поковырять ЗП. Создал, значит, непися, сделал ему диалог, а он наотрез отказывается говорить. При попытке начать разговор: "Все вопросы к главному"... Ранее был известен под ником BoBaH_671. Ссылка на комментарий https://www.amk-team.ru/forum/topic/14899-cop-kovyrjaemsja-v-fajlah/page/305/#findComment-1003302
dukekan 5 Опубликовано 27 Марта 2016 Поделиться Опубликовано 27 Марта 2016 Есть ли какая-то возможность менять текстуру на детекторе в руках без перезагрузки? Мне на ум приходит только вариант с несколькими секциями, спавнить/удалять прибор с нужной текстурой, но если вариантов текстуры много, то метод далеко не элегантный. Ссылка на комментарий https://www.amk-team.ru/forum/topic/14899-cop-kovyrjaemsja-v-fajlah/page/305/#findComment-1003334
warwer 900 Опубликовано 28 Марта 2016 Поделиться Опубликовано 28 Марта 2016 @BoBaH_671, удали у непися общеигровые диалоги типа: #include "gameplay\character_dialogs.xml" вставь свой диалог как стартовый: </supplies> <start_dialog>твоё_название</start_dialog> @dukekan, практически все текстуры считываются при загрузке игры, кроме малого исключения прямого обращения от движка. 1 HARDWARM☢D Ссылка на комментарий https://www.amk-team.ru/forum/topic/14899-cop-kovyrjaemsja-v-fajlah/page/305/#findComment-1003361
dukekan 5 Опубликовано 28 Марта 2016 Поделиться Опубликовано 28 Марта 2016 @dukekan, практически все текстуры считываются при загрузке игры, кроме малого исключения прямого обращения от движка. А какие всё-таки исключения? Вроде, даже хотя xml хотя считывается каждый раз заново, для гуи, текстура загружается только в первый раз. И ещё, видел уже давненько наработку по динамической смене текстуры прицела, вот пример: Наверняка такое можно сделать в движке, но есть ли ещё какие способы? Кто-нибудь знает, как это реализовано? Ссылка на комментарий https://www.amk-team.ru/forum/topic/14899-cop-kovyrjaemsja-v-fajlah/page/305/#findComment-1003496
Рекомендуемые сообщения
Создайте аккаунт или авторизуйтесь, чтобы оставить комментарий
Комментарии могут оставлять только зарегистрированные пользователи
Создать аккаунт
Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!
Зарегистрировать новый аккаунтВойти
Есть аккаунт? Войти.
Войти