Dennis_Chikin 3 658 Опубликовано 17 Января 2019 Поделиться Опубликовано 17 Января 2019 (изменено) @naxac, я ему уже предлагал: db.storage[mob:id()].pstor.mparts = n Не хочет. @F.Constantine, естественно, вылет. if npc:character_community(stalker) - во-первых, здесь не существует никаких "npc", во-вторых - у неписей нет свойства health_hit_part Это задается именно через конфиг. Разбирайтесь. Ну и традиционно, горы трупов неписей в модах - результат работы некоей "оффлайн боевки", которая amk_offline_alife.script, вообще не имеет отношения к параметрам неписей, ибо они там просто убиваются случайным образом. Изменено 17 Января 2019 пользователем Dennis_Chikin Солянка обезжиренная, диетическая, полезные советы по "солянке", текущий тестовый патч Ссылка на комментарий
F.Constantine 0 Опубликовано 17 Января 2019 Поделиться Опубликовано 17 Января 2019 @Dennis_Chikin, Спасибо за "совет", конечно . Я уже неделю разбираюсь с конфигами, весь опус моих разбирательств подробненько в теме "[SoC] Ковыряемся в файлах", на 992 странице если интересно - хотя вряд ли интересно. А можно хотя бы подсказать, как правильно прописать проверку НПС на принадлежность к фракции ? Ссылка на комментарий
Dennis_Chikin 3 658 Опубликовано 17 Января 2019 Поделиться Опубликовано 17 Января 2019 (изменено) function myfunction( npc ) if npc:character_community() == "stalker" then Как-то так, наверное. И при вызове его надо туда передать. В bind_stalker, разумеется, никаких npc тоже нет, и откуда бы они там взялись - я не знаю. Изменено 17 Января 2019 пользователем Dennis_Chikin Солянка обезжиренная, диетическая, полезные советы по "солянке", текущий тестовый патч Ссылка на комментарий
F.Constantine 0 Опубликовано 17 Января 2019 Поделиться Опубликовано 17 Января 2019 (изменено) @Dennis_Chikin, Спасибо, но не помогло. Я, собственно попытался сделать все по подобию довольно известного метода (он есть где-то здесь на форуме) "как сделать НПС бессмертным" - отдельно взятого НПС по его CID: Скрытый текст Как сделать игрового НПС бессмертным Пример: function immortal() local npc = level_object_by_sid(006) --волк local npc2 = level_object_by_sid(092) --проводник local npc3 = level_object_by_sid(032)-- кузнецов local npc4= level_object_by_sid(100) --серый npc.health = 1 npc2.health = 1 npc3.health = 1 npc4.health = 1 end Вызов функции прописываем в файле bind_stalker.script : имя_файла.immortal() -- вызов нашей функции бессмертия имя файла - это имя файла куда мы положим функцию. Например, если в файл test.script - пишем test.immortal() и т.п. Я эту функцию себе в игре прописал, обессмертил с десяток важных персон, все прекрасно функционирует. Теперь, пользуясь Вашей подсказкой, сделал следующее: Скрытый текст Создал маленькую функцию: function superresistance( npc ) if npc:character_community() == "stalker" then npc.health = 1 end Прописал ее в файлик test.script. А в bind_stalker.script вставил вызов этой функции: ... -- апдейт схемы детектора self.actor_detector:update() -- сверхсопротивляемость НПС test.superresistance( npc ) -- апдейт звуковой схемы актера xr_sound.update_actor() ... В общем, снова вылеты. Кстати, в вызове нужно прописывать: test.superresistance( npc ) или test.superresistance() ? Изменено 17 Января 2019 пользователем F.Constantine Ссылка на комментарий
Dennis_Chikin 3 658 Опубликовано 17 Января 2019 Поделиться Опубликовано 17 Января 2019 В вызове должен быть передан непись, с которым что-то делаете. Кстати, в том примере если кого-то из перечисленных не будет в игре - тоже будет вылет. Солянка обезжиренная, диетическая, полезные советы по "солянке", текущий тестовый патч Ссылка на комментарий
F.Constantine 0 Опубликовано 17 Января 2019 Поделиться Опубликовано 17 Января 2019 2 минуты назад, Dennis_Chikin сказал: Кстати, в том примере если кого-то из перечисленных не будет в игре - тоже будет вылет. Да, у меня эта функция с проверкой на живой-неживой для каждого персонажа. Я просто упрощенный вариант написал. 4 минуты назад, Dennis_Chikin сказал: В вызове должен быть передан непись, с которым что-то делаете. Ну, т.е. в данном случает должно быть именно test.superresistance( npc ) ? Ссылка на комментарий
Dennis_Chikin 3 658 Опубликовано 17 Января 2019 Поделиться Опубликовано 17 Января 2019 Да, и Вы перед этим должны его откуда-то взять. Солянка обезжиренная, диетическая, полезные советы по "солянке", текущий тестовый патч Ссылка на комментарий
Капрал Хикс 540 Опубликовано 17 Января 2019 Поделиться Опубликовано 17 Января 2019 3 часа назад, Dennis_Chikin сказал: Не хочет. Денис, ну, во-первых, не “не хочу”, а “не умею”, о чём я чётко и честно написал выше. Я понимаю, что тебе решение этой задачи видится простым, ясным и сразу, но извини, не все обладают такими познаниями в написании скриптового кода. Мои скромные скиллы пока не дотягивают до решения таких задач, потому и обратился за помощью. А до: 3 часа назад, Dennis_Chikin сказал: db.storage[mob:id()].pstor.mparts = n Я б в жизни не додумался В каких модах и скриптовых сборках можно наглядно посмотреть практическое использование метода записи в pstor монстра и чтения из него? Ссылка на комментарий
abramcumner 1 160 Опубликовано 17 Января 2019 Поделиться Опубликовано 17 Января 2019 (изменено) @Капрал Хикс, тебе по идее вообще с пстором не надо заморачиваться. Если я правильно понял скрипт мясника, то когда ты юзаешь монстра и у тебя есть ножик, то спавнятся запчасти от монстра. По идее тебе надо следующий код из мясника: self.item = read_if_exist("s",nil,self.object:section(),"Spawn_Inventory_Item_Section",nil) if self.item then self.item_count = read_if_exist("f",nil,self.object:section(),"Spawn_Inventory_Item_Amount",1) else return end for i=1, self.item_count do alife():create(self.item, who:position(), who:level_vertex_id(), who:game_vertex_id(), who:id()) end заменить на вызов функции скрипт_реальных_частей.spawn_parts(self.object) из скрипта реальных частей монстра. Эта функция заспавнит, сколько ей надо запчастей. Изменено 17 Января 2019 пользователем abramcumner 1 Ссылка на комментарий
Dennis_Chikin 3 658 Опубликовано 17 Января 2019 Поделиться Опубликовано 17 Января 2019 (изменено) "В каких модах и скриптовых сборках можно наглядно посмотреть" - понятия не имею. Разницы с неписями и даже актором - вообще ни какой. Точнее, единственная с конкретно актором в том, что актор в офлайн не ходит, и, соответственно, записанное сохраняется всегда. Впрочем, трупы в офлайн тоже, как правило, не ходят. @abramcumner, в "реальных запчастях" типа только количество увеличивается, без учета способа забоя? и всегда одинаковое? Ну и все равно надо хранить, что запчасти уже спавнили. upd: посмотрел исходный пост еще раз: там в приведенном куске вообще странное делается. Так что хранить надо "минус запчасти", и при смерти вычислять разницу. При использовании тушки - создавать, и обнулять сохраненное. Изменено 17 Января 2019 пользователем Dennis_Chikin Солянка обезжиренная, диетическая, полезные советы по "солянке", текущий тестовый патч Ссылка на комментарий
abramcumner 1 160 Опубликовано 17 Января 2019 Поделиться Опубликовано 17 Января 2019 1 минуту назад, Dennis_Chikin сказал: @abramcumner, в "реальных запчастях" типа только количество увеличивается, без учета способа забоя? По идее нет, отслеживаются хиты по костям моба и если хит в неудачную кость, количество частей уменьшается. Результаты этого подсчета наверное хранятся в таблицах m_tD и m_Tbl. Ссылка на комментарий
Капрал Хикс 540 Опубликовано 17 Января 2019 Поделиться Опубликовано 17 Января 2019 Проблема в том, что функция спавна запчасти из smart_monster_part срабатывает в момент смерти монстра, и думаю вызывать её в момент обыска трупа будет некорректно. Ссылка на комментарий
abramcumner 1 160 Опубликовано 17 Января 2019 Поделиться Опубликовано 17 Января 2019 Ну из коллбека на смерть удалить, оставить вызов только в мяснике. "Умные_запчасти" умно считает запчасти. "Мясник" спавнит посчитанные запчасти, если подошел с правильным инструментом. 1 Ссылка на комментарий
Капрал Хикс 540 Опубликовано 17 Января 2019 Поделиться Опубликовано 17 Января 2019 Попробовал всё по рецепту... Надпись "Срезать трофей" появляется, но тушка обыскивается и с ножом и без ножа в руках и даже с ножом выкинутым (стоит такая возможность). Запчасти вроде спавнятся. Копаю дальше. Ссылка на комментарий
Dennis_Chikin 3 658 Опубликовано 17 Января 2019 Поделиться Опубликовано 17 Января 2019 Обыскиваться она будет всегда. Без лазания в модельку максимум что можно сделать - добавить в on_use() level.hide_indicators() level.show_indicators() Солянка обезжиренная, диетическая, полезные советы по "солянке", текущий тестовый патч Ссылка на комментарий
F.Constantine 0 Опубликовано 17 Января 2019 Поделиться Опубликовано 17 Января 2019 @Dennis_Chikin, 5 часов назад, Dennis_Chikin сказал: Да, и Вы перед этим должны его откуда-то взять. Уф, сплошные ребусы. Вы же на совершенно непонятном мне языке разговариваете . В моем понимании "npc" в данном случае - любой НПС, которого мы проверяем на принадлежность к фракции "сталкеры". Но я, очевидно, ахинею несу, да ? Ссылка на комментарий
Dennis_Chikin 3 658 Опубликовано 17 Января 2019 Поделиться Опубликовано 17 Января 2019 Да, любой непись. Только в Ваших первоначальных вариантах, с вылетами, никаких неписей вообще не предусматривалось. Потому и вылеты. Солянка обезжиренная, диетическая, полезные советы по "солянке", текущий тестовый патч Ссылка на комментарий
F.Constantine 0 Опубликовано 17 Января 2019 Поделиться Опубликовано 17 Января 2019 @Dennis_Chikin, Ок, т.е. то, что требовалось сделать - поставить ( npc ) в скобочках после названия функции? В этом смысле: "должны его откуда-то взять"? Ну второй-то вариант: Скрытый текст function superresistance( npc ) if npc:character_community() == "stalker" then npc.health = 1 end Прописал ее в файлик test.script. А в bind_stalker.script вставил вызов этой функции: test.superresistance( npc ) тоже дает вылеты. А в нем что не так ? Ссылка на комментарий
Dennis_Chikin 3 658 Опубликовано 17 Января 2019 Поделиться Опубликовано 17 Января 2019 Так а в bind_stalker эти самые неписи откуда берутся? Солянка обезжиренная, диетическая, полезные советы по "солянке", текущий тестовый патч Ссылка на комментарий
naxac 2 447 Опубликовано 18 Января 2019 Поделиться Опубликовано 18 Января 2019 (изменено) @F.Constantine, пропиши суперресистанс в апдейт в xr_motivator, там находится биндер неписей, и передавай в него не непонятный npc, a конкретный self.object. Изменено 18 Января 2019 пользователем naxac 1 Аддон для ОП-2.09.2: Яндекс/Google/GitHub Ссылка на комментарий
Рекомендуемые сообщения
Создайте аккаунт или авторизуйтесь, чтобы оставить комментарий
Комментарии могут оставлять только зарегистрированные пользователи
Создать аккаунт
Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!
Зарегистрировать новый аккаунтВойти
Есть аккаунт? Войти.
Войти