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

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

Нет прав для скачивания
текст это и есть текстуры)
 
За месяц уже забыл просто, по хорошему тоже доделать и выложить надо. Там эффект в эффекте, в первый передаем длину и текстуры, и в нем уже спавним отдельные эффекты с числами и крепим друг к дружке вроде
 
Ок спасибо попробую разобраться!
 

Вот исправил код может пригодится тебе, а может еще кому)


Скрипт загрузчики эффекта (нужно подключить этот скрипт к вашему окну xdat)
C++:
/******************************************

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

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

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

 *******************************************/
class BIT_LoadTargetEffect extends UICommonAPI;

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

  var Emitter MyEmitter;

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

    RegisterEvent( EV_TargetUpdate );
  }

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

   if ( Event_ID == EV_TargetUpdate)
    SpawnTargetEffect();
  }

function SpawnTargetEffect()
{
     local UserInfo info;
     local Actor MyActor;

   if(MyEmitter != None) {
    MyEmitter.NDestroy();
    MyEmitter = None;
  }
    MyActor = class'UIDATA_TARGET'.static.GetTargetActor();
    GetUserInfo(class'UIDATA_TARGET'.static.GetTargetID(), info);

    MyEmitter = Pawn(MyActor).Spawn(class'BIT_TargetEffect', Pawn(MyActor), , info.Loc, rot(0,0,0));
    MyEmitter.SetBase(Pawn(MyActor));
    MyEmitter.Emitters[0].Disabled = true;
    MyEmitter.Emitters[0].Texture = Texture'Target';//Текстру также можно взять из своего пака UTX
  }

    defaultproperties{}

Настройки эффекта
C++:
/******************************************

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

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

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

 *******************************************/
class BIT_TargetEffect extends Emitter;
  var Texture ProjectorTexture;
  var DynamicProjector TestDynamicProjector;

function PostBeginPlay(){
    Super.PostNetBeginPlay();
    TestDynamicProjector = Spawn(class'DynamicProjector', Instigator, , , Rotation);
    TestDynamicProjector.FrameBufferBlendingOp = PB_AlphaBlend;
    TestDynamicProjector.MaterialBlendingOp = PB_None;
    TestDynamicProjector.SetDrawScale(Emitters[0].StartLocationOffset.Z/600);
    TestDynamicProjector.bDynamicAttach = true;
    TestDynamicProjector.bClipBSP = true;
    TestDynamicProjector.bClipStaticMesh = true;
    TestDynamicProjector.bProjectTerrain = true;
    TestDynamicProjector.bProjectActor = true;
    TestDynamicProjector.bProjectBSP = true;
    TestDynamicProjector.bProjectOnUnlit = true;
    TestDynamicProjector.bLevelStatic = true;
    TestDynamicProjector.FOV = 1;
    TestDynamicProjector.MaxTraceDistance = 1000;
    TestDynamicProjector.bGradient = false;
    TestDynamicProjector.bSunAffect = false;
    SetTimer(0.05, false);
  }

function Tick(float deltatime){
     local rotator projectorRotation;

    projectorRotation.Pitch = -16400;
    projectorRotation.roll = 0;
    projectorRotation.Yaw = TestDynamicProjector.Rotation.Yaw + 50;
    super.Tick(deltatime);
    TestDynamicProjector.DetachProjector();
    TestDynamicProjector.SetLocation(Instigator.Location);
    TestDynamicProjector.SetRotation(projectorRotation);
    TestDynamicProjector.AttachProjector();
  }

function Timer(){
   if (TestDynamicProjector.ProjTexture.Name == 'None')
{
    Emitters[0].Texture.UClampMode = TC_Clamp;
    Emitters[0].Texture.VClampMode = TC_Clamp;
    Emitters[0].Texture.bAlphaTexture = true;
    TestDynamicProjector.ProjTexture = Emitters[0].Texture;
  }
  }

event Destroyed(){
    Level.ObjectPool.FreeObject(TestDynamicProjector.ProjTexture);
    TestDynamicProjector.ProjTexture = None;
    TestDynamicProjector.NDestroy();
    Super.Destroyed();
  }

defaultproperties{
    Begin Object class=SpriteEmitter name=SpriteEmitter0
    StartLocationOffset = (X=0,Y=0,Z=70)
    Name="SpriteEmitter0"
    End Object
    Emitters(0)=SpriteEmitter0
    bLightChanged=true
    bNoDelete=false
    bSunAffect=true

  }

Также можете скачать папку с исходниками!

Если я правильно тебя понял, тебе не удалось управлять размером картинки из своего скрипта? Если да то сделай так:
C++:
из функции function PostBeginPlay()   
Перенеси TestDynamicProjector.SetDrawScale(Emitters[0].StartLocationOffset.Z/600); 
В функцию function Tick(float deltatime)
    
После можешь управлять размером картинки из своей функции
targetEmitter..Emitters[0].StartLocationOffset.Z = 500;
 

Вложения

  • Interface.zip
    47,8 КБ · Просмотры: 44
BIT_hack, Да нет, с этим все ок, просто тогда я искал от чего скалировать размер текстуры выбрал сам параметр DamageEffectOffset а как оказалось он бесполезный и всегда равен 0)
 
Все больше не буду мучать твой код)) Почистил и добавил авто размер картинки по размеру моба)


Скрипт который нужно подключить к вашему окну xdat
C++:
/******************************************

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

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

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

 *******************************************/
class BIT_LoadTargetEffect extends UICommonAPI;

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

  var Emitter MyEmitter;

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

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

function SpawnTargetEffect(){
     local UserInfo info;
     local Actor MyActor;

   if(MyEmitter != None) {
    MyEmitter.NDestroy();
    MyEmitter = None;
  }
    MyActor = class'UIDATA_TARGET'.static.GetTargetActor();
    GetUserInfo(class'UIDATA_TARGET'.static.GetTargetID(), info);
    MyEmitter = Pawn(MyActor).Spawn(class'BIT_TargetEffect', Pawn(MyActor), , info.Loc, rot(0,0,0));
    MyEmitter.SetBase(Pawn(MyActor));
    MyEmitter.Emitters[0].Disabled = true;
    MyEmitter.Emitters[0].StartLocationOffset.Z = Pawn(MyActor).CollisionRadius*10; //Задается размер картинки CollisionRadius*10
    MyEmitter.Emitters[0].Texture = Texture'Target'; //Текстру можно взять и из своего UTX
  }

    defaultproperties{}

Вспомогательный скрипт с настройками:
C++:
/******************************************

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

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

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

 *******************************************/
class BIT_TargetEffect extends Emitter;
  var Texture ProjectorTexture;
  var DynamicProjector TestDynamicProjector;

function PostBeginPlay(){
    Super.PostNetBeginPlay();
    TestDynamicProjector = Spawn(class'DynamicProjector', , , , Rotation);
    TestDynamicProjector.FrameBufferBlendingOp = PB_AlphaBlend;
    TestDynamicProjector.MaterialBlendingOp = PB_None;
    TestDynamicProjector.FOV = 1;
    SetTimer(0.05, false);
  }

function Tick(float deltatime){
     local rotator projectorRotation;
    TestDynamicProjector.SetDrawScale(Emitters[0].StartLocationOffset.Z/600);
    projectorRotation.Pitch = -16400;
    projectorRotation.roll = 0;
    projectorRotation.Yaw = TestDynamicProjector.Rotation.Yaw + 50;
    super.Tick(deltatime);
    TestDynamicProjector.DetachProjector();
    TestDynamicProjector.SetLocation(Location);
    TestDynamicProjector.SetRotation(projectorRotation);
    TestDynamicProjector.AttachProjector();
  }

function Timer(){
   if (TestDynamicProjector.ProjTexture.Name == 'None'){
    Emitters[0].Texture.UClampMode = TC_Clamp;
    Emitters[0].Texture.VClampMode = TC_Clamp;
    Emitters[0].Texture.bAlphaTexture = true;
    TestDynamicProjector.ProjTexture = Emitters[0].Texture;
  }
  }

event Destroyed(){
    Level.ObjectPool.FreeObject(TestDynamicProjector.ProjTexture);
    TestDynamicProjector.ProjTexture = None;
    TestDynamicProjector.NDestroy();
    Super.Destroyed();
  }

    defaultproperties{
    Begin Object class=SpriteEmitter name=SpriteEmitter0
    StartLocationOffset = (X=0,Y=0,Z=70)
    Name="SpriteEmitter0"
    End Object
    Emitters(0)=SpriteEmitter0
    bLightChanged=true
    bNoDelete=false
  }

Также прикрепил исходники
 

Вложения

  • Interface.zip
    47,8 КБ · Просмотры: 59
там еще насколько помню Event_ID == EV_TargetUpdate срабатывает не только когда ты новый таргет берешь, но и другие игроки)
 
Ок поменял на RegisterEvent( EV_ReceiveTargetLevelDiff ); теперь только свой таргет походу за это отвечает
 
Ну так покекать, дамаг на эффекте)
спавнит на павне в таргете весь исходящий дамаг из EV_SystemMessage, но вроде можно прикрутить с сервера
Из минусов - дамаг на эффектах с текстурой , 9 знаков, при быстрых зумах проблема с высотой, при сильном отдалении скрывается движковым туманом? (disablefogging что-то неработает), ну и модификаторы скалирования и отступов текстур подбирал на глазок, надо геометрию почитать)).
Вообще еще хочется попробовать спроецировать эффект на сферу вокруг playercontrollera и уже ее вращать, по идее решит проблему с высотой и видимостью на расстоянии, но надо додумать
 

Вложения

  • MonIca_DamageEffect.rar
    23 КБ · Просмотры: 27
а что произойдёт, если ударить 50 нпц одновременно?
 
так я там чет перемудрил когда удалял из черновика, щас посмотрю почему не спавнит интерфейсом
но сам эффект был рабочий)

а что произойдёт, если ударить 50 нпц одновременно?
Это точно к Rolo, он там на пике x10 эффекты на каждый удар спавнил для теста)
 
О спасибо! Интересно буду разбираться)!
 
Вообщем загрузка массива текстур в тестовом классе в OnLoad почему то фейлится, а в черновом в OnLoad все норм грузится без понятия почему

если переставить в функцию спавна то покажет урон

C++:
    for (idx=0; idx<10; idx++)
    {
        DamageTextures[idx] = Texture(DynamicLoadObject("MonIca_DamageEffect_Tex.0"$idx, class'Texture'));
    }
    DamageTextures[10] = Texture(DynamicLoadObject("MonIca_DamageEffect_Tex.blocked", class'Texture'));
    DamageTextures[11] = Texture(DynamicLoadObject("MonIca_DamageEffect_Tex.evaded", class'Texture'));
    DamageTextures[12] = Texture(DynamicLoadObject("MonIca_DamageEffect_Tex.resisted", class'Texture'));

update: вообщем судя по всему массив у меня не заполнялся потому что я в xdat тестовому окну размеры любые не проставил
 
Sup is it possible you guys drop here the .uc files from MonIca_DamageEffect.u?
 
Может кто-нибудь подсказать где найти этих ребят в большем разрешении? Вроде все utx просмотрел

 

Вложения

  • Снимок.JPG
    292,6 КБ · Просмотры: 97
  • l2Tool Java 8.20.zip
    870,5 КБ · Просмотры: 20
BIT_hack, да эти я нашел, думал большие где есть
 
BIT_hack, да эти я нашел, думал большие где есть
Если нужно в игре как элемент интерфейса - сильвупле изучать split9 у текстур или на худой конец uv внутри элемента.

Если нужно куда то ещё - то есть фотошоп, при использовании которого - эту условную 64х64 можно успешно раскукожить до ~256x256 (не без мучений с ручной правкой, конечно же, ибо как пить дать уплывут как минимум цвета).

//Можно ещё попробовать воспользоваться нейросетевыми онлайн раскукоживателями - они тоже вроде имеют смысл, с относительно статичными картинками, без большого числа деталей.