30

» Корсары / Передача данных

avuremybe, ну как-бы это ссылка, но с типом. Как по нотации функции понять какой тип ожидается в a?
void NumChanger (ref a)
{
}
30

» Корсары / Функции

Поскольку в обеих случаях имеется в виду одно и то же, то употребление данного термина является занудством ради занудства.
30

» Корсары / Директивы

Я сильно в ихний "компайлер" не вникал, пока что. Только поверхностно смотрел.
Там скорее всего оргызок от плюсов. И построен он на старом добром "лексер, прасер, визитор". И если лексер не распознает идентификатор из таблицы define то магии не случится. По этой же причине, кстати, не работают комментарии внутри строковых литералов.
30

» Корсары / Массивы

avuremybe, кто их общепринял? Вон, SQL вообще на это ваше общепринятие ложил и почему-то никто на него ругается.
30

» Корсары / Условные операторы

Ну да. Нигде не написано, что default должен быть последним выражением.
30

» Корсары / Директивы

avuremybe, ну тогда вообще непонятно, почему define не сработает внутри строкового литерала.
30

» Корсары / Массивы

avuremybe, можно хоть один пример, где Lua на какие-то там принципы положил? И желательно с обоснованием.
30

» Корсары / Условные операторы

Что насчёт расположения default?
enum MyEnum {A, B, C}

int GetMyEnumValue(int myInt){
    switch(myInt){
        case MyEnum::A:
           return MyEnum::A;
        // Если myInt не является одним из значений MyEnum, используем MyEnum::B в качестве значения по умолчанию.
        default:
        case MyEnum::B:
           return MyEnum::B;
        case MyEnum::C:
           return MyEnum::C;
    }
}
30

» Корсары / Массивы

avuremybe, ты дал общее определение "в программировании". Lua напрямую к нему относится и в нём индексация начинается с единицы.
30

» Корсары / Директивы

Когда препроцессор встречает макросы-объекты с текст_замена
Почему препроцессор, если этим занимается лексер?
30

» Корсары / Массивы

В программировании отсчёт всегда начинается с 0, а не с 1.
Lua с тобой не согласится.
30

» Корсары / Условные операторы

И компиляции, в том виде, к которому ты привык, у нас нет, бтв.
Если процесс компиляции скрыт от разработчика, то это не значит что его нет.
30

» Корсары / Условные операторы

Кстати, код swittch разруливается на этапе компиляции и соответсвтвенно выполнится за O(1) вместо O(n) как в случае elseif.
30

» Корсары / Условные операторы

использование логических И и ИЛИ в одном выражении вызывает ошибку
Я надеюсь сложение и умножение разрешено в одном выражении?
30

» Корсары / Типы данных

avuremybe, в плюсах такое же поведение:
int main()
{
    
    int a = 0;
    std::cout<< (a == true) << (a == false) << (a ? 1 : 0) << "\n"; // 010
    
    int b = 1;
    std::cout<< (b == true) << (b == false) << (b ? 1 : 0) << "\n"; // 101
    
    int c = 2;
    std::cout<< (c == true) << (c == false) << (c ? 1 : 0) << "\n"; // 001
    
    int d = -2;
    std::cout<< (d == true) << (d == false) << (d ? 1 : 0) << "\n"; // 001

    return 0;
}
30

» WarCraft 3 / Баланс. Почему в Warcraft 3 рост брони НЕ идёт по убывающей полезности. Развенчиваем мифы.

Предположим, что у нас есть юнит А с бронёй, которая поглощает 50% урона.
Мы хотим за счёт повышения поглощения брони сделать этого юнита в 2 раза живучее при физических атаках.
Вопрос: какое должно быть новое поглощение урона, чтобы юнит А стал в 2 раза эффективнее?
Ответом будет: 75%.
Юнит, поглощающий 75% урона живёт вдвое дольше, чем юнит, поглощающий 50%.
Можно ещё на тычках объяснить. Хорошие числа получаются на 100хп и 4хп тычке.
4 - (4 * 0) = 4; 100 / 4 = 25 тычек для убийства
4 - (4 * .5) = 2; 100 / 2 = 50 тычек для убийства
4 - (4 * .75) = 1; 100 / 1 = 100 тычек для убийства
30

» Корсары / События

avuremybe, хм, интересно, а исходники игры открыты или дизасемблированы?
30

» Корсары / События

Одну и туже функцию можно несколько раз добавить каллбэком в одно и тоже событие.
30

» WarCraft 3 / Поиск незакрытых if'ов

function main takes nothing returns nothing
    local string s = "
		if будет отловлен
	"
endfunction
30

» WarCraft 3 / Программа для конвертации jass кода в lua

Конвертер работает неправильно. При запуске в игре и запуске js кода результаты отличаются.
function A takes nothing returns nothing

if false and true or true then
	call BJDebugMsg("true")
else 
	call BJDebugMsg("false")
endif

if true or false and false then
	call BJDebugMsg("true")
else 
	call BJDebugMsg("false")
endif

endfunction