void UpdateAutoTurret(AutoTurret turret, bool justCreated = false) { CheckAutoTurretAmmo(turret); string userID = turret.OwnerID.ToString(); float turretHealth = FromPermission(userID, autoHealths, defaultAutoHealth); string ammoType = FromPermission(userID, ammoTypes, defaultAmmoType); InitializeTurret(turret, turretHealth, justCreated); turret.bulletSpeed = FromPermission(userID, bulletSpeeds, defaultBulletSpeed); turret.sightRange = FromPermission(userID, sightRanges, defaultSightRange); turret.aimCone = FromPermission(userID, aimCones, defaultAimCone); var def = ItemManager.FindItemDefinition(ammoType); if (def is ItemDefinition) { turret.ammoType = def; ItemModProjectile projectile = def.GetComponent <ItemModProjectile> (); if (projectile is ItemModProjectile) { turret.gun_fire_effect.guid = projectile.projectileObject.guid; turret.bulletEffect.guid = projectile.projectileObject.guid; } } else { PrintWarning("No ammo of type ({0})", ammoType); } turret.Reload(); turret.SendNetworkUpdateImmediate(justCreated); }
void AddSwitch(AutoTurret aturret) { ElectricBattery bat = null; if (IsBatEnabled()) { bat = AddBattery(aturret.GetParentEntity() as MiniCopter); } ElectricSwitch aSwitch = aturret.GetComponentInChildren <ElectricSwitch>(); aSwitch = GameManager.server.CreateEntity(switchPrefab, aturret.transform.position)?.GetComponent <ElectricSwitch>(); if (aSwitch == null) { return; } aSwitch.pickup.enabled = false; aSwitch.SetParent(aturret); aSwitch.transform.localPosition = new Vector3(0f, -0.65f, 0.325f); aSwitch.transform.localRotation = Quaternion.Euler(0, 0, 0); DestroyMeshCollider(aSwitch); DestroyGroundComp(aSwitch); aSwitch.Spawn(); aSwitch._limitedNetworking = false; if (!IsBatEnabled()) { RunWire(aSwitch, 0, aturret, 0, 12); } else if (bat != null) { RunWire(bat, 0, aSwitch, 0); RunWire(aSwitch, 0, aturret, 0); } }
private object OnTurretAuthorize(AutoTurret turret, BasePlayer player) { if (HasPermission(player)) { return(null); } if (!Configuration.EnforceTurrets) { return(null); } if (turret.authorizedPlayers.Count < Configuration.MaxPlayers) { return(null); } ProcessConfiguration(player, "turret"); LogToFile("Turret", Lang("logMessage") .Replace("{time}", DateTime.UtcNow.ToShortDateString()) .Replace("{player}", player.displayName) .Replace("{steamID}", player.UserIDString) .Replace("{coordinates}", FormattedCoordinates(player)), this); return(false); }
private static void AddRigidBodyToTriggerCollider(AutoTurret turret) { // Without this hack, the drone's sweep test can collide with other entities using the // turret trigger collider, causing the drone to ocassionally reduce altitude like when // it's close to the ground. turret.targetTrigger.GetOrAddComponent <Rigidbody>().isKinematic = true; }
private object CheckTurret(AutoTurret turret) { CodeLock _lock = turret.GetComponentInChildren <CodeLock>(); if (!_lock) { return(null); } BasePlayer player = FindBasePlayer(turret.transform.position); if (player == null) { return(null); } if (_lock.code == string.Empty) { return(null); } if (_lock.whitelistPlayers.Contains(player.userID)) { return(null); } player.ChatMessage(msg("Not Allowed", player.UserIDString)); if (doEffects) { Effect.server.Run(effectDenied, _lock.transform.position); } return(true); }
private bool?OnTurretTarget(AutoTurret turret, BaseCombatEntity target) { if (turret == null || target == null || GetParentDrone(turret) == null) { return(null); } if (target is BaseAnimalNPC && !_pluginConfig.TargetAnimals) { return(false); } var basePlayer = target as BasePlayer; if (basePlayer != null) { if (basePlayer.IsNpc && !_pluginConfig.TargetNPCs) { return(false); } // Don't target human or NPC players in safe zones, unless they are hostile. if (basePlayer.InSafeZone() && (basePlayer.IsNpc || !basePlayer.IsHostile())) { return(false); } return(null); } return(null); }
private void SpawnGuns() { var rotation = mainBoat.transform.rotation; var position = mainBoat.transform.position; BaseEntity entity = GameManager.server.CreateEntity("assets/prefabs/npc/autoturret/autoturret_deployed.prefab", position, rotation, true); entity.SetParent(mainBoat, 0); entity.transform.localPosition = new Vector3(0f, 1.2f, 4.2f); entity.transform.localEulerAngles = new Vector3(0f, 0f, 0f); entity?.Spawn(); turret = entity.GetComponent <AutoTurret>(); turret.SetPeacekeepermode(true); turret.InitializeControl(null); turret.UpdateFromInput(100, 0); turret.isLootable = false; turret.dropChance = 0; spawnedEntities.Add(entity); turret.inventory.Clear(); ItemManager.CreateByName("lmg.m249", 1).MoveToContainer(turret.inventory, 0); ItemManager.CreateByName("ammo.rifle", 1000).MoveToContainer(turret.inventory, 1); turret.UpdateAttachedWeapon(); turret.Reload(); }
private static void AddPlayer(AutoTurret turret, PlayerNameID playerNameId) { RemovePlayer(turret, playerNameId.userid); turret.authorizedPlayers.Add(playerNameId); turret.target = null; turret.SendNetworkUpdate(); }
void AuthToTurret(BasePlayer player, AutoTurret turret, Dictionary <ulong, string> authList) { bool isOnline = false; if (turret.IsOnline()) { turret.SetIsOnline(false); isOnline = true; } turret.authorizedPlayers.Clear(); foreach (var friend in authList) { turret.authorizedPlayers.Add(new ProtoBuf.PlayerNameID { userid = friend.Key, username = friend.Value }); } turret.SendNetworkUpdateImmediate(); player.SendNetworkUpdateImmediate(); if (isOnline) { turret.SetIsOnline(true); } SendReply(player, string.Format(msg("turretSuccess"), authList.Count)); return; }
private void MaybeImproveAim(AutoTurret autoTurret) { if (autoTurret is NPCAutoTurret) { return; } if (_pluginConfig.OnlyVehicles && GetParentVehicle(autoTurret) == null) { return; } if (!_pluginConfig.RequirePermission) { ImproveAiming(autoTurret); return; } var ownerId = autoTurret.OwnerID; if (ownerId == 0 || !permission.UserHasPermission(ownerId.ToString(), PermissionUse)) { return; } ImproveAiming(autoTurret); }
private object OnSwitchToggle(ElectricSwitch eswitch, BasePlayer player) { if (IsBatEnabled()) { return(null); } BaseEntity parent = eswitch.GetParentEntity(); if (parent != null && parent.PrefabName.Equals(autoturretPrefab)) { AutoTurret turret = parent as AutoTurret; if (turret == null) { return(null); } if (!eswitch.IsOn()) { PowerTurretOn(turret); } else { PowerTurretOff(turret); } } return(null); }
private object OnTurretTarget(AutoTurret turret, BaseCombatEntity entity) { var player = entity as BasePlayer; return(player == null || player.IsNpc || player.net?.connection == null || !IsLimited(player) ? (object)null : false); }
void OnEntitySpawned(AutoTurret entity) { if (entity.PrefabName != autoTurretPrefab) { return; } entity.inventory.capacity = 2; }
private void Awake() { Turret = GetComponent <AutoTurret>(); var tickInterval = _pluginInstance._pluginConfig.UpdateIntervalSeconds; InvokeRandomized(MaybeUpdateAim, UnityEngine.Random.Range(0f, 1f), tickInterval, tickInterval * 0.25f); }
private object OnTurretClearList(AutoTurret turret, BasePlayer player) { if (CheckTurretNoSphereCast(turret, player) == null) { return(null); } return(true); }
private void OnTurretModeToggle(AutoTurret turret) { if (CheckTurret(turret) == null) { return; } turret.SetPeacekeepermode(!turret.PeacekeeperMode()); }
private void Awake() { turret = GetComponent <AutoTurret>(); if (turret != null) { InvokeRepeating("FindTargets", 5f, 1.0f); } }
private void ImproveAiming(AutoTurret autoTurret) { if (ImproveAimWasBlocked(autoTurret)) { return; } var aimComponent = autoTurret.gameObject.AddComponent <TurretAimImprover>(); }
public void PowerTurretOn(AutoTurret turret) { turret.SetFlag(BaseEntity.Flags.Reserved8, true); turret.InitiateStartup(); if (!onlineTurrets.Contains(turret)) { onlineTurrets.Add(turret); } }
private void PowerTurretOff(AutoTurret turret) { turret.SetFlag(BaseEntity.Flags.Reserved8, false); turret.InitiateShutdown(); if (onlineTurrets.Contains(turret)) { onlineTurrets.Remove(turret); } }
object CanBeTargeted(BasePlayer player, BaseCombatEntity entity) { if (permission.UserHasPermission(player.UserIDString, turretsIgnore)) { return(false); } else if (permission.UserHasPermission(player.UserIDString, turretsNeverIgnore)) { return(null); } if (entity is NPCAutoTurret && _config.NPCTurretsAffected) { BuildingPrivlidge priviledge = entity.GetBuildingPrivilege(); if (priviledge != null && !priviledge.IsAuthed(player) && player.IsBuildingBlocked() && player.IsVisible(new Vector3(entity.transform.position.x, entity.transform.position.y + 0.8f, entity.transform.position.z), new Vector3(player.transform.position.x, player.transform.position.y + 1.5f, player.transform.position.z))) { return(null); } else { return(false); } } if ((entity is AutoTurret && !(entity is NPCAutoTurret) && _config.autoturretsAffected)) { AutoTurret turret = entity as AutoTurret; BuildingPrivlidge priviledge = turret.GetBuildingPrivilege(); if (priviledge != null && !priviledge.IsAuthed(player) && player.IsBuildingBlocked() && player.IsVisible(new Vector3(turret.transform.position.x, turret.transform.position.y + 0.8f, turret.transform.position.z), new Vector3(player.transform.position.x, player.transform.position.y + 1.5f, player.transform.position.z))) { if (_config.autoturretsShootAuthed && turret.IsAuthed(player)) { turret.SetTarget(player); return(null); } else if (!turret.IsAuthed(player)) { return(null); } } return(false); } if ((entity is FlameTurret && _config.flameTrapsAffected) || (entity is GunTrap && _config.shotgunTrapsAffected) && !player.IsBuildingBlocked() || !player.IsVisible(entity.transform.position, player.transform.position, Mathf.Infinity)) { return(false); } return(null); }
// Cancels targeting if ShareAutoTurrets is enabled and target is a friend of the turret's owner. object OnTurretTarget(AutoTurret turret, BaseCombatEntity target) { BasePlayer player; return(configData.Rust.ShareAutoTurrets && (player = (target as BasePlayer)) != null && HasFriend(turret.OwnerID, player.userID) ? @false : null); }
private object OnTurretTarget(AutoTurret turret, BaseCombatEntity entity) { var basePlayer = entity as BasePlayer; if (basePlayer != null && _data.Contains(basePlayer)) { return(false); } return(null); }
private void UpdateTurret(AutoTurret turret, bool justCreated = false) { CheckAmmo(turret); string userID = turret.OwnerID.ToString(); float turretHealth = GetHealth(userID); string ammoType = GetAmmoType(userID); bulletDamageField.SetValue(turret, GetBulletDamage(userID)); if (justCreated) { healthField.SetValue(turret, turretHealth); } maxHealthField.SetValue(turret, turretHealth); if (justCreated) { turret.InitializeHealth(turretHealth, turretHealth); } else { turret.InitializeHealth(turret.health, turretHealth); } turret.bulletSpeed = GetBulletSpeed(userID); turret.sightRange = GetSightRange(userID); turret.startHealth = turretHealth; turret.aimCone = GetAimCone(userID); var def = ItemManager.FindItemDefinition(ammoType); if (def is ItemDefinition) { turret.ammoType = def; ItemModProjectile projectile = def.GetComponent <ItemModProjectile>(); if (projectile is ItemModProjectile) { turret.gun_fire_effect.guid = projectile.projectileObject.guid; turret.bulletEffect.guid = projectile.projectileObject.guid; } } else { PrintWarning("No ammo of type ({0})", ammoType); } turret.Reload(); //turret.enableSaving = false; //turret.ServerInit(); turret.SendNetworkUpdateImmediate(justCreated); }
void OnTurretAuthorize(AutoTurret turret, BasePlayer player) { if (turret.IsAuthed(player)) { return; } var nameListLink = new List <string>(); var nameList = new List <string>(); var statusList = new List <string>(); var idList = new List <ulong>(); var positionList = new List <string>(); if (turret.authorizedPlayers.Count + 1 > configData.MaxAuth) { Puts(turret.authorizedPlayers[0].username); foreach (var authed in turret.authorizedPlayers) { nameListLink.Add($"[{authed.username}](https://steamcommunity.com/profiles/{authed.userid})"); nameList.Add(authed.username); idList.Add(authed.userid); var authedPlayer = BasePlayer.FindAwakeOrSleeping(authed.ToString()); if (authedPlayer == null || authedPlayer.IsConnected == false) { statusList.Add("Offline"); } else if (authedPlayer.IsConnected) { statusList.Add("Online"); } } positionList.Add($"Teleportpos ({turret.transform.position.x.ToString().Substring(0, 5)},{turret.transform.position.y.ToString().Substring(0, 5)},{turret.transform.position.z.ToString().Substring(0, 5)})"); nameList.Add(player.displayName); nameListLink.Add($"[{player.displayName}](https://steamcommunity.com/profiles/{player.userID})"); idList.Add(player.userID); if (player.IsConnected) { statusList.Add("Online"); } if (configData.IngameNotificationEnable) { NotifyAdminsIngame(positionList, nameList, statusList, idList); } if (configData.DiscordWebhookEnable && configData.DiscordWebhook != "" && configData.DiscordWebhook != null) { SendDiscordMessage(nameListLink, idList, positionList, statusList); } } }
private static void RemovePlayer(AutoTurret turret, ulong userId) { for (int i = turret.authorizedPlayers.Count - 1; i >= 0; i--) { if (turret.authorizedPlayers[i].userid != userId) { continue; } turret.authorizedPlayers.RemoveAt(i); turret.SendNetworkUpdate(); break; } }
public void FireTurretsGuns(BasePlayer player, AutoTurret turret) { if (turret.IsOnline() == true) { if (turret.GetAttachedWeapon().AmmoFraction() <= 0) { //nextShootTime = Time.time + turret.GetAttachedWeapon().GetReloadDuration(); turret.GetAttachedWeapon().TopUpAmmo(); //canGunShoot = false; } turret.FireAttachedGun(Vector3.zero, ConVar.PatrolHelicopter.bulletAccuracy); } }
// Redirect damage from the turret to the drone. private bool?OnEntityTakeDamage(AutoTurret turret, HitInfo info) { var drone = GetParentDrone(turret); if (drone == null) { return(null); } drone.Hurt(info); HitNotify(drone, info); return(true); }
private bool unflipTurreT(BaseEntity turret, BasePlayer player) { try{ if (turret.transform.rotation.w != -0.00f) { return(false); } AutoTurret autoTurret = GameManager.server.CreateEntity(pf, new Vector3(turret.transform.position.x, turret.transform.position.y - 3f, turret.transform.position.z), new Quaternion(0.0f, 0.1f, 0.0f, 1.0f), true) as AutoTurret; autoTurret.Spawn(); autoTurret.health = turret.Health(); turretinv.Add(autoTurret, 0); foreach (var item in turret.GetComponent <AutoTurret>().inventory.itemList.ToList()) { if (item.info.displayName.english == ("5.56 Rifle Ammo")) { turretinv[autoTurret] = turretinv[autoTurret] + item.amount; } } turretplayer.Add(autoTurret, new AutoPlayer { }); foreach (var target in turret.GetComponent <AutoTurret>().authorizedPlayers) { turretplayer[autoTurret].players.Add(target); } Item itemn = BuildItems("ammo.rifle", turretinv[autoTurret]); if (itemn != null) { itemn.MoveToContainer(autoTurret.inventory); } turretinv.Remove(autoTurret); foreach (var entry in turretplayer[autoTurret].players) { autoTurret.authorizedPlayers.Add(entry); } turretplayer.Remove(autoTurret); autoTurret.SendNetworkUpdateImmediate(); turret.KillMessage(); return(true); } catch (System.Exception) { return(false); } }
private object OnTurretTarget(AutoTurret turret, BaseCombatEntity entity) { var player = entity as BasePlayer; if (player == null) { return(null); } if (!IsAuthed(player, turret)) { return(null); } Auth(turret, GetPlayerNameId(player)); return(false); }