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

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


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

Garry_Galler,

в ЗП появилась функция перебора предметов в ящике

 

Gonarh,

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

Более продуктивный, но более сложный подход: регистрация каждого объекта в общей базе данных при создании/переходе в онлайн.

 

 

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

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

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

 

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

Gonarh, помнишь мы пересчитывали high(integer) downto 1 ?Было 1.7 секунды :)

А это гораааздо больше,нежели 65 тыщь.

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

Monnoroch,

Да ладно, здесь ведь не просто 65 тыс. пересчитать. Здесь же надо с каждым что-то _сделать_. А это вам не плюнуть и растереть. Интерпретация кода скриптовым парсером, да вызовы движка, где десяток символов скрипта - это кто-там-знает-сколько-на-самом-деле операций.

 

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

 

 

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

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

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

 

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

А как узнать скорость перемещения актора??

Сообщение от модератора n6260
Цитирую:

через actor_binder:update замеряю изменение позиции актора, и времени которое было потрачено на это

i-igroman.ru - Мой, принципиально новый сайт о компьютерных играх

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

malandrinus

1. А эту функцию из ЗП можно как то в ТЧ применить? (помню я как то переделал одну функцию из ЧН для телепортации эктора на заданную дистанцию в валидную позицию - все работало).

 

2. Линейный перебор согласен что зло, но в модах тем не менее используется часто - так как видимо все таки альтернатив для какого-нить конкретного случая нет.

 

3. для моего случая тоже есть закавыка - итемс чье местоположение в конкретном ящике мне нужно выявить в момент юзания этого ящика эктором, будет спавнится в тот или иной ящик при генерации хабара - спавн хабара у меня рандомный - (принцип спавна отличается от способа рандомной генерации хабара в модах) - у меня скрипт парсит список всех итемсов игры (сам список в отдельном конф. файле) и выдергивает случайную строку с именем итемса, то скока раза он будет читать список опять же задано рандомным лимитом цикла (это для кол-ва вещей)- к тому ж для каждого итемса в списке указана вероятность для спавна - которая опять же будет сравниваться с math.random()<prob then и при true спавнить.

 

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

Или делать как ты написал - писать все заспавненые итемсы в таблицу - уж потом ее проверять по секции и паренту с айди ящика.

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

Garry_Galler, линейный перебор - не такое уж зло есть во время сделать break - то етсть не перебирать все 65 тыщ.

В модах обычно так дела и обстоят - ищется конкретный обьект.

Ссылка на комментарий
через actor_binder:update замеряю изменение позиции актора, и времени которое было потрачено на это

замерял я уже изменение позиции - это дает резкие скачки значений(( - это я описывал выше - когда идешь значения 2-7, когда бежишь 3-15 - ну никак нормально не определить, что актор бежит

 

Сообщение от модератора n6260
Ну тогда не знаю... Кнопку бега отследить удастся вряд ли... А если по падению "выносливости"?

i-igroman.ru - Мой, принципиально новый сайт о компьютерных играх

Ссылка на комментарий
1. А эту функцию из ЗП можно как то в ТЧ применить?
Нельзя. Это часть API движка.

2. Линейный перебор согласен что зло, но в модах тем не менее используется часто - так как видимо все таки альтернатив для какого-нить конкретного случая нет.
Да не то чтобы альтернатив нет. Просто такой подход начинают использовать сразу, как только учатся писать простейшие циклы. Это всего-лишь самый простой подход. Но далеко не самый лучший.

поэтому чтобы отследить этот конкретный итемс - (куда он заспавнился) - если не делать линейный перебор - придется как то ловить его по секции в момент спавна и сразу же писать его парент в табличку. А уж потом итерировать уже эту табличку сравнивая айди ящика с записанными парентами этого итемса, что конечно уже игру тормозить не будет....Только не знаю получится ли так...
Почему не получится? В биндере каждого предмета по переходу в онлайн/оффлайн аккуратно регистрировать предмет в базе данных. Сразу сортировать объекты на неписей, монстров, предметы и т.д.

Вообще-то что-то такое там и так сделано, ещё в оригинальной игре (таблица db), может стоит разобраться...

 

линейный перебор - не такое уж зло есть во время сделать break - то етсть не перебирать все 65 тыщ.

В модах обычно так дела и обстоят - ищется конкретный обьект.

В среднем это уменьшает время поиска всего-лишь в два раза. Хрен редьки не слаще =)

 

замерял я уже изменение позиции - это дает резкие скачки значений(( - это я описывал выше - когда идешь значения 2-7, когда бежишь 3-15 - ну никак нормально не определить, что актор бежит
Ты прочитал мой ответ в теме "справочник"?

Тебе для каких целей надо определять состояние бега? Что можно, что нельзя сильно зависит от целей применения.

 

 

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

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

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

 

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

Люди! Хочу спросить-может кто знает сколько должы весить распакованные архивы игры:db0-dbb? Можно даже скрин со свойствами папки с распакованными архивами.Пожалуйста!

BfioH.png

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

И опять тупой вопрос-я распаковал все архивы игры в отдельную папку и указываю путь к этой папке в LTX-editor-е.Но он говорит что не хватает некоторых файлов но они есть.По сравнению со скриномGonarh, у меня нет двух файлов...Что это может быть? Винда 64.

BfioH.png

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

Vita sine libertate, nihil

Vita sine litteris - mors est

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

RvP, возможно...

...Gonarh, у тебя работает ltx editor? Можешь проверить?

Уже два анпакера перепробывал,не помогает..

Ещё вопрос-к какой именно папке нужно указывать путь? К папке конфиг или вообще к общей папке (с полностью распакованным сталкером.)

Изменено пользователем C2D
BfioH.png

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

работает, у мну распаковано в x:\gamedata, указывал просто x:\

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

Gonarh, вот-http://www.playground.ru/files/9500/

Всё работает? Блин надо было геймдату создавать..(вот осёл!).Спасибо большое за помощь!

Изменено пользователем C2D
BfioH.png

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

malandrinus

насчет функции из ЗП - жаль конечно, ну да ладно - я уже обошелся и без нее.

А таблицу storage я уже и так разобрал по кусочкам и могу и нее выдернуть усе что угодно.

(кому надо могу скрипт "досье на всех NPC" выложить)

мои сомнения насчет возможности отследить место спавна нужного итемса были так сказать он недостатка самоуверенности :ny_z_4: -

это я уже сделал. И без линейного цикла. За советы - спасибо.

 

А теперь о главном: можно ли добавлять в ПДА инфу не из заранее написанного строкового массива, а непосредственно из результата игровой ситауции? Вот допустим месссидж у меня выводится с определенной инфой полученной из скриптовой обработки ситуации -можно ли ее в ПДА тут же перекинуть? (так сказать из кратковременной памяти в долговременную - чтобы не забылась)

 

Ссылка на комментарий
Вот допустим месссидж у меня выводится с определенной инфой полученной из скриптовой обработки ситуации -можно ли ее в ПДА тут же перекинуть?

Имхо никак, есть только предопределённые дефайны типа $$ACTION_USE$$, все остальное берется из заранее созданных ХМЛ

Изменено пользователем Gonarh
118 101 110 105 44 32 118 105 100 105 44 32 118 105 99 105
Ссылка на комментарий
...можно ли вообще избавиться ситуаций от спавна объектов за пределами карты?...

 

Garry_Galler

 

С наступившим!

 

Насколько я понял, задача состоит в спавне объекта на случайных координатах, желательно еще и не за пределами карты. Для этого берется случайный левел вертекс из заданного диапазона для нужного уровня, по нему берутся координаты и спавнится. Побочный эффект - спавн черт знает где, на Баре и ДТ это особенно вероятно (я так понимаю, из-за того, что эти две локи когда-то была одним целым, а потом разделены, АИ-сетка там очень хитрая и глючная). Все правильно?

 

Я с подобным сталкивался, и обошел этот момент через проверку координат спавна. Практически на любой карте можно наметить прямоугольник (по координатам X и Z), в пределах которого может перемещаться актор и, стало быть, спавн разрешен. Края карты, конечно, неровные, но в большинстве случаев неровности сформируются наличием/отсутствием АИ-сетки, прямоугольник нужен для того, чтобы обрезать те точки АИ-сетки, которые используются НПС для переходов между локами и такие глюки, как на Баре/ДТ

 

В результате, алгоритм выбора точки спавна будет примерно таким:

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

Определить координаты выбранного левел вертекса.

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

_выбираем левел вертекс заново

иначе

_спавн по выбранным координатам

 

Плюс, еще один момент, на Баре не забыть про то, что объект при таком спавне может забросить на Арену, что врядли нужно. Арена находится под картой и хорошо отсекается по координате Y.

Мои работы:

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

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

Soul Cube

 

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

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

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

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

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

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

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

Войти

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

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

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