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

Doom Rate: 1.93

Posts quality: +49
Ссылка на пост №2721 Отправлено: 16.10.17 07:12:29
DOONFOREVER
Нужен скрипт для этого.
можно через ACS и через zscript.
ACS легче так что:
Скрытый текст:

#include "zcommon.acs" //обязательно пишем сперва //Это затенение работает только с одним объектом с тегом 1. Script "FadeScreen" ENTER { //Скрипт тест-эффект затенения экрана int limitradius=128.0; //пусть затенение будет когда тот на расстоянии меньше 128 маппикселей... while(1) { //алгоритм для нахождения уровня затенения экрана, т.е. чем ближе объект тем темнее экран int fadeamount = -fdistance(0,1) + limitradius; if(fadeamount<=0) fadeamount=0; //число (меньше или равно 0) не допустим else fadeamount = FixedDiv(fadeamount,limitradius); //"превращаем" дистанцию в уровень (от 0 до 1.0) //теперь у нас есть число(уровень), затеняем им наш экран (можно и в других целях пользоваться) FadeTo(0,0,0,fadeamount,0); //0,0,0 - Full Black. fadeamount - наше число. 0 - затеняем мгновенно. Print(f:fadeamount); //можешь это удалить! Delay(1); //обновление экрана... } } //поле для функции /* Взято с zdoomwiki Эта функция нужна чтобы определять расстояние между объектами (точками) fdistance(tid1, tid2) tid1 - Первый ACTOR tid2 - Второй ACTOR Функция возвращает расстояние между ними */ function int fdistance (int tid1, int tid2) { int len; int y = getactory(tid1) - getactory(tid2); int x = getactorx(tid1) - getactorx(tid2); int z = getactorz(tid1) - getactorz(tid2); int ang = vectorangle(x,y); if(((ang+0.125)%0.5) > 0.25) len = fixeddiv(y, sin(ang)); else len = fixeddiv(x, cos(ang)); ang = vectorangle(len, z); if(((ang+0.125)%0.5) > 0.25) len = fixeddiv(z, sin(ang)); else len = fixeddiv(len, cos(ang)); return len; }


test

Научитесь убирать под спойлер объёмные строки кода. BeeWen

Рейтинг сообщения: +2, отметил(и): alekv, DOONFOREVER
2 1
DOONFOREVER
Recruit
Next rank: Marine after 2 points
18

Doom Rate: 2

Posts quality: +1
Ссылка на пост №2722 Отправлено: 16.10.17 19:03:36
Kragoth762 :
ACS легче так что
, благодарю , но вот ещё вопрос , можно ли вместо затемнения использовать спрайты (несколько) или хотя б менять цвет с белог на чёрный за 1 тик, такое возможно?
YURA_111
= Sergeant =
Next rank: - Master Sergeant - after 22 points
378

Doom Rate: 2.02

Posts quality: +44
Ссылка на пост №2723 Отправлено: 18.10.17 18:35:29
Доброго времени суток!

Народ помогите разобраться - вопрос по бессмертию в думе:

В моей модификации есть несколько типов бессмертия, в которых собственно отличия в длительности этого самого бессмертия и то, что его дает игроку. Так вот если, например, игрок подобрал Берсерк сферу - получил бессмертие скажем на 15 секунд, а через 10 секунд подобрал другую сферу бессмертия (например классическую), то происходят чудеса: ПО идее во время взятие повторно бессмертия, второе должно заменить первое, но этого не происходит, более того, ПЕРВО-взятое остается в силе до своего конца, а когда заканчивается, то игрок становится !уязвим! несмотря на то что еще действует другой тип бессмертия (это показывает реверс цветов или иконка). Кто знает в чем дело?

ADD: попытка в стейте PICKUP забрать бессмертие и снова давать новое вообще не дает результата, т.к. A_TakeInventory по какой-то причине не может забрать данный поверап...
DOONFOREVER
Recruit
Next rank: Marine after 2 points
18

Doom Rate: 2

Posts quality: +1
Ссылка на пост №2724 Отправлено: 18.10.17 19:35:28
Нужна помощь , как сделать револьвер , где после 2х выстрелов , в барабане осталось 2 и заряжаеться 2 , 3 и 3 , и так далее . То есть чтобы заряжалось столько сколько потратилось . Я пытался но что то я не то сделал .
Скрытый текст:

actor revol : Ammo { inventory.maxamount 8 inventory.icon "MG34Ammo" } Actor RevolAmmo : Ammo 6709 //$Category ammunition { SCALE 0.05 inventory.amount 8 inventory.maxamount 200 inventory.pickupsound "pickups/pistolammo" inventory.pickupmessage "Picked up G36K ammo." inventory.icon "clipa0" states { Spawn: MG3M A 1 loop } } Actor Revolver : weapon 7062 //$Category weapons { scale 0.07 //0.07 //spawnid 239 Weapon.SlotNumber 2 weapon.kickback 800 weapon.selectionorder 600 weapon.ammotype1 "Revol" weapon.ammogive1 8 weapon.ammouse 1 weapon.ammotype2 "Revolammo" weapon.ammogive2 1 obituary "%o ate %k' s Revolver!" +WEAPON.NOAUTOAIM -WEAPON.NOALERT +WEAPON.NOAUTOFIRE +WEAPON.AMMO_OPTIONAL +WEAPON.NO_AUTO_SWITCH //(WRF_ALLOWRELOAD) states { spawn: MG3S A 1 loop ready: REVG A 1 A_weaponready(WRF_ALLOWRELOAD) null A 0 A_jumpifinventory("revol",0,"reload") loop deselect: REVG A 1 A_lower loop select: REVG A 1 A_raise loop fire: Fire: TNT1 A 0 A_JumpIfInventory("revol",1,2) Goto Reload TNT1 AAAA 0 REVF A 1 A_FireBullets(0.3,0.3,1,random (100,200),0,0,0) TNT1 A 0 A_takeinventory("revol",1) REVF BC 1 REVF A 0 A_refire goto Ready Reload: NULL A 0 A_JumpIfInventory("revol", 0, "Ready") NULL A 0 A_JumpIfInventory("revolAMMO",7,7) goto ready REVR ABCDEFGHI 4 //кадры одинаковые до начала зарядки //здесь кадры соответственно reload1 , reload2 , т д REVE ABCDEFG 4 //после зарядки goto reload7 TNT1 A 0 A_jumpifinventory("revol",6,"reload7") goto reload6 TNT1 A 0 A_jumpifinventory("revol",5,"reload5") goto reload5 TNT1 A 0 A_jumpifinventory("revol",4,"reload4") goto reload4 TNT1 A 0 A_jumpifinventory("revol",3,"reload3") goto reload3 TNT1 A 0 A_jumpifinventory("revol",2,"reload2") goto reload2 TNT1 A 0 A_jumpifinventory("revol",1,"reload1") goto reload1 TNT1 A 0 A_jumpifinventory("revol",0,"reload8") goto reload8 reload7: TNT1 A 0 A_JumpIfInventory("revol", 0, "Ready") TNT1 A 0 A_jumpifinventory("revol",0,1) goto ready REVD ABCDEFGHI 4 TNT1 A 0 A_Takeinventory("revolammo",1) TNT1 A 0 A_giveinventory("revol",1) REVE ABCDEFG 2 goto ready reload6: TNT1 A 0 A_JumpIfInventory("revol", 0, "Ready") TNT1 A 0 A_jumpifinventory("revol",1,2) goto ready REVM ABCDEFGHI 4 TNT1 A 0 A_Takeinventory("revolammo",2) TNT1 A 0 A_giveinventory("revol",2) REVE ABCDEFG 2 goto ready reload5: TNT1 A 0 A_JumpIfInventory("revol", 0, "Ready") TNT1 A 0 A_jumpifinventory("revol",2,3) goto ready REVN ABCDEFGHI 4 TNT1 A 0 A_Takeinventory("revolammo",3) TNT1 A 0 A_giveinventory("revol",3) REVE ABCDEFG 2 goto ready reload4: TNT1 A 0 A_JumpIfInventory("revol", 0, "Ready") TNT1 A 0 A_jumpifinventory("revol",3,4) goto ready REVB ABCDEFGHI 4 TNT1 A 0 A_Takeinventory("revolammo",4) TNT1 A 0 A_giveinventory("revol",4) REVE ABCDEFG 2 goto ready reload3: TNT1 A 0 A_JumpIfInventory("revol", 0, "Ready") TNT1 A 0 A_jumpifinventory("revol",4,5) goto ready REVV ABCDEFGHI 4 TNT1 A 0 A_Takeinventory("revolammo",5) TNT1 A 0 A_giveinventory("revol",5) REVE ABCDEFG 2 goto ready reload2: TNT1 A 0 A_JumpIfInventory("revol", 0, "Ready") TNT1 A 0 A_jumpifinventory("revol",5,6) goto ready REVC ABCDEFGHI 4 TNT1 A 0 A_Takeinventory("revolammo",6) TNT1 A 0 A_giveinventory("revol",6) REVE ABCDEFG 2 goto ready reload1: TNT1 A 0 A_JumpIfInventory("revol", 0, "Ready") TNT1 A 0 A_jumpifinventory("revol",6,7) goto ready REVX ABCDEFGHI 4 TNT1 A 0 A_Takeinventory("revolammo",7) TNT1 A 0 A_giveinventory("revol",7) REVE ABCDEFG 2 goto ready reload8: //осталось 0 TNT1 A 0 A_JumpIfInventory("revol", 0, "Ready") TNT1 A 0 A_jumpifinventory("revol",7,8) goto ready REVZ ABCDEFGHI 4 TNT1 A 0 A_Takeinventory("revolammo",8) TNT1 A 0 A_giveinventory("revol",8) REVE ABCDEFG 2 goto ready } }


заранее спасибо ...
ZZYZX
Lieutenant Colonel
Next rank: - Colonel - after 26 pointsМодератор форума
4014

Doom Rate: 1.79

Posts quality: +744
Ссылка на пост №2725 Отправлено: 19.10.17 14:16:50
YURA_111
Всю жизнь так было. В думе поверапы кривоватые. Если ты один и тот же итем юзаешь, тогда время обновляется, а разными — нет. Тут только через зскрипт переделывать, как мне кажется.

Рейтинг сообщения: +1, отметил(и): YURA_111
2 2 1
N00b2015
- Master Corporal -
Next rank: = Master Corporal = after 24 points
216

Doom Rate: 2.12

Posts quality: +40
Ссылка на пост №2726 Отправлено: 19.10.17 16:41:14
Насчёт зскрипта.
Есть ли там какой-нибудь нормальный отладочный вывод, который можно вызвать не из актора, а из какого-то другого класса (то есть, A_Log отпадает)?
В gzdoom.pk3 тоже копался.
Когда ждать полную документацию?
1
ZZYZX
Lieutenant Colonel
Next rank: - Colonel - after 26 pointsМодератор форума
4014

Doom Rate: 1.79

Posts quality: +744
Ссылка на пост №2727 Отправлено: 19.10.17 17:32:53
Console.Printf(). Формат такой же, как у сишного принтф-а. Например, Console.Printf("int: %02d", 4).
Подробнее про поддерживаемые форматы https://zdoom.org/wiki/String#Static_methods

Рейтинг сообщения: +2, отметил(и): VladGuardian, N00b2015
2 2 1
N00b2015
- Master Corporal -
Next rank: = Master Corporal = after 24 points
216

Doom Rate: 2.12

Posts quality: +40
Ссылка на пост №2728 Отправлено: 19.10.17 18:01:23
ZZYZX
Спасибо большое.
Поиск выдаёт 1 результат, немудрено, что сам не заметил. Вот пока не будет документации, каждую минуту кто-нибудь не посвящённый во внутренности разработки GZ, вроде меня, будет задавать дурацкие вопросы :)
1
YURA_111
= Sergeant =
Next rank: - Master Sergeant - after 22 points
378

Doom Rate: 2.02

Posts quality: +44
Ссылка на пост №2729 Отправлено: 25.10.17 20:10:23
Доброго времени суток!

Создал полиобъект - обычная дверь как в WOLF-е. Все работает, но нет звука. Подскажите пожалуйста, как заставить проигрываться звук открывания двери ?

порт GZDOOM - формат UDMF
N00b2015
- Master Corporal -
Next rank: = Master Corporal = after 24 points
216

Doom Rate: 2.12

Posts quality: +40
Ссылка на пост №2730 Отправлено: 25.10.17 20:53:26
YURA_111
Нужно воспользоваться SNDSEQ.
Подобный вопрос на zdoom.org.

Рейтинг сообщения: +2, отметил(и): VladGuardian, YURA_111
1
YURA_111
= Sergeant =
Next rank: - Master Sergeant - after 22 points
378

Doom Rate: 2.02

Posts quality: +44
Ссылка на пост №2731 Отправлено: 25.10.17 21:06:41
Спасибо, Сам ответ нашел вот здесь
https://forum.zdoom.org/viewtopic.php?f=3&t=4569#

Добавлено спустя 20 часов 13 минут 45 секунд:

ADD:
Дверь-полиобъект не блокирует звук?
Есть некий способ на сегодняшний день блокировать звук как это делает обычная дверь, который проще, чем описан здесь?:
https://forum.zdoom.org/viewtopic.php?f=18&t=37177


MyNameIs
Спасибо, но АЦС не использую вообще. Может быть есть другие варианты?
MyNameIs
= Warrant Officer =
Next rank: - 2nd Lieutenant - after 112 points
1178

Doom Rate: 1.98

Posts quality: +380
Ссылка на пост №2732 Отправлено: 26.10.17 18:41:08
YURA_111
вроде можно с помощью Line_SetBlocking сделать, чтобы линия звук не пускала.
через ацс проставить тайминги, чтобы совпадало с дверью и должно получиться
1 1
mars873
= Lance Corporal =
Next rank: - Master Corporal - after 19 points
181

Doom Rate: 1.34

Posts quality: +52
Ссылка на пост №2733 Отправлено: 27.10.17 13:18:28
YURA_111
Не думаю, что есть варианты без скриптов.
1
MyNameIs
= Warrant Officer =
Next rank: - 2nd Lieutenant - after 112 points
1178

Doom Rate: 1.98

Posts quality: +380
Ссылка на пост №2734 Отправлено: 27.10.17 13:48:44
YURA_111
Ну, а принципе можно сделать двухслойную кнопку (если кнопка на стене, поставить у линии активатора pass use (вроде так, не помню точно), чтобы за этой линией можно было бы поставить вторую. Чтобы две линии одновременно срабатывали.
И на второй делаешь очень быстрое открытие/закрытие нормальной двери, которая бы находилась внутри полиобъектной.

А почему кстати не используешь ацс? Раз гоззофичи вроде полиобъектов используешь
1 1
YURA_111
= Sergeant =
Next rank: - Master Sergeant - after 22 points
378

Doom Rate: 2.02

Posts quality: +44
Ссылка на пост №2735 Отправлено: 27.10.17 13:49:14
mars873 :
Не думаю, что есть варианты без скриптов.


Есть - пришлось создать "сектора-паразиты" с "Блок-Соунд".


MyNameIs :
А почему кстати не используешь ацс?


"Out of Synchronization" тебе не о чем не говорит?
Моя модификация Мультиплеерная, а скриптинг на основе АЦС очень часто давал вышеописанный лаг, что ооочень бесило (и по началу было даже не понятно из-за чего это происходило).
Что говорить - возьми АЕОД и запусти в мультиплеере - интересно сколько секунд ты успеешь сыграть без разсинхронизации... Мой мод больше чем АЕОД - и данная хрень вылезает не раньше чем раз в месяц (АЦС у меня тоже есть, но только те от которых избавиться не удалось и связанные непосредственно с двумя Мапами).


ZScript - вот это совсем другое дело, но это такой темный лес для меня, что я даже не пытаюсь понять...
SSV_Victoryan
= Sergeant Major =
Next rank: UAC Sergeant Major after 75 points
605

Doom Rate: 2.27

Posts quality: +137
Ссылка на пост №2736 Отправлено: 27.10.17 14:08:17
Возможно ли сделать срабатывание скрипта только если игрок пересёк линию через её лицевую сторону?

Такой способ НЕ подойдёт:
Скрытый текст:

int mapvar1; script 1 (void) { if (mapvar1 == 0) { thingsound(atid1, "Sound/GlassShatter", 127); } }

2
mars873
= Lance Corporal =
Next rank: - Master Corporal - after 19 points
181

Doom Rate: 1.34

Posts quality: +52
Ссылка на пост №2737 Отправлено: 27.10.17 15:15:47
SSV_Victoryan
Судя по вики, в UDMF есть флаг FIRSTSIDEONLY

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

Doom Rate: 2.27

Posts quality: +137
Ссылка на пост №2738 Отправлено: 27.10.17 15:28:53
mars873 :
Судя по вики, в UDMF есть флаг FIRSTSIDEONLY

Нашёл))) в сладе называется Activate Front Only
А я не замечал и читал всё время Activate From Only =D
Спасибо!
2
N00b2015
- Master Corporal -
Next rank: = Master Corporal = after 24 points
216

Doom Rate: 2.12

Posts quality: +40
Ссылка на пост №2739 Отправлено: 29.10.17 16:25:53
Есть класс, в нём динамический массив. При Push(...) пытается записать в NULL и, естественно, вылетает.
Каким образом (видимо, new("Array<...>")) и, главное, когда выделяется память под эти массивы? Нужно это делать вручную? Тогда как, конструктор же в zscript нельзя определить?
1
ZZYZX
Lieutenant Colonel
Next rank: - Colonel - after 26 pointsМодератор форума
4014

Doom Rate: 1.79

Posts quality: +744
Ссылка на пост №2740 Отправлено: 29.10.17 17:08:39
Массивы НЕ нужно создавать руками. Если он не создаётся, то либо ты не создал объект к которому обращаешься, либо это баг и зарепорть его.
Или возможно ты пытаешься впихнуть невпихуемое, а движок почему-то ничего не написал. Но тогда это тоже баг.
2 2 1
Страница 137 из 140Перейти наверх Пред.  1, 2, 3 ... 136, 137, 138, 139, 140  След.
   Список разделов - Местечко мапперов и моддеров - Тема для новичков. Вопросы по маппингу/моддингу - любые!