Иконка ресурса

FREE MiniCopterSpawn : 1.0.2 1.0.2

Нет прав для скачивания
C#:
using System;
using System.Linq;
using System.Collections;
using System.Collections.Generic;
using Oxide.Core;
using Oxide.Core.Plugins;
using UnityEngine;
using UnityEngine.AI;
using UnityEngine.SceneManagement;
using Facepunch;
using Newtonsoft.Json;
namespace Oxide.Plugins {
    [Info("MiniCopterSpawn", "Nimant", "1.0.2")]
    class MiniCopterSpawn : RustPlugin {
        private const string ochhGsQvnEZsPAfHGMjrERiaiYhL = "assets/content/vehicles/minicopter/minicopter.entity.prefab";
        private static bool kQANBDTEjLJ = false;
        private static int QYvJbtQuxlnSEICgB = LayerMask.GetMask("Terrain", "World", "Construction", "Deployable", "Deployed", "Default", "Tree", "Resource");
        private static List<CzYosNSGwOYukuJ> gjBFeuDRRCuja = new List<CzYosNSGwOYukuJ>();
        private static System.Random geXaCLpuPgjnBDeHPya = new System.Random();
        private class CzYosNSGwOYukuJ {
            public int NmdvKMgXWdloUortj;
            public int lqsaexUsLhbNu;
            public int WUbqjfahnVSNvvRGxdkvejGHUz;
            public int AXmZrRWpdMjSVzYhTxFY;
            public CzYosNSGwOYukuJ(int NmdvKMgXWdloUortj, int lqsaexUsLhbNu, int WUbqjfahnVSNvvRGxdkvejGHUz, int AXmZrRWpdMjSVzYhTxFY) {
                this.NmdvKMgXWdloUortj = NmdvKMgXWdloUortj;
                this.lqsaexUsLhbNu = lqsaexUsLhbNu;
                this.WUbqjfahnVSNvvRGxdkvejGHUz = WUbqjfahnVSNvvRGxdkvejGHUz;
                this.AXmZrRWpdMjSVzYhTxFY = AXmZrRWpdMjSVzYhTxFY;
            }
        }
        private void OnServerInitialized() {
            gjBFeuDRRCuja.Clear();
            for(int EgRjPLKJiLFnznAkyfmE=0; EgRjPLKJiLFnznAkyfmE < (int)Math.Round((decimal)World.Size/1000);
            EgRjPLKJiLFnznAkyfmE++) {
                for(int BnEtKBzWTLTMkEfKuDAUUqj=0; BnEtKBzWTLTMkEfKuDAUUqj < (int)Math.Round((decimal)World.Size/1000);
                BnEtKBzWTLTMkEfKuDAUUqj++) {
                    var si = new CzYosNSGwOYukuJ(1000*EgRjPLKJiLFnznAkyfmE-(int)World.Size/2, 1000*EgRjPLKJiLFnznAkyfmE+(1000-1)-(int)World.Size/2, 1000*BnEtKBzWTLTMkEfKuDAUUqj-(int)World.Size/2, 1000*BnEtKBzWTLTMkEfKuDAUUqj+(1000-1)-(int)World.Size/2);
                    gjBFeuDRRCuja.Add(si);
                }
            }
            timer.Once(3f, sPybWsbgHXFinTsQWGzQfnQHnG);
        }
        private static int XOcOBShcwqosvRhTiDC() => BaseNetworkable.serverEntities.OfType<MiniCopter>().Count();
        private static int dRKmZxrzoogJjITnm(int NmdvKMgXWdloUortj, int lqsaexUsLhbNu, int WUbqjfahnVSNvvRGxdkvejGHUz, int AXmZrRWpdMjSVzYhTxFY) {
            int QgEUKGpirOBxEPrhVOyfZ = 0;
            var CDstSWEiHs = new HashSet<MiniCopter>(BaseNetworkable.serverEntities.OfType<MiniCopter>());
            foreach(var pqQjHSrDsQCCRq in CDstSWEiHs) {
                if (pqQjHSrDsQCCRq == null || pqQjHSrDsQCCRq.IsDestroyed) continue;
                if (pqQjHSrDsQCCRq.transform.position.x > NmdvKMgXWdloUortj && pqQjHSrDsQCCRq.transform.position.x <= lqsaexUsLhbNu && pqQjHSrDsQCCRq.transform.position.z > WUbqjfahnVSNvvRGxdkvejGHUz && pqQjHSrDsQCCRq.transform.position.z <= AXmZrRWpdMjSVzYhTxFY) QgEUKGpirOBxEPrhVOyfZ++;
            }
            return QgEUKGpirOBxEPrhVOyfZ;
        }
        private void sPybWsbgHXFinTsQWGzQfnQHnG() {
            if (!kQANBDTEjLJ) CommunityEntity.ServerInstance.StartCoroutine(WjEEZbEfuHTZJSiZXAXVlGllB());
            timer.Once(60f, sPybWsbgHXFinTsQWGzQfnQHnG);
        }
        private IEnumerator WjEEZbEfuHTZJSiZXAXVlGllB() {
            kQANBDTEjLJ = true;
            var yHLjffhzxqnGgbqgTjlgtNK = (int)Math.Round(MiniCopter.population * gjBFeuDRRCuja.Count());
            var DvXlJeFcXPBwShzkQxuJHz = XOcOBShcwqosvRhTiDC();
            if (DvXlJeFcXPBwShzkQxuJHz < yHLjffhzxqnGgbqgTjlgtNK) {
                int pwSZZCdrBImUYkatddkHlRUR = 0;
                foreach(var WjSQiRnQarMhXPdAzE in gjBFeuDRRCuja) {
                    var lqxzGCpULoRD = dRKmZxrzoogJjITnm(WjSQiRnQarMhXPdAzE.NmdvKMgXWdloUortj, WjSQiRnQarMhXPdAzE.lqsaexUsLhbNu, WjSQiRnQarMhXPdAzE.WUbqjfahnVSNvvRGxdkvejGHUz, WjSQiRnQarMhXPdAzE.AXmZrRWpdMjSVzYhTxFY);
                    for(int EgRjPLKJiLFnznAkyfmE = lqxzGCpULoRD; EgRjPLKJiLFnznAkyfmE < (int)Math.Floor(MiniCopter.population);
                    EgRjPLKJiLFnznAkyfmE++) {
                        BaseEntity dSfQqSmFaRfAjN = null;
                        var QgEUKGpirOBxEPrhVOyfZ = CVDmkslmGrxBeudcz(WjSQiRnQarMhXPdAzE, ref dSfQqSmFaRfAjN);
                        yield return new WaitForSeconds(0.01f);
                        if (QgEUKGpirOBxEPrhVOyfZ) pwSZZCdrBImUYkatddkHlRUR++;
                        else break;
                    }
                }
                if (DvXlJeFcXPBwShzkQxuJHz+pwSZZCdrBImUYkatddkHlRUR < yHLjffhzxqnGgbqgTjlgtNK) {
                    int sHdOidoEzQpCtpMRaxKIRs = 0;
                    while(DvXlJeFcXPBwShzkQxuJHz+pwSZZCdrBImUYkatddkHlRUR < yHLjffhzxqnGgbqgTjlgtNK && sHdOidoEzQpCtpMRaxKIRs < 16) {
                        var ANEqGBWAzJxhgJUOLSbIBuV = gjBFeuDRRCuja[geXaCLpuPgjnBDeHPya.Next(0, gjBFeuDRRCuja.Count())];
                        BaseEntity dSfQqSmFaRfAjN = null;
                        var QgEUKGpirOBxEPrhVOyfZ = CVDmkslmGrxBeudcz(ANEqGBWAzJxhgJUOLSbIBuV, ref dSfQqSmFaRfAjN);
                        if (QgEUKGpirOBxEPrhVOyfZ) pwSZZCdrBImUYkatddkHlRUR++;
                        else sHdOidoEzQpCtpMRaxKIRs++;
                        yield return new WaitForSeconds(0.01f);
                    }
                }
            }
            kQANBDTEjLJ = false;
        }
        private bool CVDmkslmGrxBeudcz(CzYosNSGwOYukuJ WjSQiRnQarMhXPdAzE, ref BaseEntity dSfQqSmFaRfAjN) {
            Vector3 OMNbglnHrExigfTvXZnFzOzCz = default(Vector3);
            for(int EgRjPLKJiLFnznAkyfmE=0; EgRjPLKJiLFnznAkyfmE < 80; EgRjPLKJiLFnznAkyfmE++) {
                var DhapgcDNfrEXPuB = UnityEngine.Random.Range(WjSQiRnQarMhXPdAzE.NmdvKMgXWdloUortj, WjSQiRnQarMhXPdAzE.lqsaexUsLhbNu);
                var TroASBVlpglN = UnityEngine.Random.Range(WjSQiRnQarMhXPdAzE.WUbqjfahnVSNvvRGxdkvejGHUz, WjSQiRnQarMhXPdAzE.AXmZrRWpdMjSVzYhTxFY);
                if (SItrgbbrBJ(DhapgcDNfrEXPuB, TroASBVlpglN, ref OMNbglnHrExigfTvXZnFzOzCz)) {
                    if (!PaGteIELkdJJQBbIpxFkEwWPssv(OMNbglnHrExigfTvXZnFzOzCz, 0.4f)) continue;
                    if (OMNbglnHrExigfTvXZnFzOzCz.y < 0.5f) continue;
                    var XrGiOlMaodyOhvoP = aWXJFlPaCKyINKeBkrlwIaq(OMNbglnHrExigfTvXZnFzOzCz);
                    if (XrGiOlMaodyOhvoP != null) {
                        dSfQqSmFaRfAjN = XrGiOlMaodyOhvoP;
                        return true;
                    }
                }
            }
            return false;
        }
        private bool PaGteIELkdJJQBbIpxFkEwWPssv(Vector3 ZpLihHuVTCSS, float ofDVRHdZoREOc) {
            RaycastHit wcqhZuytrHLmultBu;
            var FOVPCTGrRSTYpDihjodLV = "79";
            var jhttrqgBwMBj = ZpLihHuVTCSS + new Vector3(-1f, 500f, 0f);
            if (Physics.Raycast(jhttrqgBwMBj, Vector3.down, out wcqhZuytrHLmultBu, 1000f, QYvJbtQuxlnSEICgB)) {
                if (Math.Abs(ZpLihHuVTCSS.y - wcqhZuytrHLmultBu.point.y) >= ofDVRHdZoREOc) return false;
            }
            else return false;
            jhttrqgBwMBj = ZpLihHuVTCSS + new Vector3(0f, 500f, -1f);
            if (Physics.Raycast(jhttrqgBwMBj, Vector3.down, out wcqhZuytrHLmultBu, 1000f, QYvJbtQuxlnSEICgB)) {
                if (Math.Abs(ZpLihHuVTCSS.y - wcqhZuytrHLmultBu.point.y) >= ofDVRHdZoREOc) return false;
            }
            else return false;
            jhttrqgBwMBj = ZpLihHuVTCSS + new Vector3(1f, 500f, 0f);
            if (Physics.Raycast(jhttrqgBwMBj, Vector3.down, out wcqhZuytrHLmultBu, 1000f, QYvJbtQuxlnSEICgB)) {
                if (Math.Abs(ZpLihHuVTCSS.y - wcqhZuytrHLmultBu.point.y) >= ofDVRHdZoREOc) return false;
            }
            else return false;
            jhttrqgBwMBj = ZpLihHuVTCSS + new Vector3(0f, 500f, 1f);
            if (Physics.Raycast(jhttrqgBwMBj, Vector3.down, out wcqhZuytrHLmultBu, 1000f, QYvJbtQuxlnSEICgB)) {
                if (Math.Abs(ZpLihHuVTCSS.y - wcqhZuytrHLmultBu.point.y) >= ofDVRHdZoREOc) return false;
            }
            else return false;
            return true;
        }
        private bool SItrgbbrBJ(int DhapgcDNfrEXPuB, int TroASBVlpglN, ref Vector3 OMNbglnHrExigfTvXZnFzOzCz) {
            Vector3 ZpLihHuVTCSS = new Vector3(DhapgcDNfrEXPuB, 500f, TroASBVlpglN);
            RaycastHit wcqhZuytrHLmultBu;
            var QgEUKGpirOBxEPrhVOyfZ = Physics.SphereCast(ZpLihHuVTCSS, 2f, Vector3.down, out wcqhZuytrHLmultBu, 1000, QYvJbtQuxlnSEICgB);
            if (!QgEUKGpirOBxEPrhVOyfZ) return false;
            if (wcqhZuytrHLmultBu.collider.name != "Terrain") return false;
            OMNbglnHrExigfTvXZnFzOzCz = new Vector3(DhapgcDNfrEXPuB, wcqhZuytrHLmultBu.point.y, TroASBVlpglN);
            return true;
        }
        private BaseEntity aWXJFlPaCKyINKeBkrlwIaq(Vector3 OMNbglnHrExigfTvXZnFzOzCz) {
            if (OMNbglnHrExigfTvXZnFzOzCz == default(Vector3)) return null;
            BaseEntity dSfQqSmFaRfAjN = wBIDjbjiOzcXtRnGyncShh(OMNbglnHrExigfTvXZnFzOzCz);
            dSfQqSmFaRfAjN.Spawn();
            return dSfQqSmFaRfAjN;
        }
        private BaseEntity wBIDjbjiOzcXtRnGyncShh(Vector3 position2) {
            var gameObject = Instantiate.GameObject(GameManager.server.FindPrefab(ochhGsQvnEZsPAfHGMjrERiaiYhL), position2, Quaternion.Euler(0, UnityEngine.Random.Range(0.0f, 360.0f), 0));
            gameObject.name = ochhGsQvnEZsPAfHGMjrERiaiYhL;
            SceneManager.MoveGameObjectToScene(gameObject, Rust.Server.EntityScene);
            UnityEngine.Object.Destroy(gameObject.GetComponent<Spawnable>());
            if (!gameObject.activeSelf) gameObject.SetActive(true);
            BaseEntity WtKBPLubRIHvuClwY = gameObject.GetComponent<BaseEntity>();
            return WtKBPLubRIHvuClwY;
        }
    }
}

Автор
15FPS
Скачиваний
0
Просмотры
1
Первый выпуск
Обновление
Оценка
0.00 звёзд 0 оценок

Другие ресурсы пользователя 15FPS

Сверху