Templar 0 Опубликовано 16 Декабря 2015 Поделиться Опубликовано 16 Декабря 2015 Совмещение модификаций на ЧН. Я хотел адаптировать Mercenaries mod(он же - actor_need_help.script) под Faction commander. У меня это почти получилось - совместить скрипты друг под друга. В итоге Faction commander работает нормально, а Mercenaries не идёт. При активации скрипта выкидывает с этим логом: FATAL ERROR[error]Expression : fatal error[error]Function : CScriptEngine::lua_error[error]File : E:\priquel\sources\engine\xrServerEntities\script_engine.cpp[error]Line : 180[error]Description :[error]Arguments : LUA error: ...- my faction\gamedata\scripts\actor_need_help.script:589: attempt to index field 'board' (a nil value) До этого я мог исправить ошибки, которые выдавались в логе. Это как исправить - я не знаю. Ссылка на комментарий
naxac 2 447 Опубликовано 17 Декабря 2015 Поделиться Опубликовано 17 Декабря 2015 @vampirnik77, как-то так: local ptr = patrol('название_точки_пути') alife():create("секция_аномалии", ptr:point(0), ptr:level_vertex_id(0), ptr:game_vertex_id(0)) 1 1 Аддон для ОП-2.09.2: Яндекс/Google/GitHub Ссылка на комментарий
Dim@s535 0 Опубликовано 17 Декабря 2015 Поделиться Опубликовано 17 Декабря 2015 @StalkerCOP, пробовал такое, но работает токмо с артефактами. Всем остальным предметам добавляет лишь описания воздействий, хотя самого воздействия от них нет. (Вероятно, зависит также от класса предмета.) @Dennis_Chikin, того и боялся. Не осмелюсь никак полезть в движок игры. Да и возможности такой нет. Прошу прощения, @Dennis_Chikin. Изначально предполагалось, что воздействие артефактов было реализовано скриптами. Теперь данный миф развеяли, за что благодарствую. Спасибо за ответы, друзья-сталкеры. Ссылка на комментарий
Старый уставший сталкер 10 Опубликовано 18 Декабря 2015 Поделиться Опубликовано 18 Декабря 2015 (изменено) Подскажите нубу в скриптах - апдейт рестрикторов идет реже чем актора? Я к тому, что можно ли например некоторые скрипты, не требующие частого апдейта (например новости о смерти сталкеров) повесить на апдейт рестриктора для экономии ресурсов, дабы не загружать многострадальный апдейт актора? Например в ЗП есть рестрикторы постоянно работающие на каждом уровне (к примеру спавнер ворон: sr_crow_spawner), можно было бы его загрузить. Изменено 18 Декабря 2015 пользователем Старый уставший сталкер Ссылка на комментарий
naxac 2 447 Опубликовано 18 Декабря 2015 Поделиться Опубликовано 18 Декабря 2015 @Старый уставший сталкер, рестрикторы обновляютя через некоторый интервал из апдейта актера. Сделай так же и для своих новостей. 1 Аддон для ОП-2.09.2: Яндекс/Google/GitHub Ссылка на комментарий
RayTwitty 502 Опубликовано 18 Декабря 2015 Поделиться Опубликовано 18 Декабря 2015 можно было бы его загрузить.Все апдейты объектов вызываются из внутреннего общего апдейта. Переложив на ворон, ты по сути ничего не изменил. 1 Ссылка на комментарий
vampirnik77 121 Опубликовано 20 Декабря 2015 Поделиться Опубликовано 20 Декабря 2015 Такая трабла. Удаляю предмет из инвентаря, после этого вызываю итерацию, итерация захватывает удаленный предмет, как решить? Буду благодарен. Официальная страница проекта Neof-One Crew Ссылка на комментарий
Serge! 127 Опубликовано 20 Декабря 2015 Поделиться Опубликовано 20 Декабря 2015 итерация захватывает удаленный предмет, как решить? для ЗП я использовал метод drop_item_and_teleport. Из инвентаря он при этом точно удаляется движком. Есть ли такое в ТЧ не знаю. Ссылка на комментарий
vampirnik77 121 Опубликовано 20 Декабря 2015 Поделиться Опубликовано 20 Декабря 2015 (изменено) @Serge!, А мне и нужно было для ЗП. Кстати не помогло. Изменено 20 Декабря 2015 пользователем vampirnik77 Официальная страница проекта Neof-One Crew Ссылка на комментарий
RayTwitty 502 Опубликовано 20 Декабря 2015 Поделиться Опубликовано 20 Декабря 2015 (изменено) Удаляю предмет из инвентаря, после этого вызываю итерацию, итерация захватывает удаленный предмет, как решить? Буду благодарен. Сделать паузу перед итерацией либо добавить флажок "removed" удаленному объекту (способ должен сработать, но не гарантирую). ... sobj.removed = true alife():release(sobj.id) npc:iterate_inventory(function(_,item) local sobj = alife():object(item:id()) if sobj and not sobj.removed then ... end end) Изменено 20 Декабря 2015 пользователем RayTwitty Ссылка на комментарий
Serge! 127 Опубликовано 20 Декабря 2015 Поделиться Опубликовано 20 Декабря 2015 я использовал метод drop_item_and_teleport забыт уточнить. Предмет всё равно надо удалить, т.к. иначе потом метод level.object_by_id может его найти. Главное то, что он в инвентаре болтаться не будет и не надо ждать отработки уборщика. Кстати не помогло. дайте кусочек кода (хотя сюда, хоть в личку) мне просто интересно посмотреть. Ссылка на комментарий
UnLoaded 313 Опубликовано 25 Декабря 2015 Поделиться Опубликовано 25 Декабря 2015 (изменено) Удаляю предмет из инвентаря, после этого вызываю итерацию, итерация захватывает удаленный предмет, как решить? А разве не для этого случая были ПЫСами экспортированы void mark_item_dropped(game_object*) ну и до кучи bool marked_dropped(game_object*) ? Кстати, недавно где-то рядом обсуждалось... Изменено 25 Декабря 2015 пользователем UnLoaded Ссылка на комментарий
Malandrinus 615 Опубликовано 25 Декабря 2015 Поделиться Опубликовано 25 Декабря 2015 Удаляю предмет из инвентаря, после этого вызываю итерацию, итерация захватывает удаленный предмет, как решить? Прежде всего, тебе надо понять причину. Причина в наличии двух объектов: серверного и клиентского. Ты удаляешь серверный, а клиентский удаляется позже. А когда ты перебираешь объекты в инвентаре, то ты как раз перебираешь клиентские объекты. Поэтому все методы решения этой проблемы так или иначе двухстадийные: удаляешь объект, ждёшь полного исчезновения его клиентской части - только потом делаешь что нужно было. Плагины Total Commander для работы с игровыми архивами: Архиваторный плагин (для работы с одиночным архивом): link1 link2 Системный плагин (для распаковки установленной игры): link1 link2 Ссылка на комментарий
naxac 2 447 Опубликовано 25 Декабря 2015 Поделиться Опубликовано 25 Декабря 2015 (изменено) Удаляю предмет из инвентаря, после этого вызываю итерацию, итерация захватывает удаленный предмет, как решить? Самое простое - проверяй наличие серверного объекта при итерации (... if alife():object(item:id())~=nil then...). Изменено 25 Декабря 2015 пользователем naxac Аддон для ОП-2.09.2: Яндекс/Google/GitHub Ссылка на комментарий
DXatom 0 Опубликовано 1 Января 2016 Поделиться Опубликовано 1 Января 2016 (изменено) Как в STALKER SoC выдать ГГ задание, после прочтения им документа в инвентаре? Изменено 1 Января 2016 пользователем DXatom Ссылка на комментарий
UnLoaded 313 Опубликовано 2 Января 2016 Поделиться Опубликовано 2 Января 2016 @DXatom Для начала почитать раздел "Уроки по модостроению" + тут - узнаешь много полезного. Конкретно по вопросу (в общих чертах): делать этот самый документ на классе чего-то съедобного \используемого, затем ловить в обработчике кэллбэка(в классе биндера актера) использование этого объекта, по факту выдавать задание. 1 Ссылка на комментарий
RayTwitty 502 Опубликовано 2 Января 2016 Поделиться Опубликовано 2 Января 2016 (изменено) @DXatom, можно либо создать объект задания CGameTask, загрузить в него описание задания и собственно выдать во время использования предмета (читать), но зачем запариваться, когда можно повесить выдачу задания на поршен (вроде бы, тег task надо прописать внутрь тега поршена). Изменено 2 Января 2016 пользователем RayTwitty 1 Ссылка на комментарий
DXatom 0 Опубликовано 3 Января 2016 Поделиться Опубликовано 3 Января 2016 @DXatom Для начала почитать раздел "Уроки по модостроению" + тут - узнаешь много полезного. Конкретно по вопросу (в общих чертах): делать этот самый документ на классе чего-то съедобного \используемого, затем ловить в обработчике кэллбэка(в классе биндера актера) использование этого объекта, по факту выдавать задание. Сделал так: function actor_binder:reinit() ...self.object:set_callback(callback.use_object, self.use_inventory_item, self)function actor_binder:net_destroy()...self.object:set_callback(callback.use_object, nil)function actor_binder:use_inventory_item(obj)if obj ~= nilthentask_documents.on_use(obj)endend local object_info_portion = {task_document="esc_talk_koval_quest_started"}function on_use(obj)for key, val in pairs(object_info_portion) doif obj:section() == keythendb.actor:give_info_portion(val)endendend [task_document]:identity_immunitiesGroupControlSection = spawn_groupdiscovery_dependency =$spawn = "food and drugs\task_document"$prefetch = 32class = II_ANTIRcform = skeletonvisual = equipments\item_document_2.ogfdescription = "no desc"inv_name = "Unnamed"inv_name_short = "Unnamed"inv_weight = 0.10inv_grid_width = 2inv_grid_height = 1inv_grid_x = 6inv_grid_y = 18cost = 0eat_health = 0eat_satiety = 0eat_power = 0eat_radiation = 0wounds_heal_perc = 0eat_portions_num = 1animation_slot = 4hud = wpn_vodka_hud Работает. Ссылка на комментарий
DXatom 0 Опубликовано 5 Января 2016 Поделиться Опубликовано 5 Января 2016 Скажите, пожалуйста, как стравить двух НПС, а то они не атакуют друг друга. [logic] active = walker@walker4on_death = death@koval[walker@walker4]path_walk = esc_koval_strela_walkpath_look = esc_koval_strela_lookmeet = no_meet[death@koval]on_info = %+esc_koval_dead% [logic]active = walker@walker1[walker@walker1]path_walk = esc_bandit1_walkpath_look = esc_bandit1_lookmeet = default_meet стоят прямо лицом к лицу на мосту (Кордон). Спасибо. Ссылка на комментарий
vampirnik77 121 Опубликовано 6 Января 2016 Поделиться Опубликовано 6 Января 2016 Доброго времени суток! Такой вопрос, работаю сейчас с гуи окнами, в одной ситуации приходиться перезапускать окно при это курсор перемешается в центр, это очень режит глаз. Можно ли получить координаты курсора, а потом их же задать? Официальная страница проекта Neof-One Crew Ссылка на комментарий
Рекомендуемые сообщения
Создайте аккаунт или авторизуйтесь, чтобы оставить комментарий
Комментарии могут оставлять только зарегистрированные пользователи
Создать аккаунт
Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!
Зарегистрировать новый аккаунтВойти
Есть аккаунт? Войти.
Войти