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

Doom Rate: 2

Posts quality: +4
Ссылка на пост №341 Отправлено: 30.11.19 00:38:33
Не подскажете, как можно изменить урон от демона/зомбимэна на лету с изменением CVAR'ы, на ZScript'е и не заменяя классы? У меня такое только получилось со скоростью и здоровьем. Просто думаю, что так смогу сохранить максимальную совместимость с другими модами (как раз полностью изменённый void атаки зомбимэна ломал у меня игру в Doom 4 Vanilla, например).
Вот мой код:
Скрытый текст:

extend class UnionDoom_Events
{
	//
	//Demon Damage
	//
	int union_old_demon_damage;
	
	void ApplyDamageToDemon(Actor thing)
	{
		switch(union_demon_damage)
		{
			case 0:
			thing.SetDamage(thing.Default.Damage);
			break;
			
			case 1:
			thing.SetDamage(Random(1, 10) * 4);
			break;
			
			case 2:
			thing.SetDamage(Random(1, 8) * 4);
			break;
		}
	}
	
	void ChangeDemonDamage()
 	{
		let   iterator = ThinkerIterator.Create("Demon");
		Actor a;
		
		while (a = Actor(iterator.Next()))
		{
			ApplyDamageToDemon(a);
		}
	}
}


Первым кейсом устанавливаю дефолтное значение, вдруг кто-то будет переписывать класс и урон. Событие вызываю по проверке изменения CVAR'ы в UiTick(). Знаю о DamageFunction(), но не получается её использовать, так как GZDoom ругается на неизвестную функцию (может thing.DamageFunction() писать неверно, на самом деле, кхех). Пока способа не нашёл. Damage тоже не получалось использовать.
WorldThingSpawned() и WorldThingRevived() тоже использую.
Страница 18 из 18Перейти наверх Пред.  1, 2, 3 ... 16, 17, 18
   Список разделов - Местечко мапперов и моддеров - Тема для новичков. Вопросы по маппингу/моддингу - любые!-2