Автор | Сообщение |
Герр Смертоносец - Warrant Officer -
| 1043 |
Doom Rate: 1.38 Posts quality: +854 |
Отправлено: 12.05.18 04:34:16 | | | Void Weaver: | ? Мне кажется что в первом случае шанс выпадения числа "60" будет гораздо выше нежели во втором. Поправьте, если не заблуждаюсь. |
В первом случае в рулетке 10 значений, во втором 54. Разумеется, в первом случае шанс на именно "60" будет выше, хотя средний дамаг в обоих случаях примерно одинаковый. |
|
|
5 |
|
|
| |
MyNameIs = 1st Lieutenant =
| 2054 |
Doom Rate: 2.04 Posts quality: +893 |
Отправлено: 12.05.18 07:23:14 | | | а можно сделать кастомный рюкзак, чтобы он влиял только на максимальность какого-то одного вида патронов?
или хз, может, можно увеличить начальное количество переносимого инвенториитема каким-то другим способом, без переделывания его в патроны | |
|
| |
Герр Смертоносец - Warrant Officer -
| 1043 |
Doom Rate: 1.38 Posts quality: +854 |
Отправлено: 12.05.18 07:39:09 | | | MyNameIs: | а можно сделать кастомный рюкзак, чтобы он влиял только на максимальность какого-то одного вида патронов? |
Нельзя, ибо количество с рюкзаком/без рюкзака задаётся в Ammo акторе через Ammo.BackpackMaxAmount и Ammo.MaxAmount. Рюкзак тупо показывает движку, что он есть.
Можно костылей нагородить. Задать изначально повышенное максимальное количество и резать скриптом взятый хабар, если в инвентаре нет спец.итема. |
|
|
5 |
|
|
| |
DOOMFOREVER Marine
| 28 |
Doom Rate: 0.97 Posts quality: +6 |
Отправлено: 14.05.18 15:03:10 | | | Хотел задать вопрос, как можно реализовать полосу опыта выпадающего из монстров? То есть убивая монстров игроку дают опыт и как сделать что бы он отображался на экране в виде полосы и доходя до N+10 количества опыта , уровень (значение показываемое выше этой полосы) показывался на один больше? | |
|
| |
BlackMetalGuy Recruit
| 10 |
Doom Rate: 2
|
Отправлено: 14.05.18 21:51:55 | | | Порт : GzDoom/QzDoom
В своём моде на тему Вульфенштайна, я решил сделать систему очков. НО! Сделать инвенторку и указать её отображение в SBARINFO - это для меня мало. Но появилось ярое желание сделать так, что бы игрок, при набирании определённого кол-ва очков получал какой-то бонус. Я ПОПЫТАЛСЯ(это важно) написать ACS скрипт этой фичи и столкнулся с одной проблемой - он не работает. Помогите, люди добрые(и не добрые) Ткните носом в ошибку
| |
|
| |
alekv - Colonel -
| | 4168 |
Doom Rate: 1.87 Posts quality: +949 |
Отправлено: 14.05.18 23:58:07 | | | BlackMetalGuy
Script 1 enter //Проблема была в типе скрипта, он срабатывает 1 раз при появлении игрока на карте.
{
//самый не замысловатый способ, сделать цикл что бы условие проверялось постоянно
whie(true)
{
if(CheckInventory("point") >= 10000)//бесконечно будет проверять вещь point.
{
//checkInventory(); //тут использовать нет смысла, оно надо для условий.
GiveInventory("playerBonus", 1);
}
delay(1);//надо для корректной работы цикла.
}
}
еще можно сделать цикл к примеру
script 1 enter //скрипт запускается 1 раз при появлении игрока на карте
{
while(CheckInventory("point") < 10000)//попадает в цикл и остается тут до тех пор пока вещь point не станет больше или равно 10 000 единиц
{
delay(1);
}
//когда выйдет из цикла, продолжится выполнение скрипта т.е. игрок получит свою награду.
GiveInventory("playerBonus", 1);
}
Это как вариант.
Думаю есть еще и другие.
Я вообще не любитель когда цикл бесконечно работает в фоне, и стараюсь всегда писать скрипты типа (void) которые надо вызывать самому, но когда не вижу других способов или хочется костылить, то норм |
|
|
1 |
3 |
1 |
|
|
| |
MyNameIs = 1st Lieutenant =
| 2054 |
Doom Rate: 2.04 Posts quality: +893 |
Отправлено: 15.05.18 09:29:44 | | | DOOMFOREVER
если это не какой-то суперуниверсальный мод, и ты можешь изменять код акторов, то изи
делаешь какой-нибудь инвенториитем,
Actor KilledEnemy : Inventory {inventory.maxamount 100}
Actor playerEXP : Inventory {inventory.maxamount 100}
дописываешь акторам в стейтах смерти
A_GiveToTarget("KilledEnemy", 1)
ну и скриптец какой-нибудь
|
|
|
| |
Герр Смертоносец - Warrant Officer -
| 1043 |
Doom Rate: 1.38 Posts quality: +854 |
Отправлено: 15.05.18 15:47:25 | | |
Слабое место здесь. Не факт, что в момент смерти монстра игрок будет его целью. Например, монстр мог быть убит в тот момент, когда он дрался с другим монстром. |
|
|
5 |
|
|
| |
MyNameIs = 1st Lieutenant =
| 2054 |
Doom Rate: 2.04 Posts quality: +893 |
Отправлено: 15.05.18 17:48:08 | | | Герр Смертоносец
но ведь суть в том, чтобы давать игроку опыт, если он убил монстра?
иначе халявный опыт выходит | |
|
| |
Void Weaver = Captain =
| 2496 |
Doom Rate: 1.82 Posts quality: +808 |
Отправлено: 15.05.18 19:13:19 | | | Влезу-ка я со своими 5-ю копейками.
Герр Смертоносец: | Не факт, что в момент смерти монстра игрок будет его целью. | Всё так.
MyNameIs: | Герр Смертоносец
но ведь суть в том, чтобы давать игроку опыт, если он убил монстра?
иначе халявный опыт выходит | С одной стороны ты прав, с другой же будет весьма обидно если в замесе Кибердемона случайно добьёт какой-нибудь левый моб. Или, что ещё хуже, потерять кучу экспы в "групповом" инфайтинге. Имхо, лучше ориентироваться на компромиссный вариант - пенальти. Типа: добивший получает 100% экспы, тогда как остальные игроки получат меньший процент экспы ((50-80)% например).
Офк выбор о награждении побочной экспой придётся делать самому моддеру.
ЕДИТ:
Кстати можно ли какими-нибудь функциями декора съэмулировать код A_BFGSpray, чтобы его можно было свободно юзать, через варп или спаунитем например, без привязки к BFGBall? | |
|
1 |
9 |
1 |
|
|
| |
Anto96WS = Master Corporal =
| 281 |
Doom Rate: 1.77 Posts quality: +88 |
Отправлено: 15.05.18 20:04:36 | | | Как сменить скин игрока когда он подбирает броню? | |
|
| |
Void Weaver = Captain =
| 2496 |
Doom Rate: 1.82 Posts quality: +808 |
Отправлено: 15.05.18 20:58:55 | | | Может через JumpIfInventory из кастомплэйера? Типа кастомигрок спаунится обычным, а после подбора брони (итема) прыгает к стэйтам с альтернативными кадрами:
Правда в этом случае наверное придётся накопировать кастомплэйров с разными скинами для разных арморов\итемов. | |
|
1 |
9 |
1 |
|
|
| |
BlackMetalGuy Recruit
| 10 |
Doom Rate: 2
|
Отправлено: 16.05.18 18:22:17 | | | alekv
Спасибо! Но появилась ещё одна проблема. При переходе на следующую карту с нужным кол-вом очков,скрипт проигрывается вновь. Что нужно сделать, что бы скрипт запускался только один раз за всю игру? | |
|
| |
alekv - Colonel -
| | 4168 |
Doom Rate: 1.87 Posts quality: +949 |
Отправлено: 16.05.18 21:23:34 | | | BlackMetalGuy: | alekv
Спасибо! Но появилась ещё одна проблема. При переходе на следующую карту с нужным кол-вом очков,скрипт проигрывается вновь. Что нужно сделать, что бы скрипт запускался только один раз за всю игру? |
как вариант:
global int 1:point_off;
script 1 enter //скрипт запускается 1 раз при появлении игрока на карте
{
if(point_off == false)//изначально == 0, по этому скрипт запустится 1 раз и будет висеть в цикле, если выйдет из цикла, плюсанет переменную.
{
while(CheckInventory("point") < 10000)//попадает в цикл и остается тут до тех пор пока вещь point не станет больше или равно 10 000 единиц
{
delay(1);
}
GiveInventory("playerBonus", 1); //когда выйдет из цикла, продолжится выполнение скрипта 1 раз. т.е. игрок получит свою награду.
point_off++;//глобальная переменная point_off будет больше 0, и на след. карте скрипт пропустит вычисления.
}
} |
Рейтинг сообщения: +1, отметил(и): JSO x |
|
1 |
3 |
1 |
|
|
| |
BlackMetalGuy Recruit
| 10 |
Doom Rate: 2
|
Отправлено: 19.05.18 17:52:42 | | | alekv
Спасибо за помощь! А не подскажите, как можно сделать пламя, которое будет гореть определённое время и самое главное - "цепляться" к противнику и наносить ему урон? Например,как в Powerslave. | |
|
| |
alekv - Colonel -
| | 4168 |
Doom Rate: 1.87 Posts quality: +949 |
Отправлено: 20.05.18 00:30:48 | | | BlackMetalGuy: | А не подскажите, как можно сделать пламя, которое будет гореть определённое время и самое главное - "цепляться" к противнику и наносить ему урон? |
Я бы помог, да вот напрочь забыл как можно составить условие по типу "если актер рядом, пустить прожектайл", без модифицирования монстра.
Может там с таргетами поиграться, хз.. давно в эти дебри не лез.
Время горения пламени это не сложно, заставить пламя прицепиться к врагу в целом тоже не сложно, это делается функцией A_Warp, но вот как заставить актера пламя стрелять в любого монстра который подошел близко хз, может тут кто, что подскажет.. | |
|
1 |
3 |
1 |
|
|
| |
Герр Смертоносец - Warrant Officer -
| 1043 |
Doom Rate: 1.38 Posts quality: +854 |
Отправлено: 20.05.18 05:50:25 | | | alekv: | но вот как заставить актера пламя стрелять в любого монстра который подошел близко хз, может тут кто, что подскажет |
Ну самый тупой вариант - спаунить одновременно с пламенем невидимого friendly-монстра с крайне малым обзором.
Более изящный вариант - назначение пойнтера по A_CheckBlock, в этом случае надо корректно настроить коллижен, чтобы столкновение детектилось, но пламя при этом было проходимым. Простой ноклип не прокатит.
Void Weaver: | С одной стороны ты прав, с другой же будет весьма обидно если в замесе Кибердемона случайно добьёт какой-нибудь левый моб. Или, что ещё хуже, потерять кучу экспы в "групповом" инфайтинге. Имхо, лучше ориентироваться на компромиссный вариант - пенальти. Типа: добивший получает 100% экспы, тогда как остальные игроки получат меньший процент экспы ((50-80)% например).
Офк выбор о награждении побочной экспой придётся делать самому моддеру.
|
Ну в самом идеальном случае оружие игрока должно стрелять некими умными снарядами, которые при попадании в цель наносят ей N урона и выдают N итемов такого-то типа в инвентарь, причём тип зависит от номера игрока. В этом случае кибер будет точно знать, кто в него сколько настрелял, и подыхая, сможет воздать каждому по плодам его.
Если вы не делаете мультплеерную Дьяблу-4 на гздумовском движке, то городить такой огород нафиг нужно, ящитаю. |
|
|
5 |
|
|
| |
Void Weaver = Captain =
| 2496 |
Doom Rate: 1.82 Posts quality: +808 |
Отправлено: 20.05.18 11:21:23 | | | BlackMetalGuy: | А не подскажите, как можно сделать пламя, которое будет гореть определённое время и самое главное - "цепляться" к противнику и наносить ему урон? | Было бы неплохо если бы ты конкретизировал условия задачи типа:
а) пламя должно быть только визуальным или обязательно иметь DamageType Fire?
б) чем должен быть источник пламени - атакой игрока или атакой моба?
в) мили атакой или дистанционной?
г) цепляться к противнику при прямом попадании или в радиусе?
д) должно ли пламя "поджигать" любую поверхность или только мобов\игроков?
Кроме справедливо советуемого A_Warp также могут помочь:
функции
A_SpawnItemEx //Спаун различных объектов
A_DamageTarget //Может наносить урона не зависимо от видимости или дистанции до цели, с опцией ТипаУрона
A_Explode //Старый добрый урон в радиусе, с опцией ТипаУрона
A_TransferPointer //Эти две могут пригодиться для избирательного нацеливания
A_CopyFriendliness //Эти две могут пригодиться для избирательного нацеливания
свойства актора
PoisonDamage value[, duration[, period]] //Очень простое решение в случае если DamageType для тебя не существенен
PoisonDamageType type
Я например делал мили ДоТ-атаку с заданным DamageType через пауэрап с A_DamageTarget, вызываемый через A_SpawnItemEx.
Герр Смертоносец: | Более изящный вариант - назначение пойнтера по A_CheckBlock, в этом случае надо корректно настроить коллижен, чтобы столкновение детектилось, но пламя при этом было проходимым. | А не проще ли тогда прописать "залупленный" A_Explode с RIPPER и NoExplodeFloor, с варпом в спаун стэйте например? Или даже наоборот... варп (откуда-нибудь) на цель A_Explode'а с RIPPER и NoExplodeFloor.
=========
Герр Смертоносец: | Ну в самом идеальном случае оружие игрока должно стрелять некими умными снарядами, которые при попадании в цель наносят ей N урона и выдают N итемов такого-то типа в инвентарь, причём тип зависит от номера игрока. В этом случае кибер будет точно знать, кто в него сколько настрелял, и подыхая, сможет воздать каждому по плодам его. | Ну вот приблизительно таким образом и работает калькуляция в куче ММОРПГ. Красиво офк, но если это не глобальный РПГ-мод, то овчинка выделки не стОит. Бтв, ЕЯПП в DRPG Кайла использовался как раз вариант с пенальти.
=========
1. Ребят, неужели никто не в курсе как съэмулировать код A_BFGSpray? Это вообще осуществимо или нет?
2. Можно ли на уровне декора подправить варп-атаку Арча чтобы враги отвечали ему? | |
|
1 |
9 |
1 |
|
|
| |
BlackMetalGuy Recruit
| 10 |
Doom Rate: 2
|
Отправлено: 20.05.18 13:52:36 | | | Void Weaver
Источником пламени должен быть игрок.Атака дистанционная, ибо игрок вооружён огнемётом.Пламя должно цепляться к противнику при прямом попадании и дамажить только игроков и мобов. Какую функцию выполняет A_Warp? | |
|
| |
Герр Смертоносец - Warrant Officer -
| 1043 |
Doom Rate: 1.38 Posts quality: +854 |
Отправлено: 20.05.18 15:26:43 | | | Void Weaver: |
А не проще ли тогда прописать "залупленный" A_Explode с RIPPER и NoExplodeFloor, с варпом в спаун стэйте например? Или даже наоборот... варп (откуда-нибудь) на цель A_Explode'а с RIPPER и NoExplodeFloor. |
Это тут при чём? Тебе надо, чтобы пламя при прохождении рядом монстра цепляло на него прикреплённый актор. Для этого пламя и монстр должны вступить в сношения на уровне Pointer-ов, поскольку именно Pointer-ами управляется A_Warp. Pointer-ы это как брачный статус между акторами, только бывает трёх видов и не требует взаимности, лол.
Void Weaver: | 1. Ребят, неужели никто не в курсе как съэмулировать код A_BFGSpray? Это вообще осуществимо или нет? |
БФГспрей это тупо очень толстый дробовик, который стреляет в очень широкий сектор. Прикол в том, что активирует этот дробовик не игрок, а шар в момент подрыва. Вот такая дебильная система. Представь, что у тебя ружьё бенелли, но стрелять ты из него не можешь, зато к ружью привязана рогатка. Ружьё выстрелит само, когда выстреленный из рогатки помидор ударится о препятствие. Причём угол выстрела определяется углом вылета шара.
Соответственно, чтобы имитировать эту фигню, надо чтобы снаряд при подрыве запускал скрипт и заставлял игрока испустить пульки. Облегчает ситуацию то, что с точки зрения pointer-ов снаряд игрока уже "знает" (игрок является target-ом снаряда). Поэтому самый тупой вариант будет:
{
SetActivatorToTarget();
SpawnProjectile(0,"пулька", дальше пишем все настройки);
}
Void Weaver: | 2. Можно ли на уровне декора подправить варп-атаку Арча чтобы враги отвечали ему? |
Одновременно с A_VileAttack поставить слабую атаку типа зомбименской, злящую монстра маленькой пулькой. (Только точность сделать идеальную, зомбимен часто промахивается.) |
|
|
5 |
|
|
| |