Jump to content
  • Фикс проблемы нулевых патронов


    Electr0
    • Сделано
     Share

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

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

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

    Тяжкие часы:

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

    Третье:

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

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

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

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

     Share


    User Feedback

    Recommended Comments

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

    • Решить две теоретические  проблемы описанные выше, уже не нужно, у меня нашлось время на вторичное тестирование.
    • Проверить работу добавленных команд
    • Проверить наличие ошибок в работе второго слота.
    Link to comment
    Share on other sites

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

    Link to comment
    Share on other sites

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

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

    Link to comment
    Share on other sites

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

    Link to comment
    Share on other sites

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

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

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

    Link to comment
    Share on other sites



    Join the conversation

    You can post now and register later. If you have an account, sign in now to post with your account.

    Guest
    Add a comment...

    ×   Pasted as rich text.   Paste as plain text instead

      Only 75 emoji are allowed.

    ×   Your link has been automatically embedded.   Display as a link instead

    ×   Your previous content has been restored.   Clear editor

    ×   You cannot paste images directly. Upload or insert images from URL.


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

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

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

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

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

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

×
×
  • Create New...