Welcome to U.A.C. [O.S.A.]
login / register
Status: Guest
Архивы форума | iddqd.ru
Wolf 3D
ПравилаПравила ПоискПоиск
18+
Тема для новичков. Вопросы по маппингу/моддингу - любые!-2 Пред.  1, 2, 3 ... 34, 35, 36
   Список разделов - Местечко мапперов и моддеров - Тема для новичков. Вопросы по маппингу/моддингу - любые!-2Ответить
АвторСообщение
YURA_111
UAC Sergeant Major
Next rank: UAC Sergeant Major after 38 points
722

Doom Rate: 1.98

Posts quality: +128
Ссылка на пост №701 Отправлено: 06.04.21 11:59:17
ZZYZX пишет:
while updating the total monster count of the map accordingly


....Sets or clears the FRIENDLY flag of the calling actor while updating the total monster count of the map accordingly. If the calling actor's health is 0 or below, the flag is merely changed, while the total monster count remains untouched......

Это работает и сейчас через A_changeflag
JSO x
UAC Sergeant Major
Next rank: UAC Sergeant Major after 76 points
684

Doom Rate: 2.3

Posts quality: +288
Ссылка на пост №702 Отправлено: 06.04.21 21:43:22
Чисто обёртка -- похоже, просто чуть более безопасная.


Здесь есть исходный её код. Вызывает нативную CountAsKill(), код которой находится тут.

Разворачиваем обратным ходом. Третья ссылка:
// Возвращает "true", только если актор учитывается в счётчике монстров и не является "другом".
bool CountsAsKill() const {
    return (flags & MF_COUNTKILL) && !(flags & MF_FRIENDLY);
}

Вторая ссылка -- вызов нативной функции (на ум пришло сравнение «инверсия "extern"-кейворда»), то есть её можно пропустить, делает она всё равно ровно то же самое.

Первая ссылка:
void A_SetFriendly (bool set) {
    // Если актор ДО преобразования жив и является учитываемым при подсчёте врагом, то временно исключаем его:
    if (CountsAsKill() && health > 0)
        level.total_monsters--;

    // Устанавливаем/снимаем сам флаг:
    bFriendly = set;

    // Если актор ПОСЛЕ преобразования жив и является учитываемым при подсчёте врагом, то вставляем его в общее число врагов:
    if (CountsAsKill() && health > 0)
        level.total_monsters++;
}


Добавлено спустя 1 день 15 часов 20 минут 54 секунды:

ADD: нашёл обычную обработку флагов, 58 строк, вызывающих отдельные функции распознавания флага по переданной строке, нахождения этого флага среди всех, потенциального отлинковывания/отсоединения от игрового мира, изменения флага и потенциального прилинковывания актора обратно к миру. Зато универсальная.

Так что "A_SetFriendly( bool set )" -- элементарно огромное ускорение доступа к изменению флага.

Рейтинг сообщения: +1, отметил(и): YURA_111
1 5
MaStErDommind
- UAC Gunner -
Next rank: = UAC Gunner = after 10 points
50

Doom Rate: 2

Posts quality: +2
Ссылка на пост №703 Отправлено: 08.04.21 17:31:10
Заменил название, при запуске пишет, что карта MAP01 не найдена.
ZZYZX
- UAC Commissar -
Next rank: = UAC Commissar = after 216 pointsМодератор форума
6084

Doom Rate: 1.7

Posts quality: +1481
Ссылка на пост №704 Отправлено: 08.04.21 20:41:39
Так нижний MAP01 убери.
2 2 1
MaStErDommind
- UAC Gunner -
Next rank: = UAC Gunner = after 10 points
50

Doom Rate: 2

Posts quality: +2
Ссылка на пост №705 Отправлено: 08.04.21 21:18:47
Если уберу, название останется прежним, а в zdoom.pk3 не изменяется.
Страница 36 из 36Перейти наверх Пред.  1, 2, 3 ... 34, 35, 36
   Список разделов - Местечко мапперов и моддеров - Тема для новичков. Вопросы по маппингу/моддингу - любые!-2