Ulman 5 Опубликовано 18 Июля 2011 Поделиться Опубликовано 18 Июля 2011 OZ1, попробуй ему в all.spawn прописать story_id = 99999999999 чтоб уж наверняка. Ссылка на комментарий
KD87 718 Опубликовано 18 Июля 2011 Поделиться Опубликовано 18 Июля 2011 (изменено) Ulman, что ж вы курите-то такое. story_id хранится в signed __int32, туда такое число просто не поместится. Я не берусь предсказать, во что переведет такое значение acdc. OZ1, попробуй поставить любой story_id, желательно в промежутке 10000-65535. Изменено 18 Июля 2011 пользователем KD87 Ссылка на комментарий
=VENOM= 50 Опубликовано 19 Июля 2011 Поделиться Опубликовано 19 Июля 2011 Ulman, ищи в файле watcher_act.script, место, где NPC добрался до трупа, и начинает непосредственно его обыскивать (включение анимации search). Вот сюда как раз и желательно засунуть проигрывание разового звука, исходящего от NPC. Интересная мысль, надо бы у себя тоже сделать . Ссылка на комментарий
дядяСаша 0 Опубликовано 19 Июля 2011 Поделиться Опубликовано 19 Июля 2011 По излому: имя задай - примерно такое fracture_001 distance = 5 - поставь ему дистанцию хотя бы 1 object_flags = 0xffffffbf - САМОЕ ГЛАВНОЕ попробуй свой флаг сменить на этот custom_data = <<END - пропиши логику [smart_terrains] none = true END будет жить, никуда не денется -)) и с сейва не грузись, на всякий случай говорю чудиков много на свете -)) начни новую игру. Добавлено через 94 мин.: По излому, извиняюсь, добавление и самое интересное -)) А ты уверен что машина на излома ругается? Может ты ещё что-то добавил? Ссылка на комментарий
Ulman 5 Опубликовано 19 Июля 2011 Поделиться Опубликовано 19 Июля 2011 KD87, с тем соглаен, но у меня переход на новую локацию с таким значением story_id = 999996. Раньше был такой же вылет, а вот когда поставил именно такое значение, то всё получилось. Ссылка на комментарий
дядяСаша 0 Опубликовано 19 Июля 2011 Поделиться Опубликовано 19 Июля 2011 (изменено) Просьба ответить тому кто знает, советов не надо уже всё по 100 раз прочитано. У меня предмет item_222 например, как выдать инфопоршень ГГ если он поднимает этот предмет? На этом форуме тоже читал там самое главное не написали куда засунуть ихние формулы -)), а значит не знают толком и про xr_..... расказывать не надо -)) туда ни кто не лазит. И второй вопрос предмет заспавнен скриптом как ему эту логику прописать? Спасибо. Прошу прощения версия игры 1006 ТЧ Изменено 19 Июля 2011 пользователем дядяСаша Ссылка на комментарий
KD87 718 Опубликовано 19 Июля 2011 Поделиться Опубликовано 19 Июля 2011 (изменено) Ulman, это называется "использовать недокументированные возможности". В один прекрасный день аукнется. Известно же уже тысячу лет, что может быть 65535 объектов - ну так в чем проблема выбрать сид в промежутке от 0 до 65535? дядяСаша, в bind_stalker.script в колбек on_item_take() засунуть что-то вроде такого: if not has_alife_info("bla_bla") and db.actor:object("item_222") then db.actor:give_info_portion("bla_bla") end Ну и инфопоршень зарегистрировать в infoportions.xml Изменено 19 Июля 2011 пользователем KD87 Ссылка на комментарий
iDreD 5 Опубликовано 19 Июля 2011 Поделиться Опубликовано 19 Июля 2011 (изменено) дядяСаша, плохо читал, дядя. Мысли вырази свои хотя бы толком, для начала. Это всё очень легко, первый вопрос решается добавлением одной функции в bind_stalker (KD уже отпостил, сделай как он сказал), второй решается тем, что можно взять скрипт от АМК-тим - у них есть функция которая присваивает заспауненному скриптом объекту логику. Удачи . Изменено 19 Июля 2011 пользователем iDreD Работа в Sculptris 3D [туториал] Страничка на Проза.ру Ссылка на комментарий
дядяСаша 0 Опубликовано 19 Июля 2011 Поделиться Опубликовано 19 Июля 2011 KD87 1) Это я понимаю можно, ещё проще в адейт поставить проверку на наличие в инвентаре. а если у меня 10 квестовых предметов? их все туда загонять. Я про логику спрашивал. типа use = on_use там "пальцы гнули" на две станицы. Кстати заметь и в статьях которые рекламируют вначале сайта там тоже это не написано вот я их и попросил не две страницы, а просто логику конкретно куда и как. для ТЧ Ссылка на комментарий
iDreD 5 Опубликовано 19 Июля 2011 Поделиться Опубликовано 19 Июля 2011 use = on_use... Во-первых, пишется наоборот: on_use = use Во-вторых, этот параметр юзается только в секции логики [sr_idle]. В-третьих, если все сильно возносят себя в твоих глазах - разбирайся сам, что мешает? ЗЫ: Я вставлял туда 15+ скриптовых условий. Лагов и глюков замечено не было. Работа в Sculptris 3D [туториал] Страничка на Проза.ру Ссылка на комментарий
дядяСаша 0 Опубликовано 19 Июля 2011 Поделиться Опубликовано 19 Июля 2011 iDreD я думаю вы примерно так же читаете, я просил не совет, а показать, советчиков в интер..... а во вторых все стандартные квесты, флешки, документы куда прописываются в колбеки или к амк примазываются? Как ещё проще выразить мысль= ГГ поднимет предмет и получает инфопоршень. Мы же на сайте ЛОГИКИ вот с use я и хотел разобраться , просил чтобы тот кто знает написал. Ссылка на комментарий
KD87 718 Опубликовано 19 Июля 2011 Поделиться Опубликовано 19 Июля 2011 дядяСаша, on_use - это как бы колбек на использование. Про него - речи не было. Была речь про поднятие. Поднятие != использование . Это раз. В апдейт писать подобные проверки не проще - будет страдать быстродействие, так как апдейт вызывается постоянно (с периодом вплоть до 40 мс), колбек on_item_take() - только при поднятии предмета. Это два. Ну и, наконец, прежде, чем спрашивать, неплохо бы разобраться с предметом вопроса. Например - посмотреть, как делают разработчики в таких случаях. Ответ порвет шаблон - с помощью on_item_take() . Только саму проверку они пишут не в самом bind_stalker, а выносят в сторонние скрипты для удобства, как раз потому, что проверок много. Ссылка на комментарий
Kirag 39 Опубликовано 19 Июля 2011 Поделиться Опубликовано 19 Июля 2011 KD87 А нужно ли здесь if not has_alife_info("bla_bla") and db.actor:object("item_222") then db.actor:give_info_portion("bla_bla") end делать проверку db.actor:object("item_222") ? Я же так понимаю, что при этом в неявном виде перебирается инвентарь? Если проверка такая одна, и хлама мало, так и черт бы с ним, а если их много, а в инвентаре хлама вагон? Или я ошибаюсь насчет перебора? В любом случае, подобранный объект передается в on_item_take(obj), и можно написать просто if not has_alife_info("bla_bla") and obj:section() == "item_222" then db.actor:give_info_portion("bla_bla") end Это к тому же исключит такую ситуацию: Допустим, объект с секцией "item_222" уже есть в инвентаре, а инфопоршень не выдан/убран (в соответствии с замыслом), и его надо выдать при подборе еще одного "item_222". В твоем варианте будет ложное срабатывание на подбор вообще любого объекта - db.actor:object("item_222") вернет true при описанных условиях. У меня проверяется именно только что подобранный объект, а не есть ли в инвентаре такой же... Мои работы: Ночные прицелы + смена ножевого слота AI вертолетов + ПЗРК Soul Cube Работаю только с ТЧ. С ковырянием ЧН/ЗП не связываюсь ни в какой форме. Совсем. Ссылка на комментарий
Malandrinus 615 Опубликовано 19 Июля 2011 Поделиться Опубликовано 19 Июля 2011 Kirag, Я же так понимаю, что при этом в неявном виде перебирается инвентарь? Если проверка такая одна, и хлама мало, так и черт бы с ним, а если их много, а в инвентаре хлама вагон? Или я ошибаюсь насчет перебора? не ошибаешься, там стоит цикл перебора. Это конечно движковый перебор, а не скриптовый, и не всех объектов на уровне, а только инвентаря, так что не столь уж и смертельно, но в самом деле лишнее. Тем более ты приводил и другие соображения и они также совершенно верны. Но ты сейчас интересную тему поднял. Есть некоторые функции, которые вроде и движковые, но достаточно тормозные. Достаточно небезобидный вызов - это к примеру вот это alife():object(id). Когда я ещё не лазил внутрь, то думал, что там сделано по уму - заведён массив указателей на 65536 позиций и объект берётся по индексу. А оказалось нет, тупой перебор. Опять же, это перебор движковый в линейном массиве, происходит относительно быстро. Но именно что относительно, поэтому крайне желательно избегать этого вызова и следовать стратегии "хранить объект и не искать его заново". Вызов level.object_by_id(id) в общем примерно такой же, просто перебирает клиентские объекты, а их естественно меньше. Но тоже желательно избегать. Плагины Total Commander для работы с игровыми архивами: Архиваторный плагин (для работы с одиночным архивом): link1 link2 Системный плагин (для распаковки установленной игры): link1 link2 Ссылка на комментарий
дядяСаша 0 Опубликовано 19 Июля 2011 Поделиться Опубликовано 19 Июля 2011 прошу объяснить тех кто знает -)), без советчиков читать, туфту, в статьях это как раз выдержка из статьи: Схема показывает, что произойдет, если игрок юзнет NPC, ( ранит= hit, убъёт = death, meet = разговор), а это что будет делать, по русски кто-нибудь может написать. on_use = use [use] on_info = %+info -info =func% Файл: \gamedata\scripts\xr_use.script Второй вопрос: как выдать инфопоршень когда ГГ берёт предмет в инвентарь. Только просьба без советов уже достатали. Просто образец кода. Большое спасибо тому кто меня понял , заранее. Ссылка на комментарий
KD87 718 Опубликовано 19 Июля 2011 Поделиться Опубликовано 19 Июля 2011 Kirag, мопед не мой © Я просто выдернул кусок скрипта у пысов. malandrinus, Kirag, вы не проверяли, работает ли accuracy() из game_object? Ссылка на комментарий
Ulman 5 Опубликовано 19 Июля 2011 Поделиться Опубликовано 19 Июля 2011 Люди, а как лечить данный вылет: Expression : ai().level_graph().valid_vertex_id(vertex->data().level_vertex_id()) Function : CPatrolPathManager::select_point File : E:\stalker\patch_1_0004\xr_3da\xrGame\patrol_path_manager.cpp Line : 164 Description : patrol path[quest_man], point on path [name00],object [ds_man] Поискав способы решения, нашел лишь единный, это загрузить сейв. Попробовал так сделать, загрузил, подхожу к тому же месту и опять вылет. Ссылка на комментарий
gruber 2 481 Опубликовано 19 Июля 2011 Поделиться Опубликовано 19 Июля 2011 (изменено) Ulman,Возможно одна из точек пути недоступна по каким то причинам,аномалия, нет АИ сетки. Хотя сетка наврятли ,было такое что прописывал пути в месте где отсутствовала сетка,так нпс (была логика сна)просто ложился в ближайшем к прописанной точке месту где сетка была. Изменено 19 Июля 2011 пользователем gruber Ссылка на комментарий
Ulman 5 Опубликовано 19 Июля 2011 Поделиться Опубликовано 19 Июля 2011 gruber, аномалий там вообще нет на локации. А какие ещё могут быть причины? Ссылка на комментарий
Kirag 39 Опубликовано 19 Июля 2011 Поделиться Опубликовано 19 Июля 2011 KD87 С НПС - не знаю, а db.actor:accuracy() используется, например, при определении, целится ли актор в принципе: if db.actor:accuracy() < 0.0001 then --целится end Если важно, оптикой целится или через открытый прицел, такой метод уже не прокатит, тут лучше зацепиться за угол зрения, только надо правильно взять угол value - чтобы fov при прицеливании через открытый прицел был больше, а при прицеливании через оптику - меньше: if device().fov < value then --целится с оптикой else Мои работы: Ночные прицелы + смена ножевого слота AI вертолетов + ПЗРК Soul Cube Работаю только с ТЧ. С ковырянием ЧН/ЗП не связываюсь ни в какой форме. Совсем. Ссылка на комментарий
Рекомендуемые сообщения
Создайте аккаунт или авторизуйтесь, чтобы оставить комментарий
Комментарии могут оставлять только зарегистрированные пользователи
Создать аккаунт
Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!
Зарегистрировать новый аккаунтВойти
Есть аккаунт? Войти.
Войти