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

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

Тема для обсуждения скриптов всего и всех в серии игр STALKER.


Задавая вопрос (!):
1. Внимательно изучите суть вопроса. Вопрос должен соответствовать выбранной Вами темы. Это поможет сохранить порядок и читабельность темы, а также облегчит поиск и понимание сего;
2. Изучите то, что уже есть в теме (пролистайте "руками", воспользуйтесь поиском на форуме);
3. Изучите информацию которая может вам помочь:

  Информация (Показать)

4. Дабы не превращать обсуждение в "кашу" разной информативной направленности, задавайте несколько вопросов по порядку (в разных постах) после того, как получите ответ на предыдущий вопрос;
5. "Спасибо" и тому подобное - будьте так любезны в ПМ. Если не любите писать в ПМ, в конце вопроса напишите фразу: "Заранее спасибо!" - или что-то в этом духе;
6. ПОЖАЛУЙСТА! Указывайте, для какой игры Вам необходима информация (ТЧ, ЧН, ЗП), если стоит мод - укажите название мода;
7. Если Вы что-то сделали и результат не такой, какой Вами задумывался, то, пожалуйста, приводите коды которые Вы изменяли/писали целиком! Это поможет другим правильно ответить на Ваш вопрос, а также оградит Вас от лишней писанины.
8. Оформляйте сообщение. Пользуйтесь тегами для того, чтобы отделить код от текста. Пишите грамотно - ПОЛЬЗУЙТЕСЬ ЗНАКАМИ ПРЕПИНАНИЯ.
9. И помните: «Правильно заданный вопрос – половина ответа».

 

Какие вопросы следует задавать, а какие нет...

  Читать рекомендуется. (Показать)

И последнее: очень рекомендовано к прочтению Правила форума
 


  • Спасибо 1
  • Полезно 2
Ссылка на комментарий

А в чем смысл такого способа записи в нет-пакет с помощью UPDATE_Write ? Просто, сколько читаю разделы форума, ни разу не попадался такой вариант заполнения нет-пакета данными. Объясните плиз.

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

AndreySol, в ЗП позиция записи при создании пакета не обязательно автоматически установится в ноль. Поэтому приходится устанавливать ее вручную. Или тебя смущает применение метода update_write?

Изменено пользователем KD87
Ссылка на комментарий

AndreySol, хм, и где ты увидел нечто такое, чего не встречал ранее? Ни разу не видел, что перед записью параметров объекта нет-пакету прописывается "писать от начала"? Прям почти как в басне: "Слона то я и не приметил"

В самой оригинальной игре и в 90% модов вообще нет записи/чтения UPDATE_Write/Read - поэтому тебя бы спросить на кой тебе он сдался и чего ты к нему прилип? ;-)

 

KD87, (уточно и дополню) не только в ЗП, но и в ЧН нет-пакеты далеко не всегда объявляются с началом от 0-го ... Да еще и в ТЧ вскорости предстоит нам такое же наблюдать, так что пора привыкать как "правильно", а не как легче.

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

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

Ссылка на комментарий
  Цитата
в ЗП позиция записи при создании пакета не обязательно автоматически установится в ноль. Поэтому приходится устанавливать ее вручную. Или тебя смущает применение метода update_write?

Ах вон оно что ! Такой финт - просто способ подстраховаться на случай неверной установки позиции самим движком. А я уж подумал что он имеет какой-то сакральный смысл, который я никак понять не могу из пояснений Artos'а.

 

Заготовка, предложенная Artos'ом - не полностью рабочая. При переключении на подствол, таблица не заполняется и все поля nil. Оказалось, из-за того что, num_items равно 1. Получилось, что это и есть флаг вкл\выкл подствола. Поменял считывание параметров местами - все заработало как надо.

  • Не нравится 1
Ссылка на комментарий

AndreySol, твоя слепота и глухота удивляют ... Для кого было написано это:

  Цитата
1. При получении чистого нет-пакета ( pk = net_packet() ) важно(!) точно знать где установлена позиция записи ( pk:w_tell() ), т.к. последующая запись параметров объекта (в данном случае оружия) будет записываться именно с этим смещением. Если для чистого ТЧ это значеник как правило равно 0, то для ЧН/ЗП они нередко совершенно иные. Да и ... для ТЧ ничто не гарантирует, что будет записываться именно с нулевой позиции.

Т.о. нормальный программер/модмейкер сам установит позицию чтения (например pk:begin(0) ) и будет считывать именно от установленной позиции (в примере это будет +2 => pk:r_seek(2) ), а не полагаться на удачу ...

или ты отсюда только pk:begin(0) удосужился скопипастить, не утруждая чтением сути?

 

И неужели не доходит даже русским языком прописанное в комменте заготовки:

  Цитата
--/ читать пакет нужно более продвинутым способом!
? и, пытаясь в очередной раз "поменять считывание параметров" :dash2: ты получаешь видимость результата, а не сам результат.

 

На этом заканчиваем! Учитывая, что пока кураторские опции недоступны - буду просто минусовать подобные посты (может это заставит вначале читать и думать), а почищу позже ...

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

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

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

Нашел в оригинальном ТЧ вот ткаую функцию, когда на блокпосте Долга в баре у главного спрашиваешь о местных достопримечательностях:

  Функция (Показать)
Ссылка на комментарий

Magnus1,

Во-первых, никто не знает о "твоих целях", поэтому про как использовать можно писать трактаты.

Во-вторых, при чем тут тэги <action>? function locate_bar_bar(actor,npc) - обычная в общем то функция и использовать ее можно откуда угодно, хоть из диалогов, хоть напрямую из скриптов. Условие же тоже обычное: раз функция ждет аргументы - то ты и обязан их дать.

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

Замечу, что функция работатет ТОЛЬКО для НПС, имеющего стори-ид 570, и если захотелось для своих целей использовать нечто иное - потребуется сдублировать функцию, проставив в нее свой story_id, или же видоизменить ее и задавать нужный аргументом на входе.

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

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

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

AndreySol, да никакой это не флаг подствола. Когда num_items не нулевой, перед куском пакета cse_alife_item_weapon есть еще апдейт-параметры cse_alife_inventory_item. Верно тебе Artos говорит - читаешь не правильно и не хочешь разбираться. Смотри код acdc, там все это есть. Или пользуйся готовыми модулями разбора нет-пакета.

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

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

 

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

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

Magnus1, вообще эта функция ставит метку НЕ на карту/участок, а на НПС с заданным сидом (story_id).

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

Например такой:

  код (Показать)
Изменено пользователем Artos

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

Ссылка на комментарий
  Цитата
да никакой это не флаг подствола. Когда num_items не нулевой, перед куском пакета cse_alife_item_weapon есть еще апдейт-параметры cse_alife_inventory_item.

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

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

AndreySol, структура пакета меняется в данном случае в зависимости от upd:num_items. Какие действия в игре меняют этот параметр объекта - сказать не могу.

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

Вынужден признать, что опять наступил на грабли, в которые почти год назад наступали в топике по Lua. Разработчики игры (GSC) именно для оружия с подствольниками учудили оружейный параметр вставить в самое начало, а не пристыковать к "оружейной секции". Т.о. именно его нужно считывать первым, а уже за ним остальное. Это единственное исключение из правил, когда секция параметров разорвана.

Правленый пример выглядит так:

  код (Показать)
Изменено пользователем Artos
  • Спасибо 1

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

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

Свет в конце туннеля начинает усиливаться :ny_ph34r_1:

Еще несколько вопросов по нет-пекетам и не только:

 

  Показать

 

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

AndreySol, можно, почему же нельзя. C секцией M_SPAWN можно работать с помощью STATE_Read/STATE_Write, с M_UPDATE - UPDATE_Read/UPDATE_Write.

Барахло в ящике может переходить в оффлайн только с ящиком. А ящики в сталкере (в модах, точнее) не переключаются в оффлайн (из-за acdc). В свое время bardak боролся с тормозами при переводе в онлайн ящиков с барахлом путем модифицирования object_flags этих ящиков при перепаковке спавна. С тех пор во всех версиях acdc это модифицирование и осталось.

Изменено пользователем KD87
Ссылка на комментарий

Отвечу иначе чем KD87:

И добавить НЕЛЬЗЯ, т.к. метод se_weapon_magazined:STATE_Write(packet) изначально существует (унаследован) конструктором класса, а значит можно только ЗАМЕНИТЬ на свой.

И читать с помощью вытащенного наружу метода можно, но ... осторожно. ;-)

Вот тут то как раз "экскременты" чреваты и вылетами и битыми сэйвами. По сути придется не просто читать, а читать так, чтобы не запортить исходный пакет с данными ... восстанавливая позиции чтения/записи в исходные.

Да и, еще немало удивлялок ждет "читателя", обнаружив что время (не)читать тоже нужно как-то определять. ;-)

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

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

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

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

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

Всем привет! Подскажите, пожалуйста, можно ли как то отследить открытие инвентаря мёртвого npc главным героем? ЗП

  Реклама модов (Показать)
Ссылка на комментарий

serega-gamer, вопрос для топиков по ковырянию, куда и следует его адресовать.

Отследить можно:

- при обыске тела срабатывает коллбэк 'use_callback' и соответственно работает схема "use" (xr_use.script);

- при открытии окна при обыске тела выдается инфопоршень "ui_car_body", а при его закрытии - "ui_car_body_hide".

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

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

Artos В ЗП эти поршни не работают, их даже нет в xrGame.dll и так же нету скрипта xr_use :( . Извеняюсь что не туда написал.

  Реклама модов (Показать)
Ссылка на комментарий

Artos, (по первому) а как тогда в симбионе работают подобного рода проверки?(н-р isGrenade)

 

Просто как ты говоришь - я так и делал,

Но работает не так как мне надо.

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

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

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

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

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

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

Войти

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

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

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