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

Doom Rate: 1.93

Posts quality: +47
Ссылка на пост №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
UAC Sergeant Major
Next rank: Chief Petty Officer after 86 points
764

Doom Rate: 1.98

Posts quality: +136
Ссылка на пост №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
- UAC Commissar -
Next rank: = UAC Commissar = after 16 pointsМодератор форума
6284

Doom Rate: 1.65

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

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

Doom Rate: 2.15

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

Doom Rate: 1.65

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

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

Doom Rate: 2.15

Posts quality: +384
Ссылка на пост №2728 Отправлено: 19.10.17 18:01:23
ZZYZX
Спасибо большое.
Поиск выдаёт 1 результат, немудрено, что сам не заметил. Вот пока не будет документации, каждую минуту кто-нибудь не посвящённый во внутренности разработки GZ, вроде меня, будет задавать дурацкие вопросы :)
1 2
YURA_111
UAC Sergeant Major
Next rank: Chief Petty Officer after 86 points
764

Doom Rate: 1.98

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

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

порт GZDOOM - формат UDMF
N00b
Chief Petty Officer
Next rank: Chief Petty Officer after 18 points
922

Doom Rate: 2.15

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

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

Doom Rate: 1.98

Posts quality: +136
Ссылка на пост №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
= 1st Lieutenant =
Next rank: - Captain - after 64 points
2026

Doom Rate: 2.05

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

Doom Rate: 1.77

Posts quality: +118
Ссылка на пост №2733 Отправлено: 27.10.17 13:18:28
YURA_111
Не думаю, что есть варианты без скриптов.
1 1
MyNameIs
= 1st Lieutenant =
Next rank: - Captain - after 64 points
2026

Doom Rate: 2.05

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

А почему кстати не используешь ацс? Раз гоззофичи вроде полиобъектов используешь
1 1 1
YURA_111
UAC Sergeant Major
Next rank: Chief Petty Officer after 86 points
764

Doom Rate: 1.98

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


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


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


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


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

Doom Rate: 2.18

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

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

int mapvar1;

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

2
mars873
- Master Sergeant -
Next rank: = Master Sergeant = after 43 points
417

Doom Rate: 1.77

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

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

Doom Rate: 2.18

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

Нашёл))) в сладе называется Activate Front Only
А я не замечал и читал всё время Activate From Only =D
Спасибо!
2
N00b
Chief Petty Officer
Next rank: Chief Petty Officer after 18 points
922

Doom Rate: 2.15

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

Doom Rate: 1.65

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