Skip to content
NordBots.
Back to Checkpoint

Checkpoint configuration editor

Set everything with sliders and toggles, then export the files. This covers the whole config folder: config.json for how the plugin behaves, one file per crate for the loot, the shared pools they draw from, and the language file players read. Your progress saves in this browser as you go. See the docs for what each setting does.

Ready to edit

Templates

Save every file you have changed as one named set, then load it any time. Stored in this browser.

No templates yet.

Settings

Crates

No crate files yet.

Shared pools

No shared pools yet.

Language

No language file published.

config.json

How the plugin behaves. Settings only, never loot.

General

Language

Which language file to use out of the lang folder. "en" reads lang/en.json. Copy en.json to de.json, translate it, and put "de" here.

LangAutoFill

When I get an update with new lines in it, add the new lines to your language file and leave every line you wrote alone. Your old file is kept beside it as a .bak. Set this to false and I will never touch your files.

SenderName

The name shown in front of my chat messages. Leave it empty and the game shows the usual (SERVER): prefix. Put anything in and that name is used instead. {map} and {server} both work here.

Server

How I work out what to call this server in Discord posts and in my records.

Name

Set this and I use it, no questions asked. Best option if you know it.

NameFromParams

If Name is empty I read your launch line and take whatever follows one of these. First one found wins. Handy on a cluster, where every map has a different -ServerName= and you want the posts to say which map.

UseSessionName

Last resort before the map name: use the session name players see in the server browser. Off by default because it is often long and messy.

Id

A short tag for me to use in the database, like "island" or "pvp2". Leave it empty and I make one from the name above.

General

Debug

Turn this on and I explain what I am doing in ArkApi.log: which door I caught a joining player at, what an address lookup cost, whether a permission check said yes. Off by default so the log stays quiet. Turn it on when something looks wrong, then turn it back off.

Commands

What players type. Rename any of these to whatever your players expect. Set one to an empty string and that command is not registered at all.

WishCMD

Ask to travel to somebody: /tpr Dave

SummonCMD

Ask somebody to come to you: /tph Dave

AcceptCMD

Say yes. With more than one person waiting, /tpa #2 or /tpa Dave.

DenyCMD

Say no. /tpd all clears every ask at once.

CancelCMD

Drop the ask you sent.

ListCMD

See who is waiting on you, numbered.

InfoCMD

Your cooldown, your count for today, and why the last one was refused.

StaffCMD

The small staff command in chat: /ck who Dave, /ck ban, /ck mute. Everything bigger lives on the console and RCON, where there is room.

MineCMD

A player checks their own state: am I banned, am I muted, when does it end. This one line saves a lot of staff messages.

Screen

Refusing a connection for what it is rather than who is on it. Every one of these needs geo data with the threat flags on, so they do nothing until you put an ipgeolocation key in geo.json and set Geo.Security to true. All off by default, and please think before turning any on. Plenty of ordinary players use a VPN for everything they do.

BlockVpn

Somebody the geo service says is on a VPN.

BlockProxy

Somebody on a proxy.

BlockTor

Somebody coming out of the Tor network.

BlockHosting

Somebody connecting from a data centre rather than a home line. This one catches bots and people scouting for a DDoS, and it also catches a real player behind a work tunnel. The most useful of the four and the one most likely to annoy somebody honest.

MaxThreat

Refuse anybody the service scores at or above this, 1 to 100. 0 is off. Start at 90 if you want to try it, and watch your alert channel first.

WarnOnly

TRUE means I only tell you, I never refuse anybody. Leave this true for a week before you set it false. You will be surprised who gets caught.

Geo

Looking an address up so you can see where a player is and whether the connection is hiding something. Your key goes in geo.json, not here.

Enabled

Off by default. Everything else in the plugin works without it. Bans on an account, an address or a range all work with this off. What you lose is country and company bans, the VPN flags, and the country report.

Security

Ask for the VPN, proxy, Tor and threat flags as well as the location. On ipgeolocation this makes each new address cost 3 credits instead of 1, so a free 1000 a day key covers about 333 new players instead of 1000. I print that sum in the log at startup using your own settings.

StrictGate

What to do about a player whose address I have never looked up, when you have a country or company ban in place. false, the default: let them in, look it up, and remove them a second later if the answer says they are banned. First join gets through, every later one is refused at the door. true: refuse them and ask them to try again in a moment, so nobody ever gets in. Correct, and it turns a slow service into a server nobody can join. Only use this if you know what it costs.

TtlDays

How long I trust an answer before asking again, in days.

MaxPerDay

A hard ceiling on lookups a day, counted by me. Stops a join flood or a bot sweep burning a month of credits in an hour. 0 means no ceiling.

MinSecondsBetween

Seconds between lookups. One at a time, always. A restart with 60 players trickles instead of firing 60 web requests at once.

QueueMax

How many addresses I will hold waiting to be looked up.

Mute

Keeping somebody out of chat.

Enabled

If you already run WarnSystem, leave this alone. I check for it at startup and step aside, because two plugins muting people means your staff never know which one did it.

DefaultKind

What a mute does when nobody says otherwise. "chat" their chat lines are dropped, their commands still work "all" chat and commands both dropped "quiet" they see their own lines and nobody else does A word about "quiet". It is a real moderation tool: a loud player who knows they are muted makes a new account inside five minutes, one who does not know keeps talking to an empty room and gets bored. It is also the kind of thing to use on purpose, not by accident, so it is not the default and this comment says plainly what it does.

EscalateWindowDays

Repeat offences inside this many days climb the ladder below. Set it to 0 and every mute starts at the first rung again.

Ladder

How long a mute lasts, in minutes, the first time, the second time, and so on. The last one repeats forever. Used when you mute somebody without naming a length yourself. 10080 is a week.

Privacy

An IP address counts as personal data in the EU and the UK, and it is you who holds it, not me. So these settings default to careful and everything here actually happens. The retention lines below are real deletes.

StoreFullIp

TRUE keeps the whole address so your staff can read it. FALSE keeps a salted hash plus the /24 and the company, and nothing else. Everything still works in that mode: an exact address ban compares a hash against a hash just fine, a range ban only needs the /24, and the reports still read. The only thing you lose is being able to read an address on screen. If that trade suits you, this is a genuinely usable mode and not a token one. The salt is made once and kept in geo.json.

KeepLoginDays

Login rows older than this many days are deleted. Really deleted, once a day, not hidden behind a flag. 0 means keep them forever, which is a choice you are making on purpose.

KeepGeoDays

Same, for the address lookups I have cached.

HashAfterDays

Above 0, an address is swapped for its hash after this many days while the login row itself stays. A middle road between the two modes above.

RedactInDiscord

A public Discord post shows 203.0.113.*** instead of the whole address. The whole value only ever goes to AlertWebhookURL.

RedactInPanel

Same for the in game window.

SeeIpNode

The one permission node that lets somebody read a whole address anywhere. Give it to the people you would trust with your own.

SafeList

Nothing on this list can ever be refused by any ban of any kind. Put yourself on it before you ban a single range. I say so in the log at startup while it is empty, and if you do lock yourself out anyway, run Checkpoint.Open from RCON.

Eos

Exact EOS ids. Yours goes here.

Ips

Exact addresses. Your home line and your office, if you like.

Cidrs

Whole ranges, written like 203.0.113.0/24.

Nodes

Anybody holding one of these permission nodes is safe. The tidiest option, because it follows your staff group and you never touch this file again when somebody joins or leaves the team.

Watch

Noticing things and telling you, rather than acting on them.

LinkWindowDays

Two accounts have to share a connection inside this many days for me to call them linked.

LinksShown

How many linked accounts to show in one report.

CountriesShown

How many countries Checkpoint.Where lists.

AlertOnEvader

Tell your alert channel when a fresh account joins from a connection that carries a ban. I only tell you. I never act on it unless you turned Gate.AutoBanEvaders on.

AlertOnOddTravel

Tell your alert channel when one account joins from two places too far apart to be one person travelling. Usually a VPN being switched, and sometimes two people sharing a login.

ImpossibleTravelKmH

How fast is too fast, in kilometres an hour. 900 is roughly a passenger jet, so anything above it is not somebody who got on a plane.

ImpossibleTravelMinKm

Ignore hops shorter than this many kilometres. Stops a normal city to city move from looking odd just because the clock was tight.

LinkCaveat

Printed at the bottom of every link report, every time. Say it in your own words if you like, but please keep saying something, because a household and an alt account leave exactly the same trail.

Gates

When travel is shut. These are the settings that separate a travel plugin people keep from one they uninstall after their first bad raid.

CombatSeconds

Nobody travels for this many seconds after either player was in a fight.

RaidSeconds

Nobody travels into or out of a tribe that is being raided, or that is doing the raiding, for this many seconds after the last hit on a base. This is the important one. Without it, twelve defenders warp in one after another the moment a raid starts, because a travel request is faster than a bird. 300 is five minutes and is a sensible place to start. Set it to 0 only if your server has no raiding at all.

RelaxOnPve

On a PvE server the two gates above are pointless, so I switch them off and say so at startup. I read whether you are PvE from the game itself.

Targeting

How I turn what somebody typed into one exact player. Every command that takes a player name uses this, in chat and on RCON both. It already handles: the survivor name, the account name, a bare EOS id, char: name: tribe: id: and eos: prefixes, a quoted name, #2 to pick off the list I just showed, accents, Cyrillic and Greek letters that look Latin, fullwidth and circled letters, xX_tags_Xx, and leet like 5n4k3.

MatchCharacterName

Match the survivor name, the one over their head. Players type this one.

MatchPlatformName

Match the account name from Steam, Xbox or PlayStation.

MatchTribeName

Match a tribe name, then let you pick a member. Scored below a person, so a player called Wolves always beats a tribe called Wolves.

MatchOldNames

Match a name they used to wear. Stops a rename shaking off a ban.

AllowOffline

Let staff commands find somebody who is not online. On, because banning an offline player is the normal case. Travel always needs them online.

OfflineDays

How far back to look for an offline player, in days.

FuzzyTypos

Allow for typing mistakes. Turn it off and only real names match.

MaxTypos

Most mistakes allowed in a longer name. Short names get fewer on their own, so Dob can find Bob without Dob finding Cat.

MinTypoLength

Do not allow mistakes in anything shorter than this many letters.

ShowChoices

How many to show when more than one player matches. When two are equally good I never guess, I show the list and you answer with a number.

PickSeconds

How long that numbered list stays good for, in seconds.

RecentMinutes

How long "last" reaches back for whoever last asked you to travel, in minutes.

Permissions

Who is allowed to do what. Needs the free Permissions plugin. Without it, staff chat commands say no to everybody and the console and RCON still work, which is where the real power is anyway.

Enabled

TravelNode

Players need this to use travel at all. With Permissions missing this one fails OPEN, so travel keeps working on a server that does not run it.

WhoNode

Staff nodes. These all fail CLOSED, so a missing Permissions means no.

BanNode

MuteNode

KickNode

AltsNode

FasterFor

A shorter travel cooldown for people holding a node. Add as many lines as you like. The shortest one they qualify for wins.

Checkpoint.Vip

ArkShop

The points shop, only used if you set Travel.PointCost above 0.

Enabled

Provider

"Auto" takes ArkShop if it is running, then WShop. Name one on purpose if you run both, which almost nobody does.

Database

Where my records live. This one is worth reading properly, because it is the difference between a ban that covers one map and a ban that covers all of them.

UseMySQL

FALSE uses SQLite, a single file in my data folder, with nothing to set up. Perfect for one server. TRUE uses MySQL, and then every map pointed at the same database shares one ban list, one set of records and one view of who is linked to whom. On a cluster that is the whole point. Set Gate.ClusterWide to true as well, or a ban still only covers the map it was placed on.

SQLiteDatabasePath

Where to put the SQLite file. Leave it empty and I use my own data folder, which is what you want. It is the folder to copy if you ever want a backup of every ban you have placed.

TablePrefix

The front of all seven of my table names. Change it if something else is already using these names in your database.

Host

MySQL only, all ignored on SQLite.

Port

User

Password

Database

MysqlSSLMode

Leave these two alone unless your host told you otherwise. -1 and empty mean use whatever the server and the client agree on.

MysqlTLSVersion

ApiUtilsMod

On screen messages through the free ASA API Utils mod. The mod is a nice to have and never required. Without it I talk in chat instead and say so once in the log.

Enabled

BackdropColor

The box behind the words: red, green, blue, and how solid, each 0.0 to 1.0. The last number is the one to change. 0.55 is a soft dark box.

ScreenPosition

Where on screen: "Left", "Center" or "Right".

TextAlign

How the words sit in the box: "Left", "Center" or "Right".

TextScale

Bigger than 1.0 is bigger text.

MessageSeconds

How long a message stays up, in seconds.

AlsoShowInChat

Also put the same words in the chat log, so a player can scroll back to a warmup countdown or a mute notice they missed. This does mean two messages per send, which is fine.

MapName

The game gives me level names like TheIsland_WP, which no player should ever read.

Pretty

Tidy it up into The Island. Turn it off to see the raw name.

Overrides

Or write your own, for a map I get wrong or a modded one. Example: { "Svartalfheim_WP": "Svartalfheim" }

Panel

The in game window from the NordBots UI mod. Players get a Travel pane with buttons for who is waiting on them, and staff with the right nodes get an arrivals pane and a bans pane. A button press runs the exact same command the chat version runs, with the same permission check, so the window is never a way around anything.

Enabled

Off means I never open a window. Every chat command still works.

RowsPerPage

Rows in one pane before it pages.

TopCount

How many rows a top list shows.

BuffTag

Leave these three alone unless the mod tells you to change them.

BuffPath

SingletonPath

RequireHandshake

Wait for the mod to say hello before I send it anything. Off is fine and is what almost everybody wants.

Gate

The ban side of me.

Enabled

Turn this off and I stop turning anybody away. I still keep records, so you can look at who is joining without enforcing anything yet. A good way to start: run with this off for a week and read Checkpoint.Where.

RefreshSeconds

How often I read the ban list back out of the database, in seconds. This is what makes a ban placed on one map bite on another. Only matters on MySQL. On SQLite there is nothing to read from another server.

ClusterWide

Should a new ban count on every map that shares this database, or only this one? Off means this map only, and you can still say --cluster on a single ban when you mean it. Turn it on if you run a cluster and want one ban to cover everything.

ShowReasonToPlayer

Show the refused player the reason and the end date. On by default, because "the server just says failed to connect" is the number one question a banned player asks, and this answers it for you.

ReasonRequired

Refuse to place a ban with no reason written on it. On by default. In six months somebody will read that ban and want to know why it is there.

RefusedLine

The first line a refused player reads.

RefusedBlockLine

The line for somebody caught by a range or a company ban rather than by name. Worth keeping separate: it is often an innocent neighbour.

ScreenedLine

The line for somebody turned away by the Screen block below.

AppealLine

Added to the end of every refusal. Put your Discord invite or your site here so an honest player who was caught by mistake knows where to go.

AutoBanEvaders

When a brand new account joins from a connection that already carries a ban, should I ban it on the spot? OFF by default and I mean it. A shared house, a flat share and a mobile carrier all look the same as an evader. With this off I post the evidence to your alert channel and you decide.

PostArrivals

Post a line to your join channel every time somebody arrives, with their country and connection. Off by default because on a busy server that is a lot of posts. Turn it on for a week when you are chasing somebody.

ConfirmWiderThan

A range ban narrower than this many bits needs a confirm code before it takes. 24 means a /24 goes straight through and a /23 or wider asks first, and tells you how many of your own past logins it would have refused. Lower this if you want to be asked less. Do not raise it above 32, that would make every single address ban ask.

ConfirmSeconds

How long a confirm code stays good for, in seconds.

BansPerPage

How many bans Checkpoint.Bans shows on one page.

LoginsShown

How many past logins Checkpoint.Logins shows for one player.

OpenMinutes

How long Checkpoint.Open switches every ban check off for, in minutes, when you do not name a number. This is your way back in if you ever ban yourself, because RCON does not go through the ban check.

Travel

Player to player travel.

Enabled

Turn this off and I am a moderation plugin only, with no travel commands registered at all. If you already run TeleportRequest, I notice it at startup and step aside on my own, because we both want /tpa.

AllowSummon

Allow /tph, asking somebody to come to you. They still have to say yes. Turn it off and travel only ever goes one way, towards the other person.

RequestTimeoutSeconds

How long an ask sits there before I give up on it, in seconds.

CooldownSeconds

How long a player waits between travels, in seconds.

PairCooldownSeconds

How long the SAME TWO players wait before travelling to each other again, in seconds. This is the one that stops two friends using each other as a free taxi across the map all day. 0 turns it off.

MaxPerDay

Most travels one player gets in a day. 0 means no limit.

MaxDistance

Refuse a travel longer than this, in game units. -1 means any distance. Roughly 100000 is a fair chunk of a map if you want to try a number.

WarmupSeconds

Hold the mover still for this many seconds before they go. If anything hits either of them, or they walk off, I stop and hand their points back. 0 makes travel instant, which players like and raiders like more.

WarmupMoveTolerance

How far the mover may drift during the warmup before I call it off.

CheckForDino

Refuse a travel when either player is on a dino. On by default, because a dino left behind mid warp is a support ticket.

BlockWhileFalling

Stop the warmup if the mover is dropping. Catches somebody using travel to cancel a fall.

FallingDrop

How far they have to drop in one second for me to call it falling.

PointCost

Points each travel costs the asker, charged when the other player says yes and handed straight back if the travel then fails for any reason. 0 makes travel free. Needs ArkShop or WShop, and if neither is installed travel is free and I say so once in the log rather than breaking.

AbuseStrikes

Refusals in a row that earn a player a time out. A player who tries nine times to warp into a raid is telling you something, and this is where I stop being polite and post to your alert channel.

AbuseWindowMinutes

The window those refusals have to land in, in minutes.

AbusePenaltySeconds

How long the time out lasts, in seconds.