Перейти к публикации
  • Фикс проблемы нулевых патронов


    Electr0
    • Сделано

    После разговора с  @EnumaElish по поводу удаленной команды !drop1, мне в голову пришла идея как обойти данные проблемы. 

    Первое нужно обновить !drop плагин:

    • !drop - команда получила короткий синоним !d, выкидывает только текущее оружие в руках.
    • добавил !drop_empty - команда получила короткий синоним !d2, выкидывает пустое оружие из слота 0 (все основные пушки на вроде винтовок, дробовиков и так далее), замена !drop1 которая без проверок и была удалена в последних обновлениях, я ее посчитал дебаг кодом когда исправлял ошибку с копированием ближних оружий после броска и дропа, потом оказалось ее без меня заяц добавлял =D, ну никаких заметок не было так что этого было не избежать)
    • добавил !drop_all - команда получила короткий синоним !d3, выкидывает все оружие из всех разрешенных слотов. (замечал что игроки перед выходом оставляют другим оружие но вводить по команду !drop по кол-ву слотов не очень удобно думаю.

    Тяжкие часы:

    Я долго думал как исправить застревание оружия без патронов ведь их не сменить, в итоге в поисках всяких методов блокировки последнего патрона понял ничего не получится, точнее получилось красивый плагин и даже анимация не подвисала, но мне не понравилось что игрок не сможет воспользоватся последним патроном, все же это не то куда я хотел придти.

    Третье:

    В итоге я пришел к тому что нужно переписать функцию смены слотов, в ней отсутствовали пара важных проверок, а так же криво написанный код в который я при смене движка выдачи оружия в этом плагине даже не вдавался. Итог я сделал проверку на нулевые патроны в нулевом слоте, при этом если во втором нулевом слоте что-то есть то плагин сразу поменяет оружие без патронов на оружие из второго нулевого слота.

    Теоретические проблемы:

    • ПРОБЛЕМА 1: Есть еще такое исключение, допустим у игрока нет НИЧЕГО в втором нулевом слоте, тогда эта пушка без патронов застрянет опять как до изменений. Что в таком случае делать? может тоже автоматом класть в второй слот (я проверял в таком случае при прокрутке мыши или клике на правую клавишу мыши будет то помещение пустого оружия нулевого слота во второй нулевой слот, либо наоборот в пустой из второго нулевого пустое оружие обратно. РЕШЕНИЕ 1: Проверялся вариант блокирования выдачи пустого оружия из второго нулевого слота в пустой нулевой слот, НО в таком случае если игрок использует патроницу он не получит патронов, а значит не сможет взять оружие пока не возьмет что-то другое в нулевой слот с патронами чтобы поменять оружие с патронами на оружие без и зарядить его. Как вариант можно в событии взятия патронов в случае если у игрока одно оружие без патронов на спине (второй нулевой слот) который нельзя взять если применить РЕШЕНИЕ 1, заряжать это оружие патронами автоматически. Принято РЕШЕНИЕ 2: нужно не трогать это исключение, в таком случае если игрок все равно у игрока НЕТ оружия которое можно было бы использовать хоть так хоть сяк. если ему надо он найдет или купит патроны либо найдет другое оружие и возьмет во второй слот то что без патронов если оно ему так дорого, все равно то оружие без патронов что он подберет за взятым с патронами, само поменяется местами с тем в котором патроны есть.
    • ПРОБЛЕМА 2: у игрока накопилось ДВА нулевых слота с пустыми патронами, в этом случае при прокрутке центральным колесом мыши либо нажатии правой клавиши мыши происходит переключение из слота в слот.  Принято РЕШЕНИЕ 1: поднимать данные от сохраненного второго нулевого слота и в случае наличия пустого оружия в обоих нулевых слотах ничего не делать ибо это не имеет смысла они оба пусты и не несут смысловой нагрузки. 

    В принципе цели достигнуты, но нужно приватное тестирование, ибо не уверен что я не породил дополнительных возможностей скопировать оружие при смене слота, нужно все проверить.


    Отзывы пользователей

    Рекомендованные комментарии

    Задачи тестирования: 

    • Решить две теоретические  проблемы описанные выше, уже не нужно, у меня нашлось время на вторичное тестирование.
    • Проверить работу добавленных команд
    • Проверить наличие ошибок в работе второго слота.
    Ссылка на комментарий
    Поделиться на других сайтах

    заодно предлагаю поглядеть обнову карты  Pasiri - Fixed (Left 4 Dead 2) - GameMaps , помнится исключил ее из рассмотрения из-за отсутствия необходимых кешей строк, их добавили, а значит крашить не будет.

    Ссылка на комментарий
    Поделиться на других сайтах

    в API второго слота добавлена новая функция дропнуть все оружие для определенного клиента из второго слота, ее же будет вызывать !d3 после дропа основных слотов, чтобы обеспечить полный дроп всех оружий одной командой.

    Ссылка на комментарий
    Поделиться на других сайтах

    смена слотов во время стрельбы или перезарядки, случаев когда оружие не готово к стрельбе, теперь запрещена, для избежания случаев падения сервера, система компенсации лагов не понимает почему оружие отсутствует когда оно должно быть. это вызывает краши очень редкие но вызывает. если данные условия не имеют влияние то я уберу это из кода. 

    код плагина второго слота полностью приведен к стандартам SourcePawn Transitional Syntax, устранил несколько некрасивых мест в коде где много ненужных повторов.

    Ссылка на комментарий
    Поделиться на других сайтах

    может просто сделать так что бы в оружии в котором заканчивались патроны автоматически появлялась 1 пуля? как бы злоупотр****(здесь был мат)ть особо не получится так как перезаряжать после каждой пули мягко говоря не разумно, а для переключения как раз

    Ссылка на комментарий
    Поделиться на других сайтах

    13 часа назад, Nemezis сказал:

    может просто сделать так что бы в оружии в котором заканчивались патроны автоматически появлялась 1 пуля? как бы злоупотр****(здесь был мат)ть особо не получится так как перезаряжать после каждой пули мягко говоря не разумно, а для переключения как раз

    первый вариант фикса если ты читал был именно таким. там слишком много логики, и слишком много нечестного.

    Ссылка на комментарий
    Поделиться на других сайтах



    Присоединяйтесь к обсуждению

    Вы можете опубликовать сообщение сейчас, а зарегистрироваться позже. Если у вас есть аккаунт, войдите в него для написания от своего имени.

    Гость
    Добавить комментарий...

    ×   Вставлено в виде отформатированного текста.   Вставить в виде обычного текста

      Разрешено не более 75 эмодзи.

    ×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

    ×   Ваш предыдущий контент был восстановлен.   Очистить редактор

    ×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.


  • Обозначения статусов

    В обработке = Мы работаем над вашим отзывом.

    Будет сделано = Ваша идея добавлена к плану будущих изменений.

    Тестируется = Изменения внесены, но требуют тестирования.

    Сделано = Ваша идея реализована!

    Отклонено = Отзыв некорректный, бред, либо уже реализовано. Если у вас есть дополнительная информация напишите комментарий и мы снова откроем этот вопрос.

×
×
  • Создать...