Перейти к контенту

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


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 пользователей

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

AMK-Team.ru

×
×
  • Создать...