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

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


Svoboда

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

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

Итак, как я понимаю в all.spawn задаются пути, по которым двигаются все живые объекты. А как на счет неживых? Возможно ли, допустим, задать 2 точки, а по ним пустить артефакт, чтобы он двигался туда-сюда.

Вообще вопрос такой: возможно ли заставить специально двигаться артефакт? Т.е. не как из рюкзака выбросили, и он укатился, а своими "силами".

Поэтому и вспомнил пути, ну как вариант, хотя они накладывают жеские ограничения.

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

ТЧ 1.0004. SAP и Trans mod

github

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


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

STARTS, ну это просто логика, а вот если все сделать точно.

Как отследить хит, который попал в ГГ? Из этого плясать можно.

Допустим прилетело в ГГ что-нибудь, не важно что, пуля, бочка, граната на хит эдак 0.5 (половину здоровья сняло) Но тут вопрос, сколько эти пластины защищают от конкретного вида повреждения. Т.е. надо будет рассчитать сколько пойдет на самого ГГ, сколько на костюм, а сколько на пластины (желательно тоже следуя здравой логике).

Можно также считать состояние пластин и устанавливать тоже в соответствии с хитом (запоминая старое состояние) - с точки скриптов, возможно этот вариант правильнее, хотя это только мои домыслы. В общем идею подкинул, думайте камрады :)

ТЧ 1.0004. SAP и Trans mod

github

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


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

Такой вопрос, а как работает функция start_stop_menu класса CDialogHolder, т.е. прошу объяснить ее точное назначение. Как я понимаю она нужна для закрытия и открытия окон, но по конкретней пожалуйста. Да и вообще класс CDialogHolder для чего он нужен, для чего используется. К сожалению в Справочнике по функциям и классам его описания нет.

ТЧ 1.0004. SAP и Trans mod

github

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


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

ZeeK, для условия тоже нужен end. В этом и была синтаксическая ошибка. Т.е. нужен еще один "конец" в функции start_nn_mod()

function start_nn_mod()
if db.actor:dont_has_info("start_nn_mod") then
alife():create("zat_b30_owl_stalker_trader",vector():set(-320.413361,19.349314,616.026245), 308687, 212)
db.actor:give_info_portion("start_nn_mod")
end --вот еще один, всего делов :)
end

Вариант от iDreD безусловно будет работать.

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

ТЧ 1.0004. SAP и Trans mod

github

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


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

Если актор берет какой либо предмет из трупа, проверку на взятие нужно писать в bind_stalker в функцию on_item_take(obj)? Ответ можно в личку.

ТЧ 1.0004. SAP и Trans mod

github

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


Ссылка на сообщение
TRAMP14, кнопка для каких целей и на какой худ? А и на какую игру (ТЧ\ЗП)? Изменено пользователем Desertir

ТЧ 1.0004. SAP и Trans mod

github

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


Ссылка на сообщение
self:Register(xml:Init3tButton("button_start", self.back),"button_start")

self:Register(xml:Init3tButton("button_stop", self.back),"button_stop")

self:Register(xml:Init3tButton("button_left", self.back),"button_left")

self:Register(xml:Init3tButton("button_quit", self.back),"button_quit")

self:Register(xml:Init3tButton("button_right", self.back),"button_right")

Не self.back а просто self. Зачем ты вообще передаешь фон?

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

ТЧ 1.0004. SAP и Trans mod

github

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


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

Если что-то не так напишу, не пинайте :)

STARTS, а что если а округлить до целых а, а потом прибавлять 0.1 или он даже с целым а такое делает?

a = math.floor(a) + 0.1

В данном случе будет округлять до ближайшего меньшего целого числа (было 10.999 станет 10)

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

ТЧ 1.0004. SAP и Trans mod

github

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


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

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

Вообще цель приостановить открытие инвентаря, при этом игра должна естественно продолжаться, но даже если это удастся, отслеживается это получением инфопоршня, а он вручается ГГ чуть позже, чем открывается окно инвентаря. Выходит проскок окна (появляется и сразу исчезает). В солянке такое было (типа замок сломался и не открывается рюкзак). Так вот иногда после загрузки игры можно было успеть даже что то выложить или съесть, т.е. очень поздняя выдача инфопоршня была. Больше никак открытие инвентаря не отследить ?

PS: ТЧ.

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

ТЧ 1.0004. SAP и Trans mod

github

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


Ссылка на сообщение
[error]Arguments : LUA error: ...s\s.t.a.l.k.e.r\gamedata\scripts\xr_motivator.script:162: attempt to index global 'news_of_npc_kill' (a nil value)

Синтаксическая ошибка в новом скрипте. А вот и она:

["l12u_control_monolith"] = "Управление Монолитом"
["predbannik"] = "predbannik"

Запятую в студию :) Вот так

["l12u_control_monolith"] = "Управление Монолитом", --вот сюда
["predbannik"] = "predbannik"

PS: я эту локу не качал, папка с ней точно predbannik называется? Кстати, выведет по-английски (ты сам так написал). Сделай так ["predbannik"] = "Предбанник"

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

ТЧ 1.0004. SAP и Trans mod

github

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


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

weas, слово "респавн" применимо только для мультиплеера (в некоторых играх и для сингла, но не для сталкера). Если ты имеешь ввиду точку спавна в начале игры, это нужно разбирать all.spawn и менять координаты, что есть на вики.

Это получается, что оно в движок что ле в ранговую систему прописано?

Вроде недавно кто то писал тут на форуме, что да :)

ТЧ 1.0004. SAP и Trans mod

github

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


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

Если непись не на АИ сетке сразу, то будет вылет, и никуда он не убежит - не успеет. Так что если там АИ сетки нету придется лезть в СДК и делать ее там, потом Make AI-map и xr-компиляторы (кроме детальных объектов, вроде не надо).

 

Не с целью вставить пять копеек, а с целью довести информацию...

Во время моих эксперементов с логикой над Волком, я спавнил его в начале игры в домике, что стоит у него за спиной в чистом варианте игры, АИ сетки там нет, можете проверить, и знаете - вылета не было, он в "ливитирующем" состоянии передвигался, насколько я понял, к ближайшей точки АИ сетки (под ливитацией я имею ввиду скольжение модели без анимации движения, просто стоя). ColR_iT

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

ТЧ 1.0004. SAP и Trans mod

github

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


Ссылка на сообщение
strelok200, смотря что ты хочешь сделать. Один из вариантов (возможно не самый удачный) - проверять на не наличие инфопоршня, после выполнения скрипта выдать этот поршень. После этого условие не выполниться и скрипт не пойдет.

ТЧ 1.0004. SAP и Trans mod

github

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


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

Не подскажете назначение функций в скрипте xr_logic.script

function pstor_store(obj, varname, val)

local npc_id = obj:id() --ид объекта

 

if db.storage[npc_id].pstor == nil then --что за пстор ?

db.storage[npc_id].pstor = {}

end

local tv = type(val) -- что за type ?

if not pstor_is_registered_type(tv) then

abort("xr_logic: pstor_store: not registered type '%s' encountered", tv) --выброс игры?

end

db.storage[npc_id].pstor[varname] = val

end

 

function pstor_retrieve(obj, varname, defval)

local npc_id = obj:id()

 

if db.storage[npc_id].pstor ~= nil then

local val = db.storage[npc_id].pstor[varname]

if val ~= nil then

return val

end

end

if defval ~= nil then

return defval

end

return nil

--' abort("xr_logic: pstor_retrieve: variable '%s' does not exist", varname)

end

 

Ну и что за переменные они принимают.

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

ТЧ 1.0004. SAP и Trans mod

github

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


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

Как можно узнать класс возвращаемого функцией объекта?

Допустим функция get_console() вернет объект класса CConsole, но как узнать что именно CConsole, а не какой нибудь еще?

ТЧ 1.0004. SAP и Trans mod

github

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


Ссылка на сообщение
но так он подаёт сигнал не только, когда съедаем, но и когда выбрасываем.

Либо сделать колбек на потерю предмета

Начнем с того, что каллбек на дроп объекта уже есть. А вот "проверять, существует ли предмет, который потерян" вообще интересен, особенно для хлеба...

В общем открываем бинд_сталкер.скрипт В функции function actor_binder:reinit() пишем по аналогии инициализацию каллбека

self.object:set_callback(callback.use_object, self.use_object, self)

Вне всяких функций пишем

function actor_binder:use_object(obj,who)
if obj:section() == "bread" then
get_console():execute("Use_detected") --тут просто вывод в лог, что использование прошло, строку удалить
end
end

Ну и вот после then пишем то, что нужно нам сделать. Для полного счастья можно еще прописать в function actor_binder:net_destroy() это

self.object:set_callback(callback.use_object, nil)

Это вроде как удаление каллбека при выходе из игры.

ТЧ 1.0004. SAP и Trans mod

github

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


Ссылка на сообщение
И ещё вопрос в дополнение к предыдущему. Где настраиваются координаты, куда телепортируется игрок при отказе от перехода на другую локацию?

Если я прав, то в all.spawn где пути (точка и направление). На какой путь телепортировать прописывается в секции левел чейнджера тоже в all.spawn.

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

alife():release(sobj,true)

Где sobj серверный объект.

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

ТЧ 1.0004. SAP и Trans mod

github

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


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

Подскажите грамотную проверку на то, что все элементы массива - числа. Есть такой вариант:

local a = 0
local count = #tbl
for k=1,count do
if type(tbl[k]) == "number" then
a = a + 1
if a == count then
--action
end
end
end

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

ТЧ 1.0004. SAP и Trans mod

github

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


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

Черт, зациклился я на for. Про другие циклы даже не вспомнил...

Может тогда и для других основных значений и немного по-другому.

function is_val_tbl(t,val)
local i = #t
while type(t[i]) == val do
i = i - 1
end
return i == 0
end

Кстати, что будет, если допустим у нас есть клиентский объект - obj (колбаса например) и сделать вот так:

local tp = type(obj)

Чему в этом случае будет равно tp?

 

Подобным вопросам самое уместное место в топике: "Язык Lua. Общие вопросы программирования."

--/ Artos

 

Хорошо, давайте продолжим в том топике.

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

ТЧ 1.0004. SAP и Trans mod

github

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


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

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