Dennis_Chikin 3 658 Опубликовано 4 Февраля 2015 Как один из вариантов сделать удаление (и много что еще, не хочу напрягать фантазию) чего-либо вне каких либо цепочек. Солянка обезжиренная, диетическая, полезные советы по "солянке", текущий тестовый патч Поделиться этим сообщением Ссылка на сообщение
Dennis_Chikin 3 658 Опубликовано 4 Февраля 2015 (изменено) В общем, да, соглашусь - разговор все время уходит почему-то именно в сторону "как сломать", ну или в лучшем случае "а как можно бороться с попытками сломать". (по "как можно бороться" - правильный ответ - "ни как; кто захочет - сломает". Про балет - это пример такого вот "захотели". В принципе, даже реальный, со слегка измененными именами действующих лиц.) Тоже возвращусь к началу - просто стоит запомнить, что это - возможно, и не ломать. Если попытка поломать где-то замечена - убрать. (на самом деле вопрос такой был: "откуда может взяться клиентский объект без серверного". Как выяснили - может.) Ну и возвращаясь еще немного назад - в начале был очень сильно китайский древнекод с динамитом, "как бы" должный именно сопротивляться попыткам сломать. Изменено 4 Февраля 2015 пользователем Dennis_Chikin Солянка обезжиренная, диетическая, полезные советы по "солянке", текущий тестовый патч Поделиться этим сообщением Ссылка на сообщение
Dennis_Chikin 3 658 Опубликовано 4 Февраля 2015 (изменено) Не, я тут вижу разговоры немножко о своем, о родном. Впрочем, топор vs. бензопила - хорошее сравнение. А вот то, что топор каменный и пила кривая (и еще в нее надо бензин заливать) - по назначению применять не пробовали, нет ? Прежде чем переходить на "да я, да ты..." ? И, кстати, да "никто не родился с бензопилой в руках". По-моему, как-то быстро все об этом забывают. Изменено 4 Февраля 2015 пользователем Dennis_Chikin Солянка обезжиренная, диетическая, полезные советы по "солянке", текущий тестовый патч Поделиться этим сообщением Ссылка на сообщение
Dennis_Chikin 3 658 Опубликовано 4 Февраля 2015 (изменено) Пример странного был в древнемодах. Водка и энергетик. В сочетании со всякими модификациями древних "варок" медуз из водки и хвостов эффекты получались, гм, познавательными. А еще когда поверху какую-нибудь "детонацию" со рвущимся рюкзаком навешивали... О, еще "телепорты"... Изменено 4 Февраля 2015 пользователем Dennis_Chikin Солянка обезжиренная, диетическая, полезные советы по "солянке", текущий тестовый патч Поделиться этим сообщением Ссылка на сообщение
Dennis_Chikin 3 658 Опубликовано 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 658 Опубликовано 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 658 Опубликовано 5 Февраля 2015 (изменено) "т.к. параметр далеко не только секция." - остальное лично мне попадалось сильно реже. Поэтому в запросах подписантов принимаются (и, соответственно, проверятся) только "по секции" или "любой". А дальше то же самое можно повторить сколько угодно раз для любого количества параметров. Вот хоть как у Desertir. e.section == 'my_item' and - вот здесь очевидно придется руками каждый раз лазить везде, где надо что-то добавить или убрать. Либо что-то нетривиальное творить. Upd: Все, признаю. Вавилонское столпотворение свершилось, и с этого момента я ТОЖЕ уже перестал понимать, кто здесь вообще про что пишет, и что при этом имеет в виду. Изменено 5 Февраля 2015 пользователем Dennis_Chikin Солянка обезжиренная, диетическая, полезные советы по "солянке", текущий тестовый патч Поделиться этим сообщением Ссылка на сообщение
Dennis_Chikin 3 658 Опубликовано 5 Февраля 2015 (изменено) Добавьте мне в if ... then ... elseif ... что-нибудь из скрипта. Изменено 5 Февраля 2015 пользователем Dennis_Chikin Солянка обезжиренная, диетическая, полезные советы по "солянке", текущий тестовый патч Поделиться этим сообщением Ссылка на сообщение
Dennis_Chikin 3 658 Опубликовано 6 Февраля 2015 (изменено) Кажется, я понял, что происходит. Здесь все описания того, что кто-либо делает, начинаются примерно с середины. Ну, типа "историю вопроса все знают, как и зачем сделано - тоже все знают, куда что подключено, что там внутри и зачем оно подключено - тоже все знают. Осталось прояснить одну конкретную особенность реализации". это на самом деле не так. Вот по-этому адресаты и не понимают, зачем им вообще пишут ЭТО, и что, собственно, хотят. Вопрос - у кого-нибудь найдется время/желание написать все подробно и с самого начала ? 2 malandrinus: self.sm:call("on_drop", obj) - self. в примере как бы явно указывает на то, что относится к актору, а не к внешней системе, нет ? Изменено 6 Февраля 2015 пользователем Dennis_Chikin Солянка обезжиренная, диетическая, полезные советы по "солянке", текущий тестовый патч Поделиться этим сообщением Ссылка на сообщение
Dennis_Chikin 3 658 Опубликовано 6 Февраля 2015 "Но секунды - это уже совсем экстрим" - иногда бывает как раз полезно. Скажем, событие происходит раз в час, с точностью +- полчаса. Ну или даже пусть бы и раз в 5 секунд. Зачем здесь нужен лютый, бешеный поллинг с максимальной скоростью ? По случаю с ожиданием входа предмета в онлайн - закладываться на фиксированное время - вообще зло. Той секунды вполне может не хватить, если, скажем предмет далеко от актора, а с другой - если он будет секунду валяться - кто-нибудь другой вполне может сделать с ним нечто нехорошее. Так что, проверка нужна не так, чтобы сильно агрессивная, но проверять следует само событие. Солянка обезжиренная, диетическая, полезные советы по "солянке", текущий тестовый патч Поделиться этим сообщением Ссылка на сообщение
Dennis_Chikin 3 658 Опубликовано 1 Июня 2015 Добавить в LUA #define. А заодно - #include. Да, и научить его инлайну. А вот строки копировать - наоборот, отучить. P.S. И что-то сделать с векторами: либо изменяется то, что на входе, либо результат возвращается, не затрагивая аргумент. А не где попало как попало. Солянка обезжиренная, диетическая, полезные советы по "солянке", текущий тестовый патч Поделиться этим сообщением Ссылка на сообщение
Dennis_Chikin 3 658 Опубликовано 1 Июня 2015 А вот как раз переименовать что нам надо так, как хотим. Ну и простыни разные урезать. #include - в общем, для того же. Зло, на самом деле, от make, когда начинают писать на нем, вместо того, чтобы писать на вменяемом языке. Инлайн - это когда функция разворачивается в код. Строки - да, как ссылку. Ибо их копирование - занятие бессмысленное чуть более, чем полностью. Про вектора - это вот, например про когда надо писать вот такого монстра: c = vector():set( v_lin ):normalize():dotproduct( vector():set( lv_lin ):normalize() ) Солянка обезжиренная, диетическая, полезные советы по "солянке", текущий тестовый патч Поделиться этим сообщением Ссылка на сообщение
Dennis_Chikin 3 658 Опубликовано 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 658 Опубликовано 20 Августа 2015 (изменено) Идиотизм. На дворе 2015-й год скоро кончится, а у нас так до сих пор Страшные Тайны непорядочно разглашают. Вдруг враги воспользуются, и, о ужас, в свой мод вставят. За 2 года до выпуска очередного долгостроя. Впрочем, на фоне маринующихся разработок 2010-го... Но, да, при этом мы ноем, что наши гениальные разработки ни кому не нужны. И, да, разумеется, за 8 лет только мы знаем, КАК. И наше знание - единственно кошерное, но мы вам его не покажем ! P.S. Кстати, а ничего, что штуки три модов с этими страшными тайнами уже выпущено ? Кстати, пока изобретатели этих велосипедов, тоже экземплярах, этак, в 5-ти, если не больше, вышвыривали из команд всех "шпионов", и прятали эти самые велосипеды поглубже ? Изменено 20 Августа 2015 пользователем Dennis_Chikin 2 1 Солянка обезжиренная, диетическая, полезные советы по "солянке", текущий тестовый патч Поделиться этим сообщением Ссылка на сообщение
Dennis_Chikin 3 658 Опубликовано 20 Августа 2015 (изменено) Майн готт... В курилку ! Там завтра попробую объяснить. Изменено 20 Августа 2015 пользователем Dennis_Chikin 1 Солянка обезжиренная, диетическая, полезные советы по "солянке", текущий тестовый патч Поделиться этим сообщением Ссылка на сообщение
Dennis_Chikin 3 658 Опубликовано 21 Августа 2015 (изменено) "а я меняю для себя как удобно мне" Ну вот и что планируется получить в результате ? Сколько версий мы имеем на данный момент ? Что мы знаем о стабильности этих версий ? Об их функционале ? На сколько сложно (и вообще возможно) заменить одну версию на другую ? То есть, спортивный интерес удовлетворен, а вот делать все приходится таки скриптами. Во-вторых, да, я вот не вижу абсолютно ни какого понимания того, что можно и нужно делать скриптами, а что - переносить в движок. То есть, оно у каждого какое-то есть, но свое, и весьма интуитивное. Наконец, любой, кто захочет пользоваться этим самым измененным движком, получает интересный выбор: либо разгребать с нуля все то, что разгребали вносители правок, либо брать кота в мешке, зачастую - даже без описания. Смешно, но до сих пор нет коллекции исходников, которые можно просто скормить студии (кстати, какой версии ?), и получить рабочие экзешники без плясок с бубнами. Кто-то еще удивляется, что остальным, не смотря на его такую замечательную правку, по-прежнему проще "кобылу запрячь" ? Я вот прямо сейчас не готов написать вменяемый и структурированный текст про то, что и как надо сделать (не говоря уж о том, чтобы сделать все это самому), и сильно не уверен, что кто-то вдруг его хотя бы прочитает полностью, не говоря об том, чтобы из этого что-то воспоследовало, но без разгребания существующего бардака какого-то всеобщего счастья вот точно не случится. На выходе же нужно нечто, позволяющее без особого напряга просто пересобрать экзешник у себя + документация того, что внесено, + как этим пользоваться (доступное для освоения без "все бросить"), + ревизия этого внесенного со стороны, на предмет стабильности, взаимоисключающих параграфов и дублей. С массовым тестированием на стабильных модах, ага. А дальше - думать за архитектуру. Какие элементы объединяются во что-то более крупное, и на каких уровнях остается доступ, чтобы сохранить возможность управления происходящим из скриптов, но не испытывать нужды на каждый чих "писать скриптовый инвентарь и скриптовый ПДА" (не наезду ради, но мера ведь явно вынужденная, а не от избытка свободного времени), и не шарахаться между "торговлей полностью движковой" и "полностью скриптовой". Это вот было то, что касательно движка. Касательно же скриптовых велосипедов, гм. Поезд, конечно, ушел очень давно, но тем не менее, коль до сих пор что-то еще делается - делающим завести бы маленькую привычку: сотворили нечто, претендующее на прогресс относительно той конной тяги - черкнуть описание, и выложить. По ходу дела попалось под руку что-то, вызывающее у вас удивление всеобщим пристрастием к конной тяге - опять же, описание, и выложить. Как-то так. p.s. да, свой хост с gnats или типа того - оно бы, конечно, неплохо. Базу патчей, в смысле. Но коли нет, так хоть на форум. P.P.S. Да, этот самый движок кто-нибудь пробовал под x64 собирать ? Изменено 21 Августа 2015 пользователем Dennis_Chikin 1 2 Солянка обезжиренная, диетическая, полезные советы по "солянке", текущий тестовый патч Поделиться этим сообщением Ссылка на сообщение
Dennis_Chikin 3 658 Опубликовано 21 Августа 2015 (изменено) Практика показывает что к единому все равно не придут. Чтобы куда-то прийти - надо это самое что-то сначала иметь. Зайду издалека, и, заодно, слегка намекну на поле напаханное: Вот многие ли из здесь присутствующих ПОЛНОСТЬЮ прочитали "справочник по функциям и классам", и активно пользуются прочитанным ? Прежде чем бить себя пяткой в грудь, прошу чуть-чуть подумать. То есть, вот именно оттуда ли все, чем пользуетесь, или ? По тому как если внимательно глянуть, то, во-первых, там куча недоописанного и "наверное, вот так, но черт его знает, у меня просто висло", а во-вторых, он слегка малочитабелен, и уж тем более запомнить все это... Ну вот кто знает, как, например, работает ВСЕ, относящееся к memory object ? Ага, я на disable прежде всего намекаю. Меж тем, есть исходники, в которых кто-то копается. "Из интереса". А справочник - и ныне там. Вот хотя-бы, дописать недописанное, расписать подробности, сделать версию не как сейчас "если вы видите в коде неведомую фигню, то возможно, в теме вы найдете - ЧТО ЭТО", а с группировкой по назначению/функционалу. Как минимум, сразу станет видно, что надо поправить/добавить в движок. То есть, range() например, есть, а остальное конфиговое ? Что сейчас эмулируем через range() в апдейтах. Далее, да, сколько лет жуем темы всяких "хранилищ", прости-господи, сотворили целое rvp с какими-то файловыми системами, и при этом - до сих пор не имеем средства сохранить произвольному объекту произвольные данные (custom_data - это ни разу не произвольные). Далее, разные наименования методов для game и se-объектов, делающих одно и то же, ни кого не смущают, нет ? Сначала проверяем тип объекта по отсутствующим методам (вместо того, чтобы иметь нормальный флажок), а потом... Кстати, какого, вообще, дергать метод, со всеми его накладными расходами, если он возвращает константу ? Что, сразу по людски нельзя ? Ну и можно продолжать до бесконечности. В общем, пользуются тем, что, во-первых, ЗНАЮТ, во-вторых - как могут. Вот вам и все "мнения". Аналогично, кстати, со скриптовыми велосипедами. Справочника - нет, совместимости - нет, вот и ага. Изменено 21 Августа 2015 пользователем Dennis_Chikin 1 Солянка обезжиренная, диетическая, полезные советы по "солянке", текущий тестовый патч Поделиться этим сообщением Ссылка на сообщение
Dennis_Chikin 3 658 Опубликовано 21 Августа 2015 Это о том, что делать с исходниками движка. Особенно, если вдруг кому нечем заняться, или, особенно, есть спортивный интерес "сделать что-нибудь". 1. Прошерстить, и ответить, наконец, на все проклятые вопросы. 2. По результатам п1 будет сразу видно, чего в него добавить. Или не добавить. Солянка обезжиренная, диетическая, полезные советы по "солянке", текущий тестовый патч Поделиться этим сообщением Ссылка на сообщение
Dennis_Chikin 3 658 Опубликовано 22 Августа 2015 (изменено) мог бы кучу методов накидать, которых нет, которые нужны, просто необходимы для адекватной работы с движком. Вообще-то я завел речь о справочнике по тому, что вполне может оказаться - не так, чтобы и кучу. Вполне могут быть готовые, но либо обрезанные, либо такие, что ни кто не знает, как ими пользоваться. (Ага, спрашиваю: что делает enable_memory_object() ? У меня оно либо не делает ничего, либо виснет; also, спрашиваю: что у них внутри всех ихних *info ?) Вполне возможно, что надо только допилить. А может быть, и не надо, а мы просто не умеем их готовить. Во-вторых, именно что не прибегая к телепатии, собрать имеющееся по группам и функционалу, не от названия, а от "что оно делает" - как раз сразу будут видны "пустые места" - чего именно в этой группе не хватает. Кстати, идея скрещивать нестабильный мод с нестабильным движком - воистину, плохая. Действительно, пачки самых странных глюков и загадочных вылетов быть просто обязаны. И понять, откуда они - будет весьма проблематично. Движок можно менять только на стабильном моде. Либо мод делать уже под измененный стабильный движок, затрагивая только новые возможности, не трогая ничего принципиального в моде. Изменено 22 Августа 2015 пользователем Dennis_Chikin 2 Солянка обезжиренная, диетическая, полезные советы по "солянке", текущий тестовый патч Поделиться этим сообщением Ссылка на сообщение
Dennis_Chikin 3 658 Опубликовано 22 Августа 2015 успеть деактивировать объект до того, как он занесется в список врагов Во-во. Именно это я и пытался делать. Результаты- вышеуказанные. Солянка обезжиренная, диетическая, полезные советы по "солянке", текущий тестовый патч Поделиться этим сообщением Ссылка на сообщение