Перейти к публикации

Electr0

Администраторы
  • Публикаций

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

  • Посещение

  • Дней в лидерах

    414

Изменения репутации

  1. Нравится
    Electr0 получил репутацию от AlcDuck за запись, Рефакторинг модуля оружия   
    Изначально задумывалось что предметы из категории оружие будут своего рода лицензией на взятие предмета, то есть при взятии они не удаляются, при этом удаляя то что было в руках игрока до взятия чтобы не мусорить в оружейке, однако не все _spawn пропы в игре так умеют (предметы здоровья, TIER3, пистолеты, бензопила и все ближние, коробки апгрейдов как распакованные, так и нет), однако на момент написания этой части стройки был курс на наращивание функциональной массы нежели того как это в будущем будет работать и сказываться на сервере в целом. Ввести систему на типе подождите на взятие предметов из категории здоровье, взрывчатки которую нельзя будет обмануть перезагрузкой, сохранением, пересохранением, слота. Взрывчатка должна быть спаунпоинтом, а не одноразовыми балонами или канистрами.
  2. Нравится
    Electr0 получил репутацию от KOllapsE за запись, добавить уважение углов предметов при вставке со сдвигом по осям Y X Z   
    Таким образом будет возможно достраивать в одну сторону предметы которые повернуты
  3. Нравится
    Electr0 получил репутацию от KOllapsE за запись, Улучшить меню поворотов / переноса предметов   
    Накатал тестовую версию нужно потестить
     
    В названии меню будет указыватся выбранная ось:

     
    На следующей странице выбор осей:

     
    Допустим я захотел сменить ось, перелистнул выбрал X и получил что на экране:

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

     
    Таким образом мы уменьшаем кол-во перелистываний через меню, так же по выходу из меню информация о выбранной оси не слетает, это поможет в случаях когда нужно ставить и переносить по определенной оси сразу не тратя время на перелистывание менюшек поворота/переноса предмета. Еще это задел на будущее т.к если поучится вертеть всю постройку по осям X, Z будет не удобно листать 6 меню поворотов, тогда как тут все всегда на 2 страницах. 
     
    ОДНАКО, все же это что-то не обычное спустя столько лет, предлагаю потестить админам и понять нужно ли вам это, и удобно ли, лично мне этот метод понравился, кстати предложил игрок Grey83.
  4. Нравится
    Electr0 получил репутацию от EnumaElish за запись, Remaster Матрицы [Low Priority]   
    Сделать так что окружение замедляется, а люди нет. (Подобное я вытворял, но на уровне быстро бегать во время матрицы, а хочется и скорость перезарядки и стрельбы на уровне нормальной) Сделать во время ярости возможность стрелять и перезаряжаться быстрее. Сделать так что аура зараженных при этом имеет свой радиус видимости, а не показывает всех зараженных по всей карте Заменить цвет ауры обычных мобов при входе в матрицу на какой нибудь менее кислотный цвет, раздражает, например желтый, а во время ярости красный Сделать включение ПНВ на время матрицы
  5. Нравится
    Electr0 получил репутацию от Sosiska за запись, Новые шапки   
    Наш англоязычный админ скидывал мне сайт где можно взять модельки для шапочек, думаю там можно кое что позаимствовать
  6. Нравится
    Electr0 получил репутацию от Sosiska за запись, Мелкие дополнения к супертанкам   
    Вич танк должен уметь создавать разных вичек (ведьму невесту и обычную) Нужно добавить особую модель для лава танка, что-то типа нападающего в регби, при этом нужно убрать его цвет, ибо у модельки есть свои цвета. Для варпа сделать модель в шортах, он же у нас офигеть какой мобильный Обнуление счетчика классов танков нужно сделать после конца кампании, чтобы система рандомизации работала как я задумывал. Нужно сделать радиус действия ауры, чтобы не было через всю карту видимых танков  (Хил, и Щит), установил максимальное значение для этих танков в 1500 юнитов.
  7. Нравится
    Electr0 получил репутацию от GreNelink за запись, Для лазера нужно сделать личный таймер, а не глобальный   
    Дело в том что плагин лазеров каждые 0.1 сек опрашивает всех клиентов включен ли у них лазер чтобы сделать отрезок если включен. Теперь сделал чтобы по нажатию старта рисования создавался личный таймер, по концу отключался, так мы исключаем холостой таймер из нагрузки на сервер.
  8. Нравится
    Electr0 получил репутацию от Саня за запись, Редактирование помеченных предметов   
    Идея не нова, нужно придумать как помечать, записывать и выполнять действия над помеченными предметами. так можно устранить пару неудобностей с редактированием. Помечать можно будет строго свои предметы, мне не хочется заниматься сотней исключений при мультиюзерном подходе.
    А так же позволит игрокам:
    Быстро передвигать свои дома целиком. Можно будет реализовать выравнивание по определенной оси для нескольких объектов, например по высоте или оси x или y. Можно будет приподнять все свои постройки и найти те что по какой либо причине оказались под полом.  Сложности:
    Массовое редактирование лучше не логгировать будут лаги Массовое редактирование лучше не записывать системой слежки за действиями, она ухууеет если какой нибудь Эля разом передвинет 400 предметов. Спамить в чат о действии над сотнями предметов не лучшая идея. Чтобы добавить опцию редактировать только помеченное, нужно выпилить все связанное с опциями спавна по курсору, рядом с игроком ибо это нахер никому не нужно и занимает место как раз таки нужное под эту опцию.  Старую систему идентификации по хаммерид нужно сильно модернизировать, в условиях когда нужно рулить огромными данными в один миг придется жестко оптимизировать код. Если условия корректности позиции не будут пройдены часть предметов при редактировании может остатся на месте тогда как остальная часть будет отредактирована, это может сломать убеги, нужно делать какую-то.. предварительную оценку чтоли. чтобы запретить действия над группой предметов если один из предметов нельзя отредактировать так как этого хотел бы игрок. И писать отчет оценки по найденым проблем вместо действия в таких случаях. Нужно не забыть что функция граба для помеченных предметов работать не должна, ибо они все сожмутся в кучку на курсоре =D
    Придумал.
    Хранить будем в формате ArrayList.
    Добавление исключение из него у меня уже давно есть это лимит предметов игрока. предметы игрока хранятся в таком же месте. Притом это очень экономичный вариант. не нужно создавать переменную на 2048 ячеек * 64 клиента это в сотни раз уменьшает теоритическую при групповом редактировании.
    А вот визуально не знаю как это дело отделить. Нужно пометить предмет так, чтобы человек точно понимал взглядом что это помеченный предмет. в условия когда я им позволяю выставлять цвет предметов и их ауру, вариантов визуальной пометки нет. Хотя стоп. Я могу делать предмет полупрозрачным.
     
  9. Нравится
    Electr0 получил репутацию от sla686 за запись, Мелкие недочеты ядра меги   
    Иногда кнопка хукается по три раза что вызывает тройные срабатывания келбеков на игроках, что вызывает либо тройной спам о том что кто-то запустил панику, либо тройное наказание при кулдауне за одну попытку нажатия, не приятно. Стиль сообщений как и способ их вывода некоторых случаях вызывает сомнения. Вместо отдельных кулдаунов нужно сделать один на кнопку и максимально его упростить. В коде есть лишние участки на типе фразы для недоступного никому голосования на блокировку кнопки. Сделать умный вывод времени если остается 5 мин то и пиши 5 мин, если 15.6 секунд то так и пиши 15.6 сек. и писать нужно в центр экрана, а не засорять чат! в некоторых местах есть дублирование кода, не хорошо. Перевести весь код на SourcePawn Transitional Syntax
  10. Нравится
    Electr0 получил репутацию от EnumaElish за запись, Необходимы оптимизации супертанков   
    У меня есть несколько замечаний к тому как работают супертанки, если их устранить этот плагин больше не будет самым тяжелым плагином в плане нагрузки на сервер во время того как по карте бегают супер танки.
    Когда кобальт бегает супер быстро, создается муляж, однако из-за того что он раз в 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 меню описаний танков. Вместо ручного ввода данных для меню описания нужно реализовать посредством цикла, так красивее и меньше места. Игроку нужно писать какой тип танка ему выпал если за танка играет человек.
  11. Нравится
    Electr0 получил репутацию от EnumaElish за запись, Фикс проблемы нулевых патронов   
    После разговора с  @EnumaElish по поводу удаленной команды !drop1, мне в голову пришла идея как обойти данные проблемы. 
    Первое нужно обновить !drop плагин:
    !drop - команда получила короткий синоним !d, выкидывает только текущее оружие в руках. добавил !drop_empty - команда получила короткий синоним !d2, выкидывает пустое оружие из слота 0 (все основные пушки на вроде винтовок, дробовиков и так далее), замена !drop1 которая без проверок и была удалена в последних обновлениях, я ее посчитал дебаг кодом когда исправлял ошибку с копированием ближних оружий после броска и дропа, потом оказалось ее без меня заяц добавлял =D, ну никаких заметок не было так что этого было не избежать) добавил !drop_all - команда получила короткий синоним !d3, выкидывает все оружие из всех разрешенных слотов. (замечал что игроки перед выходом оставляют другим оружие но вводить по команду !drop по кол-ву слотов не очень удобно думаю. Тяжкие часы:
    Я долго думал как исправить застревание оружия без патронов ведь их не сменить, в итоге в поисках всяких методов блокировки последнего патрона понял ничего не получится, точнее получилось красивый плагин и даже анимация не подвисала, но мне не понравилось что игрок не сможет воспользоватся последним патроном, все же это не то куда я хотел придти.
    Третье:
    В итоге я пришел к тому что нужно переписать функцию смены слотов, в ней отсутствовали пара важных проверок, а так же криво написанный код в который я при смене движка выдачи оружия в этом плагине даже не вдавался. Итог я сделал проверку на нулевые патроны в нулевом слоте, при этом если во втором нулевом слоте что-то есть то плагин сразу поменяет оружие без патронов на оружие из второго нулевого слота.
    Теоретические проблемы:
    ПРОБЛЕМА 1: Есть еще такое исключение, допустим у игрока нет НИЧЕГО в втором нулевом слоте, тогда эта пушка без патронов застрянет опять как до изменений. Что в таком случае делать? может тоже автоматом класть в второй слот (я проверял в таком случае при прокрутке мыши или клике на правую клавишу мыши будет то помещение пустого оружия нулевого слота во второй нулевой слот, либо наоборот в пустой из второго нулевого пустое оружие обратно. РЕШЕНИЕ 1: Проверялся вариант блокирования выдачи пустого оружия из второго нулевого слота в пустой нулевой слот, НО в таком случае если игрок использует патроницу он не получит патронов, а значит не сможет взять оружие пока не возьмет что-то другое в нулевой слот с патронами чтобы поменять оружие с патронами на оружие без и зарядить его. Как вариант можно в событии взятия патронов в случае если у игрока одно оружие без патронов на спине (второй нулевой слот) который нельзя взять если применить РЕШЕНИЕ 1, заряжать это оружие патронами автоматически. Принято РЕШЕНИЕ 2: нужно не трогать это исключение, в таком случае если игрок все равно у игрока НЕТ оружия которое можно было бы использовать хоть так хоть сяк. если ему надо он найдет или купит патроны либо найдет другое оружие и возьмет во второй слот то что без патронов если оно ему так дорого, все равно то оружие без патронов что он подберет за взятым с патронами, само поменяется местами с тем в котором патроны есть. ПРОБЛЕМА 2: у игрока накопилось ДВА нулевых слота с пустыми патронами, в этом случае при прокрутке центральным колесом мыши либо нажатии правой клавиши мыши происходит переключение из слота в слот.  Принято РЕШЕНИЕ 1: поднимать данные от сохраненного второго нулевого слота и в случае наличия пустого оружия в обоих нулевых слотах ничего не делать ибо это не имеет смысла они оба пусты и не несут смысловой нагрузки.  В принципе цели достигнуты, но нужно приватное тестирование, ибо не уверен что я не породил дополнительных возможностей скопировать оружие при смене слота, нужно все проверить.
  12. Нравится
    Electr0 получил репутацию от sla686 за запись, Для пущего накала страстей нужно сбрасывать на игроков самолет за 30 сек до рестарта сервера =D   
    Тикающий таймер обратного отчета до перезагрузки по заданию на 6:30 утра по москве, звуки падающего самолета, только самолет касается игроков Server shutdown хаахаха, эпично же =D
  13. Нравится
    Electr0 получил репутацию от sla686 за запись, Фикс проблемы нулевых патронов   
    После разговора с  @EnumaElish по поводу удаленной команды !drop1, мне в голову пришла идея как обойти данные проблемы. 
    Первое нужно обновить !drop плагин:
    !drop - команда получила короткий синоним !d, выкидывает только текущее оружие в руках. добавил !drop_empty - команда получила короткий синоним !d2, выкидывает пустое оружие из слота 0 (все основные пушки на вроде винтовок, дробовиков и так далее), замена !drop1 которая без проверок и была удалена в последних обновлениях, я ее посчитал дебаг кодом когда исправлял ошибку с копированием ближних оружий после броска и дропа, потом оказалось ее без меня заяц добавлял =D, ну никаких заметок не было так что этого было не избежать) добавил !drop_all - команда получила короткий синоним !d3, выкидывает все оружие из всех разрешенных слотов. (замечал что игроки перед выходом оставляют другим оружие но вводить по команду !drop по кол-ву слотов не очень удобно думаю. Тяжкие часы:
    Я долго думал как исправить застревание оружия без патронов ведь их не сменить, в итоге в поисках всяких методов блокировки последнего патрона понял ничего не получится, точнее получилось красивый плагин и даже анимация не подвисала, но мне не понравилось что игрок не сможет воспользоватся последним патроном, все же это не то куда я хотел придти.
    Третье:
    В итоге я пришел к тому что нужно переписать функцию смены слотов, в ней отсутствовали пара важных проверок, а так же криво написанный код в который я при смене движка выдачи оружия в этом плагине даже не вдавался. Итог я сделал проверку на нулевые патроны в нулевом слоте, при этом если во втором нулевом слоте что-то есть то плагин сразу поменяет оружие без патронов на оружие из второго нулевого слота.
    Теоретические проблемы:
    ПРОБЛЕМА 1: Есть еще такое исключение, допустим у игрока нет НИЧЕГО в втором нулевом слоте, тогда эта пушка без патронов застрянет опять как до изменений. Что в таком случае делать? может тоже автоматом класть в второй слот (я проверял в таком случае при прокрутке мыши или клике на правую клавишу мыши будет то помещение пустого оружия нулевого слота во второй нулевой слот, либо наоборот в пустой из второго нулевого пустое оружие обратно. РЕШЕНИЕ 1: Проверялся вариант блокирования выдачи пустого оружия из второго нулевого слота в пустой нулевой слот, НО в таком случае если игрок использует патроницу он не получит патронов, а значит не сможет взять оружие пока не возьмет что-то другое в нулевой слот с патронами чтобы поменять оружие с патронами на оружие без и зарядить его. Как вариант можно в событии взятия патронов в случае если у игрока одно оружие без патронов на спине (второй нулевой слот) который нельзя взять если применить РЕШЕНИЕ 1, заряжать это оружие патронами автоматически. Принято РЕШЕНИЕ 2: нужно не трогать это исключение, в таком случае если игрок все равно у игрока НЕТ оружия которое можно было бы использовать хоть так хоть сяк. если ему надо он найдет или купит патроны либо найдет другое оружие и возьмет во второй слот то что без патронов если оно ему так дорого, все равно то оружие без патронов что он подберет за взятым с патронами, само поменяется местами с тем в котором патроны есть. ПРОБЛЕМА 2: у игрока накопилось ДВА нулевых слота с пустыми патронами, в этом случае при прокрутке центральным колесом мыши либо нажатии правой клавиши мыши происходит переключение из слота в слот.  Принято РЕШЕНИЕ 1: поднимать данные от сохраненного второго нулевого слота и в случае наличия пустого оружия в обоих нулевых слотах ничего не делать ибо это не имеет смысла они оба пусты и не несут смысловой нагрузки.  В принципе цели достигнуты, но нужно приватное тестирование, ибо не уверен что я не породил дополнительных возможностей скопировать оружие при смене слота, нужно все проверить.
×
×
  • Создать...