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

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


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

как убрать ограничение на сон?

Файл amk_mod.script. Там функция test_for_need_sleep_matras (примерно строка 409). Там во второй части есть такой фрагмент:

            else
                if amk.load_variable("block_sleep_menu",0)==0 then
                    if amk.load_variable("gg_need_sleep",0)>20 then
                        local spwn=ui_cheat.cheat(get_hud())
                        level.start_stop_menu(spwn,true)
                    else
                        amk.send_tip(game.translate_string("not_need_sleep"),nil,nil,5)
                    end
                else
                    amk.send_tip(game.translate_string("not_need_sleep_nrg"),nil,nil,5)
                end
            end

Это основные проверки, которые мешают заснуть, и собственно вызов диалога сна. Между else и end Надо закомментировать всё, кроме:

local spwn=ui_cheat.cheat(get_hud())

level.start_stop_menu(spwn,true)

 

Плагины Total Commander для работы с игровыми архивами:

Архиваторный плагин (для работы с одиночным архивом): link1 link2

Системный плагин (для распаковки установленной игры): link1 link2

 

Ссылка на комментарий
Есть ли в конфигах оружия параметры, отвечающие за скорость поворота ГГ с этим оружием в руках без зума, или это все правится в ogf?

Если речь идет о том, чтобы с каждым оружием ГГ крутился с разной скоростью, настройки мышки не спасут. В конфиге есть параметр control_inertion_factor, он влияет на скорость поворота с оружием. Для себя установил этот параметр равным корню квадратному из массы оружия (где не было - дописал), разница между легким пистолетом и тяжеленным пулеметом видна невооруженным глазом. С пистолетом крутится, как юла, с пулеметом такое фиг получится.

Проверял более точно, перемещал мышку по столу на фиксированное расстояние и считал обороты ГГ. Результат точно не помню, но очень заметный, явно не погрешность эскперимента.

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

Мои работы:

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

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

Soul Cube

 

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

Ссылка на комментарий
...которая в конце-концов вызывает функцию do_news, которая уже и отображает сообщение через случайный интервал времени (чтобы не всю пачку сразу вываливать).

Тут подумал, а как тогда убрать этот интервал? В частности для вывода сообщения о смерти НПС.

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

Подскажите, как скриптом установить прицел на оружии. Оружие в руках, в активном слоте. Прицел на него точно ставится (взял АК-74 для опытов) Пробовал вот такой функцией:

 

function scope()
local wpn = db.actor:item_in_slot(db.actor:active_slot())
if wpn then 
    local wid = wpn:id()
    local wdat = amk.get_weapon_data(alife():object(wid))
    local af = wdat.addon_flags
    local uaf = wdat.updaddon_flags
    --news_manager.send_tip(db.actor, "   addon_flags: "..tostring(af).."   updaddon_flags: "..tostring(uaf), nil, nil, 20000)
    wdat.addon_flags = af + 1
    wdat.updaddon_flags = af + 1
    local wobj = alife():object(wid)
    --local wobj = alife():create(wpn:section(), db.actor:position(), db.actor:level_vertex_id(), db.actor:game_vertex_id(), db.actor:id())
    amk.set_weapon_data(wdat,wobj)
end
end

 

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

В скрипте очепятку подправил, где в fill_item_packet(ret,stpk,updpk) вместо writevu8uN(pk,v) (как по логике и должно бы быть, запись все-таки) вызывалось readvu8uN(packet,n) (с закономерным вылетом LUA error: d:\games\s.t.a.l.k.e.r\gamedata\scripts\amk.script:2061: 'for' limit must be a number), но на большее мозгов у меня не хватило. Что и где еще не так - не знаю, нет-пакеты меня вырубают начисто.

Или я в принципе неправильно делаю?

 

Запасной вариант с выдачей оружия с уже установленным (но съемным) прицелом тоже не сработал (в скрипте закомменченая строка) - выдается оружие, но без всего.

 

Выручайте, люди добрые!

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

Мои работы:

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

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

Soul Cube

 

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

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

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

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

Незаметные штрихи, для глаз среднего человека, составляют славу мастера

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

подскажите пожалуйста как повернуть карту локации на глобальной карте?

 

 

global_rect = -6,1220.0, 248.0,1481.0

texture = map\map_deadcity

bound_rect = -502.148,-412.284,379.976,474,479

weathers = default

 

мне ее градусов на 15 против часовой стрелки повернуть надо

Ссылка на комментарий
Тут подумал, а как тогда убрать этот интервал? В частности для вывода сообщения о смерти НПС.

Не обязательно пользоваться функциями АМК. Можно использовать функцию give_game_news из движка игры прямо в колбеке на смерть непися. Прописать там время задержки нулевое и всё. Я подробно описывал эту функцию в старом топике. Вот оттуда информация:

У любого клиентского объекта имеется метод give_game_news

Он и выводит сообщения на экран. Экспериментом выяснил, что сообщение можно вывести совершенно от любого клиентского объекта, хоть от куска колбасы (хвала дизайнерскому гению GSC! Ну почему не сделать просто глобальную функцию?). Однако, следуя традиции и здравому смыслу, мы таки воспользуемся для этого объектом, соответствующим ГГ, т.е. актёром.

Код

    local sactor = alife():actor() --получаем серверный объект актера
    local cactor = level.object_by_id(sactor.id) --по его ID получаем клиентский объект актера
    cactor:give_game_news(
        "Свободу тушканам!\\nТушканчики всех стран, объединяйтесь!", -- строка сообщение, может быть многострочной
        "ui\\ui_npc_monster",        --текстура, из которой берется аватара "отправителя"
        Frect():set(0,215,163,105),  --координаты и размеры вырезаемого из текстуры изображения
        math.random(1000, 3000),     --начало показа сообщения с текущего момента (в миллисекундах)
        5000                         --длительность показа сообщения (в миллисекундах)
        )

Доп. комментарии к аргументам give_game_news:

имя текстуры - это имя файла DDS без расширения, адресуемого относительно папки \gamedata\textures\

в этом выражении Frect():set(0,215,163,105)

0,215 - это координаты верхнего левого угла нужного изображения

163,105 - его размеры

Размеры и координаты могут быть любыми, но полученное изображение будет увеличено или уменьшено до размеров 83х47

В данном случае изображение тушкана из файла ui_npc_monster.dds было уменьшено.

Параметр времени начала показа нужен, очевидно, для внесения некоторой живости в игру. Дело в том, что код Lua получает управление только в определённые моменты, по определённым событиям. В такой момент можно сгенерить пачку сообщений и раскидать их по времени с помощью этого параметра, создав таким образом некоторую имитацию жизнедеятельности на ближайшее время. Думаю, таким же образом можно имитировать диалоги. Просто генерится пачка сообщений и им задаётся вывод с небольшим интервалом.[/code]

 

 

 

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

Скорее всего не выйдет. Вроде разработчики планировали в процессе создания игры сделать езду неписей на машинах, и даже подробно разработали анимацию посадки в машину и пр. Но потом всё повырезали в связи с уменьшением локаций и изменением многих объектов на неразрушаемые. Остался только БТР, который ездит по скриптам. Вряд ли в движке осталась логика управления автомобилем, так что даже если остались все анимации, то восстановить это не получится. Да и к чему?! Любую локацию можно пробежать за пару минут, а ездить даже ГГ может с трудом из-за многочисленных препятствий.

 

Плагины Total Commander для работы с игровыми архивами:

Архиваторный плагин (для работы с одиночным архивом): link1 link2

Системный плагин (для распаковки установленной игры): link1 link2

 

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

Несколько раз словил рандомный вылет:

FATAL ERROR

[error]Expression    : fatal error
[error]Function      : CScriptEngine::lua_error
[error]File          : E:\stalker\patch_1_0004\xr_3da\xrGame\script_engine.cpp
[error]Line          : 73
[error]Description   : <no expression>
[error]Arguments     : LUA error: ...\s.t.a.l.k.e.r\gamedata\scripts\death_manager.script:186: attempt to index field '?' (a nil value)

Кто знает, с чем это связано?

НЛС-6: У каждого своя зона

_______________________________________________________________

Не ищи легких путей и не возвращайся той же дорогой

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

ошибка в 186 строке скрипта death_manager, попытка заюзать переменную не содержащую ссылку на объект или какое либо другое значение, хочешь более развернутый ответ - покажи свой death_manager

Изменено пользователем Gonarh
118 101 110 105 44 32 118 105 100 105 44 32 118 105 99 105
Ссылка на комментарий

Gonarh,

Это-то понятно. Я этот менеджер никаким боком не трогал. Он вообще в пысовских архивах лежит. Это меня и заинтересовало. Но самое главное, что тут же запускаешься - все нормально. Никаких вылетов...

НЛС-6: У каждого своя зона

_______________________________________________________________

Не ищи легких путей и не возвращайся той же дорогой

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

Vergas

Почему-то НПС в функцию не пришел.

В death_manager от АМК эта проблема, похоже, решена - там в этой функции (и не только в ней) стоит проверка на существование НПС:

if npc == nil then return end

Если вдруг он сочтен несуществующим, функция тихо мирно закроется без скандалов и вылетов.

 

ХМК

Поворта не нашел, но фотошоп помочь должен. Заодно и миникарта повернется на уровне.

 

Monnoroch

Нас уже двое с почти одинаковым вопросом :)

Спавнить напрямую с [[wpn_ak74 = 1,scope]] (как в characters_desc) вместо секции не получается.

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

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

 

флаг  приц гран глуш
0       о    о    о
1       х    о    о
2       о    х    о
3       х    х    о
4       о    о    х
5       х    о    х
6       о    х    х
7       х    х    х

 

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

Мои работы:

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

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

Soul Cube

 

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

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

XMK,

Попробуй поэкспериментировать с координатами. У меня получалось развернуть карту на 180 градусов. Может получится и на 15 повернуть. Только при повороте карты на 180 были глюки с этой миникартой. При увеличении масштаба при просмотре глобальной карты развернутая миникарта исчезала из виду.

Кто весел - тот смеется, кто хочет - тот добьется, кто ищет - тот всегда найдет!

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

Monnoroch Вот что я нарыл на офф.форуме по спавну оружия с аддонами:

 

13 Июня 2008

--------------------------9rauth

 

Как узнать в скрипте прикручен ли к данному оружию прицел/подствольник/глушитель?

В инвентаре непися имеется ствол и прицел/подствольник/глушитель. Как скриптом прикрутить девайс к стволу?

 

 

--------------------------IG-2007

 

---ЦИТАТА---

Как узнать в скрипте прикручен ли к данному оружию прицел/подствольник/глушитель?

---КОНЕЦ ЦИТАТЫ---

Можно при помощи функции STATE_Write для серверного объекта считать в нет-пакет параметры оружия. Разабрать нет-пакет на составляющие, там есть нужная информация. В АМК видел подобный скрипт, в том же файле, где читаются/разбираются нет-пакеты сталкеров и монстров. Можете посмотреть файл aem_grenade.script из последних версий AEM.

 

---ЦИТАТА---

В инвентаре непися имеется ствол и прицел/подствольник/глушитель. Как скриптом прикрутить девайс к стволу?

---КОНЕЦ ЦИТАТЫ---

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

 

--------------------------9rauth

Спасибо

 

---ЦИТАТА---

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

---КОНЕЦ ЦИТАТЫ---

 

 

Это мне как раз и нужно. Но что то я не представляю как заспавнить оружие с приделанными аддонами. Наверное я чего то не понимаю?

 

И еще, можно ли с помощью этих нетпакетов (пока слабо понимаю как с ними работать ) сменить оружию тип патронов прямо во время игры? Я смотрел в скрипт ремкомплекта, из нетпакета оружия можно получить информацию про тип патронов. Если в нетпакет записать информацию про другой тип патронов, это сработает, тип патронов для оружия изменится?

 

--------------------------IG-2007

---ЦИТАТА---

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

---КОНЕЦ ЦИТАТЫ---

Изначально идея была простая, спавним обычное оружее и для него с помощью STATE_Read и/или UPDATE_Read переопределяем параметры (адоны, патроны, износ и т.д.). Но это не захотело работать при спавне оружия в инвентарь. Зато, если спавнить вещь отельно, то всё прекрасно работает. Пришлось спавнить оружие вне инвенторя, дожидаться его перехода в онлайн и переносить в инвентарь.

 

---ЦИТАТА---

Если в нетпакет записать информацию про другой тип патронов, это сработает, тип патронов для оружия изменится?

---КОНЕЦ ЦИТАТЫ---

Может да, может нет. Проблема, как я понимаю, в том, что оружее (как и всё остальное) может иметь два объекта: серверный и клиентский. Переопределяя нет-пакеты STATE-ми и UPDATE-ми мы изменяем только серверный объект. Клиентскиё же создаётся на базе серверного в момент перехода оружия в онлайн. Если клиентский объект уже создан, то он содержит в себе дупликаты всех необходимых ему данных из серверного. Т.е. переопределяя нет-пакеты серверного объекта мы не можем повлиять на уже созданный клиентский. Как-то так...

 

Мои работы:

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

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

Soul Cube

 

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

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

Касательно прикручивания аддонов к стволу скриптами. Поэкспериментировал и выяснил следующее: когда устанавливаешь/снимаешь аддон, то ID ствола не меняется, а после снятия аддона его ID становится другим. Т.е. ствол с гарантией не спавнится заново, а только меняются его свойства, а вот аддон наоборот почти наверняка на время установки просто исчезает, а при снятии спавнится в инвентарь заново.

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

 

Плагины Total Commander для работы с игровыми архивами:

Архиваторный плагин (для работы с одиночным архивом): link1 link2

Системный плагин (для распаковки установленной игры): link1 link2

 

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

malandrinus

А как технически перевести объект из онлайна в оффлайн и обратно? Как-то уже интересовался этим вопросом, но ответа так и не нашел.

Мои работы:

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

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

Soul Cube

 

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

Ссылка на комментарий
А как технически перевести объект из онлайна в оффлайн и обратно

в запихачить в оффлайн

alife():set_switch_online(obj, false)

alife():set_switch_offline(obj, true)

в онлайн - соответсвенно

alife():set_switch_online(obj, true)

alife():set_switch_offline(obj, false)

:russian_ru:

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

переводица, а если ето нуно сдлеть прям вот сейчас, а не потом? :grin2:

Изменено пользователем Gonarh
118 101 110 105 44 32 118 105 100 105 44 32 118 105 99 105
Ссылка на комментарий

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

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

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

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

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

Войти

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

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

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