.BANCHO. .FIX. Fix np bug
This commit is contained in:
parent
0e5471383e
commit
fe283ff293
2
common
2
common
|
@ -1 +1 @@
|
|||
Subproject commit 97ed79d4a1a721bec3ebfe05f11ffde589f97bd2
|
||||
Subproject commit d68736652cd42f136b525c6f83a47c91bf230159
|
|
@ -4,6 +4,7 @@ import random
|
|||
import requests
|
||||
|
||||
from common import generalUtils
|
||||
from common.constants import actions
|
||||
from common.constants import mods
|
||||
from common.log import logUtils as log
|
||||
from common.ripple import userUtils
|
||||
|
@ -664,7 +665,7 @@ def pp(fro, chan, message):
|
|||
pp = userUtils.getPP(token.userID, gameMode)
|
||||
return "You have {:,} pp".format(pp)
|
||||
|
||||
def updateBeatmap(fro, chan, to):
|
||||
def updateBeatmap(fro, chan, message):
|
||||
try:
|
||||
# Run the command in PM only
|
||||
if chan.startswith("#"):
|
||||
|
@ -699,6 +700,42 @@ def updateBeatmap(fro, chan, to):
|
|||
except:
|
||||
return False
|
||||
|
||||
def trick(fro, chan, message):
|
||||
if chan.startswith("#"):
|
||||
return False
|
||||
token = glob.tokens.getTokenFromUsername(fro)
|
||||
if token is None or token.zingheri != 0:
|
||||
return False
|
||||
token.zingheri = 1
|
||||
return "As you want..."
|
||||
|
||||
def treat(fro, chan, message):
|
||||
if chan.startswith("#"):
|
||||
return False
|
||||
token = glob.tokens.getTokenFromUsername(fro)
|
||||
if token is None or token.zingheri != 0:
|
||||
return False
|
||||
if token.actionID != actions.IDLE and token.actionID != actions.AFK:
|
||||
log.warning(str(token.actionID))
|
||||
return "You must be in the main menu to give me a treat :3"
|
||||
token.zingheri = -2
|
||||
token.leaveStream("zingheri")
|
||||
usePP = token.gameMode == gameModes.STD or token.gameMode == gameModes.MANIA
|
||||
if usePP:
|
||||
currentPP = userUtils.getPP(token.userID, token.gameMode)
|
||||
gift = currentPP/3
|
||||
userUtils.setPP(token.userID, token.gameMode, currentPP - gift)
|
||||
userUtils.setPP(999, token.gameMode, userUtils.getPP(999, token.gameMode) + gift)
|
||||
else:
|
||||
currentScore = userUtils.getRankedScore(token.userID, token.gameMode)
|
||||
gift = currentScore/3
|
||||
userUtils.setRankedScore(token.userID, token.gameMode, currentScore - gift)
|
||||
userUtils.setRankedScore(999, token.gameMode, userUtils.getRankedScore(999, token.gameMode) + gift)
|
||||
token.updateCachedStats()
|
||||
token.enqueue(serverPackets.userStats(token.userID))
|
||||
token.enqueue(serverPackets.userStats(999, True))
|
||||
return "You just gave me {num:.2f} {type} as a treat, thanks! ^.^".format(num=gift, type="pp" if usePP else "score")
|
||||
|
||||
"""
|
||||
Commands list
|
||||
|
||||
|
@ -838,6 +875,12 @@ commands = [
|
|||
}, {
|
||||
"trigger": "!update",
|
||||
"callback": updateBeatmap
|
||||
}, {
|
||||
"trigger": "trick",
|
||||
"callback": trick
|
||||
}, {
|
||||
"trigger": "treat",
|
||||
"callback": treat
|
||||
}
|
||||
#
|
||||
# "trigger": "!acc",
|
||||
|
|
|
@ -79,4 +79,6 @@ server_userPresenceBundle = 96
|
|||
client_userPanelRequest = 97
|
||||
client_tournamentMatchInfoRequest = 93
|
||||
client_tournamentJoinMatchChannel = 108
|
||||
client_tournamentLeaveMatchChannel = 109
|
||||
client_tournamentLeaveMatchChannel = 109
|
||||
|
||||
server_zingheri = 105
|
|
@ -267,4 +267,7 @@ def notification(message):
|
|||
return packetHelper.buildPacket(packetIDs.server_notification, [[message, dataTypes.STRING]])
|
||||
|
||||
def banchoRestart(msUntilReconnection):
|
||||
return packetHelper.buildPacket(packetIDs.server_restart, [[msUntilReconnection, dataTypes.UINT32]])
|
||||
return packetHelper.buildPacket(packetIDs.server_restart, [[msUntilReconnection, dataTypes.UINT32]])
|
||||
|
||||
def zingheri(message):
|
||||
return packetHelper.buildPacket(packetIDs.server_zingheri, [[message, dataTypes.STRING]])
|
|
@ -4,7 +4,7 @@ from common.ripple import userUtils
|
|||
from constants import clientPackets
|
||||
from constants import serverPackets
|
||||
from objects import glob
|
||||
|
||||
import time
|
||||
|
||||
def handle(userToken, packetData):
|
||||
# Get usertoken data
|
||||
|
@ -46,6 +46,7 @@ if userToken.matchID != -1 and userToken.actionID != actions.MULTIPLAYING and us
|
|||
userToken.actionMd5 = packetData["actionMd5"]
|
||||
userToken.actionMods = packetData["actionMods"]
|
||||
userToken.beatmapID = packetData["beatmapID"]
|
||||
userToken.actionLatestUpdate = int(time.time())
|
||||
|
||||
# Enqueue our new user panel and stats to us and our spectators
|
||||
recipients = [userToken]
|
||||
|
|
|
@ -1,12 +1,18 @@
|
|||
"""FokaBot related functions"""
|
||||
import re
|
||||
|
||||
import time
|
||||
|
||||
from common import generalUtils
|
||||
from common.constants import actions
|
||||
from common.ripple import userUtils
|
||||
from constants import fokabotCommands
|
||||
from constants import serverPackets
|
||||
from objects import glob
|
||||
from common.log import logUtils as log
|
||||
|
||||
import threading
|
||||
from helpers import chatHelper as chat
|
||||
from constants import serverPackets
|
||||
|
||||
# Tillerino np regex, compiled only once to increase performance
|
||||
npRegex = re.compile("^https?:\\/\\/osu\\.ppy\\.sh\\/b\\/(\\d*)")
|
||||
|
@ -56,4 +62,23 @@ def fokabotResponse(fro, chan, message):
|
|||
return i["callback"](fro, chan, message[1:])
|
||||
|
||||
# No commands triggered
|
||||
return False
|
||||
return False
|
||||
|
||||
def zingheriLoop():
|
||||
log.debug("SONO STATI I ZINGHERI, I ZINGHERI!")
|
||||
clients = glob.streams.getClients("zingheri")
|
||||
for i in clients:
|
||||
log.debug(str(i))
|
||||
if i not in glob.tokens.tokens:
|
||||
continue
|
||||
token = glob.tokens.tokens[i]
|
||||
if token.userID == 999:
|
||||
continue
|
||||
if token.zingheri == -1:
|
||||
chat.sendMessage("FokaBot", token.username, "Trick or treat?")
|
||||
token.zingheri = 0
|
||||
elif token.zingheri == 1:
|
||||
if token.actionID == actions.PLAYING and (int(time.time()) - token.actionLatestUpdate >= 25):
|
||||
token.enqueue(serverPackets.zingheri("You'd better give me a treat next time ;)"))
|
||||
token.leaveStream("zingheri")
|
||||
threading.Timer(30, zingheriLoop).start()
|
|
@ -64,6 +64,7 @@ class token:
|
|||
self.actionText = ""
|
||||
self.actionMd5 = ""
|
||||
self.actionMods = 0
|
||||
self.actionLatestUpdate = self.pingTime
|
||||
self.gameMode = gameModes.STD
|
||||
self.beatmapID = 0
|
||||
self.rankedScore = 0
|
||||
|
@ -73,6 +74,11 @@ class token:
|
|||
self.gameRank = 0
|
||||
self.pp = 0
|
||||
|
||||
# -1: Non sa dell'esistenza dei zingheri
|
||||
# 0: In attesa di risposta al messaggiomem
|
||||
# 1: zingheri soonTM
|
||||
self.zingheri = -1
|
||||
|
||||
# Generate/set token
|
||||
if token_ is not None:
|
||||
self.token = token_
|
||||
|
@ -88,6 +94,7 @@ class token:
|
|||
|
||||
# Join main stream
|
||||
self.joinStream("main")
|
||||
self.joinStream("zingheri")
|
||||
|
||||
def enqueue(self, bytes_):
|
||||
"""
|
||||
|
|
|
@ -67,7 +67,7 @@ class streamList:
|
|||
return
|
||||
self.streams[streamName].broadcast(data)
|
||||
|
||||
'''def getClients(self, streamName):
|
||||
def getClients(self, streamName):
|
||||
"""
|
||||
Get all clients in a stream
|
||||
|
||||
|
@ -76,4 +76,4 @@ class streamList:
|
|||
"""
|
||||
if streamName not in self.streams:
|
||||
return
|
||||
return self.streams[streamName].clients'''
|
||||
return self.streams[streamName].clients
|
6
pep.py
6
pep.py
|
@ -134,6 +134,7 @@ if __name__ == "__main__":
|
|||
consoleHelper.printNoNl("> Creating packets streams... ")
|
||||
glob.streams.add("main")
|
||||
glob.streams.add("lobby")
|
||||
glob.streams.add("zingheri")
|
||||
consoleHelper.printDone()
|
||||
|
||||
# Start fokabot
|
||||
|
@ -151,6 +152,11 @@ if __name__ == "__main__":
|
|||
glob.tokens.spamProtectionResetLoop()
|
||||
consoleHelper.printDone()
|
||||
|
||||
# Initialize zingheri loop
|
||||
consoleHelper.printNoNl("> WOO WOO... ")
|
||||
fokabot.zingheriLoop()
|
||||
consoleHelper.printDone()
|
||||
|
||||
# Cache user ids
|
||||
consoleHelper.printNoNl("> Caching user IDs... ")
|
||||
userUtils.cacheUserIDs()
|
||||
|
|
Loading…
Reference in New Issue
Block a user