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

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

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


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

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

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

 

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

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

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


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

Руководствуясь информацией из сообщения №3989

  Artos писал(а):
Для актора нужно проверять параметр нет-пакета: torch_flags (что даст информацию и по активности ПНВ) и если нужно изменять (управлять вкл/выкл)

провел серию экспериментов и выяснил следующее.

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

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

boryan67, плз, используй для кодов спойлер...

 

Тонкостей у сего девайса ниеаких нет, а вот о тонкостях касаемых любого подобного действия многие забывают.

1. В игре имеются для (почти) каждого предмета, непися и т.п. имеется по сути два об'екта - серверный и клиентский. Эти два об'екта синхронизируются между собою (обмениваются информацией) ... в каких-то ситуациях автоматически (движком), в каких-то требуется ручная синхронизация. Операции с нет-пакетами доступны только для серверных об'ектов!

2. Ты видишь/используешь у актора клиентский об'ект фонарика именно он как бы "освещает" в игре, но(!) в своей функции ты управляешь (меняешь параметры) серверному об'екту этого предмета и игрв/движек ни коим образом не знает о том, что ты что-то поменял и нужно в(ы)ключить ...

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

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

А вообще, выключить фонарик/ПНВ таким образом вполне не сложно, а вот включить ... тут как то не пробовал (за ненадобностью).

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

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

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

Доброго времени суток.

 

Есть ли способ у убитого сталкера обратно включить фонарик ?

Специально убрал удаление фонарика у сталкеров -- в трупе вижу "очки".

Добавил код в хвост функции death_manager.on_death

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

sapsan, и не сработает, т.к. схема sr_light дефолтно обрабатывается всегда и для всех неписей (и трупов тоже) и именно у трупов всегда фонарик гасится, даже если ты его "ручками" пытаешься включать.

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

 

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

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

что делать со скриптом фриплея если во время него я немогу попасть на базу долга (якобы я не имею пока права попасть к Ворониниу)?? cit_fail_first_task ---- может эта инфопорция мешает??? Кто может помочь напишите пожалуйста в ЛС.

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

Анимация запрещена.

Ссылка на комментарий
  Artos писал(а):
sapsan, и не сработает, т.к. схема sr_light дефолтно обрабатывается всегда и для всех неписей (и трупов тоже) и именно у трупов всегда фонарик гасится, даже если ты его "ручками" пытаешься включать.

В схему влез, у трупа фонарик не тушится и схема не дёргается. В xr_motivator:death_callback вызов схемы убрал. Похоже, что у трупов все аттачи "отваливаются" и не работают.

Ссылка на комментарий
sapsan, Skyloader делал так, что у мертвых НПС горели фонарики, а вот как он это сделал сказать не могу (вроде другой фонарик сделал). Лучше поинтересоваться у него.
Ссылка на комментарий

Рассмотрим содержимое net_packet'а, к-ое содержит информацию о cse_alife_item_weapon (в Зове Припяти):

  код (Показать)
Изменено пользователем Artos
Ссылка на комментарий
  Artos писал(а):
  Раскрывающийся текст (Показать)
Изменено пользователем Artos

Что-то кончается, что-то начинается...

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

IQDDD, во-первых, не нужно своими "экспериментальными" проверками голословно(!) опровергать то, что у всех остальных как раз так как указано в процитированном тобою куске кода из ACDC. Если у тебя не так - то или у тебя движек с ума сошел или ... твои проверки. ;-)

 

На а параметр scopes_sect указывает на возможные варианты устанавляваемых прицелов и зависит это от системы апгрейдов, т.е. будет установлено то, что соооответствует индексу апгрейда.

Т.о. хочешь узнать секцию - читай флаг и если он установлен - читай индекс апгрейда и высчитывай ...

 

 

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

Vano_Santuri, ты бы вопрос лучше формулировал, а не свои размышления "на тему" ...

  Цитата
Vano_Santuri: время в миллисекундах с начала игры, но с 64 битным счетчиком?
- бессмысленная фраза. Время - оно не со счетчиком, а всего лишь число. Если это число пполучается от счетчика, разрядность которого достаточна для отсчета требуемого периода времени, то полученное число будет верным, т.е. соответствовать прошедшему кол-ву запрашиваемых единиц времени. Ну а если исходный счетчик слишком мал по разрядам, то ты также получишь некое число, но которое может фальшивить на недостающие разряды.

Ну а по сути вопроса, то да, приведенными кодами ты будешь получать корректное число прошедшего времени с начала игры (точнее от даты из конфига).

Примечание: Через день-два будет доступен последний вариант SIMBION'a (ТЧ) в котором все критичное (в том числе и общие таймеры) переведено на 64-х разрядные таймеры и можно будет посмотреть самому ...

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

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

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

Artos, Спасибо. Понятно.

 

И маленький вопрос. Как определить текущую секцию работы НПС. И какую секцию имеет работа, когда НПС стоит возле аномалии и махает детектором(типо арт ищет) для ЗП.

 

Мне это нужно, чтоб вызывать новость о том, что НПС был там-то, искал долго и сказал мол видел такие арты и т.д.

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

 

Artos, Ясно. Ну в силу того, что я пока не понимаю как работает оффлайн_алайф система , прицепить я ее не смогу.

Ну тогда просто сделаю поиск случайного арта по локе - привяжу к нему случайного нпс, и место, где арт валяется...

 

Просто хочется реалистичности... Вернее того, чего еще никто не делал... О_о, а сделаю я два варианта...

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

Что-то кончается, что-то начинается...

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

Vano_Santuri, как определить текущую секцию работы НПС легко посмотреть в кодах игры: db.storage[idNPC].active_section

  Раскрывающийся текст (Показать)

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

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

Artos, насчёт флагов может я и напутал, хотя врят ли. Завтра ещё раз проверю.

Насчёт оптики вы не правы: спавнил в инвенатре все указанные выше секции, и любая подходила.

 

UPD: и с флагами у меня тоже всё правильно. Ставлю прицел на пушку: флаг становится 1. Добавляю глушитель - 5.

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

IQDDD, давай придерживаться темы топика а не заниматься погадалками!

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

Также, когда утверждаешь что кто-то не прав в чем-то, приводи аргументы по сути, а не "туфту" ... При чем тут подходит иль нет оптика для оружия и определение "какая установлена"? Если в конфиге прописана секция в параметре - то и новичку-конфигеру должно быть ясно что установить ее можно на оружие иль нет.

Могу пока только посоветовать проверить соответствие последнего байта в state-пакете оружия ('cse_alife_item_weapon__unk1') на соответствие порядковому номеру в строке "scopes_sect" - вполне возможно что это и есть твой искомый результат. (сам пока с ЗП не ковыряюсь ...)

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

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

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

Artos, Еще пару моментов по АМК- таймерам. В коде имеются такие вот вызовы

 local time = level.get_time_days()*60*24+level.get_time_hours()*60+level.get_time_minutes()  --time in game minutes

 

Меня терзают сомнения. Что данная функции работают тоже от game.time() , в следствии чего через 49 дней, они тоже не будут работать... ?

Если я сделаю так, это будет корректно?

 

--/ время в игровых минутах
function get_game_minutes()
    local gt = game.get_game_time() --/ game-time (ms)
    local gs = gt:diffSec(db.game_start_time) --/ game-time (sec)
    return math.floor(gs/60) --/> game-time (minutes)
end

local time = get_game_minutes()  --time in game minutes --!!!

Что-то кончается, что-то начинается...

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

Ты немного путаешь вещи. Проблема с game.time() в том, что в нём со временем скапливается очень большое число, на хранение которого просто не достаёт ресурсов.

 

Тут же тебе просто возвращаются текущие дни\часы\минуты.

Часы никогда не могут быть больше 23, минуты больше 59, а несколько миллионов игровых дней ты врятли когда либо отыграешь, чтобы у тебя всплыла такая ошибка. :D

 

___

 

И да, они точно не работают от game.time(), т.к game.time() считается фактическое время в игре (или он всё же зависет от alife-фактора? Просто забыл уже)

А дни\месяцы\минут можно перематывать как угодно, т.к что они не должны быть привязаны к game.time(), да и использовать его для этого как минимум не целесообразно.

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

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

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

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

Artos,

1.

  Получение инфо об аддонах (Показать)
Ссылка на комментарий

ТЧ v 1.0004

Вопрос по перемещению объектов от одного владельца к другому.

Как я понимаю, для этого есть ф-ция transfer_item ?

Пробую переместить калаш из инвентаря актора(ГГ) в инв. Волку:

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

А вообще говоря в аргументах должны быть клиентские объекты. То бишь obj_to = level.object_by_id(ser_obj_to.id)

Изменено пользователем IQDDD
Ссылка на комментарий
  Цитата
То бишь obj_to = level.object_by_id(ser_obj_to.id)

В таком варианте все заработало.

Если приходится использовать level.object_by_id, значит отправить предмет с помощью transfer_item объекту, находящемуся на неактивной локации, не получится ?

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

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

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

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

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

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

Войти

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

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

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