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

Интерфейс хф + исходники 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

Обратите внимание, что данный пользователь заблокирован! Не совершайте с ним никаких сделок! Перейдите в его профиль, чтобы узнать причину блокировки.
Добрый день, сначала разблокируйте панель чтобы на нее можно было перенести соски. Рядом замочек.


Спасибо большое, получилось.

Помогите вот теперь с такой проблемой, до этого в этой версии патча был вывод урона на экран + было отображение критических ударов, теперь криты перестали отображаться совсем... зато появился новый параметр - Evaded - промах. Подскажите где это можно подкоректировать чтобы были все эти надписи - Resisted - Critical - Evaded помимо цифр самого наносимого урона. Заранее спасибо.

На промах пишет , на крит нет - плюс скринанул
Посмотреть вложение 40823Посмотреть вложение 40824
Ну потому что у тебя 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).
пока как то так :loltt0:
фпсов нет потому что гифка)
 
Moar lag!!
Простенькая подсветка таргета. Не понял как напрямую спавнить прожектор интерфейсом, поэтому спавнил через эффект. Не понял как узнать актор выбранного таргета, поэтому через foreach (GetTargetActor() не работает), мб в свойствах павна или контроллера где-то спрятано. Не понял от какого параметра нормально отскалировать размер прожектрора для каждого таргета (CollisionRadius, GetRenderBoundingSphere очень рандомные, поэтому пока остановился на DamageEffectOffset).
Ну как то так :pandaredlol:

Посмотреть вложение 45230

Впринципе можно кастомизировать как захочется
На лаги не тестил)
Спарсить радиус с скриптов птс ретейла в отдельный файл. )))))) А там только ваша фантазия куда вы их запихнете.
 
Спарсить радиус с скриптов птс ретейла в отдельный файл. )))))) А там только ваша фантазия куда вы их запихнете.
То есть если оттуда использовать радиус все будет как на оффе?) скиньте ктото файлик)
 
То есть если оттуда использовать радиус все будет как на оффе?) скиньте ктото файлик)
Просто это самое простое, где более менее самые точные данные по радиусу. Параметр collision_radius, возможно ещё пригодится для каких то целей collision_height. Все же это самые приближенные данные к тем что можно найти под HF.
 

Вложения

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

Вложения

  • Снимок.JPG
    Снимок.JPG
    174,3 КБ · Просмотры: 112
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 (он при трансформации при взятом таргете остается на земле :pandaredlol: )
 
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 (он при трансформации при взятом таргете остается на земле :pandaredlol: )
О спасибо просто я не знал как ты уничтожаешь емиторы вот, что мне нужно было!

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
Вообще старайся None'ить все глобальные эмиттеры и тд, а то на релогах и тепортах могут лететь криты (как я понял из-за сборщика мусора)
Я вчера только сел разбираться с этим вопросом можно сказать ничего не понимаю в эффектах)
 
Код:
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 слепили, он даже с сервер сайда умудрися присабачить, может поделится видео своих стресс тестов)
 
Назад
Сверху Снизу