Wookie 7 Опубликовано 22 Августа 2013 Поделиться Опубликовано 22 Августа 2013 Приветствую! У меня такой вопросец, как сменить текстуру в статике, не создавая новый статик, помню что строение было вроде такого: имя_статика:SetTexture Заранее спасибо. 1 1 https://www.youtube.com/embed/U0no-6tCxhU Канал на "Трубе" Ссылка на комментарий
wanes101 0 Опубликовано 23 Августа 2013 Поделиться Опубликовано 23 Августа 2013 здравствуйте какой скрипт отвечает за поведение сталкера, после того как в него попадет пуля? Чистил обработчик в xr_motivator келбек hit, но сталкеры все равно стреляют в ответ. И еще смотрел настройку логики через кастом дату, за реакцию на это отвечает секция hit и описание не совсем ясно помогите растолковать Схема показывает, что происходит при нанесении повреждения NPC. on_hit = hit[hit]on_info = {+info -info =func !func ~number} %+info -info =func% - эффекты, которые вызываются в случае, если NPC нанесён хит.on_hit НЕ СРАБАТЫВАЕТ на звук выстрела, только на попадание по сталкеру! Это сделано, потому что выстрел в воздух в общем случае не должен восприниматься как агрессия (игрок отстреливает, скажем, собак, а на него срывается охрана).Пример использования секции:[logic]...on_hit = on_hit@agr_factory_hold_fake[on_hit@agr_factory_hold_fake]on_info = {=hit_by_actor} %+agr_krot_skirmish_start% как понимать эту схему: on_info = {+info -info =func !func ~number} %+info -info =func% - эффекты, которые вызываются в случае, если NPC нанесён хит. И не ясно что присваивать в on_hit Ссылка на комментарий
ColR_iT 171 Опубликовано 23 Августа 2013 Поделиться Опубликовано 23 Августа 2013 (изменено) wanes101, колбек на хит - это событие, которое выполнится, когда нпс уже получит хит, а сам хит обрабатывает движок. Секция hit работает ровно также, только из логики. on_info = {+info -info =func !func ~number} %+info -info =func% - эффекты, которые вызываются в случае, если NPC нанесён хит.Это означает, что можно установит параметр, при помощи которого можно произвести какое-то действие (забрать\выдать инфопорцию, либо вызвать функцию), т.е. эффекты, они заключены в знаки процента, при этом можно задать дополнительные условия заключённые в фигурные скобки. Обо всём этом можно почитать на Wiki (ссылка у тебя есть).В on_info по сути ничего не присваивается. Файлы ltx по своей структуре идентичны ini файлам, таким образом on_info это поле, а значение этому полю будет то, что ты пропишешь. В последствии вся логика будет распарсена скриптами, основные скрипты находятся в xr_logic.script. P.S.Всё же ты немного промазал с темой, тебе прямая дорого в"ковырялку". Изменено 23 Августа 2013 пользователем ColR_iT Ссылка на комментарий
wanes101 0 Опубликовано 23 Августа 2013 Поделиться Опубликовано 23 Августа 2013 (изменено) Настройка логики. Часть 3. Для таких постов есть личка. ColR_iT Изменено 23 Августа 2013 пользователем ColR_iT Ссылка на комментарий
toxictrace 1 Опубликовано 23 Августа 2013 Поделиться Опубликовано 23 Августа 2013 (изменено) Доброго дня (ночи?). Возник такой вопрос — можно ли в Сталке точно определить какой вид камеры включен (скриптово). Т.е. вид от 1-го лица, от 3-го с фиксированой камерой или от 3-го со свободной камерой. Была попытка определить по разнице позиции актора и камеры. local cam_position = device().cam_pos local pos = db.actor: position() local third1 = cam_position:distance_to(pos) local thr1 = cam_position.y - pos.y Единственне более-менее связаные параметры это координаты Y. Но эта связка работает ( third1 - thr1 = 0, вид от 1-го лица), если ГГ стоит. Но при ходьбе и беге камера (в голове) качается и расстояние между позицией ГГ (ногами) и позицией камеры (головы) меняется. Можно ли что-то сделать? Изменено 23 Августа 2013 пользователем toxictrace 1 Когда умрёшь, увидишь кнопки "О'кей" и "Главное меню"Под ними "Новая" и "Выход" И неактивная "Назад" Ссылка на комментарий
*Shoker* 322 Опубликовано 23 Августа 2013 Поделиться Опубликовано 23 Августа 2013 (изменено) local cam_position = device().cam_pos --> Позиция камеры local pos = db.actor:bone_position("bip01_head") --> Позиция головы игрока local distance = cam_position:distance_to(pos) --> Расстояние от камеры до головы ГГ Не совсем понял как ты хочешь по разнице Y-ов определять что включён вид от 3-го лица с фиксированной или свободной камерой. Как вариант настройки камеры от разного лица хранятся в файле system.ltx, actor_cam_look_ или как то так, найдёшь там вообщем. Там есть такой параметр как максимальное удаление\приближение камеры к игроку (на +\-) Настрой эти параметры так чтобы от 3-го лица с фиксированной камерой приближение было одно (например от 2 до 5 метров или ровно 5-5 чтобы камера всегда в одном месте висела), а со свободной другое (от 5\6 и больше). Что то вроде этого. Тогда уже через distance определяй как далеко от игрока находится камера и соответственно для какого вида это расстояние приемлимо. Изменено 23 Августа 2013 пользователем *Shoker* Можно просто Shoker, форум АМК съел моё старое имя и не хочет отдавать о_О Мастер аномалий на свою заднюю точку. Ссылка на комментарий
toxictrace 1 Опубликовано 24 Августа 2013 Поделиться Опубликовано 24 Августа 2013 Другой вопрос — нажали клавишу, надо проверить, висит на ней в user.ltx нужное мне действие или нет? Когда умрёшь, увидишь кнопки "О'кей" и "Главное меню"Под ними "Новая" и "Выход" И неактивная "Назад" Ссылка на комментарий
Сталкер Лом 356 Опубликовано 26 Августа 2013 Поделиться Опубликовано 26 Августа 2013 Здравствуйте. Есть ли проверки на то, существует ли парт-тексутра(определённая область в текстуре, которая записывается в .xml - "научного" названия не знаю, называю так)? Нужно мне это для такой ситуации: если есть текстура с определённым именем (она будет в размерах больше), то загрузить её. Если нет, то загрузить текстуру другую (меньшего размера). Текстуры подгружаю в GUI. Работы на Artstation - https://www.artstation.com/artist/stalker_lom Ссылка на комментарий
*Shoker* 322 Опубликовано 26 Августа 2013 Поделиться Опубликовано 26 Августа 2013 @Сталкер Лом, глянь скрипты ui_save_dialog\ui_load_dialog.scriptЭто скрипты сохранения\загрузки и там показан пример проверки наличия текстуры в папке с сейвами.Делай по аналогии для своего скрипта проверку что такой файл существует. Само собой это при условии что ты знаешь название текстуры. По парт-текстуру первый раз слышу или не понял что это такое. 1 Можно просто Shoker, форум АМК съел моё старое имя и не хочет отдавать о_О Мастер аномалий на свою заднюю точку. Ссылка на комментарий
Reisen 3 Опубликовано 27 Августа 2013 Поделиться Опубликовано 27 Августа 2013 (изменено) Здравствуйте. Есть функция kоторая возвращает название комбинезона kak string.Проблема в том что я этот string хочу проверить по таблице. group_1 = {soldier_outfit_grey = true, soldier_outfit_brown = true, ... etc.} local get_visual = get_visual.main(obj) if group_1[get_visual] then -//kod//-- end Проблема в том что, так построений if даже не стартует, как будто не распознает аргумент.Но, если я построю if таким образом. group_1 = {soldier_outfit_grey = true, soldier_outfit_brown = true, ... etc.} local get_visual = get_visual.main(obj) if get_visual == "soldier_outfit_grey" then -//kod//-- end To сравнение удается, то есть, это не nil и название комбинезона фактически находится в get_visual.Какие-то советы, что делаю не так? Я читал lua tutorial и там сказано что это правильный способ чтобы сравнивать string со значениями в таблице но у меня как то не выходит. Изменено 27 Августа 2013 пользователем Reisen Ссылка на комментарий
Shredder 49 Опубликовано 27 Августа 2013 Поделиться Опубликовано 27 Августа 2013 Я бы тебе посоветовал использовать разные названия для переменных и для скриптов (get_visual) 2 Ссылка на комментарий
boryan67 38 Опубликовано 27 Августа 2013 Поделиться Опубликовано 27 Августа 2013 Reisen, попробуй так сделать: local group_1= { ["soldier_outfit_grey"] = true, ["soldier_outfit_brown"] = true, ... etc. } Ссылка на комментарий
Reisen 3 Опубликовано 27 Августа 2013 Поделиться Опубликовано 27 Августа 2013 (изменено) Я бы тебе посоветовал использовать разные названия для переменных и для скриптов (get_visual) А вот я без особых надежд взял и изменил название на local get_oname = get_visual.main(obj) и сразу же заработало... Я на это потратил больше дня а надо было название взят другое, что самое смешное это такая нубовская ошибка, везде по голове молотком стучат чтобы этого не делать. Reisen, попробуй так сделать: На будущие постараюсь помнить что есть еще такой способ. Спасибо за помощь, надо мне было сразу же сюда писать, а не голову ламать часами. Изменено 27 Августа 2013 пользователем Reisen 1 Ссылка на комментарий
Dennis_Chikin 3 658 Опубликовано 2 Сентября 2013 Поделиться Опубликовано 2 Сентября 2013 (изменено) Интересно, на сколько я неправильно понимаю, что здесь что-то не так (amk-мод, amk.script): function fill_item_packet(ret,stpk,updpk) stpk:w_float(ret.condition) updpk:w_u8(ret.updnum_items) updpk:w_float(ret.updpos.x) updpk:w_float(ret.updpos.y) updpk:w_float(ret.updpos.z) readvu8uN(updpk,ret.updcse_alife_item__unk1_q8v4) readvu8uN(updpk,ret.updcse_alife_item__unk2_q8v3) readvu8uN(updpk,ret.updcse_alife_item__unk3_q8v3) return ret end Но ведь ни у кого ж ни разу не вылетало ? Изменено 2 Сентября 2013 пользователем Dennis_Chikin Солянка обезжиренная, диетическая, полезные советы по "солянке", текущий тестовый патч Ссылка на комментарий
*Shoker* 322 Опубликовано 2 Сентября 2013 Поделиться Опубликовано 2 Сентября 2013 (изменено) Я не смотрел скрипт АМК, поэтому не знаю что делает функция readvu8uN но в остальном тут не должно быть ошибок. Но вообще для работы с нэт-пакетами лучше использовать скрипт m_netpk (или как то так, ещё может m_net_utils.script называться) из Simbion Mod-а (потому что на форуме будет проблематично его найти) Там очень удобная библиотека функций для работы с нэт-пакетами. Ну или найди последние посты xStream-а в которых как раз обсуждались нэт-пакеты. Собстно вбей в поиск по этой теме m_netpk и найдёшь тут один из вариантов (если ещё нету более новых) Изменено 2 Сентября 2013 пользователем *Shoker* Можно просто Shoker, форум АМК съел моё старое имя и не хочет отдавать о_О Мастер аномалий на свою заднюю точку. Ссылка на комментарий
Dennis_Chikin 3 658 Опубликовано 2 Сентября 2013 Поделиться Опубликовано 2 Сентября 2013 Удобная, но неторопливая. Кстати, на яндексе отдача файлов в очередной раз сдохла. Солянка обезжиренная, диетическая, полезные советы по "солянке", текущий тестовый патч Ссылка на комментарий
Artos 99 Опубликовано 3 Сентября 2013 Поделиться Опубликовано 3 Сентября 2013 (изменено) @Dennis_Chikin, как говорится, спешка нужна при ловле блох. При работе с нет-пакетами торопливость противопоказана. ;-) Обновил и сам модуль и ссылку: m_netpk от 03.09.2013 Ну а по твоему вопросу: не было вылетов потому, что а) данный код не был востребован и б) искажение данных нет-пакета не всегда приводит к вылетам. Вспомни т.н. "рельсы", когда модели убитых монстров растягивались на пол локации. Отсутствие фатальной ошибки (вылета) нередко годами скрывает наличие ошибки, а в amk.script немало таких огрех и др. рудиментов... Изменено 3 Сентября 2013 пользователем Artos "Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени Ссылка на комментарий
Dennis_Chikin 3 658 Опубликовано 4 Сентября 2013 Поделиться Опубликовано 4 Сентября 2013 "Вспомни т.н. "рельсы", когда модели убитых монстров растягивались на пол локации." Кстати, а что это вообще было ? Солянка обезжиренная, диетическая, полезные советы по "солянке", текущий тестовый патч Ссылка на комментарий
Artos 99 Опубликовано 4 Сентября 2013 Поделиться Опубликовано 4 Сентября 2013 (изменено) Ну так кратко уже упомянул: "б) искажение данных нет-пакета" Если не сильно углубляться в дебри, то "рельсы" возникают из-за: 1.В АМК-моде имеются динамические рестрикторы (например аномалии), которые спавнятся в процессе игры и удаляются из игры. 2. Объекты в игре зависимы от рестрикторов и имеются т.н. "out_restrictions" и "in_restrictions", которые прописываются движком в нет-пакеты объектов. 3.(!) Чтобы при удалении рестриктора(ов) не возникало вылетов из-за "хвостов" в нет-пакетах, в АМК-моде имеются зачистки рестрикторов в нет-пакетах (см. on_register иль net_destroy), для чего считываются нет-пакеты и => crvu32u16u2={}. 4. При смерти монстров/сталкеров их объект получает физическую оболочку (phisic_shell) и в нет-пакете меняется структура(расширяется). В параметре 'skeleton_flags' изменяются значения битов, появляются дополнительные параметры/значения скелета/костей (bones). Именно это и приводит к искажению пакетов, т.к. упрощенное (неверное!) чтение и запись искажает значения... Порою это приводит к вылетам иль "битым сэйвам", порой остается незаметным, а порою измененные величины векторов превращают трупы во что угодно, в том числе и "рельсы", вытягивая в том иль ином направлении. Примечание: Чтобы изменить требуемый параметр приходится считывать весь(!) нет-пакет объекта и его (пере)записывать, заменяя требуемое значение, а в АМК-моде (amk.script) это делается даже одновременно с двумя типами пакетов ("state" и "update"), и любой сбой при чтении приводит к непредсказуемости. Подобные косяки могут быть и с предметами, т.к. алгоритм чтения/записи параметров секции cse_alife_object_physic, как и cse_ph_skeleton, кастрирован (упрощен). Немало и других некорректных частей в алгоритмах нет-пакетов в amk.script. Изменено 4 Сентября 2013 пользователем Artos 2 "Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени Ссылка на комментарий
S.K.Y.M.I.X.X.E.R.S 4 Опубликовано 4 Сентября 2013 Поделиться Опубликовано 4 Сентября 2013 Доброго времени всем суток. Возможно в ЗП проверить принадлежит ли данный смарт определенной группировке, так как ЧН? ПИС функция ЧН не работает, что надо поменять? function smart_captured_by_faction(actor , obj, p) local smart_name = p[1] local faction_name = p[2] if smart_name == nil or faction_name == nil then abort("Wrong parameters") end local smrt = sim_board.get_sim_board().smarts_by_names[smart_name] if smrt == nil then abort("Smart name [%s] doesn't exist.", smart_name) end if smrt.player_name == faction_name then return true end return false end Ссылка на комментарий
Рекомендуемые сообщения
Создайте аккаунт или авторизуйтесь, чтобы оставить комментарий
Комментарии могут оставлять только зарегистрированные пользователи
Создать аккаунт
Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!
Зарегистрировать новый аккаунтВойти
Есть аккаунт? Войти.
Войти