public static void strafe(ConsoleSystem.Arg arg) { RaycastHit raycastHit; BasePlayer basePlayer = arg.Player(); if (!basePlayer) { return; } PatrolHelicopterAI patrolHelicopterAI = PatrolHelicopterAI.heliInstance; if (patrolHelicopterAI == null) { Debug.Log("no heli instance"); return; } if (!UnityEngine.Physics.Raycast(basePlayer.eyes.HeadRay(), out raycastHit, 1000f, 1218652417)) { Debug.Log("strafe ray missed"); return; } Debug.Log(string.Concat("strafing :", raycastHit.point)); patrolHelicopterAI.interestZoneOrigin = raycastHit.point; patrolHelicopterAI.ExitCurrentState(); patrolHelicopterAI.State_Strafe_Enter(raycastHit.point, false); }
public static void strafe(ConsoleSystem.Arg arg) { BasePlayer basePlayer = arg.Player(); if (!Object.op_Implicit((Object)basePlayer)) { return; } PatrolHelicopterAI heliInstance = PatrolHelicopterAI.heliInstance; if (Object.op_Equality((Object)heliInstance, (Object)null)) { Debug.Log((object)"no heli instance"); } else { RaycastHit raycastHit; if (Physics.Raycast(basePlayer.eyes.HeadRay(), ref raycastHit, 1000f, 1218652417)) { Debug.Log((object)("strafing :" + (object)((RaycastHit) ref raycastHit).get_point())); heliInstance.interestZoneOrigin = ((RaycastHit) ref raycastHit).get_point(); heliInstance.ExitCurrentState(); heliInstance.State_Strafe_Enter(((RaycastHit) ref raycastHit).get_point(), false); } else { Debug.Log((object)"strafe ray missed"); } } }
private void OnEntitySpawned(BaseEntity Entity) { if (Entity == null) { return; } if (Entity is BaseHelicopter) { anim = 0; BaseHelicopter helicopter = Entity as BaseHelicopter; baseent.Add(helicopter, Entity); var position = Entity.ServerPosition; baseposition.Remove(helicopter); baseposition.Add(helicopter, position); PatrolHelicopterAI AI = Entity.GetComponent <PatrolHelicopterAI>(); baseai.Add(helicopter, AI); BaseCombatEntity pat = Entity as BaseCombatEntity; basecombat.Add(helicopter, pat); //GenerateMarkers(helicopter); DisplayBannerToAll("spawn"); if (debug == true) { Puts($"BEFORE TIMER - IN BasePosition : {baseposition.Count}"); } // bonus info AfterSpawn(); } }
public static void strafe(Arg arg) { BasePlayer basePlayer = ArgEx.Player(arg); if ((bool)basePlayer) { PatrolHelicopterAI heliInstance = PatrolHelicopterAI.heliInstance; RaycastHit hitInfo; if (heliInstance == null) { Debug.Log("no heli instance"); } else if (UnityEngine.Physics.Raycast(basePlayer.eyes.HeadRay(), out hitInfo, 1000f, 1218652417)) { Debug.Log("strafing :" + hitInfo.point); heliInstance.interestZoneOrigin = hitInfo.point; heliInstance.ExitCurrentState(); heliInstance.State_Strafe_Enter(hitInfo.point); } else { Debug.Log("strafe ray missed"); } } }
private void CallHeli(int amount) { int i = 0; while (i < amount) { BaseEntity entity = GameManager.server.CreateEntity("assets/prefabs/npc/patrol helicopter/patrolhelicopter.prefab", new Vector3(), new Quaternion(), true); if (!entity) { return; } PatrolHelicopterAI heliAI = entity.GetComponent <PatrolHelicopterAI>(); entity.Spawn(); currentHelis.Add(entity); float mapSize = (TerrainMeta.Size.x / 2) - 50f; entity.transform.position = new Vector3(-mapSize, 30, mapSize); if (heliToInit) { if (initiator != null) { entity.GetComponent <PatrolHelicopterAI>().State_Move_Enter(initiator.transform.position + new Vector3(0.0f, 20f, 0.0f)); } } i++; } }
private bool CallHeliForPlayer(BasePlayer player) { var playerPos = player.transform.position; float mapWidth = (TerrainMeta.Size.x / 2) - 50f; var heliPos = new Vector3( playerPos.x < 0 ? -mapWidth : mapWidth, 30, playerPos.z < 0 ? -mapWidth : mapWidth ); BaseHelicopter heli = GameManager.server.CreateEntity("assets/prefabs/npc/patrol helicopter/patrolhelicopter.prefab", new Vector3(), new Quaternion(), true) as BaseHelicopter; if (!heli) { return(false); } PatrolHelicopterAI heliAI = heli.GetComponent <PatrolHelicopterAI>(); heli.Spawn(); heli.transform.position = heliPos; var component = heli.gameObject.AddComponent <PersonalHeliComponent>(); component.Init(this, player); foreach (var p in BasePlayer.activePlayerList) { SendReply(p, _("PlayerCalled", p.UserIDString, $"<color=#63ff64>{player.displayName}</color>")); } return(true); }
void Awake() { helicopter = GetComponent <BaseHelicopter>(); ai = GetComponent <PatrolHelicopterAI>(); heliId = CuiHelper.GetGuid(); isDieing = false; enabled = false; }
// Hide from the patrol helicopter private object CanHelicopterTarget(PatrolHelicopterAI heli, BasePlayer basePlayer) { if (IsInvisible(basePlayer)) { return(false); } return(null); }
// heli private object CanHelicopterTarget(PatrolHelicopterAI heli, BasePlayer basePlayer) { if (_data.Contains(basePlayer)) { return(false); } return(null); }
private object CanHelicopterTarget(PatrolHelicopterAI heli, BaseEntity entity) { if (IsWearingBarrel(entity)) { return(false); } return(null); }
private object CanHelicopterStrafeTarget(PatrolHelicopterAI entity, BasePlayer target) { if (_data.Contains(target)) { return(false); } return(null); }
bool CanHelicopterTarget(PatrolHelicopterAI heli, BasePlayer player) { if (player != null && permission.UserHasPermission(player.UserIDString, config.perm)) { return(false); } else { return(true); } }
public override void ServerInit() { base.ServerInit(); this.myAI = base.GetComponent <PatrolHelicopterAI>(); if (!this.myAI.hasInterestZone) { this.myAI.SetInitialDestination(Vector3.zero, 1.25f); this.myAI.targetThrottleSpeed = 1f; this.myAI.ExitCurrentState(); this.myAI.State_Patrol_Enter(); } }
public override void ServerInit() { base.ServerInit(); this.myAI = (PatrolHelicopterAI)((Component)this).GetComponent <PatrolHelicopterAI>(); if (this.myAI.hasInterestZone) { return; } this.myAI.SetInitialDestination(Vector3.get_zero(), 1.25f); this.myAI.targetThrottleSpeed = 1f; this.myAI.ExitCurrentState(); this.myAI.State_Patrol_Enter(); }
void Awake() { Helicopter = GetComponent <BaseHelicopter>(); AI = Helicopter.GetComponent <PatrolHelicopterAI>(); Helicopter.maxCratesToSpawn = 0; enabled = true; chopperSurvival.timer.Once(config.HelicopterSettings.CheckDistanceTimer, () => { if (this != null) { CheckDistance(GetComponent <BaseEntity>()); } }); }
public Entity PatrolHelicopterAt(Vector3 position, float height = 10f) { BaseEntity baseEntity = GameManager.server.CreateEntity("assets/prefabs/npc/patrol helicopter/patrolhelicopter.prefab", default(Vector3), default(Quaternion), true); if (baseEntity) { PatrolHelicopterAI component = baseEntity.GetComponent <PatrolHelicopterAI>(); component.SetInitialDestination(position + new Vector3(0, height, 0), 0.25f); baseEntity.Spawn(true); return(new Entity(baseEntity)); } return(null); }
private void SpawnChopper(Vector3 position) { BaseEntity entity = GameManager.server.CreateEntity(PREFAB, new Vector3(), new Quaternion()); if (!entity) { return; } PatrolHelicopterAI helicopter = entity.GetComponent <PatrolHelicopterAI>(); helicopter.SetInitialDestination(position); entity.Spawn(); }
private void CallHeli() { BaseEntity entity = GameManager.server.CreateEntity("assets/prefabs/npc/patrol helicopter/patrolhelicopter.prefab", new Vector3(), new Quaternion()); if (!entity) { return; } Puts($"Helicopter called to X:{_x} Z:{_z}"); PatrolHelicopterAI helicopter = entity.GetComponent <PatrolHelicopterAI>(); helicopter.SetInitialDestination(new Vector3(_x, 20f, _z)); entity.Spawn(); }
private void Awake() { player = GetComponent <BasePlayer>(); input = player.serverInput; rocketcycletimer = 0.0; reloadtimer = 0.0; isReloading = false; rocketNapalmReploadTime = RocketNapalmReloadTime; rocketMax = RocketMax; hasRockets = true; napalmMax = NapalmMax; hasNapalm = true; rocketDelay = RocketDelay; bulletDamage = BulletDamage; rocketcycle = false; PlayerPOS = player.transform.position + player.eyes.BodyForward() * 3f; string prefab = "assets/prefabs/npc/patrol helicopter/patrolhelicopter.prefab"; helicopterBase = GameManager.server.CreateEntity(prefab); heliAI = helicopterBase.GetComponent <PatrolHelicopterAI>(); heliAI.enabled = false; heliturret = helicopterBase.GetComponent <HelicopterTurret>(); heli = helicopterBase.GetComponent <BaseHelicopter>(); heli.InitalizeWeakspots(); if (!SpawnCrates) { heli.maxCratesToSpawn = 0; } heli.bulletDamage = bulletDamage; heli.spotlightTarget = FindTarget(target); helicopterBase.Spawn(); if (ShowCockpitOverlay) { CockpitOverlay(player); } if (ShowCrosshair) { CrosshairOverlay(player); } helicopterBase.transform.localPosition = PlayerPOS; helicopterBase.transform.rotation = player.eyes.rotation; }
void FindTargets(PatrolHelicopterAI heli) { List <NPCPlayer> nearbyNPCPlayers = new List <NPCPlayer>(); Vis.Entities(heli.transform.position, config.targetRadius, nearbyNPCPlayers); foreach (var player in nearbyNPCPlayers) { if (player.userID.IsSteamId() && permission.UserHasPermission(player.UserIDString, config.perm)) { return; } if (player is Scientist && !config.shootScientist) { continue; } if (player.ShortPrefabName == "scarecrow" || player.ShortPrefabName == "murderer" && !config.shootZombies) { continue; } heli._targetList.Add(new PatrolHelicopterAI.targetinfo(player, player)); } if (config.shootAnimals) { List <BaseAnimalNPC> nearbyAnimals = new List <BaseAnimalNPC>(); Vis.Entities(heli.transform.position, 100, nearbyAnimals); foreach (var animal in nearbyAnimals) { if (!config.shootAnimals) { continue; } heli.leftGun.SetTarget(animal); heli.rightGun.SetTarget(animal); } } if (heli._targetList.Any()) { heli.timeBetweenRockets = config.timeBetweenRockets; ServerMgr.Instance.StartCoroutine(RocketTimer(heli)); } }
IEnumerator RocketTimer(PatrolHelicopterAI heli) { float time = Time.time; int i = 0; while (i <= config.rocketsToFire) { if (Time.time - time > 0.5f) { FireRocket(heli); time = Time.time; i++; } yield return(null); } yield break; }
private void FireRocket(PatrolHelicopterAI heliAI) { if (heliAI == null || !(heliAI?.IsAlive() ?? false)) { return; } if (heliAI._targetList.Count == 0) { return; } var num1 = 4f; var strafeTarget = heliAI._targetList[0].ply.ServerPosition; if (strafeTarget == Vector3.zero) { return; } var vector3 = heliAI.transform.position + heliAI.transform.forward * 1f; var direction = (strafeTarget - vector3).normalized; if (num1 > 0.0) { direction = Quaternion.Euler(UnityEngine.Random.Range((float)(-num1 * 0.5), num1 * 0.5f), UnityEngine.Random.Range((float)(-num1 * 0.5), num1 * 0.5f), UnityEngine.Random.Range((float)(-num1 * 0.5), num1 * 0.5f)) * direction; } var flag = heliAI.leftTubeFiredLast; heliAI.leftTubeFiredLast = !flag; Effect.server.Run(heliAI.helicopterBase.rocket_fire_effect.resourcePath, heliAI.helicopterBase, StringPool.Get("rocket_tube_" + (!flag ? "right" : "left")), Vector3.zero, Vector3.forward, null, true); var entity = GameManager.server.CreateEntity(heliAI.rocketProjectile_Napalm.resourcePath, vector3, new Quaternion(), true); if (entity == null) { return; } var projectile = entity.GetComponent <ServerProjectile>(); if (projectile != null) { projectile.InitializeVelocity(direction * projectile.speed); } entity.OwnerID = 1337; //assign ownerID so it doesn't infinitely loop on OnEntitySpawned entity.Spawn(); }
public void Update() { if (this.helicopterBase.isClient) { return; } PatrolHelicopterAI.heliInstance = this; this.UpdateTargetList(); this.MoveToDestination(); this.UpdateRotation(); this.UpdateSpotlight(); this.AIThink(); this.DoMachineGuns(); if (!this.isRetiring) { float single = Mathf.Max(this.spawnTime + PatrolHelicopter.lifetimeMinutes * 60f, this.lastDamageTime + 120f); if (UnityEngine.Time.realtimeSinceStartup > single) { this.Retire(); } } }
private void callHeli(int num = 1) { int i = 0; while (i < num) { BaseEntity entity = GameManager.server.CreateEntity("assets/prefabs/npc/patrol helicopter/patrolhelicopter.prefab", new Vector3(), new Quaternion(), true); if (!(bool)((UnityEngine.Object)entity)) { return; } PatrolHelicopterAI heliAI = entity.GetComponent <PatrolHelicopterAI>(); heliAI.maxSpeed = (float)HeliSpeed; //helicopter speed //Change the health & weakpoint(s) heath ((BaseCombatEntity)entity).startHealth = HeliHP; var weakspots = ((BaseHelicopter)entity).weakspots; weakspots[0].maxHealth = HeliHP / 2; weakspots[0].health = HeliHP / 2; weakspots[1].maxHealth = HeliHPRudder; weakspots[1].health = HeliHPRudder; entity.Spawn(true); i++; } }
private object CanHelicopterTarget(PatrolHelicopterAI heli, BasePlayer player) => IsLimited(player) ? false : (object)null;
private object CanHelicopterStrafeTarget(PatrolHelicopterAI heli, BasePlayer player) => IsInvisible(player) ? (object)false : null;
private object CanHelicopterTarget(PatrolHelicopterAI heliAi, BasePlayer player) { return(InvokePersonal <PersonalHeliComponent, object>(heliAi?.helicopterBase?.gameObject, personalHeli => { return personalHeli.CanInterractWith(player) ? null : (object)false; })); }
private object CanHelicopterStrafeTarget(PatrolHelicopterAI entity, BasePlayer target) => IsLimited(target) ? false : (object)null;
private void PatrolHUD() { int patrolnum = basemessage.Count; anim = anim + 1; double colonnegauche = 0.00; colonnegauche = colonnegauche + (anim * 0.16); if (colonnegauche > 0.89) { anim = 0; colonnegauche = 0.00; } double colonnedroite = colonnegauche + 0.15; double lignehaut = 0.80; double lignebas = lignehaut - 0.10; int Round = 1; int round = -1; List <string> messagelist = new List <string>(); List <BaseHelicopter> helilist = new List <BaseHelicopter>(); List <PatrolHelicopterAI> ailist = new List <PatrolHelicopterAI>(); string[] messagearray; BaseHelicopter[] heliarray; PatrolHelicopterAI[] aiarray; foreach (var paire in basemessage) { messagelist.Add(paire.Value); helilist.Add(paire.Key); if (baseai.ContainsKey(paire.Key) == true) { PatrolHelicopterAI ai; baseai.TryGetValue(paire.Key, out ai); ailist.Add(ai); } } messagearray = messagelist.ToArray(); heliarray = helilist.ToArray(); aiarray = ailist.ToArray(); if (debug == true) { Puts($"BaseMessage COUNT : {messagelist.Count}"); } for (Round = 1; Round <= patrolnum; Round++) { round = round + 1; double lignedecalage = 0.11 * round; var CuiElement = new CuiElementContainer(); var PatrolHUDBanner = CuiElement.Add(new CuiPanel { Image = { Color = HUDcolor }, RectTransform = { AnchorMin = $"0.0 {lignebas - lignedecalage}", AnchorMax = $"0.10 {lignehaut - lignedecalage}" }, CursorEnabled = false }); /*var closeButton = new CuiButton{Button ={Close = PatrolHUDBanner,Color = "0.0 0.0 0.0 0.6"},RectTransform ={AnchorMin = "0.90 0.00",AnchorMax = "0.99 1.00"},Text ={Text = "X",FontSize = 20,Align = TextAnchor.MiddleCenter}}; * CuiElement.Add(closeButton, PatrolHUDBanner); */ foreach (var player in BasePlayer.activePlayerList) { Vector3 basepos; baseposition.TryGetValue(heliarray[round], out basepos); int dist = (int)Vector3.Distance(player.transform.position, basepos); string finalmessage = $": <color=orange>{dist}m.</color> away.{messagearray[round]}"; PatrolHelicopterAI myAI = aiarray[round]; if (myAI.PlayerVisible(player) == true) { if (debug == true) { Puts($"PLAYER {player.displayName} IS VISIBLE !"); } finalmessage = $"{finalmessage}\n<color=red>YOU ARE VISIBLE</color>"; } CuiElement.Add(new CuiLabel { Text = { Text = $"<color=white>#{round+1}</color> {finalmessage}", FontSize = HUDfontsize, Align = TextAnchor.MiddleLeft, Color = "0.0 0.0 0.0 1" }, RectTransform = { AnchorMin = "0.10 0.10", AnchorMax = "0.90 0.79" } }, PatrolHUDBanner); if (ImageLibrary == true) { CuiElement.Add(new CuiElement { Name = CuiHelper.GetGuid(), Parent = PatrolHUDBanner, Components = { new CuiRawImageComponent { Png = icondapatrol }, new CuiRectTransformComponent { AnchorMin = $"{colonnegauche} 0.80", AnchorMax = $"{colonnedroite} 0.99" } } }); } CuiHelper.AddUi(player, CuiElement); timer.Once(5, () => { CuiHelper.DestroyUi(player, PatrolHUDBanner); }); } } }