Welcome to U.A.C. [O.S.A.]
login / register
Status: Guest
Архивы форума | iddqd.ru
Wolf 3D
ПравилаПравила ПоискПоиск
18+
Тема для новичков. Вопросы по маппингу/моддингу - любые! Пред.  1, 2, 3 ... , 209, 210, 211  След.
   Список разделов - Местечко мапперов и моддеров - Тема для новичков. Вопросы по маппингу/моддингу - любые!Ответить
АвторСообщение
FoxPlays
= Master Corporal =
Next rank: - Sergeant - after 28 points
262

Doom Rate: 2.05

Posts quality: +101
Ссылка на пост №4181 Отправлено: 01.08.19 11:24:24
Void Weaver пишет:
Против естественного респа по команде use это конечно не спасает.


Прочитал это после многократных попыток :x
Мне нужно было чтобы отключилось возрождение на один уровень, на карте после смерти начинает идти катсцена. Ладно, попробую как-нибудь сделать без этой функции :)

Что-ж, у меня осталось два не решённых вопроса -

1. Как сделать чтобы Handler в ZScript срабатывал только один раз после начала уровня?
Скрипт -


class MultiplayerMonstersHandler: EventHandler
{
override void WorldThingSpawned( WorldEvent e )
{
CVar mmonsters = CVar.FindCVar("scpack_nommonsters");
if ( multiplayer && e.Thing != NULL && e.Thing.bIsMonster && !( e.Thing.SpawnFlags & MTF_Single ) && mmonsters) {
if(mmonsters.GetInt())
{
e.Thing.ClearCounters();
e.Thing.Destroy();
}
}
}
}


2. Можно ли string использовать между ACS и ZScript? Например получил нужное содержание для string и с ним потом производить манипуляции в Zscript, и после готовый результат вывести в ACS?

Ещё пример:


ACS:

str playerweapon;

while (PlayerNumber() >= 0)
{
SetActivatorToTarget(new_tid);
playerweapon = GetWeapon();
Delay(1);
}

Zscript:

str playerweapon_t;

playerweapon _t = GetTag(playerweapon);

ACS:

HudMessage( s:playerweapon_t );

( вот так я и пытаюсь получить в ACS тег из оружия :ha: )
1
JSO x
- Sergeant Major -
Next rank: = Sergeant Major = after 38 points
562

Doom Rate: 2.4

Posts quality: +208
Ссылка на пост №4182 Отправлено: 01.08.19 13:54:48
FoxPlays пишет:
1. Как сделать чтобы Handler в ZScript срабатывал только один раз после начала уровня?

Несколько вариантов, в зависимости от того, что тебе нужно. Как понимаю, следующее: чтобы мультиплеерные монстры не спаунились только при загрузке уровня, то есть если они должны появляться каким-нибудь "Thing_Spawn", то они бы появлялись. Если это, то либо используй метод "WorldLoaded( WorldEvent e ) {}" и внутри перебирай всех акторов, либо, что здесь гораздо проще, в "WorldThingSpawned( WorldEvent e ) {}" припиши ещё проверку на "level.time == 0":
if ( multiplayer && !level.time && e.Thing && e.Thing.bIsMonster && !( e.Thing.SpawnFlags & MTF_Single ) ) {}

FoxPlays пишет:
Можно ли string использовать между ACS и ZScript? Например получил нужное содержание для string и с ним потом производить манипуляции в Zscript, и после готовый результат вывести в ACS?

Напрямую невозможно: ACS_Execute() и все его производные, которые можно вызвать через ZScript, понимают в качестве параметров только числовые значения. "CallScript()", который можно использовать для обращения из ACS к ZScript/Decorate, также принимает только числовые значения. Как это обойти: во-первых, можно присваивать некую уже существующую строку типа тега сначала в одной среде, потом, встроенной функцией, брать в другой. Во-вторых, можно использовать только ZScript (там есть аж две-три разных функции вывода на экран: через StatusBar и через RenderOver-/Underlay. Правда, разбираться со взаимодействием сфер влияния (которые play, UI, data) будет долгим процессом, несмотря на явную простоту). В-третьих, на крайний и самый извращённый случай, можно разбивать на одной стороне символы на ASCII-код, посылать каждый по-отдельности, на другой -- собирать обратно в одно слово.

Рейтинг сообщения: +2, отметил(и): Void Weaver, FoxPlays
1 5
FoxPlays
= Master Corporal =
Next rank: - Sergeant - after 28 points
262

Doom Rate: 2.05

Posts quality: +101
Ссылка на пост №4183 Отправлено: 01.08.19 14:49:46
JSO x, спасибо!

Ещё вопрос - можно ли использовать FadeTo наоборот?
1
Void Weaver
- Captain -
Next rank: = Captain = after 194 points
2146

Doom Rate: 1.8

Posts quality: +667
Ссылка на пост №4184 Отправлено: 01.08.19 16:58:00
Во-первых, предлагаю РДЦ либо определить точные значения русских вариантов процессов respawn, resurrect, и внешний resurrect\revive, либо же тупо печатать оригинальное название процесса дабы пресечь любые возможные непонятки и затупы в терминологии между "возрождаться", "перерождаться", "воскрешаться" и "респауниться". :)

Во-вторых, таки совет Мэтта оказывается не решение а подсказка в какую сторону копать, но походу это самый верный способ ограничить respawn на зскрипте (отсюда и далее):

You can override PlayerPawn's DeathThink method and code in your custom death/revival game mechanics there.
Ссыль на соус активации respawn по команде use.
-------
Вопрос с АЦС уже подсказали - оказывается результат каждого выражения надо было делить на 65536 (>>16).

Рейтинг сообщения: +2, отметил(и): JSO x, FoxPlays
1 8 1
YURA_111
- Sergeant Major -
Next rank: = Sergeant Major = after 14 points
586

Doom Rate: 1.98

Posts quality: +94
Ссылка на пост №4185 Отправлено: 01.08.19 17:25:07
Void Weaver пишет:
Во-первых, предлагаю РДЦ либо определить точные значения русских вариантов процессов respawn, resurrect, и внешний resurrect\revive, либо же тупо печатать оригинальное название процесса дабы пресечь любые возможные непонятки и затупы в терминологии между "возрождаться", "перерождаться", "воскрешаться" и "респауниться".


А что тут определяться то - с самого начала в Дум респавн\респоун\RESPAWN\перерождение означал перерождение в точке старта, будь то монстр или игрок с потерей всего набранного\накопленного в уровне и возвращение всех статов и инвентори по default...

Ну а воскрешение\RESURRECT появилось уже наверное со входом ZSCRIPT (если не считать чит Resurrect в консоли и ARCH-Vile-овские возможности)


Void Weaver пишет:
Кстати вот так Мэтт предлагал отключать респаун в мульте:
override void DeathThink()
{
if(player)player.cmd.buttons&=~BT_USE;
super.DeathThink();
}


А можно к этому как то прикрутить инвентори итем, дабы в зависимости от количества этого самого итема можно было делать RESPAWN, т.е. например если игрок погибал на уровне уже 5 раз, то RESPAWN не срабатывал бы, но чтобы было допустимо воскрешение?
Void Weaver
- Captain -
Next rank: = Captain = after 194 points
2146

Doom Rate: 1.8

Posts quality: +667
Ссылка на пост №4186 Отправлено: 01.08.19 17:43:40
YURA_111
Ок, буду придерживаться твоей терминологии. :)

FoxPlays пишет:
Ещё вопрос - можно ли использовать FadeTo наоборот?
Это простите как "наоборот"? о_0
1 8 1
FoxPlays
= Master Corporal =
Next rank: - Sergeant - after 28 points
262

Doom Rate: 2.05

Posts quality: +101
Ссылка на пост №4187 Отправлено: 01.08.19 17:48:54
Void Weaver пишет:
Это простите как "наоборот"? о_0


Обычно FadeTo работает так - FadeTo (0, 0, 0, 0.5, 2.0) = затемнение экрана.

Как сделать чтобы от затемнённого экрана он светлел?


Уже решил! Просто не заметил существование - FadeRange :x


FadeRange(0,0,0,1.0,0,0,0,0,4.0);
1
Void Weaver
- Captain -
Next rank: = Captain = after 194 points
2146

Doom Rate: 1.8

Posts quality: +667
Ссылка на пост №4188 Отправлено: 01.08.19 17:52:53
255*3, не?
-----
Ну тоже вариант.

Рейтинг сообщения: +1, отметил(и): FoxPlays
1 8 1
MyNameIs
= 2nd Lieutenant =
Next rank: - 1st Lieutenant - after 98 points
1542

Doom Rate: 1.93

Posts quality: +588
Ссылка на пост №4189 Отправлено: 01.08.19 18:25:19
у FadeTo же есть amount. ставишь 0 - будет переход в прозрачно.


FadeTo (0, 0, 0, 0.0, 2.0);

Рейтинг сообщения: +1, отметил(и): FoxPlays
1 1
FoxPlays
= Master Corporal =
Next rank: - Sergeant - after 28 points
262

Doom Rate: 2.05

Posts quality: +101
Ссылка на пост №4190 Отправлено: 01.08.19 18:36:26
MyNameIs, спасибо, но к сожалению это так не работает! :o
1
MyNameIs
= 2nd Lieutenant =
Next rank: - 1st Lieutenant - after 98 points
1542

Doom Rate: 1.93

Posts quality: +588
Ссылка на пост №4191 Отправлено: 01.08.19 19:07:50
FoxPlays
ты что пытаешься высветлить? черный экран, залитый FadeTo?
или сразу пытаешься сделать переход в прозрачно, когда все и так прозрачно?

потому что вот это должно работать
script 666 ENTER
{
FadeTo (0, 0, 0, 1.0, 0.0);
Delay(20);
FadeTo (0, 0, 0, 0.0, 1.0);
}

Рейтинг сообщения: +2, отметил(и): Void Weaver, FoxPlays
1 1
FoxPlays
= Master Corporal =
Next rank: - Sergeant - after 28 points
262

Doom Rate: 2.05

Posts quality: +101
Ссылка на пост №4192 Отправлено: 01.08.19 19:11:04
MyNameIs
Да, это работает, спасибо, но пожалуй воспользуюсь FadeRange(0,0,0,1.0,0,0,0,0,4.0) для большей компактности :o
1
JSO x
- Sergeant Major -
Next rank: = Sergeant Major = after 38 points
562

Doom Rate: 2.4

Posts quality: +208
Ссылка на пост №4193 Отправлено: 01.08.19 20:28:46
YURA_111 пишет:
А можно к этому как то прикрутить инвентори итем, дабы в зависимости от количества этого самого итема можно было делать RESPAWN, т.е. например если игрок погибал на уровне уже 5 раз, то RESPAWN не срабатывал бы, но чтобы было допустимо воскрешение?

override void DeathThink() {
    PlayerPawn playerActor = PlayerPawn( self );
    if ( playerActor.player && multiplayer && ( playerActor.CountInv( "DeathItem" ) >= 5 ) )
        playerActor.player.cmd.buttons &= ~BT_USE;
    Super.DeathThink();
} 

Рейтинг сообщения: +3, отметил(и): VladGuardian, YURA_111, Void Weaver
1 5
Void Weaver
- Captain -
Next rank: = Captain = after 194 points
2146

Doom Rate: 1.8

Posts quality: +667
Ссылка на пост №4194 Отправлено: 02.08.19 15:45:57
В bounce-снаряд можно прописать одноимённый стэйт в котором (стэйте) может выполняться последовательность действий, если таковые прописаны.
Так же любому актору можно выставить REFLECTIVE флаг который заставит отскакивать снаряды от этого актора.

Вопрос: есть ли какой-нибудь декор (или хотя бы АЦС) способ вклинить выполнение неких действий после отражения снаряда флагом REFLECTIVE, по аналогии с баунс-стэйтом снаряда; иными словами: как выполнить чек на то что сработал флаг REFLECTIVE? Или это можно только через зскрипт?
-----------
И всё таки я был бы признателен если кто подскажет как написать такой скрипт:
Void Weaver пишет:
Нужен скрипт который активируется игроком и при этом раздаёт некий итем ВСЕМ монстрам и итемам (оружию, патронам, ключам, аптечкам, бронькам, пауэрапам) на карте.
1 8 1
SSV_Victoryan
UAC Sergeant Major
Next rank: UAC Sergeant Major after 19 points
741

Doom Rate: 2.21

Posts quality: +213
Ссылка на пост №4195 Отправлено: 03.08.19 15:08:41
Привет всем! Вопрос: можно ли выводить на экран во время прохождения карты составные тексты?
Я имею ввиду небольшой текст за которым следует другой небольшой текст показывающий значение переменной.

Пример такого текста:
pressed switches 6

Где слова "pressed switches" это обычный текст, а цифра "6" это своего рода счётчик, показывающий сколько рубильников нажато, то есть шестёрка это переменная которая показывается прямо в тексте (pressed switches 1, pressed switches 2, 3, 4 и т.п...)
Формат ACS скрипт. Кто шарит помогите пожалуйста :bitsa:
2
Void Weaver
- Captain -
Next rank: = Captain = after 194 points
2146

Doom Rate: 1.8

Posts quality: +667
Ссылка на пост №4196 Отправлено: 03.08.19 15:21:30
Да это просто Print без всяких заморочек.
Print(s:"Pressed switches ", d:n); //где int n = ко-во активированных ключей

Добавлено спустя 29 минут 7 секунд:

Попробуй так:

int doorvar1 = 0;
script 2 (void){ doorvar1++; print(s:"pressed switches ",d:doorvar1); Door1(); } //Полагаю это скрипты срабатывающие при нежатии свитча?
script 3 (void){ doorvar1++; print(s:"pressed switches ",d:doorvar1); Door1(); }
function void Door1 (void)
{ if (doorvar1 == 2)
{ print(s: "central door is open");
ambientsound("Sound/gong", 100);
}
Else{}
}

Рейтинг сообщения: +1, отметил(и): SSV_Victoryan
1 8 1
SSV_Victoryan
UAC Sergeant Major
Next rank: UAC Sergeant Major after 19 points
741

Doom Rate: 2.21

Posts quality: +213
Ссылка на пост №4197 Отправлено: 03.08.19 15:51:04
Void Weaver
Сделал тестовую версию, по началу не работала. Из-за спешки не там символы понаставил и ещё при первом нажатии ноль показывал, не мог понять почему, оказалось нужно принт ставить после начисления переменной Оо сам допёр, как не знаю))) Благодарилую!!!
Скрытый текст:

int mapvar1;

script 2 (void) { mapvar1++; print(s: "pressed switches 2/", d:mapvar1); Door1(); }
script 3 (void) { mapvar1++; print(s: "pressed switches 2/", d:mapvar1); Door1(); }
function void Door1 (void)
{  if (mapvar1 == 2)
   {  //print(s: "central door is open");
      ambientsound("Sound/gong", 100);
   }
  if (mapvar1 == 6)
   {  //print(s: "central door is open");
      ambientsound("Sound/Gurgles", 100);
   }
}

2
Void Weaver
- Captain -
Next rank: = Captain = after 194 points
2146

Doom Rate: 1.8

Posts quality: +667
Ссылка на пост №4198 Отправлено: 03.08.19 16:11:46
SSV_Victoryan пишет:
print(s: "pressed switches 2/", d:mapvar1)
Вообще-то принято записывать "столько-то"/"из стольких-то", на мой взгляд тогда уж правильнее записывать:
print(s:"pressed switches ",d:mapvar1,s:"/2") // будет печатать "pressed switches х/2".

Рейтинг сообщения: +1, отметил(и): SSV_Victoryan
1 8 1
SSV_Victoryan
UAC Sergeant Major
Next rank: UAC Sergeant Major after 19 points
741

Doom Rate: 2.21

Posts quality: +213
Ссылка на пост №4199 Отправлено: 03.08.19 16:23:59
Void Weaver пишет:
Вообще-то принято записывать "столько-то"/"из стольких-то", на мой взгляд тогда уж правильнее записывать:
print(s:"pressed switches ",d:mapvar1,s:"/2") // будет печатать "pressed switches х/2".


Ну всё, теперь хоть в музей, только нужно не забыть убрать "повторитель" с кнопки :shock: :D
2
Doomgay1999
- UAC Gunner -
Next rank: = UAC Gunner = after 8 points
52

Doom Rate: 2

Ссылка на пост №4200 Отправлено: 08.08.19 04:08:08
Как сделать так чтобы на уровне играли случайные треки?
Страница 210 из 211Перейти наверх Пред.  1, 2, 3 ... , 209, 210, 211  След.
   Список разделов - Местечко мапперов и моддеров - Тема для новичков. Вопросы по маппингу/моддингу - любые!