Открою одну страшную тайну - радиус дамага делается с помощью функции A_Exlode. По сути ты можешь эту функцию запихать в актор "дымка" и даже хискан начнёт дамажить уже с радиусом)
Но есть нюанс - в этом случае дамажить будет вдвое сильнее, если дамаг будет иметь и хитскан и дымок с функцией A_Explode. (Логично ведь будет предположить, что дамажит уже оба элемента, а не один
Я имел ввиду может вместо пуль спавнить прожектайл с damage type и без радиуса дмг, думал что такой вариант может заменить пулю Этого я не знал "Повреждения делает хитскан, а дым - это его элемент"
Печальный опыт такой был.
Прежде всего, пули будут лететь очень быстро (а они, скорее всего, будут) и простреливать любую стену из-за странной организации коллижона в думе и портах.
Вторая проблема, вытекающая из первой, состоит в том, что и игроков, как и монстров, порой, можно будет также "прострелить" и пули будут лететь сквозь.
Не стоит вообще этого делать и причин предостаточно.
Вторая проблема, вытекающая из первой, состоит в том, что и игроков, как и монстров, порой, можно будет также "прострелить" и пули будут лететь сквозь.
А в самом снаряде если прописать что-то типа
A_JumpIfCloser(xxx) и прыгает на стейт Death не уберет такую проблему? Или добавить прожектайлу флаг +TOUCHY (Если он столкнется с чем либо он умрет)
Печенька :
Прежде всего, пули будут лететь очень быстро (а они, скорее всего, будут) и простреливать любую стену из-за странной организации коллижона в думе и портах.
Тот же +TOUCHY мог бы помочь со стенами? Скорость в прожектайле настраивается или нет?
"коллижона" "коализия" что это ?
Вопрос на прошлой странице про Hub lvl еще актуален.
"Невидимые кубы", коализия отвечает за столкновения объектов.
На счёт пролетаемости - в вики ясно и понятно по этому поводу написали, что обычным проджектайлам не нужно выставлять значения скорости выше 80 ибо у них начинает проглючивать коализия(как раз те приколы с пролетанием стен, пролетанием сквозь акторы).
Чтобы этого не было - нужно использовать новый класс FastProjectile, который использует немного другой метод проверки столкновений.
Пример:
LEX SAFONOV
Понятно, спасибо за объяснение.
А можно ли как-то использовать/управлять коализией в ACS? Или это тот же Radius & Height у актора?
Добавлено спустя 2 часа 24 минуты 2 секунды:
Появилась проблемка c Decorate, нужна помощь
Есть актор Box и Ghost. Box Спавнит Ghost внутри себя с новым TID 444 который нужен мне для acs вычислений.
Проблема в том что если в игре будет 2 Box или больше, то актор Ghost с TID 444 будет только 1, а все другие Box будут спавнить Ghost с фиг знает каким TID.
Дать TID с помощью ACS конечно пробовал, но актор Ghost существует не более 5 тиков, видимо этого не достаточно для ACS вычислений и он просто не успевает что ли.
Что можете посоветовать в таком случае? (Может как-то можно дать ID подругому? Если прописать SpawnID в свойствах актора.. это не подходит acs не реагирует на него
Вообще в идеале мне надо что бы у актора GHOST был TID только 444 до спавна и не важно сколько их на карте TID всегда 444.
Вот сам код:
Скрытый текст:
Actor Ghost 14510
{
//$Category Object
Radius 24
Height 1
-SOLID
States
{
Spawn:
TNT1 A 5
Stop
}
}
Actor Box 14500
{
//$Category Object
Health 0x7fffffff
Radius 17
Height 35
Mass 50
Scale 1.50
Friction 0.75
+SOLID
+PUSHABLE
+NOBLOOD
-SHOOTABLE
+LOOKALLAROUND
+Bright
States
{
Spawn:
MODL A 1 A_SpawnItemEx("Ghost",0,0,0,0,0,0,0,SXF_CLEARCALLERTID,0,444)
Loop
}
}
А можно ли как-то использовать/управлять коализией в ACS? Или это тот же Radius & Height у актора?
Да, именно. Но я не помню можно ли менять эти параметры через SetActorProperty в АЦС. Так же замечу, что в зандро очень много параметров не держится через эту функцию(так что даже если сработает в гоззе, то в зандро с вероятностью 20% на 80%).
alekv :
Вообще в идеале мне надо что бы у актора GHOST был TID только 444 до спавна и не важно сколько их на карте TID всегда 444.
А ты попробуй через функцию Thing_ChangeTID прямо в акторе GHOST поменять тид.
Вот так например:
Скрытый текст:
Actor Ghost 14510
{
//$Category Object
Radius 24
Height 1
-SOLID
States
{
Spawn:
TNT1 A 0
TNT1 A 0 Thing_ChangeTID(0, 444)
TNT1 A 5
Stop
}
}
Actor Box 14500
{
//$Category Object
Health 0x7fffffff
Radius 17
Height 35
Mass 50
Scale 1.50
Friction 0.75
+SOLID
+PUSHABLE
+NOBLOOD
-SHOOTABLE
+LOOKALLAROUND
+Bright
States
{
Spawn:
MODL A 1 A_SpawnItemEx("Ghost",0,0,0,0,0,0,0)
Loop
}
}
Да, именно. Но я не помню можно ли менять эти параметры через SetActorProperty в АЦС. Так же замечу, что в зандро очень много параметров не держится через эту функцию(так что даже если сработает в гоззе, то в зандро с вероятностью 20% на 80%).
Да можно, если зандр не тянет эти функции, то мой мод на нем не запустится
LEX SAFONOV :
А ты попробуй через функцию Thing_ChangeTID прямо в акторе GHOST поменять тид.
Попробовал, к сожалению ничего не поменялось, получается предидущий результат.. неужели нет работащих способов? О_О
Попробовал, к сожалению ничего не поменялось, получается предидущий результат.. неужели нет работащих способов? О_О
Весьма странно, ты точно уверен? По идее должно железно работать(у самого монстры таким макаром сделаны)
Опиши по детальнее что именно требуется получить через АЦС, мне кажется сам скрипт просто работает медленнее.
Script 70 Enter
{But = GetPlayerInput(-1,INPUT_BUTTONS);
Int BoxR = GetActorProperty(770,APROP_Radius);
Int PlaR = GetActorProperty(0,APROP_Radius);
Int PlaY = GetActorY(0);
Int BoxY = GetActorY(770);
If(PlaY <BoxY> BoxY - PlaR - BoxR && GetActorVelY(0)!=0 && GetActorZ(0)==GetActorZ(770) && But & BT_FORWARD)
{
TakeInventory("NoPush",1);
GiveInventory("Push",1);
State("Push");
Delay(15);
Restart;
}
TakeInventory("Push",1);
GiveInventory("NoPush",1);
Delay(1);
Restart;
}
Вот скрипт... ничего сложного или тормозящего нет. 770 это таг актора Ghost который он получает в декорейте. Пробовал дать TID через acs, тоже как-то не сложилось результат всегда тот же.
Теперь для чего мне это надо, как писал выше есть актор BOX и GHOST, BOX это ящик который в игре можно толкать, Ghost это невидимая платформа которая существует 5 тиков которую спавнит BOX и
благодаря которой в ACS я знаю что игрок около ящика и если он нажмет BT_FORWARD то значит что он толкает ящик и выставляется соответствующий стейт.
Ghost существует 5 тиков для того что бы он находился постоянно возле BOX как бы обновлял свои координаты которые зависят от того где находится BOX.
Я еще не пробовал сделать так когда BOX в движенни GHOST принимал его координаты потипу SetActorVelocity... может тогда вопрос с TID отпадет, но хочу узнать в чем проблема в старом способе, может через ацс можно как-то выставить один и тот же TID ?
Я примерно так пробовал дать TID
Script 10 (Void)
{
Int Ghost = ActivatorTID();
If(!Ghost)
{
Ghost = UniqueTID(770);
Thing_ChangeTID(0, Ghost);
}
}
Пробовал еще и другие способы, но уже забыл.
Прежде всего, пули будут лететь очень быстро (а они, скорее всего, будут) и простреливать любую стену из-за странной организации коллижона в думе и портах.
Вторая проблема, вытекающая из первой, состоит в том, что и игроков, как и монстров, порой, можно будет также "прострелить" и пули будут лететь сквозь
Пробуй увеличить Height и Radius у актора. Мне это помогло.
alekv
А флаг +PUSHABLE не хочешь юзать или он не работает?
Добавлено спустя 5 минут 9 секунд:
YURA_111 :
Значит и повреждения должен производить дымок, а не пули или я что-то не понимаю?
НЕТ! есть волшебная опция, такая как A_CustomBulletAttack, там прописывается урон. Дымок - это просто эффект.
А разве на самого зомбимэна нельзя DamageType повесить? У меня вроде все работало.
Добавлено спустя 1 минуту 8 секунд:
alekv :
Вопрос на прошлой странице про Hub lvl еще актуален.
Возник вопрос. Как сделать вад, в котором содержится две или более карты? То есть, у меня есть вад с картой MAP01, а мне надо делать в этом же ваде карту MAP02. Как?
В думбилдере помимо Save есть вариант Save Into. Делаешь новый вад, в нём называешь карту MAP02 и с помощью Save Into сохраняешь её в вад с мап01. На всякий случай сделай копии сначала, у меня по крайней мере в первом дум билдере так почему-то пропадали карты иногда. Сейчас наверно починили, но хз.
Возник вопрос. Как сделать вад, в котором содержится две или более карты? То есть, у меня есть вад с картой MAP01, а мне надо делать в этом же ваде карту MAP02. Как?
Memfis :
В думбилдере помимо Save есть вариант Save Into. Делаешь новый вад, в нём называешь карту MAP02 и с помощью Save Into сохраняешь её в вад с мап01. На всякий случай сделай копии сначала, у меня по крайней мере в первом дум билдере так почему-то пропадали карты иногда. Сейчас наверно починили, но хз.
или можно через SlumpED, XWE продублировать карты, переименовать дубликат в "МАР02" и работать над ним.
alekv
А флаг +PUSHABLE не хочешь юзать или он не работает?
Где его заюзать? О_О
MasterMind :
Вопрос на прошлой странице про Hub lvl еще актуален.
Where is it?
И вопрос, кто разбирается в Hub уровнях, как они устроены кому не сложно написать в кратце(Wiki читал, но как-то не допонимаю..)? Еще интересует.. есть большая карта, она очень тормозит, если ее разбить на части и объединить в HUB lvl это поможет справится с тормозами или хоть как-то увеличить FPS?