Контакты Поиск

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

  • Страница 1 из 1
  • 1
Форум » SourceMod >> CS:Source >> CSGO » Обсуждение » Консультация
Консультация
Samil Дата: Суббота, 20.09.2014, 17:48:55 | Сообщение # 1
Сообщений: 59
Репутация: 11 [ +/- ]
Допустим создал bool пусть будет:
new bool:a[MAXPLAYERS+1];
Можно ли делать такую проверку?:
if (a[client] == true) или только такую?:
if (a[client])
 
_wS_ Дата: Суббота, 20.09.2014, 20:54:43 | Сообщение # 2
Можно и так и так, но вторая проще ж.
 
Samil Дата: Воскресенье, 21.09.2014, 07:29:32 | Сообщение # 3
Сообщений: 59
Репутация: 11 [ +/- ]
Мне R1KO так и объяснял, но мне нравится точность условий, спасибо wS за то, что подсказал.
 
хвостег Дата: Воскресенье, 21.09.2014, 13:18:21 | Сообщение # 4
Сообщений: 161
Репутация: 53 [ +/- ]
Какие значения можно считать "истинными", а какие "ложными"?

Если значение больше или меньше нуля, то оно истинно, иначе ложно и не важно целое значение или вещественное(с точкой)

Пример:
-1.0 = true
100500 = true
0 = false
0.0 = false

Булевый тип вообще понять просто, там либо true, либо false!

А теперь по теме.
Во-первых, конструкция if(a[client] == true) - самый настоящий быдлокод!
Во-вторых, сравнение через оператор равенства занимает больше времени.

Буль он и в африке буль. Это как переключатель, либо включен, либо выключен.

Если ты хочешь выполнить что-либо, когда переменная приняла Истинное значение, используй if(a[client]) { твой код }, а если Ложное if(!a[client]) { твой код }

Теперь про время затраченное на условие.

Если у тебя переменная НЕ булевого типа и тебе нужно сравнить ее с -1 (-1 в сурспавне повсюду), большинство используют такое

if(MoyaPeremennaya == -1) {} - на выполнение такого условия удет больше времени чем на это if(MoyaPeremennaya < 0) {}

А вообще все это придет с опытом, если будешь много читать о том, как устроено программирование в целом, научишься всем тонкостям.

Пример использования Булевого типа:
Всем когда-нибудь приходилось делать переключатель(допустим в менюшке) и большинство сооружают такую хрень.

new bool:Switch = false;

*****

if(Switch == false)
{
Switch = true;
PrintToChatAll("Света нет");
}
else if(Switch == true)
{
Switch = false;
PrintToChatAll("Свет есть");
}

отсюда вопрос, зачем так мучать себя?

решение куда проще

new bool:Switch = false;

***

Switch = !Switch //все! переключатель готов! Теперь просто нужно что-то выполнить в зависимости от положения "переключателя"

// Так делают когда много чего нужно выполнить на каждое положение
if(Switch)
{
PrintToChatAll("Свет есть");
}
else
{
PrintToChatAll("Света нет");
}

// а так, если просто вывести сообщение

PrintToChatAll("%s", Switch ? "Свет есть": "Света нет"); // Happy End!

П.C. Надеюсь, когда-нибудь, с лица земли исчезнет быдлокод!


Сообщение отредактировал хвостег - Воскресенье, 21.09.2014, 13:50:18
 
dases2003 Дата: Воскресенье, 21.09.2014, 16:47:19 | Сообщение # 5
Сообщений: 107
Репутация: 1 [ +/- ]
Меня этому BarD учил(=
 
Форум » SourceMod >> CS:Source >> CSGO » Обсуждение » Консультация
  • Страница 1 из 1
  • 1
Поиск: