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

Прозекторская


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

(изменено)

@Dennis_Chikin, в целом занятно, с актором через такое будет работать быстрее, нежели чем гонять таблица-строка-таблица. Я например se_stor никогда не пользовался, как-то без надобности порнуху хранить (но система проста и гениальна, круто))) Стандартный акторский пакет + система сохранения через побитовые операции в принципе за глаза (а если еще все сохранения переписать, то можно еще высвободить несколько сотен байт).

 

А что с class_registrator не так?

 

@Dennis_Chikin, ну если в таблице хранить не булево значение, то и нет смысла их в регистраторе строить. А так эти кривые таблицы в _g вроде уже давно все переписали, точнее кривые функции, таблиц там и подавно не было. У меня константотаблиц побольше. По класс регистратору, так там же не сложно глянуть что зачем, если подключаешь на свой мод разумеется.

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

Поделиться этим сообщением


Ссылка на сообщение

 

 

on_info3 = {=now_weather(groza:rain)} walker@agro_stalk_post_71

Жесткий у тебя подход :) 

 

@Desertir, а разве ее мало?


Очередной вброс от меня, немного переписал сохранение тайников:

 

 

--// сохранение
function CTreasure:save(p)
	local size, n = {}, 0
	for k,v in pairs(self.treasure_info) do
		local flag = 0
		if v.active then flag = bit_or(flag,1) end --// 1
		if v.done   then flag = bit_or(flag,2) end --// 2 or 3
		if flag ~= 0 then
			size[v.target] = flag
			n = n+1
		end
	end
	p:w_u16(n)
	for target,flag in pairs(size) do
		p:w_u16(target)
		p:w_u8(flag)
	end
end
--// загрузка
function CTreasure:load(p)
	local n = p:r_u16()
	for i=1,n do
		local target = p:r_u16() 
		local flag   = p:r_u8() 
		local k = self.treasure_by_target[target] 
		if self.treasure_info[k] then
			self.treasure_info[k].active = bit_and(flag,1) ~= 0 
			self.treasure_info[k].done   = bit_and(flag,2) ~= 0 
		end
	end
end

 

 

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

Поделиться этим сообщением


Ссылка на сообщение

@Dennis_Chikin, ну вариантов много, можно взяться и рефакторить оригинал, т.е. отрубить отовсюду все портянки и написать один скрипт с большим массивом, где будут координаты, модели и т.д. и т.п., но это статика от которой мы стараемся убежать, так как в сталкер все же хочется поиграть за одну НИ подольше, чем пара-тройка игровых дней. Я же предлагаю писать какой-то объединенный (с ЗПшной идеей) "менеджер", где не будет никаких конфигов и олспавнов, а будет несколько небольших массивов и все. Задача на сегодняшний день тривиальная, стоит действительно лишь определится насколько глубоко стоит в это лезть, и с какой стороны заходить, так же стоит определится добавлять что-то свое, или писать такой более менее динамичный аналог оригинала (рандомное наполнение, рандомные координаты, рандомные визуалы) с последующим навешиванием (уже своего) чего угодно (маячки/замки/растяжки...). В целом немного муторно (с формулами корректировки позиции спавна), но совсем не сложно (на первый взгляд опять же). Это будет действительно функциональней, там хочешь сделаешь тот же оригинал, выставишь лимит тайников на 200 штук, на каждый зарегаешь стори айди и работай в последующим с ними абсолютно так же как в оригинальном менеджере, потом хлоп - все вычистил, и по новой... Ну а воровство тайников (и из тайников) прикрутить-то дело не хитрое :)

Поделиться этим сообщением


Ссылка на сообщение

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

Поделиться этим сообщением


Ссылка на сообщение
(изменено)

Эээ, а приколоть можете где strelok_pda_have пользуется?

 

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

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

Поделиться этим сообщением


Ссылка на сообщение

В общем где-то мы тут обсуждали собственно что за чем считывается (ТЧ), по архивам, чтобы в ковырялках не затерялось запостю запощу  :facepalm: напишу тут.

 

1. .db* по алфавиту

2. gamedata

3. .xdb* по алфавиту

 

Да, я понимаю что я на русском форуме, но может кому будет надо.

  • Полезно 3

Поделиться этим сообщением


Ссылка на сообщение

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

 

ce_switcher.script

se_switcher.script

trigger.ltx

 

Можно выпиливать, тесты ничего фатального не выявили. В любом случае если оно как-то где-то и надо, то сами видите где это есть ;).

Поделиться этим сообщением


Ссылка на сообщение

Итак, пачка вопросов от меня снова:

 

1. Что есмь fx_sound.script ? Они нигде не применяется, я так понимаю это какая-то обертка чтобы отыгрывать звуки где хочется? Но функционал уже итак нормальный заряжен. В общем я собираюсь выпиливать, ваше какое мнение?

 

2. dream.script, sr_sleep.script, хвосты есть в all.spawn, но полностью мертвые, то есть их оттуда надо выкидывать 100%. Сон надо делать совершенно по другому, так что это я тоже выпиливаю.

 

Сейчас, к слову, у меня вся игра на 168 скриптах работает, против 441 (если не путаю) в оригинале.

Поделиться этим сообщением


Ссылка на сообщение
(изменено)
"sr_" - логика рестриктора. Сюжетный сон со сновидениями. Зачем его выпиливать? Может его кто использует? И кстати как ты его по-другому сделаешь: основа всего в сталкере.

Спасибо, что sr - space restrictor это я еще в юности понял. Лол, с чего вдруг это сюжетный сон? Эта логика к сюжетным снам отношения никакого не имеет, смотри соотв. скрипты. Основа, прости, что и чего? По другому я его сделаю как в ЗП например, сорсы же ;).

 

 

 

Что есть "выпиливание"? Все "выпиленные скрипты все равно остаются в db. А использовались в оригинале также далеко не все.

Есть то, что и db перепакованы. Так что я знаю о чем говорю ;).

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

Поделиться этим сообщением


Ссылка на сообщение

Сап, русский форум! :)

 

Утром было делать нечего, и вспомнил я что меня часто атаковали в ЛС сделать чтобы БТР стрелял не только в актора или сид, но и в группировки и монстров, ну я решил пойти на встречу трудящимся и написал грязный хак от которого меня самого воротит, но до переделки этой схемы мне как до китая в известной позе, поэтому пока пусть будет так, ожидайте когда я доберусь до этой схемы и сделаю ее нормально. 
 
Пойдет на любую версию игры и любой мод где не менялся ph_car.script.
Например:

[ph_car@1]
; ...
target = dolg

[ph_car@2]
;...
target = pseudodog

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

 

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

 

Используйте как хотите.

Скачать ph_car.script


Еще в качестве ознакомления (так как он работает только у меня) выкладываю обезжиренный _g.script. Версия еще не финальная, но тем не менее на нее уже можно смотреть без отвращения.

Могу ответить на все интересующие вопросы. Скажу что где-то ~60% кода улетела в помойку, она для релизной версии, да даже для дебага, просто не нужна на мой взгляд. Все функции стараюсь расписывать понятно, по возможности и подробно.

 

Используйте как хотите.

Скачать _g.script

  • Полезно 2

Поделиться этим сообщением


Ссылка на сообщение

@_Val_, да, ты прав, пока так. Сделано только для тех у кого прям горит и кто прям сам не может, как доберусь сделаю по нормальному, завешаю все это всем известными parse_condlist, parse_infop и т.д.

Поделиться этим сообщением


Ссылка на сообщение

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

 

А вот вопросы и пожелания по _g категорически приветствуются. Кстати я его обновил.

  • Не нравится 2

Поделиться этим сообщением


Ссылка на сообщение

@_Val_, хорошо, я, специально для тебя, сделаю в этой схеме сразу два варианта, и с указанием "по кому стрелять", и с указанием "по кому не стрелять", ну на самом деле там много чего можно написать, но поскольку это заранее сделано позавчера, можешь рассказать общественности уже о всех потенциальных приятных сюрпризах.

 

 

 

Я вот не понял одной вещи. Там используется actor, в место db.actor, но где он объявлён - не нашёл. И был вылет по ammo_section.

 

 

в качестве ознакомления (так как он работает только у меня)

 

Актор у меня объявлен в ините биндера, db.actor потихоньку искореняется с концами, как и db.actor:id(), как ты можешь заметить по тому же _g.

 

Кстати опять _g обновил, уже совсем близко к финалу.

  • Спасибо 1

Поделиться этим сообщением


Ссылка на сообщение
(изменено)

По кому должен стрелять бэтр? Я думаю - по всем враждебным целям... Вопрос - какой список длиннее? Враждебных или дружественных целей?

Тут мне видится поставить просто "target = enemy, {cond} %=excludes(exclude1:exclude2:...)% enemy, ..." в логике, ну и "community = твоя группировка", а схема будет сама соображать кто для этой группировки сейчас враг, ну и пулять в него. Исключения (excludes в моем примере) нужны как-раз для нештатных ситуаций вроде квестов, от этого и плясать, как думаешь?

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

Поделиться этим сообщением


Ссылка на сообщение
(изменено)

@_Val_, мой вариант компактнее, если на пальцах, то:

community = monolit
target = {+info -info2} %=excludes(dolg:pseudodog)% enemy, {-info +info3} %=excludes(freedom:poltergeist:3)% enemy, enemy

В смысле ты дофига сказал?

 

Если я сейчас ничего не напутаю, то вот так будет выглядеть функция:

function excludes(_,_,p)
excludes = {}
for i=1,#p do table.insert(excludes, p[i]) end
end
Изменено пользователем Карлан

Поделиться этим сообщением


Ссылка на сообщение

@abramcumner, ну вот я это и предложил в своем посте, в примере видно группу и сид. Если раскручивать, то можно дойти вплоть до точечного указания зоны обстрела (например вражеский конкретный гулаг), ну и кучу всего другого, не мне это вам рассказывать. Камрад @_Val_ видимо не понял моей мысли, советую ему еще раз перечитать.

Поделиться этим сообщением


Ссылка на сообщение

Такая проблема состряпать скрипт для обоих случаев?

 

Проблем никаких, только зачем они нужны? Смотри мой вариант, там можно указать и enemy, и monster, и human, и btr_enemy, и heli_enemy. Никаких проблем. Можно сделать на уровне логики, можно сделать на уровне функции, можно сделать на уровне схемы, кому как угодно. Все зависит от целей и личных предпочтений в оформлении, за все что угодно это надо взывать только к тем кто пилит какие-то платформы и иже с ними, те кто делают под свои нужды я думаю в таких советах не нуждаются. В копирайт не смог, он меня сломал.

Поделиться этим сообщением


Ссылка на сообщение

@Desertir, так вроде про проблемы и слова не сказали, просто обсуждаем как будет лучше. Я в принципе уже наметил план действий, но по плану до этой схемы мне еще долговасто.

 

@Forser, ты тоже мой пост пропустил? Таки там можно не только enemy писать, но и группировки в отдельности, тоже никаких проблем, две схемы ради этого - нонсенс. Ты пишешь шаблонный кондлист, это все парсится в удобный массив, если он для тебя не удобный, пишешь свой синтаксис и свой парсер, делаешь как нужно, настраиваешь как нужно, далее уже пишешь поведение, но это уже степ два.

 

А для отстрела кого попало лучше сразу под скрипт брать без всякой логики, ставить ему флажки и запускать кататься по локации в поиске всего дурно выглядящего. Записывать его в группировку по game_relations, парсим отношения и имеем профит :).

Поделиться этим сообщением


Ссылка на сообщение

@Dennis_Chikin, эти аммо убрать без момента "каждый раз крестится при вызове" нельзя. А quest убрать вполне получилось, именно так как я когда-то высказывался в ковырялке.

 

А тем временем я снова обновил.

  • Нравится 1

Поделиться этим сообщением


Ссылка на сообщение

Тимы/сквады/группы - dejure используются, defacto нет, они не доделаны и их можно "опустить", вылились они я уже писал во что, что это такое и как это должно было бы работать описывал и Artos несколько лет назад, и я несколько месяцев назад, и я уверен что еще много кто, я ничего расплывчатого в своих суждениях не увидел. Посмотреть как сделаны эти самые smart_terrain, xr_gulag, gulag_что-то_там и наконец xr_logic у меня получится уже не скоро. Переписывались они кстати говоря по порядку дерганья движком, что помогало прослеживать нити зависимостей в которых тоже много забавного. smart_terrain вполне примитивен, для меня он и в оригинале человекочитаем.

Поделиться этим сообщением


Ссылка на сообщение
  • Недавно просматривали   0 пользователей

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

AMK-Team.ru

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