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

Doom Rate: 2.2

Posts quality: +228
Ссылка на пост №741 Отправлено: 02.08.21 15:55:47
VladGuardian пишет:
У тебя отсутствует открывающая скобка скрипта '{'
(ну и парная закрывающая, есесено)

Её не может отсутствовать, потому как я взял скрипт предложенный Смертоносцем, от куда мне мапперу знать такое =D ну да ладно.
Вбил твой вариант(подогнал точнее):
script 400 OPEN
{  if ThingCountNameSector("Screamer", 0, 1000)<1 
   ACS_Execute(701, 0, 0, 0, 0);
   
   terminate;
   Delay(35);
   restart;
}

Пишет примерно то же самое слейд:
SCRIPTS.acs:11: Missing '('.
> {  if ThingCountNameSector(


Мне приходится использовать против своей воли магические цифры 1000, 701 и т.п. потому что слейд понимает только цифры в "названиях" скриптов =(
А вот про использование фиксированной цифры то же думал, немного не удобно, но вариант.
2
VladGuardian
= Commissar =
Next rank: - UAC Commissar - after 431 points
5369

Doom Rate: 1.28

Posts quality: +1753
Ссылка на пост №742 Отправлено: 02.08.21 16:03:20
SSV_Victoryan:
if ThingCountNameSector("Screamer", 0, 1000)<1

Попробуй лучше вот так:
if (ThingCountNameSector("Screamer", 0, 1000)<1)
Моэтбыть, дело в этом.

(условие if берется в скобки в одних языках, другие языки - позволяют записать условие без скобок)
4 10 22
SSV_Victoryan
UAC Sergeant Major
Next rank: Chief Petty Officer after 79 points
771

Doom Rate: 2.2

Posts quality: +228
Ссылка на пост №743 Отправлено: 02.08.21 16:15:04
VladGuardian пишет:
if (ThingCountNameSector("Screamer", 0, 1000)<1)

Да, скомпилировалось. Осталось теперь понять почему не воспроизводится звук в игре))) думаю тут уже я должен искать косяк, хотя не понятно, даже при учёте того что в звуковой скрипт я добавил TID. Спасибо!

Рейтинг сообщения: +1, отметил(и): VladGuardian
2
Zeberpal_98
UAC Sergeant Major
Next rank: Chief Petty Officer after 63 points
787

Doom Rate: 2

Posts quality: +172
Ссылка на пост №744 Отправлено: 02.08.21 19:43:55
SSV_Victoryan
SSV_Victoryan пишет:
Мне приходится использовать против своей воли магические цифры 1000, 701 и т.п. потому что слейд понимает только цифры в "названиях" скриптов


Используй команду ACS_NamedExecute, чтобы использовать скрипт с текстом(стринг) в названии. ACS_Execute реагирует только на числа.
По поводу звука рискну предположить, что он мог быть не прописан в SNDINFO.

P.S Почитал тему. Чекать пока актор в секторе, ну такое, какая-то совершенно костыльная история. Я бы:
1) Сжал зубы в кулак и таки прописал своим монстрам в декорейт в See стэйте.
  See:
LOOL A 0 ACS_NamedExecute("MoiSkript", 0)
...

Потому что чекать, заметил ли монстр игрока куда как аккуратнее в ДИКОРЕЙТ, там и функции специальные есть, например A_JumpIfTargetInLOS, позволяющая видеть игрока только на определенном расстоянии и пр.
Я сам ненавижу ДИКОРЕЙТ и все, что можно стараюсь делать в скриптах, но тут по-моему лучше всего так/

Script "MoiSkript" (void)
{
ActivatorSound("Hell/Sound18", 127);  //ya tak ponyal ti hochesh shtobi etot monstr isdal zvuk. Kuda proshe sdelat eto v dekoreit, no vot variant v decoreit-acs svyazke.
}

Рейтинг сообщения: +1, отметил(и): VladGuardian
1 1
SSV_Victoryan
UAC Sergeant Major
Next rank: Chief Petty Officer after 79 points
771

Doom Rate: 2.2

Posts quality: +228
Ссылка на пост №745 Отправлено: 02.08.21 20:18:29
Zeberpal_98 пишет:
Используй команду ACS_NamedExecute, чтобы использовать скрипт с текстом(стринг) в названии. ACS_Execute реагирует только на числа.
По поводу звука рискну предположить, что он мог быть не прописан в SNDINFO.

В слейде, в самом редакторе карт, где прописывается название скрипта, редактор не принимает буквы, сразу красным выделяет и окно с предупреждением вылезает.
Если бы звук не был прописан в SNDINFO, то он бы не играл при использовании этого скрипта:
script 701 (int atag0) { thingsound(atag0, "Hell/Sound18", 127); }

О котором я упомянул выше(скрипт не мой).
2
Zeberpal_98
UAC Sergeant Major
Next rank: Chief Petty Officer after 63 points
787

Doom Rate: 2

Posts quality: +172
Ссылка на пост №746 Отправлено: 02.08.21 20:26:13
SSV_Victoryan пишет:
сразу красным выделяет и окно с предупреждением вылезает.

Такое?

Какая у тебя задача, если чуть-чуть детальнее? Идет игрок, идет идет идет, вдруг его видит монстр и он издает звук? Верно? или звук должен воспроизвестить у игрока? Или еще у кого-то? Или у всех игроков?

Рейтинг сообщения: +1, отметил(и): VladGuardian
1 1
SSV_Victoryan
UAC Sergeant Major
Next rank: Chief Petty Officer after 79 points
771

Doom Rate: 2.2

Posts quality: +228
Ссылка на пост №747 Отправлено: 02.08.21 20:40:05
Zeberpal_98 пишет:
Такое?

На скрине ты находишся в текстовом редакторе скрипта, а я тебе говорю про редактор карт. Если я начну давать имена всем скриптам, как мне предлагали выше, то я не смогу использовать скрипты в редакторе карт слейда, если повешу спейшел на линию ACS_Execute. В редакторе карт слейда нельзя использовать ACS_NamedExecute на спейшелах линий увы.

Задачу я описал детально выше.
Скрытый текст:

Активация звука, если игрока заметил объект. При чём объект должен быть универсальным, что бы не нужно было создавать его клоны с другими значениями, то есть вбивать в него переменные от случай к случаю.
Для примера есть ОДИН универсальный скрипт, который активируется разными линиями, и посылает воспроизводимый звук на разные объекты.
script 701 (int atag0) { thingsound(atag0, "Hell/Sound18", 127); }


Вот мне понадобилось что то подобное универсальное, но чтобы активировался звук когда игрока заметил объект.

2
JSO x
UAC Sergeant Major
Next rank: UAC Sergeant Major after 46 points
714

Doom Rate: 2.25

Posts quality: +301
Ссылка на пост №748 Отправлено: 02.08.21 22:03:13
Ребят, вы какие-то костыли предлагаете. С циклами, работающими с начала уровня, и/или с дополнительным вызовом скрипта... Возможно, это, конечно, и максимум, который можно сделать на Decorate+ACS (в чём я, честно говоря, сомневаюсь), но какой-то он длинный.

Могу предложить более короткий и потенциально универсальный вариант (под вторым спойлером, ниже, есть один код, без комментариев и альтернатив, для сравнения длины; ссылка на "A_LookEx()").
Скрытый текст:

class Observer1: Actor {
    Default {
        ReactionTime 1;
        Radius 4;
        +NOGRAVITY;
        +ISMONSTER;
        -SOLID;
        -SHOOTABLE;
        Args 0, 0, 0; // Пусть по умолчанию такие будет...
    }

    States {
    Spawn:
        TNT1 A 1 A_LookEx( LOF_NOSOUNDCHECK, 0, 512, fov: 360.0, label: "Death" );
        loop;
    Death:
        TNT1 A 1 {
            // Сделал анонимное исполнение, так как так проще комментарии расставлять.


            // Вариант с автоматическим подставлением номера карты.
            //arg0: номер звука.
            // String alertsnd = "AlertSound/Map" .. level.levelnum .. "/Sound" .. args[ 0 ];

            // Вариант с выбором карты/части и звука.
            //arg0: номер звука;
            //arg1: номер карты/части/etc.
            // String alertsnd = "AlertSound/Map" .. args[ 1 ] .. "/Sound" .. args[ 0 ];

            // Вариант с тремя аргументами и расширенным диапазоном значений
            //arg0: младший байт;
            //arg1: старший байт;
            //arg2: номер карты/части/etc.
            String alertsnd = "AlertSound/Map" .. args[ 2 ] .. "/Sound" .. ( args[ 0 ] + ( args[ 1 ] << 8 ) );


            // Звуки делать мне незачем, так что пусть просто в консоль 
            //выводит полученное название. Раскомментировать "A_PlaySound()" — 
            //для воспроизведения соответственного сэмпла.
            console.printf( alertsnd );
            //A_PlaySound( alertsnd );
        }
        Stop;
    }
} // of class Observer1: Actor {



Вырезка из консоли для трёхагрументного варианта (справка по аргументам команды "summon"):
map01 - entryway

19 monsters killed
Picked up a clip.
]summon observer1 0 0 0 1
AlertSound/Map0/Sound1
]summon observer1 0 0 0 1 2
AlertSound/Map0/Sound513
]summon observer1 0 0 0 1 2 3
AlertSound/Map3/Sound513
]summon observer1 0 0 0 77 0 14
AlertSound/Map14/Sound77


Чистый код ("A_Log()" следует заменить на запуск звука):
Скрытый текст:

class ObserverShort: Actor {
	Default {
		ReactionTime 1;
		Radius 4;
		+NOGRAVITY;
		+ISMONSTER;
		-SOLID;
		-SHOOTABLE;
		Args 0, 0, 0;
	}

	States {
	Spawn:
		TNT1 A 1 A_LookEx( LOF_NOSOUNDCHECK, 0, 512, fov: 360.0, label: "Death" );
		loop;
	Death:
		TNT1 A 1 A_Log( "AlertSound/Map" .. args[ 2 ] .. "/Sound" .. ( args[ 0 ] + ( args[ 1 ] << 8 ) ) );
		Stop;
	}
} // of class ObserverShort: Actor {


Рейтинг сообщения: +2, отметил(и): Zeberpal_98, VladGuardian
1 5
Landsberg
= Lance Corporal =
Next rank: - Master Corporal - after 4 points
196

Doom Rate: 1.96

Posts quality: +22
Ссылка на пост №749 Отправлено: 03.08.21 13:39:45
Здравствуйте.
Как изменить базовый класс, например инвентори?
Стандартные операции типа принятия параметров и последующей замены выдают ошибку
ChaingunPredator
- 2nd Lieutenant -
Next rank: = 2nd Lieutenant = after 122 pointsМодератор форума
1318

Doom Rate: 2.48

Posts quality: +132
Ссылка на пост №750 Отправлено: 03.08.21 16:51:45
Здравствуйте.
Landsberg пишет:
Как изменить базовый класс, например инвентори?

А с какой целью вам необходимо его изменить? Это и так почти голый базовый класс.
1 2 5
Landsberg
= Lance Corporal =
Next rank: - Master Corporal - after 4 points
196

Doom Rate: 1.96

Posts quality: +22
Ссылка на пост №751 Отправлено: 03.08.21 19:34:42
Понятно зачем)
Добавить одно свойство у всех наследников класса в одно действие

Рейтинг сообщения: +1, отметил(и): VladGuardian
JSO x
UAC Sergeant Major
Next rank: UAC Sergeant Major after 46 points
714

Doom Rate: 2.25

Posts quality: +301
Ссылка на пост №752 Отправлено: 05.08.21 15:17:42
Landsberg пишет:
Как изменить базовый класс, например инвентори?

Именно изменить -- только если залезть в g-/q-/lzdoom.pk3. Но, очевидно, это нарушит совместимость со всем, чем только возможно.

Вариант с наследованием ("class MyBaseInventory: Inventory {}") не предлагать, насколько понял?

К слову, если именно при поднятии каждого из предметов необходимо что-либо делать без изменения этих самых предметов, можешь в игроке переопределить следующий код:
// Called by inventory items to see if this actor is capable of touching them.
// If true, the item will attempt to be picked up. Useful for things like
// allowing morphs to pick up limited items such as keys while preventing
// them from picking other items up.
virtual bool CanTouchItem( Inventory item ) {
	return true;
}


Landsberg пишет:
Стандартные операции типа принятия параметров и последующей замены выдают ошибку

Не понял смысл фразы. Переопределение виртуальных методов или что?

Рейтинг сообщения: +1, отметил(и): VladGuardian
1 5
Landsberg
= Lance Corporal =
Next rank: - Master Corporal - after 4 points
196

Doom Rate: 1.96

Posts quality: +22
Ссылка на пост №753 Отправлено: 07.08.21 09:09:19
JSO x пишет:
Не понял смысл фразы. Переопределение виртуальных методов или что?

actor Inventory:Inventory replaces Inventory
{
Some of code
}
Выдаёт ошибку потому что экстор заменяется на самого себя
theleo_ua
Lieutenant Colonel
Next rank: - Colonel - after 394 points
3646

Doom Rate: 1.84

Posts quality: +647
Ссылка на пост №754 Отправлено: 07.08.21 10:15:45
Landsberg пишет:
actor Inventory:Inventory replaces Inventory
{
Some of code
}
Выдаёт ошибку потому что экстор заменяется на самого себя


Так делать нельзя. Надо например так:

actor Inventory2: Inventory replaces Inventory
или
actor Inventory_Landsberg: Inventory replaces Inventory

Т.е. ты создаешь нового актора Inventory_Landsberg на базе актора Inventory который будет заменять актора Inventory

Рейтинг сообщения: +1, отметил(и): VladGuardian
3 1
YURA_111
UAC Sergeant Major
Next rank: UAC Sergeant Major after 28 points
732

Doom Rate: 1.98

Posts quality: +130
Ссылка на пост №755 Отправлено: 07.08.21 21:07:41
theleo_ua пишет:
actor Inventory2: Inventory replaces Inventory


А разве NATIVE-ные можно реплейсить таким образом?

Рейтинг сообщения: +1, отметил(и): theleo_ua
theleo_ua
Lieutenant Colonel
Next rank: - Colonel - after 394 points
3646

Doom Rate: 1.84

Posts quality: +647
Ссылка на пост №756 Отправлено: 07.08.21 21:33:54
YURA_111 пишет:
А разве NATIVE-ные можно реплейсить таким образом?


базовые классы нельзя, только наследников
3 1
Gadavre
= Master Sergeant =
Next rank: - Sergeant Major - after 8 points
522

Doom Rate: 1.19

Posts quality: +46
Ссылка на пост №757 Отправлено: 23.08.21 19:18:28
Что нужно прописать в командной строке батника программы ZDBSP чтобы в обработанном ваде не было прозрачных текстур?

вношу ноды в вад, например, так:
zdbsp Doomer.wad -o Doomer.wad
1
STALKEROZ_
= Lance Corporal =
Next rank: - Master Corporal - after 40 points
160

Doom Rate: 1.15

Posts quality: +13
Ссылка на пост №758 Отправлено: 30.08.21 12:59:47
решил я значит "помаппить" в GZDOOM Builder-е ,нажал какую-то кнопку и подсветка выделенных объектов пропала ,тоесть когда наводишь в 3D режиме на обьект прицел он не подсвечивается оранжевым и то-же самое при выделении,подсветки нет ,HELP!
1
ChaingunPredator
- 2nd Lieutenant -
Next rank: = 2nd Lieutenant = after 122 pointsМодератор форума
1318

Doom Rate: 2.48

Posts quality: +132
Ссылка на пост №759 Отправлено: 30.08.21 21:41:35
STALKEROZ_
Нажми h в visual mode.

Рейтинг сообщения: +1, отметил(и): VladGuardian
1 2 5
STALKEROZ_
= Lance Corporal =
Next rank: - Master Corporal - after 40 points
160

Doom Rate: 1.15

Posts quality: +13
Ссылка на пост №760 Отправлено: 30.08.21 22:43:10
ChaingunPredator
БОЛЬШОЕ человеческое тебе спасибо!
1
Страница 38 из 39Перейти наверх Пред.  1, 2, 3 ... , 37, 38, 39  След.
   Список разделов - Местечко мапперов и моддеров - Тема для новичков. Вопросы по маппингу/моддингу - любые!-2