Jump to content

[MOD] Coppis Additions (NEW)


Prisma501

Recommended Posts

I have a feature request: Groups. You have players playing together, they can group up. The ability to set a group name with a color to define the group. Also a default group for PvP and one for PvE set by the admin, for mixed servers. If it can edit the players in game name when running around that would be nice too.

Link to comment
Share on other sites

I have a feature request: Groups. You have players playing together, they can group up. The ability to set a group name with a color to define the group. Also a default group for PvP and one for PvE set by the admin, for mixed servers. If it can edit the players in game name when running around that would be nice too.

 

Wow that was fast :D.

 

Will defo look into that. Just one implication i can think off right away. If there is colouring for players individually, group membership and/or PVE/PVP which one should be priority over the other(s).

 

For example if a player has a yellow chatname and is also a groupmember in the new functionality with blue color for example, should the group color have priority over the players color? So should player have yellow or blue?

 

Cheers

Link to comment
Share on other sites

Wow that was fast :D.

 

Will defo look into that. Just one implication i can think off right away. If there is colouring for players individually, group membership and/or PVE/PVP which one should be priority over the other(s).

 

For example if a player has a yellow chatname and is also a groupmember in the new functionality with blue color for example, should the group color have priority over the players color? So should player have yellow or blue?

 

Cheers

 

IMO I would default PvP as Red and PvE as Blue, with an option for an admin to change if they'd like. I would also use hex code for the color selection. Once that selection has been used, then it shouldn't be available to use again. If possible a message saying that color is already in use, please select another, via a chat pm.

 

I would prioritize owner/admin/mod/group/individual On my servers, chat color has to be set by an admin. So a regular player is just default white.

 

If you want real time communication, I'm on guppy's discord or you can join my new owner/admin discord https://discord.gg/r3GvN78

Link to comment
Share on other sites

Update!

 

Changelog:

 

Version 3.7 (2018.02.08)

Improved:

- Improved noclip detection (pug command)

- Improved fly detection (pgd command)

 

Fixed:

- fixed pblock null reference exception on listall blocks (searchstring *)

- fixed player position calculation. Affects:

• checkloot (CheckLooter)

• killallzombies

• lec (ListEntityCustom)

• owner (MakeOwner)

• pgd (PlayerGroundDistance)

• pug (PlayerUnderground)

• pcheck (PrefabCheckBlock)

• pdup (PrefabDuplicator)

• pexport (PrefabExport)

• pblock (PrefabFillBlock)

• prender (PrefabRender)

• prepblock (PrefabReplaceBlock)

• safe (ProtectionChange)

• additemloot (PutOnLooter)

• remitem (RemoveFromLooter)

• spawnminibike

• sme (SpawnMultipleEntity)

- listplayerbed fixed incomplete listing of all player's beds if one of the players has no bed

- removed obsolete physics command

 

Cheers

Link to comment
Share on other sites

Update!

 

Version 3.8 (2018.02.09)

- added ChatGroupColor (cgc): assign players to groups and have them using the same chatname color.

The groups PVE (blue) and PVP (red) will be present by default but can be deleted or changed if needed. Add any group you like, admins, moderators, donors. Any group you can think of.

- added OverrideChatName (ocn): Give a player any chatname you want on your server

 

ATTENTION: the persistent data structure has changed significantly. Delete the old /Saves/Random Gen/seedname/CoppisPeristentData.bin before starting your server after updating this modversion.

 

ocn Usage:

ocn <steam id/player name/entity id> <newName>

ocn <steam id/player name/entity id> clear

ocn list

 

cgc Usage:

cgc listgroups

cgc addgroup <groupName> <groupColor>

cgc deletegroup <groupName>

cgc listmembers <groupName>

cgc adduser <steam id/player name/entity id> <groupName>

cgc cleargroup <steam id/player name/entity id>

The <groupColor> must be 6 hex characters. Example: FF00FF

 

Cheers

Link to comment
Share on other sites

Update! Introducing admin waypoints!

 

Version 3.9 (2018.02.12)

Added:

- Admin waypoints: allows admins to create and manage waypoints for the new admin chatcommands

- Admin chatcommands:

• flyto (/ft): tp yourself to player or coords

• flyto waypoint (/ftw): tp yourself to predefined waypoint

• move (/mv): move player to player or player to coords

• move waypoint (/mvw): move player to waypoint

• add waypoint (/setwp): create a new waypoint

• delete waypoint (/delwp): delete a waypoint

• list waypoints (/listwp): list all predefined waypoints

 

Improved:

- Detection of secure lootcontainer for commands checkloot, remitem and additemloot

 

 

From the github wiki:

 

Partial Names

 

When using a command that requires a player's name, the mod will understand if you use only a portion of the name and you can search case-insensitive. Imagine the name of the player is Prisma501, there are various ways to target a command.

 

/ft pris

 

/mv 501 4876E 987N

 

Care must be taken when choosing what letters to use, if zigstum and stumpfgobs are both online, and you try to /ft stum, the mod wil be confused, and you don't want that. :) Don't try to use a name with a space in it; just use the letters from one of the words in the name when targetting a command with a partial name.

 

Ambiguous names

 

When you need to use a players name that is ambiguous with another player online you can use double quotes around the name to be able to. When Jo and Joanna are both online and you need to target Jo, just use: /mv "Jo" prisma

 

Chatcommands

 

Waypoints

 

/listwp - List available Waypoints.

 

/setwp wpname - Set a new waypoint.

 

/delwp wpname - Delete a set waypoint.

 

Move

/mv playerfrom playerto - Teleport one player to another.

 

/mv playername xxxxE/W xxxxN/S - Teleport a player to a specific position.

 

/mvw playername wpname - Teleport a player to a defined waypoint.

 

Flyto

 

/ft playername - Teleport yourself to a player.

 

/ft xxxxE/W xxxxN/S - Teleport yourself to a specific Location.

 

/ftw wpname - Teleport yourself to a defined waypoint.

 

 

They make my admin life a lot easier. I hope they do the same for you :)

 

Cheers

Link to comment
Share on other sites

Update!

 

Version 3.91 (2018.02.13)

Fixed:

- pcheck reporting wrong y-coord when checking a block

 

Improved:

- fly detection: no more false positive if player is standing on absolute edge of rampBlock or halfBlock

 

Fly detection is as strict as can be now and chance of false positives is allmost null :)

 

Cheers

Link to comment
Share on other sites

Great News!

I also have a feature request.

I need comprehensive information about the players as the bad company manager has it.

Like this:

https://gist.github.com/StompyNZ/2ba0e4c592cb5d4fc655da91d1adaf0d

 

For the inventory viewing there is allready alloc's si and coppis si2. I will look into what data the live EntityPlayer object has to offer for querying and reporting and make an extended lp command for it. I really wanna keep the persistentdata to a minimum. BadCo has an excellent function allready for that. BadCo and CoppisAdditions are fully compatible and can run perfectly together :)

 

Keep a lookout on this thread for the extended lp command.

 

Cheers

Link to comment
Share on other sites

This is gonna be yummie :)

 

Manage locationtracker settings and data
Usage:
1. loctrack search <steam id/player name/entity id> <distance> <timespan>
2. loctrack search <x> <y> <z> <distance> <timespan>
3. loctrack playertrack <steam id/player name/entity id> <maxrecords> <timespan> <timeBetweenRecords>
4. loctrack enabled <true/false>
5. loctrack command <newChatCommand>
6. loctrack commandenabled <true/false>
7. loctrack interval <seconds>
8. loctrack maxagedata <hours>
9. loctrack neardistance <meters>
10. loctrack

1. report players that where within <distance> of <steam id/player name/entity id> last <timespan>
2. report players that where within <distance> of <x> <y> <z> last <timespan>
3. show location tracks of <steam id/player name/entity id> with maximun reported records <maxrecords> and filter records to be <timeBetweenRecords> apart last <timespan>
4. Enable/Disable location recording
5. Define the ingame chatcommand for querying databases (who was within x meters last y hours on my position)
6. Enable/Disable ingame chatcommand for querying databases
7. Set the interval of recording locations
8. Set the maximum time the data stays in databases
9. Set the distance for use with chatcommand for reporting near live players
10. Show all active location tracking settings

 

Just a little peek of what's cooking :)

 

Cheers

Link to comment
Share on other sites

Update 4.0!

 

Update time!

 

Version 4.0 (2018.02.17)

Fixed:

- pcheck not reporting blockname (only id) when checking a block

 

Added:

- /hostiles chatcommand: report enemy activity in your vicinity

- AntiCheat: location tracking system with console,- and chatcommand for querying. Completely embedded system so gamehost friendly!

 

New chatcommands (for players and admins):

 

Using locationtracking chatcommand

 

Depending on what you set the command to (with loctrack consolecommand) the following chatcommand can be different. The chatcommand can be disabled with consolecommand loctrack (loctrack commandenabled false)

 

/loctrack - report players that were within 50 meters of your position in the last 24 hours.

 

/loctrack <radius> <hours> - report players that were within <radius> meters of your position last <hours> hours.

 

/loctrack near - report live players that are within the radius defined with loctrack consolecommand (neardistance)

 

Hostile reporting

 

/hostiles - reports the presence of hostiles in your vicinity. Explicit mention for presence of feralradiated zombies, feral zombies, fat zombie cops, dogs, zombiebears, wolfs, dire wolfs, snakes, vultures and bears

 

New console command loctrack (great AntiCheat feature!):

Check here what it can be used for.

 

Manage locationtracker settings and data

Usage:
 1. loctrack search <steam id/player name/entity id> <radius> <numberOfHours>
 2. loctrack search <x> <y> <z> <radius> <numberOfHours>
 3. loctrack showtrack <steam id> <maxrecords> <timespan> <timeBetweenRecords>
 4. loctrack enabled <true/false>
 5. loctrack command <newChatCommand>
 6. loctrack commandenabled <true/false>
 7. loctrack interval <seconds>
 8. loctrack maxagedata <hours>
 9. loctrack neardistance <meters>
10. loctrack
1. list players within <radius> of <steam id/player name/entity id> last <numberOfHours>
2. list players within <radius> of <x> <y> <z> last <numberOfHours> (use y=-1 to ommit y search)
3. show location tracks of <steam id>. Maximum records <maxrecords>.
  Minimum time between records <timeBetweenRecords> (seconds). Within <timespan> (MMddHHmm-MMddHHmm).
4. Enable / Disable location recording
5. Define the ingame chatcommand (include the prefix)
6. Enable/Disable ingame chatcommand for querying databases
7. Set the interval of recording locations (seconds)
8. Set the maximum time the data stays in databases (hours)(0=forever)
9. Set the distance for use with chatcommand for reporting near live players
10. Show all active location tracking settings

 

Default settings location tracking (Change via loctrack command):

 

Enabled: True

Command: /loctrack

CommandEnabled: True

LocationInterval: 15 seconds

MaxAgeData: 72 hours

NearDistance: 200 meters

 

The location tracking system uses serverless indexed databases. Runs queries lightning fast and is gamehost friendly.

 

Enjoy!

 

Cheers

Link to comment
Share on other sites

After some questions on how to utilize the location track data from a server owner, i thought the nerdy command description is indeed not very functionally descriptive :)

 

So what appliances are we looking at with the loctrack command:

subcommand search

  • what players were on the north side of the map within a specific time
  • what players were in the NorthWest section of the map within a specific time
  • what players were within a specific city within a specific time
  • what players were in a specific base within a specific time
  • what players were on a specific farm within a specific time
  • what players were near a specific chest within a specific time
  • etc
    Great for exposing cheaters/hackers/griefers!

 

subcommand showtrack:

  • can be used to look at the exact track of where a player did go in a specific timespan in console
  • can be used by servermanagers to plot polygons on a (web)map (allocs for example) to visualize the tracks of a player

 

If you enable the chatcommand (default /who) players themselves can investigate who raided their base/farm/chests. That takes the initial work away from owners/admins. You as owner/admin can then always verify the claim of a player by the loctrack command by using search or showtrack subcommand (or if you are ingame use the chatcommand too to verify).

 

In a nutshell :D

 

Cheers

Link to comment
Share on other sites

heh I can see a lot of bot commands are appearing in mods (not just this one). I'm gonna have to come up with MOAR commands to stay ahead xD The bot is able to switch from using / to any symbol (except \ currently).

 

Just curious, are any of your new commands inspired by the bot's commands? Its a very public bot and I totally don't mind being copied. Its to be expected really.

 

I'll have to start testing the new stuffs :D How stable is it?

Link to comment
Share on other sites

heh I can see a lot of bot commands are appearing in mods (not just this one). I'm gonna have to come up with MOAR commands to stay ahead xD The bot is able to switch from using / to any symbol (except \ currently).

 

Just curious, are any of your new commands inspired by the bot's commands? Its a very public bot and I totally don't mind being copied. Its to be expected really.

 

I'll have to start testing the new stuffs :D How stable is it?

 

Only the "/who near" is inspired by the one i saw in botman. As far as i know your /who does not query historical location data. The rest has been in my private mod for over 1,5 years actually. Just porting over to coppis. But ive made sure they can be disabled or switched to another prefix and command to maintain maximum compatibillity.

 

What other commands other than /who near are you using that i implemented? I did check your website to make sure i wasnt using any of the ones you use except who (cause thats actually the most logical name for loctrack querying. Like "who" was within 5 blocks of my current location last 3 hours). Ive seen that the first time when i had to use CBSM for a few weeks in between a server migration. But please let me know if it bothers you, i can easily make the default command something like /loctrack (just like the consolecommand). I wouldnt have one bit of a problem with that. Admins can however change it back to /who if they like that more, nothing i can do about that ;).

 

As far as chatcommands go, this will be it. Only 4.1 will bring 4 new ones (which i made sure are not in use by the most popular servermanagers). They will accompanying Advanced Claims which im porting over now. /acf (add claim friend) , /rcf (remove claim friend) and /lcf (list claim friends). And one (/protect) for giving yourself or a player a "protective bubble" to do admin work without being bothered by zombies or protect a poor new player that spawned in on a bloodmoon. They also do exist for over 1,5 years allready but lemme know if they are gonna cause conflicts, i still have time to come up with other abbrivations :)

 

I have no intention of making coppis a servermanager whatsoever. The chatcommands i implemented now are pretty much the ones that will be in there. Rest will be consolecommands for servermanagers (or admins) to use (like the new cgc, ocn, loctrack). /hostiles was-is the most popular command on my server of all time :D And the /ft /ftw /mv /mvw /setwp /delwp and /listwp admin only commands made my and my admins life so much easier for so long i just had to port that over. They do not conflict with any of your commands and even offer more funtionality. So i strongly hope by "copying" you dont mean you think you have the exclusive right to some very basic functionality as teleporting or nouns and verbs like set,fly, move and waypoint or saving coordinates to a database and use them one way or another (actually im pretty proud to say Coppis is the first and only apimod that has an embedded indexed database engine for that. Can even put it on a gamehost server). Just let me know about the who command as thats the only conflicting command. Im willing to change that despite the fact that botman wasnt the one that invented the term.

 

Its very stable. Do try it!

 

Cheers mate

 

-edit- ah i missed /protect appearantly. You seem to use that for baseprotection. Will use another command for the protective bubble :). /bubble sounds kinda nice too.

Link to comment
Share on other sites

if (message.StartsWith("/bubble"))
{
   _cInfo.SendPackage(new NetPackageGameMessage(EnumGameMessages.Chat, "Received Command: /bubble", "Server", false, "", false));
   string parameter = message.Split(new string[] { "/bubble" }, StringSplitOptions.None)[1].Trim();
   bool success = Protect.Exec(_cInfo, parameter);
   if (!success) _cInfo.SendPackage(new NetPackageGameMessage(EnumGameMessages.Chat, "
   [FFA07A]Something went wrong! Could not activate protective bubble![-]", "Server", false, "", false));
   return false;
}

 

Done. That wont conflict anymore. Wont change my internal class though. That wont be in your way :D

 

Cheers

Link to comment
Share on other sites

Just a suggestion for the command aliases, could you look at implementing something like I did that lets you edit the alias in a config file so if there are conflicts people can change them.

 

The command namespace is rapidly filling up :)

 

Also maybe add a prefix for the default alias (add other aliases without a prefix for the short text). This will make it easier for people to tell which mod a command belongs to. (the help command will show the first alias in the list for each command)

 

e.g.

bc-

dj-

 

maybe cp- for this mod? I'll ask OC if he can use st- for server tools maybe

 

feel free to use bits of my code in my config reader script

Link to comment
Share on other sites

Just a suggestion for the command aliases, could you look at implementing something like I did that lets you edit the alias in a config file so if there are conflicts people can change them.

 

The command namespace is rapidly filling up :)

 

Also maybe add a prefix for the default alias (add other aliases without a prefix for the short text). This will make it easier for people to tell which mod a command belongs to. (the help command will show the first alias in the list for each command)

 

e.g.

bc-

dj-

 

maybe cp- for this mod? I'll ask OC if he can use st- for server tools maybe

 

feel free to use bits of my code in my config reader script

 

allready did that for the one chatcommand i knew would conflict:

 if (message.StartsWith(PersistentData.PersistentContainer.Instance.LocationTracking.Command.Trim().ToLower()))
                       {
                           string command = PersistentData.PersistentContainer.Instance.LocationTracking.Command.Trim().ToLower();
                           if (PersistentData.PersistentContainer.Instance.LocationTracking.CommandEnabled)
                           {
                               _cInfo.SendPackage(new NetPackageGameMessage(EnumGameMessages.Chat, "Received Command: " + command, "Server", false, "", false));
                               string parameter = message.Split(new string[] { command }, StringSplitOptions.None)[1].Trim();
                               bool success = Who.Exec(_cInfo, parameter);
                               if (!success) _cInfo.SendPackage(new NetPackageGameMessage(EnumGameMessages.Chat, "[FFA07A]Something went wrong! I was not able to check who was here.[-]", "Server", false, "", false));
                               return false;
                           }
                           else
                           {
                               _cInfo.SendPackage(new NetPackageGameMessage(EnumGameMessages.Chat, string.Format("[FFA07A]Locationtrack command {0} is not enabled[-]", command), "Server", false, "", false));
                               return false;
                           }
                       }

 

Will look into prefixing consolecommands. As they are indeed bound to conflict sometime.

 

But for chatcommands i think its okey to keep their uniqueness. i like m short like /acf /rcf etc.. prefixing them i would not like. ;)

 

Cheers

Link to comment
Share on other sites

allready did that for the one chatcommand i knew would conflict:

 if (message.StartsWith(PersistentData.PersistentContainer.Instance.LocationTracking.Command.Trim().ToLower()))
                       {
                           string command = PersistentData.PersistentContainer.Instance.LocationTracking.Command.Trim().ToLower();
                           if (PersistentData.PersistentContainer.Instance.LocationTracking.CommandEnabled)
                           {
                               _cInfo.SendPackage(new NetPackageGameMessage(EnumGameMessages.Chat, "Received Command: " + command, "Server", false, "", false));
                               string parameter = message.Split(new string[] { command }, StringSplitOptions.None)[1].Trim();
                               bool success = Who.Exec(_cInfo, parameter);
                               if (!success) _cInfo.SendPackage(new NetPackageGameMessage(EnumGameMessages.Chat, "[FFA07A]Something went wrong! I was not able to check who was here.[-]", "Server", false, "", false));
                               return false;
                           }
                           else
                           {
                               _cInfo.SendPackage(new NetPackageGameMessage(EnumGameMessages.Chat, string.Format("[FFA07A]Locationtrack command {0} is not enabled[-]", command), "Server", false, "", false));
                               return false;
                           }
                       }

 

Will look into prefixing consolecommands. As they are indeed bound to conflict sometime.

 

But for chatcommands i think its okey to keep their uniqueness. i like m short like /acf /rcf etc.. prefixing them i would not like. ;)

 

Cheers

 

yeah np with chat commands, I dont have any of those anyway so thats between you and servertools ;)

Link to comment
Share on other sites

yeah np with chat commands, I dont have any of those anyway so thats between you and servertools ;)

 

Mostly smeg lol :D. But thats just a matter of playing a gentlemans game. Like i saw botman uses /protect allready for some other funtionality. So being a gentleman i changed my old /protect to /bubble and poof the conflict is gone :D No need to deliberately get in eachothers way.

 

Cheers and thanks for the script!

Link to comment
Share on other sites

Archived

This topic is now archived and is closed to further replies.

×
×
  • Create New...