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

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

1. Нет, как спавнить я знаю, мне надо его удалить. Инфопоршнем, я не так выразился, при наличии инфопоршня. Можешь поподробней про "reliase"?

2. т.е при вызове ПДА (кнопкой P например) сам ПДА не открывать, а запускать скрипт

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

Darkscape Сам не в курсе как да что. У меня в папке по урокам валялось...

Удалим предмет из игры (или сталкера из игры(Удалим Волка)):

function dell_kluk_final()
  local se_obj = alife():object("esc_wolf")
    if se_obj then
       alife():release(se_obj, true)
    end
end

Изменено пользователем ColR_iT
Используем теги...

Мой архив

Сталкером не занимаюсь.

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

Darkscape

2. т.е при вызове ПДА (кнопкой P например) сам ПДА не открывать, а запускать скрипт

1. Освободить клавишу "Р" в user.ltx

2. используя, либо "кейлогер", либо "правленную длл", ловить нажатие "кнопки Р" и запускать скрипт.

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

всё легко

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

У меня схожий вопрос с товарищем Darkscape, только мне нужно вообще вырезать ПДА, чтобы не открывался при нажатии кнопки Р. Вариант

Освободить клавишу "Р" в user.ltx
не катит.

 

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

 

Спасибо)

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

Darkscape,можно обойтись и без кейлоггера.При открытии ПДА будет выдан инфопоршень "ui_pda".При его получении нужно отловить активное окно и закрыть его.При закрытии окна ПДА будет выдан инфопоршень "ui_pda_hide".B уже при его получении запускай свой скрипт.Это у меня на ТЧ работает,в ЧН/ЗП не проверял.

 

Scarabay,чтобы "отключить" - болт и бинокль удали из инвентаря.

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

Artos

Я видимо не до конца разобрался в чтении UPDATE_ пакетов.

Тестировал на FN2000 в ЧН, класс WP_GROZA, это ("CWeaponGroza", "se_item.se_weapon_magazined_w_gl", "WP_GROZA", "wpn_groza_s")

 

Разбирал пакет так - local p = sm_net_utils.Get_Data_WeaponGL(sobj, true)

 

В итоге:

* p.updgrenade_mode = 238

* p.updcondition = 226

 

Где я мог ошибиться?

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

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

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

Darkscape

Во-первых, следует уточнять версию игры при подобных вопросах, реализация которых различна в ТЧ и ЧН/ЗП.

Во вторых, ... судя по твоей неосведомленности про 'reliase' 'release', вероятно ты замахиваешься на вопрос, которы пока не 'по зубам'. Может стОит пока не вот так сразу кастрировать КПК, а понемногу приблизиться к пониманию что и как?

 

Краткий ответ:

Вызов интерфейса КПК сопровождается выдачей тех или иных инфопоршней (в ТЧ - одни, в ЧН/ЗП - несколько иначе).

Отследив коллбэк на появление такого инфопоршня можно принудительно 'гасить' окно КПК и вызывать свой скрипт/функцию.

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

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

 

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

Ну а заюзать то можно слот бинокля, выправляя конфиги оружия под этот слот, но ИМХО это уже для садомазохистов ...

Болтовый слот врядли удастся задействовать, все же это движковая фича.

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

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

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

Charsi, спасибо.

Artos, можно через скрипт "разбиндить" кнопку открытия ПДА?

 

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

 

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

amik, спасибо

Charsi, а как "отловить активное окно"?

Artos, если я собираюсь это делать, значит понимаю что да как. А про reliase я и правда впервые слышу, хотя прочитал, наверно, 80% вики по сталкеру

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

Scarabay

> можно через скрипт "разбиндить" кнопку открытия ПДА?

Можно, с помощью работы скриптово с консолью, сделать в скриптах вызов такого get_console():execute("unbind active_jobs"), и тогда кнопка PDA будет сброшена. Только учти, что люди, после удаления твоего мода, должны будут вручную занаво установить кнопку открытия ПДА в опциях.

 

ЗЫ: active_jobs - для ЧН, если не работает в ЗП/ТЧ то возможно там по другому называется действие, но маловероятно.

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

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

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

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

Darkscape, сорри, очепятался: reliase -> release, но сути моего ответа не меняет.

 

 

 

Добавлено через 4 мин.:

*Shoker*, мне непонятно, какое значение и для чего ты ожидаешь от 'updgrenade_mode' для FN?

Если у него штатный подствольник - вообще для чего читать этот параметр?

Если у тебя чисто познавательный интерес - то сейчас именно не готов к ответам по нюансам в ЧН с нет-пакетами, т.к. коды игры/мода у меня не в рабочем состоянии. Если важно - вернемся позже или еще кто ответит ...

 

Добавлено через 4 мин.:

Scarabay, функционал по проверке патронов различным оружием и его наличие/отсутствие у НПС (иль актора) можно найти например в 'amk_offline_alife.script'. Там при продаже проверяется имеющееся оружие, наличие к нему патронов и 'беспатронное' иль 'нелучшее' - продается.

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

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

> *Shoker*, мне непонятно, какое значение и для чего ты ожидаешь от 'updgrenade_mode' для FN?

Хм, по моему ещё вчера мы обсуждали возможность отслеживать то, что у оружия в ДАННЫЙ момент включён режим гранатометания.

Чего я ожидаю, ну точно не того, что сейчас выходит.

Для чего читать? Определение выстрела из оружия, был ли выстрел из гранатомёта или из обычного режима.

 

PS: Можешь выслать последнию версию m_net_packets.script?

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

 

О updgrenade_mode - http://www.amk-team.ru/forum/index.php?s=&...st&p=634928

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

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

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

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

*Shoker*, Scarabay

... get_console():execute("unbind active_jobs"), и тогда кнопка PDA будет сброшена. Только учти, что люди, после удаления твоего мода, должны будут вручную занаво установить кнопку открытия ПДА в опциях.
Никого напрягать не надо - как "сбросите", так и опять "набросите".

всё легко

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

*Shoker*, держи последний:

m_net_utils_111013

Примечание: Не советую что-то менять/переставлять. Модуль достаточно автономен и универсален, чтобы работать в любом моде (при разумном использовании).

 

По остальному чуть позже отвечу ...

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

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

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

Artos, или любой, кто может ответить:

Хотел ещё кое что уточнить по разбору нет-пакета, вот у тебя в разборе пакета оружия есть такое:

 

    if oPu then
        tT.updgrenade_mode      = oPu:r_u8() --/#+#
        tT.updcondition         = [b]oPu:r_u8()[/b]
                ...

 

Но в ACDC для ЧН:

use constant upd_properties_info => (
    { name => 'upd:condition',    type => '[b]q8[/b]' },        # 0xec
    { name => 'upd:weapon_flags',    type => 'u8' },        # 0x190 (0x1b0)
       ....
);

 

Под q8 я нашёл:

    function w_float_q8(number, number, number);
    function r_float_q8(number&, number, number);

 

На первый взгляд кажется логичным использовать их, ведь condition число как раз с плавающей запятой.

Но при замене на tT.updcondition = oPu:r_float_q8()

Биндер игрока виснет. Судя по lua_help туда надо передавать и принимать больше параметров (3 number)

Но я сам не могу разобраться.

 

Может это как то влияет на неправильный разбор upd-пакета?

 

 

За скрипт спасибо, проверю с ним, возможно это я что то напортачил.

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

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

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

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

*Shoker*, ты полез туда, где нужны уверенные знания, а не погадалки.

r_u8() - это метод чтения одного байта (как есть)

r_s8() - чтения одного байта с учетом знака (число со знаком)

r_float() - чтение 4-х байт (число с плавающей точкой)

 

q8,h8, ... типы значений однобайтового числа, а не указание на используемый метод чтения/записи.

 

*Shoker*: ведь condition число как раз с плавающей запятой

Уже ранее обращал твое внимание на недопустимость перемешивать все в кучу!

Параметр 'condition' для всех предметов читается как: tT.condition = oPs:r_float(). Чем тебе это не нравится или что смущает?

 

И ты так и не ответил, что же такое в твоем понимании однобайтовые(!) параметры 'upd:condition' и 'upd:grenade_mode' и каковы же значения для них ты ожидаешь?

 

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

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

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

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

> *Shoker*, ты полез туда, где нужны уверенные знания, а не погадалки.

Метод проб и ошибок никто не отменял :)

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

 

> Параметр 'condition' для всех предметов читается как: tT.condition = oPs:r_float(). Чем тебе это не нравится или что смущает?

Меня смущает наличие upd:condition, для чего он тогда нужен, и что обозначает?

Собственно говоря его я вывожу лишь для того чтобы проверить корректную работу разбора UPDATE_ пакета, и только потому-что оно шло первым-вторым в свойствах upd_пакета оружия, а не чтобы получить текущее состояние оружия. Но если этот параметр обозначает не состояние оружия, то тогда почему имеет такое название, и для чего нужен?

 

> И ты так и не отвтеил, что же в твоем пониманиее такое однобайтовые(!) параметры 'upd:condition' и 'upd:grenade_mode' и каковы же значения для них ты ожидаешь?

 

Названия этим параметрам придумывал не я, а те, кто разбирали нет-пакеты.

Ориентируясь по названиям, я ожидаю, что upd:grenade_mode вернёт мне что то, связанное с гранатомётом.

Но вместо этого он каждый раз при каждом save\load (как и upd:condition) возвращает разные числа, которые изменяются случайным образом лишь при следующей загрузке, а их значения не имеют никакого смысла . Тут уже я должен задать вопрос, что из этих параметров я могу получить полезное, что мне от них ожидать, и для чего они вообще существуют? Ибо пока у меня выходит лишь бессвязный набор случайных цифр.

 

PS: С новым скриптом ситуация аналогичная, разве что он теперь чаще просто нули возвращает в выводимых мною upd-параметрах. ^^^

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

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

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

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

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

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

Попытка считать иным методом или иное кол-во байт - ошибка. Попытка записать иным методом или иное кол-во байт - фатальный еррор.

Хочется пробовать - никто не возражает, но не пость о своих 'шишках' сообщения в топик. Ответ всегда будет един - не наступай на грабли! :crazy:

 

Конечно названия параметров о чем то говорят, но ... следует иметь ввиду что:

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

- наименования можно давать какие в голову взбредет. И ACDC и прочие читальщики/писальщики нет-пакетов оперируют ими же заданными наименованиями, которые никак не завязаны на движке или иных независимых ресурсах. Ведь и на входе и на выходе - голая послежовательность байт без каких-либо имен/названий.

- давать функционально значимое наименование - правило хорошего тона в программировании, но ... и нередко лень приводит к появлению 'bla_bla_bla' и сложно выразить одно-дву-сложно функционал. Нередко в наименовании фигурирует то, что имеет некое отношение, а не конкретное определение.

- и т.д.

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

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

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

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

            sm.mylog("ShotX = "..scnt)
            sm.mylog(ammo_name)

        sm.mylog(packet.updgrenade_mode) --      = oPu:r_u8() --/#+#
        sm.mylog(packet.updcondition) --         = oPu:r_u8()
        sm.mylog(packet.updweapon_flags) --      = oPu:r_u8()
        sm.mylog(packet.updammo_elapsed) --      = oPu:r_u16()
        sm.mylog(packet.updaddon_flags) --       = oPu:r_u8()
        sm.mylog(packet.updammo_type) --         = oPu:r_u8()
        sm.mylog(packet.updweapon_state) --      = oPu:r_u8()
        sm.mylog(packet.updweapon_zoom) --       = oPu:r_u8()
        sm.mylog(packet.updcurrent_fire_mode) -- = oPu:r_u8()
        sm.mylog("ENDS")

 

Результат:

! [LUA][ERROR] [07:10] ShotX = 1
! [LUA][ERROR] [07:10] ammo_5.56x45_ss190
! [LUA][ERROR] [07:10] 32
! [LUA][ERROR] [07:10] 116
! [LUA][ERROR] [07:10] 104
! [LUA][ERROR] [07:10] 29545
! [LUA][ERROR] [07:10] 32
! [LUA][ERROR] [07:10] 32
! [LUA][ERROR] [07:10] 115
! [LUA][ERROR] [07:10] 101
! [LUA][ERROR] [07:10] 116
! [LUA][ERROR] [07:10] ENDS

 

Бред же какой то...

 

 

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

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

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

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

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

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

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

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

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

Войти

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

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

×
×
  • Создать...