Yes it does need an Update for sure! They have already had plenty of time to Address this issue...Even before the Wipe. Knowing what was comming. Just shows that Some Developers take Pride in what they have given us. And others are just here for the "RIDE"!!! They know what is coming ahead of time for the Wipe. This guy has "No Excuse"!!!! He just doesn't care!
Auto Doors
That's a little bit unfair for a free plugin that is currently being maintained by a replacement dev (bushhy) as the original author is LONG gone.
Credits
Bombardir, for the original version of this plugin
Wulf, for the previous re-write of this plugin
Arainrr: Previous maintainer
James: Helping test plugin update before force wipe It is also unfair as the "terms of use" state that ALL plugins are released AS IS and that there is no guarantee on their functionality on all servers, Just because a change is being released by FP does not mean the dev or whoever is looking after the plugin must drop everything in RL just to appease any users of the plugin who have not the patience to wait for it to be fixed. Especially as a "fix" for it has been posted which works
Hi
I have created a fork of the plugin to keep it updated and add new features.
I hope it is useful
https://digitalmarketplay.com/product/auto-doors/
Thank you for doing that for us. My guys appreciate it. And so do I. Thanks again.
очень были полезны ваши труды спасибо, просто мало отписывают. thank you🤗👍❤️scalbox
Hi
I have created a fork of the plugin to keep it updated and add new features.
I hope it is useful
https://digitalmarketplay.com/product/auto-doors/
AutoDoors - Failed to compile: The type 'System.Text.StringBuilder' cannot be used as type parameter 'T' in the generic type or method 'Pool.Free<T>(ref T)'. There is no implicit reference conversion from 'System.Text.StringBuilder' to 'Facepunch.Pool.IPooled'. | Line: 433, Pos: 30
private void CmdAutoDoor(BasePlayer player, string command, string[] args)
{
if (configData.usePermission && !permission.UserHasPermission(player.UserIDString, PERMISSION_USE))
{
Print(player, Lang("NotAllowed", player.UserIDString));
return;
}
var playerData = GetPlayerData(player.userID);
if (args == null || args.Length == 0)
{
playerData.doorData.enabled = !playerData.doorData.enabled;
Print(player, Lang("AutoDoor", player.UserIDString, playerData.doorData.enabled ? Lang("Enabled", player.UserIDString) : Lang("Disabled", player.UserIDString)));
return;
}
float time;
if (float.TryParse(args[0], out time))
{
if (time <= configData.globalS.maximumDelay && time >= configData.globalS.minimumDelay)
{
playerData.doorData.time = time;
if (!playerData.doorData.enabled) playerData.doorData.enabled = true;
Print(player, Lang("AutoDoorDelay", player.UserIDString, time));
return;
}
Print(player, Lang("AutoDoorDelayLimit", player.UserIDString, configData.globalS.minimumDelay, configData.globalS.maximumDelay));
return;
}
switch (args[0].ToLower())
{
case "a":
case "all":
{
if (args.Length > 1)
{
if (float.TryParse(args[1], out time))
{
if (time <= configData.globalS.maximumDelay && time >= configData.globalS.minimumDelay)
{
playerData.doorData.time = time;
playerData.doorTypeS.Clear();
playerData.theDoorS.Clear();
Print(player, Lang("AutoDoorDelayAll", player.UserIDString, time));
return;
}
Print(player,
Lang("AutoDoorDelayLimit", player.UserIDString, configData.globalS.minimumDelay,
configData.globalS.maximumDelay));
return;
}
}
break;
}
case "s":
case "single":
{
var door = GetLookingAtDoor(player);
if (door == null || door.net == null)
{
Print(player, Lang("DoorNotFound", player.UserIDString));
return;
}
string doorDisplayName;
if (!supportedDoors.TryGetValue(door.ShortPrefabName, out doorDisplayName))
{
Print(player, Lang("DoorNotSupported", player.UserIDString));
return;
}
StoredData.DoorData doorData;
if (!playerData.theDoorS.TryGetValue(door.net.ID.Value, out doorData))
{
doorData = new StoredData.DoorData
{ enabled = true, time = configData.globalS.defaultDelay };
playerData.theDoorS.Add(door.net.ID.Value, doorData);
}
if (args.Length <= 1)
{
doorData.enabled = !doorData.enabled;
Print(player,
Lang("AutoDoorSingle", player.UserIDString,
GetDeployableDisplayName(player, door.ShortPrefabName, doorDisplayName),
doorData.enabled
? Lang("Enabled", player.UserIDString)
: Lang("Disabled", player.UserIDString)));
return;
}
if (float.TryParse(args[1], out time))
{
if (time <= configData.globalS.maximumDelay && time >= configData.globalS.minimumDelay)
{
doorData.time = time;
Print(player, Lang("AutoDoorSingleDelay", player.UserIDString,
GetDeployableDisplayName(player, door.ShortPrefabName, doorDisplayName), time));
return;
}
Print(player,
Lang("AutoDoorDelayLimit", player.UserIDString, configData.globalS.minimumDelay,
configData.globalS.maximumDelay));
return;
}
break;
}
case "t":
case "type":
{
var door = GetLookingAtDoor(player);
if (door == null || door.net == null)
{
Print(player, Lang("DoorNotFound", player.UserIDString));
return;
}
string doorDisplayName;
if (!supportedDoors.TryGetValue(door.ShortPrefabName, out doorDisplayName))
{
Print(player, Lang("DoorNotSupported", player.UserIDString));
return;
}
StoredData.DoorData doorData;
if (!playerData.doorTypeS.TryGetValue(door.ShortPrefabName, out doorData))
{
doorData = new StoredData.DoorData
{ enabled = true, time = configData.globalS.defaultDelay };
playerData.doorTypeS.Add(door.ShortPrefabName, doorData);
}
if (args.Length <= 1)
{
doorData.enabled = !doorData.enabled;
Print(player,
Lang("AutoDoorType", player.UserIDString, GetDeployableDisplayName(player, door.ShortPrefabName, doorDisplayName),
doorData.enabled
? Lang("Enabled", player.UserIDString)
: Lang("Disabled", player.UserIDString)));
return;
}
if (float.TryParse(args[1], out time))
{
if (time <= configData.globalS.maximumDelay && time >= configData.globalS.minimumDelay)
{
doorData.time = time;
Print(player, Lang("AutoDoorTypeDelay", player.UserIDString,
GetDeployableDisplayName(player, door.ShortPrefabName, doorDisplayName), time));
return;
}
Print(player,
Lang("AutoDoorDelayLimit", player.UserIDString, configData.globalS.minimumDelay,
configData.globalS.maximumDelay));
return;
}
break;
}
case "h":
case "help":
{
StringBuilder stringBuilder = Pool.Get<StringBuilder>();
stringBuilder.AppendLine();
var firstCmd = configData.chatS.commands[0];
stringBuilder.AppendLine(Lang("AutoDoorSyntax", player.UserIDString, firstCmd));
stringBuilder.AppendLine(Lang("AutoDoorSyntax1", player.UserIDString, firstCmd,
configData.globalS.minimumDelay, configData.globalS.maximumDelay));
stringBuilder.AppendLine(Lang("AutoDoorSyntax2", player.UserIDString, firstCmd));
stringBuilder.AppendLine(Lang("AutoDoorSyntax3", player.UserIDString, firstCmd,
configData.globalS.minimumDelay, configData.globalS.maximumDelay));
stringBuilder.AppendLine(Lang("AutoDoorSyntax4", player.UserIDString, firstCmd));
stringBuilder.AppendLine(Lang("AutoDoorSyntax5", player.UserIDString, firstCmd,
configData.globalS.minimumDelay, configData.globalS.maximumDelay));
stringBuilder.AppendLine(Lang("AutoDoorSyntax6", player.UserIDString, firstCmd,
configData.globalS.minimumDelay, configData.globalS.maximumDelay));
Print(player, stringBuilder.ToString());
stringBuilder.Clear();
Pool.Free(ref stringBuilder);
return;
}
}
Print(player, Lang("SyntaxError", player.UserIDString, configData.chatS.commands[0]));
}
Fix Provided by Raiven[007]:
case "h":
case "help":
{
StringBuilder stringBuilder = new StringBuilder(); // Add/Replace with this Line!!
stringBuilder.AppendLine();
var firstCmd = configData.chatS.commands[0];
stringBuilder.AppendLine(Lang("AutoDoorSyntax", player.UserIDString, firstCmd));
stringBuilder.AppendLine(Lang("AutoDoorSyntax1", player.UserIDString, firstCmd,
configData.globalS.minimumDelay, configData.globalS.maximumDelay));
stringBuilder.AppendLine(Lang("AutoDoorSyntax2", player.UserIDString, firstCmd));
stringBuilder.AppendLine(Lang("AutoDoorSyntax3", player.UserIDString, firstCmd,
configData.globalS.minimumDelay, configData.globalS.maximumDelay));
stringBuilder.AppendLine(Lang("AutoDoorSyntax4", player.UserIDString, firstCmd));
stringBuilder.AppendLine(Lang("AutoDoorSyntax5", player.UserIDString, firstCmd,
configData.globalS.minimumDelay, configData.globalS.maximumDelay));
stringBuilder.AppendLine(Lang("AutoDoorSyntax6", player.UserIDString, firstCmd,
configData.globalS.minimumDelay, configData.globalS.maximumDelay));
Print(player, stringBuilder.ToString());
stringBuilder.Clear(); // Add/Replace with this Line!!
return;
}