Перейти к контенту

Рекомендуемые сообщения

Тема для обсуждения скриптов всего и всех в серии игр STALKER.


Задавая вопрос (!):
1. Внимательно изучите суть вопроса. Вопрос должен соответствовать выбранной Вами темы. Это поможет сохранить порядок и читабельность темы, а также облегчит поиск и понимание сего;
2. Изучите то, что уже есть в теме (пролистайте "руками", воспользуйтесь поиском на форуме);
3. Изучите информацию которая может вам помочь:

  Информация (Показать)

4. Дабы не превращать обсуждение в "кашу" разной информативной направленности, задавайте несколько вопросов по порядку (в разных постах) после того, как получите ответ на предыдущий вопрос;
5. "Спасибо" и тому подобное - будьте так любезны в ПМ. Если не любите писать в ПМ, в конце вопроса напишите фразу: "Заранее спасибо!" - или что-то в этом духе;
6. ПОЖАЛУЙСТА! Указывайте, для какой игры Вам необходима информация (ТЧ, ЧН, ЗП), если стоит мод - укажите название мода;
7. Если Вы что-то сделали и результат не такой, какой Вами задумывался, то, пожалуйста, приводите коды которые Вы изменяли/писали целиком! Это поможет другим правильно ответить на Ваш вопрос, а также оградит Вас от лишней писанины.
8. Оформляйте сообщение. Пользуйтесь тегами для того, чтобы отделить код от текста. Пишите грамотно - ПОЛЬЗУЙТЕСЬ ЗНАКАМИ ПРЕПИНАНИЯ.
9. И помните: «Правильно заданный вопрос – половина ответа».

 

Какие вопросы следует задавать, а какие нет...

  Читать рекомендуется. (Показать)

И последнее: очень рекомендовано к прочтению Правила форума
 


  • Спасибо 1
  • Полезно 2
Ссылка на комментарий

Приветствую!

У меня такой вопросец, как сменить текстуру в статике, не создавая новый статик, помню что строение было вроде такого:

имя_статика:SetTexture

Заранее спасибо. :)

  • Нравится 1
  • Не нравится 1

https://www.youtube.com/embed/U0no-6tCxhU

Канал на "Трубе"

Ссылка на комментарий

здравствуйте 

какой скрипт отвечает за поведение сталкера, после того как в него попадет пуля?

Чистил обработчик в xr_motivator келбек hit, но сталкеры все равно стреляют в ответ. 

И еще смотрел настройку логики через кастом дату, за реакцию на это отвечает секция hit и описание не совсем ясно помогите растолковать

  цитата с wiki (Показать)
Ссылка на комментарий

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.Всё же ты немного промазал с темой, тебе прямая дорого в"ковырялку".

Изменено пользователем ColR_iT
Ссылка на комментарий

Доброго дня (ночи?). Возник такой вопрос — можно ли в Сталке точно определить какой вид камеры включен (скриптово). Т.е. вид от 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-го лица), если ГГ стоит. Но при ходьбе и беге камера (в голове) качается и расстояние между позицией ГГ (ногами) и позицией камеры (головы) меняется. Можно ли что-то сделать?

Изменено пользователем toxictrace
  • Нравится 1

Когда умрёшь, увидишь кнопки

"О'кей" и "Главное меню"
Под ними "Новая" и "Выход"

И неактивная "Назад"

 

Ссылка на комментарий


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 определяй как далеко от игрока находится камера и соответственно для какого вида это расстояние приемлимо. 

Изменено пользователем *Shoker*

Можно просто Shoker, форум АМК съел моё старое имя и не хочет отдавать о_О

Мастер аномалий на свою заднюю точку.

Ссылка на комментарий

Другой вопрос — нажали клавишу, надо проверить, висит на ней в user.ltx нужное мне действие или нет?

Когда умрёшь, увидишь кнопки

"О'кей" и "Главное меню"
Под ними "Новая" и "Выход"

И неактивная "Назад"

 

Ссылка на комментарий

Здравствуйте.

Есть ли проверки на то, существует ли парт-тексутра(определённая область в текстуре, которая записывается в .xml - "научного" названия не знаю, называю так)?

Нужно мне это для такой ситуации: если есть текстура с определённым именем (она будет в размерах больше), то загрузить её. Если нет, то загрузить текстуру другую (меньшего размера). Текстуры подгружаю в GUI.

Работы на Artstationhttps://www.artstation.com/artist/stalker_lom

Ссылка на комментарий

@Сталкер Лом, глянь скрипты ui_save_dialog\ui_load_dialog.script
Это скрипты сохранения\загрузки и там показан пример проверки наличия текстуры в папке с сейвами.
Делай по аналогии для своего скрипта проверку что такой файл существует. 

Само собой это при условии что ты знаешь название текстуры. 

 

По парт-текстуру первый раз слышу или не понял что это такое.

  • Нравится 1

Можно просто Shoker, форум АМК съел моё старое имя и не хочет отдавать о_О

Мастер аномалий на свою заднюю точку.

Ссылка на комментарий

Здравствуйте.

Есть функция 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 со значениями в таблице но у меня как то не выходит.

Изменено пользователем Reisen
Ссылка на комментарий
Reisen, попробуй так сделать:
local  group_1= {
    ["soldier_outfit_grey"] = true,  
    ["soldier_outfit_brown"] = true,
     ... etc.
    }

 

 

 

Ссылка на комментарий
  27.08.2013 в 13:25, Shredder сказал:

Я бы тебе посоветовал использовать разные названия для переменных и для скриптов (get_visual)

А вот я без особых надежд взял и изменил название на

 local get_oname = get_visual.main(obj)

и сразу же заработало...

Я на это потратил больше дня а надо было название взят другое, что самое смешное это такая нубовская ошибка, везде по голове молотком стучат  чтобы этого не делать.

  27.08.2013 в 13:41, boryan67 сказал:

Reisen, попробуй так сделать:

На будущие постараюсь помнить что есть еще такой способ.

 

Спасибо за помощь, надо мне было сразу же сюда писать, а не голову ламать часами.

Изменено пользователем Reisen
  • Нравится 1
Ссылка на комментарий

Интересно, на сколько я неправильно понимаю, что здесь что-то не так (amk-мод, amk.script):

  Показать

Но ведь ни у кого ж ни разу не вылетало ?

Изменено пользователем Dennis_Chikin
Ссылка на комментарий

Я не смотрел скрипт АМК, поэтому не знаю что делает функция readvu8uN но в остальном тут не должно быть ошибок. Но вообще для работы с нэт-пакетами лучше использовать скрипт m_netpk (или как то так, ещё может m_net_utils.script называться) из Simbion Mod-а (потому что на форуме будет проблематично его найти)

Там очень удобная библиотека функций для работы с нэт-пакетами. Ну или найди последние посты xStream-а в которых как раз обсуждались нэт-пакеты.  

 

Собстно вбей в поиск по этой теме m_netpk и найдёшь тут один из вариантов (если ещё нету более новых)

Изменено пользователем *Shoker*

Можно просто Shoker, форум АМК съел моё старое имя и не хочет отдавать о_О

Мастер аномалий на свою заднюю точку.

Ссылка на комментарий

Удобная, но неторопливая. Кстати, на яндексе отдача файлов в очередной раз сдохла.

Ссылка на комментарий

@Dennis_Chikin, как говорится, спешка нужна при ловле блох. При работе с нет-пакетами торопливость  противопоказана. ;-)

 

Обновил и сам модуль и ссылку: m_netpk от 03.09.2013

 

Ну а по твоему вопросу: не было вылетов потому, что а) данный код не был востребован и б) искажение данных нет-пакета не всегда приводит к вылетам. Вспомни т.н. "рельсы", когда модели убитых монстров растягивались на пол локации.

Отсутствие фатальной ошибки (вылета) нередко годами скрывает наличие ошибки, а в amk.script немало таких огрех и др. рудиментов...

Изменено пользователем Artos

"Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени

Ссылка на комментарий

"Вспомни т.н. "рельсы", когда модели убитых монстров растягивались на пол локации."

 

Кстати, а что это вообще было ?

Ссылка на комментарий

Ну так кратко уже упомянул: "б) искажение данных нет-пакета"

Если не сильно углубляться в дебри, то "рельсы" возникают из-за:

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.

Изменено пользователем Artos
  • Нравится 2

"Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени

Ссылка на комментарий

Доброго времени всем суток.

Возможно в ЗП проверить принадлежит ли данный смарт определенной группировке, так как ЧН?

ПИС функция ЧН не работает, что надо поменять?

 

  Показать

 

Ссылка на комментарий

Создайте аккаунт или авторизуйтесь, чтобы оставить комментарий

Комментарии могут оставлять только зарегистрированные пользователи

Создать аккаунт

Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!

Зарегистрировать новый аккаунт

Войти

Есть аккаунт? Войти.

Войти
  • Недавно просматривали   0 пользователей

    • Ни один зарегистрированный пользователь не просматривает эту страницу.
×
×
  • Создать...