Автор | Сообщение |
ZZYZX UAC Sergeant Major
 | 821 |
 Doom Rate: 1.38
|
Отправлено: 10.04.15 17:53:29 | | | VladGuardian : | Работает, без этих заумных FixedMul. |
Даааааа? А ничего что это 0.25*35 это 16384*35 и что это любимая ошибка начинающего ацсника, когда ожидаешь того что ожидаешь, а выходит НЁХ?
Пока лично не увижу, не поверю ) | |
|
| |
cybermind - Warrant Officer -
 | 1077 |
 Doom Rate: 1.87
|
Отправлено: 10.04.15 18:11:20 | | | ZZYZX
Примени к результату битовый сдвиг вправо на 16 (>> 16 то бишь) и получишь результат в "нормальных" целых числах. | |
|
| |
VladGuardian = Major =
 | 3094 |
 Doom Rate: 1.17
|
Отправлено: 10.04.15 19:56:21 | | | ZZYZX : | Даааааа? А ничего что это 0.25*35 это 16384*35 и что это любимая ошибка начинающего ацсника |
Виноват, дружище, действительно еще вправо на 16 бит сдвигать надо:
// задержка на полторы секунды
delay((1.5*35) >> 16);
Давненько программировал на ACS, уже подзабылось.
Но программировал много разного, "начинающим" уже не назовешь. | |
|
1 |
7 |
13 |
 |
|
| |
ZZYZX UAC Sergeant Major
 | 821 |
 Doom Rate: 1.38
|
Отправлено: 10.04.15 22:41:29 | | | VladGuardian : | Но программировал много разного, "начинающим" уже не назовешь. |
Да я не тебя лично имел в виду, а то что я точно не ошибаюсь на предмет того что даёт 0.25*35, потому что это крайне типичный баг.
А вообще такой способ конечно работает, но там будет ограничение на размеры перемножаемых чисел, в то время как FixedMul кастует в инт64.
static __forceinline SDWORD MulScale16 (SDWORD a, SDWORD b) { return (SDWORD)(((SQWORD)a * b) >> 16); } | |
|
| |
Arkady Yaborev Marine 1st class
 | 34 |
Doom Rate: 2
|
Отправлено: 11.04.15 08:33:39 | | | Спасибо всем, кто пытался мне помочь в вопросе про плавный переход музыки. Но я оставил все как есть. Во-первых, для меня все это пока сложновато. Во-вторых, пользуюсь GZDoom Builder версия 1.14 и он ругается, когда пытаюсь в скрипте прописать PlaySound или SoundVolum. Говорит, что они не определены. В общем бросил я эту проблему))). | |
|
| |
TesaQ = Lance Corporal =
 | 178 |
 Doom Rate: 1.87
|
Отправлено: 11.04.15 12:55:21 | | | Через какую программу лучше всего добавлять спрайты?к примеру, анимированная стена.И еще, как добавить текстуры через SLADE?Импортировал в .png формате, перевел на думовский, запускаю - текстурок то нет | |
|
| |
YURA_111 UAC Sergeant Major
 | 736 |
 Doom Rate: 2.17
|
Отправлено: 11.04.15 19:44:40 | | | TesaQ
Slade3 вне конкуренции...
Оффсеты проверь | |
|
| |
LEX SAFONOV UAC Sergeant Major
 | 685 |
 Doom Rate: 1.49
|
Отправлено: 12.04.15 07:30:20 | | | Есть такой вопрос - есть монстр, у него нет pain кадров, но pain-звук есть. Нужно чтобы он воспроизводил звук боли при попадании, но при этом в pain стейт не переходил(т.е. чтобы анимации не прерывались). Возможно ли такое замутить? | |
|
| |
YURA_111 UAC Sergeant Major
 | 736 |
 Doom Rate: 2.17
|
Отправлено: 12.04.15 11:01:43 | | | LEX SAFONOV
Можно! Создай новый тип крови именно для этого монстра. И поставь звук нужный тебе прямо в эту кровь. Соответственно при попадании в монстра, будет появляться кровь и вместе с ней и нужный тебе звук... | |
|
| |
The SAL - Corporal -
 | 90 |
 Doom Rate: 2
|
Отправлено: 12.04.15 11:27:35 | | | Как сделать в Doom in Hexen так, чтобы когда игрок проходил через линию появлялся монстр? Скриптом, естественно. Что-то вроде ThingFadeOut, но я не помню точно. Видел такую штуку на MAP01 Симплиситей. Очень охота такое в свою мапу запихать.
P.S.: Кстати, появлялся монстрюга еще и с характерным звуком из Doom64 | |
|
| |
+Ku6EPyXOBEPTKA+ - 2nd Lieutenant -
 | 1413 |
 Doom Rate: 1.75
|
Отправлено: 12.04.15 11:45:56 | | | The SAL : | Как сделать в Doom in Hexen так, чтобы когда игрок проходил через линию появлялся монстр? Скриптом, естественно. |
Это когда хеллкнайт спавниться в комнате перед выходом? Так это элементарный Thing_Spawn (можно и через SpawnSpot). Звук свой можно сделать обычной заменой существующий звука телепорта. | |
|
1 |
1 |
2 |
 |
|
| |
The SAL - Corporal -
 | 90 |
 Doom Rate: 2
|
Отправлено: 12.04.15 13:01:09 | | | +Ku6EPyXOBEPTKA+ : | Это когда хеллкнайт спавниться в комнате перед выходом? |
Не то. Я говорю про момент когда хеллнайт ВНЕЗАПНО выпрыгивает на игрока перед тем, как он возьмет синий ключ. В ваде в скриптах это дело записано как Thing_FadeOut, но как этим пользоваться я без понятия, вот и спрашиваю. | |
|
| |
LEX SAFONOV UAC Sergeant Major
 | 685 |
 Doom Rate: 1.49
|
Отправлено: 12.04.15 15:05:15 | | | Есть вопрос по использованию функции CheckActorFloorTexture.
Сделал вот такой простенький скрипт, так сказать проверить первым делом на игроке:
Script 909 (void)
{
if(CheckActorFloorTexture(0, "FWATER1"))
{
Print(s: "Yes, it's work");
}
else
{
Print(s: "No, it's don't work");
}
}
Иду на текстуру воды, ввожу puke 909 - выдаёт всё время ложный результат, в чём может быть дело? | |
|
| |
Archi]ASTS[ UAC General
 | 12719 |
 Doom Rate: 1.87
|
Отправлено: 12.04.15 17:29:48 | | | Наверное, дело в том, что это анимированная текстура. | |
|
2 |
1 |
1 |
 |
|
| |
Arkady Yaborev Marine 1st class
 | 34 |
Doom Rate: 2
|
Отправлено: 12.04.15 17:48:45 | | | Нет, дело не в том, что текстура анимированная. Я сейчас как раз заканчиваю карту, где это применяется. Не на игроке правда, а на монстре. У меня если монстр с тегом 67 погибает на воде, то открывается проход. Скрипт такой:
script 5 (void)
{
if(CheckActorFloorTexture(67,"fwater1"))
Floor_LowerByValue(71,32,192);
}
Работает.
Добавлено спустя 23 минуты 41 секунду:
2 Lex Safonov
Сейчас попробовал ваш скрипт на тестовой карте. Хм... Все работает. | |
|
| |
LEX SAFONOV UAC Sergeant Major
 | 685 |
 Doom Rate: 1.49
|
Отправлено: 13.04.15 10:13:02 | | | Archi]ASTS[ : | Наверное, дело в том, что это анимированная текстура. |
Действительно это так. Сделал проверку через массив(в массиве названия текстур зафигачил), теперь проверяет всё сразу. Результат выдаёт какой нужно, но всё равно есть косяк - почему то не работает на стороннем акторе(на игроке срабатывает как нужно).
Вот такой скрипт сделал
Script 909 (int IsWater)
{
int FloorNumber = 0;
While(FloorNumber < 26)
{
if(CheckActorFloorTexture(0, FloorTextures[FloorNumber]))
{
IsWater = 1;
SetResultValue(IsWater);
terminate;
}
else
{
FloorNumber += 1;
}
Delay(1);
}
SetResultValue(IsWater);
}
Скрипт должен вернуть результирующую IsWater, если 1, то под актором вода(или что то жидкое короче).
Вот такой декорейт:
Actor SewerBugDoomSpawner
{
States
{
Spawn:
TNT1 A 1
//TNT1 A 1 A_Jump(256, "Spawn1", "Spawn2", "Spawn3") //Закомментировал, пока продумываю спавнер.
TNT1 A 1 A_JumpIf(ACS_ExecuteWithResult(909,0,0,0) == 1, "IsWater")
Loop
Spawn1:
TNT1 A 0 A_SpawnItemEx("EmpireOfficer", 0, 0, floorz-z, 0, 0, 0, 0, SXF_NOCHECKPOSITION)
Stop
Spawn2:
TNT1 A 0 A_SpawnItemEx("EmpireCommando", 0, 0, floorz-z, 0, 0, 0, 0, SXF_NOCHECKPOSITION)
Stop
Spawn3:
TNT1 A 0 A_SpawnItemEx("EmpireInfantryman", 0, 0, floorz-z, 0, 0, 0, 0, SXF_NOCHECKPOSITION)
Stop
IsWater:
TNT1 A 0 A_SpawnItemEx("SewerBug", 0, 0, floorz-z, 0, 0, 0, 0, SXF_NOCHECKPOSITION)
Stop
}
}
По логике вещей актор ничего не должен спавнить, если под ним нет текстуры воды(т.к. там стоит Loop, то он будет просто циклично работать), но теперь почему то срабатывает всё время положительный результат, как будто ACS_ExecuteWithResult(909,0,0,0) всё время выдаёт число 1. Парни где у меня может быть косяк?) | |
|
| |
c4tnt = 1st Lieutenant =
 | 1879 |
 Doom Rate: 1.92
|
Отправлено: 13.04.15 15:35:02 | | | Лучше бы убрать оттуда Delay наверное. Плюс не очень понятны манёвры с IsWater | |
|
| |
alekv = 2nd Lieutenant =
 | 1456 |
 Doom Rate: 1.68
|
Отправлено: 13.04.15 16:53:22 | | | Я не проверял, но скорее всего проблема в SetResultValue(IsWater);
У тебя во всех случаях одно и то же значение передает тоесть 1, попробуй вне цыкла SetResultValue(0);
И я не понял зачем вообще цыкл?
Добавлено спустя 22 минуты 37 секунд:
The SAL : | Не то. Я говорю про момент когда хеллнайт ВНЕЗАПНО выпрыгивает на игрока перед тем, как он возьмет синий ключ. В ваде в скриптах это дело записано как Thing_FadeOut, но как этим пользоваться я без понятия, вот и спрашиваю. |
Можешь показать кусок кода... я про Thing_FadeOut в вики ничего не нашел. В моде монст как бы выходит из тени чтоли?
Если да, то знаю 1 способ минимум.., но тогда надо делать отдельный стейт в декорейте, как в acs затенить или вывести из тени thing без декорейта незнаю. | |
|
| |
+Ku6EPyXOBEPTKA+ - 2nd Lieutenant -
 | 1413 |
 Doom Rate: 1.75
|
Отправлено: 13.04.15 18:03:31 | | | alekv : | как в acs затенить или вывести из тени thing без декорейта незнаю. |
Возможно через SetActorProperty | |
|
1 |
1 |
2 |
 |
|
| |
alekv = 2nd Lieutenant =
 | 1456 |
 Doom Rate: 1.68
|
Отправлено: 13.04.15 18:17:10 | | | +Ku6EPyXOBEPTKA+ : | Возможно через SetActorProperty |
Точно, спасибо, постоянно забываю про ActorProperty. Так еще проще, даже стейты делать не надо  | |
|
| |