Page 1 of 1

[REJECTED] /xban command

Posted: August 20th, 2011, 3:40 am
by roblikescake
I dont remember what server i was on but there was this really nice command for stopping griefers.
You type /xan playername (reason) and then it automatically undoes the players actions for a day or so im not sure, but then it also bans the players username and then the users ip address as well. this would be a great command as alot of servers ive seen have been getting hit by griefers very bad

*they didnt have reason but i think its necessary.

Re: /xban command

Posted: August 20th, 2011, 4:14 am
by GLOTCH
rob we have this command except its called /undox

Re: /xban command

Posted: August 20th, 2011, 4:34 am
by DreamingInsane
GLOTCH wrote:rob we have this command except its called /undox
Only problem is Mr. Glotch, It's only available for '_dev' builds.

Re: /xban command

Posted: August 20th, 2011, 4:56 am
by GLOTCH
thats true

Re: /xban command

Posted: August 20th, 2011, 9:30 am
by Ollieboy
However, it doesn't automatically do it, but because there is a separate command to do it, there are more alterable parameters. For example, if they were only griefing for the last 20 minutes, you can specify 20 minutes of undoing.

Re: /xban command

Posted: August 28th, 2011, 6:47 am
by roblikescake
bump...

would someone possibly be willing to help me create this custom command? I really really need something like this. I have three guest maps and i just had to wipe them clean because of all the grief it had on it. I know fragmer is very very busing creating and customizing the best server software ever, so i wouldnt really want to ask him for help with this. I started my server on the 17th, by the 21st i had over 350 players in the database. Then it crashed and was down for a few days. Now the servers been up for almost 4 days and ive got over 500 people in the database! Thats alot. That many players is very hard to handle the griefage. Especially on three different maps. So having a command that undoes all the players actions, bans his name, bans his ip, and demotes him to the lowest rank on the server would be VERY VERY helpful. Heck, i would even donate like $5 to the person who can make the command for me. Might donate more if i have enough left over after paying some fees ive got. Youve got to remember, im only a junior in highschool and do not have a job lol
-would also like to add that in order to have the /xban command i would need a /whodid or /about command to know who it is that i need to ban lol
Anyways, thanks in advance to anyone who is of help.

Re: /xban command

Posted: August 28th, 2011, 9:44 am
by Sanjar Khan
Why don't you just wait for version we are running to be branded as stable and released? It includes block tracking and undoing other player's actions.

Re: /xban command

Posted: August 28th, 2011, 3:24 pm
by Jonty800
I've made this custom command already, although there is a bug when using /banx on an already banned player. It undoes the actions but shows that god-awful console error in the chat-feed.

Here's the code. I'll update it when I can be bothered to fix the problem with a simple "Player is currently banned, use /undox"

Code: Select all

#region banx
        static readonly CommandDescriptor CdBanx = new CommandDescriptor
        {
            Name = "banx",
            Category = CommandCategory.Chat,
            IsConsoleSafe = false,
            
            IsHidden = true,
            Permissions = new[] { Permission.Ban },
            Usage = "/banx playername",
            Help = "Bans and undoes a players actions upto 50000 blocks",
            Handler = Banx
        };
        #endregion

        static void Banx(Player player, Command cmd)
        {
            string name = cmd.Next();


            if (name != null)
            {
                string reason = cmd.NextAll();
                Player target = Server.FindPlayerOrPrintMatches(player, name, false);

                if (target == player)
                {
                    player.Message("&SYou cannot BanX yourself.");
                    return;
                }


                if (Player.IsInValidName(name))
                {
                    player.Message("Player not found. Please specify valid name.");
                    return;
                }

                DoBan(player, target.Name, "Grief (BanX)", false, false, false);
                UndoXHandler(target, new Command("/undox " + target.Name + " 100000"));
            }
            else
            {
                player.Message("{0}",CdBanx.Usage);
            }
        }
            #region undox stuff
            static void UndoXHandler( Player player, Command cmd ) {
            

            World world = player.World;
            if( !world.BlockDB.Enabled ) {
                player.Message( "&SCould not Undo Player's actions. &WBlockDB is disabled in this world." );
                return;
            }

            string name = cmd.Next();
            string range = cmd.Next();
            if( name == null || range == null ) {
                CdBanx.PrintUsage( player );
                return;
            }

            PlayerInfo target = PlayerDB.FindPlayerInfoOrPrintMatches(player,  name );
            if( target == null ) return;

            if( !player.Can( Permission.UndoOthersActions, target.Rank ) ) {
                player.Message( "You may only undo actions of players ranked {0}&S or lower.",
                                player.Info.Rank.GetLimit( Permission.UndoOthersActions ).ClassyName );
                player.Message( "Player {0}&S is ranked {1}", target.ClassyName, target.Rank.ClassyName );
                return;
            }

            int count;
            TimeSpan span;
            BlockDBEntry[] changes;
            if( Int32.TryParse( range, out count ) ) {
                if( !cmd.IsConfirmed ) {
                    player.Message( "Searching for last {0} changes made by {1}&s...",
                                    count, target.ClassyName );
                }
                changes = world.BlockDB.Lookup( target, count );
                

            } else if( range.TryParseMiniTimespan( out span ) ) {
                if( !cmd.IsConfirmed ) {
                    player.Message( "Searching for changes made by {0}&s in the last {1}...",
                                    target.ClassyName, span.ToMiniString() );
                }
                changes = world.BlockDB.Lookup( target, span );
                if( changes.Length > 0 && !cmd.IsConfirmed ) {
                    player.Confirm( cmd, "Undo changes ({0}) made by {1}&S in the last {2}?",
                                    changes.Length, target.ClassyName, span.ToMiniString() );
                    return;
                }

            } else {
                CdBanx.PrintUsage( player );
                return;
            }

            if( changes.Length == 0 ) {
                player.Message( "UndoX: Found nothing to undo." );
                return;
            }

            int blocks = 0, blocksDenied = 0;
            bool cannotUndo = false;
            player.UndoBuffer.Clear();
            for( int i = 0; i < changes.Length; i++ ) {
                DrawOneBlock( player, (byte)changes[i].OldBlock,
                              changes[i].X, changes[i].Y, changes[i].Z,
                              ref blocks, ref blocksDenied, ref cannotUndo );
            }

            Logger.Log( "{0} undid {1} blocks changed by player {2} (on world {3})", LogType.UserActivity,
                        player.Name,
                        blocks,
                        target.Name,
                        world.Name );

            DrawingFinished( player, "Undone", blocks, blocksDenied );
        }
            static void DrawingFinished(Player player, string verb, int blocks, int blocksDenied)
            {
                if (blocks == 0)
                {
                    if (blocksDenied > 0)
                    {
                        player.MessageNow("No blocks could be {0} due to permission issues.", verb.ToLower());
                    }
                    else
                    {
                        player.MessageNow("No blocks were {0}.", verb.ToLower());
                    }
                }
                else
                {
                    if (blocksDenied > 0)
                    {
                        player.MessageNow("{0} {1} blocks ({2} blocks skipped due to permission issues)... " +
                                           "The map is now being updated.", verb, blocks, blocksDenied);
                    }
                    else
                    {
                        player.MessageNow("{0} {1} blocks... The map is now being updated.", verb, blocks);
                    }
                }
                if (blocks > 0)
                {
                    player.Info.ProcessDrawCommand(blocks);
                    player.UndoBuffer.TrimExcess();
                    Server.RequestGC();
                }
            }
            static void DrawOneBlock(Player player, byte drawBlock, int x, int y, int z, ref int blocks, ref int blocksDenied, ref bool cannotUndo)
            {
                if (!player.World.Map.InBounds(x, y, z)) return;
                byte block = player.World.Map.GetBlockByte(x, y, z);
                if (block == drawBlock) return;

                if (player.CanPlace(x, y, z, (Block)drawBlock, false) != CanPlaceResult.Allowed)
                {
                    blocksDenied++;
                    return;
                }

                // this would've been an easy way to do block tracking for draw commands BUT
                // if i set "origin" to player, he will not receive the block update. I tried.
                player.World.Map.QueueUpdate(new BlockUpdate(null, x, y, z, drawBlock));
                Player.RaisePlayerPlacedBlockEvent(player, player.World.Map, (short)x, (short)y, (short)z, (Block)block, (Block)drawBlock, false);

                if (MaxUndoCount < 1 || blocks < MaxUndoCount)
                {
                    player.UndoBuffer.Enqueue(new BlockUpdate(null, x, y, z, block));
                }
                else if (!cannotUndo)
                {
                    player.UndoBuffer.Clear();
                    player.UndoBuffer.TrimExcess();
                    player.MessageNow("NOTE: This draw command is too massive to undo.");
                    if (player.Can(Permission.ManageWorlds))
                    {
                        player.MessageNow("Reminder: You can use &H/wflush&S to accelerate draw commands.");
                    }
                    cannotUndo = true;
                }
                blocks++;
            }
            public static int MaxUndoCount = 2000000;
            #endregion
Also note that I use IsInValidName in my code. Its the same as IsValidName but change the > around so its > 16 or something.

edit: ahh here it is, IsInValidName. Sits nicely in Player.cs

Code: Select all

public static bool IsInValidName(string name)
        {
            if (name == null) throw new ArgumentNullException("name");
            if (name.Length > 2 || name.Length < 16) return false;
            for (int i = 0; i < name.Length; i++)
            {
                char ch = name[i];
                if ((ch < '0' && ch != '.') || (ch > '9' && ch < 'A') || (ch > 'Z' && ch < '_') || (ch > '_' && ch < 'a') || ch > 'z')
                {
                    return false;
                }
            }
            return true;
        }
I dont even know why I made / use this, but I'm used to it now.

Re: /xban command

Posted: August 28th, 2011, 3:27 pm
by Jonty800
If you dont know how to modify the software, then feel free to use my mods. sourceforge.net/projects/jonty800/files

And to enable block tracking, edit config.xml and replace
<!--<EnableBlockDB>False</EnableBlockDB>-->
with
<EnableBlockDB>True</EnableBlockDB>

(When the server is shutdown)

Re: /xban command

Posted: August 28th, 2011, 4:28 pm
by roblikescake
jonty, thank you so much for the code. but one problem. installing the code. i dont quite get how to do that. you said to go to your site and use your mods but i dont know which one to use lol. could you help me a bit here?

Re: /xban command

Posted: August 28th, 2011, 4:41 pm
by Jonty800
You should use the latest file, which I think is Au70 v800.2.1.

Unless you know how to add code to a source, in which you should should SVN fCraft from http://svn.fcraft.net:8080/svn/fcraft/branch-0.60x

Re: /xban command

Posted: August 28th, 2011, 5:15 pm
by roblikescake
Jonty800 wrote:You should use the latest file, which I think is Au70 v800.2.1.

Unless you know how to add code to a source, in which you should should SVN fCraft from http://svn.fcraft.net:8080/svn/fcraft/branch-0.60x
the latest version you have is Au70 v800.2.0 and i have downloaded it. Now, what exactly do i do with it? Do i just replace my files with the files you have in the thing i downloaded?

Re: /xban command

Posted: August 28th, 2011, 5:30 pm
by Jonty800
ahh I have no idea what happened to v800.2.1, I uploaded it yesterday. I just re-uploaded it so download that.

Extract and replace all files in the download.
You should make a backup of your entire server first.

Re: /xban command

Posted: August 28th, 2011, 5:48 pm
by roblikescake
Jonty800 wrote:ahh I have no idea what happened to v800.2.1, I uploaded it yesterday. I just re-uploaded it so download that.

Extract and replace all files in the download.
You should make a backup of your entire server first.
Alright, so i downloaded it. Backed up my server. And copied your files over. It only replace one file, do your files have to be renamed or something?

-yeah, im lost again. only one of your files has the same name as my originals. what should i do?

Re: /xban command

Posted: August 28th, 2011, 6:16 pm
by Jonty800
you probably had an older version of fCraft. Run the server using ServerGUI and delete whatever the old one was called.
Use ConfigGUI for the config and delete the old one.

Re: /xban command

Posted: August 28th, 2011, 6:25 pm
by roblikescake
Jonty800 wrote:you probably had an older version of fCraft. Run the server using ServerGUI and delete whatever the old one was called.
Use ConfigGUI for the config and delete the old one.
Okay. I replaced fCraftUI with ServerGUI and i replaced ConfigTool with ConfigGUI. I also replaced the fCraft.dll with your fCraft.dll

You also said to change something about the block database to true, but theres nothing involving that in the config.xml

Now, all i do is start up the server and were good?

Re: /xban command

Posted: August 28th, 2011, 6:42 pm
by DreamingInsane
Wow Jonty800, How kind of you to have built that fCraft dev build.
Now I can experiment with what I've been wanting to. :3

Re: /xban command

Posted: August 28th, 2011, 6:43 pm
by roblikescake
DreamingInsane wrote:Wow Jonty800, How kind of you to have built that fCraft dev build.
Now I can experiment with what I've been wanting to. :3
im using his copy of fcraft now. command list is amazing :)

now to go on the server myself to test all commands lol

Re: /xban command

Posted: August 28th, 2011, 7:40 pm
by roblikescake
so ive ran into some confusion. after doing what i told you i did, i used /blockdb on on my guest maps, and i had a few people place some blocks, but then it didnt work. it said that nothing could be found about the block or something. and whats the command to undo a players actions for given time? another thing, several of the commands i dont need on the server. such as "au70" and "guestwipe" and "realm" and "realms". How could i go about removing commands that i do not need? Also i odnt understand the door and remove door. i might just remove those two as well. and how could i edit the review command? instead of Op i want it to say Staff. Sorry for all this lol

Re: /xban command

Posted: August 28th, 2011, 8:03 pm
by Jonty800
/au70 cant really be removed
realm and guestwipe can be unticked in configGUI
/door is to be used on already-placed blocks, then /door them as you wood for a zone. /removedoor if you already have one.
I'll change Op to staff for the next version I upload, seems better like that.

As for blockdb, you HAVE to edit it in the config.xml.
if that section is not there, paste it into the advanced section.

Here is what an unmodified config.xml looks like:

Code: Select all

<?xml version="1.0" encoding="utf-8"?>
<fCraftConfig version="146">
  <Section name="General">
    <!--<ServerName>Custom Minecraft Server (fCraft)</ServerName>-->
    <!--<MOTD>Welcome to the server!</MOTD>-->
    <!--<MaxPlayers>20</MaxPlayers>-->
    <!--<MaxPlayersPerWorld>20</MaxPlayersPerWorld>-->
    <!--<DefaultRank></DefaultRank>-->
    <!--<IsPublic>False</IsPublic>-->
    <!--<Port>25565</Port>-->
    <!--<UploadBandwidth>100</UploadBandwidth>-->
    <!--<LoadPlugins>False</LoadPlugins>-->
  </Section>
  <Section name="Chat">
    <!--<RankColorsInChat>True</RankColorsInChat>-->
    <!--<RankColorsInWorldNames>True</RankColorsInWorldNames>-->
    <!--<RankPrefixesInChat>False</RankPrefixesInChat>-->
    <!--<RankPrefixesInList>False</RankPrefixesInList>-->
    <!--<ShowConnectionMessages>True</ShowConnectionMessages>-->
    <!--<ShowBannedConnectionMessages>True</ShowBannedConnectionMessages>-->
    <!--<ShowJoinedWorldMessages>True</ShowJoinedWorldMessages>-->
    <!--<SystemMessageColor>yellow</SystemMessageColor>-->
    <!--<HelpColor>lime</HelpColor>-->
    <!--<SayColor>green</SayColor>-->
    <!--<AnnouncementColor>green</AnnouncementColor>-->
    <!--<PrivateMessageColor>aqua</PrivateMessageColor>-->
    <!--<MeColor>purple</MeColor>-->
    <!--<WarningColor>red</WarningColor>-->
    <!--<AnnouncementInterval>0</AnnouncementInterval>-->
  </Section>
  <Section name="Worlds">
    <!--<DefaultBuildRank></DefaultBuildRank>-->
    <!--<MapPath>maps</MapPath>-->
  </Section>
  <Section name="Security">
    <!--<VerifyNames>Balanced</VerifyNames>-->
    <!--<MaxConnectionsPerIP>0</MaxConnectionsPerIP>-->
    <!--<AllowUnverifiedLAN>False</AllowUnverifiedLAN>-->
    <!--<PatrolledRank></PatrolledRank>-->
    <!--<AntispamMessageCount>4</AntispamMessageCount>-->
    <!--<AntispamInterval>5</AntispamInterval>-->
    <!--<AntispamMuteDuration>5</AntispamMuteDuration>-->
    <!--<AntispamMaxWarnings>2</AntispamMaxWarnings>-->
    <!--<PaidPlayersOnly>False</PaidPlayersOnly>-->
    <!--<RequireBanReason>False</RequireBanReason>-->
    <!--<RequireKickReason>False</RequireKickReason>-->
    <!--<RequireRankChangeReason>False</RequireRankChangeReason>-->
    <!--<AnnounceKickAndBanReasons>True</AnnounceKickAndBanReasons>-->
    <!--<AnnounceRankChanges>True</AnnounceRankChanges>-->
    <!--<AnnounceRankChangeReasons>True</AnnounceRankChangeReasons>-->
  </Section>
  <Section name="SavingAndBackup">
    <!--<SaveInterval>90</SaveInterval>-->
    <!--<BackupOnStartup>True</BackupOnStartup>-->
    <!--<BackupOnJoin>False</BackupOnJoin>-->
    <!--<BackupOnlyWhenChanged>True</BackupOnlyWhenChanged>-->
    <!--<DefaultBackupInterval>20</DefaultBackupInterval>-->
    <!--<MaxBackups>0</MaxBackups>-->
    <!--<MaxBackupSize>0</MaxBackupSize>-->
    <!--<BackupDataOnStartup>True</BackupDataOnStartup>-->
  </Section>
  <Section name="Logging">
    <!--<LogMode>OneFile</LogMode>-->
    <!--<MaxLogs>0</MaxLogs>-->
  </Section>
  <Section name="IRC">
    <!--<IRCBotEnabled>False</IRCBotEnabled>-->
    <!--<IRCBotNick>MinecraftBot</IRCBotNick>-->
    <!--<IRCBotNetwork>irc.esper.net</IRCBotNetwork>-->
    <!--<IRCBotPort>6667</IRCBotPort>-->
    <!--<IRCBotChannels>#changeme</IRCBotChannels>-->
    <!--<IRCBotForwardFromServer>False</IRCBotForwardFromServer>-->
    <!--<IRCBotForwardFromIRC>False</IRCBotForwardFromIRC>-->
    <!--<IRCBotAnnounceServerJoins>False</IRCBotAnnounceServerJoins>-->
    <!--<IRCBotAnnounceIRCJoins>False</IRCBotAnnounceIRCJoins>-->
    <!--<IRCBotAnnounceServerEvents>False</IRCBotAnnounceServerEvents>-->
    <!--<IRCRegisteredNick>False</IRCRegisteredNick>-->
    <!--<IRCNickServ>NickServ</IRCNickServ>-->
    <!--<IRCNickServMessage>IDENTIFY passwordGoesHere</IRCNickServMessage>-->
    <!--<IRCMessageColor>purple</IRCMessageColor>-->
    <!--<IRCDelay>750</IRCDelay>-->
    <!--<IRCThreads>1</IRCThreads>-->
    <!--<IRCUseColor>True</IRCUseColor>-->
  </Section>
  <Section name="Advanced">
    <!--<RelayAllBlockUpdates>False</RelayAllBlockUpdates>-->
    <!--<UpdaterMode>Prompt</UpdaterMode>-->
    <!--<RunBeforeUpdate></RunBeforeUpdate>-->
    <!--<RunAfterUpdate></RunAfterUpdate>-->
    <!--<BackupBeforeUpdate>True</BackupBeforeUpdate>-->
    <!--<NoPartialPositionUpdates>False</NoPartialPositionUpdates>-->
    <!--<ProcessPriority>Normal</ProcessPriority>-->
    <!--<BlockUpdateThrottling>2048</BlockUpdateThrottling>-->
    <!--<TickInterval>100</TickInterval>-->
    <!--<LowLatencyMode>False</LowLatencyMode>-->
    <!--<SubmitCrashReports>True</SubmitCrashReports>-->
    <!--<MaxUndo>2000000</MaxUndo>-->
    <!--<ConsoleName>(console)</ConsoleName>-->
    <!--<AutoRankEnabled>False</AutoRankEnabled>-->
    <!--<HeartbeatEnabled>True</HeartbeatEnabled>-->
    <!--<IP>0.0.0.0</IP>-->
    <!--<BandwidthUseMode>Normal</BandwidthUseMode>-->
    <!--<RestartInterval>0</RestartInterval>-->
    <!--<EnableBlockDB>False</EnableBlockDB>-->
  </Section>
  <ConsoleOptions>
    <SystemActivity />
    <Warning />
    <Error />
    <SeriousError />
    <UserActivity />
    <UserCommand />
    <SuspiciousActivity />
    <GlobalChat />
    <PrivateChat />
    <RankChat />
    <ConsoleOutput />
    <IRC />
    <Trace />
  </ConsoleOptions>
  <LogFileOptions>
    <SystemActivity />
    <Warning />
    <Error />
    <SeriousError />
    <UserActivity />
    <UserCommand />
    <SuspiciousActivity />
    <GlobalChat />
    <PrivateChat />
    <RankChat />
    <ConsoleInput />
    <ConsoleOutput />
    <IRC />
    <Debug />
    <Trace />
  </LogFileOptions>
  <Ranks>
    <Rank name="owner" id="OwXLWemabSs9uoFc" color="red" prefix="+" antiGriefBlocks="0" antiGriefSeconds="0" reserveSlot="true" allowSecurityCircumvention="true" copySlots="2">
      <Chat />
      <Build />
      <Delete />
      <PlaceGrass />
      <PlaceWater />
      <PlaceLava />
      <PlaceAdmincrete />
      <DeleteAdmincrete />
      <ViewOthersInfo />
      <ViewPlayerIPs />
      <EditPlayerDB />
      <Say />
      <ReadStaffChat />
      <UseColorCodes />
      <UseSpeedHack />
      <Kick max="owner#OwXLWemabSs9uoFc" />
      <Ban max="owner#OwXLWemabSs9uoFc" />
      <BanIP />
      <BanAll />
      <Promote max="owner#OwXLWemabSs9uoFc" />
      <Demote max="owner#OwXLWemabSs9uoFc" />
      <Hide />
      <Draw />
      <DrawAdvanced />
      <UndoOthersActions />
      <CopyAndPaste />
      <Teleport />
      <Bring />
      <BringAll />
      <Patrol />
      <Spectate />
      <Freeze />
      <Mute />
      <SetSpawn />
      <Lock />
      <ManageZones />
      <ManageWorlds />
      <ManageBlockDB />
      <Import />
      <ReloadConfig />
      <ShutdownServer />
    </Rank>
    <Rank name="op" id="Tvwn64EINlxrB0Nj" color="aqua" prefix="-" antiGriefBlocks="0" antiGriefSeconds="0" copySlots="2">
      <Chat />
      <Build />
      <Delete />
      <PlaceGrass />
      <PlaceWater />
      <PlaceLava />
      <PlaceAdmincrete />
      <DeleteAdmincrete />
      <ViewOthersInfo />
      <ViewPlayerIPs />
      <Say />
      <ReadStaffChat />
      <UseColorCodes />
      <UseSpeedHack />
      <Kick max="op#Tvwn64EINlxrB0Nj" />
      <Ban max="builder#7USh623gHtWpj1fs" />
      <BanIP />
      <Promote max="builder#7USh623gHtWpj1fs" />
      <Demote max="builder#7USh623gHtWpj1fs" />
      <Hide />
      <Draw />
      <DrawAdvanced />
      <UndoOthersActions />
      <CopyAndPaste />
      <Teleport />
      <Bring />
      <Patrol />
      <Spectate />
      <Freeze />
      <Mute />
      <SetSpawn />
      <Lock />
      <ManageZones />
    </Rank>
    <Rank name="builder" id="7USh623gHtWpj1fs" color="white" antiGriefBlocks="47" antiGriefSeconds="6" drawLimit="4096" idleKickAfter="20" copySlots="2">
      <Chat />
      <Build />
      <Delete />
      <PlaceGrass />
      <PlaceWater />
      <PlaceLava />
      <PlaceAdmincrete />
      <DeleteAdmincrete />
      <ViewOthersInfo />
      <UseSpeedHack />
      <Kick max="builder#7USh623gHtWpj1fs" />
      <Draw />
      <Teleport />
    </Rank>
    <Rank name="guest" id="xMJGiNlDNVY5byq7" color="silver" antiGriefBlocks="37" antiGriefSeconds="5" drawLimit="512" idleKickAfter="20" copySlots="2">
      <Chat />
      <Build />
      <Delete />
      <UseSpeedHack />
    </Rank>
  </Ranks>
  <LegacyRankMapping />
</fCraftConfig>

Re: /xban command

Posted: August 28th, 2011, 8:19 pm
by fragmer
If you delete your config.xml, then run ConfigGUI and click "OK" without changing anything, you will get the very same default config.xml

Also note that I will not be able to provide support for any problems that may result from using modified copies of fCraft.

Also, please disable crash reporting if you are using a modified copy of fCraft. It's a checkbox on the "Advanced" tab of ConfigGUI.

Re: /xban command

Posted: September 2nd, 2011, 12:14 am
by roblikescake
so jonty ive been using your modded fCraft for a while now. i love it. is it possible to change the guestwipe command? instead of guests, i have noobs. instead of guest map, i have noob1, noob2, and noob3. could i simply edit the code to make it work with those maps?


and to fragmer, do you have a possible timeframe on when the /undo playername time command will be released? my noob maps get griefed ALOT, and its disappointing to continuously wipe them instead of undoing the grief with a command.

Re: /xban command

Posted: September 2nd, 2011, 7:11 pm
by Jonty800
You can change guestwipe command to replace any map in the code.

The code is not up yet.

Version 800.3.0 is up.

I will upload the source in a few days when I fix a stupid bug.

Re: /xban command

Posted: September 2nd, 2011, 8:21 pm
by fragmer
I dont have a timeline. It'll be at least 2 more weeks of work.

I'm going to mark this one as "rejected." All the functionality already exists in fCraft, I dont feel like a dedicated command is needed.