Forums Announcement
Read-Only Mode for Announcements & Changelogs
Dear Survivors, we'd like to inform you that this forum will transition to read-only mode. From now on, it will serve exclusively as a platform for official announcements and changelogs.
For all community discussions, debates, and engagement, we encourage you to join us on our social media platforms: Discord, Twitter/X, Facebook.
Thank you for being a valued part of our community. We look forward to connecting with you on our other channels!
Stay safe out there,
Your DayZ Team
Aussie Cleetus
Members-
Content Count
138 -
Joined
-
Last visited
Everything posted by Aussie Cleetus
-
!!! [CE][Hive] :: DB is not responding too long.
Aussie Cleetus replied to Mauricio Britto's topic in Servers
they are using SQL... just not MySQL, it's SQLite, a local light-weight counterpart. This error is generally cause either by something else trying to access the file (ie. using a bad method going around these forums to "hive" multiple servers together), or possibly a terribly slow hard drive? -
in the override of the init, would you not want to call super.OnInit()?
-
John, right now, there is not a supported or viable method of producing a Hive at the moment. The method that you are being recommended, is wildly outrageous and a terrible risk for one server or the other not working properly.
-
You really should stop suggesting people do this, it causes errors in the database.
-
// New Additional method to accompany my addItem method // Usage: AddPlayerClothes(player, "HelmetName", "GlassesName", "MaskName", "ShirtName", "VestName", "BeltName", "PantsName", "BootsName", "BackPackName", itemBs, itemEnt); // To not send an item to the player, make the string empty: "" (make sure to keep both quotes) void AddPlayerClothes(Playerbase _player=null, string _helmet="", string _glasses="", string _mask="", string _shirt="", string _vest="", string _belt="", string _pants="", string _boots="", string _backpack="", ItemBase _itemBs=null, EntityAI _itemEnt=null) { if (player != null && itemBs != null && itemEnt != null) { if (_helmet != "") { addItem(_itemEnt, _itemBs, _player, _helmet, 1, 0, -1); } if (_glasses != "") { addItem(_itemEnt, _itemBs, _player, _glasses, 1, 0, -1); } if (_mask != "") { addItem(_itemEnt, _itemBs, _player, _mask, 1, 0, -1); } if (_shirt != "") { addItem(_itemEnt, _itemBs, _player, _shirt, 1, 0, -1); } if (_vest != "") { addItem(_itemEnt, _itemBs, _player, _vest, 1, 0, -1); } if (_belt != "") { addItem(_itemEnt, _itemBs, _player, _belt, 1, 0, -1); } if (_pants != "") { addItem(_itemEnt, _itemBs, _player, _pants, 1, 0, -1); } if (_boots != "") { addItem(_itemEnt, _itemBs, _player, _boots, 1, 0, -1); } if (_backpack != "") { addItem(_itemEnt, _itemBs, _player, _backpack, 1, 0, -1); } } } void addItem(EntityAI itemEnt=null, ItemBase itemBs=null, PlayerBase player=null, string item_name="", int count=0, int stackSize=0, int invSlot=-1) { if (player != null && itemBs != null && itemEnt != null && item_name != "") { for (int i = 0; i < count; i++) { itemEnt = player.GetInventory().CreateInInventory(item_name); itemBs = ItemBase.Cast(itemEnt); if (stackSize > 0) { itemBs.SetQuantity(stackSize); } if (invSlot >= 0 || invSlot <= 9) { player.SetQuickBarEntityShortcut(itemEnt, invSlot, true); } } } } This may help some people. I've tried to add some defaults for fields and some basic fool-proofing.
-
yes, the XXXXXXXX is the steam64id to be completely honest, I doubt Bohemia put in multiple allowed case choices per option. If there is a common loadout, I would wrap that loadout in a method and then call the method for each of the players' steam64id case.
-
class CustomMission: MissionServer { override PlayerBase CreateCharacter(PlayerIdentity identity, vector pos, ParamsReadContext ctx, string characterName) { Entity playerEnt; playerEnt = GetGame().CreatePlayer(identity, characterName, pos, 0, "NONE");//Creates random player Class.CastTo(m_player, playerEnt); GetGame().SelectPlayer(identity, m_player); return m_player; } void CustomMission() { } override void StartingEquipSetup(PlayerBase player, bool clothesChosen) { EntityAI primary; EntityAI itemEnt; EntityAI gun; ItemBase itemBs; EntityAI optic_attach; switch(player.GetIdentity().GetPlainId()) { // Admin 1 Loadout case "XXXXXXXX": player.RemoveAllItems(); addItem(itemEnt, itemBs, player, "TTsKOJacket_Camo", 1, 0, -1); addItem(itemEnt, itemBs, player, "TTSKOPants", 1, 0, -1); addItem(itemEnt, itemBs, player, "JungleBoots_Green", 1, 0, -1); addItem(itemEnt, itemBs, player, "BallisticHelmet_Green", 1, 0, -1); addItem(itemEnt, itemBs, player, "ThinFramesGlasses", 1, 0, -1); addItem(itemEnt, itemBs, player, "SmershVestBackpack", 1, 0, -1); addItem(itemEnt, itemBs, player, "Armband_Blue", 1, 0, -1); addItem(itemEnt, itemBs, player, "TacticalGloves_Green", 1, 0, -1); addItem(itemEnt, itemBs, player, "TortillaBag", 1, 0, -1); addItem(itemEnt, itemBs, player, "Pear", 10, 0, -1); addItem(itemEnt, itemBs, player, "CombatKnife", 1, 0, -1); addItem(itemEnt, itemBs, player, "Rag", 3, 6, -1); addItem(itemEnt, itemBs, player, "Pot", 1, 2000, -1); addItem(itemEnt, itemBs, player, "BloodTestKit", 1, 0, -1); addItem(itemEnt, itemBs, player, "FirefighterAxe_Green", 1, 0, 0); addItem(itemEnt, itemBs, player, "Mag_AKM_Drum75Rnd_Green", 1, 1, 2); addItem(itemEnt, itemBs, player, "Mag_AKM_Drum75Rnd_Green", 1, 1, 3); addItem(itemEnt, itemBs, player, "Mag_AKM_Drum75Rnd_Green", 1, 1, 4); addItem(itemEnt, itemBs, player, "Mag_AKM_Drum75Rnd_Green", 1, 1, -1); addItem(itemEnt, itemBs, player, "Ammo_762x39", 1, 1, -1); addItem(itemEnt, itemBs, player, "KobraOptic", 1, 0, -1); addItem(itemEnt, itemBs, player, "Battery9V", 2, 0, -1); addItem(itemEnt, itemBs, player, "Matchbox", 1, 0, -1); primary = akmClass(player, itemBs, gun, itemEnt, optic_attach); itemBs = ItemBase.Cast(primary); player.SetQuickBarEntityShortcut(primary, 1, true); break; // Admin 2 Loadout case "XXXXXXXX": player.RemoveAllItems(); addItem(itemEnt, itemBs, player, "USMCJacket_Woodland", 1, 0, -1); addItem(itemEnt, itemBs, player, "USMCPants_Woodland", 1, 0, -1); addItem(itemEnt, itemBs, player, "JungleBoots_Green", 1, 0, -1); addItem(itemEnt, itemBs, player, "CowboyHat_green", 1, 0, -1); addItem(itemEnt, itemBs, player, "DesignerGlasses", 1, 0, -1); addItem(itemEnt, itemBs, player, "SmershVestBackpack", 1, 0, -1); addItem(itemEnt, itemBs, player, "Armband_Blue", 1, 0, -1); addItem(itemEnt, itemBs, player, "TacticalGloves_Green", 1, 0, -1); addItem(itemEnt, itemBs, player, "AssaultBag_Ttsko", 1, 0, -1); addItem(itemEnt, itemBs, player, "Pear", 10, 0, -1); addItem(itemEnt, itemBs, player, "CombatKnife", 1, 0, -1); addItem(itemEnt, itemBs, player, "Rag", 3, 6, -1); addItem(itemEnt, itemBs, player, "Pot", 1, 2000, -1); addItem(itemEnt, itemBs, player, "BloodTestKit", 1, 0, -1); addItem(itemEnt, itemBs, player, "FirefighterAxe_Green", 1, 0, 1); addItem(itemEnt, itemBs, player, "Mag_AKM_30Rnd", 1, 1, 2); addItem(itemEnt, itemBs, player, "Mag_AKM_30Rnd", 1, 1, 3); addItem(itemEnt, itemBs, player, "Mag_AKM_30Rnd", 1, 1, 4); addItem(itemEnt, itemBs, player, "Mag_AKM_30Rnd", 1, 1, 5); addItem(itemEnt, itemBs, player, "Mag_AKM_30Rnd", 1, 1, 6); addItem(itemEnt, itemBs, player, "Mag_AKM_30Rnd", 1, 1, 7); addItem(itemEnt, itemBs, player, "Mag_AKM_30Rnd", 1, 1, -1); addItem(itemEnt, itemBs, player, "Ammo_762x39", 1, 1, -1); addItem(itemEnt, itemBs, player, "KobraOptic", 1, 0, -1); addItem(itemEnt, itemBs, player, "Battery9V", 1, 0, -1); addItem(itemEnt, itemBs, player, "Matchbox", 1, 0, -1); primary = akmClass(player, itemBs, gun, itemEnt, optic_attach); itemBs = ItemBase.Cast(primary); player.SetQuickBarEntityShortcut(primary, 0, true); break; // Admin 3 Loadout case "XXXXXXXX": player.RemoveAllItems(); addItem(itemEnt, itemBs, player, "M65Jacket_Black", 1, 0, -1); addItem(itemEnt, itemBs, player, "CargoPants_Black", 1, 0, -1); addItem(itemEnt, itemBs, player, "JungleBoots_Black", 1, 0, -1); addItem(itemEnt, itemBs, player, "BallisticHelmet_Black", 1, 0, -1); addItem(itemEnt, itemBs, player, "DesignerGlasses", 1, 0, -1); addItem(itemEnt, itemBs, player, "Armband_Blue", 1, 0, -1); addItem(itemEnt, itemBs, player, "HighCapacityVest_Black", 1, 0, -1); addItem(itemEnt, itemBs, player, "TacticalGloves_Black", 1, 0, -1); addItem(itemEnt, itemBs, player, "AliceBag_Black", 1, 0, -1); addItem(itemEnt, itemBs, player, "Pear", 10, 0, -1); addItem(itemEnt, itemBs, player, "CombatKnife", 1, 0, -1); addItem(itemEnt, itemBs, player, "Rag", 3, 6, -1); addItem(itemEnt, itemBs, player, "Pot", 1, 2000, -1); addItem(itemEnt, itemBs, player, "BloodTestKit", 1, 0, -1); addItem(itemEnt, itemBs, player, "FirefighterAxe", 1, 0, 1); addItem(itemEnt, itemBs, player, "Mag_AKM_Drum75Rnd_Black", 1, 1, 2); addItem(itemEnt, itemBs, player, "Mag_AKM_Drum75Rnd_Black", 1, 1, 3); addItem(itemEnt, itemBs, player, "Mag_AKM_Drum75Rnd_Black", 1, 1, 4); addItem(itemEnt, itemBs, player, "Ammo_762x39", 1, 1, -1); addItem(itemEnt, itemBs, player, "KobraOptic", 1, 0, -1); addItem(itemEnt, itemBs, player, "Battery9V", 1, 0, -1); addItem(itemEnt, itemBs, player, "Matchbox", 1, 0, -1); primary = akmClass(player, itemBs, gun, itemEnt, optic_attach); itemBs = ItemBase.Cast(primary); player.SetQuickBarEntityShortcut(primary, 0, true); break; // Admin 4 Loadout case "XXXXXXXX": addItem(itemEnt, itemBs, player, "SmershBag", 1, 0, -1); addItem(itemEnt, itemBs, player, "Pear", 2, 0, -1); addItem(itemEnt, itemBs, player, "StoneKnife", 1, 0, 1); addItem(itemEnt, itemBs, player, "Rag", 1, 6, 2); addItem(itemEnt, itemBs, player, "WoodAxe", 1, 0, 0); addItem(itemEnt, itemBs, player, "Armband_Blue", 1, 0, 0); break; // Admin 5 Loadout case "XXXXXXXX": player.RemoveAllItems(); addItem(itemEnt, itemBs, player, "TacticalShirt_Black", 1, 0, -1); addItem(itemEnt, itemBs, player, "CargoPants_Green", 1, 0, -1); addItem(itemEnt, itemBs, player, "CombatBoots_Black", 1, 0, -1); addItem(itemEnt, itemBs, player, "BaseballCap_CMMG_Black", 1, 0, -1); addItem(itemEnt, itemBs, player, "DesignerGlasses", 1, 0, -1); addItem(itemEnt, itemBs, player, "Armband_Blue", 1, 0, -1); addItem(itemEnt, itemBs, player, "SmershVestBackpack", 1, 0, -1); addItem(itemEnt, itemBs, player, "HuntingBag", 1, 0, -1); addItem(itemEnt, itemBs, player, "TacticalGloves_Black", 1, 0, -1); addItem(itemEnt, itemBs, player, "Pear", 10, 0, -1); addItem(itemEnt, itemBs, player, "CombatKnife", 1, 0, -1); addItem(itemEnt, itemBs, player, "Rag", 1, 6, -1); addItem(itemEnt, itemBs, player, "FirefighterAxe_Green", 1, 0, 0); addItem(itemEnt, itemBs, player, "Armband_Blue", 1, 0, -1); addItem(itemEnt, itemBs, player, "Compass", 1, 0, -1); addItem(itemEnt, itemBs, player, "OrienteeringCompass", 1, 0, -1); addItem(itemEnt, itemBs, player, "Mag_UMP_25Rnd", 1, 1, 2); addItem(itemEnt, itemBs, player, "Mag_UMP_25Rnd", 1, 1, 3); addItem(itemEnt, itemBs, player, "Mag_UMP_25Rnd", 1, 1, 4); addItem(itemEnt, itemBs, player, "Mag_UMP_25Rnd", 1, 1, 5); addItem(itemEnt, itemBs, player, "Mag_UMP_25Rnd", 1, 1, 6); primary = usgClass(player, itemBs, gun, itemEnt, optic_attach); itemBs = ItemBase.Cast(primary); player.SetQuickBarEntityShortcut(primary, 1, true); break; // Admin 6 Loadout case "XXXXXXXX": player.RemoveAllItems(); addItem(itemEnt, itemBs, player, "LeatherJacket_Black", 1, 0, -1); addItem(itemEnt, itemBs, player, "LeatherPants_Black", 1, 0, -1); addItem(itemEnt, itemBs, player, "HikingBoots_Brown", 1, 0, -1); addItem(itemEnt, itemBs, player, "LeatherStorageVest_Black", 1, 0, -1); addItem(itemEnt, itemBs, player, "Armband_Blue", 1, 0, -1); addItem(itemEnt, itemBs, player, "CowboyHat_darkBrown", 1, 0, -1); addItem(itemEnt, itemBs, player, "WorkingGloves_Brown", 1, 0, -1); addItem(itemEnt, itemBs, player, "FurImprovisedBag", 1, 0, -1); addItem(itemEnt, itemBs, player, "Pear", 2, 0, -1); addItem(itemEnt, itemBs, player, "StoneKnife", 1, 0, 1); addItem(itemEnt, itemBs, player, "Rag", 1, 6, 2); addItem(itemEnt, itemBs, player, "WoodAxe", 1, 0, 0); addItem(itemEnt, itemBs, player, "Compass", 1, 0, -1); addItem(itemEnt, itemBs, player, "OrienteeringCompass", 1, 0, -1); addItem(itemEnt, itemBs, player, "Mag_UMP_25Rnd", 1, 1, 2); addItem(itemEnt, itemBs, player, "Mag_UMP_25Rnd", 1, 1, 3); addItem(itemEnt, itemBs, player, "Mag_UMP_25Rnd", 1, 1, 4); addItem(itemEnt, itemBs, player, "Mag_UMP_25Rnd", 1, 1, 5); addItem(itemEnt, itemBs, player, "Mag_UMP_25Rnd", 1, 1, 6); primary = usgClass(player, itemBs, gun, itemEnt, optic_attach); itemBs = ItemBase.Cast(primary); player.SetQuickBarEntityShortcut(primary, 1, true); break; // Default Player Loadout default: addItem(itemEnt, itemBs, player, "SmershBag", 1, 0, -1); addItem(itemEnt, itemBs, player, "Pear", 2, 0, -1); addItem(itemEnt, itemBs, player, "StoneKnife", 1, 0, 1); addItem(itemEnt, itemBs, player, "Rag", 1, 6, 2); addItem(itemEnt, itemBs, player, "WoodAxe", 1, 0, 0); break; } } void addItem(EntityAI itemEnt, ItemBase itemBs, PlayerBase player, string item_name, int count, int stackSize, int invSlot) { for (int i = 0; i < count; i++) { itemEnt = player.GetInventory().CreateInInventory(item_name); itemBs = ItemBase.Cast(itemEnt); if (stackSize > 0) { itemBs.SetQuantity(stackSize); } if (invSlot >= 0 || invSlot <= 9) { player.SetQuickBarEntityShortcut(itemEnt, invSlot, true); } } } EntityAI akmClass(PlayerBase player, ItemBase itemBs, EntityAI gun, EntityAI itemEnt, EntityAI optic_attach) { gun = player.GetHumanInventory().CreateInHands("AKM"); gun.GetInventory().CreateAttachment("AK_WoodHndgrd"); gun.GetInventory().CreateAttachment("AK_Woodbttstck"); gun.GetInventory().CreateAttachment("AK_Suppressor"); optic_attach = gun.GetInventory().CreateAttachment("PSO1Optic"); optic_attach.GetInventory().CreateAttachment("Battery9V"); itemBs = ItemBase.Cast(gun); return gun; } EntityAI m4a1Class(PlayerBase player, ItemBase itemBs, EntityAI gun, EntityAI itemEnt, EntityAI optic_attach) { gun = player.GetHumanInventory().CreateInHands("M4A1_Green"); gun.GetInventory().CreateAttachment("M4_PlasticHndgrd"); gun.GetInventory().CreateAttachment("M4_OEBttstck"); gun.GetInventory().CreateAttachment("M4_Suppressor"); optic_attach = gun.GetInventory().CreateAttachment("ACOGOptic"); itemBs = ItemBase.Cast(gun); return gun; } EntityAI usgClass(PlayerBase player, ItemBase itemBs, EntityAI gun, EntityAI itemEnt, EntityAI optic_attach) { gun = player.GetHumanInventory().CreateInHands("UMP45"); gun.GetInventory().CreateAttachment("PistolSuppressor"); optic_attach = gun.GetInventory().CreateAttachment("M68Optic"); optic_attach.GetInventory().CreateAttachment("Battery9V"); itemBs = ItemBase.Cast(gun); return gun; } } void main() { Hive ce = CreateHive(); if ( ce ) ce.InitOffline(); Weather weather = g_Game.GetWeather(); weather.GetOvercast().SetLimits(0, 0); weather.GetRain().SetLimits(0, 0); weather.GetFog().SetLimits(0, 0); weather.GetOvercast().SetForecastChangeLimits(0, 0); weather.GetRain().SetForecastChangeLimits(0, 0); weather.GetFog().SetForecastChangeLimits(0, 0); weather.GetOvercast().SetForecastTimeLimits(0, 0); weather.GetRain().SetForecastTimeLimits(0, 0); weather.GetFog().SetForecastTimeLimits(0, 0); weather.GetOvercast().Set(0, 0, 0); weather.GetRain().Set(0, 0, 0); weather.GetFog().Set(0, 0, 0); weather.SetWindMaximumSpeed(15); weather.SetWindFunctionParams(0.1, 0.3, 50); } Mission CreateCustomMission(string path) { return new CustomMission(); } Added bonus in here is my (until now) unreleased AddItem Function to make it easier to add items to players. Allows choosing: number of stacks number of items per stack hotkey assignment for item (requires adding a single item instance for each hotkey desired - see how Magazines are added in the Admin Loadouts)
-
You're not emptying the person of gear before trying to add clothes. That alone will cause problems. When I get to my computer, I'll post an example of how I do custom loadouts for players based on their steam64id.
-
I personally use it for personalized spawn loadouts for Admins (including their identifying armband). This way if someone is on the coast and they are out West, they can take a quick trip to the coast to deal with the situation. As a PvE server, I find that it's important for admins to be able to quickly and relatively painlessly do so.
-
If you use BEC, there is config options for setting anyone in the Admins.xml file as priority to be able to login. All you would need to do is set them into that file and change the config. It might not allow all slots to be used when the VIPs are not around, but it guarantees they can get on.
-
if you try to use "name", the player has to set their name using Launch Parameters in Steam to the right things. Switch(player.GetIdentity().GetName()){ case "Redteam": //this player's name is "Redteam" so assign them to red team break; case "Blueteam": //this player's name is "Blueteam" so assign them to blue team break; default: //this player's name is not set in Steam Launch Parameters, we should probably assign a random team to them break; }
-
yeah I can confirm, links are dead.
-
unfortunately the ADM file no longer records the BE GUID, it is a different hash of the Steam64id. I'm not entirely sure where that formatted hash comes from (or if it is easily converted backward), but it is the same one the you get with player.GetIdentity().GetId().
-
Switch(player.GetIdentity().GetPlainId()){ case "user1steam64id": // -- insert your group assignment break; case "user2steam64id": // -- insert your group assignment break; }
-
It's easier to use their Steam64 id. https://guid2steamid.com/ to get their Steam64 from their GUID (to get player steam64 from dart/etc). player.GetIdentity().GetPlainId() player.GetIdentity().GetId() is NOT their BE GUID, it's different hash completely
-
The messages are kinda long, but not much can be done about that right now.
-
You'll find bigger problems after a while. To others, I suggest avoid this method. There are viable solutions out there but most forums are shutting down threads because BI specifically said not to try sharding.
-
There are rotation functions too. Because not all houses face the same way
-
Psuedo code means copy/paste won't work. Try providing your offending code and I can try to fix it
-
This will not work. SQLite files are locked by default to the program accessing them when the server is running. The 2nd server will fail to connect to the players db properly and will likely get all sorts of errors. This is not a viable solution.
-
ADVICE AND GUIDANCE - POST TIPS HERE!
Aussie Cleetus replied to TheVampireBat's topic in General Discussion
I hope not. I don't like the idea of 3rd party launchers. I never really have. Workshop, that's promising however. -
Comparing logs from 0.62 to 0.63, there has been a LOT of information taken out of the ADM files. 0.62 provided information on each hit on a player and the weapon as well as damage dealt and the kill. 0.63 sometimes might, if it's feeling generous inform you of maybe 1 in 5 kills. I'd like to see a return of useful information in the ADM files please. It really isn't much to add.
-
// add in RCon.cs under //if (Settings.Default.refreshOnJoin && message.EndsWith("disconnected") && !_form.pendingPlayers)" //{ // Thread thread = new Thread(new ThreadStart(_form.thread_Player)); // thread.IsBackground = true; // thread.Start(); //} <- Line 696 if (Settings.Default.announcePlayers) { string PlayerConnectOrDisconnectMessage = String.Join(" ", message.Split(' ').Skip(2)); if (PlayerConnectOrDisconnectMessage.EndsWith(" disconnected")) { _client.SendCommand(BattlEyeCommand.Say, "-1 " + PlayerConnectOrDisconnectMessage); } else if (PlayerConnectOrDisconnectMessage.EndsWith(" connected")) { string PlayerConnectedString; PlayerConnectedString = System.Text.RegularExpressions.Regex.Replace(PlayerConnectOrDisconnectMessage, @"\(.*\)", ""); // Remove extra spaces. PlayerConnectedString = System.Text.RegularExpressions.Regex.Replace(PlayerConnectedString, @"\s+", " "); _client.SendCommand(BattlEyeCommand.Say, "-1 " + PlayerConnectedString); } } // insert into GUIsettings.cs // //add under line: tooltip.SetToolTip(connectOnStartup.... tooltip.SetToolTip(announcePlayers, "If checked, DaRT will send an announcement in global chat for login and logout of each player."); //add under line: connectOnStartup.Checked = .... announcePlayers.Checked = Settings.Default.announcePlayers; //add under line: Settings.Default.connectOnStartup = .... Settings.Default.announcePlayers = announcePlayers.Checked; // THIS IS NOT SUPPOSED TO BE DONE, BUT IT WOULDN'T WORK UNLESS I manually added this to Settings.Designer.cs //added under lines: //[global::System.Configuration.UserScopedSettingAttribute()] //[global::System.Diagnostics.DebuggerNonUserCodeAttribute()] //[global::System.Configuration.DefaultSettingValueAttribute("True")] //public bool showUnknownChat { // get { // return ((bool)(this["showUnknownChat"])); // } // set { // this["showUnknownChat"] = value; // } //} [global::System.Configuration.UserScopedSettingAttribute()] [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] [global::System.Configuration.DefaultSettingValueAttribute("True")] public bool announcePlayers { get { return ((bool)(this["announcePlayers"])); } set { this["announcePlayers"] = value; } } This is what I've modified. Only other thing is the [Design] for GUIsettings.cs to add the new tab and the checkbox named "announcePlayers". Added this just in case anyone was wondering exactly what I did.
-
I have modified the code from: https://github.com/DomiStyle/DaRT and added a new option to DaRT to announce player connected/disconnected via /say -1. You will find a new tab called "Announcers" in Settings. There is currently a single checkbox with the option to announce player login/logout. I can separate these to their own checkboxes if it is needed. I prefer to have both as a single option to toggle. DaRT with Login Feed Announcer I make no claim to the creation of DaRT. All credit goes to the respective developers and contributors of it where due.
-
ADVICE AND GUIDANCE - POST TIPS HERE!
Aussie Cleetus replied to TheVampireBat's topic in General Discussion
That doesn't work. Tested it up to 5000 Tonnes. Changing it on the server itself, is pointless, because the client calculates it's own weight, and if there is any form of communication spike, it defaults to the client's calculations. Max stamina still reduces, no matter what you change on the server side