Автор | Сообщение |
+Ku6EPyXOBEPTKA+ - 2nd Lieutenant -
 | 1413 |
 Doom Rate: 1.75
|
Отправлено: 23.10.10 12:31:10 | | | InfernalSky : | скажите как сделать, так чтобы при выстреле в монстра вылетало больше крови |
Спавнь отдельные спрайты крови в стейте pain:
InfernalSky : | и ещё, можно ли сделать монстра который действует только в темноте? |
А ты просто ставь его в тёмные участки карты и ограничивай блоком монстров его перемещения. | |
|
1 |
1 |
2 |
 |
|
| |
InfernalSky = Sergeant Major =
 | 614 |
 Doom Rate: 1.87
|
Отправлено: 23.10.10 13:19:16 | | | +Ku6EPyXOBEPTKA+ : | А ты просто ставь его в тёмные участки карты и ограничивай блоком монстров его перемещения. |
я дурак, об этом совсем забыл . доперло тогда когда начал монстров ставить
Добавлено спустя 5 минут 19 секунд:
+Ku6EPyXOBEPTKA+
но всё равно спасибо  | |
|
| |
+Ku6EPyXOBEPTKA+ - 2nd Lieutenant -
 | 1413 |
 Doom Rate: 1.75
|
Отправлено: 25.10.10 01:40:55 | | | Что-то не удаётся привязать ACS скрипт... при воспроизведении пишет, что скрипт неизвестный, хотя он существует... вобщем что такое - я не знаю. Использую acs_execute.
Скажите, как правильно привязать acs в стейте?
Если есть другой способ сделать вспышку белого экрана при разрыве снаряда, пишите... | |
|
1 |
1 |
2 |
 |
|
| |
Hutt - Sergeant Major -
 | 573 |
 Doom Rate: 1.33
|
Отправлено: 25.10.10 19:43:31 | | | Простите дурака в предпоследний раз!
Триста лет не занимался мостами, сейчас взялся - ничего не получается, хотя раньше все было нормально. Подскажите, что я делаю не так?
1. создаю внешний сек4тор
Тфу, я уж думал это я свихнулся, а это глюк редактора. Глюк тем не менее происходит с неприятной регулярностью: почему - то внутренняя сторона линий невидимого сектора приписывается внешнему сектору (я естественно перевожу номер обоих сторон на номер внутренней - и получается черт знает что). Редактор Doom Builder 2.0.1.1157. Отчего такое может происходить? | |
|
| |
BeeWen - Colonel -
 | 4276 |
 Doom Rate: 1.64
|
Отправлено: 25.10.10 19:57:01 | | | Hutt : | Отчего такое может происходить? |
Вполне может от неотделенного сектора такое быть. Подвигай вертексы, может где сдублированный с другим сектором найдешь. | |
|
1 |
1 |
1 |
 |
|
| |
Hutt - Sergeant Major -
 | 573 |
 Doom Rate: 1.33
|
Отправлено: 25.10.10 21:44:20 | | | BeeWen [B0S]
Да там все вроде квадратное, негде ему сныкаться. Так, вообще, это поправимо, но следить за каждой доской моста - изрядная морока. | |
|
| |
bed.intruder]ASTS[ Chief Petty Officer
 | 1006 |
 Doom Rate: 1.67
|
Отправлено: 25.10.10 22:24:18 | | | Hutt
Скажу стандартно - попробуй последнюю версию (2.1.0.1356). По крайней мере, в ней ничего подобного не замечал.
Правда, было похожее, когда я делал лестницу, и для быстроты копировал ступени, и вставлял их (слева и справа были "сплошные" стены (impassible) ). | |
|
| |
+Ku6EPyXOBEPTKA+ - 2nd Lieutenant -
 | 1413 |
 Doom Rate: 1.75
|
Отправлено: 26.10.10 13:14:21 | | | Достала ошибка P_StartScript: unknown script "номер скрипта". Вобщем прикол в том, что у меня не работает ACS_Execute. Точнее работает неправильно. Я попытался найти как правильно сделать, но так и не удалось посмотреть нужный ход работы... В simple decorate про эту команду говорят вскользь... Нашёл на форуме (т.е. тут) подобную тему, но там не совсем то, что мне нужно... Надо мне сделать так, чтобы скрипт вызывался из стейта оружия... Объясните пожалуйста, что и как нужно сделать по пунктам. | |
|
1 |
1 |
2 |
 |
|
| |
Hutt - Sergeant Major -
 | 573 |
 Doom Rate: 1.33
|
Отправлено: 26.10.10 15:25:01 | | | bed.intruder[MOD]
Да, было и такое. Спасибо. | |
|
| |
Guest - 2nd Lieutenant -
 | 1356 |
 Doom Rate: 2.77
|
Отправлено: 26.10.10 18:46:50 | | | +Ku6EPyXOBEPTKA+ : | Что-то не удаётся привязать ACS скрипт... при воспроизведении пишет, что скрипт неизвестный, хотя он существует... вобщем что такое - я не знаю. Использую acs_execute. |
Ну и? Чтобы скрипт мог быть запущен, он "физически" должен присутствовать в ваде. Варианта два - или скрипт с таким номером есть в текущей карте, или скрипт определен в глобальной библиотеке. В модах, понятно, используется второе. Вот пример:
Между маркерами A_Start и A_End помещается откомпилированный скрипт, название lump'а со скриптом - это как раз имя "библиотеки" (произвольное). А lump LOADACS содержит имя той самой библиотеки, что подгружается. Понятно, что сам скрипт должен быть определен как библиотека - в нашем случае первая строчка неоткомпилированного скрипта
#library "DIAZ" | |
|
3 |
1 |
 |
|
| |
Azamael [B0S] - Sergeant Major -
 | 543 |
 Doom Rate: 2.46
|
Отправлено: 27.10.10 14:40:20 | | | Нужно чтобы после смерти монстр через некоторое время опять ожывал (или в том же месте новый такойже появлялся). Если в стейте Death прописать goto look то монстр ожывет но перестанет умирать (из-за того что хелсы на нуле я так понимаю). Если прописать спавн самого себя через spawnitem то ничерта не выходит, если зделать спавн дополнительного обекта, а уже он спавнит нового монстра, то тоже ничего не выходит. | |
|
| |
+Ku6EPyXOBEPTKA+ - 2nd Lieutenant -
 | 1413 |
 Doom Rate: 1.75
|
Отправлено: 27.10.10 18:14:23 | | | Guest
А какой тип присвоить скрипту компилированному, чтобы execute работал из стейта оружия?... а то что-то не получается | |
|
1 |
1 |
2 |
 |
|
| |
bed.intruder]ASTS[ Chief Petty Officer
 | 1006 |
 Doom Rate: 1.67
|
Отправлено: 27.10.10 18:37:08 | | | +Ku6EPyXOBEPTKA+
script 1 (void), например. void значит, что параметры не требуются. Но их можно добавить: script 1 (int a, string b) - параметры перечисляются через запятую; сначала тип, потом название параметра. int значит, что параметр - это число, string - что это строка (текст). | |
|
| |
+Ku6EPyXOBEPTKA+ - 2nd Lieutenant -
 | 1413 |
 Doom Rate: 1.75
|
Отправлено: 27.10.10 19:12:04 | | | bed.intruder[MOD] : | script 1 (void), например. void значит, что параметры не требуются. Но их можно добавить: script 1 (int a, string b) - параметры перечисляются через запятую; сначала тип, потом название параметра. int значит, что параметр - это число, string - что это строка (текст). |
Странно... я через (void) делал, а скрипт не срабатывал... но зато исчезла ошибка неизвестного скрипта. Вобщем я ещё покручу.
P.S. Всем спасибо | |
|
1 |
1 |
2 |
 |
|
| |
bed.intruder]ASTS[ Chief Petty Officer
 | 1006 |
 Doom Rate: 1.67
|
Отправлено: 27.10.10 21:05:19 | | | +Ku6EPyXOBEPTKA+
Т.е. не срабатывает? Ошибку не пишет?
Если не секрет, то напиши код скрипта (можно и в личку) и актора, вызывающего скрипт. | |
|
| |
Nil = Major =
 | 2978 |
 Doom Rate: 2.34
|
Отправлено: 27.10.10 22:34:28 | | | В ACS есть ровно один тип - int. Также существуют массивы int
string - это ещё одно название int, в string хранится НОМЕР строки в списке строк.
fixed - это тот-же int, но там по идее должно содержатся число с фиксированной точкой.
однако никто не запрещает везде использовать int или хранить номера строк в fixed
Ну и небольшой раздел "хозяйке на заметку" :
поскольку обычные строки в ACS изменять нельзя, то можно работать с массивами символов. такой массив выводится с классификатором a :
int mas [6] = {'H','e','l','l','o',0} //6 символов
script 1 (void)
{
print(a:mas); // будет выведено : Hello
mas[5] = ' ';
print(a:mas,s:"on the Earth"); // будет выведено : Hell on the Earth
}
Для вывода важно, чтобы массив символов кончался нулём. очень удобно генерировать массив из константных строк :
int printstr[255];
function void ToMas(int str)
{
len = strlen(str);
for (int i=0;i
printstr[i] = getchar(str,i);
ptintstr[i] = 0;
}
script 1 (void)
{
ToMas("Test1");
print(a:printstr); //напечатает : Test1
printstr[4] = '2';
print(a:printstr); //напечатает : Test2
ToMas("Long string \chwith \crdifferent \cdcolors");
print(a:printstr); //напечатает разноцветный текст.
}
Где это можно использовать? только в сложных библиотеках с относительно "общим" функционалом. Я использую это для того, чтобы печатать тексты книг с автоматическим переносом по строкам. Ещё можно парсить такисе строки, заменяя в них выражения типа %money на значения какой-нибудь глобальной переменной. Кстати, тут необходима осторожность - если скрипт работает слишком долго, zdoom его просто прибьёт. Выход - использовать delay() где-нибудь внутри длинных циклов (больше 100 итераций) | |
|
1 |
2 |
1 |
 |
|
| |
Player701 - Master Corporal -
 | 202 |
 Doom Rate: 1.99
|
Отправлено: 28.10.10 11:35:16 | | | Azamael [B0S]
Thing_Raise. Можно применять и в скриптах, и в декорейте. | |
|
| |
cybermind - Warrant Officer -
 | 1077 |
 Doom Rate: 1.87
|
Отправлено: 28.10.10 19:29:53 | | | Как можно увеличить дальность наведения самонаводящихся ракет у игрока? У меня есть оружие, которое выпускает пафф-монстр пулей, и которое затем сразу же выпускает самонаводную ракету, которая по идее должна наводиться на этот пафф. Но есть проблема - ракета не наводится на пафф, если он находится слишком далеко от игрока. Флаг SMF_LOOK не подходит, ракета наводится на ближайшую цель. Делать всем +DONTSEEK тоже резона нет. Есть ли способ решить проблему? | |
|
| |
InfernalSky = Sergeant Major =
 | 614 |
 Doom Rate: 1.87
|
Отправлено: 29.10.10 17:15:14 | | | у мя вопрос.
сделал комнату , натянул текстуры, а там все текстуры меняются, прям при игре
вот скрины:
 | |
|
| |
bed.intruder]ASTS[ Chief Petty Officer
 | 1006 |
 Doom Rate: 1.67
|
Отправлено: 29.10.10 19:53:32 | | | Позволю себе небольшой оффтоп
Недавно мне понадобилась функция, которая преобразует строку в число. Но такой функции не оказалось. Тогда я стал писать свою.
Функция будет далее, но сначала немного теории.
В сообщении выше Nil указал, что строка есть последовательность символов. Символы записываются в виде '*' (* - это символ), и представляют число - ACSII-код символа. Так как разница между символами '0' и '9' равна девяти, то для преобразования символа в цифру можно использовать следующее: n = c - '0' (c - символ, n - число). Получить символ из строки можно с помощью функции GetChar.
Теперь немного математики. Возьмем, скажем, последовательность цифр "3654". Число 3654 представляет сумму 3*10^3 + 6*10^2 + 5*10^1 + 4*10^0 (x^n - это возведение числа x в степень n (в ACS он означает несколько другое), любое_число^0 = 1). Вспоминаем разряды из начальных классов Здесь есть некая закономерность - разряды идут от числа, равному длине последовательности, уменьшенной на единицу, до нуля. Зная это, можно вывести формулу: sum = a*10^n-1 + b*10^n-2 + ... + x*10^n-n.
А вот и сама функция. Так как в ACS нет оператора возведения в степень, то пришлось взять готовую с вики.
С тегом Code траблы, поэтому код можете найти здесь: http://bed-intruder.narod.ru/stringnum.txt
Также там есть функция извлечения цифры из строки - DigitFromString.
Теперь некоторые комментарии к коду:
Если в числе попадается посторонний символ, будь то буква, знак препинания и прочее, то функция возвращает -1.
r-- значит, что сначала число r используется, а потом уменьшится на единицу. Если r-- заменить на --r, то будет наоборот.
Вот и все Помните, если нет нужной функции, то всегда можно сделать свою. | |
|
| |