Giter VIP home page Giter VIP logo

binato's Introduction

I've moved to https://git.eusv.net, got sick of GitHub's bs.

Hey there, I'm Holly

Discord: tgpholly

Languages (ordered by preference)

Software & Tools

binato's People

Contributors

tgpholly avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

Forkers

calemy sebola3461

binato's Issues

Improve code quality

The code quality is, overall, significantly better than it used to be on the legacy-javascript branch.
There is however a lot of code quality issues, code that is basically unreadable in some places, missing types, use of the any "type", etc.

A good place to look where to start with this would be the codefactor issues.

Add CI Steps

Right now there are no steps for github actions to do so it will pass every single time even if there are issues.

Support away message

client sends the server the away message and we just need to store that in the db and send it to people when they send a message and the user is offline

Store passwords in the database better

This is a serious issue, the passwords in the database are still the md5 hashed passwords the client sends but they are aes256 encrypted in the database. This can be handled way better with hash/salt.

Will require changes in Binato, Binato-Website and Binato-letsjs.

Figure out a better way of mapping to packets rather than a huge switch statement

V8 will give up trying to JIT the code if there is a huge switch statement (which we have) so yeah we probably shouldn't do that.

To do this the data that packets and related functions take in needs to be generalized.

  • ChangeAction
  • SendPublicMessage
  • Logout
  • UserPresenceBundle
  • StartSpectating
  • SpectateFrames
  • StopSpectating
  • SendPrivateMessage
  • JoinLobby
  • PartLobby
  • CreateMatch
  • JoinMatch
  • MatchChangeSlot
  • MatchReady
  • MatchChangeSettings
  • MatchNotReady
  • PartMatch
  • MatchLock (also kick!)
  • MatchNoBeatmap
  • MatchSkipRequest
  • MatchHasBeatmap
  • MatchTransferHost
  • MatchChangeMods
  • MatchStart
  • MatchLoadComplete
  • MatchComplete
  • MatchScoreUpdate
  • MatchFailed
  • MatchChangeTeam
  • ChannelJoin
  • ChannelPart
  • FriendAdd
  • FriendRemove
  • UserStatsRequest
  • SpecialMatchInfoRequest
  • SpecialJoinMatchChannel
  • SpecialLeaveMatchChannel
  • ChannelInvite
  • UserPresenceRequest (Needs 2nd param to be the user ID)

Create match and round tables for multiplayer

Multiplayer needs to be tracked so previous games, what maps were played, player scores, etc can be retrieved and shown on a round by round basis.

This would also make it so that file being used for match ids can be nuked.

Store match round scores in seperate table

Right now the scores for all players are squished on to the end of a row in mp_match_rounds, this is pretty bad and we have to null any slots that didn't have a user in it. We could instead just store it in it's own table like mp_match_round_scores and store it by match_id, slot_id and user_id and exclude any slots that didn't have a user in it.

Merge future branch into master

I've been working on a what initially started as a port and turned into a rewrite to TypeScript for a while now and it's looking good.

There's a few issues remaining before that can happen though:

The task list™:

  • Implement all features of the current bot (master) in a better structure (future)
  • Implement all remaining packets (PM, Tourney)
    Attempt to stop codefactor from trying to stab me This will be sorted after the fact
    Create interfaces for all any typed things (this is a large task) This will be sorted after the fact

Implement multiplayer plugins system

Would be cool if multiplayer could have plugins that are loaded on startup / are reloadable that can be added to multiplayer games dynamically. New rules etc.

Failed to release mysql connection Error: Access denied for user 'u15029_osu'@'46.72.x.x' to database 'osu' (I'm stupid)

16|osusrv | Failed to release mysql connection Error: Access denied for user 'u15029_osu'@'46.72.x.x' to database 'osu'
16|osusrv | at Packet.asError (/srv/gameap/b/osusrv/node_modules/mysql2/lib/packets/packet.js:728:17)
16|osusrv | at ClientHandshake.execute (/srv/gameap/b/osusrv/node_modules/mysql2/lib/commands/command.js:29:26)
16|osusrv | at PoolConnection.handlePacket (/srv/gameap/b/osusrv/node_modules/mysql2/lib/connection.js:456:32)
16|osusrv | at PacketParser.onPacket (/srv/gameap/b/osusrv/node_modules/mysql2/lib/connection.js:85:12)
16|osusrv | at PacketParser.executeStart (/srv/gameap/b/osusrv/node_modules/mysql2/lib/packet_parser.js:75:16)
16|osusrv | at Socket. (/srv/gameap/b/osusrv/node_modules/mysql2/lib/connection.js:92:25)
16|osusrv | at Socket.emit (node:events:527:28)
16|osusrv | at addChunk (node:internal/streams/readable:324:12)
16|osusrv | at readableAddChunk (node:internal/streams/readable:297:9)
16|osusrv | at Socket.Readable.push (node:internal/streams/readable:234:10) {
16|osusrv | code: 'ER_DBACCESS_DENIED_ERROR',
16|osusrv | errno: 1044,
16|osusrv | sqlState: '42000',
16|osusrv | sqlMessage: "Access denied for user 'u15029_osu'@'46.72.x.x' to database 'osu'",
16|osusrv | sql: undefined
16|osusrv | }

I use external DB running on MariaDB v 5.5.68 .
In config as a DB address i use my external DB's address, but in error it shows that it tried to connect to address that my current server uses, not the external one
OS: Ubuntu 20.04

Use seperate streams for match and chat

Currently the multiplayer match and chat are inside one stream, would be useful to handle it this way since the tourney client requests to join the channel and only the channel

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.