Habaromaniac 0 Опубликовано 16 Августа 2011 Помогите привинтить данный скрипт к АМК 1.4.1. А то чувствую сам я всё это не осилю. И так: Часть 1 - Не понял, нужен ли вообще этот кусок кода и если да, то куда его пихать? Часть 2 - Тоже не известно в какой файл прописывать всё это добро, понял только что нужно оставить все функции кроме: -- создается переход из ЧАЭС в Припять create_chaes2pripyat_exit() Т.к. в АМК она уже имеется. Далее нужно прописать info-portions в config\gameplay\_info_sa.xml и всё, остальные шаги можно пропустить за ненадобностью. Поделиться этим сообщением Ссылка на сообщение
Habaromaniac 0 Опубликовано 28 Августа 2011 Нужно дописать к стандартному АМК фриплею точки перехода ЧАЭС1>ЧАЭС2 и обратно. Можно ли это реализовать без редактирования all.spawn и как бы проще всего это осуществить? Поделиться этим сообщением Ссылка на сообщение
Habaromaniac 0 Опубликовано 28 Августа 2011 Habaromaniac В ogsm_freeplay.script из OGSM мод глянь функцию спавна level_changera - для перехода между уровнями. В АМК она м.б тоже есть, я не помню как они переходы делали. Я выковырял оттуда данные функции: -- Спавним левел-чейнджер function spawn_level_changer(sid, from_pos, from_level, dest_pos, dest_level, hint, mode, dest_dir) local vertexes = { l01_escape = {lvid=594266, gvid=0}, l04_darkvalley = {lvid=121712, gvid=815}, l11_pripyat = {lvid=142116, gvid=2270}, l12_stancia = {lvid=405348, gvid=2400}, l12_stancia_2 = {lvid=9914, gvid=2517} -- l12_stancia_2 = {lvid=227423, gvid=2635} } local obj = alife():create("level_changer", from_pos, vertexes[from_level]["lvid"], vertexes[from_level]["gvid"]) if obj then level.map_add_object_spot(obj.id, "level_changer", hint) 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_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() -- свойства cse_shape local shape_count = packet:r_u8() local shape_type local center local radius if shape_count == 0 then shape_type = 0 center = vector():set(0,0,0) radius = 10.0 shape_count = 1 else 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 v1 = packet:r_vec3() local v2 = packet:r_vec3() local v3 = packet:r_vec3() local v4 = packet:r_vec3() end end end -- свойства cse_alife_space_restrictor local restrictor_type = packet:r_u8() -- свойства cse_alife_level_changer local dest_game_vertex_id = packet:r_u16() local dest_level_vertex_id = packet:r_s32() 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() if packet:r_elapsed() ~= 0 then get_console():execute("left="..packet:r_elapsed()) end -- свойства cse_alife_object 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) packet:w_stringZ(custom_data) packet:w_s32(sid) packet:w_s32(cse_alife_object__unk3_u32) -- свойства cse_shape packet:w_u8(shape_count) for i=1,shape_count do packet:w_u8(shape_type) if shape_type == 0 then packet:w_vec3(vector():set(0,0,0)) packet:w_float(3) else packet:w_vec3(vector():set(3,0,0)) packet:w_vec3(vector():set(0,3,0)) packet:w_vec3(vector():set(0,0,3)) packet:w_vec3(vector():set(0,0,0)) end end -- свойства cse_alife_space_restrictor packet:w_u8(restrictor_type) -- свойства cse_alife_level_changer packet:w_u16(vertexes[dest_level]["gvid"]) packet:w_s32(vertexes[dest_level]["lvid"]) packet:w_vec3(dest_pos) if dest_dir then packet:w_vec3(dest_dir) else packet:w_vec3(dest_direction) end packet:w_stringZ(dest_level) packet:w_stringZ(dest_graph_point) packet:w_u8(mode) obj:STATE_Read(packet, packet:w_tell()-packet:r_tell()) end end -- Удаление лишних переходов function disable_sar_entrance() for i=1,65535 do local obj = alife():object(i) if obj and obj:name()=="exit_to_sarcofag_01" then alife():release(obj, true) end end end -- Спавн всех нужных переходов function set_lc() if not db.actor or not has_alife_info("game_end") then xr_effects.after_credits() else level.add_pp_effector("teleport.ppe", 2008, false) -- ЧАЭС2 - ЧАЭС -- spawn_level_changer(6003, vector():set(554.52,150,201), "l12_stancia_2", vector():set(117.6,-0.1,-76.3), "l12_stancia", "to_aes", 1, vector():set(0,-1.5,0)) spawn_level_changer(6003, vector():set(-42.15,-0.02,56.03), "l12_stancia_2", vector():set(126,-0.1,-76.3), "l12_stancia", "to_aes", 0, vector():set(0,-1.5,0)) -- ЧАЭС - ЧАЭС2 spawn_level_changer(6004, vector():set(117.6,-0.1,-76.3), "l12_stancia", vector():set(-42.15,-0.02,64), "l12_stancia_2", "to_aes", 0) end end -- Отмечаем на карте новые точки перехода function mark_lc() local obj = alife():story_object(6003) if obj then level.map_add_object_spot(obj.id, "level_changer", "to_aes") end local obj = alife():story_object(6004) if obj then level.map_add_object_spot(obj.id, "level_changer", "to_aes") end if has_alife_info("freeplay") and (level.name()=="l12_stancia" or level.name()=="l12_stancia_2" or level.name()=="l11_pripyat" or level.name()=="l10_radar") then level.set_weather("default") end end И закинул это всё в xr_logic.script, однако безрезультатно. Может я что-то делают не так или переход должен быть не через бункер саркофага а где-то в другом месте? Поделиться этим сообщением Ссылка на сообщение
Habaromaniac 0 Опубликовано 28 Августа 2011 (изменено) Habaromaniac, функцию мало закинуть, её ещё и нужно вызвать, в данном случае, вроде достаточно вызвать set_lc() и spawn_level_changer() и желательно mark_lc(). Ulman, Я почему-то думал что они должны выполнятся автоматически, но если это не так, то как тогда прописать автовызов определенной функции? Изменено 28 Августа 2011 пользователем Habaromaniac Поделиться этим сообщением Ссылка на сообщение
Habaromaniac 0 Опубликовано 28 Августа 2011 Ulman, Shadows, Спасибо за разъяснения, буду пробовать. Добавлено через 175 мин.: Таки всё безрезультатно, через after_credits(actor, npc) в xr_effects тоже функции не вызываются. Shadows, хотел уточнить, а где брать координаты для create_level_changer? По идее эти точки уже должны быть прописаны в каком-то файле (в сюжете ведь прекрасно все переходы работали)... Поделиться этим сообщением Ссылка на сообщение
Habaromaniac 0 Опубликовано 29 Августа 2011 (изменено) Shadows, Ну это всё конечно хорошо, но не буду же я начинать новую игру и снова проходить всю сюжетку, чтобы добраться до ЧАЭС и потестить работоспособность функции. Неужели нет более приемлемого способа вызова? ziStam, Спасибо, это полезная информация, может быть пригодится. А на каком языке кстати написан аll.sраwn? Не легче ли раскодировать его и достать всю нужную информацию из исходника? Изменено 29 Августа 2011 пользователем Cyclone Поделиться этим сообщением Ссылка на сообщение