Это популярное сообщение. Dennis_Chikin 3 658 Опубликовано 16 Мая 2014 Это популярное сообщение. Поделиться Опубликовано 16 Мая 2014 Ковыряемся в файлах ТЧ Прежде чем писать в тему - внимательно читаем первый пост, и пользуемся поиском. Возможно, ответ на Ваш вопрос уже есть. Касательно телепатии: если Вы передаете Ваши файлы телепатическим путем - ответы будут передаваться тоже телепатически. Если Вы предлагаете угадать, отчего у Вас в подвале происходит странный стук - ответ будет передан стуком. 4 8 6 12 Солянка обезжиренная, диетическая, полезные советы по "солянке", текущий тестовый патч Ссылка на комментарий
Malandrinus 615 Опубликовано 2 Июля 2009 Поделиться Опубликовано 2 Июля 2009 Rezonance, Вас не затруднит объяснить, в чём смысл Вашей подписи? Плагины Total Commander для работы с игровыми архивами: Архиваторный плагин (для работы с одиночным архивом): link1 link2 Системный плагин (для распаковки установленной игры): link1 link2 Ссылка на комментарий
XMK 24 Опубликовано 2 Июля 2009 Поделиться Опубликовано 2 Июля 2009 malandrinus вспомни детство, разве так не прикалывались Ссылка на комментарий
Kirag 39 Опубликовано 2 Июля 2009 Поделиться Опубликовано 2 Июля 2009 (изменено) wolkolak ... как поправить что бы небыло респавна бандосов на кордоне на Атп и на переходе свалка - агропром тоесть один раз завалил и все больше не появляются именно там ... На АТП после выноса бандитов по квесту Шустрого выдается инфопоршень, кажется, "esc_kill_bandits_quest_kill". В алл.спавне надо в настройках самрт террейна esc_fabrika_bandit прописать условие существования: cond = {-esc_kill_bandits_quest_kill -esc_kill_bandits_quest_done} Та-ак, оно и так прописано, ЭТОТ гулаг по завершении квеста отключается, зато включается другой гулаг esc2_st_fabric на логике general lager. Удаляем его совсем или ставим заведомо невыполнимое условие типа "еще не говорили с Сидоровичем в самом начале игры". Аналогично разбираемся и с бандитами на свалке. =============================== Всем Народ, так есть какие-либо идеи насчет уязвимости вертолетов? Меня хватило только на то, чтобы обнулить им повреждения от пистолетных и небронебойных промежуточных патронов (даже из ПМ или обреза можно было забить, если долго метелить ). А как настроить зональные повреждения, желательно с зонами абсолютной неуязвимости даже винтовочными патронами (гранаты - разговор особый)? Ну ведь бред же, если вертолет рухнет, получив десяток-другой даже сквозных попаданий в хвостовую балку. Вот движок - другое дело. Не ставить же тупой рандом! Изменено 2 Июля 2009 пользователем Kirag Мои работы: Ночные прицелы + смена ножевого слота AI вертолетов + ПЗРК Soul Cube Работаю только с ТЧ. С ковырянием ЧН/ЗП не связываюсь ни в какой форме. Совсем. Ссылка на комментарий
RvP 1 Опубликовано 2 Июля 2009 Поделиться Опубликовано 2 Июля 2009 Kirag, в етом направлении вроде пока ноль. таже ситуация с мастерами в екзе и вістрелом в голову с ПМ((( Vita sine libertate, nihil Vita sine litteris - mors est Ссылка на комментарий
Kirag 39 Опубликовано 2 Июля 2009 Поделиться Опубликовано 2 Июля 2009 RvP, Смертельный выстрел из ПМ против экзы в голову как раз лечится, посмотри в теме "рассчет повреждений при стрельбе по неписям ТЧ" Блокируются (в моих конфигах оружия, в оригинале с ними каша, не знаю, что получится) все пистолетные и обычные промежуточные патроны. Мои работы: Ночные прицелы + смена ножевого слота AI вертолетов + ПЗРК Soul Cube Работаю только с ТЧ. С ковырянием ЧН/ЗП не связываюсь ни в какой форме. Совсем. Ссылка на комментарий
Monnoroch 6 Опубликовано 2 Июля 2009 Поделиться Опубликовано 2 Июля 2009 Как я понимаю повреждение расчитывается в зависимости от кости модели,в которую попала пуля... а вот есть ли у вертолета кости - сомневаюсь.он вообще по-моему пустой внутри. Ссылка на комментарий
Kirag 39 Опубликовано 2 Июля 2009 Поделиться Опубликовано 2 Июля 2009 Monnoroch По идее, должны быть, модель-то анимированая. Да и файл config\models\vehicles\veh_mi24_u_01.ltx наводит на те же мысли: [helicopter_definition] default_hit_factor = 0.0 ; default hit factor (0..1) hit_section = hit_bones ; hit section name wpn_rotate_x_bone = front_gun ; rotate X-axis(pitch) bone name wpn_rotate_y_bone = front_gun_tower ; rotate Y-axis(head) bone name wpn_fire_bone = front_gun_fire ; weapon axis (fire) bone name left_rocket_bone = left_gun ; left_rocket2_bone = left_gun2 ; right_rocket_bone = right_gun ; right_rocket2_bone = right_gun2 ; smoke_bone = front_propeller light_bone = front_propeller [hit_bones] ; per bones hit factor pilot1 = 0.0 pilot2 = 0.0 back_propeller = 0.0 Вот только это, похоже, далеко не полный перечень. И как с ним обходиться - непонятно... Мои работы: Ночные прицелы + смена ножевого слота AI вертолетов + ПЗРК Soul Cube Работаю только с ТЧ. С ковырянием ЧН/ЗП не связываюсь ни в какой форме. Совсем. Ссылка на комментарий
Monnoroch 6 Опубликовано 2 Июля 2009 Поделиться Опубликовано 2 Июля 2009 В том то и дело,что это все кости прибамбасов,а сам корпус похоже пустой: в него актор может голову засунуть и изнутни он прозрачный=) Ссылка на комментарий
Jesh 3 Опубликовано 2 Июля 2009 Поделиться Опубликовано 2 Июля 2009 Monnoroch любой динамический объект содержит кости, вот для примета всё тот же Ми24 с его скелетом: И сидели бы сейчас вышеозначенные любители больших подписей в маленьких файлах, в байт-коде ковырялись, если не в машинном... Ссылка на комментарий
Monnoroch 6 Опубликовано 2 Июля 2009 Поделиться Опубликовано 2 Июля 2009 Есть таблица с кучей id. Надо проверить,есть ли номер в таблице и вернуть тру\фолс. Не подскажите как? Ссылка на комментарий
Kirag 39 Опубликовано 2 Июля 2009 Поделиться Опубликовано 2 Июля 2009 Monnoroch function 111(table, id) for k,v in pairs (table) do if v == id then return true end end return false end Если в таблице table есть число, равное id, возвращает true, иначе false Jesh А можешь список костей вертолета выложить? И для БТР, если не сложно? Мои работы: Ночные прицелы + смена ножевого слота AI вертолетов + ПЗРК Soul Cube Работаю только с ТЧ. С ковырянием ЧН/ЗП не связываюсь ни в какой форме. Совсем. Ссылка на комментарий
Министр 3 Опубликовано 2 Июля 2009 Поделиться Опубликовано 2 Июля 2009 (изменено) back_propeller back_propeller2 bone_lopast1 bone_lopast2 bone_lopast3 bone_lopast4 bone_lopast5 front_gun front_gun_fire front_gun_tower front_propeller front_propeller2 kabina korpus1 korpus2 korpus3 left_gun left_gun2 left_krilo other pilot1 pilot2 right_gun1 right_gun2 right_krilo root root_0 shassi skaner antena back_axle back_axle2 back_left_wheel back_left_wheel2 back_right_wheel back_right_wheel2 exhausts front_axle front_axle2 front_left_door front_left_wheel front_left_wheel2 front_right_door front_right_wheel front_right_wheel2 kabina left_door left_light mashine_gun mashine_gun_fire_point mashine_gun_tower right_door right_light root seat_left seat_right stearing_wheel Изменено 2 Июля 2009 пользователем Министр Ссылка на комментарий
Malandrinus 615 Опубликовано 2 Июля 2009 Поделиться Опубликовано 2 Июля 2009 Есть таблица с кучей id. Надо проверить,есть ли номер в таблице и вернуть тру\фолс. Если надо определить принадлежность значения id к некоторому множеству (id1, id2, id3, ...), то наиболее эффективно это можно сделать так: arr = { id1 = true, id2 = true, id3 = true, ... } if arr[id] then конструкция arr[id] возвращает true если такой ключ есть, и nil в противном случае. А nil в условных конструкциях интерпретируется как false. Таблицы Lua - это на самом деле ассоциативные массивы. Это значит, что они представляют собой список пар (ключ, значение). Таким образом выражение arr[k] означает "найти в таблице arr значение, соответствующее ключу k" В частном лучае, если я создаю массив таким образом: arr = {12, 34, 56, 78} то ключ задаётся неявно в виде последовательности 1, 2, 3, 4, ... т.е. таким образом имитируется поведение обычного массива с целыми индексами (с нумерацией от 1) Однако в общем случае таблица задаётся так: arr = { key1 = val1, key2 = val2, ... } В этом случае поиск по ключу производится на основе хеш-таблицы. Это не настолько быстро, как выборка из обычного массива с индексом, но достаточно эффективно, а главное, почти не зависит от размера массива. Вообще, учитывая что в качестве значения в таблице может быть всё, что угодно, можно делать достаточно элегантные конструкции. Например, можно хранить таблицу функций (помните, функции - это полноправные переменные), и по ключу выбирать функцию (т.е. выбирать не данные, а действия) А можешь список костей вертолета выложить? И для БТР, если не сложно? Окончательное решение вопроса с костями =) Есть замечательная прога OGF Master. Живёт здесь. Автор DesweR. Последняя версия там не в шапке, а в одном из комментов. Эта программа позволяет открыть ogf файл и конвертировать его в формат smd. Это текстовый формат, в начале там идёт список костей. Плагины Total Commander для работы с игровыми архивами: Архиваторный плагин (для работы с одиночным архивом): link1 link2 Системный плагин (для распаковки установленной игры): link1 link2 Ссылка на комментарий
Garrett 1 Опубликовано 3 Июля 2009 Поделиться Опубликовано 3 Июля 2009 Извините, спрашивал ужо, но не получил ответа... Не хочу навязываться, но все же хочу опять попросить о помощи. Ситуация следующая: уже в который раз прихожу в ТД и мне всё снова и снова предлагают купить "ствол за 800 рэ". После благополучного тихого отстрела "РобинГуда" через некоторое время на его место приходит другой. Можно ли как-нить сделать, чтобы неписи "учились на своих ошибках" и предложив один раз такую бяку и увидев результат больше не пытались меня "развести"? Ссылка на комментарий
IQDDD 5 Опубликовано 3 Июля 2009 Поделиться Опубликовано 3 Июля 2009 (изменено) malandrinus Попробовал сделать "Тестирование скриптов ЧН без обрушения" так, как написано у вас в спойлере. Результат: вылет с пустым логом. Вот конец лога: ! Unknown command: err=file_is_already_closed ! Unknown command: Succesfull! stack trace: 001B:0086AB22 d3dx9_37.dll 001B:038A9DC6 luabind.beta7-devel.rc4.dll, luabind::detail::pcall() В main_menu сделал так: if dik == DIK_keys.DIK_S then local res, err = pcall(my_proxy.start_chunk_from_file) get_console():execute(res and "Succesfull!" or string.gsub(err, " ", "_")) end Вроде ошибок нет... Теперь вопросы: 1. Как исправить, чтобы работало? 2. Как получить ближайший к точке, координаты который получены: local a = vector() a = db.actor:position() level_vertex? 3. По по известному level_vertex'у определить его координаты. 4. Как перевести свободного НПС в данжер с опасностью в точке a. 5. Как перевести НПС, который находится в данжере, в свободное состояние так, чтобы он не переходил потом в данжер. ЗЫ: как я понимаю, данжер - это универсальный комбат, так? Добавлено через 19 мин.: Garrett, технологию не пробовал (да и ТЧ у меня нет), но известно, что диалоги при встрече прописываются в character_desc_darkvalley.xml. Ищем диалог, отвечающий за "Гаусс".Ставим туда: <dont_has_info>stalker_once_has_been_killed</dont_has_info> Дальше. Мне кажется, что при выборе ветки, в которой ГГ отдаёт 800 руб. включается инфопоршень. Внутри самой фермы есть спейсрестриктор. Так вот, если мы в него задохидим с инфопоршнем, то сталкеры становятся врагами. Добавляем туда выдачу нашего инфопоршня. +stalker_once_has_been_killed Теперь предложения со стороны сталкеров гупить гаусс за 800 руб. не будет. Если вы поняли, то сделаете, если не поняли, то вам на вики. Изменено 3 Июля 2009 пользователем IQDDD Ссылка на комментарий
Malandrinus 615 Опубликовано 3 Июля 2009 Поделиться Опубликовано 3 Июля 2009 Попробовал сделать "Тестирование скриптов ЧН без обрушения" так, как написано у вас в спойлере. Результат: вылет с пустым логом.Я попробовал ещё раз. К сожалению должен констатировать: для ЧН методика работает плохо. Такое ощущение, что проблема в самом вызове pcall. Т.е. чанк из файла загружается, компилируется, а вот его выполнение с помощью защищённого вызова с pcall вызывает у игры тихую панику с непредсказуемыми последствиями. Вызов pcall заменить нечем - в нём сама суть методики. Проблема также в том, что реакция на один и тот же код бывает разная. Ведёт себя как капризная невеста: иногда срабатывает, иногда тихо не срабатывает, иногда сразу после выполнения чанка идёт вылет без лога. Всё это весьма огорчительно. То, что в ТЧ работало как часы и экономило мне кучу времени, здесь не работает. 2. Как получить ближайший к точке, координаты который получены: local a = vector() a = db.actor:position() level_vertex? 3. По по известному level_vertex'у определить его координаты. level.vertex_position(id) Но по идее, вертекс актора - это и должен быть ближайший к нему. Впрочем. ничто не мешает просто перебрать все вертексы на одном уровне с актором и проверить их расстояние до ГГ. Загляни в комментарии к этой программе LVID Viewer (автор IG-2007) 4. Как перевести свободного НПС в данжер с опасностью в точке a. 5. Как перевести НПС, который находится в данжере, в свободное состояние так, чтобы он не переходил потом в данжер. ЗЫ: как я понимаю, данжер - это универсальный комбат, так? Да вроде универсальный комбат так и называется combat. Откровенно говоря, не до конца я разобрался с логикой. Но по моему разумению универсальные схемы срабатывают автоматом. Их там регистрируют в xr_logic.script и где-то там-же происходит их переключение по эвалуаторам. Не думаю, что правильно будет пытаться переключать универсальные схемы вручную, но наверное можно дописать дополнительные условия в эвалуатор. Плагины Total Commander для работы с игровыми архивами: Архиваторный плагин (для работы с одиночным архивом): link1 link2 Системный плагин (для распаковки установленной игры): link1 link2 Ссылка на комментарий
IQDDD 5 Опубликовано 3 Июля 2009 Поделиться Опубликовано 3 Июля 2009 (изменено) malandrinus, спасибо!!! НО: Пусть будет так: local a = vector () a.x = a.x + 10 a.z = a.z + 15 Как получить ближайший к точке a level_vertex? Перебирание вертексов исключено, так как очень налягает на производительность. зы: нужно для того, чтобы спавнить неписей вокруг ГГ. НО: вдруг НПС стоит в какой-нибудь канаве! Тогда неписи заспавняться подземлёй! Конечно, они рано-или поздно выйдут из-под земли к ближайшему узлу в АИ сетке, но всё равно не есть айс. зы2: можно дать строго определения: класс, метод, свойство, объект? Изменено 3 Июля 2009 пользователем IQDDD Ссылка на комментарий
ronin 2 Опубликовано 3 Июля 2009 Поделиться Опубликовано 3 Июля 2009 Народ,подскажите,поставил допу к НС вот эту http://www.amk-team.ru/forum/index.php?s=&...st&p=231044 Прописал Бармену в продажу вихрь,выкупил пострелял походил,умер с ним.Вроде все в норме,но решил заглянуть в консоль а там,вот красным ! Cannot find saved game ~~~ unknown_weapon_type_[wpn_vihr]_wpn_vihr.Что это значит?И чем может грозить в дальнейшем? Честь – это такое богатство, за которое не жаль умереть. Нельзя ее ни подарить, ни отнять, можно лишь потерять или обрести самому… Ссылка на комментарий
Malandrinus 615 Опубликовано 3 Июля 2009 Поделиться Опубликовано 3 Июля 2009 Как получить ближайший к точке a level_vertex? Перебирание вертексов исключено, так как очень налягает на производительность. зы: нужно для того, чтобы спавнить неписей вокруг ГГ. НО: вдруг НПС стоит в какой-нибудь канаве! Тогда неписи заспавняться подземлёй! Конечно, они рано-или поздно выйдут из-под земли к ближайшему узлу в АИ сетке, но всё равно не есть айс. Для этого есть специальные функции. Вот например: level.vertex_in_direction(lvid, dir, rad) game_object:vertex_in_direction(lvid, dir, rad) lvid - вертекс, от которого ищем dir - вектор направления rad - радиус поиска Похоже, что эта функция как раз и существует, чтобы решать обозначенную задачу. Впрочем, я её не использовал. зы2: можно дать строго определения: класс, метод, свойство, объект? =) чтобы дать строгие определения, надо процитировать пару главок из учебника по объектно-ориентированному программированию. Ну может здесь можно посмотреть некое краткое изложение. Если по-простому: Класс - это сложный (составной) тип данных. Наподобие сишной структуры или паскалевской записи, только содержащий не только переменные, но и функции. Объект - это переменная типа класс. Свойство - это переменная, содержащаяся в объекте Метод - это функция, содержащаяся в объекте Классы являются основной строительной конструкцией многих современных языков программирования. В Lua поддержки классов на уровне языка нет, но они там неплохо имитируются благодаря невероятной гибкости Lua. Если кому интересно, то в сталкере для этого используется технология Luabind Хороший пример - класс vector. Имя класса - vector Чтобы завести объект типа vector, надо выполнить конструкцию: vec = vector() здесь vec - это объект теперь можно обращаться к свойствам объекта x_coord = vec.x vec.y = 4 или к его методам vec:set_length(3.5) Это с точки зрения использования уже готовых классов. С точки зрения создания классов всё немного сложнее и вообще говоря сильно привязано к конкретной реализации в конкретном языке. Плагины Total Commander для работы с игровыми архивами: Архиваторный плагин (для работы с одиночным архивом): link1 link2 Системный плагин (для распаковки установленной игры): link1 link2 Ссылка на комментарий
IQDDD 5 Опубликовано 3 Июля 2009 Поделиться Опубликовано 3 Июля 2009 (изменено) Народ, ЧТО я не правильно сделал: if dik == DIK_keys.DIK_S then local mindist,i,obj,npc = 1000000 for i = 1,65500 do obj = level.object_by_id(i) if obj == nil then obj = alife():object(i) end if obj then if news_manager.is_npc_stalker(obj:clsid()) and obj:alive() then if distance_between(db.actor,obj) < mindist then mindist = distance_between(db.actor,obj) npc = obj end end end end if npc then local hit = hit() local b = vector() b = db.actor:direction() b.x = -b.x b.z = -b.z b.y = -b.y hit.direction = b hit.draftsman = npc hit.impulse = 10000 hit.power = 1.5 hit.type = 2 hit:bone("bip01_head") npc:hit(hit) end end Добавлено через 20 мин.: Вот ещё тележка: 1. Как делать свои коллбеки. 2. Как использовать self в своих скриптах? Что это мне даёт? 3. У серверной аномалии класс cse_anomalous_zone. Какой класс у клиентской аномалии? 4. Как проигрывать партикл, если известна точка, в которой должен проигрываться партикл? зы: когда мне разрешено будет ставить плюсы? модерам: снимите предупреждение у меня, уже давно болтается (я перевоспитался ). Изменено 3 Июля 2009 пользователем IQDDD Ссылка на комментарий
Рекомендуемые сообщения
Создайте аккаунт или авторизуйтесь, чтобы оставить комментарий
Комментарии могут оставлять только зарегистрированные пользователи
Создать аккаунт
Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!
Зарегистрировать новый аккаунтВойти
Есть аккаунт? Войти.
Войти