Перейти к публикации
Поиск в
  • Дополнительно...
Искать результаты, содержащие...
Искать результаты в...
  • Нужна помощь?

    Создайте тему в соответствующем разделе
    Не нужно писать всё в чат!
  • Загляните на торговую площадку

    Там вы можете купить
    всё что касается игровых серверов
  • Не хотите бан?

    Пожалуйста, ознакомьтесь с нашими правилами
    Не нарушайте порядок!
  • Продаёте или покупаете?

    Пользуйтесь услугами гаранта
    Мы сделаем вашу сделку безопасной
  • 0
222Orbita

Серверостроение – Float Scale

Доброго времени суток! Ребят, подскажите, пожалуйста, каким способом можно изменить размер какой-либо модели в игре? Например, у меня есть модель цыплёнка, в скрипте у него прописано float scale = 0.35; и он бегает маленький, как и положено цыплёнку, но когда его убиваешь, то тушка становится снова большой, размером с курицу. Все скрипты по добавлению трупика цыплёнка я прописал и они отлично работают, но одна загвоздка – размер. Нужно что бы размер трупика соответствовал живому цыплёнку. Вот конфиг и скрипты:

class cfgVehicles
{
	class AnimalBase;
	class Animal_GallusGallusDomesticusF: AnimalBase{};
	class Animal_GallusGallusDomesticusF_baby: Animal_GallusGallusDomesticusF
	{
		scope=2;
		hiddenSelectionsTextures[]=
		{
			"dz\animals\gallus_gallus_domesticus_feminam\data\hen_white_co.paa"
		};
	};
	class babychicken: Animal_GallusGallusDomesticusF_baby
	{
		displayName="Цыплёнок";
	};
	class Edible_Base;
	class DeadChicken_ColorBase: Edible_Base{};
	class DeadChicken_baby: DeadChicken_ColorBase
	{
		scope=2;
		displayName="Мертвый цыплёнок";
		descriptionShort="Мертвый цыплёнок.";
		model="\dz\gear\food\gallus_gallus_female_dead.p3d";
		hiddenSelectionsTextures[]=
		{
			"dz\animals\gallus_gallus_domesticus_feminam\data\hen_white_co.paa"
		};
	};
};

Размер живого цыплёнка:

class babychicken: Animal_GallusGallusDomesticusF_baby{  };

modded class babychicken
{
    void babychicken()
    {
        SetEventMask(EntityEvent.POSTFRAME);
    }
        
    override void EOnPostFrame(IEntity other, int extra)
    {
        float scale = 0.35;
        vector transform[4];
        GetTransform(transform);
        
        transform[0] = transform[0] * scale;
        transform[1] = transform[1] * scale;
        transform[2] = transform[2] * scale;
        
        SetTransform(transform);
        Update();
    }

    override void EOnFrame(IEntity other, float timeSlice) // | EntityEvent.FRAME
    {
        vector rotation = GetYawPitchRoll();
        SetYawPitchRoll(Vector(rotation[0], 0, 0));
    }
}

Добавление принадлежности трупика к взаимодействиям:

modded class DeadChicken_ColorBase extends Edible_Base
{
	override bool CanBeCookedOnStick()
	{
		return false;
	}

	override bool CanBeCooked()
	{
		return false;
	}	
	
	override bool IsCorpse()
	{
		return true;
	}

	override bool CanDecay()
	{
		return true;
	}
	
	override bool CanBeSkinned()
	{
		if ( GetHealthLevel() == GameConstants.STATE_RUINED )
			return false;

		return true;
	}
}

modded class DeadRooster extends DeadChicken_ColorBase {}
modded class DeadChicken_White extends DeadChicken_ColorBase {}
modded class DeadChicken_Spotted extends DeadChicken_ColorBase {}
modded class DeadChicken_Brown extends DeadChicken_ColorBase {}
modded class DeadChicken_baby extends DeadChicken_ColorBase {}

Создание трупика после убийства цыплёнка:

modded class AnimalBase extends DayZAnimal
{
	protected ref ArrowManagerBase m_ArrowManager;
	
	void AnimalBase()
	{
		m_ArrowManager = new ArrowManagerBase(this);
	}
	
	override ArrowManagerBase GetArrowManager()
	{
		return m_ArrowManager;
	}
	
	override bool IsRefresherSignalingViable()
	{
		return false;
	}
}

class Animal_GallusGallusDomesticusF_baby extends Animal_GallusGallusDomesticusF
{
	override string GetDeadItemName()
	{
		return "DeadChicken_baby";
	}
}

И, наконец, сам размер трупика:

class DeadChicken_baby: DeadChicken_ColorBase{  };

modded class DeadChicken_baby
{
    void DeadChicken_baby()
    {
        SetEventMask(EntityEvent.POSTFRAME);
    }
        
    override void EOnPostFrame(IEntity other, int extra)
    {
        float scale = 0.35;
        vector transform[4];
        GetTransform(transform);
        
        transform[0] = transform[0] * scale;
        transform[1] = transform[1] * scale;
        transform[2] = transform[2] * scale;
        
        SetTransform(transform);
        Update();
    }

    override void EOnFrame(IEntity other, float timeSlice) // | EntityEvent.FRAME
    {
        vector rotation = GetYawPitchRoll();
        SetYawPitchRoll(Vector(rotation[0], 0, 0));
    }
}

Но почему-то не работает размерчик, не понимаю почему. Подскажите, пожалуйста, где я ошибся? Спасибо!

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Рекомендованные сообщения

Нет ответов на вопрос

Создайте аккаунт или войдите в него для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас

×
×
  • Создать...

Важная информация

Используя этот сайт, вы автоматически обязуетесь соблюдать наши Правила и Политика конфиденциальности.
Чтобы сделать этот веб-сайт лучше, мы разместили cookies на вашем устройстве. Вы можете изменить свои настройки cookies, в противном случае мы будем считать, что вы согласны с этим.

Поддержка