Dennis_Chikin 3 663 Опубликовано 31 Января 2015 (изменено) Desertir, варка артов - это, по-хорошему, не событие актора. Там так же не нужна точность в 200ms, ну и не нужен "запуск". Простая очередь, вешающаяся на самый медленный апдейт из всех, что есть - вполне достаточна. Хотя, кстати, да: можно еще при загрузке проверять - есть ли арты в очереди, и не добавлять ее в апдейт вообще, пока не будет инициирована новая "варка". То же самое и с выбросом: есть прогнозированное игровое время - по нему и запускаем, можно - с запозданием. Если к тому же модифицировать - то там вообще последовательность событий с проверками на "безопасность" надо делать. Опять же - "простой" медленный апдейт, в идеале еще и с проверкой загрузки движка. Вот кстати, да, если вести речь о модификации оного движка, то было бы не лишним иметь систему "необязательных" событий - то есть, чем-то заняты - ну и черт с ними, с этими событиями - подождут до другого раза. P.S. сообразил, что действительно имеем семантическую путаницу, происходящую из того, что на самом деле у нас и нет ни каких "таймеров". Есть их эмуляция, все из того же самого апдейта. Причем апдейты (не важно чего) - по сути единственный способ получить управление. В то время как нормальный таймер - это "железный" (ну или системный) вызов нашего кода, действительно, в запрограммированное время. Вот, собственно, и... Изменено 31 Января 2015 пользователем Dennis_Chikin Солянка обезжиренная, диетическая, полезные советы по "солянке", текущий тестовый патч Поделиться этим сообщением Ссылка на сообщение
Dennis_Chikin 3 663 Опубликовано 31 Января 2015 (изменено) Ну, вообще-то приведенный вариант - он уже тоже "несколько" устарел, но по смыслу - да. в call_upd3() мы проверяем - есть ли ожидающие своей очереди арты. Если есть - проверяем еще и условия, что пора. В простейшем варианте - такое условие - время: n игровых секунд от начала игры, допустим. (в своем варианте я заменил на "от загрузки", но это не принципиально). В не простейшем - но это уже разговор о вкусе фломастеров - я бы предпочел вариант "насыщения" аномалии, а не время. Назвать это таймером - можно и назвать, конечно. Почему ж нельзя ? Если хочется ? Но, даже такой способ я считаю чрезмерно агрессивным, поэтому ипользую очередь функций, которая просто перезапускается раз в 5 секунд, если закончилась. А уже в ней очередь аномалий, с которыми надо что-нибудь сделать. if t5000i == 0 then -- ни чем не заняты ? if global_time_ms >= t5000t then t5000t, t5000i = global_time_ms + t5000q, 1 -- здесь можно сделать что-нибудь полезное end else gp_fn = t5000[t5000i] -- выполняем последовательно что там еще есть if gp_fn then t5000i, amk.oau_watchdog = t5000i + 1, gp_fn[2]; gp_fn[1]() else t5000i = 0 -- и используем остаток end end Но это уже, простите, уже совсем не таймеры. Изменено 31 Января 2015 пользователем Dennis_Chikin Солянка обезжиренная, диетическая, полезные советы по "солянке", текущий тестовый патч Поделиться этим сообщением Ссылка на сообщение
Dennis_Chikin 3 663 Опубликовано 31 Января 2015 Ну, о терминологии: "таймер" и "очередь" - вообще-то взаимоисключающие понятия. Таймер - это мы должны бросить все, и немедленно выполнить. Очередь - это именно когда дойдет - вот тогда и... t5000i в примере - это как раз указатель на текущий элемент очереди. Есть - выполняем, и ставим указатель на следующий. Нет - ничего не делаем. По времени здесь происходит установка на первый элемент - это чтобы "лишний" раз ничего НЕ выполнялось. Да, если мы говорим о таймерах - повторяюсь, там обработка должна начаться сразу, как только время пришло. Если же используется очередь - оно может и прийти, и пройти, и еще раз прийти (точнее, в рассматриваемых реализациях - только пройти). Так вот, в первоначальном утверждении, с которого начался сыр-бор, было о том, что вот нет в игре ничего такого, чтоб "вот прям счаз все бросить, и начать выполнять это", чтобы было обусловлено именно временем. Солянка обезжиренная, диетическая, полезные советы по "солянке", текущий тестовый патч Поделиться этим сообщением Ссылка на сообщение
Dennis_Chikin 3 663 Опубликовано 31 Января 2015 (изменено) fastcall не гарантирует одинаковые интервалы. Тоже меняются в зависимости от нагрузки, хотя и не так сильно. Хотя на мой взгляд - вполне, и даже избыточно. Просто надо помнить, что точно и через него ничего не отмерить. Где-то сам же malandrinus и описывал. game_time() - проблема с разрядностью. Да, так называемое "45-е мая". Ну, тут все по разному решают. Я вот, опять же, остановился на том, что 45 игровых дней на одной локации без единой перезагрузки сидеть вряд-ли кто будет. 2 xStream, к вопросу об определениях: "Таймер - нечто, позволяющее выполнить какое-либо действие через минимальное определенное время" - в принципе, годится. Хотя, вообще-то, "гарантированно выдерживаемый интервал времени". Изменено 31 Января 2015 пользователем Dennis_Chikin Солянка обезжиренная, диетическая, полезные советы по "солянке", текущий тестовый патч Поделиться этим сообщением Ссылка на сообщение
Dennis_Chikin 3 663 Опубликовано 1 Февраля 2015 (изменено) По вопросу "исторического наследия" - так не то слово. Собственно, то что есть в амк-моде - в какой-то момент (и момент весьма затянулся) было практически единственным источником информации о "что вообще есть, и как это можно использовать". С работающими примерами. А вот вопрос о том, что из этого следует использовать в 2015 году, и в каком виде - вопрос уже другой. Как и вопрос о том, следовало ли вообще размножать то, что было в моде посредством простой копипасты, и скрещивая что попало с чем-нибудь еще. Причем вопрос уже не к авторам амк, естественно, а к тем, кто так делает. Впрочем, опять же совершенно верно, что идея заставить ходить всех строем - неполезна, и в общем-то нереализуема. Просто это работает в обе стороны. "Зачем сделали, зачем выложили, зачем написали ?" - здесь ответ простой, и не очень приятный для вопрошающего. В общем, даже странно, что именно об этом только здесь 5 страниц, не считая других тем, и не считая того, что отправилось в корзину ну вот хотя бы за пару последних месяцев. Остается только еще раз повторить: Посчитали нужным сделать - сделали. Посчитали нужным выложить - выложили. Посчитали нужным описать: что сделано, как работает, как используется - опять же, написали. Увидели, что нечто можно/нужно поправить - опять же, выложили свой вариант. Так же в принципе общеполезно может быть и "вот имеющийся вариант обладает такими вот особенностями, я их использую вот таким способом, а недостаток в моем случае ни как себя не проявляет/не мешает, поскольку вот в таких вот условиях он никогда не проявится". Ну и дальше уже дело хозяйское, кто что для себя выберет. P.S. А, да, остается только добавить, что "бывают и просто сны", и не всегда стоит искать какие-то намеки на неведомое в простых фразах, относящихся к самому предмету поста. Изменено 1 Февраля 2015 пользователем Dennis_Chikin Солянка обезжиренная, диетическая, полезные советы по "солянке", текущий тестовый патч Поделиться этим сообщением Ссылка на сообщение
Dennis_Chikin 3 663 Опубликовано 1 Февраля 2015 (изменено) Что значит, "не разрешается" ? Где это написано ? Просто обсуждать и критиковать можно так, чтобы с этого была какая-то польза, а можно - чтобы получилось лишь много букв. "не умеете их готовить" - это и есть много букв. Покажите, как вы их готовите - будет польза. Изменено 1 Февраля 2015 пользователем Dennis_Chikin 1 Солянка обезжиренная, диетическая, полезные советы по "солянке", текущий тестовый патч Поделиться этим сообщением Ссылка на сообщение
Dennis_Chikin 3 663 Опубликовано 1 Февраля 2015 Вот теперь уже я хочу пояснений. Означает ли все написанное, что в 2015-ом году все обязаны делать вот так: https://dl.dropboxusercontent.com/u/27871782/amk.script только прикрутить еще куда-то сбоку систему ивинтов и песочницу от одного конкретного автора (указать, какого именно) ? Кто не хочет делать так - отключить от интернетов и сослать на лесоповал ? Солянка обезжиренная, диетическая, полезные советы по "солянке", текущий тестовый патч Поделиться этим сообщением Ссылка на сообщение
Dennis_Chikin 3 663 Опубликовано 1 Февраля 2015 (изменено) Таки вопрос опять же: что делать с приведенным выше образцом ? Указанные проблемы/возможность проблем (про "перестаравшись" и про затраты времени) - да, согласен, есть. Да, несомненно, есть спортивный элемент, в какой-то степени. Или не спортивный, а разгребая вот то, что, опять же, в приведенном примере - заодно и переписал. И, отдельно, по поводу "все", "у всех" и "некрофилия" - несколько категорично. Не все и не у всех, во-первых, во-вторых - некоторым вещам тоже лет по пять-шесть. "- Кто не хочет делать так - отключить от интернетов и сослать на лесоповал ? - Естественно." О, вот мы и дошли до сути. Благодарю, вопросов больше нет. Изменено 1 Февраля 2015 пользователем Dennis_Chikin Солянка обезжиренная, диетическая, полезные советы по "солянке", текущий тестовый патч Поделиться этим сообщением Ссылка на сообщение
Dennis_Chikin 3 663 Опубликовано 1 Февраля 2015 (изменено) Спасибо, про profile_timer () я в курсе. Хотя, опять же, кому и пригодится.Впрочем, некоторые эффекты вполне можно оценить и визуально. Вот те самые, например, с трэйд-менеджером.А некоторые просто переписываются "по ходу дела". Если поменял 10 строк - то почему бы и не еще 5 соседних.P.S. А образец, кстати, как раз 2015го года, и если зайти в более соседний раздел, то можно увидеть, что вот на его основе продолжают "развивать". P.P.S. И, да есть еще такое слово как совместимость. Не та, которая с сэйвами, сделанными на ТЧ1.0, конечно, но та, которая step-by-step. В смысле, чтобы не переделать за раз все 13Гб мода, сразу как надо и без ошибок, а чтоб на промежуточных стадиях хотя бы запустить и посмотреть, что получается. (Бэг пардон за очередное неудачно употребленное слово). Изменено 1 Февраля 2015 пользователем Dennis_Chikin Солянка обезжиренная, диетическая, полезные советы по "солянке", текущий тестовый патч Поделиться этим сообщением Ссылка на сообщение
Dennis_Chikin 3 663 Опубликовано 1 Февраля 2015 (изменено) Покаянцы. "Существа Зоны с подавляющим ментальным полем - то есть способных брать другие существа под свой контроль или подавлять их волю. Ментально воздействуют на совесть жертвы, вынуждая её стремиться к искуплению грехов - то есть кидаться в аномалии или просто давать себя съесть. ...и тут началась ментальная атака. В голове поднялся клубок стыдных воспоминаний. Вспомнились всякие мелкие и крупные грехи, грешки, просчёты и смешные ситуации, в которые он попадал. Охватило труднопреодолимое желание немедленно встать и уйти, чтобы где-нибудь оплакать свою бездарно проведённую жизнь - и подальше, подальше от чужих глаз. всё это метелилось в голове, взывая к покаянию и усовещению: немедля отдать ближнему всё ценное и сдохнуть, сдохнуть прямо сейчас. ...чувствуя, что недостоин жить и дышать, и что ему необходимо прекратить и то и другое немедленно. Встать, признать поражение, отдать все деньги и вещи соседу по столику, а потом скорее бежать вешаться. Бежать и вешаться вот прямо сейчас." Реквизиты самого произведения не привожу, поскольку ценного там - только вот этот отрывок. Изменено 1 Февраля 2015 пользователем Dennis_Chikin Солянка обезжиренная, диетическая, полезные советы по "солянке", текущий тестовый патч Поделиться этим сообщением Ссылка на сообщение
Dennis_Chikin 3 663 Опубликовано 1 Февраля 2015 Вот есть пост. В нем - ссылка + история вопроса. Что "ежели скрестить вот то и еще вон то - все плохо, а вот так - вроде и ничего. Что сделано - а просто выдернуто из ... и развернуто". Вот другой пост - ссылка, и вот к ней, к ЭТОЙ ссылке написано: "а вообще - не нужны". Вот третий - тоже, "просто убрано лишнее" (ну и там дальше поправили, что убрано не все лишнее). Ну какие еще надо поклоны исполнить, чтобы на лесоповал все же не ехать ? Или только написать завещание в пользу потерпевших, и, действительно, повеситься ? Меньшим не удовлетворитесь ? Солянка обезжиренная, диетическая, полезные советы по "солянке", текущий тестовый патч Поделиться этим сообщением Ссылка на сообщение
Dennis_Chikin 3 663 Опубликовано 1 Февраля 2015 (изменено) xStream, а вот теперь я настоятельно прошу цитату "некоего персонажа". В которой будут упоминаемые слова. По тому как Вы действительно уж слишком упорно пытались перевести вопрос в плоскость административную, и Вам это удалось. То есть, жалоба принята к рассмотрению, и по итогам либо я иду в бан, либо - кто-то другой. Карлан, да если бы против... Ты же знаешь историю вопроса. И многие здесь знают. Просто упорно делают вид. Вообще, мучительно пытался вспомнить, где я это видел. Вспомнил. Сказка о том, как на день рождения некоей принцессы забыли пригласить одну из ее крестных. И даже не забыли, а письмо где-то потерялось. Но кого это волнует ? Мстя будет жестокой, неотвратимой, и всем, кто под руку попал. За ВСЕ. А также еще и за многое другое. Просто, был некий закрытый раздел, созданный этим летом, не будем показывать пальцем, кем созданный, в который пригласили всех, кто был на форуме в тот момент, и попросили расписать у кого чего есть под рукой. Ну а другие чтоб развили и дополнили. Чтоб потом скомпоновать, и уже в таком виде открыть. Поскольку с затеей ничего не вышло, то раздел расформировали, а часть тем перетащили в открытый доступ как было и как попало. Ну да кого это теперь волнует... Главное, повод есть, и ВСЕОБЩИЙ ВРАГ - тоже. И кстати, опять же вспомнился Владимир Вольфович. Когда обсуждалась некая гадость. Как сказал тогда упомянутый В.В. "Это - гадость ? Нет, вот СЕЙЧАС будет гадость." Так вот, извольте - гадость: все эти суперсовременные системы 12-го года - тоже старье. И тоже в музей. По тому что - борьба с ограничениями движка. Каковой нынче есть в исходниках. И еще неизвестно, когда у кого и дочего руки дойдут, и кто в итоге окажется в выигрыше: пользующщиеся музейными экспонатами 2008-го, 10-го, 12-го, или вовсе 15-го. Или какими-то промежуточными вариантами. Вот теперь можете писать жалобы. Администраторам, в конституционный суд, в Гаагу. Да, не забудьте только часовню 18-го века помянуть. Сколько здесь модераторов за историю форума сожрали ? Ну, одним больше-одним меньше - какая разница. Ну и цитатку жду. Изменено 2 Февраля 2015 пользователем Dennis_Chikin Солянка обезжиренная, диетическая, полезные советы по "солянке", текущий тестовый патч Поделиться этим сообщением Ссылка на сообщение
Dennis_Chikin 3 663 Опубликовано 2 Февраля 2015 (изменено) - А что, собственно, и ? - Это очень плохая идея. Разделение на движок и скрипты позволяет распределить роли при разработке игры, Ну вот я тоже примерно про это. Собственно, при отсутствии в сталкере скриптовой части, которую оказалось возможно изменять, не факт, что вообще моды на Сталкер были бы. Ну или максимум - маргинальные проекты, как те, в которых в 201* году маленькая группка любителей все еще перепиливает игрушки под дос первой половины 90-х... Кстати, здесь же мы подходим и к вопросу об ООП. Когда я писал про "не знаю, что это такое " - в общем, да, было некое утрирование. На самом деле есть места, где инкапсуляция (на самом деле изоляция) и наследование дают определенное удобство. Так же, как есть и некоторые проблемы. Вот недавно столкнулся с тем, что, действительно, game_object может существовать в нескольких экземплярах, и изменения родителю не передаются, хотя надо. Пришлось, хе-хе, через ненавистный многим pstor. И в общем-то дискутабельный вопрос о гомогенности кода: должно-ли все-все быть оформлено в едином стиле, даже если это неудобно (ну, то есть, включая printf( "Hello world" ), или в некоторых случаях процедурщина все же уместна. Вот пресловутый profile_timer() показывает, что в определенных случаях процедурщина смысл таки имеет (и ожидание 6-8 сек vs. 13 - это мелочь на фоне 5 минут, но когда те 5 сведены к 0.2 - то и 13 vs. 6 - тоже заметно). А коли так - может и hello world в обычную функцию развернуть не грех ? А продолжая рассуждения общетеоретические, то васик vs. ООП - оно, конечно, да. Но вот начав работать с C, причем сразу с ленточной/дисковой подсистемой, и имея набор хорошо организованных пресловутых .h (зато без линкера , что, собственно, и заставляло думать о содержании этих самых .h) - некоторые более поздние находки кажутся не таким уж и достижением Мировой Мысли, а Страустрап - скорее даже и вредным. 2 Desertir: "либо уже тормозит на столько, что код пишется со скоростью выполнения программы." - приложение запускается дольше, чем пишется код. И тогда уже вот честно становится лениво натравливать на каждый кусок profile_timer(), вместо того чтобы просто взять, и банально снести 20 вызовов функций из полусотни скриптов, результатом которых - получение одного битика. Изменено 2 Февраля 2015 пользователем Dennis_Chikin Солянка обезжиренная, диетическая, полезные советы по "солянке", текущий тестовый патч Поделиться этим сообщением Ссылка на сообщение
Dennis_Chikin 3 663 Опубликовано 2 Февраля 2015 (изменено) Ага, когда имеем софт для управления рэйдом, или даже для банальной записи CD - иногда приходится задумываться о том, что может его в следующую major версию, или пусть пользователи себе все болванки позапорют, а кому повезет - просто перестанет оборудование работать после апдейта. Или пусть просто пока подождут обновляться/покупать железо новых моделей. Да, возвращаясь к ООП, тут наверное стоит скорее подумать о таком факторе, как стоимость управления разработкой. Ну, то есть, и во времени, и в деньгах, и в собственно людях.Сколько-то десятков лет жили без ООП, и даже без dll и ничего. И 640Kb - это было действительно очень много, по тому как работало и в 16-ти.Но, требовалась довольно таки серьезная дисциплина. Примерно оттуда - "один файл целиком на экране", системы наименований файлов, наименований функций, что куда должно передаваться и т.д.И вообще - один модуль, который на входе получает текст и на выходе выдает текст.Потом, да, еще придумали линкеры и возможность собирать .obj в .libДа, с ООП ни о чем таком думать не надо - "не хочешь - заставим". Хотя в принципе, при соблюдении драконовской дисциплины скорость разработки не страдает ни разу. Скорее даже, наоборот, отсутствуют лишние телодвижения.2 Viнt@rь: "драконовская" - это про меры по оформлению модулей и их взаимодействия. upd: ну, да, опять неправильное слово использовал. Скорее что "сопровождение" да. Драконовость в случае процедурщины - она подразумевает, что раз написанная функция всегда будет принимать те аргументы, которые принимала, именно в том виде, всегда возвращать результат тоже в заданном однажды виде, и лежать на своем месте. Сама написана так, что открыв файл - сразу понятно, что она делает. На глобальные переменные опять же пишутся спеки, и сам выбор имен заранее оговаривается. И т.д. В случае с ООП ко всему этому можно относиться гораздо проще. Изменено 2 Февраля 2015 пользователем Dennis_Chikin Солянка обезжиренная, диетическая, полезные советы по "солянке", текущий тестовый патч Поделиться этим сообщением Ссылка на сообщение
Dennis_Chikin 3 663 Опубликовано 3 Февраля 2015 что онлайновый объект есть, а серверного нет? Такого в принципе быть не должно. Есть. Во-первых, болт, серверного объекта просто не имеющий. Во-вторых, неоднократно встречался с ситуацией, когда подряд отрабатывают два скприпта, удаляющих один и тот же объект, и вот здесь любые манипуляции кроме получения id от игрового дают набор самых забавных эффектов. А, да, в выкладывавшемся мной недавно, как тут изящно изволил выразиться один из пользователей, "дерьмокоде" имеет место быть иллюстрация с игровым объектом, полученным через drop-коллбэк. local obj = alife():object( id ) if obj then if obj.parent_id ~= 65535 then -- переложили в тайник/отдали else -- выбросили end else -- удален end Ну, правда, случай несколько иной, но настораживающий. Допускаю, что через actor:object() в определенных ситуациях получить тоже вполне можно. Наконец, странные манипуляции с патронами при смерти непися, попытка удалить которые из death_manager тоже в общем-то заканчивается непредсказуемо. Солянка обезжиренная, диетическая, полезные советы по "солянке", текущий тестовый патч Поделиться этим сообщением Ссылка на сообщение
Dennis_Chikin 3 663 Опубликовано 3 Февраля 2015 (изменено) "лечить надо болезнь, а не симптомы." - На самом деле не надо доказывать. Самоочевидно. Просто, есть разные лекарства, ну или даже разные названия для одного и того же лекарства. И, в общем-то, само лечение сводится к соблюдению определенной дисциплины. Которую можно поддерживать добровольно, либо быть вынужденным/заставлять поддерживать техническими средствами. Ну я вот пошел к тому, что удаление может быть только в одном единственном месте. После которого уже ничего ни откуда не вызывается, и ни куда не передается. Ага, и в биндер руками тоже ни кто не лазит. Что и как выбрать - вот это интересный вопрос. Подозреваю, что в итоге все равно все будет определяться личными вкусами. Кому-то не лень 100500 оберток написать, и еще охранника с дубиной приставить. Кто-то решил, что будет следовать правилам, которые для себя же однажды и установил. Кто-то выберет нечто среднее. Однако, имея дело с неким супермегамодом, слепленным неизвестно кем и неизвестно из чего, иногда приходится и затычками пользоваться. По тому как невозможно сделать ВСЕ СРАЗУ. И вот здесь надо знать, что игровой объект без серверного случиться таки может. В общем-то, вообще все, что угодно случиться может. Пока не доказано обратное. Возможно тот динамит каким-нибудь babah.scriptом взрывается. Или в аномалию выкидывается, которая его тут же и удаляет. Подумавши: наверное, это еще и к вопросу о комментировании. И документировании. "supermod9001.on_item_drop(obj) -- здесь взяли и удалили предмет ... supermod100500.on_drop(obj)" собственно, вот здесь кому-то может быть и неожиданной сама идея, что могут ведь, действительно, и удалить. Опять же "От этого момента вызовы оставшихся в очереди колбэков не имеют смысла, поэтому тот колбэк, что удаляет предмет, должен просигналить, что он является последним в цепочке вызовов." - аналогично, неочевидно, почему именно. Если комментарии это не разъясняют. Либо отдельное описание. P.S. Кстати, а почему не имеют ? Серверного объекта нет, а вызовы вполне могут и иметь. 2 xStream: Алилуйя ! А то все анекдот про "гуталина нет" вспоминался. Изменено 4 Февраля 2015 пользователем Dennis_Chikin Солянка обезжиренная, диетическая, полезные советы по "солянке", текущий тестовый патч Поделиться этим сообщением Ссылка на сообщение
Dennis_Chikin 3 663 Опубликовано 4 Февраля 2015 (изменено) таких случаях перед удалением можно дропать, как вариант. А вот не вариант. Ну, то есть, в этом конкретном случае, с инвентарем актора, еще туда-сюда... И то не факт. Вообще же, время, проходящее между разными событиями - оно не гарантировано. Так что очень даже может выйти неожиданность. Не, удалили - значит, удалили. Не важно, как именно мы гарантируем, что ни кто не попытается что-то делать после, но такая гарантия нужна. Опять же, выбрасыванием вносится путаница - кто выбросил, зачем выбросил ? не надо исправлять макаронный кодА надо сносить, да. Вот только где бы волшебную палочку найти, с функцией "снести мгновенно все спагетти, и заменить на не-спагетти, и чтоб сразу работало" ? который у себя вел учет предметов в инвентаре Опять же, я для себя решил, что у меня ни кто сам ничего не ведет и не меняет. Есть разделение на "информативную часть" - выбросили предмет с какой-то секцией - все заинтересованные модули, которые на это подписывались, оповещены. Но именно о событии. Кому нужны собственно предметы инвентаря, или желает, чтобы с ними что-то произошло - ходит как раз вот в эту самую систему учета. Ну, здесь принцип отличается от вышеописанных суперсистем тем, что вместо технических средств используется набор правил, добровольно соблюдаемых. (Черт, вот так отложишь в долгий ящик то, что надо было 5 лет назад написать буквами в файл, потом начинаешь объяснять по кускам, получается нифига непонятно. Лень - смертный грех.) В общем, "должен остаться только один" - в смысле, нечто, что отлавливает и сортирует движковые события (нажали кнопку "выбросить", нажали кнопку "переложить", продали, нечто в аномалию попало). Этот кто-то один и все критичные манипуляции осуществляет. С учетом ранее отловленного движкового. Мда, опять же та же "песочница" получается (или "ивинты" и т.д.) - только названия разные, и разная степень применения технических средств принуждения. Вкус фломастеров... Изменено 4 Февраля 2015 пользователем Dennis_Chikin 1 Солянка обезжиренная, диетическая, полезные советы по "солянке", текущий тестовый патч Поделиться этим сообщением Ссылка на сообщение
Dennis_Chikin 3 663 Опубликовано 4 Февраля 2015 Стоп, а почему, собственно, потерян смысл доставки сообщения, если сообщение - как раз о его потере ? Не понял. Солянка обезжиренная, диетическая, полезные советы по "солянке", текущий тестовый патч Поделиться этим сообщением Ссылка на сообщение
Dennis_Chikin 3 663 Опубликовано 4 Февраля 2015 (изменено) Э... Да, что-то полет мысли... случился, да. Попробую, что-ли, восстановить эту самую мысль, которая вроде обсуждается. Пусть меня поправят, если это не совсем она. На примерах, что-ли... Пусть у нас будет, скажем, ну, скажем, какой-то чудный скрипт, при выбрасывании предмета подменяющий его другим. Предположим также, что у нас есть чудный скрипт, при выбрасывании этого же предмета заставляющий всех неписей исполнять танец маленьких лебедей. По идее, все хорошо, если скрипт с лебедями ничего не хочет от выбрасываемого предмета. А он может, например, хотеть, чтобы предмет был одноразовым, и ТОЖЕ пытается его удалить. Но, первый скрипт тоже хочет удалить этот же предмет. Итог: один из скриптов успевает раньше, а другой - либо должен проверять, что удаляемое все еще существует, либо мы в итоге висим. Вот как-то так, вроде. Да, с получением предмета, если его тут же пытаются удалить - еще хуже. Пока очевидных решений 3, со своими достоинствами и недостатками: 1. Удаляем только из специального места в специальный момент. 2. Кто первый успел, тот и сработал, до остальных сей факт не долетает вообще ни в каком виде. 3. Вариация п1. - "блокировка" собственно удаления тем, кто заявил свои права на эту опереацию раньше. Ну и то, которое было: проверять - а есть ли еще объект, с которым хотели работать. В общем-то вариация п2. P.S. Не, вот ради только этого повода запихивать какой-то дополнительный функционал непосредственно в движок - кажется, все-же, избыточным. 2 Allender: ну так я здесь же решения и перечислил, из уже использующихся. С разными вариациями. Для частного случая, когда за всем этим кто-то следит, и удаление происходит по инициативе скриптера. Возможно, что-то и забыл. Более общий случай требует мер несколько более радикальных. Изменено 4 Февраля 2015 пользователем Dennis_Chikin Солянка обезжиренная, диетическая, полезные советы по "солянке", текущий тестовый патч Поделиться этим сообщением Ссылка на сообщение
Dennis_Chikin 3 663 Опубликовано 4 Февраля 2015 (изменено) Теоретически, к моменту следующего апдейта все должно утрястись. Там и удалять. Функции, вызываемые из этого самого апдейта, тоже ведь можно добавлять и удалять вполне динамически. Изменено 4 Февраля 2015 пользователем Dennis_Chikin Солянка обезжиренная, диетическая, полезные советы по "солянке", текущий тестовый патч Поделиться этим сообщением Ссылка на сообщение