26

» Администрация XGM / Очередные баги с ЕХР

Щас ответил на коммент скорпи - его тоже система проигнорила.
Такое впечатление, что оно игнорит именно ответы на другой комментарий.
С другой стороны, "вышла новая версия" это не ответ. Или ответы - это такой же комментарий с особым типом, как и "вышла новая версия"?
Upd: не, истина где-то в другом месте. У скорпи тоже нет экспы за то сообщение, а оно не ответ, а самостоятельный коммент
26

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

nazarpunk, не понял. Что за 0(1) и 0(n) ?
И компиляции, в том виде, к которому ты привык, у нас нет, бтв.
26

» Корсары / Объекты

Вышла новая версия! Прокрутить к ресурсу
  • Описана проблема при обращении к атрибуту
Спасибо камраду Rosarak
26

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

nazarpunk, да.
Кстати, сложениями и умножениями можно закостылитьпобороть ограничение на И + ИЛИ
if(((a)*(b) + с) - (a)*(b)*(c))
где операция И - это a x b; операция ИЛИ - это a+b-(a x b)
26

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

Вышла новая версия! Прокрутить к ресурсу
Внесены подсказанные Rosarak правки:
  • особенности ветвлений else if вне интерфейсов
  • выполнение кода оператором switch вне конструкций case-break
  • альтернатива лейблу default для последних версий Storm Engine
  • третий вариант обхода ограничения на логические И и ИЛИ в одном выражении
26

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

nazarpunk, совместно с Rasarak удалось разгадать тайну работы bool в этой шайтан-машине:
int a;

if (a == true) {}	// при таком обращении 1 возвращает true, а все остальные числа - false
if (a) {}			// а при таком - 0 возвращает false, a все остальные числа true
26

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

Вышла новая версия! Прокрутить к ресурсу
Добавлено описание следующих нюансов:
  • Уточнение принимаемых значений bool, если передавать в него числа.
  • Передача float в bool.
  • Прямое присвоение float строке.
  • Особенности работы string.
26

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

Очень годное развенчивание мифа.
Если отсюда выбросить завязанность на варкрафте - получится хорошая статья для геймдев раздела.
26

» Корсары / Объекты

Вышла новая версия! Прокрутить к ресурсу
  • Добавлен раздел, описывающий функции для работы с атрибутами объекта.
позже будет добавлен раздел практических примеров работы с объектами
26

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

Rosarak, мысль интересная.
Для ситуаций, когда очень нужно и без этого никак - вполне себе решение.
26

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

nazarpunk, открыли недавно. Пацаны всем селом уже успели там многое перепилить, но основа на месте
26

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

nazarpunk, не похоже
uint32_t S_EVENTTAB::AddEventHandler(const char *event_name, uint32_t func_code, uint32_t func_segment_id, int32_t flag, bool bStatic)
{
    uint32_t i;

    const auto hash = MakeHashValue(event_name);

    const auto ti = HASH2INDEX(hash);

    for (uint32_t n = 0; n < Event_num[ti]; n++)
    {
        if (pTable[ti][n].hash == hash)
        {
            if (!storm::iEquals(event_name, pTable[ti][n].name))
                continue;
            // event already in list
            for (i = 0; i < pTable[ti][n].elements; i++)
            {
                // event handler function already set
                if (pTable[ti][n].pFuncInfo[i].func_code == func_code)
                {
                    /*if(pTable[ti][n].pFuncInfo[i].status == FSTATUS_DELETED)
                    {
                      trace("pTable[ti][n].pFuncInfo[i].status == FSTATUS_DELETED : %s",pTable[ti][n].name);
                    }*/
                    // return n;
                    pTable[ti][n].pFuncInfo[i].status = FSTATUS_NORMAL;

                    return (((ti << 24) & 0xff000000) | (n & 0xffffff));
                }
            }
            // add function
            i = pTable[ti][n].elements;
            pTable[ti][n].elements++;
            pTable[ti][n].pFuncInfo.resize(pTable[ti][n].elements);

            pTable[ti][n].pFuncInfo[i].func_code = func_code;
            pTable[ti][n].pFuncInfo[i].segment_id = func_segment_id;
            if (flag)
                pTable[ti][n].pFuncInfo[i].status = FSTATUS_NEW;
            else
                pTable[ti][n].pFuncInfo[i].status = FSTATUS_NORMAL;
            pTable[ti][n].pFuncInfo[i].bStatic = bStatic;
            // return n;
            return (((ti << 24) & 0xff000000) | (n & 0xffffff));
        }
    }

    // add new event
    if (Event_num[ti] >= Buffer_size[ti])
    {
        Buffer_size[ti] += BUFFER_BLOCK_SIZE;
        pTable[ti].resize(Buffer_size[ti]);
    }

    pTable[ti][Event_num[ti]].elements = 1;
    pTable[ti][Event_num[ti]].hash = hash;
    pTable[ti][Event_num[ti]].name = nullptr;

    pTable[ti][Event_num[ti]].pFuncInfo.push_back(EVENT_FUNC_INFO{});
    pTable[ti][Event_num[ti]].pFuncInfo[0].func_code = func_code;
    pTable[ti][Event_num[ti]].pFuncInfo[0].segment_id = func_segment_id;
    if (flag)
        pTable[ti][Event_num[ti]].pFuncInfo[0].status = FSTATUS_NEW;
    else
        pTable[ti][Event_num[ti]].pFuncInfo[0].status = FSTATUS_NORMAL;
    pTable[ti][Event_num[ti]].pFuncInfo[0].bStatic = bStatic;

    if constexpr (true) // bKeepName)
    {
        if (event_name)
        {
            const auto len = strlen(event_name) + 1;
            pTable[ti][Event_num[ti]].name = new char[len];
            memcpy(pTable[ti][Event_num[ti]].name, event_name, len);
        }
    }
    Event_num[ti]++;
    // return (Event_num[ti] - 1);
    return (((ti << 24) & 0xff000000) | ((Event_num[ti] - 1) & 0xffffff));
}
26

» Корсары / Среда разработки

ScorpioT1000, хмм. Вот этого не знал.
Как дойдут руки поковырять Caribbean Legend - я ознакомлюсь. Они там пересобрали движок на MSVS19 и файлы скриптов все перевели в формат .b (это от вижуал бейсика, как я понял).
26

» Корсары / Среда разработки

nazarpunk, проще np++ ничего нет.
Скорпи уже выражал недовольство по поводу моих олдскул-наклонностей))
Я обязательно запилю раздел с MSVS, но сейчас нет на это настроения.
Если есть желание помочь с этим - буду благодарен.
26

» Администрация XGM / Черный Икс

Черный икс - это к нам 🤘
Илон, со своими электронедоразумениями, пусть отдыхает.
26

» Корсары / Объекты

ScorpioT1000, мне бы для начала последние три статьи перевести на человеческий язык и дополнить реальными примерами.
А то они сейчас выглядят как документация, а не обучающий материал для новичка. 😅
За наводки большое спасибо, занесу это в таск-лист.
26

» Администрация XGM / Основы форматирования текста

Почему заголовки нельзя покрасить?
Пробовал по-всякому:
??## текст??
## ??текст??
Получается либо крашенный текст с диесами, либо белый заголовок с вопросительными знаками.
26

» Корсары / Заголовочные файлы

ScorpioT1000, ты же понимаешь, что "работает хорошо" и "работает правильно" это разные вещи.
Не стоит в цикле основ учить людей хитровылюбленным технологиям))
О возможных способах налюбить систему и их последствиях, как правило, пишут в специализированных темах для тех, кто уже разбирается.
26

» Корсары / Заголовочные файлы

ScorpioT1000, да нет, правило вполне себе общее.
Я так и не понял, что тот чувак по ссылке пытается выиграть, перерося код в хедеры. Время компиляции? Это чушь и ему там это сто раз обяснили.
Добиться схожести с джавой? Весь код в одном файле?
Это как переносить другую игру на варкрафт, или переносить варкрафт на движок другой игры.
Через Ж всегда можно сделать. А я пытаюсь учить людей делать правильно))
26

» Корсары / Актуальные вакансии раздела "Корсары"

EugeAl, если у меня появится кто-нибудь, кто занимается моделями - я подумаю над этой мыслью.
26

» Корсары / Актуальные вакансии раздела "Корсары"

EugeAl, на кой черт мне модели для wc3?
Я моддинг Корсаров освещаю.
26

» Администрация XGM / Метки ресурсов и поиск по ним

ScorpioT1000, я читал, там формулировки неоднозначные.
В метках не нужно перечислять название текущего проекта или значения из других дополнительных полей - они либо проставляются сами, либо не требуются по логике работы сайта
Воспринимается как "не нужно для внутреннего поиска".
Поэтому и уточняю.