Автор | Сообщение |
+Ku6EPyXOBEPTKA+ - 2nd Lieutenant -
 | 1413 |
 Doom Rate: 1.75
|
Отправлено: 18.05.14 15:30:15 | | | Jurijus : | Как сделать, чтобы FRIENDLY-actor старался сократить расстояние до игрока, и стоял как вкопанный, если он рядом с игроком? |
Можно попробовать сделать актёра без FRIENDLY флага, но который не будет в стейте атаки наносить урон. Однако, он будет спавнить актёра c флагом Friendly, который будет мгновенно атаковать противника. По движку, такой актёр сам по себе будет приследовать игрока, но в момент, когда он будет близко, его будет как бы клинить. | |
|
1 |
1 |
2 |
 |
|
| |
ChaingunPredator - Captain -
 | 2193 |
 Doom Rate: 1.84
|
Отправлено: 18.05.14 16:07:26 | | | Jurijus : | Как сделать, чтобы FRIENDLY-actor старался сократить расстояние до игрока, и стоял как вкопанный, если он рядом с игроком? |
Хз что там насчет friendly/неfriendly, но вот основное реализовать просто. Сначала заводим константу, которая будет означать расстояния до игрока, при котором нужно остановиться. Потом копиздим функцию:
function int fdistance (int tid1, int tid2)
{
int len;
int y = getactory(tid1) - getactory(tid2);
int x = getactorx(tid1) - getactorx(tid2);
int z = getactorz(tid1) - getactorz(tid2);
int ang = vectorangle(x,y);
if(((ang+0.125)%0.5) > 0.25) len = fixeddiv(y, sin(ang));
else len = fixeddiv(x, cos(ang));
ang = vectorangle(len, z);
if(((ang+0.125)%0.5) > 0.25) len = fixeddiv(z, sin(ang));
else len = fixeddiv(len, cos(ang));
return len;
}
Дальше осиливаем проверку и двигаем объект к игроку с помощью либо создания патрульпоинта или как его там (когда я делал ртс, у меня это работало, но монстры почему-то мочили патрульпоинт) и последующим его удалением когда актор близко (чтобы стоял как вкопанный, можно сделать SetActorProperty(..., APROP_Speed, 0) (здесь Fixed значение), правда, боюсь, что он будет дрыгать ногами на месте при скорости 0 или как-нибудь еще) либо каким-то неизвестным мне методом. | |
|
5 |
1 |
1 |
 |
|
| |
+Ku6EPyXOBEPTKA+ - 2nd Lieutenant -
 | 1413 |
 Doom Rate: 1.75
|
Отправлено: 18.05.14 16:33:46 | | | ChaingunPredator
Это конечно всё красочно, но вот что, если автор планирует не использовать ACS? А так проще всего сделать в ACS функцию проверки координаты пета (будем называть так) и функцию проверки координат игрока. А затем, если разница будет больше чем определённое число (следуя из проверки), то просто портить пета рядом. | |
|
1 |
1 |
2 |
 |
|
| |
ChaingunPredator - Captain -
 | 2193 |
 Doom Rate: 1.84
|
Отправлено: 18.05.14 16:59:20 | | | +Ku6EPyXOBEPTKA+ : | ACS функцию проверки координаты пета (будем называть так) и функцию проверки координат игрока |
А чем функция сверху не справляется с этой задачей? %)
Там остается добавить только
#Define MIN_PET_DISTANCE 100
Script 666 ENTER //активатор игрок, если что
{
while(true)
{
if(fdistance(0, ТидПета)>MIN_PET_DISTANCE)
{
... //ведем пета к игроку
}
else
{
... //магия с петом для остановки
}
}
} | |
|
5 |
1 |
1 |
 |
|
| |
YURA_111 UAC Sergeant Major
 | 736 |
 Doom Rate: 2.17
|
Отправлено: 18.05.14 17:59:26 | | | Jurijus : | Как сделать, чтобы FRIENDLY-actor старался сократить расстояние до игрока, и стоял как вкопанный, если он рядом с игроком? |
Сначала Актор пускай будет враждебным (без стейта Missile конечно). Когда актор подойдет на расстояние нужное тебе, используй функцию A_JumpIfCloser(float distance, str "state") - и укажи стейт. В этом стейте используй функцию A_changeFlag("FRIENDLY", 1). Далее додумаешь? | |
|
| |
MyNameIs - Corporal -
 | 80 |
 Doom Rate: 2
|
Отправлено: 18.05.14 18:41:58 | | | как можно заспавнить эффект взрыва где-либо в комнате, например, при нажатии кнопки? | |
|
| |
+Ku6EPyXOBEPTKA+ - 2nd Lieutenant -
 | 1413 |
 Doom Rate: 1.75
|
Отправлено: 18.05.14 18:52:19 | | | MyNameIs : | как можно заспавнить эффект взрыва где-либо в комнате, например, при нажатии кнопки? |
Да. Делаешь в декорейте актёра, представляющего взрыв, а затем через thingspawn заспавнить в нужном mapspot.
ChaingunPredator : | А чем функция сверху не справляется с этой задачей? |
Ну справляться то он будет, но вот проблема в другом: не будет ли пет в стенках застревать? А в узких коридорах как быть? | |
|
1 |
1 |
2 |
 |
|
| |
ChaingunPredator - Captain -
 | 2193 |
 Doom Rate: 1.84
|
Отправлено: 18.05.14 19:16:03 | | | +Ku6EPyXOBEPTKA+ : | Ну справляться то он будет, но вот проблема в другом: не будет ли пет в стенках застревать? А в узких коридорах как быть? |
Пет что ли? Патруль поинты не предусматривают застревания в стенках, а обычный думовский ИИ. | |
|
5 |
1 |
1 |
 |
|
| |
рубероид Recruit
 | 12 |
 Doom Rate: 1.5
|
Отправлено: 20.05.14 09:45:33 | | | Привет всем!
У меня проблема. Искал по форуму, и в гугле, но не нашёл.
Более менее освоил основы маппинга. Сделал две карты, сначала в формате Doom. Потом одну из них переделал в UDMF. Вопрос: как правильно создать WAD, чтобы все карты были в формате UDMF? Возможно, вопрос покажется глупым, но сделать этого никак не могу
Или: как сделать так, чтобы ВСЕ карты в уже созданном WAD''е (в другом формате) были в формате UDMF? | |
|
| |
MasterMind - 1st Lieutenant -
 | 1789 |
 Doom Rate: 1.92
|
Отправлено: 20.05.14 16:10:36 | | | рубероид
Конвертер в UDMF формат ищи | |
|
1 |
3 |
 |
|
| |
рубероид Recruit
 | 12 |
 Doom Rate: 1.5
|
Отправлено: 21.05.14 10:23:53 | | | MasterMind, я пробовал, намучился, но всё-таки конвертанул карту, но при попытке открыть её в GZDB получилась перекорёженная хрень:
Напомню, вопрос был как правильно создать WAD, чтобы все карты (а не как на втором скриншоте в моём предыдущем сообщении) изначально были в формате UDMF? | |
|
| |
Dagamon = 1st Lieutenant =
 | 2061 |
 Doom Rate: 1.04
|
Отправлено: 21.05.14 14:01:35 | | | рубероид
Можно более надёжным способом сделать, просто скопировать все сектора и линии карты в редакторе (Выделить всё и CTRL+C), потом создать новую карту под UDMF формат и туда всё вставить (CTRL+V), и так с каждой картой. | |
|
1 |
3 |
 |
|
| |
рубероид Recruit
 | 12 |
 Doom Rate: 1.5
|
Отправлено: 21.05.14 14:27:52 | | | Dagamon, знаю, так можно с секторами, потом с монстрами, апечками ... (благо карт не много, пока). Я так делал. НО потом нужно будет все экшены заново проставлять, они ведь в UDMF другие!
Однако вопрос остаётся открытым ... | |
|
| |
MasterMind - 1st Lieutenant -
 | 1789 |
 Doom Rate: 1.92
|
Отправлено: 21.05.14 16:34:50 | | | рубероид : | так можно с секторами, потом с монстрами, апечками ... |
Зачем потом? Можно все сразу. | |
|
1 |
3 |
 |
|
| |
Zveraboy = 2nd Lieutenant =
 | 1527 |
Doom Rate: 1.11
|
Отправлено: 21.05.14 20:47:28 | | | Народ пробовал недавно возиться с модом Думзоне.
ниччего не вышло.
В акторах там где идёт код отвечающий как я понимаю за параметры оружия, я там в каждом оружие подописывал все классы игровые что есть в моде.
Не помогло.
Выдает ворохи ошибок...... | |
|
| |
LEX SAFONOV UAC Sergeant Major
 | 685 |
 Doom Rate: 1.49
|
Отправлено: 21.05.14 23:52:26 | | | Правильно, ведь оружие, носимое конкретным классом пишется в коде самого класса(тобишь игрока) | |
|
| |
Ameba - Major -
 | 2837 |
 Doom Rate: 2.32
|
Отправлено: 22.05.14 14:05:09 | | | рубероид
Не понимаю проблемы, опиши подробнее. Каждую новую карту создаёшь в формате UDMF. Когда хочешь сохранить её в уже существующий вад с другой картой в формате UDMF, пользуешься командой Save Map Into в меню File думбилдера. Если карта изначально сделана в другом формате, то сохранение её в вад с картами UDMF её не изменит - как была в другом формате, так и останется. Конвертировать в UDMF вроде можно какими-то сторонними утилитами (не знаю деталей), или можно просто последовательно скопировать сектора/вещи и перерасставить акшоны (потому что они в сильно разных форматах будут очень разные) из старой карты в новую. | |
|
2 |
1 |
1 |
 |
|
| |
Zveraboy = 2nd Lieutenant =
 | 1527 |
Doom Rate: 1.11
|
Отправлено: 22.05.14 19:09:33 | | | LEX SAFONOV
Т.е копаться надо в классах? | |
|
| |
Артём - Sergeant -
 | 296 |
 Doom Rate: 1.44
|
Отправлено: 22.05.14 20:11:34 | | | С обычным Дум Билдер 2 это можно провернуть? | |
|
| |
ChaingunPredator - Captain -
 | 2193 |
 Doom Rate: 1.84
|
Отправлено: 22.05.14 22:45:25 | | | Провернуть что? | |
|
5 |
1 |
1 |
 |
|
| |