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

Dennis_Chikin

Жители
  • Число публикаций

    6 272
  • Регистрация

  • Последнее посещение

  • Дней в топе

    33
  • AMKoin

    551 [Подарить AMKoin]

Весь контент пользователя Dennis_Chikin

  1. Ну, о терминологии: "таймер" и "очередь" - вообще-то взаимоисключающие понятия. Таймер - это мы должны бросить все, и немедленно выполнить. Очередь - это именно когда дойдет - вот тогда и... t5000i в примере - это как раз указатель на текущий элемент очереди. Есть - выполняем, и ставим указатель на следующий. Нет - ничего не делаем. По времени здесь происходит установка на первый элемент - это чтобы "лишний" раз ничего НЕ выполнялось. Да, если мы говорим о таймерах - повторяюсь, там обработка должна начаться сразу, как только время пришло. Если же используется очередь - оно может и прийти, и пройти, и еще раз прийти (точнее, в рассматриваемых реализациях - только пройти). Так вот, в первоначальном утверждении, с которого начался сыр-бор, было о том, что вот нет в игре ничего такого, чтоб "вот прям счаз все бросить, и начать выполнять это", чтобы было обусловлено именно временем.
  2. Dennis_Chikin

    C++

    Здесь на самом деле терминологическая путаница. Статические библотеки - это файлы .h - при сборке просто тупо используемые из них куски становятся частью .exe Чтоб за примером далеко не ходить - да хоть inventory_item.h dll - совершенно другая технология, когда этот самый dll дергается из разных программ. Вкомпилить dll в свой проект - это, в общем, объединение его с exe так, что отдельный dll становится не нужен. См. например ILMerge. Вообще, по факту, используется для того, чтобы не раскрывать исходный код тем, кому "не положено". Типа, "вот вам дали - пользуйтесь тем, что есть, и скажите спасибо, что и такое дали".
  3. Ну, вообще-то приведенный вариант - он уже тоже "несколько" устарел, но по смыслу - да. в call_upd3() мы проверяем - есть ли ожидающие своей очереди арты. Если есть - проверяем еще и условия, что пора. В простейшем варианте - такое условие - время: n игровых секунд от начала игры, допустим. (в своем варианте я заменил на "от загрузки", но это не принципиально). В не простейшем - но это уже разговор о вкусе фломастеров - я бы предпочел вариант "насыщения" аномалии, а не время. Назвать это таймером - можно и назвать, конечно. Почему ж нельзя ? Если хочется ? Но, даже такой способ я считаю чрезмерно агрессивным, поэтому ипользую очередь функций, которая просто перезапускается раз в 5 секунд, если закончилась. А уже в ней очередь аномалий, с которыми надо что-нибудь сделать. Но это уже, простите, уже совсем не таймеры.
  4. Desertir, варка артов - это, по-хорошему, не событие актора. Там так же не нужна точность в 200ms, ну и не нужен "запуск". Простая очередь, вешающаяся на самый медленный апдейт из всех, что есть - вполне достаточна. Хотя, кстати, да: можно еще при загрузке проверять - есть ли арты в очереди, и не добавлять ее в апдейт вообще, пока не будет инициирована новая "варка". То же самое и с выбросом: есть прогнозированное игровое время - по нему и запускаем, можно - с запозданием. Если к тому же модифицировать - то там вообще последовательность событий с проверками на "безопасность" надо делать. Опять же - "простой" медленный апдейт, в идеале еще и с проверкой загрузки движка. Вот кстати, да, если вести речь о модификации оного движка, то было бы не лишним иметь систему "необязательных" событий - то есть, чем-то заняты - ну и черт с ними, с этими событиями - подождут до другого раза. P.S. сообразил, что действительно имеем семантическую путаницу, происходящую из того, что на самом деле у нас и нет ни каких "таймеров". Есть их эмуляция, все из того же самого апдейта. Причем апдейты (не важно чего) - по сути единственный способ получить управление. В то время как нормальный таймер - это "железный" (ну или системный) вызов нашего кода, действительно, в запрограммированное время. Вот, собственно, и...
  5. По тому что в игре нет таких событий, которые одновременно бы удовлетворяли бы следующим условиям: 1. Происходили неоднократно. 2. Иррегулярно. 3. Через точно заданное время от момента x. Или, по крайней мере, я не могу себе такие представить. Либо они однократные, либо промежуток регулярный (раз в n секунд), либо зависят от каких-то других условий (выбрали фразу в диалоге, появился предмет, достигли некоей точки, отыгралась анимация и т.д.) И не "пофиг какие" - а amk-style и их аналоги. Допускаю, что есть нечто принципиально более другое, которое для чего-то используется. Но тогда и хотелось бы увидеть описание: что, как и для чего. "Пункты 2 и 3 у тебя противоречат друг другу, если что" - ну я что написал ?
  6. Я понятия не имею, что от меня хотят услышать. Что вижу - выше написал. Для чего использовалась предложенная мной модификация - это для временной замены амк таймеров пока не были внесены боле глубокие изменения. То есть, функция запуска просто переименовывалась, и убиралось преобразование таблица->строка и строка->таблица. Вызываемая выносилась из amk.script, и добавление производилось из того же скрипта, который запускал собственно таймер. Только при необходимости. На данный момент таких осталось 3 места. Все.
  7. "Что такое таймеры и в чем смысл жизни ?" - вот так этот вопрос должен звучать. В данном конкретном случае, говоря об amk-таймерах я могу сказать только то, что вижу, а именно: набор неких функций, предназначенных для запуска более других функций через какой-то заданный интервал времени, и сохраняющих параметры, предназначенные для этих самых более других функций, в сэйвах. Предназначены как бы для того, чтобы спрятать некие рутинные операции от кого-то (кого ?). Попытку следует признать неудачной, поскольку количество операций с не совсем ясным смыслом скорее возросло. Что-то мы уже на пятый круг заходим: ибо предчувствую, что мне сейчас опять начнут объяснять, что 1 - я не умею их готовить, 2 - это старье, по тому что в 2008-ом только учились, и по тому что древние версии движка не имели тех возможностей, которые есть в 1.0004.
  8. По сну - я пытался в эту сторону думать, но в итоге признал скорее полезной фичей. Так-то можно и на fast_call перевесить, с проверкой времени - всяко точнее будет. А действительно ли эти пол часа критичны ? По таймерам, ну вот применительно к понятно-какому монстромоду у меня есть вариант с таймерами amk-style, то есть, однократными, и сохраняющими параметры, доработанными на добавление-проверку функции и собственно активного таймера, и добавление функции на "плавный" апдейт актора с последующим удалением, когда становится не нужна. В итоге понял, что пользуюсь постоянно вторым вариантом, а первый - не только не использую, но и перевожу на второй там, где встретилось. На данный момент осталось 3 одноразовых по сюжету. И те - без параметров. Ну, по тому что либо оно да, должно крутиться в апдейте постоянно, либо там же - с некоего события, и до наступления, опять же, некоего другого события. То есть, все равно проверяется не время. Да, минимум одна из упомянутых функций будет переделываться на проверку позиции актора, ибо привязка кода к конфигу - не есть правильно. Вторая - там завязано на время проигрывания озвучки. Тоже неправильно константы подбирать, вместо проверки на играется ли звук. Третья - на анимацию. 8/ Ну, понятно, что новости и выброс - это вообще не вариант. Варка артов... Гм. Вот тоже ситуация примерно как со сном. НУ и все параметры правильнее хранить в самой аномалии. Мало ли, как и кто на нее будет воздействовать... Порча заспавненного броника из десменеджера ? Это вообще вредно, поскольку опять же проверять надо появление предмета. Которое зависит от расстояния до актора. На этом моя фантазия исчерпалась.
  9. Не, без переводчика, чувствую, ни как. Я вообще-то про то, что люди вот прямо сейчас, в 2015 году, продолжают копипастить вот эти самые - неназываемые. Другое дело, есть серьезные сомнения, что если каждый из здесь отметившихся напишет, что так делать не надо - то это как-то поможет. Все равно продолжат. И строки в таблицы и обратно побайтно преобразовывать при каждом вызове - тоже продолжат. И вот те самые пакеты из amk.script в апдейтах дергать. Ну и т.д. Но, зачем писать, что "вы/ты/он/она занимается полной ерундой, и им вообще не надо моддингом заниматься" ? Опять же обращаюсь не к конкретному оппоненту, а к тем, кому зачем-то захочется что-то подобное написать. Результат-то какой в итоге ожидается ? Далее, ладно, 2015 год на дворе. Так ведь и я согласен с Арамисом. Вывод-то опять же какой ? Давайте все бросим, и будем разрабатывать некий перспективный проект на 2018-й, 5 лет его будем делать, а потом остальные будут его еще 5 осваивать ? Или все-же какие-то промежуточные шаги имеют право на существование ? Кстати, да. У меня вот vs13 сейчас ставится, так я посмотрю, что получится, и возможно сделаю банально работу с указателями и чтением/записью по произвольным адресам. А то и действительно, нафиг все эти скрипты, сразу все в исходниках сделаю как хочу, соберу, и... гм. А что, собственно, и ? Интересная мысль, и я ее буду думать. (И вообще, не портировать ли мне сталкера на фрю ?) Ну так вот, про идеи, ноу-хау, и прочее: хорошая, не хорошая - но вот где вы все раньше были, когда оно могло быть хорошим ? И вот согласно какой религии это нельзя выставить сейчас ? Конкретно, какую статью УК это нарушает ? Вопрос второй, еще раз: Если вот СРАЗУ так и написано было "но вообще - не нужны" ? Не про чье-то там, а вот именно про выложенное. Извините, то, что за этим последовало - это именно десяток раз повторенные взаимоисключающие параграфы "нет, нужны, но не нужно". Кому нужно - пользуйтесь, кому не нужно - не пользуйтесь. В чем дело-то ? Что здесь вообще обсуждать ? P.S. А, да, есть еще полно изобретающих велосипеды. Тоже в 2015-ом году. Хотя тоже вряд-ли поможет. В смысле, хоть 200 раз написать "надо", хоть столько же - "не надо". Какой вывод ? А простой. Положил, и путь лежит. Есть-пить не просит.
  10. Dennis_Chikin

    Алкоголь

    Я ж говорю - обходят проблему. Ну вот банально, некоторым вообще алкоголь нельзя. И вот в лес выбирается компания на 3-4 десятка человек, некоторые еще и с дитями. Что делать ? Вот, наловчились. Алкоголикам - алкогольное. Остальным - черника + лимон + перец. Гвоздика - ну можно ж без нее. Можно. Имбирь + шафран + можжевельник. Оно и ладненько. Ну вот я себе крепкий не делаю, но пол чайной ложки рома капаю. И все-тот же перец добавляю горошины 4. Гвоздикой, кстати, тоже не злоупотребляю - те же 3-5 на поллитра. Тем не менее, вполне вкусно.
  11. Dennis_Chikin

    У Костра XIII

    Жратва на кладбище ! С танцами !
  12. Да ну, "ни кто не говорил". Только вот сюда перетащенное глянуть... Не считая снесенного. По on_drop - да, полезный пост был. Но ведь и его проигнорировали - и это был не я. Не будем показывать пальцем, но опять же на этих 4-х страницах можно найти. А я уже просто так сказать, "по итогам" пост написал. В общем, давайте все-таки обойдемся без выискивания несуществующих оскорблений, и будем воздерживаться от реальных ? Даже и в теме "обо всем". Вот есть у каждого что-то свое - так вот лучше и написать, для чего именно и как именно оно используется. А уж кто что умеет готовить - собственно, из этого и видно будет.
  13. Важнейшим из искусств для нас является флуд ! По тому что вот щас сюда страницы три сразу перетащу, как минимум.
  14. Судя по регулярно происходящему в других темах - таки нужна. Вот здесь как раз можете спросить про "зачем создали эту тему ?" А также про ООП, про как заниматься моддингом и его устарелости неустарелости, кто как его себе представляет и т.д. В общем, для много слов "обо всем". Что в более специализированные темы не лезет, но поговорить давно хотелось и хочется. Но таки да, пп 2.0, 2.1 и даже 2.5 правил здесь вполне таки действуют.
  15. "Вскрытие показало, что больной умер от вскрытия." Тема для "крупной формы", то есть, на уровне скриптов целиком или больших частей оных скриптов. "Что у него внутри, зачем оно там, и что с этим можно сделать ?"
  16. Dennis_Chikin

    Алкоголь

    Глинт вообще-то и без гвоздики можно. А даже без алкоголя. Рецептов - 100 тыщь мильенов. Многие - вполне даже сносные. Ну вот собственно "безалкогольным глинтом" люди специально заморачивались, чтобы по максимуму сохранить и полезные эффекты, и даже вкус, но чтоб при этом даже убежденным язвенникам можно было. Да, смесь виноградного яблочного и гранатового сока/черника всякая, и прочее. Ну и там всякая сложная алхимия с разными черными перцами и можжевельниками.
  17. Больше флуда богу флуда ! Ну, давайте подискутируем. тем более, что темы были осмыслены в более другом разделе, а сейчас уже пора по 3-4 поста из каждой перетащить в "прозекторскую", а под остальное, похоже, вообще флудилку специально выделенную делать. И, кстати, на самом деле оная флудилка бы с самого начала не помешала. Во-первых, вот в первом посте, сразу после ссылок так и было написано: "а вообще - не нужны". Не нужны - это значит - ни в каком виде. Ну, то есть, если у кого-то есть ВМЕСТО этого нечто сложное и навороченное - наверное, он их зачем-то применяет. А если незачем - то и не применяет. Про on_drop'ы в амк тоже все сказано, и вышеупомянутые системы сложные и навороченные - их существование не значит, что теперь надо взять, и амк-простыни, солянкопростыни, а тем более, простите за нецензурное слово, ОП2 простыни перетаскивать под..., зачем-то тщательно сохранив все on_drop'ы. Вот что я не понимал никогда, и понять, наверно, не смогу - это вот ну выложен код, ладно, не нужен он вам - что за бурная такая реакция "зачем выложили". Затем. Чтоб побурлило. А может быть и для того, что если оно кому не надо - а кому, глядишь, зачем-то и надо. И, да, читаем мы тоже знатно, этак, по диагонали. Ну, собственно, в неповторимом стиле взаимоисключающих параграфов, хотя как вот так вот писать можно - это я еще представляю, а вот чтоб читать - так это мне еще учиться и учиться. В общем, вы (обращено к неопределенному кругу лиц) как-то определитесь, что-ли: или срочно переносим 500 проверок на on_drop под se_stor, или все ж как-нибудь обойдемся ? А вот под два события за все игру - тут как-то тоже может позволить всем сами решать: или водружать se_stor для этого, или из амк копипастить, или вот огрнаичиться предложенными двумя десятками строк ? Не говоря уже о том, что кто-то может тупо решит проверку в on_spawn к актору запихать, или и вовсе в диалог... Или, еще, да, вот кто-то увидел что-то, что ему не понравилось, поменял, и выложил. Тоже просто из соображений, что кому оно - того, а кому - и не того. Другой счел, что можно сделать лучше, и написал: как именно. То есть, что, где и на что поменять. Или чем заменить, тоже конкретно с примером. Глядишь, моддинг куда-нибудь и продвинется. Ну, по крайней мере шансов хоть на полпроцента, но больше, чем во всех подряд темах грозно вопрошать: "КТО РАЗРЕШИЛ ?" и "Почему строем не ходите?" А вот ни кто не разрешил. Хочу - и переписываю. А строем ходить - не хочу, вот и не хожу. Чего и всем остальным желаю. P.S. Да, на приоритеты ваши ни кто здесь не покушается. Считаете, что незаслуженно забыты - так и напишите. Хотя и не всякий велосипед того стоит. Но пусть будет хоть для истории. Опять же, выложенная в общий доступ реализация, с пояснениями - что, и зачем - оно и приоритет застолбит наилучшим образом, и от велосипедов, кого, глядишь, сохранит. Опять же, кто совсем не знает "как работает" или "как сделать" - будет иметь перед глазами хоть какую-то базу для размышлений и последующих более конкретных вопросов.
  18. Ну правильно разбредаются. Группировка не подходит для смарта. Теперь смотреть все файлы gulag*.script и везде заменять бандитов на сталкеров. А потом еще курить smart_terrain_presets.
  19. Dennis_Chikin

    У Костра XIII

    Поели - можно и поспать ! Поспали - можно и поесть ! (Упс ! Опередили. ) На кладбище ?
  20. Dennis_Chikin

    C++

    x86 - по факту - 32. am64 - 64. Есть еще всякие подвиды, отличающиеся sse2, sse3 и другими страшными буквами, но это уже не столь существенно. Впрочем, от #студий можно ожидать чего угодно. P.S. Да, в статье - сумбурно, но по сути - верно.
  21. На самом деле напишите уже кто-нибудь success story по сборке, для начала. И по успешному использованию собранного. Начиная с того, где брали софт, и как устанавливали. А то у меня лично все кончилось тем, что какая-то студия потребовала денег и отказалась и работать, и переустанавливаться, и удаляться. Так и требует какой-то диск h: и денег. В отличии от gcc во фре, с которым сроду ни каких проблем не было. Так и болтается. Вот только боюсь, что на gcc я точно ничего под вынь не соберу.
  22. Он тоже в отпуске. 8( Тайники не могут перестать работать просто так сами по себе. Очевидно, что-то изменялось. Что именно и как именно - вот кто здесь должен это знать ?
  23. Страшный и ужасный pstor - всего-лишь табличка. И при вызове сохранения сохраняется фактически руками. Эрго, в 2015 году уже можно добавить в движок сохранение данных произвольного объема. Но поскольку всем лень, то если уж у кого-то каким-то загадочным образом образовался pstor жуткого размера - просто добавить проверку на размер пакета, и после 6, скажем, кило, сохранять в более другой. Слава Маландринусу - есть в куда. А вот городить какой-то дополнительный апи с покером и гейшами^W^W^W объектами и какими-то ивинтами - смысла не вижу.
  24. И это ОПЯТЬ оригинал ? См. в шапке про телепатов.
  25. Сразу ограничения: 1. Просто забросить скрипт - недостаточно. Надо еще в конфиге предмета прописывать. А там может быть прописано нечто иное. 2. net_destroy() - это не только использование, но и удаление, и просто уход в офлайн. 3. проверять парента на апдейте - это медленно и печально. Коллбэки срабатывают именно тогда, когда он действительно используется/передается и т.д. P.S. Но таки да, я, например, для того же детектора артов не нашел лучшего варианта, чем биндер, который заносит оные арты в табличку при net_spawn().
×
×
  • Создать...