Это популярное сообщение. Dennis_Chikin 3 658 Опубликовано 16 Мая 2014 Это популярное сообщение. Поделиться Опубликовано 16 Мая 2014 Ковыряемся в файлах ТЧ Прежде чем писать в тему - внимательно читаем первый пост, и пользуемся поиском. Возможно, ответ на Ваш вопрос уже есть. Касательно телепатии: если Вы передаете Ваши файлы телепатическим путем - ответы будут передаваться тоже телепатически. Если Вы предлагаете угадать, отчего у Вас в подвале происходит странный стук - ответ будет передан стуком. 4 8 6 12 Солянка обезжиренная, диетическая, полезные советы по "солянке", текущий тестовый патч Ссылка на комментарий
lekzd 1 Опубликовано 25 Января 2010 Поделиться Опубликовано 25 Января 2010 (изменено) malandrinus, просто хотелось бы, чтобы предмет именно висел как в HL 2 есть скрипт amk_target - он выводит на худ целеуказатели, которые наводятся точно на голову (точнее на кость) НПС-ам в округе скрипт вообще недоделан - но самая сложная математика там есть я смог допилить его до тут по 5 костям я вычисляю примерно в какие "рамки" можно загнать непися для отображения + добавил увеличение - уменьшения рамки взависимости от расстояния, FOV и прочего + добавил отсеивание тех НПС, которые стоят за стенами и другим препятствиями (правда если хоть чуть ноги видно - непись определяется) с предметами все будет нааамного проще Изменено 25 Января 2010 пользователем lekzd i-igroman.ru - Мой, принципиально новый сайт о компьютерных играх Ссылка на комментарий
Malandrinus 615 Опубликовано 25 Января 2010 Поделиться Опубликовано 25 Января 2010 lekzd, я как-то думал про гравипушку. Когда с физикой развлекался, то это первое, что пришло на ум. Но там масса мелких вопросов. Первое. Вот лежит перед тобой предмет, и тебе надо его подцепить. Как ты узнаешь, что он перед тобой лежит и ты на него нацелился? Дальше. Допустим, ты сделал некий девайс, вероятно на основе обычного ствола. Тебе нужны три действия: поднять, отпустить и кинуть. Значит надо определять нажатость на курок (левая кнопка) и как-то ещё нажатость правой кнопки для кидания. Насколько я знаю, отдельный выстрел пока никому отследить не удалось, особенно, если патронов нет =) Остальное по сути дело техники: уравновесить гравитацию для предмета, подтащить его, держать перед актором и дать ему пинка. Это всё нудно, но реализуемо наверняка, а вот те проблемы - без понятия как сделать, особенно с управлением. Плагины Total Commander для работы с игровыми архивами: Архиваторный плагин (для работы с одиночным архивом): link1 link2 Системный плагин (для распаковки установленной игры): link1 link2 Ссылка на комментарий
lekzd 1 Опубликовано 25 Января 2010 Поделиться Опубликовано 25 Января 2010 malandrinus, есть кнопка tab - нажали один раз - подтянули предмет - нажали второй раз - и сколько держим - с такой силой и кинем его i-igroman.ru - Мой, принципиально новый сайт о компьютерных играх Ссылка на комментарий
Malandrinus 615 Опубликовано 25 Января 2010 Поделиться Опубликовано 25 Января 2010 lekzd, кроме того, что таб - это неудобно, он ещё и занят кучей других модов. Надо искать другие способы. Опять же остаётся проблема определения того, что перед тобой лежит предмет. На локации объектов довольно много, перебирать их все в момент нажатия - плохой вариант. Плагины Total Commander для работы с игровыми архивами: Архиваторный плагин (для работы с одиночным архивом): link1 link2 Системный плагин (для распаковки установленной игры): link1 link2 Ссылка на комментарий
lekzd 1 Опубликовано 25 Января 2010 Поделиться Опубликовано 25 Января 2010 malandrinus, речь шла только о физических объектах - а у них вроде секция только одна вот еще ни одного мода не видел, где на tab что-либо вешали а определние ЛКМ - можно сделать без смещения FOV - тогда расчитываем по функции math.ceil(db.actor.accuracy()*1000) если возвращает единицу - значит мы целимся, иначе число будет выше i-igroman.ru - Мой, принципиально новый сайт о компьютерных играх Ссылка на комментарий
LithOS 0 Опубликовано 26 Января 2010 Поделиться Опубликовано 26 Января 2010 lekzd, как не видел? О_о А мод с реалистичными радиацией и кардиограммой от Руси (точное название не помню)? А мод NewQuickSave (как-то так)? Ничто не истина. Все дозволено. Ссылка на комментарий
Vano_Santuri 33 Опубликовано 26 Января 2010 Поделиться Опубликовано 26 Января 2010 Не подскажите, где можно посмотреть схему логики телевизора? вернее схему отобрадения картинок на экране? Что-то кончается, что-то начинается... Ссылка на комментарий
Garry_Galler 7 Опубликовано 26 Января 2010 Поделиться Опубликовано 26 Января 2010 (изменено) malandrinus Отследить отдельный выстрел можно. Точнее говоря я могу отследить хит от определенного боеприпаса либо просто использование определенного боеприпаса. (не через callback.use_object - он походу только для NPC и ящиков работает - отследить скажем использование аптечки через коллбек на юзание объекта в биндере аптечки у меня не получилось, хотя может сделал че не так). А вот через две маленькие функции которые у меня есть можно отследить использование чего угодно. вчера тоже решил побаловаться методом управления физической оболочкой взял просто пример из скрипта зомби на аэс в xr_effects. local force = vector():set(0, 0, 0.02) local pshell = npc:get_physics_shell() -- вот в этом месте получаю вылет что pshell равно nil - непись определяется как онлайн объект по сиду Попробовал убить непися строчкой выше - тож самое. В скриптах игры этот метод вообще только к дверям применяется почему то. а npc:set_const_force (dir, 5000, 3) вообще никак не действует на живого NPC. PS: спасибо за ответ по таблицам. Я считаю что знания не относящиеся непосредственно к игре не менее важны для понимания скриптов игры. (и вообще для развития кругозора полезны). так что кому неинтересно пусть не читает. Я же всегда рад когда умный человек делится с другими тем что знает. Изменено 26 Января 2010 пользователем Garry_Galler Ссылка на комментарий
Kirag 39 Опубликовано 26 Января 2010 Поделиться Опубликовано 26 Января 2010 Последовательные нажатия на ЛКМ, и какое именно нажатие по счету отследить можно, я это использовал в последней версии АИ ввертолетов, когда дошел до ПЗРК. Первое нажатие ЛКМ у меня готовит ракету к пуску, второе - собственно пуск при благоприятных условиях. При неблагоприятных - игнор, ждем третьего нажатия и т.д. Не без гемора, но все-таки сделал все, что хотел. Применительно к грави-пушке: Как и ПЗРК, стрелять ("честным" патроном) не должна. Значит, нужен холостой боеприпас, buck_shot = 0 в конфиге патрона. При попытке выстрелить в НПС таким патроном НПС не получает урона и не обижается. Далее. Нам нужно отслеживать два параметра - состояние грави-пушки и количество патронов в магазине. Если в руках именно она, смотрим, сколько патронов у нее в магазине (вместимость магазина - один патрон, больше не нужно). Когда мы только-только взяли грави-пушку в руки, она никакой предмет еще, понятное дело, не удерживает. Состояние - 0, патронов в магазине - 1. Захват предмета. Нажимаем ЛКМ. Грави-пушка стреляет, поскольку сделана на классе оружия. Патрон холостой, урона никакого, но патрнов в магазине становится 0. Далее скриптом обязательно возвращаем патрон в магазин. А состояние - по ситуации. Если предмет захватили (как именно это реализовано - другой вопрос), ставим состояние 1, если нет - оставляем 0. То же самое с броском. Если предмет уже захвачен (состояние - 1 и патронов - 1) - можно бросать. Момент броска точно так же отслеживаем по расходу патрона, даем пинка предмету, возвращаем патрон и ставим состояние 0 - готовность к захвату следующего предмета. Нажатие ПКМ - по accuracy предлагали отследить. Ну или по FOV на худой конец. Ну и всякие нужные фишки типа звуков и т.д. Все это относится только к актору, грави-пушка в руках НПС - совсем другая история. В общем, с управлением решаемо. Вот как предмет выбрать... Перебирать всю, пусть даже только онлайновую, гадость на уровне? Это не сильно быстро получится. Хотя, врядли брать предметы кто-то сможет чаще раза в секунду, а вертушки у меня таким перебором цели и ищут, только раз в 5 секунд и правила отбора другие. Мои работы: Ночные прицелы + смена ножевого слота AI вертолетов + ПЗРК Soul Cube Работаю только с ТЧ. С ковырянием ЧН/ЗП не связываюсь ни в какой форме. Совсем. Ссылка на комментарий
Push85 4 Опубликовано 26 Января 2010 Поделиться Опубликовано 26 Января 2010 Vano_Santuri, у телевизора нет логики, то что он отображает это всего навсего анимированая текстура, смотри в папках с текстурами. Возможно всё, ну или почти всё. Ссылка на комментарий
Vano_Santuri 33 Опубликовано 26 Января 2010 Поделиться Опубликовано 26 Января 2010 8push5, Ясно. Так значит телик на Скадовске не объект, а элемент уровня, и снести его никак, а жаль. Что-то кончается, что-то начинается... Ссылка на комментарий
Malandrinus 615 Опубликовано 26 Января 2010 Поделиться Опубликовано 26 Января 2010 Отследить отдельный выстрел можно. Точнее говоря я могу отследить хит от определенного боеприпаса либо просто использование определенного боеприпаса.Можно про использование боеприпаса подробнее? local pshell = npc:get_physics_shell() -- вот в этом месте получаю вылет что pshell равно nil - непись определяется как онлайн объект по сидуЖивые неписи управляются анимацией, потому оболочка есть только у дохлых. Попробовал убить непися строчкой выше - тож самое.Полагаю, надо дать ему время помереть =) В скриптах игры этот метод вообще только к дверям применяется почему то.Дверь - это физический объект с костью, за которую её можно открыть. А насчёт неиспользования физики в скриптах оригинальной игры. Я думаю, там не до того было. а npc:set_const_force (dir, 5000, 3) вообще никак не действует на живого NPC. см. выше. Кроме того: 1. Это метод, который своему названию соответствует. Здесь речь идёт о силе. 2. Третий аргумент - время действия в миллисекундах. 3 мс - как бы маловато =) Применительно к грави-пушке:Насчёт управления понял. Родилась встречная идея, как может быть можно определить "удержание" правой кнопки. Можно попробовать дать много патронов, и заставить стрелять очередью. Если между апдейтами число патронов уменьшается - значит держим кнопку. В этом случае можно придать патронам смысл "заряда". грави-пушка в руках НПС - совсем другая история.Зачем оно им вообще надо? Думаю - это лишнее. а вертушки у меня таким перебором цели и ищут, только раз в 5 секунд и правила отбора другие.А цели - это только сталкеры? Почему бы не зарегистрировать в биндере сталкера и актора при выходе в онлайн каждого непися и не занести их в таблицу? Это ведь не сложно. В этой таблице будет десятка три записей максимум. Другое дело для физических объектов так не сделать. Таскать же можно почти всё, что под физикой: собственно физические объекты, инвентарные предметы, всё оружие, арты, тушки. Регистрировать всё - можно попытаться, но как-то уж очень глобальный мод выходит. А перебор - не вариант. Это же фриз нехилый. Плагины Total Commander для работы с игровыми архивами: Архиваторный плагин (для работы с одиночным архивом): link1 link2 Системный плагин (для распаковки установленной игры): link1 link2 Ссылка на комментарий
Monnoroch 6 Опубликовано 26 Января 2010 Поделиться Опубликовано 26 Января 2010 (изменено) Почему бы не зарегистрировать в биндере сталкера и актора при выходе в онлайн каждого непися и не занести их в таблицу? Это db.storage Изменено 26 Января 2010 пользователем Monnoroch Ссылка на комментарий
Malandrinus 615 Опубликовано 26 Января 2010 Поделиться Опубликовано 26 Января 2010 Monnoroch, если не ошибаюсь, db.storage содержит все объекты, причём как записи с ключами - id. Как там найти, скажем, сталкеров? Так что отдельная таблица для сталкеров, ну или для "целей вертолёта" не помешает. Плагины Total Commander для работы с игровыми архивами: Архиваторный плагин (для работы с одиночным архивом): link1 link2 Системный плагин (для распаковки установленной игры): link1 link2 Ссылка на комментарий
Monnoroch 6 Опубликовано 26 Января 2010 Поделиться Опубликовано 26 Января 2010 но это гораздо быстрее,чем перебор Ссылка на комментарий
Garry_Galler 7 Опубликовано 26 Января 2010 Поделиться Опубликовано 26 Января 2010 (изменено) malandrinus Вот эти две маленькие функции позволяют мне отслеживать все что уничтожается при использовании вот пример их использования именно для отслеживания использования определенного боеприпаса(ов) local item = nil --функция вызывается из апдейта эктора function use_item() if item and type(item) == "number" then if not level.object_by_id(item) then --hit = true --это я для отыгрыша партикла на NPC флаг включал --news_manager.send_tip(db.actor, "Использована граната", 0, "trader", 5000) --а это для проверки --в общем вот сюда и вставляем любой код для активации на момент использования вещи end item = nil end if item and type(item) == "userdata" then item = item:id() else item = nil end end --функция вызываемая из дропа function drop_item(obj) if obj:section() == 'ammo_vog-25p' or obj:section() == "ammo_vog-25" or obj:section() == "ammo_5.45x39_fmj" then item = obj --\\если наша вещь, то запомнить его userdata end end Функцию написал не я, а один очень умный человек со сталкер портала который меня многому научил - камрад singapur22 В общем мы всем порталом эту функцию дружно юзаем для всех надобностей - скажем меню скриптовые именно через нее активируем. Вопрос: сделал я все таки проверку на размер своей таблицы - вылетов больше нет. Если запись за гранью допустимого - то таблица не перезаписывается в объект. Осталось только выяснить что же в объект пишется помимо моей таблицы. Вот строки из мессиджей которые я вывел для проверки данных на экран: сообщений 57 --это общее кол-во сообщений в таблице места для записи больше нет размер таблицы 7832 --это размер который у меня считается перед сохранением текущая позиция записи 1076 --вот это что за данные записаны? сообщений 58 места для записи больше нет размер таблицы 7982 текущая позиция записи 1491 --и они ведь постоянно меняются - то больше то меньше становятся (то есть как ты понял я плюсую текущий размер таблицы и текущую позицию записи (получаемую через packet:w_tell() ) а потом перед сохранением проверяю не больше ли это чем 8192 байта. ) Насчет storage - она содержит все совокупность данных по NPC которые находятся в онлайне - можно определить все - вплоть до текущей анимации, патрульного пути, секции логики, активной схемы и т.д. А вот скажем артефактов и аномалий (как и по видимому прочих объектов) она не содержит. вот часть кода из моего скрипта который вытаскивает из storage разную инфу function InfoNpc() local aitem, count_inv, count_mag, cond, scheme, sec_logic, act_section local str = "" for k, v in pairs (db.storage) do local obj = level.object_by_id(k) --if (obj and IsStalker(obj) and obj:id()~= 0) then --проверка IsStalker исключает Сидоровича и вероятно вообще всех торговцев -- поэтому используем другую if obj and (get_clsid(obj) == clsid.script_stalker or get_clsid(obj)== clsid.script_trader) then --определяем активную схему - работу if v.active_scheme then scheme = v.active_scheme else scheme ="нет" end --определяем секцию логики if v.section_logic then sec_logic = v.section_logic else sec_logic ="нет" end --определяем активную секцию логики if v.active_section then act_section = v.active_section else act_section ="нет" end Изменено 26 Января 2010 пользователем Garry_Galler Ссылка на комментарий
Monnoroch 6 Опубликовано 26 Января 2010 Поделиться Опубликовано 26 Января 2010 Ray, По моим наблюдения он ни на что не влияет...по крайней мере в сингле. Ссылка на комментарий
_Призрак_ 11 Опубликовано 26 Января 2010 Поделиться Опубликовано 26 Января 2010 Подскажите как сделать так что-бы после опр фразы нпс менял свою группировку на группировку бандиты? И что озачает строка tbl.sid = 48802? Я так понимаю это айди непися и не может быть 2 различных айди. Но как узнать свободен айди или нет? Я понимаю что всех уже достал, но все равно прошу помощи Freedom Ссылка на комментарий
Garry_Galler 7 Опубликовано 26 Января 2010 Поделиться Опубликовано 26 Января 2010 (изменено) _Призрак_ активация только через диалог - после любой фразы поправленный вариант function set_bandit(obj1, obj2) if obj1:id() == db.actor:id() then obj2:set_character_community("bandit", 0, 0) else obj1:set_character_community("bandit", 0, 0) end end айди у NPC никогда не будет равным другому так как назначается ему в момент спавна автоматически движком. А вот сид задается в произвольном порядке (в файле allspawn) - и регистрируется в файле гейм стори идс - вот там смотри и свободен он или нет. Изменено 27 Января 2010 пользователем Garry_Galler Ссылка на комментарий
Guzerus 0 Опубликовано 26 Января 2010 Поделиться Опубликовано 26 Января 2010 Garry_Galler, извиняюсь, чем не подходит? function test() db.actor:set_character_community ("bandit",0,0) end И также вопрос, что значат нули после названия группировки? Мой ник читается гузерус. Ссылка на комментарий
Рекомендуемые сообщения
Создайте аккаунт или авторизуйтесь, чтобы оставить комментарий
Комментарии могут оставлять только зарегистрированные пользователи
Создать аккаунт
Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!
Зарегистрировать новый аккаунтВойти
Есть аккаунт? Войти.
Войти