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

Скриптование


Svoboда

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

Disord

Если ищет, значит где-то прописано. Поищи поиском по геймдате, в последних файлах, где ты что-то менял.

Проверь, кстати, новости+сон сами по себе, на чистой игре (или для чего они там)

Мои работы:

Ночные прицелы + смена ножевого слота

AI вертолетов + ПЗРК

Soul Cube

 

Работаю только с ТЧ. С ковырянием ЧН/ЗП не связываюсь ни в какой форме. Совсем.

Поделиться этим сообщением


Ссылка на сообщение

Ulman

В amk.script в 303-й строке пытается добавить к строке переменную params

oau_reason=name.." "..params

 

, которая является таблицей.

Добавлять можно либо строку, либо число (оно само переведется в строку). При добавлении логических значений и nil - надо переводить их в строку: tostring(значение), таблицу, как таковую, не сожрет в принципе.

Мои работы:

Ночные прицелы + смена ножевого слота

AI вертолетов + ПЗРК

Soul Cube

 

Работаю только с ТЧ. С ковырянием ЧН/ЗП не связываюсь ни в какой форме. Совсем.

Поделиться этим сообщением


Ссылка на сообщение

Disord

Возможно, это происходит из-за того, что уровень еще не загрузился - из предположения, что в пространство имен level функцию запихнули не просто так, и уровень таки нужен.

 

Попробуй поменять на

объявление:

game_time_factor = nil

обновление - оно ж на актора завязано в конечном итоге, если спавним его, значит, уже есть куда.

if not game_time_factor then
    game_time_factor = level.get_time_factor()
end

Мои работы:

Ночные прицелы + смена ножевого слота

AI вертолетов + ПЗРК

Soul Cube

 

Работаю только с ТЧ. С ковырянием ЧН/ЗП не связываюсь ни в какой форме. Совсем.

Поделиться этим сообщением


Ссылка на сообщение

Igor88.89

Добавлю, что условие на не_видимость НПС актором вполне осмысленное - смена визуала требует переписывания нет-пакета. Пока объект - в данном случае НПС - в онлайне, это делать бесполезно. Надо переводить сталкера в оффлайн, менять нет-пакет и возвращать в онлайн, но во время пребывания в оффлайне НПС станет невидим, и это пропадание и появление будет прекрасно заметно в игре. Но если актор смотрит в другую сторону = не видит НПС, это пройдет незамеченным игроком.

Мои работы:

Ночные прицелы + смена ножевого слота

AI вертолетов + ПЗРК

Soul Cube

 

Работаю только с ТЧ. С ковырянием ЧН/ЗП не связываюсь ни в какой форме. Совсем.

Поделиться этим сообщением


Ссылка на сообщение

Да и класс у сталкера не вполне кровососовский. Это как бы не в движке с экскаватором копаться придется, чтоб смену моделей поддерживал...

Мои работы:

Ночные прицелы + смена ножевого слота

AI вертолетов + ПЗРК

Soul Cube

 

Работаю только с ТЧ. С ковырянием ЧН/ЗП не связываюсь ни в какой форме. Совсем.

Поделиться этим сообщением


Ссылка на сообщение

TRAMP14

НПС в оффлайне будет существовать весьма формально, как все объекты на других уровнях. В том смысле, что он, конечно существует, можно отследить его положение и инвентарь - но это только перебором всех объектов в игре. Вот только из оффлайна он не сможет взаимодействовать с объектами на уровнях - участвовать в бою, например, или находиться под какой-то схемой. Фактически, для геймплея его не существует. Так что сделать на оффлайне духов Зоны врядли получится.

Невидимого НПС больше смысла делать на прозрачной модели - так он хотя бы в игре нормально участвовать будет.

Мои работы:

Ночные прицелы + смена ножевого слота

AI вертолетов + ПЗРК

Soul Cube

 

Работаю только с ТЧ. С ковырянием ЧН/ЗП не связываюсь ни в какой форме. Совсем.

Поделиться этим сообщением


Ссылка на сообщение

TRAMP14

Насколько я понимаю, хит можно нанести просто с направления - в xr_effects, вроде, была такая функция. А если указывать draftsman-а, то нужен онлайн объект.

Записать id в таблицу, ты конечно сможешь, а вот что с этим id делать - совсем другая история...

Со спавном дряни на месте оффлайнового НПС - вообще непонятно. Он и так никуда не денется, пока его alife():release-ом не убрать.

В общем, несколько непонятен смысл того, что ты хочешь сделать. Если нужен удар из ниоткуда, без возможности дать сдачи - так и НПС не нужен. Если нужна возможность дать сдачи, то на оффлайне ты ее не вдруг построишь, разве что скриптовую. Онлайновый НПС оффлайнового как врага все равно не воспримет. Да и вообще никак не воспримет.

Мои работы:

Ночные прицелы + смена ножевого слота

AI вертолетов + ПЗРК

Soul Cube

 

Работаю только с ТЧ. С ковырянием ЧН/ЗП не связываюсь ни в какой форме. Совсем.

Поделиться этим сообщением


Ссылка на сообщение

Igor88.89

А то мы не о сталкере говорим :)

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

Мои работы:

Ночные прицелы + смена ножевого слота

AI вертолетов + ПЗРК

Soul Cube

 

Работаю только с ТЧ. С ковырянием ЧН/ЗП не связываюсь ни в какой форме. Совсем.

Поделиться этим сообщением


Ссылка на сообщение

Возникла такая задача:

Дано:

id непися, онлайн-объект прилагается.

В схемы лезть нельзя.

Нужно:

Заставить НПС смотреть туда и только туда, куда надо, плевать, под какой он схемой. Особенно по вертикали. Перемещение не важно, может хоть на месте стоять. Критично, чтобы смотрел на воздушную цель и сопровождал ее.

 

Пробовал так:

state_mgr.set_state( npc, "threat_fire", nil, nil, {look_position = target_pos}, nil, nil, {yaw_delta=10} )

 

Если ставить на апдейт - дергается. Пытается уйти (видимо, из схемы) и снова посмотреть - приказ из апдейта.

Если запихнуть в fastcall - стоит и смотрит. По горизонтали - более-менее. По вертикали - куда попало, либо горизонтально, либо вообще носом в землю, а нужно наверх.

Мои работы:

Ночные прицелы + смена ножевого слота

AI вертолетов + ПЗРК

Soul Cube

 

Работаю только с ТЧ. С ковырянием ЧН/ЗП не связываюсь ни в какой форме. Совсем.

Поделиться этим сообщением


Ссылка на сообщение

dragunof

 

if db.actor:active_slot() == 5 then
    --значит, 5-й слот активен
end

P.S. Не прокатит с 0 (ножевым) слотом - db.actor:active_slot() выдает 0 и при активном ноже, и при убранном оружии (в ТЧ, по крайней мере)

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

Мои работы:

Ночные прицелы + смена ножевого слота

AI вертолетов + ПЗРК

Soul Cube

 

Работаю только с ТЧ. С ковырянием ЧН/ЗП не связываюсь ни в какой форме. Совсем.

Поделиться этим сообщением


Ссылка на сообщение

TRAMP14

Можно через нет-пакеты.

 

Читаешь стандартный нет-пакет оружия (функцией из АМК, например), и смотришь параметр addon_flags. Он будет иметь значение от 0 до 7 (111 в двоичной системе):

Аддоны:

0 = 000 = ничего

1 = 001 = пр

2 = 010 = пг

3 = 011 = пр + пг

4 = 100 = гл

5 = 101 = пр + гл

6 = 110 = пг + гл

7 = 111 = пр + пг + гл

 

Мои работы:

Ночные прицелы + смена ножевого слота

AI вертолетов + ПЗРК

Soul Cube

 

Работаю только с ТЧ. С ковырянием ЧН/ЗП не связываюсь ни в какой форме. Совсем.

Поделиться этим сообщением


Ссылка на сообщение

Ulman

 

В play_at_pos, насколько я понимаю, первый аргумент - от чьего имени играется звук, второй - позиция относительно уровня, а не относительно "автора" звука. Третий аргумент не помню зачем, как бы не громкость, в любом случае он не обязателен, как и четвертый.

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

Попробуй так:

snd:play_at_pos(db.actor, device().cam_pos)

 

P.S. Всю функцию на апдейт актора, само собой.

Мои работы:

Ночные прицелы + смена ножевого слота

AI вертолетов + ПЗРК

Soul Cube

 

Работаю только с ТЧ. С ковырянием ЧН/ЗП не связываюсь ни в какой форме. Совсем.

Поделиться этим сообщением


Ссылка на сообщение

Такое чувство, что звук у тебя запускается каждый апдейт, независимо от того, доиграл он предыдущий цикл или нет...

Попробуй сохранять время запуска звука в переменной, и запускать снова только если прошло времени больше, чем длина звука.

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

Мои работы:

Ночные прицелы + смена ножевого слота

AI вертолетов + ПЗРК

Soul Cube

 

Работаю только с ТЧ. С ковырянием ЧН/ЗП не связываюсь ни в какой форме. Совсем.

Поделиться этим сообщением


Ссылка на сообщение

speczadanie

По поводу таблицы, у тебя фактически таблица такая:

table = {1 = a, 2 = b, 3 = c}

тут только перебирать всю таблицу и сравнивать значения, что долго и нудно.

 

Если сам вид таблицы не сильно принципиален, лучше переписать ее так:

table = {a = true, b = true, c = true}

(если a,b,c - строки, то в квадратных скобках: ["значение_а"] = true и т.д.)

 

Тогда процесс проверки упрощается до

if table[X] then
...
end

т.е. делаем что-то, если существует элемент таблицы с индексом X, а он существует только тогда, когда X = (a или b или c).

Мои работы:

Ночные прицелы + смена ножевого слота

AI вертолетов + ПЗРК

Soul Cube

 

Работаю только с ТЧ. С ковырянием ЧН/ЗП не связываюсь ни в какой форме. Совсем.

Поделиться этим сообщением


Ссылка на сообщение

speczadanie

Что-то не сходится вот это:

Вылетает при попытке клика по BTN_1 с логом типа "нулевое значение 'btn_1'"

вот с этим:

Выпадает без лога

Если без лога, откуда тогда инфа про нулевое (а скорее, nil-овое) значение?

 

По делу:

У тебя несколько раз вызывается self:Register(...), но метода ms:Register(...) в файле нет - наводит на подозрения

Мои работы:

Ночные прицелы + смена ножевого слота

AI вертолетов + ПЗРК

Soul Cube

 

Работаю только с ТЧ. С ковырянием ЧН/ЗП не связываюсь ни в какой форме. Совсем.

Поделиться этим сообщением


Ссылка на сообщение

Knyaz

В переводе на русский - "ни одна вершина пути ... не доступна объекту ..."

Проверь у этого объекта in и out рестрикторы, и не попутал ли ты in с out-ом. Также возможно, что единственный узкий проход к точке назначения перекрыт динамической аномалией (которая добавляет рестриктор) - в этом случае после выброса или ухода-захода с уровня (просто сейв/лоад не поможет, вроде бы) расположение динамических аномалий должно поменяться и проблема по идее исчезнет (до следующего раза)

Мои работы:

Ночные прицелы + смена ножевого слота

AI вертолетов + ПЗРК

Soul Cube

 

Работаю только с ТЧ. С ковырянием ЧН/ЗП не связываюсь ни в какой форме. Совсем.

Поделиться этим сообщением


Ссылка на сообщение

PavelSnork

Попробуй по косвенным признакам - как раз по прицеливанию с оптикой - по db.actor:accuracy(), и для проверки наличия оптики вроде какая-то функция в ЗП появилась - и всяким окнам - диалог, инвентарь и т.д. - они по идее все сводятся к (level.main_input_reciever() ~= nil) - значит, что-то включено.

Мои работы:

Ночные прицелы + смена ножевого слота

AI вертолетов + ПЗРК

Soul Cube

 

Работаю только с ТЧ. С ковырянием ЧН/ЗП не связываюсь ни в какой форме. Совсем.

Поделиться этим сообщением


Ссылка на сообщение

Хм... На первый взгляд все безобидно...

 

Из этой функции в основном вызываются все остальные. Чтобы прописывать в нее, а не в bind_stalker, скорее всего. На первый взгляд, ничего критичного, НО! Из этой функции много чего вызывается, возможно, дело в одной из тех функций.

Просто так комментить - часть функций АМК не запустится или запустится с левыми параметрами, результат непредсказуемый.

 

4) Что за объекты: (2972) и (2975), которые присутствуют в самом начале этой функции?

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

 

В общем, что могу посоветовать - продолжить поиски по Методу Научного Тыка, но уже комментируя отдельные блоки кода в этой функции. Точнее, сначала закомментировав все, раскомментировать их по очереди. Предполагаю, проблемы начнутся после раскомментирования одного из вызовов функций, с той функцией и надо разбираться...

Мои работы:

Ночные прицелы + смена ножевого слота

AI вертолетов + ПЗРК

Soul Cube

 

Работаю только с ТЧ. С ковырянием ЧН/ЗП не связываюсь ни в какой форме. Совсем.

Поделиться этим сообщением


Ссылка на сообщение

antreg

 

Но вот непонятно, это нормально, что два раза одно и тоже условие присутствует в функции? Имеется ввиду: if amk.load_variable("amk_13",0)==0

Это не нормально, но и не критично. После того, как отработает первое по скрипту условие, второе не выполнится уже никогда и конфликта не будет.

 

Что бросилось в глаза, что в обеих функциях упоминается конструкция alife():create(N), N - номер в алл.спавне. Но эти номера меняются при пересборке алл.спавна, тем более, что перебрали вы его серьезно. Вероятно, при попытке заспавнить что-то (но уже не то, что задумано) происходит конфликт...

Мои работы:

Ночные прицелы + смена ножевого слота

AI вертолетов + ПЗРК

Soul Cube

 

Работаю только с ТЧ. С ковырянием ЧН/ЗП не связываюсь ни в какой форме. Совсем.

Поделиться этим сообщением


Ссылка на сообщение

antreg

Ну, вот например, из 2-й функции:

--спавним аномалии

--initial_spawn()

local obj = alife():story_object(6000)

if not obj then

alife():create(2)

obj = alife():story_object(6000)

end

 

 

 

Функция проверяет наличие объекта со стори ИД = 6000, если не находит - создает из алл.спавна.

Что там получилось в алл.спавне за номером 2 после перекомпиляции - кто ж его знает. Но врядли это остался тот самый объект, у которого 6000-й СИД. И таких моментов несколько...

Мои работы:

Ночные прицелы + смена ножевого слота

AI вертолетов + ПЗРК

Soul Cube

 

Работаю только с ТЧ. С ковырянием ЧН/ЗП не связываюсь ни в какой форме. Совсем.

Поделиться этим сообщением


Ссылка на сообщение
  • Недавно просматривали   0 пользователей

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