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

Рефакторинг


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

@abramcumner, ну например я использую коды 12 симбиона весьма активно, я плохо понимаю в программировании, но как-то складывается со временем так, что улавливаю ход мыслей Artos'a и уже дергаю эту оптимизацию/систему/модуль себе (ну и дописываю/переписываю по мере надобности). И на счет ЛА, там отчетливо штрихи Artos'a видны, тем более он сам по поводу этого высказывался, так что я бы о ЛА не говорил.

 

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

 

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

 

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

Делать это еще раз - сизифов труд.

В точку сказано, у меня в свое время был выбор чьими кодами пользоваться, Artos'a или malandrinus'a; выбрал первое, так как и функционал пошире, и позаковырестее все написано :) Самому это все делать конечно можно, но долго, да и зачем? Когда уже все есть давно...

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

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


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

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

 

У меня и в ивентах все перед глазами, я не знаю чем тебе они не понравились.

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


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

Объясните мне пожалуйста вот эту шайтан-конструкцию, а то я никак прикола не пойму:

--' Сохраняем уровень сложности
if save_treasure_manager == true then
packet:w_u8(level.get_game_difficulty() + 128)
else
packet:w_u8(level.get_game_difficulty())
end
--' Загружаем уровень сложности
local game_difficulty = reader:r_u8()


local load_treasure_manager = false      
if game_difficulty >= 128 then           
game_difficulty = game_difficulty - 128
load_treasure_manager = true           
end 

Собственно спрашивается, а нафига 128 прибавлять/вычитать, когда можно просто уровень хранить? Или тут какой-то подвох, которого я не разглядел?

 

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


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

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

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


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

И снова я, теперь вопрос по тайникам:

function CTreasure:save(p)
--' Сохраняем размер таблицы
local size = 0
for k,v in pairs(self.treasure_info) do
size = size + 1
end
p:w_u16(size)
...
end

Нафига такие телодвижения? Нельзя разве просто p:w_u16(#self.treasure_info) написать?

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


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

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

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


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

Вопрос к знатокам, а есть какой-то глубинный смысл в том, что разрабы юзали только 100 типов моделей визуалов людей?

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


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

Следующий вопрос, а вообще как-то где-то удивительный postprocess.PostProcess(ini_file(name_ini_file)) задействован? Я вот лично не видел что-бы им кто-то когда-то пользовался. Да и вообще слабо уловил смысл скрипта. А то там какие-то супер параметры передаются. Как я понял корнями уходит в CEffectorPP, ну мне это понять пока не под силу.

 

В ЗП, к слову, успешно выпилен. Ничего фатального не будет если и в ТЧ его зарубить? Ну он правда нигде вообще не используется.

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

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


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

Просьба ко всем сюда заглядывающим, как по вашему мнению лучше всего переписать безобразие с level_tasks.script(?), там задумка то вроде и хорошая, но реализация просто насквозь пробагованная. Я всегда опасался этой системы, а сейчас решил заняться и так вжало меня от всех свистоплясок кои там имеют место быть.

 

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

 

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

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

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


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

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

   val_secret_0029 = 
     {
      items = "af_mincer_meat,energy_drink,bandage,3",
      condlist = "{=npc_rank(experienced)}2",
      description = "val_secret_0029_description",
      active = false,
      target = 5429,
      done = false,
      name = "val_secret_0029_name",
     },

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

То есть кондлист вышеуказанной таблицы в распарсенном виде выглядит вот так:

      condlist = 
        {
          1 = 
            {
              infop_check = 
                {
                  1 = 
                    {
                      expected = true,
                      func = "npc_rank",
                      params = 
                        {
                          1 = "experienced",
                        },
                    },
                },
              infop_set = 
                {
                },
              section = "2",
            },
        },

Вариант очень так себе. И вот стоит вопрос как его оформить, либо оставить как есть и парсить как есть (так скорее всего и будет). Интересно было бы услышать мнения всяких тех кто со спавном (тайников в т.ч.) работает и все такое. Стоит что-то вообще менять, или нет?

 

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

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

 

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


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

, дело не в выигрыше времени, дело в субъективной стилистике :). Я думаю оставить все как есть, то есть первый вариант, ну и еще несколько несколько ключей добавить.

 

Что думаешь о идее тайников ЗП?

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


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

@Полтергейст, если говорить о исходниках, то там есть нормальное хранилище данных, и сейвы забивать/не забивать становится вопросом скорости загрузки (он немаловажен). Экспортировать ничего не нужно, можно оставить как есть, можно сделать ивент (нужно только событие), а там все в хранилище забивать без пакета актора. Вот и все "как следует". active и done можно записывать с помощью побитовых операций, они ничего не жрут абсолютно, я выкладывал когда-то здесь примеры, не вижу смысла как-то урезать функционал ради каких-то сомнительных экономий.

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


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

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

Они и не хранятся. Зачем хранить константы?

 

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

Предварительно они все равно будут в олл спавне (так быстрее и рациональнее). Но мне этот вариант не нравится. Всякие обломки труб тоже предлагаешь спавнить по условию?

 

@HESH, что должно по твоему к этому привести?

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


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

 

 

Какое отношение обломки труб имеют к тайникам ?

Прямое (см. спавн). А я снова напомню об объемах.

 

 

 

Постоянный скан и апдейт - жрут.

Ты точно о тайниках?

 

Сейчас пишу одну систему хранения объектов (не на пакетах), и вот там если действовать агрессивно, то можно целиком все упаковывать без всяких компрессий и ограничений (ну тут в пределах разумного разумеется). То есть если действовать агрессивно, то self.treasure_info можно будет упаковывать целиком, вопрос скорости, что будет быстрее - загрузка таблицы, или текущие циклы.

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


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

 

 

При заходе на локу спавнишь рестриктор. При заходе в рестр спавнишь тайник и удаляешь рестр.

А при уходе с локи удаляешь рестриктор?;)

 

И имеешь куча объектов + рестриктор. Какие таблицы и данные в памяти? Два булева и одно u16, остальное константы. Вообще не понимаю о чем разговор. Если делать полное сохранение, то да, еще добавится одна строка, это если с компрессией, без нее четыре, но "итемы" надо делать по аналогии с боксами, только с исключениями (именные, квестовые и прочая фигня).

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


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

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

А если я в него на зашел? Или такой вариант не принимается? ;)

 

А я что-то видел выше про тайнички в олл_спавне. Это нормально, там тыщу тайничков держать?

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

 

Денис, давай за оригинал, ага.

 

 

 

Проверять - выдан/не выдан - можно и банально по наличию объекта, ага.

Я откровенно не понимаю чем мешает одно u16 и два булева, которые упаковываются в один u8. Это еще соображения экономии, а не скорости. Лечить психиатром уже в принципе некого, те кто это сделали уже и так того.

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


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

Таки вне очереди накидал историю о бездонном хранилище безо всяких икебан. Скоро выкину.

 

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

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


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

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

 

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

  • Согласен 1

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


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

@Dennis_Chikin, смотреть то мне никто не мешает, только хочется без "кто там"(с).

 

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

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


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

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