Заказать Плагин Контакты Поиск

[ вход ]
[ последние сообщения ]

  • Страница 1 из 1
  • 1
Форум » SourceMod - Counter Strike Source && CS GO » Обсуждение » Инкремент переменной
Инкремент переменной
Vitaminoz Дата: Вторник, 27.02.2018, 01:24:47 | Сообщение # 1
Сообщений: 142
Репутация: 1 [ +/- ]
Доброй ночи всем.
Имеется кусок кода:
Код
    while (iIndex != g_iDifficultyVarSize)
    {
    
  if (strcmp(g_szDifficultyStrings[iIndex], g_szDifficulty, false) == 0)
  {
   g_hDifficulty.SetString(g_szDifficultyStrings[iIndex], true);
   PrintToChatAll("\x05Установлен уровень сложности \x01- \x03%s \x01| Index: %i", g_szDifficultyStrings[iIndex], iIndex);
   
   return;
  }
    }


Хочу сделать, чтобы у переменной iIndex был инкремент в каждом блоке кода. Что я имею в виду:
Код
    while (iIndex != g_iDifficultyVarSize)
    {
  if (strcmp(g_szDifficultyStrings[iIndex], g_szDifficulty, false) == 0)
  {
   iIndex++;
   g_hDifficulty.SetString(g_szDifficultyStrings[iIndex], true);
   PrintToChatAll("\x05Установлен уровень сложности \x01- \x03%s \x01| Index: %i", g_szDifficultyStrings[iIndex], iIndex);
   
   return;
  }
  
  iIndex++;
    }

Но этот код "не очень" красивый чтоль
Пробовал сделать так:
Код
    while (iIndex != g_iDifficultyVarSize)
    {
  if (strcmp(g_szDifficultyStrings[iIndex], g_szDifficulty, false) == 0 && iIndex++)
  {
   g_hDifficulty.SetString(g_szDifficultyStrings[iIndex], true);
   PrintToChatAll("\x05Установлен уровень сложности \x01- \x03%s \x01| Index: %i", g_szDifficultyStrings[iIndex], iIndex);
   
   return;
  }
    }

Но сервер при исполнении кода падает. Каким образом сделать то, что мне необходимо, чтобы не задействовать инкремент во всех блоках кода, а только в одном, или если так, то это невыполнимо и придётся использовать самый первый вариант ?
 
_wS_ Дата: Вторник, 27.02.2018, 01:50:20 | Сообщение # 2
Если я правильно понял:

Код
--iIndex;
while (++iIndex != g_iDifficultyVarSize)
{
   if (strcmp(g_szDifficultyStrings[iIndex], g_szDifficulty, false) == 0)
   {
      g_hDifficulty.SetString(g_szDifficultyStrings[iIndex], true);
      PrintToChatAll("\x05Установлен уровень сложности \x01- \x03%s \x01| Index: %i", g_szDifficultyStrings[iIndex], iIndex);
   
      return;
  }
}
 
Vitaminoz Дата: Вторник, 27.02.2018, 02:10:24 | Сообщение # 3
Сообщений: 142
Репутация: 1 [ +/- ]
Так мне нужно в блоке где идёт strcmp (если он логически правдив - TRUE): увеличить знание iIndex (то есть iIndex++), чтобы получился новый элемент массива
 
_wS_ Дата: Вторник, 27.02.2018, 02:36:30 | Сообщение # 4
Код что я дал, и этот твой:

Код
while (iIndex != g_iDifficultyVarSize)
{
   if (strcmp(g_szDifficultyStrings[iIndex], g_szDifficulty, false) == 0)
   {
      iIndex++;
      g_hDifficulty.SetString(g_szDifficultyStrings[iIndex], true);
      PrintToChatAll("\x05Установлен уровень сложности \x01- \x03%s \x01| Index: %i", g_szDifficultyStrings[iIndex], iIndex);
   
      return;
   }
  
   iIndex++;
}

Работают одинаково.
Хотя запутано всё + я не вижу всю картину, нормальный у тебя код, не пойму что тебе не нравится в нём.


Сообщение отредактировал _wS_ - Вторник, 27.02.2018, 02:42:11
 
Vitaminoz Дата: Вторник, 27.02.2018, 02:51:20 | Сообщение # 5
Сообщений: 142
Репутация: 1 [ +/- ]
Спасибо, взял твой вариант, чуточку изменив.
 
Форум » SourceMod - Counter Strike Source && CS GO » Обсуждение » Инкремент переменной
  • Страница 1 из 1
  • 1
Поиск: