Giter Site home page Giter Site logo

kiiyya / battlefox Goto Github PK

View Code? Open in Web Editor NEW
8.0 3.0 2.0 1.02 MB

A modern Procon replacement for Battlefield 4.

License: GNU Affero General Public License v3.0

Rust 99.68% Dockerfile 0.32%
game-admin server-admin battlefield-4 rcon procon rust async stv vote mapvote

battlefox's Introduction

BattleFox ๐ŸฆŠ

A Procon replacement which aims to be not shit (tm). Pew pew.

Crates overview:

  • battlefox builds upon battlefield_rcon and provides map vote and a bunch of other plugins. This crate connects directly to the BF4 server via RCON.
  • battlefox_shared and battlefox_database are data model stuff, these contain code to access the event passing (AMQ) and database stuff.
  • battlefox_discord is a Discord bot.
  • battlefield_rcon is the RCON protocol implementation, it is a separate library crate, so you can use it in your own projects. Simple events listening and command sending, nothing else.
  • battlelog Helps access the BattleLog Web API.

Setting IP/Port/Password

You can do this in two ways. Either setting environment variables directly, or creating a .env file in the working directory (e.g. root of this repo), which will fill in the environment variables for you:

BFOX_RCON_IP=127.0.0.1
BFOX_RCON_PORT=12345
BFOX_RCON_PASSWORD=qw3RTy
DATABASE_URL=mysql://username:password@host/database

battlefox's People

Contributors

kiiyya avatar razer2015 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

battlefox's Issues

Animate STV

I could even go as far as to display that animation, personalized for every person. So that they can track where their own vote ended up in o.o

[ADMIN] Eliminated Pearl
             Metro   ====
             Locker  ===
(Your vote)  Pearl   =
[ADMIN] Eliminated Pearl
             Metro   ====
(Your vote)  Locker  ==+
             Pearl   
  • Maybe also display "Your vote x2"
  • Maybe order the maps by the order the player voted in? (So, not in order of score)
  • Maybe give VIPs access to a !tally command so they can access this before the vote ends.

Ballot assignments to players tracking issue.

My ballot:
grafik

Here my vote is assigned to zavod night:
grafik
Then in the next step, my vote somehow is assigned to Pearl Market, even though I never voted for it:
grafik
At least the score(Pearl) doesn't increase, and the score(Firestorm) increases, which is where my votes ended up in. So STV itself is still correct, just not how I track where a player's vote ended up.

Distr { distr: {MapInPool { map: ZavodNight, mode: Rush, extra: () }: Ratio { numer: 2, denom: 1 }} }

elem_t(MapInPool { map: ZavodNight, mode: Rush, extra: () }, MapInPool { map: PearlMarket, mode: Rush, extra: () }):
 ==> Distr { distr: {MapInPool { map: ZavodNight, mode: Rush, extra: () }: Ratio { numer: 0, denom: 1 }, MapInPool { map: PearlMarket, mode: Rush, extra: () }: Ratio { numer: 2, denom: 1 }} }

Voting enhancements

mapvote

Add support for voting with numbers !1 2 3

Also possibly add an option for voting with shorter map names? The shortest unambiguous name.
For example:
!metro
!metr
!met

Configurable shortest character count to prevent conflicts with other plugins? Or perhaps an option to add reserved commands in blacklist?

Make balancer.

The procon balancer is terrible for rush.

We have the possibility (not yet implemented, uses weird battlefield API, ask kiiya or xfile) to retrieve the amount of mcoms detonated and amount of tickets still remaining. We could use that to implement better balancing.

There's a lot of decisions to be made on how balancing is concretely implemented. We should discuss beforehand what gets implemented and how.

Multiple RCON connections to prevent lag

Currently Bf4Client uses just one RconClient, which causes lag when the mapvote spammer runs 64 * 3 rcon queries at the same time, usually around 2.5s. Since there's a limit of 17ms per rcon packet per rcon connection.

Make squad manager

Simple things like /lead to get lead of the squad, /unlead, etc. And maybe giving squad lead to the player with the highest K/D or highest rank (so that other squadmates have a SL who will provide better spawn opportunities). Very open-ended issue.

Create "harmless" mode for testing.

So that you can connect to a production bf4 server, but it just won't send any commands which actually do anything.
So no mapchange commands, no chat commands, etc. It'll just log them instead.

User interface useability and utilization for unification of the unilaterial unfestered ubiquitously implementation

  • Reduce messages to players who already voted to only show their current ballot and /v to vote again
  • Simplify the vote message/instructions e.g. "Type a number or mapname from below to vote:"
  • Remove the requirement to use ! to vote OR include ! in the ongoing maplist (!1 locker !2 metro...)
  • Simplify example of voting, always show the number variant first "Indicate 1st 2nd and 3rd preference e.g. !1 2 3"
  • Add a spam message to the existing spam bot message queue "VIP's can "!nominate mapname" for themapvote"

VIP slots

Need to add VIP slots, with backing in either MySQL or in RCON reservedSlots

VIP features TODO:

  • 2x map vote weight
  • !nominate map only for VIPs (currenly anyone can nominate)
  • Can see vote leader and runner-up.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.