• Новые темы в этом разделе публикуются автоматически при добавлении файла в менеджер ресурсов.
    Ручное создание новых тем невозможно.
Иконка ресурса

Интерфейс хф + исходники 0.638

Нет прав для скачивания
C#:
function SpawnTargetEffect()
{
    local UserInfo    info;
    local Actor PlayerActor;
    local Pawn P;
    
    PlayerActor = GetPlayerActor();
    GetUserInfo(m_TargetID, info);
    foreach PlayerActor.CollidingActors(class'Pawn', P, 100, info.Loc)
    {
        if (m_TargetID == P.CreatureID && m_TargetID > 0)
        {
            if (P.CurRideType != 0 && P.RidePawn.Name == '')     // is rider so skip
            continue;
            
            targetEmitter = P.Spawn(TargetEmitterClass, P, , P.Location, P.Rotation);
            targetEmitter.SetBase(P);
            targetEmitter.Emitters[0].Disabled = true;
            targetEmitter.Emitters[0].Texture = targetTexture;
            targetEmitter.Emitters[0].StartLocationOffset.Z = P.DamageEffectOffset;
            
            return;
        }
    }
}
 
Реакции: Rolo
Обратите внимание, что данный пользователь заблокирован! Не совершайте с ним никаких сделок! Перейдите в его профиль, чтобы узнать причину блокировки.
Ну потому что у тебя sysmsg не соответствуют тому что прописано в скрипте дамага.
 
Там вот только это-вот, на 126 строке:
Код:
Выпилить нахер тестовый вариант:
    targetEmitterClass = class<Emitter>(DynamicLoadObject("TestEffect.TestEffect", class'Class'));

Впилить с гордым взглядом и чувством того что вы сейчас будете вертеть свои таргеты по всякому
    targetEmitterClass = class<Emitter>(DynamicLoadObject("MonIcaTargetEffect.Target", class'Class'));
 
Реакции: Monokini2

    Monokini2

    Баллов: 6
    3 патча первого дня это норма!
Попытался через эффект присабачить дамаг на экране ради интереса по сингл тaргету, есть вопрос можно ли как то на лету менять x,y,z координаты спрайтэмитера в Emitters кроме тех что задаются при создании (StartLocationOffset).
пока как то так
фпсов нет потому что гифка)
 
Спарсить радиус с скриптов птс ретейла в отдельный файл. )))))) А там только ваша фантазия куда вы их запихнете.
 
То есть если оттуда использовать радиус все будет как на оффе?) скиньте ктото файлик)
 
Просто это самое простое, где более менее самые точные данные по радиусу. Параметр collision_radius, возможно ещё пригодится для каких то целей collision_height. Все же это самые приближенные данные к тем что можно найти под HF.
 

Вложения

  • npcdata.rar
    742,5 КБ · Просмотры: 13
Привет у меня возник вопрос, как удалять динамический созданный объект?
Просто у меня они весят)
 

Вложения

  • Снимок.JPG
    174,3 КБ · Просмотры: 134
BIT_hack, просто я клепал этот ужас на сервере, где при смене таргета между 2х нпц порядок приходящих ид (id1-0-id2), а у тебя просто id1-id2.

попробуй так function HandleTargetUpdate(optional bool spawnTarget) изменить
C++:
    TargetID = class'UIDATA_TARGET'.static.GetTargetID();
    if (TargetID < 1)
    {
        if (contextOwner && wnd_contextMenu.isShowWindow())
        {
            wnd_contextMenu.HideWindow();
        }
      
        if (m_TargetID != targetID)
        {
            if (targetEmitter != None)
            {
                targetEmitter.NDestroy();
                targetEmitter=None;
            }
            m_TargetID = targetID;
        }
        Me.HideWindow();
        return;
    }

    if (m_TargetID != TargetID)
    {
        if (contextOwner && wnd_contextMenu.isShowWindow())
        {
            wnd_contextMenu.HideWindow();
        }
      
        if (targetEmitter != None && m_TargetID > 0) // when switching target between 2 npc exist 2 types of incoming npcId (depends of server?): npc1id->npc2id and npc1id->0->npc2id
        {
            targetEmitter.NDestroy();
            targetEmitter=None;
        }
    }
    else
    {
        return;
    }

Сам пофикшенный эффект попозже тоже обновлю, в этом нет проверок павна на bPendingDelete и bDeleteMe (он при трансформации при взятом таргете остается на земле )
 
О спасибо просто я не знал как ты уничтожаешь емиторы вот, что мне нужно было!

targetEmitter.NDestroy();
targetEmitter=None;


Я свой скрипт писал)
C++:
/******************************************

    Разработчик: BITHACK

    Copyright (c) 1995,2022 Ваша компания

    Описание скрипта:....

 *******************************************/
class BIT_Interface extends UICommonAPI ;

    #exec Texture Import File=Textures/fx_m_t7188.dds Name=Target Mips=Off MASKED=1

  var class<Emitter> targetEmitterClass;
  var Emitter targetEmitter;

function OnRegisterEvent(){ /* Регистрация игровых событий */

    RegisterEvent( EV_TargetUpdate );
  }

function OnEvent(int Event_ID, string param) { /* Обработчик игровых событий */

  switch( Event_ID ){
    case EV_TargetUpdate:
    SpawnTargetEffect();
      break;
  }
  }

function OnLoad() {
    targetEmitterClass = class<Emitter>(DynamicLoadObject("MyU.BIT_Target", class'Class'));
  }

function SpawnTargetEffect()
{
     local UserInfo info;
     local Actor PlayerActor;
     local Pawn P;
     local int TargetID;

    targetEmitter.NDestroy();
    targetEmitter=None;

    PlayerActor = GetPlayerActor();

    TargetID = class'UIDATA_TARGET'.static.GetTargetID();

    GetUserInfo(TargetID, info);

 foreach PlayerActor.CollidingActors(class'Pawn', P, 100, info.Loc)
{
   if (TargetID == P.CreatureID && TargetID > 0)
{
   if (P.CurRideType != 0 && P.RidePawn.Name == '') // is rider so skip
    continue;

    targetEmitter = P.Spawn(TargetEmitterClass, P, , P.Location, P.Rotation);
    targetEmitter.SetBase(P);
    targetEmitter.Emitters[0].Disabled = true;
    targetEmitter.Emitters[0].Texture = Texture'Target';
    targetEmitter.Emitters[0].StartLocationOffset.Z = P.DamageEffectOffset;

    return;
  }

  }
  }

    defaultproperties{}
 
Реакции: kick
Вообще старайся None'ить все глобальные эмиттеры и тд, а то на релогах и тепортах могут лететь криты (как я понял из-за сборщика мусора)
 
Реакции: kick
Я вчера только сел разбираться с этим вопросом можно сказать ничего не понимаю в эффектах)
 
Код:
targetEmitter.Emitters[0].StartLocationOffset.Z = P.DamageEffectOffset;
тут я передавал параметр для скалирования размера, но как оказалосьP.DamageEffectOffset везде одинаковый лучше плясать от P.CollisionRadius

Ну я просто рассказываю о своих граблях)
 
Я вот не могу понять в defaultproperties задаются параметры и только с ними он может работать больше нет доступа к ним?
C++:
    defaultproperties{
// SomeTexture= Texture'BIT_Target.MonIcaTargetTextures.fx_m_t7152'
    Begin Object class=SpriteEmitter name=SpriteEmitter0
    ColorScale=
    MaxParticles=1
    Disabled=true
    StartLocationOffset=(X=0,Y=0,Z=48)
    StartLocationRange=(X=(Min=0,Max=0),Y=(Min=0,Max=0),Z=(Min=9.8791,Max=9.8791))
    UseRotationFrom=2
    SpinParticles=true
    UseRegularSizeScale=false
    UniformSize=true
    SizeScale=
    StartSizeRange=(X=(Min=4.18176,Max=4.18176),Y=(Min=4.18176,Max=4.18176),Z=(Min=4.18176,Max=4.18176))
    InitialParticlesPerSecond=10000
automaticInitialSpawning=false
    DrawStyle=1
    Texture=none
    LifetimeRange=(Min=1,Max=1)
    StartVelocityRange=(X=(Min=0,Max=0),Y=(Min=0,Max=0),Z=(Min=0.005123,Max=0.005123))
    Name="SpriteEmitter0"
    End Object
    Emitters(0)=SpriteEmitter0
    bLightChanged=true
    bNoDelete=false
    bSunAffect=true
    Rotation=(Pitch=-16400,Yaw=0,Roll=0)
    DrawScale=0.5
  }

А не все понял с ними можно работать с динамически созданным объектом!
 
BIT_hack, часть ты можешь менять наживую, часть только сразу после спавна эффекта и часть только из defaultproperties (dczrbt acceleration) но могу ошибаться

А не все понял с ними можно работать с динамически созданным объектом!
а ну так то да, но имеено в эффектах надо смотреть что можно поменять)
 
вот например пытался дамаг сделать, динамически меняю текстуры и их размер вз ависимости от удаления камеры, но отступ по Z изменить не могу налету

это мы с Rolo слепили, он даже с сервер сайда умудрися присабачить, может поделится видео своих стресс тестов)