Ну во первых красный код не твой а код из тутора
Во вторых не bind "x" "+firemode", а достаточно нажать RMB
так как +attack2 будет использоваться в данном случае...
На тутор это не похоже, похоже на простой копи паст без обьяснения что и где будет происходить и как работать, ведь цель тутора, не просто научить делать фиремоды, но и понять как они организовываются с User Input, и прочими вещами...
Так что садись и фикси...
Советую делать коммент почти на каждую строчку с обьяснением что каждая функция делает, и какие аргументы а главное какого типа туда передавать, мне то понятно, а вот простой маппер скажем захочет вставить эту возможность в свой мод... И что? Ладно он кода не знает, можно какой-то смысл понять если знаешь английский, а если человек английского не знает... Вот для того и нужны комменты
маппер прочитал, маппер понял... А понял он например смысловую нагрузку какого-то куска кода, для того чтобы он смог использовать полученные знания совершенно в других местах, например он узнал, что тот-же кусок кода :
Цитата:bFireMode = !bFireMode;
m_flNextFireModeChange = gpGlobals->curtime + 0.5f;
Несёт в себе великий смысл, а не просто две глупые строки английских букв
, например он означал что при обращении к функции её врутренняя переменнная bool bFireMode т.е булевого типа меняет своё значение на противоположное...
хотя сам по себе знак "!" не означает факториал числа просто в высшей матемке есть такой загон что перед числом или переменной ставиться знак ! он означает факториал числа, а в булевой алгебре это записывается по другому, непонятно зачем авторы C сделали восклицательный знак как приставку "НЕ"
Так вот : если записать например
Цитата:if ( bFireMode ){ "делаем так" }else { "денлаем нита" }
что будет значиь если ( мы в режиме стрельбы ) { "делаем так" }иначе { "делаем нитак" } равно как и обратное
Цитата:if ( !bFireMode ){ "делаем нитак" }else{ "делаем так" }
порусски если ( мы НЕ в режиме стрельбы } { ... } иначе { ... }
Фигурные скобки лутше ставить чтобы разграничивать условия...
m_flNextFireModeChange переменная которая будет приравниваться к текущему игровому времени + запас в пол секунды, так как здеся секунда не означает 60 долей сеунд, здесь секунда плавающее значение от 0.00000 до 1.000000, может возникнуть вопрос почему 6 нулей после точки? потому что эато 32 битное значение с плавающей запятой записывается как float, иначе говоря дробное число простой точности...
есть также числа двойной точности напрмиер с 8-12-16 нолями, но это зависит от компилятора и cоответственно поддерживаемой разрядностью у процессора и записывается как double и long double.
Вот такие батенька детали могут заинтересовать народ