Jump to content

SurvivalBot V0.85 ALPHA


Recommended Posts

I appreciate all of the offers to test and such. Presently, it's not realistic to push out everything I'm working with to multiple different environments. Presently, I have a lot of different parts to keep everything running smoothly. Code-wise, this would be 5 separate repos: One in C++, two in PHP, and two in bash (not including automated reboot functionality, automated update functionality, etc). Also, it is absolutely required to run on a dedicated server. I've made crazy progress on it, however. Here's a list of features so far:

  • Custom starter kits that hit the second a player finishes creating their character. Also has a custom welcome message. The custom start kits can be literally anything you can do in the game, formatted as such: cheat giveitemnumtoplayer @ID@ 36 1 0 0, cheat giveitemnumtoplayer @ID@ 35 1 0 0, etc. where "@ID@" gets replaced with their player number automatically.
  • Custom currency system with custom gain rates. Mine is set at 1 SP (Survival Point) per 5 minutes of being in-game. Can be set to whatever or temporarily double for Double SP Weekends (etc.) Double SP Weekends is a simple config change allowing you to set to "true", which will enable the double gain but also enable a notification (upon joining) so everyone knows.
  • Custom in-game shop where SP can be spent. Add any item(s) you wish to the store (including mod items), including groups of items for packages. Set the pricing to whatever you like, including free. Players purchase with !buy <quantity> <item>. Players with memberships may receive custom discounts. My max discount for a Platinum Membership, for example, is 30% off. This is all handled automatically.
  • Price Checking for players: !cost <quantity> <item>   If no quantity is specified it'll price an entire stack. Discounts are taken into consideration here as well.
  • SP Trading among players: !give <quantity> <steam name>
  • Admin helper commands (ALL admin only) like push: !push <quantity> <item> <steam name>   For example, !push 20000 stone Cool Ark dude   Handles stacking and such to deliver 20k stone to "Cool Ark dude". !giveexp <amount> <steam name>, !kill <steam name>, !kick <steam name>, !ban <steam name>, !broadcast <message>, etc. Very useful for allowing only some commands to be executed by certain in-game admins.
  • Message Rotation for spamming whatever messages you want on the server. Can be a Broadcast or Normal. Spams at custom intervals. Losing connection has no impact - if you set it for every hour and lose connection/reboot 10 times within that hour it still spams the proper message in the proper order.
  • Custom Reboot Cycles with messaging. Mine is presently set to 7:00 AM and 7:00 PM EST every day. Alerts 15 minutes in advance, then 10 minutes in advance, then 5 minutes in advance, then 2 minutes in advance, and finally 1 minute in advance. 
  • Custom website shop automated fulfillment. Example here: http://fusiongamers.com/shop   Any items purchased here give a redemption code. Type !redeem <code> to receive all items instantly. Of course there's a chance that the bot is down for some reason, so at the top there's an "ONLINE" / "OFFLINE" status. A person could easily just make the shop unavailable if the bot was offline. All item packs are super simple to setup, just like the custom starter kits. Possibilities are endless here, could add a max level perk incredibly easily by just creating a pack with "cheat giveexptoplayer @ID@ 999999 0 1".
  • Lottery system for SP. !jackpot shows the present jackpot. !lotto <quantity> buys tickets at a default of 1 SP each. 50% of SP put into the lottery is given out as a jackpot.
  • Random custom shipments. A random shipment which can be small on up to massive will "spawn". The first person to type the proper code in chat (example, !3826) gets it. It'll pick from any of the categories of items you want, and pick random quantities of random items within those categories. By default, it's setup to pick items from resources, consumables, ammo, and kibble. Basically it's like a whole new type of beacon without having to be there physically.
  • Custom Join Messages Part 1: upon a certain player joining, SurvivalBot can say any phrase you wish to all the players. Useful for notifying that an admin joins, etc.
  • Custom Join Messages Part 2: upon joining for the first time each day, a player will see a message showing how many threads in the forum they have not read, if there's a Double SP Weekend they'll be notified there, and finally will also be notified if they get a consecutive bonus (listed next).
  • Consecutive Play Bonus: if a player joins the server 2 or more consecutive days, they'll get a custom amount of bonus SP. Default is 2 * consecutive days.
  • New Player Alert: By default the bot says "Fresh Meat." when a new player joins. As such, the default join notification for admins is "Spoiled Meat". 
  • !played shows the amount of time a player has played on the server, in hours.
  • !roll [number]  Rolls from 1 to [number] or 100 if no number is specified. Shows for everyone to see (example: Archimodes: 53). In my testing, surprisingly no one spams this to try and grief the server.
  • !maxlevel shows the max player level, wild dino level, and levels gained post-tame. This is shown to all players due to the fact that many new players join a server and ask "what's the max level here?". Allows anyone to simply type !maxlevel and give a proper response.
  • !kibble <dino> shows what kibble should be used to tame <dino>.
  • !gift <steam name> (admin only) pushes a random item of upgraded quality to a player.
  • !jump <steam name> (admin only) pushes Jump Puzzle loot to a player.
  • !help [command] If no command is specified, shows general help and a list of commands. If command is specified, shows info on the command and how to use it.
  • !list [category] If no category is specified, shows a list of categories. If a category is specified, shows all items for purchase in the automated store from that category.
  • !settings Shows all players the current server settings. My server for example says: "Tame: 10x, XP: 5x, Farm: 5x.", "Tamed Dino Damage and Health per point buffed from 15% to 25%", "Weight on Players and Tames at 50 per point.". Shows to all players due to the fact that many new players will join and ask "what are the settings for this server?". Allows anyone to simply type !settings and give a proper response.
  • !sp shows the player's current amount of SP.

As we all probably know by now, Ark servers are fantastic at being buggy. RCON is no exception. Most admins know that Ark servers will sever RCON connections randomly. This causes other RCON programs to bug out. SurvivalBot accepts this as a simple fact of life. Disconnects do not impact a single feature here. Functionality relying on players joining, for example, will never erroneously activate multiple times because Ark severed the RCON connection. Everything is DB driven, and as such, even if a shipment is generated and then the RCON connection is severed, nothing is impacted. Once the connection is available again, SurvivalBot connects and picks right back up where it left off and gives out the shipment.

There are more features but I've been typing this for a decent chunk of time now, lol.

 

Current Bugs:

  • Players changing their Steam name after creating a character is an absolute mess. This is not due to my own scripting, but due to an awesome bit of strange logic in Ark itself. In the player list, the new Steam name is listed. When chatting, however, the old Steam name is used. This could all be alleviated if Ark pushed a Steam ID with chat, but alas, that'll likely never happen (have personally begged in the forums for devs to fix that and many other things). For now, Steam name changes disallow players from interacting with the bot entirely.
  • Now and then the bot gets out of sync. Not a huge deal, it auto-recovers. However, sometimes items are not given out because of this. It happens about once every week, so it's not a giant priority.
  • It is possible to buy items after a save immediately before a reboot (there's about a 15 second window), which will take SP and give the items. Of course, however, upon rebooting the items are lost because they were never saved. This isn't possible with built-in reboots, but it is possible with external. It is planned to detect broadcasts about reboots and disable the automated store. Of course, I'm extremely limited in what I can do about external scripts causing reboots.

 

Anyway, if anyone wants to see/test it, feel free to join my server. Until things are more organized a legitimate alpha/beta for others to use on their server(s) is off the table.

I'll be posting more progress here as it is made.

Link to comment
Share on other sites

  • Replies 56
  • Created
  • Last Reply
3 hours ago, Archimodes said:

So I'm rolling with an early version of my own admin bot that allows in-game currency, commands in-game, message rotation, trading, purchasing from the server, birthday messages / gifts, tribe task lists, etc.

I'm curious why I haven't seen that elsewhere. I know there are people out there just as capable as I am of doing this. Is the desire simply not there? It helps me quite a bit. I love having a log of all chat right inside my community DB (within milliseconds), that's something I'll never be without again. Not only that, but commands that alert me when someone needs help and I'm not online.

Is anyone even curious about it, or is it something no one has really considered in Ark? It's huge in other games with dedicated servers.

 

Mine is written in PHP, hosted on a free-tier AWS instance, and has an average response time of around 75 milliseconds. It interacts with my (free-tier MySQL) RDS instance that also runs my community, and allows people to gain in-game currency (and such) from partaking in the community discussions, giving rep/thumbs up, replying to threads, etc. Even with quite an excessive amount of DB calls (for what it is) and somewhat unoptimized queries, I don't go over my monthly allowances within the free tier. It seems like pretty decent gains for a small amount of work and no additional cost.

 

Is anyone without coding knowledge curious at all about the process? Does anyone want to see it, see some examples, scripts, etc.?

This seems intresting! Would love to see a preview of it.

Link to comment
Share on other sites

On 13.7.2016 at 6:08 PM, Archimodes said:

Is anyone even curious about it, or is it something no one has really considered in Ark? It's huge in other games with dedicated servers.

I did this for our 7daystodie server, also in PHP and through telnet.
This covers all my time i have spare for stuff like this.
But i would love to have something similar for our ark instance too.

Link to comment
Share on other sites

  • 2 months later...
On 13/07/2016 at 5:08 PM, Archimodes said:

So I'm rolling with an early version of my own admin bot that allows in-game currency, commands in-game, message rotation, trading, purchasing from the server, birthday messages / gifts, tribe task lists, etc. EDIT: I just figured out (actually, a friend messaged me a suggestion) how to make the bot work with commands only available in-game, like "giveitemnumtoplayer" and such! This is a major breakthrough! I'll let you all know how it goes.

I'm curious why I haven't seen that elsewhere. I know there are people out there just as capable as I am of doing this. Is the desire simply not there? It helps me quite a bit. I love having a log of all chat right inside my community DB (within milliseconds), that's something I'll never be without again. Not only that, but commands that alert me when someone needs help and I'm not online.

Is anyone even curious about it, or is it something no one has really considered in Ark? It's huge in other games with dedicated servers.

 

Mine is written in PHP, hosted on a free-tier AWS instance, and has an average response time of around 75 milliseconds. It interacts with my (free-tier MySQL) RDS instance that also runs my community, and allows people to gain in-game currency (and such) from partaking in the community discussions, giving rep/thumbs up, replying to threads, etc. Even with quite an excessive amount of DB calls (for what it is) and somewhat unoptimized queries, I don't go over my monthly allowances within the free tier. It seems like pretty decent gains for a small amount of work and no additional cost.

 

Is anyone without coding knowledge curious at all about the process? Does anyone want to see it, see some examples, scripts, etc.?

 

EDIT:

Apparently there's some sort of ridiculous posting limit per 24 hours. I'll reply tomorrow, I guess

I would LOVE to get some info on this as I am just about to build my own server.....unfortunately I am not too knowledgeable in MySQL and the such :(.

Link to comment
Share on other sites

I think most server admins fall into one of two groups (or both).

  1. Do not have the right skills to build something like this.
  2. Do not have the free time to build something like this (or have other places they want to spend their free time).

(I have the technical skills, but I am definitely in group 2 with limited free time.)

I think there are plenty of admins that would appreciate these sorts of tools, but cannot make their own. because of that, it is great when someone can come along and share something they made with other admins. The more we do this, the more it benefits all of us. Please keep us all updated on your progress, and take advantage of the people offering to help you test things out.

Link to comment
Share on other sites

  • 2 weeks later...

I think this is a great idea.
I used to run private servers for other games and one of the ways to get a good strong player base was to integrate the forums / web community with in game reward system.

However, I agree with Crystal its either a lack of skills or a lack of time.

My skills are limited so the amount of time it would take me to do something like this would be way too long.

I also don't have good working knowledge of how ark handles its data. It appears to me to be saved as hex in flat files. If I could use sql to modify the ark game data it would be one thing but if you have to open them in hex to edit them that's another. It also seems like the files update frequently so I'm not sure how to even go about making sure that manual edits take precedence over in game changes or more importantly merge the changes. EG you were given a free spear... oh but all your exp you gained this hour, that never happened.

TLDR: If you can get it working good for you and I think the community would be very appreciative.

Link to comment
Share on other sites

44 minutes ago, Mentaleak said:

I think this is a great idea.
I used to run private servers for other games and one of the ways to get a good strong player base was to integrate the forums / web community with in game reward system.

However, I agree with Crystal its either a lack of skills or a lack of time.

My skills are limited so the amount of time it would take me to do something like this would be way too long.

I also don't have good working knowledge of how ark handles its data. It appears to me to be saved as hex in flat files. If I could use sql to modify the ark game data it would be one thing but if you have to open them in hex to edit them that's another. It also seems like the files update frequently so I'm not sure how to even go about making sure that manual edits take precedence over in game changes or more importantly merge the changes. EG you were given a free spear... oh but all your exp you gained this hour, that never happened.

TLDR: If you can get it working good for you and I think the community would be very appreciative.

 

 

Have a look at this thread, @Qowyn has made some useful tools, I would do more for my server,m and I want to, but I work full time, and have kids and stuff so at the end of the day I have to decide how to use my time and so often playing wins

 

 

Link to comment
Share on other sites

  • 2 weeks later...

I appreciate all of the offers to test and such. Presently, it's not realistic to push out everything I'm working with to multiple different environments. Presently, I have a lot of different parts to keep everything running smoothly. Code-wise, this would be 5 separate repos: One in C++, two in PHP, and two in bash (not including automated reboot functionality, automated update functionality, etc). Also, it is absolutely required to run on a dedicated server. I've made crazy progress on it, however. Here's a list of features so far:

  • Custom starter kits that hit the second a player finishes creating their character. Also has a custom welcome message. The custom start kits can be literally anything you can do in the game, formatted as such: cheat giveitemnumtoplayer @ID@ 36 1 0 0, cheat giveitemnumtoplayer @ID@ 35 1 0 0, etc. where "@ID@" gets replaced with their player number automatically.
  • Custom currency system with custom gain rates. Mine is set at 1 SP (Survival Point) per 5 minutes of being in-game. Can be set to whatever or temporarily double for Double SP Weekends (etc.) Double SP Weekends is a simple config change allowing you to set to "true", which will enable the double gain but also enable a notification (upon joining) so everyone knows.
  • Custom in-game shop where SP can be spent. Add any item(s) you wish to the store (including mod items), including groups of items for packages. Set the pricing to whatever you like, including free. Players purchase with !buy <quantity> <item>. Players with memberships may receive custom discounts. My max discount for a Platinum Membership, for example, is 30% off. This is all handled automatically.
  • Price Checking for players: !cost <quantity> <item>   If no quantity is specified it'll price an entire stack. Discounts are taken into consideration here as well.
  • SP Trading among players: !give <quantity> <steam name>
  • Admin helper commands (ALL admin only) like push: !push <quantity> <item> <steam name>   For example, !push 20000 stone Cool Ark dude   Handles stacking and such to deliver 20k stone to "Cool Ark dude". !giveexp <amount> <steam name>, !kill <steam name>, !kick <steam name>, !ban <steam name>, !broadcast <message>, etc. Very useful for allowing only some commands to be executed by certain in-game admins.
  • Message Rotation for spamming whatever messages you want on the server. Can be a Broadcast or Normal. Spams at custom intervals. Losing connection has no impact - if you set it for every hour and lose connection/reboot 10 times within that hour it still spams the proper message in the proper order.
  • Custom Reboot Cycles with messaging. Mine is presently set to 7:00 AM and 7:00 PM EST every day. Alerts 15 minutes in advance, then 10 minutes in advance, then 5 minutes in advance, then 2 minutes in advance, and finally 1 minute in advance. 
  • Custom website shop automated fulfillment. Example here: http://fusiongamers.com/shop   Any items purchased here give a redemption code. Type !redeem <code> to receive all items instantly. Of course there's a chance that the bot is down for some reason, so at the top there's an "ONLINE" / "OFFLINE" status. A person could easily just make the shop unavailable if the bot was offline. All item packs are super simple to setup, just like the custom starter kits. Possibilities are endless here, could add a max level perk incredibly easily by just creating a pack with "cheat giveexptoplayer @ID@ 999999 0 1".
  • Lottery system for SP. !jackpot shows the present jackpot. !lotto <quantity> buys tickets at a default of 1 SP each. 50% of SP put into the lottery is given out as a jackpot.
  • Random custom shipments. A random shipment which can be small on up to massive will "spawn". The first person to type the proper code in chat (example, !3826) gets it. It'll pick from any of the categories of items you want, and pick random quantities of random items within those categories. By default, it's setup to pick items from resources, consumables, ammo, and kibble. Basically it's like a whole new type of beacon without having to be there physically.
  • Custom Join Messages Part 1: upon a certain player joining, SurvivalBot can say any phrase you wish to all the players. Useful for notifying that an admin joins, etc.
  • Custom Join Messages Part 2: upon joining for the first time each day, a player will see a message showing how many threads in the forum they have not read, if there's a Double SP Weekend they'll be notified there, and finally will also be notified if they get a consecutive bonus (listed next).
  • Consecutive Play Bonus: if a player joins the server 2 or more consecutive days, they'll get a custom amount of bonus SP. Default is 2 * consecutive days.
  • New Player Alert: By default the bot says "Fresh Meat." when a new player joins. As such, the default join notification for admins is "Spoiled Meat". 
  • !played shows the amount of time a player has played on the server, in hours.
  • !roll [number]  Rolls from 1 to [number] or 100 if no number is specified. Shows for everyone to see (example: Archimodes: 53). In my testing, surprisingly no one spams this to try and grief the server.
  • !maxlevel shows the max player level, wild dino level, and levels gained post-tame. This is shown to all players due to the fact that many new players join a server and ask "what's the max level here?". Allows anyone to simply type !maxlevel and give a proper response.
  • !kibble <dino> shows what kibble should be used to tame <dino>.
  • !gift <steam name> (admin only) pushes a random item of upgraded quality to a player.
  • !jump <steam name> (admin only) pushes Jump Puzzle loot to a player.
  • !help [command] If no command is specified, shows general help and a list of commands. If command is specified, shows info on the command and how to use it.
  • !list [category] If no category is specified, shows a list of categories. If a category is specified, shows all items for purchase in the automated store from that category.
  • !settings Shows all players the current server settings. My server for example says: "Tame: 10x, XP: 5x, Farm: 5x.", "Tamed Dino Damage and Health per point buffed from 15% to 25%", "Weight on Players and Tames at 50 per point.". Shows to all players due to the fact that many new players will join and ask "what are the settings for this server?". Allows anyone to simply type !settings and give a proper response.
  • !sp shows the player's current amount of SP.

As we all probably know by now, Ark servers are fantastic at being buggy. RCON is no exception. Most admins know that Ark servers will sever RCON connections randomly. This causes other RCON programs to bug out. SurvivalBot accepts this as a simple fact of life. Disconnects do not impact a single feature here. Functionality relying on players joining, for example, will never erroneously activate multiple times because Ark severed the RCON connection. Everything is DB driven, and as such, even if a shipment is generated and then the RCON connection is severed, nothing is impacted. Once the connection is available again, SurvivalBot connects and picks right back up where it left off and gives out the shipment.

There are more features but I've been typing this for a decent chunk of time now, lol.

 

Current Bugs:

  • Players changing their Steam name after creating a character is an absolute mess. This is not due to my own scripting, but due to an awesome bit of strange logic in Ark itself. In the player list, the new Steam name is listed. When chatting, however, the old Steam name is used. This could all be alleviated if Ark pushed a Steam ID with chat, but alas, that'll likely never happen (have personally begged in the forums for devs to fix that and many other things). For now, Steam name changes disallow players from interacting with the bot entirely.
  • Now and then the bot gets out of sync. Not a huge deal, it auto-recovers. However, sometimes items are not given out because of this. It happens about once every week, so it's not a giant priority.
  • It is possible to buy items after a save immediately before a reboot (there's about a 15 second window), which will take SP and give the items. Of course, however, upon rebooting the items are lost because they were never saved. This isn't possible with built-in reboots, but it is possible with external. It is planned to detect broadcasts about reboots and disable the automated store. Of course, I'm extremely limited in what I can do about external scripts causing reboots.

 

Anyway, if anyone wants to see/test it, feel free to join my server. Until things are more organized a legitimate alpha/beta for others to use on their server(s) is off the table.

I'll be posting more progress here as it is made.

Link to comment
Share on other sites

Update today:

Figured out how to make automated spawns. For example, I can now setup SurvivalBot to spawn 10 alphas on Lava Island with a command. I can also teleport players wherever (say, an event?) with chat commands. That said, I'm tinkering with a cool little !tribute command that allows people to pay tribute to "the Ark gods". Every tribute has a chance to pop a creature on Lava Island (for the Center). The amount of tribute received will dictate the type. For example, 500 SP as tribute will pop something reasonably undaunting. 5000 SP will pop something moderately difficult. 25000 SP will be a very hard encounter. Of course, these are all simple concepts.

I've been working with a !queue command that allows any players to queue up for an event. Upon an administrator typing something like !teleportqueue Event1 or !teleportqueue <coords> it'll teleport every one of the queued players to the designated area. The points will be modifiable. For example, you can add a point that refers to anywhere on the map and name it "Event1". The only downside is there won't be a way to get them back to where they were when they teleported. Though, better to fly back than to fly there AND back :P

I'm also tinkering with a taming calculator. I'm VERY unskilled in the ways of taming calculators, however, so this is new ground. I just know it'd be amazing to have it in game. Also, what I'm planning on is allowing a person to set the weapon they're using. For example, "!weapon 196 longneck" will permanently store the user's weapon until the command is re-issued. Then, upon typing "!tame 150 rex", it'll say "You'll need x darts with your 196 longneck, x narco, and x kibble/x prime/x raw meat. Not the right weapon? Set it with !weapon."

 

Oh and P.S., all features are able to be disabled and modified. I know everyone wants things their own way on their own server.

Link to comment
Share on other sites

14 minutes ago, Archimodes said:

it'll say "You'll need x darts with your 196 longneck, x narco, and x kibble/x prime/x raw meat. Not the right weapon? Set it with !weapon."

You would have to do something like ...196 longneck,  x(x) Kibble/ x(x) prime/ x(x) raw (x)=narcotics

As the narcotics vary depending on tame food.

Good job though, keep it up

Link to comment
Share on other sites

  • 2 weeks later...

Multi-server support has been added. Everything has been segmented out to allow one instance of SurvivalBot to support an endless amount of servers.

Caught a bug that existed with >= 70 players on a server. SurvivalBot will now function no matter the traffic and could technically function just fine with even thousands of players on one server (despite the fact that we'll likely never see that).

Added a single argument to entirely disable certain transactions like the in-game shop, purchasing over a website and redeeming in-game, etc. Useful for situations where one server needs it disabled but another needs it enabled.

Cleaned up all the code tremendously to work toward release.

 

I'm looking for a server with high traffic who'd like to test SurvivalBot out (MAYBE a few). I'll host it for the time being. Must have a dedicated server, can be Linux or Windows. Some functionality will be disabled entirely, like automated reboots for example (has to be disabled while hosted remotely). If said tester is familiar with MySQL, we can plug right into their DB with some modifications. Otherwise, I can host the DB and interface for editing everything (may be the best route anyway - the interface is already built, may as well use it). EDIT: On second thought, I don't want to spend a tremendous amount of time working with someone else's database. I'll host the DB and give you access to the interface for editing the config. Once SB is ready for legitimate deployment to other environments and such, I'll provide the necessary SQL for users to integrate into their own DB.

Please reply here or message me if you're interested in testing. In your response, please let me know your peak and average traffic.

Link to comment
Share on other sites

I have a low pop server but am experienced in geek stuff, I run a linux server that has mysql setup and installed (been running linux machines for just over 17 years - I am an old fart).  I know SQL, PHP, Python, Java and a few others to a lesser degree including the vomit inducing VBA.  

I am keen to try it out hosting the DB myself when you feel ready to take that step.

Link to comment
Share on other sites

Hello. I am very much interested in this. My servers have peeked at 120 and average depending on the wipe cycle but typically hit 50 a night. My website is EliteArk.com. I have been hosting ark servers since August 2015 nonstop. I am also willing to donate for your hard work as this looks like an amazing project and feat. Please contact me here or on our website @ EliteArk.com. Thanks! 

Link to comment
Share on other sites

  • 1 month later...
On 12/20/2016 at 0:44 PM, StriderUk said:

did this ever become a thing or has this been abandoned?

 

Nope, not abandoned. Still very much alive and receiving updates pretty close to every day.

1 hour ago, Grounded said:

Same, but I get the feeling he was going to make it a service, host the database himself and charge for it.  So it would depend on the charges I guess as to how worthwhile it would be.

 

Actually this is the portion that's up in the air presently.

Link to comment
Share on other sites

Archived

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


×
×
  • Create New...