можно Else добавлять после каждого условия (что немного говнокод)
Я конечно извиняюсь, но не мог бы ты пояснить почему задание схожих условий через Else есть признак говнокода? В твоём варианте код выходит объёмней. Или он оптимальней обрабатывается?
Void Weaver потому что после одной проверки идет вторая, зависящая от первой, следом третья, зависящая от второй, итд
я хз, просто выглядит по-дурацки. ¯\_(ツ)_/¯
а тут чертыре отдельные проверки, каждая сама по себе
и типа код.. наверное, может сразу куда надо перейти? и не ходить.. через всю эту цепочку? наверное?
и совсем не объемно выходит, ты чего, он даже опрятнее
Опыт показывает, что твой код тяжелее для выполнения машиной.
По прежнему будут вычисляться выражения ВСЕХ операторов, независимо от места срабатывания.
Плюс ты усложнил выражения внутри операторов. Повышенная нагрузка
Извиняй за придирчивость, я слишком много оптимизировал код и это вошло в привычку
Anto96WS С чего это вдруг оффтоп? Имхо, вопросы оптимизации кода полностью вписываются в тему топика.
Был бы признателен если кто расставит точки по этому вопросу:
Void Weaver:
1. Краем уха слышал что существует небольшая, но тем не менее, разница в ресурсоёмкости между Goto, Loop и _Jump. Если это правда, то что из этого лучше использовать для снижения ресурсоёмкости?
1. Краем уха слышал что существует небольшая, но тем не менее, разница в ресурсоёмкости между Goto, Loop и _Jump. Если это правда, то что из этого лучше использовать для снижения ресурсоёмкости?
Ну чисто теоретически - к A_Jump всегда пришит как минимум генератор случайных чисел и сверка с результатом, это всё отжирает немного ресурсов. Goto и Loop - операторы безусловного перехода, в которых нет ничего лишнего, при этом Loop не содержит никаких дополнительных указателей сдвига, так что должен работать немного быстрее.
Энивей, эти мелочи ничто по сравнению с нагрузками на рендер. Поэтому если проверить гипотезу комнатой на 100500 ревенантов, в которых Loop будет заменен на Goto и на A_Jump, то фпс во всех трёх случаях скорее всего будет одинаковым.
Как ввести правильно код на нового противника? Я ввожу его:
actor Bat
{
Health 18
Radius 16
Height 56
Mass 45
Speed 9
Damage 5
PainChance 256
SeeSound "bat/sight"
DeathSound "bat/death"
AttackSound "bat/attack"
DropItem "Clip" 256
Monster
+FLOAT
+NOGRAVITY
States
{
Spawn:
CBAT AB 10 A_Look
loop
See:
CBAT AABBCCDD 4 A_Chase
loop
Missile:
CBAT E 10 A_FaceTarget
CBAT F 8 A_PosAttack
CBAT E 8
goto See
Pain:
CBAT G 3
CBAT G 3 A_Pain
goto See
Death:
CBAT H 5
CBAT I 5 A_Scream
CBAT J 5 A_NoBlocking
CBAT K 5
CBAT L 5
CBAT M -1
stop
XDeath:
CBAT N 5
CBAT O 5 A_XScream
CBAT P 5 A_Noblocking
CBAT Q 5
CBAT R -1
stop
Raise:
CBAT LKJIH 5
goto See
}
}
но во время тестирования игра вылетает + в Doombuildere, равно как и в Slade, он не отображается. Еще ошибка возникает: You cannot pass parameters to 'A_Scream'.
Скорее всего актер с именем bat уже есть в сорцах гздума, точнее в gzdoom.pk3, скорее всего это актер из еретика или хексена
Потому именуй по другому, попробуй написать так:
Actor bat2 16787
{//$Category "New monster"
и в гздб ищи категорию new monster (или на крайняк user-defined)
А что, РНГ активируется даже при значении 256? Просто подразумевался джамп со 100% шансом, как аналог goto.
Даже если и не активируется - там должен стоять отдельный if на этот случай, который тоже подразумевает одно лишнее действие. Да и вряд ли кто-то заморачивался прописывать исключение для значения 256.
BJ34 Звучит так, как будто где-то к A_Scream кто-то присобачил скобки, и парсер подавился, не ожидая её там увидеть. Есть подозрение, что это не единственное место с A_Scream, и косяк где-то ещё.
На какую именно строку ссылкается ошибка? Строки в лумпах пронумерованы.
У меня вопрос: Можно ли сделать так чтобы у игрока не было ВООБЩЕ оружия. Тоесть просто пустота. Чтобы не было ни кулаков, ни пистолета. Как это реализовать? Хочу сделать сюжетную карту, не как простую. Можете написать скрипт ZDoom, как удалить оружие, заранее спасибо.
Как сделать, чтобы проигрался звук на карте по ACS-скрипту? Например звон металла у опускающегося пола. Именно около него в каком либо радиусе?
Еще... Не работает NoiseAlert в UDMF.
Код:
Скрытый текст:
script 616 (void)
{
...
NoiseAlert(0, 1) // 0 - игрок, 1 - зомбимен, который должен триггернуться, но, почему то, он не реагирует...
}
Остальные части скрипта работают отлчино. Что я делаю не так?