- 3
- 2
Пример: Дюп через race condition при разрушении тележки с сундуком
Механика:
Если два игрока одновременно разрушают тележку с сундуком (Minecart with Chest), возникает ситуация, когда игра не успевает обработать оба действия корректно. В результате:
Тележка дропается как предмет.
Содержимое сундука тоже дропается, но дублируется для каждого игрока.
Почему это race condition:
Оба игрока отправляют на сервер запрос на разрушение тележки.
Сервер обрабатывает их почти одновременно, считая, что каждый игрок "успел первым".
Из-за отсутствия синхронизации:
Каждый игрок получает свою копию содержимого сундука.
Тележка тоже может дропнуться дважды.
Вот так вот я ваш великий игрок который нашел более 18+ дюпов, сливаю вам этот дюп. И да дюп этот был доработан от плагина лаг машин, прошлый дюп: Ломаем вагонетку с воронкой (с ресами) выходим на 5 минут с сервера, содержимое вагонетки дропается, а сама вагонетка за счет логики майнкрафта остается на месте (ПРЕДУПРЕЖДЕНИЕ! УСТАРЕВШАЯ ВЕРСИЯ), а вот мод делайте сами что бы автоматизировать это, так же для справок по разработке мода советую глянуть видео от какого то типа название: Самый огромный урон в майнкрафте, там используется специальная система для дубликата аккаунтов (БЕЗ МОДОВ, НО ВЫ МОЖЕТЕ ДОРАБОТАТЬ). Всем удачи! :)
Сама идея, те кто не шарят можете не читать:
Race condition (гонка состояний) - это ситуация в многопоточной среде, когда два или более потока пытаются изменить общее состояние приложения одновременно и порядок выполнения операций не определен. При наличии race condition можно получить непредсказуемые результаты или ошибки.
Например, предположим, что имеется общий ресурс - переменная count, которая увеличивается на единицу при каждом обращении. Если два потока одновременно выполняют инструкцию count++, то может произойти следующее:
Первый поток читает текущее значение переменной count (например, 2).
Второй поток также читает текущее значение переменной count (также 2).
Первый поток увеличивает значение переменной count на единицу (3).
Второй поток также увеличивает значение переменной count на единицу (3).
После этого значение переменной count будет равно 3, хотя должно было быть равно 4. Это происходит из-за того, что оба потока считали старое значение переменной до того, как она была обновлена первым потоком.
Механика:
Если два игрока одновременно разрушают тележку с сундуком (Minecart with Chest), возникает ситуация, когда игра не успевает обработать оба действия корректно. В результате:
Тележка дропается как предмет.
Содержимое сундука тоже дропается, но дублируется для каждого игрока.
Почему это race condition:
Оба игрока отправляют на сервер запрос на разрушение тележки.
Сервер обрабатывает их почти одновременно, считая, что каждый игрок "успел первым".
Из-за отсутствия синхронизации:
Каждый игрок получает свою копию содержимого сундука.
Тележка тоже может дропнуться дважды.
Вот так вот я ваш великий игрок который нашел более 18+ дюпов, сливаю вам этот дюп. И да дюп этот был доработан от плагина лаг машин, прошлый дюп: Ломаем вагонетку с воронкой (с ресами) выходим на 5 минут с сервера, содержимое вагонетки дропается, а сама вагонетка за счет логики майнкрафта остается на месте (ПРЕДУПРЕЖДЕНИЕ! УСТАРЕВШАЯ ВЕРСИЯ), а вот мод делайте сами что бы автоматизировать это, так же для справок по разработке мода советую глянуть видео от какого то типа название: Самый огромный урон в майнкрафте, там используется специальная система для дубликата аккаунтов (БЕЗ МОДОВ, НО ВЫ МОЖЕТЕ ДОРАБОТАТЬ). Всем удачи! :)
Сама идея, те кто не шарят можете не читать:
Race condition (гонка состояний) - это ситуация в многопоточной среде, когда два или более потока пытаются изменить общее состояние приложения одновременно и порядок выполнения операций не определен. При наличии race condition можно получить непредсказуемые результаты или ошибки.
Например, предположим, что имеется общий ресурс - переменная count, которая увеличивается на единицу при каждом обращении. Если два потока одновременно выполняют инструкцию count++, то может произойти следующее:
Первый поток читает текущее значение переменной count (например, 2).
Второй поток также читает текущее значение переменной count (также 2).
Первый поток увеличивает значение переменной count на единицу (3).
Второй поток также увеличивает значение переменной count на единицу (3).
После этого значение переменной count будет равно 3, хотя должно было быть равно 4. Это происходит из-за того, что оба потока считали старое значение переменной до того, как она была обновлена первым потоком.