Иконка ресурса

Furrien Mod 2.1

Нет прав для скачивания
Сообщения
1,420
Реакции
2,511
Помог
58 раз(а)
w0w, пруфы? Я лично сомневаюсь в такой реализации.

Оператор ИЛИ возвращает истину, если хотя бы одно из условий истина. Если представить это математически (логическим сложением, разумеется), то хотя бы одна 1 (как истина) в сумме с любыми другими операндами уже даст 1 в любом случае.
С логическим умножением всё также - при умножении если хоть один операнд будет иметь 0 (ложь), то результатом будет 0, ведь любое число умножить на 0 - будет 0.

Такая реализация математически обоснована хотя бы.
Ну а я о чём говорю? Если хоть 1 совпадёт то выполнится условие. Соответственно, если у нас первое условие true то и код выполняется и дальше по условиям не будет идти, ибо уже совпало 1.
 
Сообщения
494
Реакции
341
Помог
11 раз(а)
w0w, так проблема в том, что все условия будут проверены тогда. А если их проверять поочередно, то предыдущее отсекает следующее.

В этом случае проверятся все условия в любом случае без исключения и всегда:
C++:
if(!is_user_connected(iAttacker) || g_bIsFurrien[iAttacker] || iVictim == iAttacker)
    return;
А в этом нет:
C++:
if(!is_user_connected(iAttacker))
    return;

if(g_bIsFurrien[iAttacker])
    return;

if(iVictim == iAttacker)
    return;
То есть если ID=iAttacker не приконнекшен, то выполнение кода будет далее прекращено. Со вторым условием также.
То есть в каких-то моментах это дает оптимизацию.
 
Сообщения
432
Реакции
410
Помог
14 раз(а)
В этом случае проверятся все условия в любом случае без исключения и всегда:
Это ведь легко проверить: сделайте условия из трех функций, которые будут что-нибудь писать в консоль и возвращать true/false и посмотрите
 
Сообщения
2,751
Реакции
3,015
Помог
61 раз(а)
Сообщения
1,420
Реакции
2,511
Помог
58 раз(а)
И правда, получается что всё же проверяет все, печально конечно, думал не проверяет следующие условия если совпало одно условие.
 
Сообщения
494
Реакции
341
Помог
11 раз(а)
voed, Код:
C++:
#include <amxmodx>

new g_iValue[3];

public plugin_init()
{
    if((g_iValue[0] = 1) || (g_iValue[1] = 0) || (g_iValue[2] = 1)) {}
  
    server_print("%i | %i | %i", g_iValue[0], g_iValue[1], g_iValue[2]);
}
123.png

Всё-таки да, оба варианта работают одинаково.
13 Мар 2019
Второе условие сразу же вызвало прекращение дальнейшей проверки третьего условия, соответственно, единица не присвоилась третьему элементу массива, всё визуально видно на скрине.

P.S Аналогия с математическим представлением здесь не работает.
 
Сообщения
509
Реакции
111
Помог
16 раз(а)
У кого нибудь стоит данный мод? Работает стабильно?
 
Сообщения
71
Реакции
39
Интересно, этот мод был доделан в полной мере, или так и остался сырым?
 
Сообщения
494
Реакции
341
Помог
11 раз(а)
KRYSIS, перестал быть "сырым" с приходом версии 2.1.
 

Пользователи, просматривающие эту тему

Сейчас на форуме нет ни одного пользователя.
Сверху Снизу