Подписывайтесь на наш Telegram и не пропускайте важные новости! Перейти

Вопрос GuiMove Funtime выбрасывает предметы

Начинающий
Начинающий
Статус
Оффлайн
Регистрация
8 Фев 2024
Сообщения
230
Реакции
2
Когда просто свапаю пердметы в инве, то все норм, но стоит начать брать их на правую кнопку мыши (допустим взять 32 факела из 64), или же пикнуть все предметы одного вида (PICKUP_ALL) то оно выбрасывает когда я начинаю отправлять очередь пакетов, и такое только на 1.16.5 анархии, на 1.21.8 все нормально, ничего не выбрасывает.

пишу на Fabric 1.21.4
 
Когда просто свапаю пердметы в инве, то все норм, но стоит начать брать их на правую кнопку мыши (допустим взять 32 факела из 64), или же пикнуть все предметы одного вида (PICKUP_ALL) то оно выбрасывает когда я начинаю отправлять очередь пакетов, и такое только на 1.16.5 анархии, на 1.21.8 все нормально, ничего не выбрасывает.

пишу на Fabric 1.21.4


На 1.16.5 если быстро кидаешь много пакетов при правом клике или PICKUP_ALL сервер думает что предметов больше чем есть, и выбрасывает лишние.
На 1.21 это исправили так что отправляй каждый пакет по одному с маленькой задержкой, чтобы сервер успевал обновлять инвентарь.
 
На 1.16.5 если быстро кидаешь много пакетов при правом клике или PICKUP_ALL сервер думает что предметов больше чем есть, и выбрасывает лишние.
На 1.21 это исправили так что отправляй каждый пакет по одному с маленькой задержкой, чтобы сервер успевал обновлять инвентарь.
вот только в экспе 4.0 (noad) это зафикшено, и там все прекрасно, хотя остановка как я вижу идет на 1 тик, то есть никаких задержек нету между отправками пакета, вот я и думаю как они это сделали
 
вот только в экспе 4.0 (noad) это зафикшено, и там все прекрасно, хотя остановка как я вижу идет на 1 тик, то есть никаких задержек нету между отправками пакета, вот я и думаю как они это сделали
Они не задержку сделали они просто правильно синхронизируют инвентарь на 1.16.5 сервер проверяет transaction id и состояние слотов. Если ты шлёшь клики подряд без обновления state сервер видит рассинхрон и дропает предметы. В экспе каждый клик отправляется уже с правильным state и id, поэтому всё работает даже без задержек.
 
Они не задержку сделали они просто правильно синхронизируют инвентарь на 1.16.5 сервер проверяет transaction id и состояние слотов. Если ты шлёшь клики подряд без обновления state сервер видит рассинхрон и дропает предметы. В экспе каждый клик отправляется уже с правильным state и id, поэтому всё работает даже без задержек.
а можешь по подробнее? как это сделать
 
нужно не тормозить пакеты, а правильно считать инвентарь и action id перед каждым ClickWindow
спс, попробую
нужно не тормозить пакеты, а правильно считать инвентарь и action id перед каждым ClickWindow
а кстати, такое только на фт и рв, на всех остальных сервера по типу хв и т.д. все нормально
 
Последнее редактирование:
нужно не тормозить пакеты, а правильно считать инвентарь и action id перед каждым ClickWindow
блять нихуя не работает, вроде бы все правильно делаю, но не ворк, выбрасывает всеровно
 
Не храни готовые ClickSlotC2SPacket храни данные клика и создавай пакет заново перед отправкой с актуальным revision.
пробовал сохранять слот, тип клика, кнопку мыши, а все остальное делал актуальное, не помогло
 
не знаешь что делать? @He9vyyy
Короче проблема не в задержке и не только в revision, а в том что на 1.16.5 сервер проверяет полностью весь клик carried stack и список изменённых слотов, ты сохраняешь пакет или его данные и отправляешь позже, но за это время состояние инвентаря уже меняется и сервер видит рассинхрон из-за этого он дропает предметы, в экспе они не хранят готовые ClickSlot пакеты и не отправляют старые данные, они в момент флеша вызывают interactionManager.clickSlot чтобы игра сама заново посчитала carried stack, modifiedStacks и revision уже из актуального состояния, поэтому сервер принимает клик как валидный, тебе нужно не хранить ClickSlotC2SPacket вообще, хранить только слот кнопку и тип действия и при отправке вызывать clickSlot чтобы пакет создавался заново с текущим состоянием инвентаря иначе на 1.16.5 всегда будет десинк и дроп если нужно фастиком сделаю
 
Короче проблема не в задержке и не только в revision, а в том что на 1.16.5 сервер проверяет полностью весь клик carried stack и список изменённых слотов, ты сохраняешь пакет или его данные и отправляешь позже, но за это время состояние инвентаря уже меняется и сервер видит рассинхрон из-за этого он дропает предметы, в экспе они не хранят готовые ClickSlot пакеты и не отправляют старые данные, они в момент флеша вызывают interactionManager.clickSlot чтобы игра сама заново посчитала carried stack, modifiedStacks и revision уже из актуального состояния, поэтому сервер принимает клик как валидный, тебе нужно не хранить ClickSlotC2SPacket вообще, хранить только слот кнопку и тип действия и при отправке вызывать clickSlot чтобы пакет создавался заново с текущим состоянием инвентаря иначе на 1.16.5 всегда будет десинк и дроп если нужно фастиком сделаю
"если нужно фастиком сделаю" не совсем понял, типо что сделаешь?
 
Короче проблема не в задержке и не только в revision, а в том что на 1.16.5 сервер проверяет полностью весь клик carried stack и список изменённых слотов, ты сохраняешь пакет или его данные и отправляешь позже, но за это время состояние инвентаря уже меняется и сервер видит рассинхрон из-за этого он дропает предметы, в экспе они не хранят готовые ClickSlot пакеты и не отправляют старые данные, они в момент флеша вызывают interactionManager.clickSlot чтобы игра сама заново посчитала carried stack, modifiedStacks и revision уже из актуального состояния, поэтому сервер принимает клик как валидный, тебе нужно не хранить ClickSlotC2SPacket вообще, хранить только слот кнопку и тип действия и при отправке вызывать clickSlot чтобы пакет создавался заново с текущим состоянием инвентаря иначе на 1.16.5 всегда будет десинк и дроп если нужно фастиком сделаю
поможешь?
 
Назад
Сверху Снизу