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;
}
}
}
Ну потому что у тебя sysmsg не соответствуют тому что прописано в скрипте дамага.Добрый день, сначала разблокируйте панель чтобы на нее можно было перенести соски. Рядом замочек.
Спасибо большое, получилось.
Помогите вот теперь с такой проблемой, до этого в этой версии патча был вывод урона на экран + было отображение критических ударов, теперь криты перестали отображаться совсем... зато появился новый параметр - Evaded - промах. Подскажите где это можно подкоректировать чтобы были все эти надписи - Resisted - Critical - Evaded помимо цифр самого наносимого урона. Заранее спасибо.
На промах пишет , на крит нет - плюс скринанул
Посмотреть вложение 40823Посмотреть вложение 40824
Там вот только это-вот, на 126 строке:Хотфикс
Выпилить нахер тестовый вариант:
targetEmitterClass = class<Emitter>(DynamicLoadObject("TestEffect.TestEffect", class'Class'));
Впилить с гордым взглядом и чувством того что вы сейчас будете вертеть свои таргеты по всякому
targetEmitterClass = class<Emitter>(DynamicLoadObject("MonIcaTargetEffect.Target", class'Class'));
Спарсить радиус с скриптов птс ретейла в отдельный файл. )))))) А там только ваша фантазия куда вы их запихнете.Moar lag!!
Простенькая подсветка таргета. Не понял как напрямую спавнить прожектор интерфейсом, поэтому спавнил через эффект. Не понял как узнать актор выбранного таргета, поэтому через foreach (GetTargetActor() не работает), мб в свойствах павна или контроллера где-то спрятано. Не понял от какого параметра нормально отскалировать размер прожектрора для каждого таргета (CollisionRadius, GetRenderBoundingSphere очень рандомные, поэтому пока остановился на DamageEffectOffset).
Ну как то так
Посмотреть вложение 45230
Впринципе можно кастомизировать как захочется
На лаги не тестил)
То есть если оттуда использовать радиус все будет как на оффе?) скиньте ктото файлик)Спарсить радиус с скриптов птс ретейла в отдельный файл. )))))) А там только ваша фантазия куда вы их запихнете.
Просто это самое простое, где более менее самые точные данные по радиусу. Параметр collision_radius, возможно ещё пригодится для каких то целей collision_height. Все же это самые приближенные данные к тем что можно найти под HF.То есть если оттуда использовать радиус все будет как на оффе?) скиньте ктото файлик)
Привет у меня возник вопрос, как удалять динамический созданный объект?То есть если оттуда использовать радиус все будет как на оффе?) скиньте ктото файлик)
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;
}
О спасибо просто я не знал как ты уничтожаешь емиторы вот, что мне нужно было!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 (он при трансформации при взятом таргете остается на земле)
/******************************************
Разработчик: 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{}
Я вчера только сел разбираться с этим вопросом можно сказать ничего не понимаю в эффектах)Вообще старайся None'ить все глобальные эмиттеры и тд, а то на релогах и тепортах могут лететь криты (как я понял из-за сборщика мусора)
targetEmitter.Emitters[0].StartLocationOffset.Z = P.DamageEffectOffset;
Ну я просто рассказываю о своих граблях)Я вчера только сел разбираться с этим вопросом можно сказать ничего не понимаю в эффектах)
Можешь немного логики изложить как оно вообще работает ?Ну я просто рассказываю о своих граблях)
Я вот не могу понять в defaultproperties задаются параметры и только с ними он может работать больше нет доступа к ним?BIT_hack, что именно?)
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, что именно?)
а ну так то да, но имеено в эффектах надо смотреть что можно поменять)А не все понял с ними можно работать с динамически созданным объектом!
Видел ты выводил урон на экран каким способом?а ну так то да, но имеено в эффектах надо смотреть что можно поменять)
С текстурами вроде понятно мне непонятно как ты текст рисуешь)это мы с Rolo слепили, он даже с сервер сайда умудрися присабачить, может поделится видео своих стресс тестов)
We use cookies and similar technologies for the following purposes:
Do you accept cookies and these technologies?
We use cookies and similar technologies for the following purposes:
Do you accept cookies and these technologies?