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

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

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

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

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

Партиклы от игрока

Сделал партиклы на основе дейзовских от игрока (кровотечения, рвоты) :
 

void CreateParticlePtc()
	{
		if (!GetGame().IsServer())
		{
		ref ptc1 m_puddle;
		Particle m_ptc1Particle;
		vector bodypos = dBodyGetCenterOfMass(this);	
        vector pos;
        pos[1] = GetGame().SurfaceY(pos[0], pos[2]);
        vector ori = GetGame().GetSurfaceOrientation(pos[0], pos[2]);
        m_ptc1 = new ptc1();
        SEffectManager.PlayInWorld( m_ptc1, bodypos);
        m_ptc1Particle = m_ptc1.GetParticle();
        
        m_ptc1.GetParticle().AddAsChild(this, bodypos, ori);
	    }
	}

class ptc1 : EffectParticle
{
	void ptc1()
	{
		SetParticleID(ParticleList.ptc1PTC);
	}
}

Но никак не могу  вызвать их работу, пробывал void OnScheduledTick(float deltaTime) в PlayerBase
Работает только чистый вызов(CreateParticlePtc), если добавлять проверку то функция так же работает, однако создание партиклов не происходит. Есть у кого идеи?

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


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

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

  • 0

Дополнение : если функция CreateParticlePtc не активирована при старте сразу, то активировать ее потом не получается через функции в deltaTime. Однако получается вызвать с помощью триггера например CheckDeath.
Можно вызвать создание партикла через симптом на подобие Vomit. Однако вообще не понятно что именно является функцией отвечающей за создание партикла :
**оригинальный симптом дейза**

class VomitSymptom extends SymptomBase
 {
  //just for the Symptom parameters set-up and gets called even if the Symptom doesn't execute, don't put any gameplay code in here
  override void OnInit()
  {
  m_SymptomType = SymptomTypes.PRIMARY;
  m_Priority = 100;
  m_ID = SymptomIDs.SYMPTOM_VOMIT;
  m_DestroyOnAnimFinish = true;
  m_SyncToClient = false;
  m_Duration = 5;
  }
  
  override void OnUpdateServer(PlayerBase player, float deltatime)
  {
  
  }
  
  override void OnUpdateClient(PlayerBase player, float deltatime)
  {
  
  }
  
  override void OnAnimationStart()
  {
  m_Player.GetStatToxicity().Set(0);
  m_Player.m_PlayerStomach.ClearContents();
  //Print("------------ vomit start -------------");
  }
  
  override void OnAnimationFinish()
  {
  m_Player.GetStaminaHandler().DepleteStamina(EStaminaModifiers.OVERALL_DRAIN);
  }
  
  override bool CanActivate()
  {
  return ( m_Manager.GetCurrentCommandID() == DayZPlayerConstants.COMMANDID_MOVE || m_Manager.GetCurrentCommandID() == DayZPlayerConstants.COMMANDID_ACTION );
  } 
  
  override void OnGetActivatedServer(PlayerBase player)
  {
  PlayAnimationFB(DayZPlayerConstants.CMD_ACTIONFB_VOMIT,DayZPlayerConstants.STANCEMASK_CROUCH, GetDuration() );
  //timer.Run(10, this, "Destroy");
  if (LogManager.IsSymptomLogEnable()) Debug.SymptomLog("n/a", this.ToString(), "n/a", "OnGetActivated");
  }
  
  override void OnGetDeactivatedServer(PlayerBase player)
  {
  if (LogManager.IsSymptomLogEnable()) Debug.SymptomLog("n/a", this.ToString(), "n/a", "OnGetDeactivated");
  }
  
  override void OnGetDeactivatedClient(PlayerBase player)
  {
  if (LogManager.IsSymptomLogEnable()) Debug.SymptomLog("n/a", this.ToString(), "n/a", "OnGetDeactivated");
  }
  
  override SmptAnimMetaBase SpawnAnimMetaObject()
  {
  return new SmptAnimMetaFB();
  }
 }

**сам партикл рвоты**

class EffVomit : EffectParticle
 {
  void EffVomit()
  {
  SetParticleID(ParticleList.VOMIT);
 // SetSoundName("Action_Vomitting_0");
  }
  
  
  override void Event_OnStarted()
  {
  // Uncomment this to spawn fake decal of vomit on ground.
  /*
  vector pos = m_Character.GetPosition();
  vector ori = m_Character.GetOrientation();
  
  Particle p = Particle.Play(ParticleList.VOMIT_CHUNKS, pos);
  p.SetOrientation(ori);
  */
  }
 }

 

Изменено пользователем NoyName (история изменений)

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


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





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

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

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

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

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

Войти

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

Войти сейчас

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

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

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