Dennis_Chikin 3 665 Опубликовано 4 Февраля 2015 Как один из вариантов сделать удаление (и много что еще, не хочу напрягать фантазию) чего-либо вне каких либо цепочек. Поделиться этим сообщением Ссылка на сообщение
Dennis_Chikin 3 665 Опубликовано 4 Февраля 2015 (изменено) В общем, да, соглашусь - разговор все время уходит почему-то именно в сторону "как сломать", ну или в лучшем случае "а как можно бороться с попытками сломать". (по "как можно бороться" - правильный ответ - "ни как; кто захочет - сломает". Про балет - это пример такого вот "захотели". В принципе, даже реальный, со слегка измененными именами действующих лиц.) Тоже возвращусь к началу - просто стоит запомнить, что это - возможно, и не ломать. Если попытка поломать где-то замечена - убрать. (на самом деле вопрос такой был: "откуда может взяться клиентский объект без серверного". Как выяснили - может.) Ну и возвращаясь еще немного назад - в начале был очень сильно китайский древнекод с динамитом, "как бы" должный именно сопротивляться попыткам сломать. Изменено 4 Февраля 2015 пользователем Dennis_Chikin Поделиться этим сообщением Ссылка на сообщение
Dennis_Chikin 3 665 Опубликовано 4 Февраля 2015 (изменено) Не, я тут вижу разговоры немножко о своем, о родном. Впрочем, топор vs. бензопила - хорошее сравнение. А вот то, что топор каменный и пила кривая (и еще в нее надо бензин заливать) - по назначению применять не пробовали, нет ? Прежде чем переходить на "да я, да ты..." ? И, кстати, да "никто не родился с бензопилой в руках". По-моему, как-то быстро все об этом забывают. Изменено 4 Февраля 2015 пользователем Dennis_Chikin Поделиться этим сообщением Ссылка на сообщение
Dennis_Chikin 3 665 Опубликовано 4 Февраля 2015 (изменено) Пример странного был в древнемодах. Водка и энергетик. В сочетании со всякими модификациями древних "варок" медуз из водки и хвостов эффекты получались, гм, познавательными. А еще когда поверху какую-нибудь "детонацию" со рвущимся рюкзаком навешивали... О, еще "телепорты"... Изменено 4 Февраля 2015 пользователем Dennis_Chikin Поделиться этим сообщением Ссылка на сообщение
Dennis_Chikin 3 665 Опубликовано 4 Февраля 2015 (изменено) 2 Shadows, вообще-то тут меня били ногами за предложенные "промежуточные" решения. Ну, правда, часть из них потом же и предлагалась, уже как правильные. Типа, "разнести по секциям" и т.д. Да и не только меня. А также пинали кто попало кого попало и за "переусложнения". Но это так, лирика. В общем, простое промежуточное решение - выделить места для подключений с простым вызовом. Или в глобальном пространстве объявить. А дальше - вот ровно то же, что в основе абсолютно всех мегасистем - последовательно исполнение всего, что "наподписывалось". Вот все то же банальное for i = 1, #t do t(). Ну а мало - начинаем добавлять всякие преждевременные завершения, передачи параметров, сохранения, контроль времени, контроль условий... Imho, как это не оформляй и не называй, дело сводится к тому, чтобы выделить минимальный самодостаточный модуль с вменяемыми точками входа (не городить китайскую лапшу развесистую). А дальше уже все это можно расширять под свои надобности. Не знаю, я все-таки попробую наверное набраться наглости, и куда-нибудь этот самый минимум, которым пользуюсь, таки выложу с описанием - что, зачем, без чего еще можно обойтись, и куда чего добавить. "Правда, что ли?" - правда-правда. Ну или иначе это придется зачесть вообще как цепляние совершенно помимо предмета. "Подписываются только те, кому надо. И от подобных переборов ты никуда не уйдешь." - вот, кстати, пример. Я не знаю, о чем можно подумать, глядя строку "все сводится к", но явно не о том, о чем думал я. По тому как ну в общем-то очевидно, что именно это и было написано "от переборов не уйти". И так же совершенно очевидно, что отнюдь не имеется в виду набивание руками некоей таблицы t, а что-то типа t = {}; function subscribe_on_something( ptr ) table.insert( t, ptr ) end От которого тоже ни куда не уйти - максимум - что-то добавить, ну или эквивалент на более других командах. "мегасистем" - это любые комплекты любых оберток поверх того перебора, от которого не уйти, с любым дополнительным функционалом, общим объемом более страницы. "Главный цимес, что можно это делать динамически" - О !!! Неужто договорились ? Изменено 4 Февраля 2015 пользователем Dennis_Chikin Поделиться этим сообщением Ссылка на сообщение
Dennis_Chikin 3 665 Опубликовано 5 Февраля 2015 (изменено) Не понимаю... Вроде, все расписывал, примеры давал... local t = on_drop_t[item:section()] if t then for i = 1, #t do t( item ) end end - вот и вся "черная магия". Можно вложить внуть каждого t() такое же по любому другому условию. По вкусу вместо t() - if t() ... end (да хоть бы и return). И, гм, не уверен, что вот так вот прямо надо в global. Все подписанты вполне в состоянии сами попросить себя добавить. А знать, кто там еще и зачем - можно и отдельную функцию для таких запросов предоставить. Upd: Опередили... Изменено 5 Февраля 2015 пользователем Dennis_Chikin Поделиться этим сообщением Ссылка на сообщение
Dennis_Chikin 3 665 Опубликовано 5 Февраля 2015 (изменено) "т.к. параметр далеко не только секция." - остальное лично мне попадалось сильно реже. Поэтому в запросах подписантов принимаются (и, соответственно, проверятся) только "по секции" или "любой". А дальше то же самое можно повторить сколько угодно раз для любого количества параметров. Вот хоть как у Desertir. e.section == 'my_item' and - вот здесь очевидно придется руками каждый раз лазить везде, где надо что-то добавить или убрать. Либо что-то нетривиальное творить. Upd: Все, признаю. Вавилонское столпотворение свершилось, и с этого момента я ТОЖЕ уже перестал понимать, кто здесь вообще про что пишет, и что при этом имеет в виду. Изменено 5 Февраля 2015 пользователем Dennis_Chikin Поделиться этим сообщением Ссылка на сообщение
Dennis_Chikin 3 665 Опубликовано 5 Февраля 2015 (изменено) Добавьте мне в if ... then ... elseif ... что-нибудь из скрипта. Изменено 5 Февраля 2015 пользователем Dennis_Chikin Поделиться этим сообщением Ссылка на сообщение
Dennis_Chikin 3 665 Опубликовано 6 Февраля 2015 (изменено) Кажется, я понял, что происходит. Здесь все описания того, что кто-либо делает, начинаются примерно с середины. Ну, типа "историю вопроса все знают, как и зачем сделано - тоже все знают, куда что подключено, что там внутри и зачем оно подключено - тоже все знают. Осталось прояснить одну конкретную особенность реализации". это на самом деле не так. Вот по-этому адресаты и не понимают, зачем им вообще пишут ЭТО, и что, собственно, хотят. Вопрос - у кого-нибудь найдется время/желание написать все подробно и с самого начала ? 2 malandrinus: self.sm:call("on_drop", obj) - self. в примере как бы явно указывает на то, что относится к актору, а не к внешней системе, нет ? Изменено 6 Февраля 2015 пользователем Dennis_Chikin Поделиться этим сообщением Ссылка на сообщение
Dennis_Chikin 3 665 Опубликовано 6 Февраля 2015 "Но секунды - это уже совсем экстрим" - иногда бывает как раз полезно. Скажем, событие происходит раз в час, с точностью +- полчаса. Ну или даже пусть бы и раз в 5 секунд. Зачем здесь нужен лютый, бешеный поллинг с максимальной скоростью ? По случаю с ожиданием входа предмета в онлайн - закладываться на фиксированное время - вообще зло. Той секунды вполне может не хватить, если, скажем предмет далеко от актора, а с другой - если он будет секунду валяться - кто-нибудь другой вполне может сделать с ним нечто нехорошее. Так что, проверка нужна не так, чтобы сильно агрессивная, но проверять следует само событие. Поделиться этим сообщением Ссылка на сообщение
Dennis_Chikin 3 665 Опубликовано 1 Июня 2015 Добавить в LUA #define. А заодно - #include. Да, и научить его инлайну. А вот строки копировать - наоборот, отучить. P.S. И что-то сделать с векторами: либо изменяется то, что на входе, либо результат возвращается, не затрагивая аргумент. А не где попало как попало. Поделиться этим сообщением Ссылка на сообщение
Dennis_Chikin 3 665 Опубликовано 1 Июня 2015 А вот как раз переименовать что нам надо так, как хотим. Ну и простыни разные урезать. #include - в общем, для того же. Зло, на самом деле, от make, когда начинают писать на нем, вместо того, чтобы писать на вменяемом языке. Инлайн - это когда функция разворачивается в код. Строки - да, как ссылку. Ибо их копирование - занятие бессмысленное чуть более, чем полностью. Про вектора - это вот, например про когда надо писать вот такого монстра: c = vector():set( v_lin ):normalize():dotproduct( vector():set( lv_lin ):normalize() ) Поделиться этим сообщением Ссылка на сообщение
Dennis_Chikin 3 665 Опубликовано 1 Июня 2015 (изменено) local ct_npc = 0 local ct_item = 1 local ct_corpse = 2 local ct_out = 4 local ct_med = 5 Ну и зачем, когда во всех вменяемых языках это делается как раз через переопределение ? Во-вторых, таки да, если кто-то где-то зачем-то определил it_is_my_kee\/\/11_Name0ff\/aЯ1b1ee_BecauseIAmKee\/\/1XackeP, и прибил это гвоздями, то написать один дефайн, и все... Если я хочу сделать v_lin = v_lin:normalize() - я хочу, чтобы это именно так и выглядело. Изменено 1 Июня 2015 пользователем Dennis_Chikin Поделиться этим сообщением Ссылка на сообщение
Dennis_Chikin 3 665 Опубликовано 20 Августа 2015 (изменено) Идиотизм. На дворе 2015-й год скоро кончится, а у нас так до сих пор Страшные Тайны непорядочно разглашают. Вдруг враги воспользуются, и, о ужас, в свой мод вставят. За 2 года до выпуска очередного долгостроя. Впрочем, на фоне маринующихся разработок 2010-го... Но, да, при этом мы ноем, что наши гениальные разработки ни кому не нужны. И, да, разумеется, за 8 лет только мы знаем, КАК. И наше знание - единственно кошерное, но мы вам его не покажем ! P.S. Кстати, а ничего, что штуки три модов с этими страшными тайнами уже выпущено ? Кстати, пока изобретатели этих велосипедов, тоже экземплярах, этак, в 5-ти, если не больше, вышвыривали из команд всех "шпионов", и прятали эти самые велосипеды поглубже ? Изменено 20 Августа 2015 пользователем Dennis_Chikin 2 1 Поделиться этим сообщением Ссылка на сообщение
Dennis_Chikin 3 665 Опубликовано 20 Августа 2015 (изменено) Майн готт... В курилку ! Там завтра попробую объяснить. Изменено 20 Августа 2015 пользователем Dennis_Chikin 1 Поделиться этим сообщением Ссылка на сообщение
Dennis_Chikin 3 665 Опубликовано 21 Августа 2015 (изменено) "а я меняю для себя как удобно мне" Ну вот и что планируется получить в результате ? Сколько версий мы имеем на данный момент ? Что мы знаем о стабильности этих версий ? Об их функционале ? На сколько сложно (и вообще возможно) заменить одну версию на другую ? То есть, спортивный интерес удовлетворен, а вот делать все приходится таки скриптами. Во-вторых, да, я вот не вижу абсолютно ни какого понимания того, что можно и нужно делать скриптами, а что - переносить в движок. То есть, оно у каждого какое-то есть, но свое, и весьма интуитивное. Наконец, любой, кто захочет пользоваться этим самым измененным движком, получает интересный выбор: либо разгребать с нуля все то, что разгребали вносители правок, либо брать кота в мешке, зачастую - даже без описания. Смешно, но до сих пор нет коллекции исходников, которые можно просто скормить студии (кстати, какой версии ?), и получить рабочие экзешники без плясок с бубнами. Кто-то еще удивляется, что остальным, не смотря на его такую замечательную правку, по-прежнему проще "кобылу запрячь" ? Я вот прямо сейчас не готов написать вменяемый и структурированный текст про то, что и как надо сделать (не говоря уж о том, чтобы сделать все это самому), и сильно не уверен, что кто-то вдруг его хотя бы прочитает полностью, не говоря об том, чтобы из этого что-то воспоследовало, но без разгребания существующего бардака какого-то всеобщего счастья вот точно не случится. На выходе же нужно нечто, позволяющее без особого напряга просто пересобрать экзешник у себя + документация того, что внесено, + как этим пользоваться (доступное для освоения без "все бросить"), + ревизия этого внесенного со стороны, на предмет стабильности, взаимоисключающих параграфов и дублей. С массовым тестированием на стабильных модах, ага. А дальше - думать за архитектуру. Какие элементы объединяются во что-то более крупное, и на каких уровнях остается доступ, чтобы сохранить возможность управления происходящим из скриптов, но не испытывать нужды на каждый чих "писать скриптовый инвентарь и скриптовый ПДА" (не наезду ради, но мера ведь явно вынужденная, а не от избытка свободного времени), и не шарахаться между "торговлей полностью движковой" и "полностью скриптовой". Это вот было то, что касательно движка. Касательно же скриптовых велосипедов, гм. Поезд, конечно, ушел очень давно, но тем не менее, коль до сих пор что-то еще делается - делающим завести бы маленькую привычку: сотворили нечто, претендующее на прогресс относительно той конной тяги - черкнуть описание, и выложить. По ходу дела попалось под руку что-то, вызывающее у вас удивление всеобщим пристрастием к конной тяге - опять же, описание, и выложить. Как-то так. p.s. да, свой хост с gnats или типа того - оно бы, конечно, неплохо. Базу патчей, в смысле. Но коли нет, так хоть на форум. P.P.S. Да, этот самый движок кто-нибудь пробовал под x64 собирать ? Изменено 21 Августа 2015 пользователем Dennis_Chikin 1 2 Поделиться этим сообщением Ссылка на сообщение
Dennis_Chikin 3 665 Опубликовано 21 Августа 2015 (изменено) Практика показывает что к единому все равно не придут. Чтобы куда-то прийти - надо это самое что-то сначала иметь. Зайду издалека, и, заодно, слегка намекну на поле напаханное: Вот многие ли из здесь присутствующих ПОЛНОСТЬЮ прочитали "справочник по функциям и классам", и активно пользуются прочитанным ? Прежде чем бить себя пяткой в грудь, прошу чуть-чуть подумать. То есть, вот именно оттуда ли все, чем пользуетесь, или ? По тому как если внимательно глянуть, то, во-первых, там куча недоописанного и "наверное, вот так, но черт его знает, у меня просто висло", а во-вторых, он слегка малочитабелен, и уж тем более запомнить все это... Ну вот кто знает, как, например, работает ВСЕ, относящееся к memory object ? Ага, я на disable прежде всего намекаю. Меж тем, есть исходники, в которых кто-то копается. "Из интереса". А справочник - и ныне там. Вот хотя-бы, дописать недописанное, расписать подробности, сделать версию не как сейчас "если вы видите в коде неведомую фигню, то возможно, в теме вы найдете - ЧТО ЭТО", а с группировкой по назначению/функционалу. Как минимум, сразу станет видно, что надо поправить/добавить в движок. То есть, range() например, есть, а остальное конфиговое ? Что сейчас эмулируем через range() в апдейтах. Далее, да, сколько лет жуем темы всяких "хранилищ", прости-господи, сотворили целое rvp с какими-то файловыми системами, и при этом - до сих пор не имеем средства сохранить произвольному объекту произвольные данные (custom_data - это ни разу не произвольные). Далее, разные наименования методов для game и se-объектов, делающих одно и то же, ни кого не смущают, нет ? Сначала проверяем тип объекта по отсутствующим методам (вместо того, чтобы иметь нормальный флажок), а потом... Кстати, какого, вообще, дергать метод, со всеми его накладными расходами, если он возвращает константу ? Что, сразу по людски нельзя ? Ну и можно продолжать до бесконечности. В общем, пользуются тем, что, во-первых, ЗНАЮТ, во-вторых - как могут. Вот вам и все "мнения". Аналогично, кстати, со скриптовыми велосипедами. Справочника - нет, совместимости - нет, вот и ага. Изменено 21 Августа 2015 пользователем Dennis_Chikin 1 Поделиться этим сообщением Ссылка на сообщение
Dennis_Chikin 3 665 Опубликовано 21 Августа 2015 Это о том, что делать с исходниками движка. Особенно, если вдруг кому нечем заняться, или, особенно, есть спортивный интерес "сделать что-нибудь". 1. Прошерстить, и ответить, наконец, на все проклятые вопросы. 2. По результатам п1 будет сразу видно, чего в него добавить. Или не добавить. Поделиться этим сообщением Ссылка на сообщение
Dennis_Chikin 3 665 Опубликовано 22 Августа 2015 (изменено) мог бы кучу методов накидать, которых нет, которые нужны, просто необходимы для адекватной работы с движком. Вообще-то я завел речь о справочнике по тому, что вполне может оказаться - не так, чтобы и кучу. Вполне могут быть готовые, но либо обрезанные, либо такие, что ни кто не знает, как ими пользоваться. (Ага, спрашиваю: что делает enable_memory_object() ? У меня оно либо не делает ничего, либо виснет; also, спрашиваю: что у них внутри всех ихних *info ?) Вполне возможно, что надо только допилить. А может быть, и не надо, а мы просто не умеем их готовить. Во-вторых, именно что не прибегая к телепатии, собрать имеющееся по группам и функционалу, не от названия, а от "что оно делает" - как раз сразу будут видны "пустые места" - чего именно в этой группе не хватает. Кстати, идея скрещивать нестабильный мод с нестабильным движком - воистину, плохая. Действительно, пачки самых странных глюков и загадочных вылетов быть просто обязаны. И понять, откуда они - будет весьма проблематично. Движок можно менять только на стабильном моде. Либо мод делать уже под измененный стабильный движок, затрагивая только новые возможности, не трогая ничего принципиального в моде. Изменено 22 Августа 2015 пользователем Dennis_Chikin 2 Поделиться этим сообщением Ссылка на сообщение
Dennis_Chikin 3 665 Опубликовано 22 Августа 2015 успеть деактивировать объект до того, как он занесется в список врагов Во-во. Именно это я и пытался делать. Результаты- вышеуказанные. Поделиться этим сообщением Ссылка на сообщение