Esempio n. 1
0
    /// <summary>
    /// 挂机防踢
    /// </summary>
    /// <param name="isEnable"></param>
    public static void AntiAFK(bool isEnable)
    {
        /*
         * idleKick: {('262145', '87')}    GLOBAL IDLEKICK_WARNING1
         * idleKick: {('262145', '88')}    GLOBAL IDLEKICK_WARNING2
         * idleKick: {('262145', '89')}    GLOBAL IDLEKICK_WARNING3
         * idleKick: {('262145', '90')}    GLOBAL IDLEKICK_KICK
         * idleKick: {('262145', '8248')}    GLOBAL ConstrainedKick_Warning1
         * idleKick: {('262145', '8249')}    GLOBAL ConstrainedKick_Warning2
         * idleKick: {('262145', '8250')}    GLOBAL ConstrainedKick_Warning3
         * idleKick: {('262145', '8251')}    GLOBAL ConstrainedKick_Kick
         * timeStoodIdle: {('1648034', '1156')}    GLOBAL time in ms
         * idleKick: {('1648034', '1172')}    GLOBAL
         */

        // joaat("weapon_minigun");
        Hacks.WriteGA <int>(262145 + 87, isEnable ? 99999999 : 120000);        // 120000     GLOBAL IDLEKICK_WARNING1
        Hacks.WriteGA <int>(262145 + 88, isEnable ? 99999999 : 300000);        // 300000     GLOBAL IDLEKICK_WARNING2
        Hacks.WriteGA <int>(262145 + 89, isEnable ? 99999999 : 600000);        // 600000     GLOBAL IDLEKICK_WARNING3
        Hacks.WriteGA <int>(262145 + 90, isEnable ? 99999999 : 900000);        // 900000     GLOBAL IDLEKICK_KICK
        // 742014
        Hacks.WriteGA <int>(262145 + 8248, isEnable ? 2000000000 : 30000);     // 30000      GLOBAL ConstrainedKick_Warning1
        Hacks.WriteGA <int>(262145 + 8249, isEnable ? 2000000000 : 60000);     // 60000      GLOBAL ConstrainedKick_Warning2
        Hacks.WriteGA <int>(262145 + 8250, isEnable ? 2000000000 : 90000);     // 90000      GLOBAL ConstrainedKick_Warning3
        Hacks.WriteGA <int>(262145 + 8251, isEnable ? 2000000000 : 120000);    // 120000     GLOBAL ConstrainedKick_Kick
    }
Esempio n. 2
0
        public override void Use(Player p, string message)
        {
            if ((bool)p.ExtraData["Spec"])
            {
                p.ExtraData.ChangeOrCreate("Spec", !(bool)p.ExtraData["Spec"]);
                Player.SendChatFrom(p, p.ColoredName + " %Sis no longer a spectator", false);
                p.SendMapMotd();
                Team.OnJoin(p);
                if (p.HasCpeExt(CpeExt.HackControl))
                {
                    p.Send(Hacks.MakeHackControl(p));
                }
            }
            else
            {
                p.ExtraData.ChangeOrCreate("Spec", !(bool)p.ExtraData["Spec"]);
                Player.SendChatFrom(p, p.ColoredName + " %Sis now a spectator", false);
                Team.OnLeave(p);
                p.SendMapMotd();
                if (p.HasCpeExt(CpeExt.HackControl))
                {
                    p.Send(Packet.HackControl(true, true, true, true, true, -1));
                }
                Entities.GlobalDespawn(p, false, false);
            }

            Entities.GlobalSpawn(p, false, "");
            HUD.UpdateAll(p);
            HUD.SetPrefix(p);
        }
        static void DoTP(Player p, string message)
        {
            if (!Hacks.CanUseHacks(p))
            {
                p.Message("&WYou can't teleport to spawners because hacks are disabled in {0}", p.level.ColoredName);
                return;
            }
            if (message == "")
            {
                p.Message("&WPlease provide the name of a spawner to teleport to."); return;
            }
            if (!GoodlyEffects.spawnersAtLevel.ContainsKey(p.level))
            {
                p.Message("There are no spawners in {0}&S to teleport to.", p.level.ColoredName);
                return;
            }
            int matches;

            GoodlyEffects.EffectSpawner spawner = Matcher.Find(p, message, out matches,
                                                               GoodlyEffects.spawnersAtLevel[p.level],
                                                               x => true,
                                                               x => x.name,
                                                               "effect spawners");
            if (matches > 1 || spawner == null)
            {
                return;
            }
            Command.Find("tp").Use(p, "-precise " + (int)(spawner.x * 32) + " " + (int)(spawner.y * 32) + " " + (int)(spawner.z * 32));
        }
Esempio n. 4
0
        dynamic AddQuestNpc(dynamic quest, Saint.ENpc sNpc)
        {
            if (Hacks.IsNpcSkipped(sNpc))
            {
                return(null);
            }

            var npc = _builder.Db.NpcsById[sNpc.Key];

            if (npc.quests == null)
            {
                npc.quests = new JArray();
            }

            var    questId = (int)quest.id;
            JArray quests  = npc.quests;

            if (!quests.Any(id => ((int)id) == questId))
            {
                quests.Add(questId);
                _builder.Db.AddReference(npc, "quest", questId, false);
                _builder.Db.AddReference(quest, "npc", (int)npc.id, false);
            }

            return(npc);
        }
Esempio n. 5
0
        public override void Use(Player p, string message, CommandData data)
        {
            if (p.Game.Referee)
            {
                Chat.MessageFrom(p, "λNICK %Sis no longer a referee");
                OnPlayerActionEvent.Call(p, PlayerAction.UnReferee);
                p.Game.Referee = false;
            }
            else
            {
                Chat.MessageFrom(p, "λNICK %Sis now a referee");
                OnPlayerActionEvent.Call(p, PlayerAction.Referee);
                p.Game.Referee = true;
            }
            p.SetPrefix();

            if (p.Supports(CpeExt.InstantMOTD))
            {
                p.SendMapMotd();
            }
            else if (p.Supports(CpeExt.HackControl))
            {
                string motd = p.GetMotd();
                if (p.Game.Referee)
                {
                    motd += " +hax";
                }
                p.Send(Hacks.MakeHackControl(p, motd));
            }
        }
Esempio n. 6
0
 /// <summary>
 /// 模型变更
 /// </summary>
 /// <param name="hash"></param>
 public static void ModelChange(long hash)
 {
     Hacks.WriteGA <int>(Offsets.oVGETIn + 59, 1);                // triggerModelChange   Global_2671449.f_59
     Hacks.WriteGA <long>(Offsets.oVGETIn + 46, hash);            // modelChangeHash      Global_2671449.f_46
     Thread.Sleep(10);
     Hacks.WriteGA <int>(Offsets.oVGETIn + 59, 0);
 }
Esempio n. 7
0
        public override void Use(Player p, string message, CommandData data)
        {
            if (!Hacks.CanUseHacks(p))
            {
                p.Message("You cannot use &T/Ascend %Son this map."); return;
            }
            int x = p.Pos.BlockX, y = p.Pos.BlockY, z = p.Pos.BlockZ;

            if (y < 0)
            {
                y = 0;
            }

            int freeY = -1;

            if (p.level.IsValidPos(x, y, z))
            {
                freeY = FindYAbove(p.level, (ushort)x, (ushort)y, (ushort)z);
            }

            if (freeY == -1)
            {
                p.Message("No free spaces found above you.");
            }
            else
            {
                p.Message("Teleported you up.");
                Position pos = Position.FromFeet(p.Pos.X, freeY * 32, p.Pos.Z);
                p.SendPos(Entities.SelfID, pos, p.Rot);
            }
        }
Esempio n. 8
0
 public SW(string attribute, double value, bool excludeFromBaseValue = false)
 {
     Attribute                  = attribute;
     Value                      = value;
     ExcludeFromBaseValue       = excludeFromBaseValue;
     IsAdvancedMeldingForbidden = Hacks.IsMainAttribute(attribute);
 }
Esempio n. 9
0
    private void AutoScript(string statClassName)
    {
        TextBox_Result.Clear();

        Task.Run(() =>
        {
            try
            {
                int index = StatData.StatDataClass.FindIndex(t => t.ClassName == statClassName);
                if (index != -1)
                {
                    AppendTextBox($"正在执行 {StatData.StatDataClass[index].ClassName} 脚本代码");

                    for (int i = 0; i < StatData.StatDataClass[index].StatInfo.Count; i++)
                    {
                        AppendTextBox($"正在执行 第 {i + 1}/{StatData.StatDataClass[index].StatInfo.Count} 条代码");

                        Hacks.WriteStat(StatData.StatDataClass[index].StatInfo[i].Hash, StatData.StatDataClass[index].StatInfo[i].Value);
                        Task.Delay(500).Wait();
                    }

                    AppendTextBox($"{StatData.StatDataClass[index].ClassName} 脚本代码执行完毕");
                }
            }
            catch (Exception ex)
            {
                AppendTextBox($"错误:{ex.Message}");
            }
        });
    }
Esempio n. 10
0
        public override void Use(Player p, string message, CommandData data)
        {
            if (!Hacks.CanUseHacks(p))
            {
                p.Message("You cannot use &T/Descend &Son this map."); return;
            }

            // Move starting position down half a block since players are a little bit above the ground.
            int x = p.Pos.BlockX, y = (p.Pos.Y - 51 - 4) / 32, z = p.Pos.BlockZ;

            if (y > p.level.Height)
            {
                y = p.level.Height;
            }
            y--; // start at block below initially

            int freeY = -1;

            if (p.level.IsValidPos(x, y, z))
            {
                freeY = FindYBelow(p.level, (ushort)x, y, (ushort)z);
            }

            if (freeY == -1)
            {
                p.Message("No free spaces found below you.");
            }
            else
            {
                p.Message("Teleported you down.");
                Position pos = Position.FromFeet(p.Pos.X, freeY * 32, p.Pos.Z);
                p.SendPosition(pos, p.Rot);
            }
        }
Esempio n. 11
0
        public void Calibrate()
        {
            List <Saint.Item> ItemsToImport = _realm.GameData.GetSheet <Saint.Item>()
                                              .Where(i => !Hacks.IsItemSkipped(i.Name, i.Key)).ToList();

            DatabaseBuilder.PrintLine("Reading icon definition... (1/5)");
            ReadIconDefinition(ItemsToImport);

            DatabaseBuilder.PrintLine("Preparing working directory... (2/5)");
            PrepareDirectory();

            if (_config.Reextract)
            {
                DatabaseBuilder.PrintLine("Extracting in game icons... (3/5)");
                ExtractIcons(ItemsToImport);
            }

            DatabaseBuilder.PrintLine("Adjusting 128x icon... (4/5)");
            Move128Icons();

            DatabaseBuilder.PrintLine("Writing icon definition... (5/5)");
            WriteIconDefinition();

            //Cleanup();

            DatabaseBuilder.PrintLine("Icon calibration done. \n" +
                                      "Please re-export the database to bind icon to json.");
        }
Esempio n. 12
0
 /// <summary>
 /// 移除进出口大亨出货CD
 /// </summary>
 /// <param name="isEnable"></param>
 public static void RemoveExportVehicleDelay(bool isEnable)
 {
     Hacks.WriteGA <int>(262145 + 19727, isEnable ? 0 : 1200000);         // 1001423248  tuneables_processing.c
     Hacks.WriteGA <int>(262145 + 19728, isEnable ? 0 : 1680000);
     Hacks.WriteGA <int>(262145 + 19729, isEnable ? 0 : 2340000);
     Hacks.WriteGA <int>(262145 + 19730, isEnable ? 0 : 2880000);         // -824005590
 }
Esempio n. 13
0
        public override void Draw(RenderContext context)
        {
            base.Draw(context);

            var game            = Services.GetService <IGame>();
            var graphicsContext = game.GraphicsContext;
            var graphicsDevice  = Services.GetService <IGraphicsDeviceService>().GraphicsDevice;

            Dispatcher.ForEach(ComponentDatas, (pair) =>
            {
                var component = pair.Key;
                var data      = pair.Value;

                try
                {
                    GenerateSplineMesh(component, data, graphicsContext, graphicsDevice);
                }
                catch
                {
                    // Stride has trouble reconnecting some entities properly when hot reloading assemblies in the editor
                    // We try to fix this using a hack ... should probably try to reproduce in a smaller project and create an issue
                    // In this case this shows as the heightmap being null
                    if (component.Terrain.Heightmap == null)
                    {
                        component.Terrain = Hacks.RelinkComponent <TerrainComponent>(EntityManager, component.Terrain.Entity.Id);
                    }
                }
            });
        }
Esempio n. 14
0
 /// <summary>
 /// 移除机库进货CD
 /// </summary>
 /// <param name="isEnable"></param>
 public static void RemoveSmugglerRunInDelay(bool isEnable)
 {
     Hacks.WriteGA <int>(262145 + 22779, isEnable ? 0 : 120000);          // 1278611667  tuneables_processing.c
     Hacks.WriteGA <int>(262145 + 22780, isEnable ? 0 : 180000);
     Hacks.WriteGA <int>(262145 + 22781, isEnable ? 0 : 240000);
     Hacks.WriteGA <int>(262145 + 22782, isEnable ? 0 : 60000);
 }
Esempio n. 15
0
 /// <summary>
 /// 设置CEO板条箱每箱出售单价为2W
 /// </summary>
 /// <param name="isEnable"></param>
 public static void CEOPricePerCrateAtCrates(bool isEnable)
 {
     // Global_262145.f_15843    -1445480509                                 // tuneables_processing.c
     Hacks.WriteGA <int>(262145 + 15843, isEnable ? 20000 : 10000);           // 1        specialCargo1CratesPrice
     Hacks.WriteGA <int>(262145 + 15843 + 1, isEnable ? 20000 : 11000);       // 2        specialCargo2CratesPrice
     Hacks.WriteGA <int>(262145 + 15843 + 2, isEnable ? 20000 : 12000);       // 3        specialCargo3CratesPrice
     Hacks.WriteGA <int>(262145 + 15843 + 3, isEnable ? 20000 : 13000);       // 4-5      specialCargo4to5CratesPrice
     Hacks.WriteGA <int>(262145 + 15843 + 4, isEnable ? 20000 : 13500);       // 6-7      specialCargo6to7CratesPrice
     Hacks.WriteGA <int>(262145 + 15843 + 5, isEnable ? 20000 : 14000);       // 8-9      ...
     Hacks.WriteGA <int>(262145 + 15843 + 6, isEnable ? 20000 : 14500);       // 10-14
     Hacks.WriteGA <int>(262145 + 15843 + 7, isEnable ? 20000 : 15000);       // 15-19
     Hacks.WriteGA <int>(262145 + 15843 + 8, isEnable ? 20000 : 15500);       // 20-24
     Hacks.WriteGA <int>(262145 + 15843 + 9, isEnable ? 20000 : 16000);       // 25-29
     Hacks.WriteGA <int>(262145 + 15843 + 10, isEnable ? 20000 : 16500);      // 30-34
     Hacks.WriteGA <int>(262145 + 15843 + 11, isEnable ? 20000 : 17000);      // 35-39
     Hacks.WriteGA <int>(262145 + 15843 + 12, isEnable ? 20000 : 17500);      // 40-44
     Hacks.WriteGA <int>(262145 + 15843 + 13, isEnable ? 20000 : 17750);      // 45-49
     Hacks.WriteGA <int>(262145 + 15843 + 14, isEnable ? 20000 : 18000);      // 50-59
     Hacks.WriteGA <int>(262145 + 15843 + 15, isEnable ? 20000 : 18250);      // 60-69
     Hacks.WriteGA <int>(262145 + 15843 + 16, isEnable ? 20000 : 18500);      // 70-79
     Hacks.WriteGA <int>(262145 + 15843 + 17, isEnable ? 20000 : 18750);      // 80-89
     Hacks.WriteGA <int>(262145 + 15843 + 18, isEnable ? 20000 : 19000);      // 90-990
     Hacks.WriteGA <int>(262145 + 15843 + 19, isEnable ? 20000 : 19500);      // 100-11
     Hacks.WriteGA <int>(262145 + 15843 + 20, isEnable ? 20000 : 20000);      // 111
 }
Esempio n. 16
0
        public override void Start()
        {
            foreach (var sMateria in _builder.Sheet <Game.Materia>())
            {
                if (sMateria.BaseParam.Key == 0)
                {
                    continue;
                }

                var isMainAttribute = Hacks.IsMainAttribute(sMateria.BaseParam.Name.ToString());

                foreach (var itemValue in sMateria.Items)
                {
                    if (!_builder.Db.ItemsById.TryGetValue(itemValue.Item.Key, out var item))
                    {
                        continue;
                    }

                    dynamic obj = new JObject();
                    obj.tier     = itemValue.Tier;
                    obj.value    = itemValue.Value;
                    obj.attr     = sMateria.BaseParam.Name.ToString();
                    obj.category = PatchDatabase.GetAttributePatchCategory(sMateria.BaseParam).Value;
                    if (isMainAttribute)
                    {
                        obj.advancedMeldingForbidden = 1;
                    }
                    item.materia = obj;

                    // Embed materia for meld tool.
                    _builder.Db.EmbeddedPartialItemIds.Add(itemValue.Item.Key);
                }
            }
        }
Esempio n. 17
0
 /// <summary>
 /// 设置地堡原材料消耗量
 /// </summary>
 /// <param name="isEnable"></param>
 public static void SetBunkerSuppliesPerUnitProduced(bool isEnable)
 {
     // Supplies Per Unit Produced                                   // tuneables_processing.c
     Hacks.WriteGA <int>(262145 + 21579, isEnable ? 1 : 10);          // Product Base              -1652502760
     Hacks.WriteGA <int>(262145 + 21580, isEnable ? 1 : 5);           // Product Upgraded          1647327744
     Hacks.WriteGA <int>(262145 + 21595, isEnable ? 1 : 2);           // Research Base             1485279815
     Hacks.WriteGA <int>(262145 + 21596, isEnable ? 1 : 1);           // Research Upgraded         2041812011
 }
Esempio n. 18
0
        public static void Initialize()
        {
            TargetSelector.Initialize();
            Prediction.Initialize();
            Hacks.Initialize();
            //FakeClicks.Initialize();

            Instance.AddToMainMenu();
        }
Esempio n. 19
0
        internal AimtecMenu()
            : base("Aimtec.Menu", "Aimtec", true)
        {
            Hacks.Init(this);

            this.Add(new MenuBool("Aimtec.Debug", "Debugging", false, true));

            Log.Info().Message("Aimtec menu created").Write();
        }
Esempio n. 20
0
        public static void Shutdown()
        {
            TargetSelector.Shutdown();
            Prediction.Shutdown();
            Hacks.Shutdown();
            //FakeClicks.Shutdown();

            Menu.Remove(Instance);
        }
Esempio n. 21
0
 /// <summary>
 /// 雷达影踪/人间蒸发
 /// </summary>
 /// <param name="isEnable"></param>
 public static void OffRadar(bool isEnable)
 {
     Hacks.WriteGA <int>(Offsets.oPlayerIDHelp + 1 + Hacks.GetPlayerID() * 453 + 208, isEnable ? 1 : 0);
     if (isEnable)
     {
         Hacks.WriteGA <int>(Offsets.oNETTimeHelp + 56, Hacks.GetNetworkTime() + 3600000);
     }
     Hacks.WriteGA <int>(Offsets.oVMYCar + 4630, isEnable ? 3 : 0);
 }
Esempio n. 22
0
        protected override void ImageCaptured(object sender, ImageCapturedEventArgs e)
        {
            Tracing.Trace("Picasa::{0:X8}::ImageCaptured", this.GetHashCode());

            Hacks.BootstrapSettings(PluginSettings);

            this._fileName = e.ImageNames.FullSize;
            output.FetchOutputStream(new StreamHandler(this.SaveImage), this._fileName, e.FullSizeImage);
        }
Esempio n. 23
0
 /// <summary>
 /// 幽灵组织
 /// </summary>
 /// <param name="isEnable"></param>
 public static void GhostOrganization(bool isEnable)
 {
     Hacks.WriteGA <int>(Offsets.oPlayerIDHelp + 1 + Hacks.GetPlayerID() * 453 + 208, isEnable ? 1 : 0);
     if (isEnable)
     {
         Hacks.WriteGA <int>(Offsets.oNETTimeHelp + 56, Hacks.GetNetworkTime() + 3600000);        // iVar0 = NETWORK::GET_TIME_DIFFERENCE(NETWORK::GET_NETWORK_TIME()
     }
     Hacks.WriteGA <int>(Offsets.oVMYCar + 4630, isEnable ? 4 : 0);
 }
Esempio n. 24
0
        /// <summary>
        ///     Initializes a static instance of the <see cref="CommonMenu" /> class.
        /// </summary>
        static CommonMenu()
        {
            TargetSelector.Initialize();
            Prediction.Initialize();
            Hacks.Initialize();
            FakeClicks.Initialize();

            Instance.AddToMainMenu();
        }
Esempio n. 25
0
        void CustomTalkShops()
        {
            foreach (var sCustomTalk in _builder.Sheet("CustomTalk"))
            {
                var instructions = ScriptInstruction.Read(sCustomTalk, 30);

                var shopInstructions = instructions.Where(i => i.Label.Contains("SHOP") && !i.Label.Contains("LOGMSG")).ToArray();
                if (shopInstructions.Length == 0)
                {
                    continue;
                }

                var sNpcs = sCustomTalk.Sheet.Collection.ENpcs.FindWithData(sCustomTalk.Key).ToArray();
                if (sNpcs.Length == 0)
                {
                    continue;
                }

                foreach (var shopInstruction in shopInstructions)
                {
                    var shopKey = (int)shopInstruction.Argument;
                    if (Hacks.ExcludedShops.Contains(shopKey))
                    {
                        continue;
                    }

                    // Setup a disposal shop.
                    if (shopInstruction.Label == "SHOP_DISPOSAL")
                    {
                        DisposalShops.BuildShop(_builder, sNpcs, (int)shopInstruction.Argument);
                        continue;
                    }

                    // Missing shop definitions?
                    if (!_shopsByKey.TryGetValue(shopKey, out var shop))
                    {
                        // todo: print relevant NPCs, text?
                        DatabaseBuilder.PrintLine($"Shop {shopKey} not found, skipping.");
                        continue;
                    }

                    if (shop.Name == "Unknown Shop")
                    {
                        var name = Hacks.GetShopName((SaintCoinach.Text.XivString)sCustomTalk.GetRaw("Name"), shopInstruction);
                        if (name.Contains("[not in Saint]"))
                        {
                            DatabaseBuilder.PrintLine($"{string.Join(", ", sNpcs.Select(e => e.Singular.ToString()))} has shop {name}");
                            continue;
                        }
                        shop.Name = name;
                    }

                    shop.ENpcs = sNpcs.Union(shop.ENpcs).Distinct().ToArray();
                }
            }
        }
Esempio n. 26
0
    /// <summary>
    /// 移除自杀CD
    /// </summary>
    /// <param name="isEnable"></param>
    public static void RemoveSuicideCooldown(bool isEnable)
    {
        if (isEnable)
        {
            Hacks.WriteGA <int>(2815059 + 6774, 0);
        }

        Hacks.WriteGA <int>(262145 + 28396, isEnable ? 3 : 300000);
        Hacks.WriteGA <int>(262145 + 28397, isEnable ? 3 : 60000);
    }
Esempio n. 27
0
        public static GraphicsDevice CreateDefaultD3D11GraphicsDevice(ref GraphicsDeviceCreateInfo deviceCI, Sdl2Window window)
        {
            SharpDX.Direct3D11.DeviceCreationFlags flags = SharpDX.Direct3D11.DeviceCreationFlags.None;
            if (deviceCI.DebugDevice)
            {
                flags |= SharpDX.Direct3D11.DeviceCreationFlags.Debug;
            }

            return(Hacks.CreateD3D11(window.Handle, window.Width, window.Height));
        }
Esempio n. 28
0
    /// <summary>
    /// 设置车友会等级经验倍数
    /// </summary>
    /// <param name="multiplier"></param>
    public static void REPMultiplier(float multiplier)
    {
        Hacks.WriteGA <float>(262145 + 31636, multiplier);        // Street Race         街头比赛        -147149995
        Hacks.WriteGA <float>(262145 + 31637, multiplier);        // Pursuit Race        追逐赛
        Hacks.WriteGA <float>(262145 + 31638, multiplier);        // Scramble            攀登
        Hacks.WriteGA <float>(262145 + 31639, multiplier);        // Head 2 Head         头对头          1434998920

        Hacks.WriteGA <float>(262145 + 31641, multiplier);        // LS Car Meet         汽车见面会       1819417801
        Hacks.WriteGA <float>(262145 + 31642, multiplier);        // LS Car Meet Track
        Hacks.WriteGA <float>(262145 + 31643, multiplier);        // LS Car Meet Cloth Shop
    }
Esempio n. 29
0
 /// <summary>
 /// 设置夜总会生产时间为指定时间,单位秒
 /// </summary>
 /// <param name="isEnable"></param>
 /// <param name="produce_time"></param>
 public static void SetNightclubProduceTime(bool isEnable, int produce_time)
 {
     // Time to Produce                                                          // tuneables_processing.c
     Hacks.WriteGA <int>(262145 + 24394, isEnable ? produce_time : 4800000);      // Sporting Goods               -147565853
     Hacks.WriteGA <int>(262145 + 24395, isEnable ? produce_time : 14400000);     // South American Imports
     Hacks.WriteGA <int>(262145 + 24396, isEnable ? produce_time : 7200000);      // Pharmaceutical Research
     Hacks.WriteGA <int>(262145 + 24397, isEnable ? produce_time : 2400000);      // Organic Produce
     Hacks.WriteGA <int>(262145 + 24398, isEnable ? produce_time : 1800000);      // Printing and Copying
     Hacks.WriteGA <int>(262145 + 24399, isEnable ? produce_time : 3600000);      // Cash Creation
     Hacks.WriteGA <int>(262145 + 24400, isEnable ? produce_time : 8400000);      // Cargo and Shipments          1607981264
 }
Esempio n. 30
0
        public void SendMotd(string motd)
        {
            byte[] packet = Packet.Motd(player, motd);
            Send(packet);

            if (!player.Supports(CpeExt.HackControl))
            {
                return;
            }
            Send(Hacks.MakeHackControl(player, motd));
        }