Grif_on 9 Опубликовано 8 Июля 2015 (изменено) Доброго времени суток! Помогите разобраться со скриптами. Хочу сделать отдельный скрипт для внесения функций на точки переходов между локациями. Создаю пустой скрипт mapspots.script, вписываю его и функцию в bind_stalker.script так: function actor_binder:info_callback(npc, info_id)printf("*INFO*: npc='%s' id='%s'", npc:name(), info_id)--' Сюжет-- Отметки на картеmapspots.add_lc_spot_to_map()end В скрипте mapspots.script пишу следующее: function has_lc_to_marsh_1()if db.actor:has_info("actor_teleport_to_marsh_1") thenlocal obj_id = get_story_object_id("esc_to_marsh_1")--if(obj_id) thenlevel.map_add_object_spot_ser(obj_id, "level_changer_down_left", "lc_to_marsh_name")endendfunction has_lc_to_escape_1()if db.actor:has_info("actor_teleport_to_marsh_1") thenlocal obj_id = get_story_object_id("marsh_to_esc_1")--if(obj_id) thenlevel.map_add_object_spot_ser(obj_id, "level_changer_up_right", "lc_to_esc_name")endendfunction add_lc_spot_to_map()if db.actor == nil thenreturnend-- перечислим функции, которые обрабатываемhas_lc_to_marsh_1()has_lc_to_escape_1()end Всё сохраняю, запускаю игру и получаю вылет: Expression : !m_error_codeFunction : raii_guard::~raii_guardFile : D:\prog_repository\sources\trunk\xrServerEntities\script_storage.cppLine : 748Description : ...call of pripyat\gamedata\scripts\bind_stalker.script:133: attempt to index global 'mapspots' (a nil value) Но если я заношу все функции, напрямую в bind_stalker.script (или, например, в dialogs_локация.script), и вписываю в bind_stalker.script так function actor_binder:info_callback(npc, info_id)printf("*INFO*: npc='%s' id='%s'", npc:name(), info_id)--' Сюжетui_clc_menu.level_changer_choise(info_id)-- Отметки на картеadd_lc_spot_to_map()end то вылета нет, подскажите, что я делаю неправильно? (Прошу сильно не пинать, я со скриптами впервые работаю ). Изменено 8 Июля 2015 пользователем Grif_on Поделиться этим сообщением Ссылка на сообщение
Grif_on 9 Опубликовано 25 Августа 2015 Приветствую. Подскажите по скрипту. Дело такое: создал в спавне level_changer и хочу до определённого момента его удалить. Написал такую функцию: local lc_id = get_story_object_id("esc_to_marsh_1")if lc_id ~= nil thenalife():release(alife():object(lc_id), true) Вроде всё работает, переход удаляется. Когда нужно вернуть переход, пытаюсь восстановить его через alife():create, но никак не выходит (либо вылет, либо переход не появляется). Подскажите, как правильно прописать alife():create( , чтоб работало как надо? Поделиться этим сообщением Ссылка на сообщение
Grif_on 9 Опубликовано 25 Августа 2015 А действительно ли нужно его удалять? Его же можно просто дизаблить Хотел я дизаблить, да в ЗП не смог заставить работать функцию disable_level_changer. Буду копать дальше, может чего и получится. Поделиться этим сообщением Ссылка на сообщение