Все посты %s в %S - AMK Team
Перейти к контенту

Скриптование


Svoboда

Рекомендуемые сообщения

Доброго времени суток! Помогите разобраться со скриптами. Хочу сделать отдельный скрипт для внесения функций на точки переходов между локациями. Создаю пустой скрипт 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") then
local obj_id = get_story_object_id("esc_to_marsh_1")
--if(obj_id) then
level.map_add_object_spot_ser(obj_id, "level_changer_down_left", "lc_to_marsh_name")
end
end

function has_lc_to_escape_1()
if db.actor:has_info("actor_teleport_to_marsh_1") then
local obj_id = get_story_object_id("marsh_to_esc_1")
--if(obj_id) then
level.map_add_object_spot_ser(obj_id, "level_changer_up_right", "lc_to_esc_name")
end
end

function add_lc_spot_to_map()
if db.actor == nil then
return
end
-- перечислим функции, которые обрабатываем
has_lc_to_marsh_1()
has_lc_to_escape_1()
end

 

Всё сохраняю, запускаю игру и получаю вылет:

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: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


то вылета нет, подскажите, что я делаю неправильно? (Прошу сильно не пинать, я со скриптами впервые работаю :) ).

Изменено пользователем Grif_on

Поделиться этим сообщением


Ссылка на сообщение

Приветствую. Подскажите по скрипту. Дело такое: создал в спавне level_changer и хочу до определённого момента его удалить. Написал такую функцию:

local lc_id = get_story_object_id("esc_to_marsh_1")
if lc_id ~= nil then
alife():release(alife():object(lc_id), true)

Вроде всё работает, переход удаляется. Когда нужно вернуть переход, пытаюсь восстановить его через alife():create, но никак не выходит (либо вылет, либо переход не появляется). Подскажите, как правильно прописать alife():create( , чтоб работало как надо?
 

Поделиться этим сообщением


Ссылка на сообщение

 

 

А действительно ли нужно его удалять? Его же можно просто дизаблить
Хотел я дизаблить, да в ЗП не смог заставить работать функцию disable_level_changer. Буду копать дальше, может чего и получится. :)

Поделиться этим сообщением


Ссылка на сообщение
  • Недавно просматривали   0 пользователей

    • Ни один зарегистрированный пользователь не просматривает эту страницу.
×
×
  • Создать...