[SoC] Ковыряемся в файлах - Страница 217 - Скрипты / конфиги / движок - AMK Team
Перейти к контенту

[SoC] Ковыряемся в файлах


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

Наносить скриптом хит, подобрав силу и тип. Вроде после chemical_burn появляется только кровотечение

Добавлю. Хит можно наносить и отрицательный и таким образом "лечить". В качестве альтернативы можно перехать на движок ЗП. Там вместо этой функции появилось нормальное свойство bleeding на чтение и запись.

Elliond,

Позволю заметить, что элементарная невнимательность присутствует.

Лишняя буква "а":

Вот так надо:

#include "w_w2000.ltx"

И вообще это не в той теме вопрос.

 

Добавлено:

Имя файла w_walther_wa_2000.ltx --такое длинное имя (со столькими "нижними подчёркиваниями") ни один мододел и грамотный создатель оружия не мог задать (то же самое относится и к скриптам, где есть ограничение на длинну имени), поэтому причину проблемы ищи там, где ты этот ствол взял - либо сам переименовал файл. Такого .ltx не должно быть. Измени и проверь на более коротком имени.

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

То ли лыжи не едут, то ли я е... Проверил, всё стоит на месте, всё прописано, однако вылет... Ладно, значит не судьба именно с этой винтовкой. Всем спасибо, кто уделил свое время моей проблеме.

 

Elliond,

Позволю заметить, что элементарная невнимательность присутствует.

Лишняя буква "а":

Вот так надо:

#include "w_w2000.ltx"

И вообще это не в той теме вопрос.

 

Имя файла w_walther_wa_2000.ltx

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

Подскажите, пожалуйста, такой момент:

Создаю alife():create-ом оружие в полуметре от актора, сразу при спавне меняю нет-пакет. На следующем же апдейте проверяю существование серверного объекта - все в порядке, существует сразу же. Но в онлайн оружие переходит только через несколько апдейтов, а иногда (очень редко, но все-таки) не хочет переходить в онлайн вообще. Если переиграть, то тот же ствол в тех же условиях с теми же изменениями в нет-пакете прекрасно переходит в онлайн, после чего спокойно переносится в инвентарь актора. От чего это зависит - непонятно :(

Можно ли как-то насильно перевести серверный объект свежесозданного оружия в онлайн (id известен) сразу же после создания и как это сделать? Функцией switch_online из _g.script пробовал, толку не видно...

Доброй ночи. Подскажите, что мне нужно, что бы вывести на экран время, которое прошло с начала запуска игры. т.е. сколько часов/минут запущена игра. Знаю, что есть функция game.time(). Смог вывести худ игровое время. А что поменять в скрипте, что бы вместо игрового, показывалось время с начала запуска не пойму.

Kirag,

Можно ли как-то насильно перевести серверный объект свежесозданного оружия в онлайн (id известен) сразу же после создания и как это сделать?

1. Смутно уже помню, но переход в онлайн предваряется вызовом метода серверного объекта (вроде как can_switch_online), который позволяет/не позволяет объекту перейти в онлайн. Я это к тому, что эти вызовы идут периодически с частотой вроде как одна секунда (но точно уже не помню). Это значит, что количество апдейтов до перехода в онлайн в целом величина переменная. Это если объект своим ходом переходит (от попадания в зону вокруг актора). Если пытаешься форсировать с помощью set_switch_online/offline, то см. ниже (п.3).

2. Почему не переходит в онлайн вообще да ещё иногда - тут ничего сказать не могу без эксперимента. Может с нетпакетом накосячил. Оружие вообще не столь к этому чувствительно, как другие объекты.

3. Сразу не перевести никак, просто потому, что это технически невозможно. Создаёшь ты на сервере, а в онлайне объект появляется на клиенте. Хоть это и одна машина, но сетевая архитектура всё равно остаётся. Передача по сети (а перевод объекта в онлайн связан с передачей нетпакета) происходит асинхронно, т.е. ты инициировал передачу (и только) и управление возвращается к тебе в скрипт. Ясно, что как минимум раньше следующего апдейта результата не дождёшься.

 

vader92,

 

используй time_global()

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

Как ускорить/увеличить время накопления силы перед броском гранаты/болта на ПКМ(Правая Кнопка Мыши)?

А то у меня тяяяянется сила, тяянется, а тут раз и нету меня! ;)

 

И да, вот что ещё, где редактировать вот такие ящички?

xr3da2010052011333284.jpg

 

 

А то, что-то не то "поюзал", так на Кордоне, на базе вояк один ящик сломал, железый который, так оттуда "калаши" посыпались. :grin2:

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

У меня вопрос, как сделать что-бы предмет можно было использовать несколько раз, например 5 раз. И с каждым разом его состояние ухудшалось и при достижении 0 предмет удалился из инвертаря.

malandrinus

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

 

С нет-пакетом накосячить я врядли мог, он берется неизменным из предыдущего оружия, разница между старым и новым оружием - только визуал ХУД-а. По идее, там косячить просто не в чем.

 

Сейчас поставил вывод инфы в лог на каждый апдейт, до выхода в онлайн "своим ходом" ничего не меняется, за вычетом не относящегося к делу мусора стабильно выдает вот такое:

...

server object 28416 exists: true

can_switch_online: true

can_switch_offline :false

...

То есть, по идее в оффлайне оружие ничто не держит, причем с самого начала следующего за спавном апдейта.

Однако, когда пытаюсь пнуть объект в онлайн функциями

alife():set_switch_online (id, true)

alife():set_switch_offline (id, false)

толку с того ноль. Все равно переходит только "своим ходом" через N апдейтов...

Kirag,

В качестве предположения. Там есть флажки object_flags. Эти флажки, насколько я помню на запись работают, а вот при чтении почему-то не читались. Т.е. при записи их надо было явно выставлять независимо от того, что там прочиталось до этого. Среди прочих там имеются use_swiches (как-то так по памяти). Может быть невключённость этих флажков влияет?

кстати true false, в роли второго параметра являются принудительностью перевода объекта..

Если true переводить объект принудительно и все остальное не важно, если false переводить объект по мере удаления от актера и выполнение задач поставленных ему...

Спавн я всё таки победил спасибо Kirag'у, Вопрос таков, как вызвать преждевременный выброс?

Всё для вызова уже есть. Как называется функция отвечающая за выброс и где она лежит?

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

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

Смог с помощью одного из уроков по модмейкерству вывести на худ игровое время:

function show_time()

local hud = get_hud()

local cs = hud:GetCustomStatic("hud_show_time")

if cs == nil then

hud:AddCustomStatic("hud_time_static", true)

hud:AddCustomStatic("hud_show_time", true)

cs = hud:GetCustomStatic("hud_show_time")

end

 

local time_h = level.get_time_hours()

local time_m = level.get_time_minutes()

local msg

if time_m >= 10 then

msg = string.format(" %02d:%02d\n", time_h, time_m)

else

msg = string.format(" %02d:%02d\n", time_h, time_m)

end

 

if cs ~= nil then cs:wnd():SetText(msg) end

end

 

 

Так же я знаю, что за вывод реального времени с момента запуска игры отвечает функция time_global()

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

vader92

Попробуй в нет спавне определять переменную как time_global(), например tim = time_global(). Это будет постоянное число, которое будет определено при каждой загрузке\старте игры. А затем вычитай из настоящего времени эту переменную - получишь время с момента загрузки. Вот пример:

tim = 0
function actor_binder:net_spawn(data) -- Это в bind_stalker
...
  tim = time_global()
...
end

А вот это я уже вызываю функцию из другого файла:

function method()
  start_time = time_global() - bind_stalker.tim
  news_manager.send_tip(db.actor, start_time, 0)
end

Приходит смс с четырёхзначным числом, например 4334, т.е. 4 секунды с гаком. :)

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

amk.g_start_timer("blowout",0,0,0) игровое время

amk.start_timer("blowout",1) реальное время.

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

спавню непися в воздухе, киляю его, и меняю ему ник

local obj = alife():create("bar_dolg_respawn_2", vector():set(14, 155, 673), 292018, 206)
repack_npc(obj, "Генерал Таченко")

function repack_npc(obj, name)
  local data     = xr_packet.read_stalker_params(obj)
  data.charname  = name
  data.health    = 0
  data.updhealth = 0
  xr_packet.write_stalker_params(data, obj)
end

однако когда он переходит в онлайн - он оказывается не в сотне метров в воздухе, а гдето в полуметре от асфальта, как победить глюк?

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

 

ЗЫ. Вопрос по тем же аномалиям, почему созданную мной аномалию все, без исключения, НПС не видят в упор, как будто для них ее нету? Аномалия срабатывает ... хрусь и трупы. :mellow:

Ещё один вопрос, аномалия после выбросов исчезать будет?

Изменено пользователем elfog
однако когда он переходит в онлайн - он оказывается не в сотне метров в воздухе, а гдето в полуметре от асфальта, как победить глюк?

Для неживых объектов помогает снять флажок used_ai_location в поле object_flags. Флажок имеет маску 64. Не уверен однако, что для тушки это поможет. Живые объекты передвигаются по сетке. Может так статься, что независимо от "живости" привязка будет в любом случае.

 

почему созданную мной аномалию все, без исключения, НПС не видят в упор, как будто для них ее нету?

Ещё один вопрос, аномалия после выбросов исчезать будет?

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

 

Аномалия исходно - статический объект. Появляться и исчезать её заставили хитрые модостроители =) Т.е. опять же смотри, как это сделано в АМК.

Изменено пользователем malandrinus
Для неживых объектов помогает снять флажок used_ai_location в поле object_flags. Флажок имеет маску 64

Как снять скриптом, я так понимаю, это делается при помощи математических действий?

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

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

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

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

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

Войти

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

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

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