alias silent defuse script что это такое
Alias silent defuse script что это такое
alias «vm_hand» «vmh1»
alias «vmh1» «cl_righthand 1;alias vm_hand vmh0»
alias «vmh0» «cl_righthand 0;alias vm_hand vmh1»
alias «+knife» «slot3»
alias «-knife» «lastinv»
Чтобы остановить любую из них нужно использовать знак «-» вместо знака «+» в начале.
Пример:
bind f «noclip;give weapon_ak47»
Примечание: Кавычки необходимы, только если вы хотите использовать более 1 команды.
Пример:
alias training «sv_cheats 1;sv_infiniteammo 2;give weapon_flashbang;give weapon_hegranade;give weapon_smokegranade;give weapon_ak47»
Благодаря псевдониму, каждый раз, когда Вы напишите «training» в консоли, он будет выполнять все перечисленные команды.
Примечание: Команды не единственное, что Вы можете использовать на привязку, также можно привязывать псевдонимы.
god
gods
sv_infinite_ammo
noclip
r_drawothermodels
give
Пистолеты
Desert Eagle: weapon_deagle
Dual Berettas: weapon_elite
Five-Seven: weapon_fiveseven
Glock-18: weapon_glock
p250: weapon_p250
USP-S: weapon_usp_silencer
Tec-9: weapon_tec9
P2000: weapon_hkp2000
Пистолеты-пулемёты
MP9: weapon_mp9
MAC-10: weapon_mac10
MP7: weapon_mp7
P90: weapon_p90
PP-Bizon: weapon_bizon
UMP-45: weapon_ump45
Тяжёлое оружие
Nova: weapon_nova
XM1014: weapon_xm1014
Mag-7: weapon_mag7
Sawed-off: weapon_sawedoff
Negev: weapon_negev
m249: weapon_m249
Штурмовые винтовки
Ak-47: weapon_ak47
Galil-AR: weapon_galilar
Sg-556: weapon_sg556
Famas: weapon_famas
M4A4: weapon_m4a1
M4A1-S: weapon_m4a1_silencer
AUG: weapon_aug
Scout: weapon_ssg08
AWP: weapon_awp
G3SG1: weapon_g3sg1
SCAR-20: weapon_scar20
Гранаты
Взрыв. граната: weapon_hegrenade
Свет. граната: weapon_flashbang
Дым: weapon_smokegrenade
Приманка: weapon_decoy
Молотов (террористы): weapon_molotov
Огнен. граната (спецназ): weapon_incgrenade
bot_add
bot_add_ct
bot_add_t
bot_kick
bot_kill
bot_zombie
bot_dont_shoot
bot_difficulty
bot_stop
bot_mimic
bot_mimic_yaw_offset
bot_crouch
bot_place
bot_add: добавляет бота в команду с недостатком игроков (имя бота не является обязательным)
bot_add_ct: добавляет бота в команду спецназа (имя бота не является обязательным)
bot_add_t: добавляет бота в команду террористов (имя бота не является обязательным)
bot_kick: если имя бота не указано, то кикнет всех ботов
bot_kill: если имя бота не указано, убивает всех ботов
bot_zombie: если установлен на «1» все боты заморозятся.
bot_dont_shoot: если имя бота не указано, все боты не будут стрелять
bot_difficulty: изменяет уровень ИИ ботов (уровни сложности: 0 = легко, 1 = нормально, 2 = тяжело)
bot_stop: остановить ботов.
bot_mimic 1: бот повторяет действия игрока
bot_mimic_yaw_offset 0: отменяет зеркальное выполнение действий игрока
bot_crouch: если установлено на «1» боты будут сидеть.
bot_place: ставит бота перед Вами
hud_scaling
cl_hud_radar_scale
cl_hud_playercount_pos
cl_hud_playercount_showcount
cl_hud_color
cl_hud_bomb_under_radar
cl_hud_healthammo_style
cl_radar_icon_scale_min
cl_radar_scale
cl_radar_always_centered
cl_radar_rotate
cl_radar_square_with_scoreboard
cl_showloadout
cl_loadout_colorweaponnames
cl_show_clan_in_death_notice
cam_command
cam_idealdist
cam_idealyaw
Вот некоторые из наиболее важных консольных команд для каждого игрока CS:GO. Они позволяют получить контроль над настройками матча, идеально подходит для тех, кто хочет тренироваться или администрировать сервер.
Включаем возможность использования консольных «читов»:
sv_cheats 1
Убираем ограничение на разницу количества игроков в командах:
mp_limitteams 0
Выключаем автоматический баланс количества игроков в командах:
mp_autoteambalance 0
Меняем длину раунда на 60 минут (для de_ карт):
mp_roundtime_defuse 60
Меняем длину раунда на 60 минут (для cs_ карт):
mp_roundtime_hostage 60
Меняем длину раунда на 60 минут (для остальных карт):
mp_roundtime 60
Убираем время ожидания перед началом раунда:
mp_freezetime 0
Ставим бесконечные патроны:
sv_infinite_ammo 1
sv_infinite_ammo 2
— бесконечные патроны, надо перезаряжать оружие
Убираем лимит на количество типов гранат:
ammo_grenade_limit_total 6
Кикаем всех ботов с сервера:
bot_kick
Делаем рестарт сервера:
mp_restartgame 1
Отображаем модели игроков сквозь стены (wh):
r_drawothermodels 2
Включаем отображение траекторий гранат:
sv_grenade_trajectory 1
Увеличиваем время отображения траектории до 10 секунд:
sv_grenade_trajectory_time 10
Будет удобнее привязать команды noclip, бессмертия и отключения дыма на клавиши.
Летать сквозь стены
bind «клавиша» «noclip»
Бесмертие
bind «клавиша» «god»
Отключение дыма
bind «клавиша» «toggle r_drawparticles 0 1»
Так же будет полезно ознакомиться с командами по ботам в разделе «Команды Ботов» этого руководства.
Требуется sv_cheats 1
cl_timeout
net_graph
net_graphinsetleft
net_graphinsetbottom
net_graphpos
net_graphproportionalfont
ПРИМЕЧАНИЕ: banip и addip делает то же самое
Флаги в игре используют ISO Alpha коды. Здесь Вы можете посмотреть их список и расшифровки https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2
К примеру, чтобы установить флаг России 1 команде: mp_teamflag_1 RU
Бинд микрофона на переключение. Нажали клавишу «K» микрофон включился и работает до тех пор, пока не нажмете повторно. Для тех кому лень держать кнопку, пока говорите.
bind «k» voice0
alias voice0 «+voicerecord; bind k voice1»
alias voice1 «-voicerecord; bind k voice0»
Чтобы открыть параметры запуска CS:GO. Тыкаем на него в Библиотеке игр Steam правой кнопкой мыши, выбираем «Свойства». В появившемся окне нажимаем кнопку «Установить параметры запуска. «
Про C++ алиасинг, ловкие оптимизации и подлые баги
Про aliasing
Что такое aliasing? Очень просто. Это когда на один и тот же участок памяти показывают несколько разных указателей. Например.
В этом примере у переменной A внезапно три разных имени (alias): A, *B, *C. Это совершенно легальный код. Компилятор успешно обработает все 3 имени, если в A что-нибудь запишут, то через *B это будет можно прочитать и наоборот, все хорошо.
Про оптимизации и __restrict
За исключением одной мелочи: возможных оптимизаций. Компилятор обязан понимать и помнить про aliasing не только в таком наглядном случае, но и там, где человек неявно никаких алиасов не предполагает. Например.
Компилятору однако можно подсказать, что out никак не пересекается с in. Для этого человечество придумало модификатор __restrict.
Ну, подумаешь, 1 инструкция? Процессоры нынче умные, с толстым кешом и кучей конвейеров. В этом мини-примере запись, конечно, мгновенно закешируется, лишняя инструкция небось спараллелится с чем-нибудь, и отличия небось даже и измерить не удастся?
Не совсем. Удается. Упс, ускорение примерно эдак в 1.5 раза. Такая вот местами бывает цена одной инструкции (и двух модификаторов). Обычно все равно, но для хорошо нагруженных внутренних циклов полезно.
Про strict aliasing и баги
Как видим, устранение алиасинга может вылиться в неплохое улучшение скорости. Видимо, из этих соображений в стандарте C99, а через это и C++, придумали и ввели правило про strict aliasing. Ссылка для людей, владеющих мастерством чтения и понимания Стандарта: N1124, 6.5(7). Нормальному человеку туда смотреть не очень стоит: например, ни слова strict, ни слова aliasing в этом абзаце нет. 😉 (Найти его сколько-то быстро удалось только потому, что в сноске номер 74 есть слово aliased.) Особо важный прикладной смысл «на пальцах» однако можно пояснить довольно просто.
В режиме strict aliasing компилятор считает, что объекты, на которые показывают указатели «существенно различных» типов, НЕ могут храниться в одном и том же участке памяти, и может использовать это при оптимизациях.
Что совершенно не важно, когда указатели либо действительно показывают в разные места, либо используются достаточно далеко друг от друга. Но смертельно, когда указатели показывают в одну и ту же память, используются рядом, а компилятор это gcc.
Ура-ура? Но увы, есть одно маленькое но: -Wstrict-aliasing ничего не гарантирует. Для поимки всех случаев алиасинга, не совместимых с текущим режимом компиляции, его недостаточно. Достаточно короткого и потому наглядного примера у меня нет (есть слишком длинный), поэтому придется поверить на слово: совсем немного шаблонного фарша, функтор-другой, и strict aliasing ловко маскируется и ворнинга не дает. В программе с активным использованием STL и-или Boost, подозреваю, незаметно нарушить strict aliasing где-нибудь в дебрях кода должно быть довольно нетяжело. Третьи лица также свидетельствуют, что фокусы с приведением к void* и обратно успешно подавляли warning как минимум на gcc 4.1.x, при этом оставляя генерацию кривого кода, разумеется.
Несмотря на undefined behavior винт оно, конечно, не отформатирует. (Ну, не сразу.) Однако переставить местами чтение и запись в память в целях оптимизации компилятор может запросто. Выглядит это примерно вот так.
В итоге в какой-нибудь переменной оказывается неверное значение (или слишком старое, или слишком новое)… и далее все вытекающие. Ловить такой подлый баг можно долго и безуспешно: для успешного проявления оптимизатор должен именно в этом «слепом» месте решить провести оптимизацию во1х, оптимизация должна проявится так, чтобы результаты поймались во2х.
Как уверенно бороться? Годных автоматических методов и тулзов не знаю. Раньше думал, что компилятор более-менее ловит; теперь однако вот знаю, что может пропустить и совершенно тривиальную конверсию, если ее слегка обернуть шаблонами (а может, и просто функциями даже). Бороться потому разве что молитвой и постом жесткой дисциплиной. Сменил указателю тип, подумай о сайд-эффектах. Почувствуй себя компилятором, подумай мальца за него: не бежит ли лиса, не летит ли орел, не ломается ли алиасинг.
Side-note: про всякие другие тонкости и фокусы из-за strict aliasing можно читать классический подробный пост по теме тов. Майка Актона, cellperformance.beyond3d.com/articles/2006/06/understanding-strict-aliasing.html
Что насчет MSVC?
Проблемы про strict aliasing там нет. Более того, возможности включить тоже нет. Видимо, MS приняло решение, что C99-compliant кода в мире без тонких граблей про aliasing в мире куда меньше, чем какого обычно, поэтому незачем создавать сложности. Просветительскую миссию осуществляет gcc, ну и бажок-другой иногда втихую нагенерит, не без этого.
Это автоматически означает, что фокусы про оптимизацию и __restrict для указателей там несколько важнее. Скажем, для void SumIt ( int64_t * out, const int * in, int count ) согласно strict правилу gcc имеет право «догадаться», что вряд ли out лежит в середине in; MSVC об этом догадываться гарантированно не будет. Надо либо restrict-ить вручную, либо вручную же сводить записи к минимуму. Уж локальную переменную он в регистр положить сможет.
Важно понимать, что член класса это тоже данные, лежащие по указателю this. Поэтому постоянное обращение к члену класса в цикле может компилироваться в постоянные мучения памяти.
Итого
Как я переписывал vim конфиг в init.lua
Статья рассказывает о том, как я с нуля переписывал свой nvim-конфиг (init.vim) в конфиг с поддержкой lua (init.lua).
Предисловие
Я тут сидел и прибывал в прокрастинации. Писать код было лень. И, листая старую тетрадь расстрелянного генерала, я увидел комментарии, в которых мне напомнили, что было бы круто переехать на lua. Я слежу за nvim&lua движением на редите, но все как-то руки не доходили, а тут, бах, и прокрастинацию как рукой сняло от таких мыслей:
Lua я не знаю, но решил, что это отличный способ немного познакомиться с новым для меня языком
Vim супер быстрый, но с помощью lua он станет ещё быстрее
Так же с помощью lua можно навести порядок, разбить на файлы для удобства, чтобы горячие клавиши были в одном файле, настройки в другом, а плагины в третьем
Заменить кое-какие плагины на более современные, некоторые из которых уже написаны на lua
В мире vi* сейчас идет настоящая революция, связанная с использованием neovim с lua, и приобщиться к этому будет весело
Писать я его начал ещё тогда, когда neovim не существовал. Что-то добавлялось, удалялось и накопилось всякого разного. Все это я и буду конвертировать в lua, за одно и причешу и избавлюсь от лишнего.
Стартовые условия
(Можно пропустить, если у вас из пакетного менеджера сразу ставится neovim 0.5.х и выше)
Я решил взять старенькую машину с Centos 7, исходя из принципа, что если я смогу на ней все настроить, то на современных и подавно все запущу. Ещё мне надо было убедиться, что на старых машинах так же работает, ибо много легаси болтается на Centos 7, которое надо поддерживать.
Естественно, по умолчанию через yum ставилась старая версия nvim. Но после таких манипуляций версия была уже последняя.
Старенький git обновил таким образом. Без современного git плагин менеджер Packman не работал.
Больше никаких проблем с Centos 7 не было.
С нуля
/.config/nvim создал 4 пустых файла и одну папку. Вот такая получилась структура файлов:
И начал эти файлы заполнять.
Файл init.lua
Он только считывает файлы с плагинами, настройками и моими хоткеями из директории
Файл keymaps.lua
Сконвертировать мои хоткеи на lua не составило труда.
Единственная проблема возникла с перечитыванием конфигов. В старом init.vim надо было перечитать всего один файл, я это и делал так:
Файл settings.lua
Файл с настройками получился таким:
С файлом никаких проблем не возникло, все легко переписалось. Добавились настройки для плагинов: LSP и nvim-cmp, но о плагинах дальше.
Файл plugins.lua
Мой файл с плагинами после «ревизии» получился таким:
За установку плагинов для lua отвечает менеджер packer.nvim. Принцип работы такой же, как и у обычных менеджеров.
О плагинах
Некоторые плагины я удалил, которые были в init.vim, некоторые добавил или заменил. Об этом и пойдет дальше речь.
nvim-lspconfig и nvim-lsp-installer
Из названий плагинов понятно, что они занимаются взаимодействием с lsp. И на основе lsp строится уже все остальное: автодополнялки, линтеры и т.д.
nvim-cmp
telescope.nvim
Comment.nvim
lualine.nvim
Многим людям в nvim нравилась строчка внизу экрана со всякой там информацией, называлась она airline (в старом init.vim она у меня была). Переписали ее на lua и назвали lualine.nvim. Автор даже не поленился и выложил что-то вроде бечмарка, на сколько у него быстрее эта строчка работает.
bufferline.nvim
Плагин bufferline.nvim отвечает за работу с табами (буферами) открытых файлов. Я повесил следующие настройки в горячие клавиши, чтобы переключать вкладочки с помощью tab и shift-tab
Для работы плагина нужны специальные шрифты. Если заходите по ssh с windows, например, используя securecrt или putty, то на винде надо поставить терминальный шрифт nerd, чтобы работали иконки на вкладках.
Тема: Alias как причина бана.
Опции темы
Отображение
3 раза пытался зайти на сервер и получаю бан за «Alias». После первого бана перепроверил конфиги и нашёл давно забытый bhop.cfg с алиасами, поэтому его я вынес из папки CS, но всё равно снова получил бан.
Я уже делал поиск файлов, в которых значится слово «alias» и вручную перепроверил те несколько конфигов, которые у меня есть. Но все они были собраны мною, поэтому самое сложное что в них есть, это подобные бинды:
bind «LEFTARROW» «awp;buyammo1;buyammo1;buyammo1»
Непосредственно перед баном идут эти строки. ДО и ПОСЛЕ бана по сути они повторяются, ничего нового.

! [93.84.21.213] (Reason: Alias, Info: #alias)
ЗЫ
Сразу оговорюсь. Предложения в стиле «исправьте античит, чтобы он не реагировал на безобидные алиасы» вносить не стоит. Некому этим заниматься, а античит успешно справляется с небезобидными алиасами и ради безобидных ковырять его не будем.

1 пользователь сказал cпасибо alik за это полезное сообщение:
3 раза пытался зайти на сервер и получаю бан за «Alias». После первого бана перепроверил конфиги и нашёл давно забытый bhop.cfg с алиасами, поэтому его я вынес из папки CS, но всё равно снова получил бан.
Я уже делал поиск файлов, в которых значится слово «alias» и вручную перепроверил те несколько конфигов, которые у меня есть. Но все они были собраны мною, поэтому самое сложное что в них есть, это подобные бинды:
bind «LEFTARROW» «awp;buyammo1;buyammo1;buyammo1»
Трюки, облегчающие жизнь в zsh
4. Возврат настроек терминала
5. Функция zmv
6. Запуск mpv с автоматически найденными субтитрами
Если вы когда‐либо качали сериалы с внешними субтитрами с torrent’ов, то, несомненно, заметили, что каждый человек, их выкладывающий, имеет собственное мнение относительно того, где должны находится субтитры. Основных вариантов два: в собственном каталоге и непосредственно рядом с видео, но под «собственным каталогом» может скрываться любое название каталога, и даже различные глубины вложения: я видел каталоги вида «subs », «субтитры », «subs/» и даже просто «». Дополнительной проблемой служит использование нестандартных шрифтов в субтитрах, с распространением их вместе с субтитрами.
Для того, чтобы субтитры были‐таки подхвачены и использовали корректные шрифты можно использовать разные способы. Я предпочёл создать функцию, которая автоматически делает нужную работу практически во всех случаях:Наличие в zsh вещей вроде ассоциативных массивов очень помогает при создании таких функций.
Здесь первая часть функции проходится по всем аргументам и забивает каталоги, в которых находятся произведения в ассоциативный массив mediadirs. Он сделан ассоциативным исключительно, чтобы избежать дубликатов.
7. Создание команд с автоматическим экранированием аргументов
8. Автоматическое исключение файлов из glob’ов
var с комментарием «Will error out» нужны, чтобы zsh показал ожидаемую ошибку. При этом выполнение функции завершиться. Особых причин использовать именно этот вариант вместо echo … >&2 нет, хотя мой вроде должен поддерживать перехват ошибки с использованием always (что вы вряд ли используете в интерактивной сессии).

