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

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

Нет прав для скачивания
Rolo держи апдейт, брат ! ;)
 

Вложения

  • holiday_special.rar
    1,8 КБ · Просмотры: 101
  • Ха-ха-ха
Реакции: Rolo

Monokini2 обновил(а) ресурс Интерфейс хф + исходники новой записью:

продолжаем натягивать сову

Не доделан!
Вообще планировалось просто окно настроек переделать на новый лад, в итоге недоделал первую страницу и повернул не туда :pandaredlol:
Шапки и боковые фреймы сделаны через натягивание своих снизу обесцвеченных стандартных (шапки пока не обесцвечивал), вроде сделал переключение основных окон между 4,25 стилями (хф, хф с баром, ессенс, асассины и то что на нашем мейне)
Примерно тестилось на рпгклабе и л2-аге. Минимайз костыльный, про дизан сайдбара промолчим) Выложил больше для...

Узнать больше об этом обновлении...
 
1682109116738.png

Изменение размера инвентаря как то так.
Я инвентарь не делал, просто приклеил шапку и минимайз попробовал свой сделать. просто перерисуй из настроек стилей заново пока
 
  • Мне нравится
Реакции: Deom
Багрепорт надо?)
1) Создание нового чара порождает несколько фейк-чаров. После релога, все ок.
1682170598340.png
2) Урон отлетает от той цели, которая в таргете, а не по которой идет атака непосредственно
1682170750602.png
3) При фейле АТТ, умирают кнопки управления и нужно переоткрывать камень(допускаю, что это может быть моя пакетка)
1682170949966.png
а так, вроде часть старых багов пофикшена. Годный апдейт, спасибо.
 
Хм 1. интересно, первый раз вообще такое вижу, есть лайв сервер? можно сделать фильтр по 0 лвлу попробовать. У каждой сборки свои приколы с пакетами и их таймингом, сложно на всех стульях усидеть
2. Блин, я вообще забыл это отключить, дамаг только на текущем таргете да и на аое месиво, в след обнове дамаг уберу или под галку какую спрячу
3. Это еще с deadza окно, я там почти ничего не трогал
 
еще небольшой багрепорт - при получении нескольких писем, и в каком нибудь из писем есть предмет, который можно забрать, то счетчик минусует 1 при прочтении, и еще минусует 1 при нажатии на кнопку ресива вещи (проверял на двух сервах)
 
ну уже не зря :loltt0:
 
Здравствуйте! Очень красивая работа, очень хорошо сделана!
Не могли бы вы ответить на мое личное сообщение? Спасибо!
ну у меня таргет эффект так сделан, как говорится шо смог, по идее туда можно с интерфейса и скорость и пульсацию настраивать и картинку
C++:
class Target extends Emitter; // DynamicProjector

var DynamicProjector TestDynamicProjector;

var bool saveScale;
var float scale;
var float prevscale;

var rotator R;

var bool InitTick;
var bool InitTimer;

var int targetID;


function PostBeginPlay()
{

    Super.PostNetBeginPlay();

    targetID =  Owner.CreatureID;

    TestDynamicProjector = Spawn(class'DynamicProjector', Owner, , , Rotation);
    TestDynamicProjector.SetDrawScale(0);
    TestDynamicProjector.FrameBufferBlendingOp = PB_AlphaBlend;
    TestDynamicProjector.MaterialBlendingOp = PB_None;
    self.SetBase(TestDynamicProjector);
    TestDynamicProjector.bClipBSP = true;
    TestDynamicProjector.bClipStaticMesh = true;
    TestDynamicProjector.bProjectOnUnlit = true;
    TestDynamicProjector.FOV = 1;

    SetTimer(0.05, false);
}


function FindMountScale()
{
    local Pawn P;
    
    foreach RadiusActors(class'Pawn', P, 500, TestDynamicProjector.Location)
    {
        if (P.CreatureID == targetID && P.RidePawn.Name != '')
        {
            self.SetOwner(P);
            scale =  P.CollisionRadius/110;
            InitTick = true;
            break;
        }
    }
    SetTimer(0.01, false);
}


function FindNewPawn()
{
    local Pawn P;

    foreach RadiusActors(class'Pawn', P, 500, TestDynamicProjector.Location)
    {   
        if (P.CreatureID == targetID && P.RidePawn.Name == '')
        {
            self.SetOwner(P);
            scale =  P.CollisionRadius/110;
            InitTick = true;
            break;
        }
    }
    SetTimer(0.01, false);   
}


function Tick(float deltatime)
{
    if (InitTick)
    {
        if (Owner != None)
        {
            TestDynamicProjector.DetachProjector();
            TestDynamicProjector.SetLocation(Owner.Location);
            TestDynamicProjector.AttachProjector();
        }
    }
    super.Tick(deltatime);
}


function Timer()
{
    if (!InitTimer)
    {
        if (TestDynamicProjector.ProjTexture.Name == 'None')
        {
            scale = TransientSoundRadius;
            prevscale = scale;
            Emitters[0].Texture.UClampMode = TC_Clamp;
            Emitters[0].Texture.VClampMode = TC_Clamp;
            TestDynamicProjector.ProjTexture = Emitters[0].Texture;
            InitTimer = true;
            InitTick = true;
            SetTimer(0.01, false);
        }
    }
    else
    {
        if (TransientSoundVolume == 1)
        {
            if (!InitTick)
            {
                if (Owner == None)   
                    FindNewPawn();
                else
                    FindMountScale();
                return;
            }
                
            if (Owner == None)
            {
                InitTick = false;
                TestDynamicProjector.SetDrawScale(0);
                SetTimer(0.03, false);
                return;
            }

            if (Pawn(Owner).CurRideType != 0)    // change effect scale when use mount
            {
                if (!saveScale)
                {
                    InitTick = false;
                    saveScale = true;
                    prevscale = scale;
                    TestDynamicProjector.SetDrawScale(0);
                    SetTimer(0.03, false);
                    return;
                }
            }
            else
            {
                if (saveScale)
                {
                    saveScale = false;
                    scale = prevscale;
                }
            }
        }



        if (int(m_fCurTime) % 2 == 0)
        {
            TestDynamicProjector.SetDrawScale((1 + (m_fCurTime - int(m_fCurTime))*0.33) * scale);        // scale range ~1.0-1.33       
        }
        else
        {
            TestDynamicProjector.SetDrawScale((1.3 - (m_fCurTime - int(m_fCurTime))*0.33) * scale);
        }
        
        
        R.Yaw = - 1000 * m_fCurTime;
        TestDynamicProjector.SetRotation(R);
        
        
        SetTimer(0.01, false);
    }
}


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


defaultproperties
{
    Rotation=(Pitch=-16384,Yaw=0,Roll=0)
    R=(Pitch=-16384,Yaw=0,Roll=0)
    Begin Object Class=SpriteEmitter Name=SpriteEmitter1
        MaxParticles=1
        UniformSize=True
        SizeScale(0)=(RelativeSize=1.000000)
        InitialParticlesPerSecond=1.000000
        AutomaticInitialSpawning=False
        Texture=None
        LifetimeRange=(Min=1.000000,Max=1.000000)
        Disabled=True
        Name="SpriteEmitter1"
     End Object
     Emitters(0)=SpriteEmitter'SpriteEmitter1'
     bNoDelete=False
}
 
Все изображения и файлы загружайте только на наш сервер! Для этого используйте кнопку "Загрузить файл", расположенную ниже или просто перетащите необходимые файлы/изображения со своего компьютера в окно редактора.
ну у меня таргет эффект так сделан, как говорится шо смог, по идее туда можно с интерфейса и скорость и пульсацию настраивать и картинку
C++:
class Target extends Emitter; // DynamicProjector

var DynamicProjector TestDynamicProjector;

var bool saveScale;
var float scale;
var float prevscale;

var rotator R;

var bool InitTick;
var bool InitTimer;

var int targetID;


function PostBeginPlay()
{

    Super.PostNetBeginPlay();

    targetID =  Owner.CreatureID;

    TestDynamicProjector = Spawn(class'DynamicProjector', Owner, , , Rotation);
    TestDynamicProjector.SetDrawScale(0);
    TestDynamicProjector.FrameBufferBlendingOp = PB_AlphaBlend;
    TestDynamicProjector.MaterialBlendingOp = PB_None;
    self.SetBase(TestDynamicProjector);
    TestDynamicProjector.bClipBSP = true;
    TestDynamicProjector.bClipStaticMesh = true;
    TestDynamicProjector.bProjectOnUnlit = true;
    TestDynamicProjector.FOV = 1;

    SetTimer(0.05, false);
}


function FindMountScale()
{
    local Pawn P;
  
    foreach RadiusActors(class'Pawn', P, 500, TestDynamicProjector.Location)
    {
        if (P.CreatureID == targetID && P.RidePawn.Name != '')
        {
            self.SetOwner(P);
            scale =  P.CollisionRadius/110;
            InitTick = true;
            break;
        }
    }
    SetTimer(0.01, false);
}


function FindNewPawn()
{
    local Pawn P;

    foreach RadiusActors(class'Pawn', P, 500, TestDynamicProjector.Location)
    { 
        if (P.CreatureID == targetID && P.RidePawn.Name == '')
        {
            self.SetOwner(P);
            scale =  P.CollisionRadius/110;
            InitTick = true;
            break;
        }
    }
    SetTimer(0.01, false); 
}


function Tick(float deltatime)
{
    if (InitTick)
    {
        if (Owner != None)
        {
            TestDynamicProjector.DetachProjector();
            TestDynamicProjector.SetLocation(Owner.Location);
            TestDynamicProjector.AttachProjector();
        }
    }
    super.Tick(deltatime);
}


function Timer()
{
    if (!InitTimer)
    {
        if (TestDynamicProjector.ProjTexture.Name == 'None')
        {
            scale = TransientSoundRadius;
            prevscale = scale;
            Emitters[0].Texture.UClampMode = TC_Clamp;
            Emitters[0].Texture.VClampMode = TC_Clamp;
            TestDynamicProjector.ProjTexture = Emitters[0].Texture;
            InitTimer = true;
            InitTick = true;
            SetTimer(0.01, false);
        }
    }
    else
    {
        if (TransientSoundVolume == 1)
        {
            if (!InitTick)
            {
                if (Owner == None) 
                    FindNewPawn();
                else
                    FindMountScale();
                return;
            }
              
            if (Owner == None)
            {
                InitTick = false;
                TestDynamicProjector.SetDrawScale(0);
                SetTimer(0.03, false);
                return;
            }

            if (Pawn(Owner).CurRideType != 0)    // change effect scale when use mount
            {
                if (!saveScale)
                {
                    InitTick = false;
                    saveScale = true;
                    prevscale = scale;
                    TestDynamicProjector.SetDrawScale(0);
                    SetTimer(0.03, false);
                    return;
                }
            }
            else
            {
                if (saveScale)
                {
                    saveScale = false;
                    scale = prevscale;
                }
            }
        }



        if (int(m_fCurTime) % 2 == 0)
        {
            TestDynamicProjector.SetDrawScale((1 + (m_fCurTime - int(m_fCurTime))*0.33) * scale);        // scale range ~1.0-1.33     
        }
        else
        {
            TestDynamicProjector.SetDrawScale((1.3 - (m_fCurTime - int(m_fCurTime))*0.33) * scale);
        }
      
      
        R.Yaw = - 1000 * m_fCurTime;
        TestDynamicProjector.SetRotation(R);
      
      
        SetTimer(0.01, false);
    }
}


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


defaultproperties
{
    Rotation=(Pitch=-16384,Yaw=0,Roll=0)
    R=(Pitch=-16384,Yaw=0,Roll=0)
    Begin Object Class=SpriteEmitter Name=SpriteEmitter1
        MaxParticles=1
        UniformSize=True
        SizeScale(0)=(RelativeSize=1.000000)
        InitialParticlesPerSecond=1.000000
        AutomaticInitialSpawning=False
        Texture=None
        LifetimeRange=(Min=1.000000,Max=1.000000)
        Disabled=True
        Name="SpriteEmitter1"
     End Object
     Emitters(0)=SpriteEmitter'SpriteEmitter1'
     bNoDelete=False
}
Да, я все прекрасно понимаю, но проблема заключается в следующем.
Я уже пытался исправить ваш скрипт для версии Interlude, но текстура будет статичной и эффекта нет вообще. В любом случае, спасибо за внимание!


 
А не подскажите из Actor/Pawn можно как-то стянуть урон со скиллов, по аналогии с NPrimeAction для автооатак?
 

    sber

    Баллов: 5
    ЧУВАК ПРОСТО ОФИГЕНЕН!) РЕСПЕКТ ЗА ПАТЧ!!!
так, покекать и убить фепесы, попытка в прикреплении дамага на птсе рпг-клаба)) но точности для скиллов увы не хватает (хз откуда значение урона со скиллов стянуть, руинят сообщения урона от рефлекта, отсутствие сообщения успеха дебаффов, ну и станы со слипами), вообщем так для красоты больше, индикаторы целей для себя и для пета не забудьте в xdat

 

Вложения

  • MonIca_Damage.rar
    20,3 КБ · Просмотры: 43

    Rolo

    Баллов: 21
    За Багападобнасть!1!!1
so, poke and kill phepes, an attempt to attach damage to the pts of the rpg club)) but, alas, there is not enough accuracy for the skills (xs where the damage value from the skills is pulled from, ruin the damage messages from the reflection, the absence of the success message of debuffs, well, the stuns with slips ), in general, it’s more for beauty, don’t forget the indicators of goals for yourself and for the pet in xdat

nice work with the textures, looks awesome!
 
Хотелось переделать макропанельку в болеее настраиваемую , но почему то при выставлении строк больше 8 (дефолтный размер макро окна 6x8строк) начинает съедатся отображение крайней строки, по столбцам такого вроде не обнаружено. Какие-то внутренние ограничения?
 
Интересно ещё обновления будут? Будут исправления в шапках? А то где то их 2 а где то от эссенс. Хотелосьбы везде одинаковые)
 
Назад
Сверху Снизу