kiiyya / battlefox Goto Github PK
View Code? Open in Web Editor NEWA modern Procon replacement for Battlefield 4.
License: GNU Affero General Public License v3.0
A modern Procon replacement for Battlefield 4.
License: GNU Affero General Public License v3.0
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.
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.
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.
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.
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
!tally
command so they can access this before the vote ends.People often vote for the map at the end still. Then they type in !1
, but the old vote has ended, and they vote for some random new map instead.
Need to add VIP slots, with backing in either MySQL or in RCON reservedSlots
VIP features TODO:
!nominate map
only for VIPs (currenly anyone can nominate)Change it so that !Pearl and !pearl are both accepted. Perhaps by changing the user input to all lowercase?
Right now when you nominate a map, you still have to manually update your ballot, which is unhandy.
Here my vote is assigned to zavod night:
Then in the next step, my vote somehow is assigned to Pearl Market, even though I never voted for it:
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 }} }
This seems nice: https://docs.rs/flexi_logger/0.17.1/flexi_logger/
Also use the log
crate throughout the code more.
There is:
Might need to make MapManager take some extra parameters in the config, which it then maps with a function to the actual amount of tickets.
We had a discord bot attempt but it is broken right now.
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?
Currently it's quite a mess, RconError
vs Bf4Error
, many different cmd_err!(PlayerKickResult, ...)
, etc.
Maybe use an error handling library like anyhow
?
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.