Infinite War v5.0.2 construction
UIP 2.0 - UIPP(UIP 2.1)
|
Форум - Russian Tournament » Игры » UnrealED » Вопросы по редактору |
Вопросы по редактору |
841, 05 Ноября 14 18:08
Цитата у меня часто кастомные прожектили у клиента не отображаютса Создаешь подкласс или как там который идет екстендом в емитер, дописываешь там РемотеРоле=СимулятерПрокси и все. Infinite War v5.0.2 construction UIP 2.0 - UIPP(UIP 2.1) |
842, 05 Ноября 14 18:21
Получаетса все просто...
Вполне возможно что прожектили били без мешей, точно не помню... |
843, 05 Ноября 14 23:51
Там ещё полно Ремотов и Что то типа НетИнитал и Нет темпрори. Я если чесно не понял как остальное все работает. Только про прохси читал
Infinite War v5.0.2 construction UIP 2.0 - UIPP(UIP 2.1) |
844, 06 Ноября 14 02:50
вот охуеннейшая статья про репликацию
http://wiki.beyondunreal.com/Everyth....to_ask) |
845, 06 Ноября 14 11:28
|
846, 06 Ноября 14 12:53
Некоторые части из стать я понял, но остальное это пздц, итак не русским описано, ещё и переводчик капля в море переводит.
Такое надо на русском читать Infinite War v5.0.2 construction UIP 2.0 - UIPP(UIP 2.1) |
847, 06 Ноября 14 13:00
Мой небосвод хрустально ясен И полон радужных картин, Не потому, что мир прекрасен, А потому, что я кретин! |
848, 06 Ноября 14 15:49
Прочитал. Даже немного разобралса. Заставил скайлайны роботать посети, но даже по "локалке" на одном компе скорости не хватает для их корректной роботы...
|
849, 06 Ноября 14 15:55
Цитата но даже по "локалке" на одном компе скорости не хватает для их корректной роботы Infinite War v5.0.2 construction UIP 2.0 - UIPP(UIP 2.1) |
850, 06 Ноября 14 16:07
ну... запускаеш dedicated server, потом запускаеш игру в новом процесе и подключаешся к этому серверу...
Да раньше ещ через провод пробовал, роботает норм, все отображаетса, но клиент скайлайн заюзать не может - там проблема в принцыпе роботы моего кода - чтоб роботало надо обновлять все точки интерполяцыи (а они акторами сделаны, и каждому нужен типа канал), а их на одной карте за 1000 может быть, вот. Я сразу сетвой режым не планировал, но тут как-бы более ясно стало... |
851, 06 Ноября 14 16:21
GP, а чего именно не хватает? Скорости для передачи информации или что?
Добавлено (06 Ноября 14, 19:21) Мой IP сменился с 89.113.234.78/185.42.146.32 на 83.167.1.167. Теперь будет этот. Надолго. Порты те же. http-сервер .do impossible beat unbeatable |
852, 06 Ноября 14 16:49
Ну это как с ленсфлер-ями было, когда fps падало ниже определенного уровня код не роботал. Там очень прожорливый tick, тонна проверок, зависящих от игрока. Пересылаетса в принцыпе почти нечего, но самих акторов видимо слишком много. Что б роботало по сети надо сделать большынство операцый локально у клиента, для чего нужно делать одним актором. А тогда создание линий при строени карты превращаетса в ад (это как расставлять пас-ноды не видя их, а задавая в координаты в списке + направление и длинна и т.д.)... потому сделал отдельными акторами, а сейчас уже
Добавлено (06 Ноября 14, 19:49) |
853, 06 Ноября 14 17:00
Нужно в любом случае решать проблемы с сетевым кодом иначе с багами в сети нет смысла дальше продолжать клипать УТ. Я планировал сделать сборку на основе освоих доработак с максимальной играбельностью. В конечном итоге должно получится в 500раз сильнее, качественнее и разнообразнее любых других серверов.
Но если сетевой код не будет нормально работать, то и смысла нет. С ботами не так интересно как в сети. Мы уже тестировали и это совсем другие ощущения. На данный момент мне осталось только баллистик дождатся и подстроить под сборку, затем проверить все в сети и если все ок то можно пробывать играть с желающими здесь. Infinite War v5.0.2 construction UIP 2.0 - UIPP(UIP 2.1) |
854, 06 Ноября 14 17:01
а код оптимизировать никак? например эту тучу акторов заменить на один, но с большим раскладом параметров, координат и прочего и сделать общий расчёт в пределах одного?
Мой IP сменился с 89.113.234.78/185.42.146.32 на 83.167.1.167. Теперь будет этот. Надолго. Порты те же. http-сервер .do impossible beat unbeatable |
855, 06 Ноября 14 18:54
Я и делал сначала в одном, это возможно, но построение карты будет сущим адом - раз: скайлайн должен иметь визуальную часть (меш), и даже имея готовый понему всеравно прийдетса расставлять точки, или прописывать трк вручную. А во время строения карты все время приходитса что-то менять. Два - я планировал делать "плавающие" локацыи, от чего отказалса из-за проблем с ботами, но всеравно, сейчас можно заставить весь скайлайн летать, сделать отдельные точки, заюзать карму и море других штук в том числе и изменения делаютса очень просто. Если делать "оптимально", то надо делать инструмнт для разработки, который бы делал черную роботу и как-то вшывать его в едитор. Сделать можно, но моего понимания как это надо делать и сколько это займет времени достаточно, чтоб не братса.
Добавлено (06 Ноября 14, 21:49) --------------------------------------------- Просто часть карт сделаю играбельными и без скайлайнов, вот и все. class SkyHook extends Actor placeable; var() edfindable Rails OnRail; var vector RideFrom, RideTo, Path; var() edfindable Actor Rider; var Actor RagDoll; var float SpeedAcceleration; var() float CargoSpeed; var float Speed, HookVelocity, NewVelocity, DV; var bool Mount, WeitForReverse, Escape, ThisEd; var xEmitter Trail; var Emitter Glow, Marker; var HookDismounter Dismounter, JumpDirection; var vector JumpDestination; var BotDismountPoint NextDismountPoint; var float MaxJumpDistance; var SkyLine ReverseLine; var Rails Target, NearestRails; var int i; var Emitter Arrow; var vector CheckDir, LookDir; var float Throtle; var float PrevDistance; var vector Direction; var Actor wall; var vector TargetDir; var Mounter LocalMounter; var vector ReverseDirection; var PlayerMountingZone MZone; var vector RealLandingPlace; var float AdrenalineUsage; var float ThrotleControll; var float Gravity, LastZ, DeltaZ; var float ThrotleADRK; var bool ShowTrails; var bool bWasOverFalling; var Emitter FlyShit; var float EasyAim; var vector OldHookRot, RotChange; #EXEC OBJ LOAD FILE=GeneralAmbience.uax #EXEC OBJ LOAD FILE=IndoorAmbience.uax function Tick(float dt) { local vector HitLocation, Hitnormal, EndTrace, StartTrace, BottomTrace; local SkyHook MTG; local Pawn Victim; local float Inertia; local vector ViewRot, JumpRot; local rotator PosRot; if (((Rider == none) && (Mount == true)) || ((MZone != none) && (MZone.Master == Rider) && (MZone.MasterHook != self))) Die(); if ((ThisEd == false) && (Pawn(Rider) != none) && (MZone != none)) { if (MZone.ThrotleEd == false) Pawn(Rider).ClientMessage('Press Forward or Backward to increase or decrease your speed'); if (MZone.DisEd == false) Pawn(Rider).ClientMessage('Press Forward and Use to dismount when see suitable marker'); if (MZone.RevEd == false) Pawn(Rider).ClientMessage('Press Backward and Use to reverse'); ThisEd = true; } if ((Mount != true) && (OnRail != none) && (Rider != none)) { SpawnTrais(); Dismounter = Spawn(class'SkyLine.HookDismounter', self); Dismounter.Hook = self; NetUpdateFrequency = 60; bUpdateSimulatedPosition = true; Dismounter.NetUpdateFrequency = 60; Dismounter.bUpdateSimulatedPosition = true; LastZ = Location.Z; OldHookRot = Vector(Rotation); Mount = true; } if ( WeitForReverse == true ) Reverse(); if ((OnRail.ThisLine != none) && (OnRail.ThisLine.AutoReverse != true) && (OnRail.LonelyRail!=true)) { RideTo = OnRail.GetBoneCoords('End').Origin; RideFrom = OnRail.GetBoneCoords('Base').Origin; Path = RideTo - RideFrom; SetLocation(Location + Path*dt*HookVelocity); TransientSoundVolume = default.TransientSoundVolume; if (( VSize(RideTo - Location) <= Vsize(Path*dt*HookVelocity) )||((PrevDistance>0)&&(PrevDistance < VSize(RideTo - Location)))) { RideFrom = OnRail.NextRails.GetBoneCoords('Base').Origin; SetLocation(RideFrom); RideTo = OnRail.NextRails.GetBoneCoords('End').Origin; OnRail = OnRail.NextRails; if (Rider.IsA('Pawn') == true) PlaySound(sound'SkyLineSnd.Clank',SLOT_None,HookVelocity/2); } PrevDistance = VSize(RideTo - Location); } if ((OnRail.ThisLine != none) && (OnRail.ThisLine.AutoReverse == true) && (OnRail.LonelyRail!=true)) { RideTo = OnRail.GetBoneCoords('Base').Origin; RideFrom = OnRail.GetBoneCoords('End').Origin; Path = RideTo - RideFrom; SetLocation(Location + Path*dt*HookVelocity); TransientSoundVolume = default.TransientSoundVolume; if (( VSize(RideTo - Location) <= Vsize(Path*dt*HookVelocity) )||((PrevDistance>0)&&(PrevDistance < VSize(RideTo - Location)))) { RideFrom = OnRail.PrevRails.GetBoneCoords('End').Origin; SetLocation(RideFrom); RideTo = OnRail.PrevRails.GetBoneCoords('Base').Origin; OnRail = OnRail.PrevRails; if (Rider.IsA('Pawn') == true) PlaySound(sound'SkyLineSnd.Clank',SLOT_None,HookVelocity/2); } PrevDistance = VSize(RideTo - Location); } if (Rotation != rotator(Path)) { Direction = vector(Rotation); Direction = (Direction + dt*2*Normal(Path)); SetRotation(rotator(Direction)); } Speed = OnRail.SpeedMultiper; DeltaZ = LastZ - Location.Z; Gravity = 1 + DeltaZ/(128*dt); if ((Gravity > 12) && (bWasOverFalling == false)) { bWasOverFalling = true; } if ((Gravity <=2 ) && (bWasOverFalling == true) && (Pawn(Rider) != none)) { bWasOverFalling = false; PlaySound(sound'GeneralAmbience.metalfx17',SLOT_Misc,1); PlayerController(Pawn(Rider).Controller).WeaponShakeView(vect(0,0,0), vect(0,0,0), 2, vect(0,2,0), vect(0,-3000,0), 50); } if (Gravity < 1) Gravity = 1; LastZ = Location.Z; if (Rider != none) { if (Pawn(Rider).Controller.IsA('PlayerController') == true) ShowTrails = PlayerController(Pawn(Rider).Controller).bBehindView; else ShowTrails = true; ThrotleADRK = 1 + Pawn(Rider).Controller.Adrenaline/100; Throtle = ThrotleADRK*Normal(Rider.Acceleration) dot Vector(Rider.Rotation); if (Throtle < -1) Throtle = -1; PosRot.Pitch = 16336; Rider.SetLocation(Location - 57*Vector(Rotation + PosRot)); RagDoll = Pawn(Rider); if (AIController(Pawn(Rider).Controller) != None) Throtle = 0.5+0.5*(Normal(Rider.Acceleration) dot Vector(Rider.Rotation)); if (MZone != none) { if (Throtle > 0) { MZone.ThrotleEd = true; MZone.ChangeCourse = true; } else MZone.ChangeCourse = false; MZone.MountEd = true; MZone.LastRide = Level.TimeSeconds; } } if (Rider.IsA('Pawn') == true) { NewVelocity = SpeedAcceleration*Speed*Gravity*(1.1 + Throtle); if (Victim == none) { RotChange = Vector(Pawn(Rider).GetViewRotation()) + EasyAim*(Vector(Rotation) - OldHookRot); Pawn(Rider).SetViewRotation(rotator(RotChange)); OldHookRot = Vector(Rotation); } } else { NewVelocity = CargoSpeed; Rider.SetRotation(Rotation); } if (NewVelocity > HookVelocity) HookVelocity = HookVelocity + ThrotleADRK*ThrotleControll*dt; if (NewVelocity < HookVelocity) HookVelocity = HookVelocity - ThrotleADRK*ThrotleControll*dt; if ((OnRail.SpeedMultiper == 0) || (HookVelocity < 0)) HookVelocity = 0; if (OnRail.LonelyRail == true) { SetLocation(OnRail.Location); HookVelocity = 2; SoundVolume = 0; TransientSoundVolume = 0; } if (OnRail.FreeEnd == true) Die(); if (Rider.IsA('Pawn') != false) ForEach RadiusActors(class'SkyHook', MTG, 512) if (MTG != self) { if ((Vector(MTG.Rotation) dot Vector(Rotation)) > 0) { if ((Normal(Location - MTG.Location) dot Vector(Rotation)) >= 0) { if ((VSize(MTG.Location - Location) < 164) && (MTG.Rider.IsA('Pawn') == false)) { Rider.TakeDamage(25,Pawn(self.Rider),Location,vector(Rotation),Class'Engine.Crushed'); Die(); } if ((AIController(Pawn(Rider).Controller) != None) && (Escape != true) && (OnRail.ThisLine != none) && (OnRail.ThisLine == MTG.OnRail.ThisLine) ) { WeitForReverse = true; Escape = true; } } else { if ( (VSize(MTG.Location - Location) < 164) && (MTG.Rider.IsA('Pawn') == false)) HookVelocity = 0.5*HookVelocity; if ( (AIController(Pawn(Rider).Controller) != None) && (xPawn(MTG.Rider).PlayerReplicationInfo.Team.TeamIndex == xPawn(Rider).PlayerReplicationInfo.Team.TeamIndex) && (Escape == false)) WeitForReverse = true; } } else { if ((VSize(MTG.Location - Location) < 164) && (MTG.Rider.IsA('Pawn') == false)) { Rider.TakeDamage(25,Pawn(self.Rider),Location,vector(Rotation),Class'Engine.Crushed'); Die(); } if ( (Rider.IsA('Pawn') != false) && (AIController(Pawn(Rider).Controller) != None) && (Escape != true) && (OnRail.ThisLine != none) && (OnRail.ThisLine == MTG.OnRail.ThisLine.ReverseLine) ) { WeitForReverse = true; Escape = true; } } } SoundPitch = HookVelocity*16; if (OnRail.LonelyRail != true) { SoundVolume = 64+HookVelocity*16; TransientSoundVolume = 64+HookVelocity*16; } else { SoundVolume = 0; TransientSoundVolume = 0; } if (Trail != none) { Trail.SetLocation(Location - vect(0,0,5)); if (ShowTrails == false) Trail.bHidden = true; else Trail.bHidden = false; } if (Glow != none) { Glow.SetLocation(Location - vect(0,0,5)); if (ShowTrails == false) Glow.bHidden = true; else Glow.bHidden = false; } if (FlyShit != none) { FlyShit.SetLocation(Rider.Location); FlyShit.SetRotation(rotator(Path)); } Dismounter.SetLocation(Location); if ((HookVelocity > 5) && (ShowTrails == false)) FlyShit.bHidden = false; else FlyShit.bHidden = true; if (Pawn(Rider).Controller.IsA('PlayerController')) { Target = GetLookingRail(Pawn(Rider), CheckDir, LookDir); ViewRot = vector(Pawn(Rider).GetViewRotation()); JumpRot = vector(Rotation); ViewRot.Z = 0; JumpRot.Z = 0; Inertia = 1 + (ViewRot dot JumpRot)*HookVelocity/8; if (Target != none) { if (Arrow == none) { if (Target.LonelyRail == true) { Arrow = Spawn(class'SkyLine.Shine', Target); Arrow.NetUpdateFrequency = 60; Arrow.bUpdateSimulatedPosition = true; Shine(Arrow).Master = self; } else { Arrow = Spawn(class'SkyLine.Point', Target); Arrow.NetUpdateFrequency = 60; Arrow.bUpdateSimulatedPosition = true; Point(Arrow).Master = self; } } else { if ((Arrow.IsA('Point') == true) && (Target.LonelyRail == true)) { Arrow.Destroy(); Arrow = Spawn(class'SkyLine.Shine', Target); Shine(Arrow).Master = self; } else if ((Arrow.IsA('Shine') == true) && (Target.LonelyRail != true)) { Arrow.Destroy(); Arrow = Spawn(class'SkyLine.Point', Target); Point(Arrow).Master = self; } } Arrow.SetLocation(Target.Location); if (MZone != none) { MZone.Victim = none; foreach Arrow.RadiusActors(class'Pawn', Victim, 256) if ((Victim.PlayerReplicationInfo.Team == none) || (Victim.PlayerReplicationInfo.Team != Pawn(Rider).PlayerReplicationInfo.Team)) { MZone.Victim = Victim; Victim.SetOverlayMaterial(Shader'XGameShaders.PlayerShaders.LinkHit',1,true); } } if (Marker != none) Marker.Destroy(); JumpDestination = vector(Pawn(Rider).GetViewRotation())*(VSize(Target.Location - Pawn(Rider).Location - Pawn(Rider).EyePosition())-16)+Pawn(Rider).Location; if ((Target.ThisLine != none) && (Target.ThisLine.AutoReverse != true)) Arrow.SetRotation(rotator(Target.GetBoneCoords('End').Origin-Target.GetBoneCoords('Base').Origin)); else Arrow.SetRotation(rotator(Target.GetBoneCoords('Base').Origin-Target.GetBoneCoords('End').Origin)); } else { if (Arrow != none) Arrow.Destroy(); StartTrace = Rider.Location; StartTrace.Z += Pawn(Rider).BaseEyeHeight; if (OnRail.LonelyRail != true) EndTrace = StartTrace + vector(Rider.Rotation)*MaxJumpDistance*Inertia; else EndTrace = StartTrace + vector(Rider.Rotation)*MaxJumpDistance; Wall = Rider.Trace(HitLocation, HitNormal, EndTrace, StartTrace, true); if( (Wall == None) || (Wall.bWorldGeometry == false) ) { EndTrace.Z = StartTrace.Z; BottomTrace = EndTrace; BottomTrace.Z = -MaxJumpDistance; Wall = Rider.Trace(HitLocation, HitNormal, BottomTrace, EndTrace, true); } if( (Wall == None) || (Wall.bWorldGeometry == false) ) { HitLocation = BottomTrace; HitNormal = vect(0,0,-1); } if ((HitNormal.Z <= 0) && (Marker != none)) Marker.Destroy(); JumpDestination = HitLocation + HitNormal*6; if ( Pawn(Rider).Controller.IsA('PlayerController')) { if ((Wall != none) && (Marker == none) && (Arrow == none) && (VSize(JumpDestination - Rider.Location) > 200) && (Wall.IsA('Pawn') == false) && (Wall.IsA('Projectile') == false) && (HitNormal.Z > 0)) { Marker = Spawn(class'SkyLine.Marker', self); Marker.NetUpdateFrequency = 60; Marker.bUpdateSimulatedPosition = true; Marker(Marker).Master = self; } if (Marker != none) { Marker.SetLocation(JumpDestination); Marker.SetRotation(rotator(HitNormal)); if (MZone != none) { MZone.Victim = none; foreach Marker.RadiusActors(class'Pawn', Victim, 164) { if ((Victim.PlayerReplicationInfo.Team == none) || (Victim.PlayerReplicationInfo.Team != Pawn(Rider).PlayerReplicationInfo.Team)) { MZone.Victim = Victim; Victim.SetOverlayMaterial(Shader'XGameShaders.PlayerShaders.LinkHit',1,true); } } } } } } } if (Rider.Physics == PHYS_KarmaRagDoll) { Rider = none; RagDoll.KSetSkelVel(vector(Rotation)*500*HookVelocity); } if ((Rider == none) || ((Vsize(Location-Rider.Location))>60)) Die(); Super.Tick(dt); } function Reverse() { if (OnRail.ThisLine != none) ReverseLine = OnRail.ThisLine.ReverseLine; if (MZone != none) MZone.RevEd = true; if ( (OnRail.ThisLine != none) && (OnRail.ThisLine.ReverseLine != none)) { for (i=0; i<ReverseLine.Rails.Length; i++) { if (NearestRails == none) NearestRails = ReverseLine.Rails; if ( Vsize(Location - ReverseLine.Rails.Location) < Vsize(Location - NearestRails.Location)) NearestRails = ReverseLine.Rails; } if (NearestRails.ThisLine.AutoReverse != true) NearestRails = NearestRails.PrevRails; else NearestRails = NearestRails.NextRails; if ((MZone != none) && (MZone.LocalMounter != none)) MZone.LocalMounter.Destroy(); LocalMounter = Spawn(class'Mounter', NearestRails); LocalMounter.NetUpdateFrequency = 60; LocalMounter.bUpdateSimulatedPosition = true; LocalMounter.SetLocation(NearestRails.Location); LocalMounter.StartRails = NearestRails; if (MZone != none) LocalMounter.MZone = MZone; LocalMounter.Escape = Escape; LocalMounter.AutoMount = Pawn(Rider); LocalMounter.Distance = VSize(Rider.Location - NearestRails.Location); LocalMounter.InitialVel = HookVelocity; LocalMounter.NextDismountPoint = NextDismountPoint; if ((OnRail.LonelyRail != true) && (OnRail.ThisLine !=none)) OnRail.ThisLine.GetOffLine(self); PlaySound(sound'GeneralAmbience.metalfx18',SLOT_None,128); if (HookVelocity < 1) { ReverseDirection.X = (NearestRails.Location - Rider.Location).X; ReverseDirection.Y = (NearestRails.Location - Rider.Location).Y; ReverseDirection.Z = 455 + (NearestRails.Location - Rider.Location).Z; } else { ReverseDirection.X = (NearestRails.Location - Rider.Location).X*HookVelocity; ReverseDirection.Y = (NearestRails.Location - Rider.Location).Y*HookVelocity; ReverseDirection.Z = 455/HookVelocity + (NearestRails.Location - Rider.Location).Z*HookVelocity; } Pawn(Rider).Velocity = ReverseDirection; Pawn(Rider).SetPhysics(Phys_Falling); if (MZone != none) MZone.IsReversing = true; Rider = none; Die(); } WeitForReverse = false; } function Die() { if (Trail != none) Trail.Destroy(); if (Glow != none) Glow.Destroy(); if (Marker != none) Marker.Destroy(); if (Arrow != none) Arrow.Destroy(); if(FlyShit != none) FlyShit.Destroy(); if (RagDoll.Physics != PHYS_KarmaRagDoll) RagDoll.SetPhysics(Phys_Falling); Destroy(); } function Rails GetLookingRail(Pawn Pawner, out vector CheckDir, out vector LookDir ) { local Vector Start; local Rails MayBeThis, LastBetter; local float ADRK; local Actor Something; local vector HL, HN; Start = Pawner.Location + Pawner.EyePosition(); if (Pawner.Controller.Adrenaline >= 2*AdrenalineUsage) ADRK = 1; else ADRK = Pawner.Controller.Adrenaline/(2*AdrenalineUsage); if (Pawner != none) foreach Pawner.RadiusActors( class'Rails', MayBeThis, ADRK*MaxJumpDistance*HookVelocity/1.5) { if ( (MayBeThis.LonelyRail == true) || ((MayBeThis.ThisLine != none) && (MayBeThis.ThisLine.IsOnLine(Pawn(Rider)) == false) && (MayBeThis.ThisLine.ReverseLine.IsOnLine(Pawn(Rider)) == false) || ((VSize(OnRail.Location - MayBeThis.Location) > 1024) && (MayBeThis.ThisLine != OnRail.ThisLine.ReverseLine)) )) { if ( (MayBeThis.ThisLine != none) && (MayBeThis.ThisLine != none) && (MayBeThis.ThisLine.AutoReverse != true)) TargetDir = Vector(MayBeThis.Rotation); else TargetDir = -Vector(MayBeThis.Rotation); CheckDir = MayBeThis.Location - Start; LookDir = vector(Pawner.GetViewRotation())*VSize(CheckDir); Something = Trace(HL, HN, MayBeThis.Location, Pawner.Location); if (LastBetter == none) LastBetter = MayBeThis; if ((Vsize(CheckDir-Lookdir) < VSize(LastBetter.Location - Start - vector(Pawner.GetViewRotation())*VSize(LastBetter.Location - Start))) && (((LookDir dot TargetDir) > 0) || (MayBeThis.LonelyRail == true)) && (MayBeThis != OnRail) && ((Something == none) || (Something == MayBeThis))) LastBetter = MayBeThis; } } CheckDir = LastBetter.Location - Start; LookDir = vector(Pawner.GetViewRotation())*VSize(CheckDir); if ((LastBetter.ThisLine != none) && (LastBetter.ThisLine.AutoReverse != true)) TargetDir = Vector(LastBetter.Rotation); else TargetDir = -Vector(LastBetter.Rotation); if ((Vsize(CheckDir-Lookdir) < 0.25*Vsize(CheckDir)) && (VSize(CheckDir) > 256)) return LastBetter; else { if (Arrow != none) Arrow.Destroy(); return none; } } function SpawnTrais() { if ( (Rider.IsA('Pawn') != false) && (OnRail.LonelyRail !=true) ) { if (Trail != none) Trail.Destroy(); if ( Pawn(Rider).PlayerReplicationInfo.Team.TeamIndex == 1 ) { Trail = Spawn(class'SkyLine.HookTrailBlue', self); Trail.NetUpdateFrequency = 60; Trail.bUpdateSimulatedPosition = true; HookTrailBlue(Trail).Master = self; } else { Trail = Spawn(class'SkyLine.HookTrail', self); Trail.NetUpdateFrequency = 60; Trail.bUpdateSimulatedPosition = true; HookTrail(Trail).Master = self; } } if ( (Rider.IsA('Pawn') != false) && (OnRail.LonelyRail !=true) ) { if (Glow != none) Glow.Destroy(); if ( Pawn(Rider).PlayerReplicationInfo.Team.TeamIndex == 1 ) { Glow = Spawn(class'SkyLine.HookGlowBlue', self); Glow.NetUpdateFrequency = 60; Glow.bUpdateSimulatedPosition = true; HookGlowBlue(Glow).Master = self; } else { Glow = Spawn(class'SkyLine.HookGlow', self); Glow.NetUpdateFrequency = 60; Glow.bUpdateSimulatedPosition = true; HookGlow(Glow).Master = self; } } if (FlyShit != none) FlyShit.Destroy(); FlyShit = Spawn(class'FlyShit', self); } defaultproperties { SpeedAcceleration=1.000000 CargoSpeed=1.000000 Speed=1.000000 MaxJumpDistance=1024.000000 AdrenalineUsage=10.000000 ThrotleControll=1.000000 DrawType=DT_None AmbientSound=Sound'SkyLineSnd.RideLoop' Mesh=SkeletalMesh'SkyLineMesh.Hook' SoundVolume=0 SoundRadius=128.000000 TransientSoundVolume=0.000000 TransientSoundRadius=128.000000 CollisionRadius=64.000000 CollisionHeight=64.000000 bCollideActors=True RemoteRole=ROLE_Authority } |
856, 06 Ноября 14 21:36
хмм, переменная [i] заменилась на bb-код \:
надо в постах вернуть галочку отключения бб-кодов, чтобы такое не происходило Добавлено (07 Ноября 14, 00:36) Мой IP сменился с 89.113.234.78/185.42.146.32 на 83.167.1.167. Теперь будет этот. Надолго. Порты те же. http-сервер .do impossible beat unbeatable |
857, 06 Ноября 14 22:05
Когда буду выкладывать пак, то добавлю все исходники и инструменты, если уж есть желание ковырятса.
А кусок кода прикрепил как сарказм, так как сам путаюсь в своем же коде. Без ефектов и оформления всего 6-7 таких взаимозависимых акторов. Да и еще, плюсом выбраного подхода была возможность менять код скайлайна без изменения уже сделаной карты, что позволяло доделать фикс на пару КБ или типа того. Добавлено (07 Ноября 14, 01:00) --------------------------------------------- Там вроде справа BBcode просто нажатием (де)тогглитса, я просто не обратил внимания Добавлено (07 Ноября 14, 01:05) --------------------------------------------- От положения актора Target который типа Rails отнимаетса положение павна Rider, но Rider не обязательно Pawn... получам вектор от Pawna к Target. в тех местах ничего не замениш какраз, голые вектора... |
858, 06 Ноября 14 22:09
Не, это другое, там просто визуальный редактор чтобы кнопки выше сразу отображали текст с наклоном и тому подобное.
Раньше в опциях было 6 галочек(до обновы дизайна): 1) проверять есть ли предыдущие сообщения, 2) быстрая отправка сообщения или нет, 3) смайлы, 4) подпись, 5) вкл/выкл бб коды, 6) уведомления на мыло Добавлено (07 Ноября 14, 01:09) Мой IP сменился с 89.113.234.78/185.42.146.32 на 83.167.1.167. Теперь будет этот. Надолго. Порты те же. http-сервер .do impossible beat unbeatable |
859, 06 Ноября 14 22:19
)))))))))))))) Rider <ездок> - то, что едет на <крючке>, это не всегда Pawn, контейнеры к примеру или чего по линии ездит... Target типа <рельса>, это цель для прыжка, но используетса далеко не только как цель... короч, если ye ну очень интересно, то вот все исходники но без контента, лень заливать...
|
860, 07 Ноября 14 21:56
А у меня тут FarCry
Infinite War v5.0.2 construction UIP 2.0 - UIPP(UIP 2.1) |
| |||||||||||||||
| |||||||||||||||