Старлей 88 Опубликовано 15 Мая 2014 Поделиться Опубликовано 15 Мая 2014 Всем привет . Все еще не нашел решение следующей проблемы: "при спавне предмета на каком-нибудь этаже здания на столе(или другом объекте) он оказывается на земле. Координаты взяты из all.spawn. Спавн произвожу скриптом. P.S. Объекты "physic_destroyable_object" и "physic_object" спавнятся тютелька в тютельку." Как мне подсказал Сталкер Лом: предмет начинает использовать позицию низ\верхлежащей АИ-ноды. В СДК это выключается галками use_ai_location иvisible_for_ai, а вот как в аллспавне это делается - что то не припомню...Хотя можно попробовать убрать строки начинающиеся со слова upd: , они, обычно, в конце блока спавна объекта располагаются. Однако повторюсь, я пытаюсь спавнить через скрипт. Как быть не знаю... В lua_help нашел такой метод: function use_ai_locations(boolean); Однако он не применим к классу game_object, то бишь к заспавненной вещице. Вроде бы и ситуация то простая совсем, но не знаю в каком напрвлении копать... Ray Of Hope - кооператив сталкера OldStory Ссылка на комментарий
Dennis_Chikin 3 658 Опубликовано 15 Мая 2014 Поделиться Опубликовано 15 Мая 2014 Просто не спавнить в "дырявых" местах. Не лечится, кроме как правкой рельефа. Ну или только соответствующий класс использовать. Солянка обезжиренная, диетическая, полезные советы по "солянке", текущий тестовый патч Ссылка на комментарий
Старлей 88 Опубликовано 15 Мая 2014 Поделиться Опубликовано 15 Мая 2014 "дырявых" местах Случайно не те места, где работает баг "лифт"? А по поводу не спавнить - не могу понять: сколько же уже модов было сделано на сталкер(причем людьми с разным опытом в модмейкерстве), так ведь спавнили скриптом все время и везде - никуда не проваливалось... Бред какой-то. Конечно на крайняк могу попробовать АИ-сетку пересобрать, но подставлять Node для каждой точки спавна - как-то примитивно. P.S. Спавню через скрипт, ибо мой спавн динамический, с постоянным обновлением и спавном по обстоятельствам. Ray Of Hope - кооператив сталкера OldStory Ссылка на комментарий
Dennis_Chikin 3 658 Опубликовано 15 Мая 2014 Поделиться Опубликовано 15 Мая 2014 По факту, в итоге выход нашли в том, что спавнится ящик/мешок, а предметы - уже туда. И, да, надо посмотреть, как именно проваливается. Если, классический пример - предметы на крыше элеватора на Кордоне - одно. Если это типа артов, уходящих под текстуры - другое. Кроме того вижу терминологическую путаницу: game_object - это который создался в онлайне. Серверный - это тот, который возвертает alife() Солянка обезжиренная, диетическая, полезные советы по "солянке", текущий тестовый патч Ссылка на комментарий
Старлей 88 Опубликовано 15 Мая 2014 Поделиться Опубликовано 15 Мая 2014 Dennis_Chikin,"game_object - это который создался в онлайне" - А это как?)) local obj = alife():create(item, pos_vector[1], pos_vector[2], pos_vector[3]) obj - будет серверный объект, так ведь? Еще знаю можно клиентский получить так: obj = level.object_by_id(k) А вот можешь подробнее пояснить свою фразу "game_object - это который создался в онлайне" , а то я что-то не догоняю) P.S. И где сейчас можно найти актуальную версию m_netpk? Ray Of Hope - кооператив сталкера OldStory Ссылка на комментарий
Карлан 1 049 Опубликовано 15 Мая 2014 Поделиться Опубликовано 15 Мая 2014 (изменено) P.S. И где сейчас можно найти актуальную версию m_netpk? У меня от 9 октября, вроде последнее. obj = level.object_by_id(k) Хрен ты угадал, в момент спавна нельзя его так получить. obj в твоем случае серверный - да, и править его тока нет пакетами, есть еще одна функция, с которой можно работать, глянь в справочнике. Если ты говоришь что дофига таких модов, то че тебе мешает их использовать в своих целях? У меня скриптом проваливаются тоже(книги всякие спавнил), в результате забил, спавнил через acdc. Тебе религия что-ли не позволяет ей пользоваться, или че, я не понимаю вас... Спавн скриптом хорош, но не в этих случаях. Изменено 15 Мая 2014 пользователем Карлан 1 Ссылка на комментарий
*Shoker* 322 Опубликовано 15 Мая 2014 Поделиться Опубликовано 15 Мая 2014 (изменено) @Старлей, на ЗП перешёл? use_ai_locations() есть только там, и используется при спавне оружия в тайники. Пробил бы поиском по скриптам ЗП - нашёл бы пример использования. local sobj = alife():create(item, pos_vector[1], pos_vector[2], pos_vector[3]) sobj:use_ai_locations(false) Должно работать. Функция применяется к серверному объекту, желательно сразу после спавна. (как на примере выше) m_netpk от 19 Сентября 2013, новее хз где брать. Изменено 15 Мая 2014 пользователем *Shoker* 3 Можно просто Shoker, форум АМК съел моё старое имя и не хочет отдавать о_О Мастер аномалий на свою заднюю точку. Ссылка на комментарий
Kirgudu 1 217 Опубликовано 16 Мая 2014 Поделиться Опубликовано 16 Мая 2014 Artos в октябре выкладывал этот комплект: m_netpk Потом почему-то удалил (не исключено, что из-за ошибок, но об этом ничего не известно). Тем не менее, это самая свежая версия, которая есть в наличии. 1 Инструмент Ссылка на комментарий
Старлей 88 Опубликовано 16 Мая 2014 Поделиться Опубликовано 16 Мая 2014 (изменено) *Shoker* Да ЗП, точнее мультиплеер ЗП) local sobj = alife():create(item, pos_vector[1], pos_vector[2], pos_vector[3]) sobj:use_ai_locations(false) Вылет. О не применимости метода к объекту. (attempt to call method "use_ai_locations" (a nil value) Я решил прикольнуться и сделал так: local item = alife():create(k, pos_vector[1], pos_vector[2], pos_vector[3]) se_item = alife():object(item.id) se_item:use_ai_locations(not se_item:used_ai_locations()) И... работает!!! Один вопрос: а в чем вся соль?(вроде же оба серверных объекта) Изменено 16 Мая 2014 пользователем Старлей Ray Of Hope - кооператив сталкера OldStory Ссылка на комментарий
Карлан 1 049 Опубликовано 16 Мая 2014 Поделиться Опубликовано 16 Мая 2014 (изменено) Нифига у меня нвоый гулаг создать не получается, 4 раза пересоздавал, вылетал все с той же ошибкой. Кому не лень сделайте гулаг на эскейпе для людей и поделитесь. Для монстров у меня все гулаги работают, как ни странно. Изменено 16 Мая 2014 пользователем Карлан 1 Ссылка на комментарий
J.A.A. 2 Опубликовано 18 Мая 2014 Поделиться Опубликовано 18 Мая 2014 Ребята, добрый вечер! У меня такой вопрос: Как в ТЧ составить скрипт автозагрузки. Т.е., чтобы, например, при получении инфопоршня загружалось определённое сохранение. Заранее спасибо. Пишу мод с неповторимым сюжетом. Нужны "модельеры" Заинтересованным писать в ЛС Ссылка на комментарий
FantomICW 678 Опубликовано 18 Мая 2014 Поделиться Опубликовано 18 Мая 2014 (изменено) @J.A.A., добавляй функцию в xr_effects.script: function load_savedgame(actor, npc, p) --Выставляем p-аргумент (он является названием сейва) local savedgame = p[1] --Устанавливаем локальную переменную для p[1] if savedgame ~= nil then --Проверка на наличие сейва get_console():execute("load "..savedgame) --Запускаем сейв через консольную команду end end Потом в рестрикторе делай проверку на инфу и запускай функцию: on_info = {+some_info -load_spec_save} %=load_savedgame(название_сейва) +load_spec_save% Изменено 18 Мая 2014 пользователем FantomICW Ссылка на комментарий
darklordveider 2 Опубликовано 20 Мая 2014 Поделиться Опубликовано 20 Мая 2014 Нужно по скрипту создать фейковый ящик. Ящик и его содержимое должны сохраниться после перехода. Куда копать, что почитать? Ссылка на комментарий
J.A.A. 2 Опубликовано 21 Мая 2014 Поделиться Опубликовано 21 Мая 2014 Ппц, у меня экзамены на носу, а я в S.T.A.L.K.E.R. завис. Значит, такое дело: как можно по-другому использовать функцию? function terminator() local npc1 = level_object_by_sid(9904) if has_alife_info("поршень1") and not has_alife_info("поршень2") then npc1.health = 1 end end Что мне нужно конкретно: Желательно, чтобы "local npc1" вычислялась не через "sid", а через другие функции, например, через имя профиля или название в "character_desc_xxx". В общем, не хочу зависеть от ID, а то прописываю ID'ы группе из 10 человек и потом путаюсь. Пишу мод с неповторимым сюжетом. Нужны "модельеры" Заинтересованным писать в ЛС Ссылка на комментарий
Dennis_Chikin 3 658 Опубликовано 21 Мая 2014 Поделиться Опубликовано 21 Мая 2014 Для поиска нужного как раз и существует получение объекта через SID и через имя. Все остальное - только перебором. Слово, которым называется такой код, здесь запрещено, к сожалению. Солянка обезжиренная, диетическая, полезные советы по "солянке", текущий тестовый патч Ссылка на комментарий
Full Noob 1 Опубликовано 21 Мая 2014 Поделиться Опубликовано 21 Мая 2014 Зарегистрировал по туторы юз предмета: function actor_binder:use_obj(obj) if obj:section()=="repair_kit_weapon" thenalife():create("repair_kit_weapon",db.actor:position(),db.actor:level_vertex_id(),db.actor:game_vertex_id(),db.actor:id())ineeded_condition = obj:condition()hm_repair.action_repair(ineeded_condition)endend создал скрипт: function action_repair(rcond)local repair_kit = db.actor:object("repair_kit_weapon")if repair_kit and (db.actor:active_slot()==1 or db.actor:active_slot()==2) and db.actor:item_in_slot(db.actor:active_slot()) thenrepair_kit:set_condition(rcond)local item = db.actor:item_in_slot(db.actor:active_slot())local need_for_repair = (1-item:condition())*(1/25)if item thenif repair_kit:condition()>=need_for_repair thenitem:set_condition(1)repair_kit:set_condition(repair_kit:condition()-need_for_repair)snd_obj = xr_sound.get_safe_sound_object([[hardcore_mod\repair\repair_weapon]])snd_obj:play_no_feedback(db.actor, sound_object.s2d, 0, vector(), 1.0)endendendend Вылет. Пишет что не знает что condition() обращается к nil! Это что не успевает дойти до игры что у меня ремкомплект реснулся или как? И как решить? 1 Ссылка на комментарий
Dennis_Chikin 3 658 Опубликовано 22 Мая 2014 Поделиться Опубликовано 22 Мая 2014 "Пишет что не знает что condition() обращается к nil" - какая хоть из строк-то ? (Ну лень все внимательно просматривать. ) Солянка обезжиренная, диетическая, полезные советы по "солянке", текущий тестовый патч Ссылка на комментарий
Full Noob 1 Опубликовано 22 Мая 2014 Поделиться Опубликовано 22 Мая 2014 (изменено) Да сама проверка кондишна. Вот я переделал скрипт немного вроде function action_repair(newcondition) local repair_kit = alife():create("repair_kit_weapon",db.actor:position(),db.actor:level_vertex_id(),db.actor:game_vertex_id()) --,db.actor:id())--local repair_kit = db.actor:object("repair_kit_weapon")--repair_kit:set_condition(newcondition)if (db.actor:active_slot()==1 or db.actor:active_slot()==2) and db.actor:item_in_slot(db.actor:active_slot()) thenlocal item = db.actor:item_in_slot(db.actor:active_slot())local need_for_repair = (1-item:condition())*(1/2)if item thenif repair_kit:condition()>=need_for_repair thenitem:set_condition(1)repair_kit:set_condition(repair_kit:condition()-need_for_repair)snd_obj = xr_sound.get_safe_sound_object([[hardcore_mod\repair\repair_weapon]])snd_obj:play_no_feedback(db.actor, sound_object.s2d, 0, vector(), 1.0)endendenddb.actor:transfer_item(repair_kit,db.actor)end по разному пробовал, в итоге трансфер не работает, походу не знает что такое repair_kit...не успевает обработать? Как быть! Изменено 22 Мая 2014 пользователем Full Noob Ссылка на комментарий
Dennis_Chikin 3 658 Опубликовано 22 Мая 2014 Поделиться Опубликовано 22 Мая 2014 Вот в этом варианте и не должен. :condition() есть только у клиентского. здесь - это - не он, во вторых, клиентский даже еще в онлайн перейти не успел. Солянка обезжиренная, диетическая, полезные советы по "солянке", текущий тестовый патч Ссылка на комментарий
Full Noob 1 Опубликовано 22 Мая 2014 Поделиться Опубликовано 22 Мая 2014 Тогда как? Так тоже не канает: alife():create("repair_kit_weapon",db.actor:position(),db.actor:level_vertex_id(),db.actor:game_vertex_id()) local repair_kit = db.actor:object("repair_kit_weapon") Видимо из за того что клиентский даже еще в онлайн перейти не успел. Как быть то?) Ссылка на комментарий
Рекомендуемые сообщения
Создайте аккаунт или авторизуйтесь, чтобы оставить комментарий
Комментарии могут оставлять только зарегистрированные пользователи
Создать аккаунт
Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!
Зарегистрировать новый аккаунтВойти
Есть аккаунт? Войти.
Войти