Перейти к содержанию

EnumaElish

Ко-Админы
  • Постов

    18
  • Зарегистрирован

  • Посещение

  • Победитель дней

    2

Активность репутации

  1. Нравится
    EnumaElish отреагировал в Electr0 за запись, Remaster Матрицы [Low Priority]   
    Сделать так что окружение замедляется, а люди нет. (Подобное я вытворял, но на уровне быстро бегать во время матрицы, а хочется и скорость перезарядки и стрельбы на уровне нормальной) Сделать во время ярости возможность стрелять и перезаряжаться быстрее. Сделать так что аура зараженных при этом имеет свой радиус видимости, а не показывает всех зараженных по всей карте Заменить цвет ауры обычных мобов при входе в матрицу на какой нибудь менее кислотный цвет, раздражает, например желтый, а во время ярости красный Сделать включение ПНВ на время матрицы
  2. Нравится
    EnumaElish отреагировал в Electr0 за запись, Необходимы оптимизации супертанков   
    У меня есть несколько замечаний к тому как работают супертанки, если их устранить этот плагин больше не будет самым тяжелым плагином в плане нагрузки на сервер во время того как по карте бегают супер танки.
    Когда кобальт бегает супер быстро, создается муляж, однако из-за того что он раз в 0.3 секунды пересоздает свой муляж, на сервер возлагается серьезная нагрузка, а если их будет два то еще хуже. Щит танк так же при каждом вкл. выкл. щита пересоздает свою сферу. При выключении щита, плагин для того чтобы удалить его ищет модель щита по всему серверу используя до 2048 итераций цикла. Старый фикс зависших циклических звуков полета камней танка у жокей танка и щита слишком большой, я знаю как уместить это в одну строчку, вместо анализа всех проигрываемых звуков и сверки хозяина звука. Местами код построен так что переменные могут не понадобится если условие внизу не пройдено, это глупо. Местами код построен так что для какой либо проверки автор создает отдельную переменную, но использует ее только в проверке, И ТОЛЬКО ОДИН РАЗ, когда можно обойтись БЕЗ СОЗДАНИЯ ЛИШНЕЙ переменной используя просто ответ функций ответ которых автор почему то записывает сначала в переменные, таких мест около 30-50. После смерти танка сервер начинает прогонять циклы поиска предметов танка, муляжи, щиты, всякие колеса от джампера, и так далее, итого там три типа предметов: модельки, свет от грави танка и его проп притяжения. Кол-во итераций циклов поиска около 2048 (макс предметов на сервере)* 3 (кол-во циклов) = 6144. Я знаю как сократить кол-во итераций до 4. Если кикнуть танка то от него останутся его предметы. (ну мало ли админ нажал криво) Если перезагрузить плагин от танков останутся их предметы. (ну мало ли админ нажал криво) Код выкидывания ближнего оружия при атаке танка призрака слишком избыточен, там можно одной строчкой, а не десятью.. Нужно реализовать на SourcePawn Transitional Syntax Когда-то давно сломал шок танка, если он один раз ударил, то за этим следует 4 афтер шока, но их нет. На серверах где за супер танков играют люди, если играть метеором, прыгуном, то видишь то что нацеплено на тело танка, это безумно уменьшает обзор, это должно скрываться от игрока, если за танка играет бот еще ладно можно не скрывать от него, ему пох ваще =D Метеор, лава танк, не должны умирать от своих же суперспособностей! Если за телепорта играет человек он должен сам запускать телепортацию, как при прыжке прыгуна, при этом телепорт должен сам выбрать к какому выжившему телепортнутся, курсором например смотреть в точку где находится игрок. При телепортации телепорт танку зачем-то присваивается наклон от целевого игрока к которому он телепортируется, совершенно не нужное телодвижение! Нашел баг от себя же, если игрок играет за танка прыгуна, и прыгнул один раз потом сразу второй для супер прыжка, а ПОСЛЕ ПОКА ЛЕТИТ ЕЩЕ РАЗ ПОВТОРИЛ КОМБИНАЦИЮ, то он будет отталкиваться от воздуха, летая по карте. У смешера есть квара, после сокрушительного удара удалять тело игрока, НО хозяина сверяет некорректно, в итоге эта опция не работала, теперь работает, но будет отключена. Если за метеор танка играет человек, то и метеоритный дождь должен запускать именно человек! Для запуска спец способностей супертанков людьми (метеоритный дождь, телепортация, супер прыжок) нужно сделать одну комбинацию, типа двойной прыжок, а так же задержку исходя из мощности атаки, так же игрок должен знать сколько осталось отдыхать от предыдущего использования спец способности. Метеор танк ВСЕГДА создает метеоритный дождь под себя, ибо берет координату позиции глаз игрока играющего за танка. Нужно сделать логичный AI метеоритного дождя для метеор танка. Камикадзе [ЛОГИКА  БОТОВ И ДЛЯ ЛЮДЕЙ] : Допустим если его ударили ближним оружием он под себя вызывает. Сканирование окружения [БОТ ЛОГИКА]: если он на расстоянии от выживших он должен смотреть кто рядом с ним и рандомно выбирать этих выживших на расстоянии от 200 до 700 юнитов до него, и судя по координате отобранного вызывать метеоритный дождь. По месту курсора [ЛОГИКА ДЛЯ ЛЮДЕЙ]: Если метеор танком управляет человек, нужно смотреть на позицию курсора. Нужна проверка в правильном ли месте рождается камень для метеоритного дождя, для предотвращения теоретически возможных падений сервера от неправильного места рождения камня. Необходимо провести цензуру описаний танков. Нужно сделать задержку активации внешних атрибутов танков после спавна>процесса рандомизации класса хотя бы на 5 секунд, это может теоретически уменьшить появление проблем при спавне танка в сложных респаун зонах. Нужно внедрить систему ENUM констант, чтобы вместо кодов с типом танка аля 13 или по цвету 135205255 было ST_TYPE_SHIELD, и ST_COLOR_SHIELD соответственно. Нужно добавить недостающие описания кобальта и лава танка в !tanks меню описаний танков. Вместо ручного ввода данных для меню описания нужно реализовать посредством цикла, так красивее и меньше места. Игроку нужно писать какой тип танка ему выпал если за танка играет человек.
  3. Нравится
    EnumaElish отреагировал в Electr0 за запись, Фикс проблемы нулевых патронов   
    После разговора с  @EnumaElish по поводу удаленной команды !drop1, мне в голову пришла идея как обойти данные проблемы. 
    Первое нужно обновить !drop плагин:
    !drop - команда получила короткий синоним !d, выкидывает только текущее оружие в руках. добавил !drop_empty - команда получила короткий синоним !d2, выкидывает пустое оружие из слота 0 (все основные пушки на вроде винтовок, дробовиков и так далее), замена !drop1 которая без проверок и была удалена в последних обновлениях, я ее посчитал дебаг кодом когда исправлял ошибку с копированием ближних оружий после броска и дропа, потом оказалось ее без меня заяц добавлял =D, ну никаких заметок не было так что этого было не избежать) добавил !drop_all - команда получила короткий синоним !d3, выкидывает все оружие из всех разрешенных слотов. (замечал что игроки перед выходом оставляют другим оружие но вводить по команду !drop по кол-ву слотов не очень удобно думаю. Тяжкие часы:
    Я долго думал как исправить застревание оружия без патронов ведь их не сменить, в итоге в поисках всяких методов блокировки последнего патрона понял ничего не получится, точнее получилось красивый плагин и даже анимация не подвисала, но мне не понравилось что игрок не сможет воспользоватся последним патроном, все же это не то куда я хотел придти.
    Третье:
    В итоге я пришел к тому что нужно переписать функцию смены слотов, в ней отсутствовали пара важных проверок, а так же криво написанный код в который я при смене движка выдачи оружия в этом плагине даже не вдавался. Итог я сделал проверку на нулевые патроны в нулевом слоте, при этом если во втором нулевом слоте что-то есть то плагин сразу поменяет оружие без патронов на оружие из второго нулевого слота.
    Теоретические проблемы:
    ПРОБЛЕМА 1: Есть еще такое исключение, допустим у игрока нет НИЧЕГО в втором нулевом слоте, тогда эта пушка без патронов застрянет опять как до изменений. Что в таком случае делать? может тоже автоматом класть в второй слот (я проверял в таком случае при прокрутке мыши или клике на правую клавишу мыши будет то помещение пустого оружия нулевого слота во второй нулевой слот, либо наоборот в пустой из второго нулевого пустое оружие обратно. РЕШЕНИЕ 1: Проверялся вариант блокирования выдачи пустого оружия из второго нулевого слота в пустой нулевой слот, НО в таком случае если игрок использует патроницу он не получит патронов, а значит не сможет взять оружие пока не возьмет что-то другое в нулевой слот с патронами чтобы поменять оружие с патронами на оружие без и зарядить его. Как вариант можно в событии взятия патронов в случае если у игрока одно оружие без патронов на спине (второй нулевой слот) который нельзя взять если применить РЕШЕНИЕ 1, заряжать это оружие патронами автоматически. Принято РЕШЕНИЕ 2: нужно не трогать это исключение, в таком случае если игрок все равно у игрока НЕТ оружия которое можно было бы использовать хоть так хоть сяк. если ему надо он найдет или купит патроны либо найдет другое оружие и возьмет во второй слот то что без патронов если оно ему так дорого, все равно то оружие без патронов что он подберет за взятым с патронами, само поменяется местами с тем в котором патроны есть. ПРОБЛЕМА 2: у игрока накопилось ДВА нулевых слота с пустыми патронами, в этом случае при прокрутке центральным колесом мыши либо нажатии правой клавиши мыши происходит переключение из слота в слот.  Принято РЕШЕНИЕ 1: поднимать данные от сохраненного второго нулевого слота и в случае наличия пустого оружия в обоих нулевых слотах ничего не делать ибо это не имеет смысла они оба пусты и не несут смысловой нагрузки.  В принципе цели достигнуты, но нужно приватное тестирование, ибо не уверен что я не породил дополнительных возможностей скопировать оружие при смене слота, нужно все проверить.
×
×
  • Создать...