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

Курилка программистов


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

Ну...

 

Жрет вызов функции. Факт.

Жрет выборка из таблицы в зависимости от размера таблицы.

2 выбора из таблицы жрут больше, чем 1 выбор из таблицы, даже довольно большой, но меньше, чем вызов функции.

 

Мораль: обратно ломать, чтоб все как было - ничего не будем.

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

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

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


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

Ломая совместимость чего ?

 

И мне казалось, что profile_timer() выдает результаты в микросекундах.

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

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


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

"Выпиливать" иногда приходится элементарно для того, чтобы разобраться, как оно вообще работает. Многое выглядит, как прогнанное через обфускатор (а может быть и не "как").

 

Плюс начинаешь разворачивать, а там такое... От банальных опечаток и до, действительно "надо доктора вызывать".

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

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


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

Вот это - function isWeapon(object)
local clsid_weapon = {
    [clsid.wpn_ak74_s]              = true,
    [clsid.wpn_bm16_s]              = true,
    [clsid.wpn_grenade_f1]          = true,
    [clsid.wpn_grenade_fake]        = true,
    [clsid.wpn_grenade_launcher]    = true,
    [clsid.wpn_grenade_rgd5]        = true,
    [clsid.wpn_grenade_rpg7]        = true,
    [clsid.wpn_groza_s]             = true,
    [clsid.wpn_hpsa_s]              = true,
    [clsid.wpn_knife_s]             = true,
    [clsid.wpn_lr300_s]             = true,
    [clsid.wpn_pm_s]                = true,
    [clsid.wpn_rpg7_s]              = true,
    [clsid.wpn_shotgun_s]           = true,
    [clsid.wpn_svd_s]               = true,
    [clsid.wpn_svu_s]               = true,
    [clsid.wpn_usp45_s]             = true,
    [clsid.wpn_val_s]               = true,
    [clsid.wpn_vintorez_s]          = true,
    [clsid.wpn_walther_s]           = true,
}
    return (object and clsid_weapon[object:clsid()])
end - по Вашему - ЧТО ?

 

Только заполнена неправильно, и реализация, опять же, странна (создание таблицы при каждом вызове).

 

Плюс к тому, за заведомый бред, запощенный в этот раздел, про lua_help в частности, хотя скриптовые классы на самом деле определяются в class_registrator, будете отправляться в r/o каждый раз, как оттуда вылезете.

Изменено пользователем Dennis_Chikin
  • Нравится 1

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


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

Опять за рыбу деньги...

 

Есть полтора десятка разных поделий, с которыми имеем эффект хромоты.

Меняем вызовы тупо поиск/замена - эффект пропадает. Дальше уже можно спокойно разбираться по отдельности с каждым поделием.

 

С Вариантом Артоса - разница на порядки во-первых, во-вторых - замена в данном случае не проще, чем сразу все переписать.

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


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

"волоча за собой 13-гигабайтный прицеп глобального мода"

 

Ну вот собственно да. Это и есть ответ на все вопросы, заданные выше, кроме как про то, чтобы кому-то ;) сделать уже хорошее годное описание того, что мы имеем к 15-ому году в смысле движков.

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


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

Ну, давайте поговорим о кулинарии. ;)

 

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

Что касается амк, то вот до меня, например, доползли сон, выброс и новости. Ну и еще порча костюмов в луте. Плюс какие-то странные простыни с выбрасыванием предметов.

 

Как он сделано - создаются эти самые таймеры, перебираются с лютой, бешеной частотой, наконец срабатывают и удаляются. По срабатыванию проверяется количество этих самых срабатываний, как-то подобранных для прибитого гвоздями значения в alife.ltx, создается запускается новый таймер. Зачем ?

Если по факту раз n секунд надо лишь проверить, не наступило ли собственно время для события х. То есть, сравниваем нашу константу с game_time(). При чем здесь таймеры ?

С лутом - там вообще все странно, поскольку задача - дождаться появления искомого предмета в онлайне, и что-то с ним сделать, и выжидать ровно секунду (при этом зачем-то сохраняя ее в сэйвах !) - это либо много, либо, кстати, можно вполне и на любимое всеми "e-entity" напороться, если трупик далеко лежит.

 

О простынях в полмегабайта функций на выбрасывание предмета - ничего не скажу, по тому что п2.0 правил. Все написано в теме про инвентарные коллбэки.

 

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

Может быть кто-нибудь разъяснит.

 

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

 

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

 

P.P.S. Да, надеюсь, что руки дойдут до расписать смысл и устройство предлагаемого костыля, поскольку он тоже, в какой-то степени, "комплексный". Но опять же, рассчитан на то, что в него ДОПИСЫВАТЬ ничего не надо - полностью управляется "внешними" скриптами.

 

А вот избыток "интегрирования" - я считаю, что не есть хорошо. Но, возможно, кому-то удобнее "интегрированное".

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

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


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

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

 

Возвращаясь к кулинарии:

1. создаем таймер.

2. перебираем таймеры. В цикле.

3. выполняем запуск по таймеру.

4. удаляем таймер.

5. пересоздаем таймер.

 

А еще - сохраняем и и загружаем таймеры + параметры.

 

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

 

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

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


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

Ну вот как бы +1, но это еще надо сделать. А пока годика 3 как есть вот такая штука, которую можно использовать, банально заменив в вызовах префикс с amk. на amk_netpk., или вообще банально копипастой нужного к себе (что с amk не получится).

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

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


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

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

Эрго, в 2015 году уже можно добавить в движок сохранение данных произвольного объема. Но поскольку всем лень, то если уж у кого-то каким-то загадочным образом образовался pstor жуткого размера - просто добавить проверку на размер пакета, и после 6, скажем, кило, сохранять в более другой. Слава Маландринусу - есть в куда.

 

А вот городить какой-то дополнительный апи с покером и гейшами^W^W^W объектами и какими-то ивинтами - смысла не вижу.

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


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

На самом деле напишите уже кто-нибудь success story по сборке, для начала. И по успешному использованию собранного.

 

Начиная с того, где брали софт, и как устанавливали. А то у меня лично все кончилось тем, что какая-то студия потребовала денег и отказалась и работать, и переустанавливаться, и удаляться. Так и требует какой-то диск h: и денег.

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

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

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


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

Больше флуда богу флуда !

Ну, давайте подискутируем. ;) тем более, что темы были осмыслены в более другом разделе, а сейчас уже пора по 3-4 поста из каждой перетащить в "прозекторскую", а под остальное, похоже, вообще флудилку специально выделенную делать. И, кстати, на самом деле оная флудилка бы с самого начала не помешала.

Во-первых, вот в первом посте, сразу после ссылок так и было написано: "а вообще - не нужны". Не нужны - это значит - ни в каком виде. Ну, то есть, если у кого-то есть ВМЕСТО этого нечто сложное и навороченное - наверное, он их зачем-то применяет. А если незачем - то и не применяет.

Про on_drop'ы в амк тоже все сказано, и вышеупомянутые системы сложные и навороченные - их существование не значит, что теперь надо взять, и амк-простыни, солянкопростыни, а тем более, простите за нецензурное слово, ОП2 простыни перетаскивать под..., зачем-то тщательно сохранив все on_drop'ы.

Вот что я не понимал никогда, и понять, наверно, не смогу - это вот ну выложен код, ладно, не нужен он вам - что за бурная такая реакция "зачем выложили". Затем. Чтоб побурлило. ;) А может быть и для того, что если оно кому не надо - а кому, глядишь, зачем-то и надо.

И, да, читаем мы тоже знатно, этак, по диагонали. Ну, собственно, в неповторимом стиле взаимоисключающих параграфов, хотя как вот так вот писать можно - это я еще представляю, а вот чтоб читать - так это мне еще учиться и учиться. ;)
В общем, вы (обращено к неопределенному кругу лиц) как-то определитесь, что-ли: или срочно переносим 500 проверок на on_drop под se_stor, или все ж как-нибудь обойдемся ? А вот под два события за все игру - тут как-то тоже может позволить всем сами решать: или водружать se_stor для этого, или из амк копипастить, или вот огрнаичиться предложенными двумя десятками строк ?
Не говоря уже о том, что кто-то может тупо решит проверку в on_spawn к актору запихать, или и вовсе в диалог...

Или, еще, да, вот кто-то увидел что-то, что ему не понравилось, поменял, и выложил. Тоже просто из соображений, что кому оно - того, а кому - и не того.
Другой счел, что можно сделать лучше, и написал: как именно. То есть, что, где и на что поменять. Или чем заменить, тоже конкретно с примером.

Глядишь, моддинг куда-нибудь и продвинется. Ну, по крайней мере шансов хоть на полпроцента, но больше, чем во всех подряд темах грозно вопрошать: "КТО РАЗРЕШИЛ ?" и "Почему строем не ходите?"
А вот ни кто не разрешил. Хочу - и переписываю. А строем ходить - не хочу, вот и не хожу. Чего и всем остальным желаю.



P.S. Да, на приоритеты ваши ни кто здесь не покушается. Считаете, что незаслуженно забыты - так и напишите.
Хотя и не всякий велосипед того стоит. ;) Но пусть будет хоть для истории. Опять же, выложенная в общий доступ реализация, с пояснениями - что, и зачем - оно и приоритет застолбит наилучшим образом, и от велосипедов, кого, глядишь, сохранит.
Опять же, кто совсем не знает "как работает" или "как сделать" - будет иметь перед глазами хоть какую-то базу для размышлений и последующих более конкретных вопросов. Изменено пользователем Dennis_Chikin

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


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

Важнейшим из искусств для нас является флуд !

 

По тому что вот щас сюда страницы три сразу перетащу, как минимум.

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

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


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

Да ну, "ни кто не говорил". Только вот сюда перетащенное глянуть... Не считая снесенного.

По on_drop - да, полезный пост был. Но ведь и его проигнорировали - и это был не я. Не будем показывать пальцем, но опять же на этих 4-х страницах можно найти. А я уже просто так сказать, "по итогам" пост написал.

 

В общем, давайте все-таки обойдемся без выискивания несуществующих оскорблений, и будем воздерживаться от реальных ? Даже и в теме "обо всем".

 

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

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

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


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

Не, без переводчика, чувствую, ни как.

 

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

Другое дело, есть серьезные сомнения, что если каждый из здесь отметившихся напишет, что так делать не надо - то это как-то поможет. Все равно продолжат. И строки в таблицы и обратно побайтно преобразовывать при каждом вызове - тоже продолжат. И вот те самые пакеты из amk.script в апдейтах дергать.

Ну и т.д.

 

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

Результат-то какой в итоге ожидается ?

 

Далее, ладно, 2015 год на дворе. Так ведь и я согласен с Арамисом. Вывод-то опять же какой ? Давайте все бросим, и будем разрабатывать некий перспективный проект на 2018-й, 5 лет его будем делать, а потом остальные будут его еще 5 осваивать ?

Или все-же какие-то промежуточные шаги имеют право на существование ?

 

Кстати, да. У меня вот vs13 сейчас ставится, так я посмотрю, что получится, и возможно сделаю банально работу с указателями и чтением/записью по произвольным адресам. А то и действительно, нафиг все эти скрипты, сразу все в исходниках сделаю как хочу, соберу, и... гм. А что, собственно, и ? Интересная мысль, и я ее буду думать. (И вообще, не портировать ли мне сталкера на фрю ?)

 

Ну так вот, про идеи, ноу-хау, и прочее: хорошая, не хорошая - но вот где вы все раньше были, когда оно могло быть хорошим ? И вот согласно какой религии это нельзя выставить сейчас ? Конкретно, какую статью УК это нарушает ?

 

Вопрос второй, еще раз:

Если вот СРАЗУ так и написано было "но вообще - не нужны" ? Не про чье-то там, а вот именно про выложенное. Извините, то, что за этим последовало - это именно десяток раз повторенные взаимоисключающие параграфы "нет, нужны, но не нужно". Кому нужно - пользуйтесь, кому не нужно - не пользуйтесь. В чем дело-то ? Что здесь вообще обсуждать ?

 

 

P.S. А, да, есть еще полно изобретающих велосипеды. Тоже в 2015-ом году. Хотя тоже вряд-ли поможет. В смысле, хоть 200 раз написать "надо", хоть столько же - "не надо". Какой вывод ? А простой. Положил, и путь лежит.  Есть-пить не просит.

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

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


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

По сну - я пытался в эту сторону думать, но в итоге признал скорее полезной фичей. Так-то можно и на fast_call перевесить, с проверкой времени - всяко точнее будет. А действительно ли эти пол часа критичны ?

 

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

 

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

 

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

 

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

 

Ну, понятно, что новости и выброс - это вообще не вариант. Варка артов... Гм. Вот тоже ситуация примерно как со сном. НУ и все параметры правильнее хранить в самой аномалии. Мало ли, как и кто на нее будет воздействовать...

Порча заспавненного броника из десменеджера ? Это вообще вредно, поскольку опять же проверять надо появление предмета. Которое зависит от расстояния до актора.

 

На этом моя фантазия исчерпалась.

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


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

"Что такое таймеры и в чем смысл жизни ?" -  вот так этот вопрос должен звучать. ;)

 

В данном конкретном случае, говоря об amk-таймерах я могу сказать только то, что вижу, а именно:

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

 

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

 

Что-то мы уже на пятый круг заходим: ибо предчувствую, что мне сейчас опять начнут объяснять, что 1 - я не умею их готовить, 2 - это старье, по тому что в 2008-ом только учились, и по тому что древние версии движка не имели тех возможностей, которые есть в 1.0004.

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

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


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

Я понятия не имею, что от меня хотят услышать. Что вижу - выше написал.

 

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

Вызываемая выносилась из amk.script, и добавление производилось из того же скрипта, который запускал собственно таймер. Только при необходимости.

 

На данный момент таких осталось 3 места. Все.

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

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


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

По тому что в игре нет таких событий, которые одновременно бы удовлетворяли бы следующим условиям:

1. Происходили неоднократно.

2. Иррегулярно.

3. Через точно заданное время от момента x.

 

Или, по крайней мере, я не могу себе такие представить.

 

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

 

И не "пофиг какие" - а amk-style и их аналоги. Допускаю, что есть нечто принципиально более другое, которое для чего-то используется. Но тогда и хотелось бы увидеть описание: что, как и для чего.

 

 

"Пункты 2 и 3 у тебя противоречат друг другу, если что" - ну я что написал ?

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

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


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

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