Welcome to U.A.C.
login / register 
Status: Guest
Архивы форума | iddqd.ru
Wolf 3D
ПравилаПравила ПоискПоиск
18+
Отсутствует A_SpawnParticleEx для EventHandler ZSCRIPT
   Список разделов - Местечко мапперов и моддеров - Отсутствует A_SpawnParticleEx для EventHandler ZSCRIPTОтветить
АвторСообщение
qwe8013
= Lance Corporal =
Next rank: - Master Corporal - after 30 points
170

Doom Rate: 1.91

Posts quality: +54
Ссылка на пост №1 Отправлено: 01.05.26 01:14:29
Приветствую всех!
Пишу на ZSCRIPT под UZDoom
Вопрос по функции A_SpawnParticleEx. Когда я её вызываю из метода "Tick" у некоторого Actor-а, то всё нормально работает. Но вот я вызываю из EventHandler-а, то при запуске игры вижу ошибку "Call to unknown function 'A_SpawnParticleEx' ". Это связано с тем, что из EventHandler-а нельзя вызывать эту функцию, или у меня кривые руки? Вообще, можно ли спавнить частицы из EventHandler-ов?

Код под спойлером.
Скрытый текст:


const DROPS_PER_SQUARE = 10.0;
const NUM_PARTS = 1;
const RAINDROP_VEL = 4.0;

class RainHandler : EventHandler 
{
	TextureID raindrop_tex;
	static const double left_top_x[] =
	{
		632.0
	};
	
	static const double left_top_y[] =
	{
		-504.0
	};
	
	static const double right_bottom_x[] =
	{
		760.0
	};
	
	static const double right_bottom_y[] =
	{
		-632.0
	};
	
	static const double spawn_height[] =
	{
		64.0
	};
	
	static const double destroy_height[] =
	{
		0.0
	};
	
	override void WorldLoaded (WorldEvent e) 
	{
		self.raindrop_tex = TexMan.CheckForTexture("RAINDROP");
	}
	
    override void WorldTick()
	{
		for (uint i = 0; i < NUM_PARTS; i++)
		{
			double x_size = right_bottom_x[i] - left_top_x[i];
			double y_size = left_top_y[i] - right_bottom_y[i];
			
			double square = x_size*y_size;
			
			uint num_drops = uint(square*DROPS_PER_SQUARE);
			
			double spawn_z = spawn_height[i];
			double destroy_z = destroy_height[i];
			
			for (uint drop_index = 0; drop_index < num_drops; drop_index++)
			{
				double x_coord = frandom(left_top_x[i], right_bottom_x[i]);
				double y_coord = frandom(left_top_y[i], right_bottom_y[i]);
				
				double delta_z = spawn_z - destroy_z;
				double lifetime = (delta_z/RAINDROP_VEL)*TICRATE;
				
				A_SpawnParticleEx(
					"",
					self.raindrop_tex,
					flags: SPF_FULLBRIGHT|SPF_RELATIVE,
					lifetime: lifetime,
					size: 10,
					xoff: x_coord,
					yoff: y_coord,
					zoff: spawn_z,
					velz: RAINDROP_VEL,
					fadestepf: 0.0
				);
			}
		}
	}
}

AleksV
Marine
Next rank: Marine 1st class after 6 points
24

Doom Rate: 2

Posts quality: +6
Ссылка на пост №2 Отправлено: 01.05.26 14:02:44
A_SpawnParticleEx это функция Actor-а. EventHandler про неё не знает. Попробуй использовать Level.SpawnParticle.

Рейтинг сообщения: +1, отметил(и): qwe8013
qwe8013
= Lance Corporal =
Next rank: - Master Corporal - after 30 points
170

Doom Rate: 1.91

Posts quality: +54
Ссылка на пост №3 Отправлено: 02.05.26 00:28:25
AleksV
Да, спасибо, заработало.
Страница 1 из 1Перейти наверх
   Список разделов - Местечко мапперов и моддеров - Отсутствует A_SpawnParticleEx для EventHandler ZSCRIPT