Welcome to U.A.C. [O.S.A.]
login / register
Status: Guest
Архивы форума | iddqd.ru
Wolf 3D
ПравилаПравила ПоискПоиск
18+
Тема для новичков. Вопросы по маппингу/моддингу - любые!-2 Пред.  1, 2, 3, 4, 5 ... 61, 62, 63  След.
   Список разделов - Местечко мапперов и моддеров - Тема для новичков. Вопросы по маппингу/моддингу - любые!-2Ответить
АвторСообщение
YURA_111
UAC Sergeant Major
Next rank: Chief Petty Officer after 86 points
764

Doom Rate: 1.98

Posts quality: +136
Ссылка на пост №61 Отправлено: 03.07.19 07:39:04
Void Weaver пишет:
Наткнулся на один из своих первых реквестов в моддинге, и вопрос был о том как работает A_CheckBlock, и почему она не работала в моём случае.


Круто ты "распилил" эту функцию! Я тогда так и не понял, чего она у тебя не так работала. Молодец! Твой пост нуно сохранить!
Zeberpal_98
Chief Petty Officer
Next rank: Chief Petty Officer after 49 points
891

Doom Rate: 2.18

Posts quality: +214
Ссылка на пост №62 Отправлено: 04.07.19 12:52:39
:lamer:

есть вот такая картинка(текст):

setfont("KON V PALTO");


Мне необходимо заменить KON на HREN через переменную, но как правильно вставить переменную в закавыченный текст??
Естественно я заглянул сюда попытался прилепить #define , int"", но что-то не так делаю, не могу понять :bitsa:
1 3
ZZYZX
- UAC Commissar -
Next rank: = UAC Commissar = after 16 pointsМодератор форума
6284

Doom Rate: 1.65

Posts quality: +1630
Ссылка на пост №63 Отправлено: 04.07.19 13:54:20
strparam

Рейтинг сообщения: +1, отметил(и): Zeberpal_98
2 2 1
Zeberpal_98
Chief Petty Officer
Next rank: Chief Petty Officer after 49 points
891

Doom Rate: 2.18

Posts quality: +214
Ссылка на пост №64 Отправлено: 04.07.19 14:54:04
ZZYZX
Спасибо, правда работает с Print и Log
ФАК
АПД: или нет)
1 3
ZZYZX
- UAC Commissar -
Next rank: = UAC Commissar = after 16 pointsМодератор форума
6284

Doom Rate: 1.65

Posts quality: +1630
Ссылка на пост №65 Отправлено: 04.07.19 17:03:42
SetFont(StrParam(s:variable, s:" V PALTO"))

Рейтинг сообщения: +2, отметил(и): Zeberpal_98, Void Weaver
2 2 1
Void Weaver
= Captain =
Next rank: - Major - after 144 points
2496

Doom Rate: 1.82

Posts quality: +807
Ссылка на пост №66 Отправлено: 04.07.19 20:07:10
Всё ещё актуально:
Void Weaver пишет:
7. Что такое и зачем нужны "special1 and special2 fields"? Или обычно в моддинге эти свойства (параметры?) также не задействуются?

8. Спрошу ещё раз. Что такое [identifier]? В каких случая целесообразно применение оного?
identifier is optional. Calls to a random function with an identifier do not interfere with the RNG for calls with a different identifier, which can be used to make the outcome of some events unaffected by others.

9. Что значит "binary mask" в структуре random2, как это считается?


Можно ли записать If\Else-условие внутрь For-цикла в анон-функции? Можно, главное - обязательно закрывать циклы снаружи через "Return state("");", даже если оные циклы выполнились БЕЗ джампа по условию If\Else. "Краями" функции всё равно считается If\Else.
1 9 1
N00b
Chief Petty Officer
Next rank: Chief Petty Officer after 18 points
922

Doom Rate: 2.15

Posts quality: +384
Ссылка на пост №67 Отправлено: 05.07.19 13:24:40
Void Weaver
7. Просто int-ы, использующиеся (в акторах Heretic и Hexen) для различных целей в зависимости от актора. Такой же вопрос на форуме zdoom.
8. В ванильном Doom в качестве ГПСЧ использовалась фиксированная таблица, по которой последовательно бегал индекс и выбирал число. Были две функции, P_Random и M_Random, в которых было два разных индекса; первая --- для физики и того, что должно синхронизироваться на всех машинах (длительность состояний проджектайлов, например), а вторая --- для менее важных декоративных эффектов.
Теперь gzdoom использует вихрь Мерсенна вместо статической таблицы. identifier позволяет создать несколько различных дополнительных генераторов, если это для чего-то нужно.
Применение остаётся фактически таким же, что и в 1993.
9. Там приведён пример. Пусть аргумент функции 53, то есть, вызываем random2(53). 53 в десятичной = (00110101) в двоичной (нулями слева добил, поскольку random2 отсекает лишнее и работает только с 8 битами). (00110101) --- это маска. random2 два раза битовыми операциями обнуляет некоторые из единиц и получает два значения, а после этого вычитает их:
mask | (00110101)
int1 | (00000101) (выкинули две единицы, на 3 и 4 местах)

mask | (00110101)
int2 | (00110001) (выкинули единицу на 6 месте)

int1 = 5, int2 = 49; random2 вернёт 5 - 49 = -44 (не 212!)
Поэтому её рекомендуют вызывать с аргументом, на единицу меньше степени двойки (у такого числа все единицы расположены подряд до правого конца). Значение mask по умолчанию равно 255 = 2^8 - 1 = (11111111).

Рейтинг сообщения: +2, отметил(и): JSO x, Void Weaver
1 2
Void Weaver
= Captain =
Next rank: - Major - after 144 points
2496

Doom Rate: 1.82

Posts quality: +807
Ссылка на пост №68 Отправлено: 05.07.19 19:13:29
Скрытый текст:

N00b2015 пишет:
Void Weaver
7. Просто int-ы, использующиеся (в акторах Heretic и Hexen) для различных целей в зависимости от актора. Такой же вопрос на форуме zdoom.
8. В ванильном Doom в качестве ГПСЧ использовалась фиксированная таблица, по которой последовательно бегал индекс и выбирал число. Были две функции, P_Random и M_Random, в которых было два разных индекса; первая --- для физики и того, что должно синхронизироваться на всех машинах (длительность состояний проджектайлов, например), а вторая --- для менее важных декоративных эффектов.
Теперь gzdoom использует вихрь Мерсенна вместо статической таблицы. identifier позволяет создать несколько различных дополнительных генераторов, если это для чего-то нужно.
Применение остаётся фактически таким же, что и в 1993.
9. Там приведён пример. Пусть аргумент функции 53, то есть, вызываем random2(53). 53 в десятичной = (00110101) в двоичной (нулями слева добил, поскольку random2 отсекает лишнее и работает только с 8 битами). (00110101) --- это маска. random2 два раза битовыми операциями обнуляет некоторые из единиц и получает два значения, а после этого вычитает их:

mask | (00110101)
int1 | (00000101) (выкинули две единицы, на 3 и 4 местах)

mask | (00110101)
int2 | (00110001) (выкинули единицу на 6 месте)


int1 = 5, int2 = 49; random2 вернёт 5 - 49 = -44 (не 212!)
Поэтому её рекомендуют вызывать с аргументом, на единицу меньше степени двойки (у такого числа все единицы расположены подряд до правого конца). Значение mask по умолчанию равно 255 = 2^8 - 1 = (11111111).

7. Ясно, значит очередные архаичные рестриктед варки наряду с Аргс.
8. Ого... Означает ли это что все ванильные рандом одного диапазона (все random(0, 256) или все random(41, 154)) вызванные в один момент времени из разных источников (скриптов, объектов) будут использовать один и тот же шаблон рандомизации и в результате выдавать одинаковые для всех значения? Тогда как указание A_Explode(random[identifier](64,128), 128) позволит как-то "обособить" выполнение random[identifier](64,128) от синхронного выполнения других random(64,128) вызванных в это же время, выдавая в результате иные значения? И кстати как и где правильно определять оный identifier?
Вот например что значат и где прописаны EttinAttack и DropMace?
9.
N00b2015 пишет:
random2 два раза битовыми операциями обнуляет некоторые из единиц и получает два значения, а после этого вычитает их:
Вот до этого момента всё было понятно, поскольку вика чётко говорит что в общем виде диапазон будет random(0, mask) - random(0, mask).
Для random2(9) это будет random(0, 9) - random(0, 9), что в итоге выдаёт [0, 1, 8, 9] - [0, 1, 8, 9], т. е. 9 какой-то особой двоичной магией раскладывается до 1 и 8.
для random2(53) это будет random(0, 53) - random(0, 53), что в итоге выдаст [0, ?, ?, 53] - [0, ?, ?, 53]. Совершенно не понятно как высчитываются эти значения.
1 9 1
N00b
Chief Petty Officer
Next rank: Chief Petty Officer after 18 points
922

Doom Rate: 2.15

Posts quality: +384
Ссылка на пост №69 Отправлено: 05.07.19 23:20:52
Void Weaver
7. Ну, arg0...arg5 имеют своё применение (ими удобно пользоваться мапперам). И не рестриктед, а депрекэйтед. :o
8. Не понял вопрос, но диапазон тут ни при чём. Это разделение на P_Random и M_Random, как я говорил, главным образом использовалось для отсутствия десинхронизации демок. Определять отдельно его нигде не нужно. Вообще эта возможность для модификаций малополезна.
9. На вики написана фигня. Не полная; верно всё, кроме предложения "It is roughly equivalent to...".
Я подробно написал, как можно понимать работу кода random2, в посте выше (приведу этот код):
int Random2(int mask)
	{
		int t = GenRand32() & mask & 255;
		return t - (GenRand32() & mask & 255);
}


---

random2(9) может принимать значения из множества {0, 1, 8, 9} - {0, 1, 8, 9} = {-9, -8, -7, -1, 0, 1, 7, 8, 9}, причём вероятности их выпадения будут разные (в табличке 4 на 4 есть 4 нуля и только одна девятка).
В квадратных скобках для random2(53) будет 16 значений (так как в его двоичной записи 4 единицы: 53 = 32 + 16 + 4 + 1): {0, 1, 4, 5, 16, 17, 20, 21, 32, 33, 36, 37, 48, 49, 52, 53}, и random2 выдаст всевозможные разности чисел из этого множества.

Рейтинг сообщения: +1, отметил(и): JSO x
1 2
Void Weaver
= Captain =
Next rank: - Major - after 144 points
2496

Doom Rate: 1.82

Posts quality: +807
Ссылка на пост №70 Отправлено: 06.07.19 03:18:38
Ну да, скорее депрекейтэд. JSO x уже просветил.

8.

Вообще эта возможность для модификаций малополезна.
В принципе на этом можно было бы закончить но я же дотошный. :)
Ещё раз. Открываем определение Эттина и обнаруживаем в этой строке ETTN G 8 A_CustomMeleeAttack(random[EttinAttack](1, 8)*2) нечто именованное "EttinAttack" в качастве identifier.
Что это, где оно определено и как с этим работать?

Касаемо моей витиеватой сентенции, - забей. Я проверил то что подразумевал и понял что оно работает не так как я предполагал, что запутало меня ещё больше. Однако наличие двух разных табличных выборок (P_Random и M_Random) по-прежнему не проясняет сути работы идентифайра. :|
9.
Void Weaver пишет:
random2(9) может принимать значения из множества {0, 1, 8, 9} - {0, 1, 8, 9} = {-9, -8, -7, -1, 0, 1, 7, 8, 9}, причём вероятности их выпадения будут разные (в табличке 4 на 4 есть 4 нуля и только одна девятка).
Ну это-то очевидно:
===========
0 -1 -8 -9
-1 0 7 8
8 7 0 -1
9 8 1 0
===========
Общий шанс выпадения для каждого значения:
-9 - 1
-8 - 1
-1 - 3
0 - 4
1 - 1
7 - 2
8 - 3
9 - 1
===========
Я просто не понимаю принципа разложения 53 = 32 + 16 + 4 + 1. Да и код к сожалению мне совершенно не понятен.
1 9 1
N00b
Chief Petty Officer
Next rank: Chief Petty Officer after 18 points
922

Doom Rate: 2.15

Posts quality: +384
Ссылка на пост №71 Отправлено: 06.07.19 13:33:08
8.
Определять отдельно его нигде не нужно.

9. В табличке много знаков забыл. Должно быть
 0 -1 -8 -9
 1  0 -7 -8
 8  7  0 -1
 9  8  1  0

Позиционная система счисления, Двоичная система счисления. 53 = 32 + 16 + 4 + 1 = 1 * 2^5 + 1 * 2^4 + 1 * 2^2 + 1 * 2^0 => в двоичной системе 53 записывается как 110101.

Рейтинг сообщения: +2, отметил(и): JSO x, Void Weaver
1 2
Void Weaver
= Captain =
Next rank: - Major - after 144 points
2496

Doom Rate: 1.82

Posts quality: +807
Ссылка на пост №72 Отправлено: 06.07.19 16:14:16
9. Дошло (23 = 16 + 8 + 1 = 1*2^5 + 1*2^3 + 1*2^0), спс за терпение и разъяснения! ^_^

8. Так. Я правильно понимаю что вместо [EttinAttack] можно записать [EttinBored] или [MoonFromGreenCheese], и это "обособит" все random'ы с данным идентификатором под рандомизацию отдельно выделенным PRNG?
1 9 1
N00b
Chief Petty Officer
Next rank: Chief Petty Officer after 18 points
922

Doom Rate: 2.15

Posts quality: +384
Ссылка на пост №73 Отправлено: 06.07.19 16:32:09
23 != 16 + 8 + 1. 16 + 8 + 1 == 25.

16 != 2^5. 16 == 2^4.

8. Да, именно так.

Рейтинг сообщения: +1, отметил(и): Void Weaver
1 2
SSV_Victoryan
UAC Sergeant Major
Next rank: Chief Petty Officer after 41 points
809

Doom Rate: 2.18

Posts quality: +276
Ссылка на пост №74 Отправлено: 07.07.19 13:37:22
Привет всем. Требуется помощь не шарящему в ACS скриптах.
Можно ли как-то сделать МОНСТРУ на карте проверку, чтобы сработал скрипт только в том случае, если именно ОН а не другой монстр пересёк линию? Например через TID тег или как-то так.
Пожалуйста напишите скрипт если такое возможно, проверки такого типа не представляю как делаются если делаются вообще.
2
Shadowman
= UAC Marshal =
Next rank: UAC General after 161 points
8039

Doom Rate: 2.09

Posts quality: +1768
Ссылка на пост №75 Отправлено: 07.07.19 13:45:51
SSV_Victoryan
Попробуй через Активатор ТИД
Условие запуска скрипта в редакторе - обычное "monsters cross line", в самом скрипте пишешь проверку на тид активатора (нужному мобу в редакторе выставить тид), если да, то скрипт выполняется.

Рейтинг сообщения: +2, отметил(и): SSV_Victoryan, Void Weaver
1 7 2
SSV_Victoryan
UAC Sergeant Major
Next rank: Chief Petty Officer after 41 points
809

Doom Rate: 2.18

Posts quality: +276
Ссылка на пост №76 Отправлено: 07.07.19 14:10:39
Shadowman пишет:
Попробуй через Активатор ТИД

Скрытый текст:

script 12 (void)
{  if (ActivatorTID () == 39) { Thing_Destroy(39, 0, 0); }
}


Немного тупляжа, проб и заработало! При много благодарен :pc:

Рейтинг сообщения: +1, отметил(и): Shadowman
2
Shadowman
= UAC Marshal =
Next rank: UAC General after 161 points
8039

Doom Rate: 2.09

Posts quality: +1768
Ссылка на пост №77 Отправлено: 07.07.19 21:23:01
SSV_Victoryan
Кстати, спасибо за сам вопрос - он навел на мысль, как заставить определенных мобов провоцировать определенные действия (можно сымитировать, например, что моб, завидев игрока и начав к нему двигаться, выключил при этом свет или вызвал подмогу). Может, еще пригодится.
Хотя в нашем с Биг Мемкой проекте скорее встанет вопрос о проверке входа-выхода в водную среду для нелетающих мобов. Может быть, с этой командой его можно будет проще решить.

Рейтинг сообщения: +1, отметил(и): SSV_Victoryan
1 7 2
Doomgay1999
- Corporal -
Next rank: = Corporal = after 6 points
94

Doom Rate: 2

Posts quality: -1
Ссылка на пост №78 Отправлено: 09.07.19 01:26:12
А есть такой редактор чтобы превратить оригинальную музыку например Quake 2 в стиль DOOM?
Zeberpal_98
Chief Petty Officer
Next rank: Chief Petty Officer after 49 points
891

Doom Rate: 2.18

Posts quality: +214
Ссылка на пост №79 Отправлено: 09.07.19 12:33:42
Doomgay1999
У дума формат музыки MIDI, поэтому аккуратно сконвертировать может только человек или нейросеть наверное. Потому если тебе нужен конкретно Q2 в стиль дум - поищи здесь.

:help: ЗАДАЧА:



У каждого оружия свой "тэг". Сейчас в статичном варианте все это выглядит так:
KLETKA01 = 3;  //где 3 - номер для ССГ
KLETKA02 = 7;  //где 7 - номер для БФГ   
KLETKA03 = 4;  //где 4 - номер для Пулемета
KLETKA04 = 5;  //где 5 - номер для Ракетницы
KLETKA05 = 6;  //где 6 - номер для Плазмы


Желанный результат: при действии определенного скрипта, оружие меняется ячейками слева-направо.
Как я хотел сделать изначально, исходя из моих способностей:
if (KLETKA01 == 3)
{ KLETKA02 = 3;}
else if (KLETKA01 == 4)
{ KLETKA02 = 4;}

//и так далее

Я может быть так и поступил, но в моем моде туева куча орудий, и честно говоря хочется понять, как правильно делать. Нашел такую штуку как SWITCH/CASE
ход моих мыслей: скажем KLETKA01 = x; а KLETKA02 = Y     в то же время X = 3, а Y = 7

Значит я... и как же блин этот свитч/кэйс поможет мне вставить один int в другой??


ПОМОГИТЕ!
пожалуйста
1 3
N00b
Chief Petty Officer
Next rank: Chief Petty Officer after 18 points
922

Doom Rate: 2.15

Posts quality: +384
Ссылка на пост №80 Отправлено: 09.07.19 15:52:10
Zeberpal_98
Если я правильно тебя понял, советую использовать массив вместо 5 переменных:
int cells[5] = {3, 7, 4, 5, 6};

script "ShiftCellsRight" (void) {
  int temp = cells[4];
  for (int i = 4; i > 0; --i) {
    cells[i] = cells[i - 1];
  }
  cells[0] = temp;
}

Переменным можно присваивать значение не только константы, но и другой переменной. ACS это позволяет.

Рейтинг сообщения: +2, отметил(и): Zeberpal_98, Void Weaver
1 2
Страница 4 из 63Перейти наверх Пред.  1, 2, 3, 4, 5 ... 61, 62, 63  След.
   Список разделов - Местечко мапперов и моддеров - Тема для новичков. Вопросы по маппингу/моддингу - любые!-2