|
Форум - Russian Tournament » Игры » UnrealED » Просьбы, подсказки, помощь. |
Просьбы, подсказки, помощь. |
201, 22 Марта 15 06:39
|
202, 23 Марта 15 21:49
Цитата посмотри код Half-Mind Redeemer Попробывал, не получается чет, но у меня нужно на инвентарь делать, то есть когда берешь предмет который лежит у тебя в инвентаре и он должен вызывать ауру пока лежит. Infinite War v5.0.2 construction UIP 2.0 - UIPP(UIP 2.1) |
203, 23 Марта 15 22:43
Предполагаю что у тебя емиттерами сделано. Так вот вместо емиттера надо спавнить проектор, и сразу его настраивать. В HMR я сделал сразу готовый класс проэктора, чтоб не настраивать:
Код class DiscoProjector extends DynamicProjector; #exec Texture Import File=C:\Users\GP\Desktop\Disco.Tga Name=Disco Mips=Off Alpha=true var TexRotator Rotor; simulated function PostBeginPlay() { if (Rotor == none) { Rotor = new class'TexRotator'; Rotor.Material = Texture'HMR.Disco'; Rotor.TexRotationType = TR_ConstantlyRotating; Rotor.Rotation.Yaw = 20000; Rotor.UOffset = 64; Rotor.VOffset = 64; ProjTexture = Rotor; } super.PostBeginPlay(); } defaultproperties { MaterialBlendingOp=PB_Add FrameBufferBlendingOp=PB_Add FOV=90 MaxTraceDistance=512 bClipBSP=True bClipStaticMesh=True bGradient=True DrawScale=4.000000 } там я поленилса делать пакедж, и просто импортировал текстуру сразу а ротатор создавал на лету, вот по идее на каждый инвентарь надо заготовить проэктор. Потом просто сканиш код каждого инвентаря, ищеш функцыи где он включаетса - спавниш и аттачиш к павну нужный проэктор, а там где выключаетса или уничтожаетса (инвентарь) удаляеш проэктор... Код class HMR_Bomb extends Pawn; #exec AUDIO IMPORT File=C:\Users\GP\Desktop\Music.wav Name=Music var float Damage, DamageRadius, MomentumTransfer; var class<DamageType> MyDamageType; var Pawn OldPawn; var float YawAccel, PitchAccel; var float DanceMax, DanceMin; var Happy Mask; var DiscoProjector ProjectorX[12]; // camera shakes // var() vector ShakeRotMag; // how far to rot view var() vector ShakeRotRate; // how fast to rot view var() float ShakeRotTime; // how much time to rot the instigator's view var() vector ShakeOffsetMag; // max view offset vertically var() vector ShakeOffsetRate; // how fast to offset view vertically var() float ShakeOffsetTime; // how much time to offset view var bool bStaticScreen; var bool bFireForce; var float LastAnimatedTime, NewHue; var TeamInfo MyTeam; replication { reliable if (Role == ROLE_Authority && bNetOwner) bStaticScreen; reliable if ( Role < ROLE_Authority ) ServerBlowUp; } function PlayerChangedTeam() { Died( None, class'DamageType', Location ); OldPawn.Died(None, class'DamageType', OldPawn.Location); } function TeamInfo GetTeam() { if ( PlayerReplicationInfo != None ) return PlayerReplicationInfo.Team; return MyTeam; } simulated function Destroyed() { local int i; RelinquishController(); [b]сдесь удаляю все проэкторы, независимо по какой причине заустилса дестрой, так[/b] надежнее for (i=0; i<12; i++) ProjectorX[i].Destroy(); Super.Destroyed(); } simulated function bool IsPlayerPawn() { return false; } event bool EncroachingOn( actor Other ) { if ( Other.bWorldGeometry ) return true; return false; } event EncroachedBy( actor Other ) { } function RelinquishController() { if ( Controller == None ) return; Controller.Pawn = None; if ( !Controller.IsInState('GameEnded') ) { if ( (OldPawn != None) && (OldPawn.Health > 0) ) Controller.Possess(OldPawn); else { if ( OldPawn != None ) Controller.Pawn = OldPawn; else Controller.Pawn = self; Controller.PawnDied(Controller.Pawn); } } RemoteRole = Default.RemoteRole; Instigator = OldPawn; Controller = None; } simulated function PostBeginPlay() { local vector Dir; local Rotator NextRotation; Dir = Vector(Rotation); Velocity = AirSpeed * Dir; Acceleration = Velocity; [b]сдеся спавню кучю проэкторов в разные стороны, все сую в масив[/b] ProjectorX[0] = Spawn(class'HMR.DiscoProjector',self,,Location,NextRotation); NextRotation.Pitch = 16384; ProjectorX[1] = Spawn(class'HMR.DiscoProjector',self,,Location,NextRotation); NextRotation.Pitch = -16384; ProjectorX[2] = Spawn(class'HMR.DiscoProjector',self,,Location,NextRotation); NextRotation.Pitch = 0; NextRotation.Yaw = 16384; ProjectorX[3] = Spawn(class'HMR.DiscoProjector',self,,Location,NextRotation); NextRotation.Yaw = -16384; ProjectorX[4] = Spawn(class'HMR.DiscoProjector',self,,Location,NextRotation); NextRotation.Yaw = 32768; ProjectorX[5] = Spawn(class'HMR.DiscoProjector',self,,Location,NextRotation); NextRotation.Yaw = 8192; ProjectorX[6] = Spawn(class'HMR.DiscoProjector',self,,Location,NextRotation); NextRotation.Pitch = 8192; ProjectorX[7] = Spawn(class'HMR.DiscoProjector',self,,Location,NextRotation); NextRotation.Pitch = -24576; ProjectorX[8] = Spawn(class'HMR.DiscoProjector',self,,Location,NextRotation); NextRotation.Pitch = -8192; NextRotation.Yaw = 24576; ProjectorX[9] = Spawn(class'HMR.DiscoProjector',self,,Location,NextRotation); NextRotation.Yaw = 8192; ProjectorX[10] = Spawn(class'HMR.DiscoProjector',self,,Location,NextRotation); NextRotation.Yaw = 0; ProjectorX[11] = Spawn(class'HMR.DiscoProjector',self,,Location,NextRotation); } simulated function PostNetBeginPlay() { Super.PostNetBeginPlay(); if ( PlayerController(Controller) != None ) { Controller.SetRotation(Rotation); PlayerController(Controller).SetViewTarget(self); Controller.GotoState(LandMovementState); PlayOwnedSound(Sound'WeaponSounds.redeemer_shoot',SLOT_Interact,1.0); } } simulated function FaceRotation( rotator NewRotation, float DeltaTime ) { } function UpdateRocketAcceleration(float DeltaTime, float YawChange, float PitchChange) { local int tauntNum, i; local Bot B; local rotator NerRotation; NerRotation.Yaw = Rotation.Yaw + YawChange; NerRotation.Pitch = Rotation.Pitch + PitchChange; SetRotation(NerRotation); Velocity = Vector(NerRotation) * AccelRate; NewHue = NewHue + DeltaTime*255; if (NewHue >= 255) NewHue = 0; LightHue = NewHue; if ( (LastAnimatedTime + 1.5) < Level.TimeSeconds ) { tauntNum = Rand(OldPawn.TauntAnims.Length - 3); OldPawn.LoopAnim(OldPawn.TauntAnims[3 + tauntNum], 1); foreach AllActors(class'Bot', <img rel="usm" src="http://rusut.ru/smil/dirol.gif" border="0" align="absmiddle" alt="B)" /> { if ((VSize(B.Pawn.Location - Location) <= DanceMax)) B.Pawn.LoopAnim(B.Pawn.TauntAnims[3 + tauntNum], 1); } LastAnimatedTime = Level.TimeSeconds; } [b]сдесь вместо аттачинга каждый тик меняю положение, так надежнее[/b] for (i=0; i<12; i++) ProjectorX.SetLocation(Location); foreach AllActors(class'Bot', <img rel="usm" src="http://rusut.ru/smil/dirol.gif" border="0" align="absmiddle" alt="B)" /> { B.Enemy = none; B.Pawn.Weapon = none; if (B.Pawn.bHiddenEd == false) { Mask = Spawn(class'Happy', B.Pawn); Mask.SetLocation(B.Pawn.GetBoneCoords('Head').Origin); B.Pawn.AttachToBone(Mask, 'Head'); B.Pawn.bHiddenEd = true; } if ( (Vehicle(B.Pawn) != None) && !B.Squad.NeverBail(B.Pawn) && (Vehicle(B.Pawn).Driver != None) ) { if ( VSize(B.Pawn.Location - Location) < 1200 ) { Vehicle(B.Pawn).TeamUseTime = Level.TimeSeconds + 6; Vehicle(B.Pawn).KDriverLeave(false); } } if (VSize(B.Pawn.Location - Location) > DanceMax) { if (B.MoveTarget != self) { B.MoveTarget = self; B.SetAttractionState(); } } else if (VSize(B.Pawn.Location - Location) < DanceMin) { B.RouteGoal = B.FindRandomDest(); B.MoveTarget = B.RouteCache[0]; B.SetAttractionState(); } else { B.Focus = self; B.MoveTarget = self; } } } simulated function PhysicsVolumeChange( PhysicsVolume Volume ) { } simulated function Landed( vector HitNormal ) { } simulated function HitWall(vector HitNormal, actor Wall) { } function UnPossessed() { BlowUp(Location); } simulated singular function Touch(Actor Other) { } simulated singular function Bump(Actor Other) { } function TakeDamage( int Damage, Pawn instigatedBy, Vector hitlocation, Vector momentum, class<DamageType> damageType) { //Fuck this !!! } function Fire( optional float F ) { if ( AirSpeed == default.AirSpeed ) AirSpeed = 0; else AirSpeed = default.AirSpeed; } function AltFire( optional float F ) { ServerBlowUp(); } function ServerBlowUp() { BlowUp(Location); } function BlowUp(vector HitLocation) { local Emitter E; if ( Role == ROLE_Authority ) { bHidden = true; E = Spawn(class'RedeemerExplosion',,, HitLocation - 100 * Normal(Velocity), Rot(0,16384,0)); if ( Level.NetMode == NM_DedicatedServer ) { E.LifeSpan = 0.7; } GotoState('Dying'); } } function bool DoJump( bool bUpdating ) { return true; } singular event BaseChange() { } simulated event PlayDying(class<DamageType> DamageType, vector HitLoc); function Died(Controller Killer, class<DamageType> damageType, vector HitLocation) { BlowUp(Location); } function bool CheatWalk() { return false; } function bool CheatGhost() { return false; } function bool CheatFly() { return false; } function ShouldCrouch(bool Crouch) {} event SetWalking(bool bNewIsWalking) {} function Suicide() { Blowup(Location); if ( (OldPawn != None) && (OldPawn.Health > 0) ) OldPawn.KilledBy(OldPawn); } auto state Flying { function Tick(float DeltaTime) { if ( !bFireForce && (PlayerController(Controller) != None) ) { bFireForce = true; PlayerController(Controller).ClientPlayForceFeedback("FlakCannonAltFire"); // jdf } if ( (OldPawn == None) || (OldPawn.Health <= 0) ) BlowUp(Location); else if ( Controller == None ) { if ( OldPawn.Controller == None ) OldPawn.KilledBy(OldPawn); BlowUp(Location); } } } state Dying { ignores Trigger, Bump, HitWall, HeadVolumeChange, PhysicsVolumeChange, Falling, BreathTimer; function Fire( optional float F ) {} function BlowUp(vector HitLocation) {} function ServerBlowUp() {} function Timer() {} function TakeDamage( int Damage, Pawn instigatedBy, Vector hitlocation, Vector momentum, class<DamageType> damageType) {} function BeginState() { bHidden = true; bStaticScreen = true; SetPhysics(PHYS_None); SetCollision(false,false,false); Spawn(class'IonCore',,, Location, Rotation); ShakeView(); } function ShakeView() { local Controller C; local PlayerController PC; local float Dist, Scale; for ( C=Level.ControllerList; C!=None; C=C.NextController ) { PC = PlayerController(c); if ( PC != None && PC.ViewTarget != None ) { Dist = VSize(Location - PC.ViewTarget.Location); if ( Dist < DamageRadius * 2.0) { if (Dist < DamageRadius) Scale = 1.0; else Scale = (DamageRadius*2.0 - Dist) / (DamageRadius); C.ShakeView(ShakeRotMag*Scale, ShakeRotRate, ShakeRotTime, ShakeOffsetMag*Scale, ShakeOffsetRate, ShakeOffsetTime); } } } } Begin: Instigator = self; PlaySound(sound'WeaponSounds.redeemer_explosionsound'); HurtRadius(Damage, DamageRadius*0.125, MyDamageType, MomentumTransfer, Location); Sleep(0.5); HurtRadius(Damage, DamageRadius*0.300, MyDamageType, MomentumTransfer, Location); Sleep(0.2); HurtRadius(Damage, DamageRadius*0.475, MyDamageType, MomentumTransfer, Location); Sleep(0.2); RelinquishController(); HurtRadius(Damage, DamageRadius*0.650, MyDamageType, MomentumTransfer, Location); Sleep(0.2); HurtRadius(Damage, DamageRadius*0.825, MyDamageType, MomentumTransfer, Location); Sleep(0.2); HurtRadius(Damage, DamageRadius*1.000, MyDamageType, MomentumTransfer, Location); Destroy(); } defaultproperties { Damage=250.000000 DamageRadius=2000.000000 MomentumTransfer=200000.000000 MyDamageType=Class'XWeapons.DamTypeRedeemer' DanceMax=1024.000000 DanceMin=256.000000 ShakeRotMag=(Z=250.000000) ShakeRotRate=(Z=2500.000000) ShakeRotTime=6.000000 ShakeOffsetMag=(Z=10.000000) ShakeOffsetRate=(Z=200.000000) ShakeOffsetTime=10.000000 bSimulateGravity=False bDirectHitWall=True bHideRegularHUD=True bSpecialHUD=True bNoTeamBeacon=True bCanUse=False AirSpeed=300.000000 AccelRate=300.000000 BaseEyeHeight=128.000000 EyeHeight=128.000000 LandMovementState="PlayerRocketing" LightType=LT_Flicker LightEffect=LE_QuadraticNonIncidence LightBrightness=255.000000 LightRadius=48.000000 DrawType=DT_StaticMesh StaticMesh=StaticMesh'WeaponStaticMesh.RedeemerMissile' bDynamicLight=True bStasis=False bReplicateInstigator=True bNetInitialRotation=True Physics=PHYS_Hovering NetPriority=3.000000 AmbientSound=Sound'HMR.Music' DrawScale=0.400000 AmbientGlow=96 bGameRelevant=True bCanTeleport=False SoundRadius=255.000000 TransientSoundVolume=1.000000 TransientSoundRadius=5000.000000 CollisionRadius=32.000000 CollisionHeight=12.000000 bBlockActors=False ForceType=FT_DragAlong ForceRadius=100.000000 ForceScale=5.000000 } |
204, 23 Марта 15 23:46
Есть же
Код [code] |
205, 24 Марта 15 00:24
acepted, текст на смайлы поменяло... только внутри
Код [b][code][/b] а вставлять жырные куски отдельно медленно... Код [code] |
206, 24 Марта 15 00:31
И кстати можно ли сделать так, что бы эффект отображался только от 3его лица или если смотреть от другово игрока?
И я не помню, что значат эти приписки (self,,Location) ну и тому подобные что бы знать на будующее. Infinite War v5.0.2 construction UIP 2.0 - UIPP(UIP 2.1) |
207, 24 Марта 15 13:45
хотел направить тебя помотреть код скайлайнов, но вовремя осознал что сейчас сам там найду что-либо не скоро.
Лучше всего это реализовать непосредственно в tick-e ефекта, но так как тут предвидитса управление эфектом из кода инвентаря можно оттуда. Суть в том что делаеш проверку: Код если ("павн к которому приатачен эфект" есть "павн локального жывого игрока") И ("локальный жывой игрок" есть "в режыме от первого лица") то ("спрятать эфект"), в любом другом случае "показывать эфект". Таким образом свой эфект будет виден для всех от третьего лица, а эфекты других игроков независимо от того какой у них режым. Изощрятса еще и для спектаторов порядком сложнее, да и не стоит думаю. Конкретней писать код лень, так как все зависит от кода в который его пихать придетса... |
208, 30 Марта 15 11:02
Ребят скачал пак персов с gamefronta http://o53xo.m5qw2zlgojxw45bomnxw2.dresk.ru/files...._Skins. Проблема в том что два скарджа Baetal и Pharoh не работают. Когда их выбираешь в настройках то они отображаются и всё вроде бы в порядке, но как заходишь в матч, то вместо них отображается моделька Jakob(а). Не подскажете с чем это связанно, ведь остальные модели из пака работают хорошо!
|
209, 30 Марта 15 13:41
относительно
self - указатель непосредственно на себя, как на заспавненый актор. Например пушка спавнит проэктиль, и сразу какой-то его переменной присваивает self - тобиш себя, таким образом можно напрямую из проэктиля получить доступ к пушке. Просто использование внутри кода не нимеет смисла, так как self.Location тоже самое что просто Location, и так далле. А используетса, я уже написал - когда нужно чемуто присвоить себя, чтоб оно иметь прямой достутп, например в тот-же owner. В коде волкера например ноги идут отдельным актором, и когда я их спавню - присваиваю их переменной legs, а их переменной walker присваию self, таким образом из кода ног можна напрямую обращатса к технике, без всяких-там проверок с owner-ами. Пропуск между запятыми - пропуск параметра - есть в функцыях необязательные параметры, функцыю можно вызвать не указывая их, и они пойдут по дефолту либо как нибудь еще как там в функцыи предвидено. Например при спавне можно ничего не указывать кроме класа - все параметры возьмутса от актора который спавнит, а можно указать owner-а, место, поворот, и если хочеш указать только что-то одно, то оставляш на тех местах пропуск. |
210, 30 Марта 15 14:37
JosaFarmer, это рескины каких-то других моделек персонажей. У меня вообще ни один из них не работает, потому что тех моделек, на которых они основаны, нет.
|
211, 31 Марта 15 15:31
Понял) вот бы знать те модели на которых они основаны) И ещё один вопрос в паке http://www.gamefront.com/files/3804944/UT__Skaarj_Trooper_Bot находится файл ini. Подскажите для чего этот пак нужен?
|
212, 31 Марта 15 16:22
там в ридми написано, что оно только "открывает" бота который уже как-бы есть в игре, никаких скрытых моделей, текстур и прочего...
А для чего он нужен это уже каждый решает для себя сам) - Powernode is under attack !!! - I'll be in 5 seconds red leader!!! |
213, 31 Марта 15 18:31
GP, Лол, это что? (картинка всмыс)
Infinite War v5.0.2 construction UIP 2.0 - UIPP(UIP 2.1) |
214, 31 Марта 15 20:20
- Powernode is under attack !!! - I'll be in 5 seconds red leader!!! http://s018.radikal.ru/i507/1503/d0/c92801285f5e.jpg |
215, 31 Марта 15 21:42
Конечности узлом заплетаютса, в ут3 такое вроде невозможно, а ут2004 - мир безграничных возможностей.
Добавлено (01 Апреля 15, 00:42) --------------------------------------------- Воу-воу народ, а я смотрю Немезиса из ут3 для ут2004 тоже нет (или я плохо смотрю?), вероятно из-за его физики... |
216, 31 Марта 15 22:01
Не, там вроде все есть кроме этого большого, но а этот как? Работает или тоже с дцп?
Infinite War v5.0.2 construction UIP 2.0 - UIPP(UIP 2.1) |
217, 31 Марта 15 23:06
Да все-бы ничего, "передвигаетса" (надо долго настраивать чтоб выглядело как хотьба) соизмеримо с голиафом, проходимость кул... но переодически движок удаляет рагдол из-за ошыбки в карме - по ходу не успевает просчитыватькогда действует много сил (три ноги + связка с башней + гравитацыя + внишние столкновения), так как чем больше движения на карте тем чаще удаляет. Параметрами рагдола это исправить (в рамках реалистичности) неполучаетса. Как вариант сейчас сразу спавнить новые ноги, но это заметно.
Добавлено (01 Апреля 15, 02:06) --------------------------------------------- Не, я или слепой, или его нет. Ползучий танк, имеет несколько режымов по высоте башни и скорости езды. Его нет, название не спутал... |
218, 31 Марта 15 23:33
А, этот да, я даже не видел такго в ут3
Это ты все это время работал над эти роботом-трехногой? Infinite War v5.0.2 construction UIP 2.0 - UIPP(UIP 2.1) |
219, 01 Апреля 15 00:24
Конечно, даже без перерывов на сон и пищу
Сегодня вечером только вот наконец собралса со всеми силами и доделал алгоритм выбора "куда вставать" и привязал управление. Если более-менее пойдет еще можна будет сюда прицепить нарошное протыкание всего что под ноги попадаетса, ато так протыкание ненарошное и без урона. Добавлено (01 Апреля 15, 03:24) --------------------------------------------- результат на лицо... при записи видео увеличилась нагрузка на проц (на моем железе это заметно) и увеличилось количество того самого глюка. Вообще и с предидущим ходуном всю карму колбасит даже при ппереходе из полноэкранного режыма в оконный и наоборот, будто движок при этом полностью перезапускаетса чтоли... |
220, 01 Апреля 15 09:06
Можно его и просто летающим сделать, а щупальца пусть болтаются (задумать им что бы самостоятельно протыкали всех противников в рудиусе 10м)
Вприндцапи этим ты доказываешь что механически, кармой путного не сделаешь, та я и вприндцапи не видел игр где роботы ходили бы на физике собственного двига. Поэтому изначально и писал что правильный ход, это анимация, но мне кажется даже и ее движок самостоятельно переделает и подаст с подливой. (Все чет затихли, один GP ебошит не покладая рук) Я тут ещё посмотрел, походу баллистик тоже загинается, на сервера их не заходил, но форум молчит чет. А после этого комента: Цитата I play online all the time. I'd play more if skill was visible though. Just checked the server anyway... Dead game. Dead mod. Dead community. уж точно. Infinite War v5.0.2 construction UIP 2.0 - UIPP(UIP 2.1) |
| |||||||||||||||
| |||||||||||||||