Автор | Сообщение |
c4tnt = 1st Lieutenant =
 | 1879 |
 Doom Rate: 1.92
|
Отправлено: 06.07.09 19:19:56 | | | Можно, только там со стеклом проблемы были вроде. А как без дверей, все же выпадать будут? | |
|
| |
Dragon - 2nd Lieutenant -
 | 1418 |
Doom Rate: 2.23
|
Отправлено: 06.07.09 19:27:57 | | | c4tnt : | А как без дверей, все же выпадать будут? |
а внутри пусто. Но разве что одинокий зомби.
+поезд то старый  | |
|
| |
c4tnt = 1st Lieutenant =
 | 1879 |
 Doom Rate: 1.92
|
Отправлено: 07.07.09 02:41:18 | | | В общем вот минималистический пример поезда:
http://c4tnt.ucoz.ru/load/21-1-0-39
Просто поезд, двигающийся по кольцу и останавливающийся на двух станциях. | |
|
| |
Dragon - 2nd Lieutenant -
 | 1418 |
Doom Rate: 2.23
|
Отправлено: 07.07.09 18:27:00 | | | c4tnt
спасибо! А можно сделать что бы поезд взорвался? Или чтобы врезался в стенку и деформировался? | |
|
| |
c4tnt = 1st Lieutenant =
 | 1879 |
 Doom Rate: 1.92
|
Отправлено: 07.07.09 18:41:38 | | | Можно, но нормально это получится только в движковом ролике - поучаствовать самому в крушении поезда не получится. В думе там, где поезд взрывался просто меняли модель поезда на модель разрушенного поезда, так же заменялся шлюз и рельс. Заменить одну модель на другую довольно просто - нужно создать два экземпляра модели (func_static), одна нормальная, а вторая - разбитая. У разбитой ставится поле "hide" "1". В нужный момент в скрипте нужно удалить первую модель и показать вторую. Можно прикрыть это эффектом взрыва или просто темнотой. | |
|
| |
Archi]ASTS[ UAC General
 | 12719 |
 Doom Rate: 1.87
|
Отправлено: 07.07.09 18:41:51 | | | в 3д максе можешь сделать анимацию деформации. Или выключил свет и переодень модель. | |
|
2 |
1 |
1 |
 |
|
| |
Bruiser = Lance Corporal =
 | 170 |
 Doom Rate: 2.1
|
Отправлено: 08.07.09 19:01:41 | | | Подскажите пожалуйста, как можно заставить дверь открываться вверх или вниз | |
|
| |
c4tnt = 1st Lieutenant =
 | 1879 |
 Doom Rate: 1.92
|
Отправлено: 08.07.09 19:05:28 | | | Выбрать для двери направление UP или DOWN. Кнопки для этого находятся в свойствах объекта (E)
Если редактор не думовский: "movedir" "-1" вверх, "movedir" "-2" вниз. | |
|
| |
Bruiser = Lance Corporal =
 | 170 |
 Doom Rate: 2.1
|
Отправлено: 08.07.09 19:13:00 | | | c4tnt, спасибо. А можно сделать, чтобы дверь закрывалась, несмотря на то, что гг стоит в проеме? | |
|
| |
c4tnt = 1st Lieutenant =
 | 1879 |
 Doom Rate: 1.92
|
Отправлено: 08.07.09 19:38:34 | | | С последствиями для него:
"dmg" "10" - чем больше число, тем больше последствия для игрока.
"crusher" "1"
Без последствий - поставить target_lock ("locked" "1") и соединить его с дверью. Если этот таргет затриггерить - дверь закроется при первой возможности и будет заблокирована, пока её не разблокируют таким же target_lock, но с "locked" "0" | |
|
| |
Bruiser = Lance Corporal =
 | 170 |
 Doom Rate: 2.1
|
Отправлено: 10.07.09 17:12:30 | | | Как можно сделать выключатель для вызова лифта? | |
|
| |
c4tnt = 1st Lieutenant =
 | 1879 |
 Doom Rate: 1.92
|
Отправлено: 10.07.09 17:22:56 | | | Поставить GUI-шник gui\doors\elevatorcall...
Соединить GUI с лифтом и указать у GUI параметры:
gui_parm1 = 2= верхний этаж, 1= нижний этаж
gui_parm2 = 1= level1 to level2, or 2= level2 to level3
gui_parm3 = название верхнего этажа
gui_parm4 = название нижнего этажа.
gui_parm5 - делает GUI повреждённым. 1 = опасность пожара, 2 = ошибка панели, 3 = хз, 4 = недостаточно энергии. | |
|
| |
Bruiser = Lance Corporal =
 | 170 |
 Doom Rate: 2.1
|
Отправлено: 13.07.09 09:06:58 | | | Скажите пожалуйста как можно сделать телепорт для монстров и как сделать, чтобы trigger_hurt не отнимал у демонов здоровье | |
|
| |
c4tnt = 1st Lieutenant =
 | 1879 |
 Doom Rate: 1.92
|
Отправлено: 14.07.09 03:08:04 | | | Скриптом, других вариантов нет. | |
|
| |
Bruiser = Lance Corporal =
 | 170 |
 Doom Rate: 2.1
|
Отправлено: 16.07.09 09:45:40 | | | 1.Как можно сделать, чтобы в тот момент когда фанк мувер достигал конца сплайна, то сразу "телепортировался" на его начало?
2. Как поместить определенный кусок скрипта в цикл? | |
|
| |
Archi]ASTS[ UAC General
 | 12719 |
 Doom Rate: 1.87
|
Отправлено: 16.07.09 10:04:36 | | | 1. Повтор цикла.
2. Руками впиши его между знаков {}. | |
|
2 |
1 |
1 |
 |
|
| |
Bruiser = Lance Corporal =
 | 170 |
 Doom Rate: 2.1
|
Отправлено: 16.07.09 10:22:19 | | | Archi : | Руками Smile впиши его между знаков {}. |
Дак все скрипты так написаны . Я имел в виду как сделать, чтобы кусок скрипта бесконечно выполнялся.
Не пойдойдет. Мне нужно, чтобы один и тот же фанк мувер двигался сначала по 1 сплайну, потом по 2 и т.д и был эффект, что если браш забинденный на сплайн касался земли, то исчезал. | |
|
| |
Archi]ASTS[ UAC General
 | 12719 |
 Doom Rate: 1.87
|
Отправлено: 16.07.09 10:35:19 | | | Bruiser : | Дак все скрипты так написаны Smile . Я имел в виду как сделать, чтобы кусок скрипта бесконечно выполнялся. |
А!
while(1)
{
скриптЪ.
}
Bruiser : | Не пойдойдет. Мне нужно, чтобы один и тот же фанк мувер двигался сначала по 1 сплайну, потом по 2 и т.д и был эффект, что если браш забинденный на сплайн касался земли, то исчезал. |
то что я только что сказал.  | |
|
2 |
1 |
1 |
 |
|
| |
Bruiser = Lance Corporal =
 | 170 |
 Doom Rate: 2.1
|
Отправлено: 16.07.09 13:57:04 | | | Archi, че-то не получается бесконечный цикл в скрипте. В консоли пишет: line 124 expected ";" found while. Вот кусок скрипта:
void OrderedSpawn()
while(1)
{
randomspawn($spawner1);
sys.wait(5);
randomspawn($spawner2);
} | |
|
| |
c4tnt = 1st Lieutenant =
 | 1879 |
 Doom Rate: 1.92
|
Отправлено: 16.07.09 14:07:24 | | | void OrderedSpawn()
{
while(1)
{
randomspawn($spawner1);
sys.wait(5);
randomspawn($spawner2);
}
}
Но лучше так:
void OrderedSpawn()
{
while(!(!$spawner1)) && !(!$spawner2)))
{
randomspawn($spawner1);
sys.wait(5);
randomspawn($spawner2);
}
}
!(!$spawner1)) - проверка на существование объекта.
Иначе если снесёшь оба спавнера - будет совсем пустой и ненужный цикл.
| Как можно сделать, чтобы в тот момент когда фанк мувер достигал конца сплайна, то сразу "телепортировался" на его начало? |
Просто нужно подождать, пока объект пройдёт по первому сплайну до конца:
sys.waitFor($объект);
И стартовать его по второму сплайну - на начало сплайна объект переберётся сам:
$объект.startSpline($объект_с_нужным_сплайном);
Ещё может понадобиться команда $объект.removeInitialSplineAngles(); если объект движется по сплайну не под тем углом.
И ещё немного подробностей на тему:
| как можно сделать телепорт для монстров и как сделать, чтобы trigger_hurt не отнимал у демонов здоровье |
В триггерах есть такой непонятный триггер, как trigger_touch. Он всегда работает со скриптовой функцией, причём функция имеет нестандартный вид:
void func_name(entity some_entity)
{
}
Так вот, что он делает? Триггер проверяет каждый кадр свои внутренности на наличие объектов, и для каждого объекта, который попал внутрь, вызывает указанную функцию скрипта. Параметром у этой функции как раз является объект.
После этого в скрипте неплохо было бы профильтровать объекты, например так:
void func_name(entity someentity)
{
string class = someentity.getKey("spawnclass");
if (class = "idAI")
{
//Попалось что-то живое
return;
}
if (class == "idAFEntity_Generic")
{
//Попался трупешник
return;
}
if (class == "idPlayer")
{
//Думера зохавали!
return;
}
if (class == "idProjectile")
{
//Можно ли остановить пулю?
//Быстрые проджектайлы триггер может и не поймать.
return;
}
}
Спавнкласс любого интересного объекта можно посмотреть в соответствующем def файле в поле "spawnclass" соответственно. Ну а сделать из скрипта с объектом можно всё, что угодно. | |
|
| |