[ci] auto-format

This commit is contained in:
imayushsaini 2022-09-17 16:39:03 +00:00 committed by github-actions[bot]
parent 723579c969
commit 7337368ad7
2 changed files with 1313 additions and 1170 deletions

View file

@ -16,33 +16,37 @@
# live ping support for bcs
# Made by Mr.Smoothy - Plasma Boson
import traceback
import codecs
import json
import re
import sys
import shutil
import copy
import urllib
import os
from bastd.ui.account import viewer
from bastd.ui.popup import PopupMenuWindow, PopupWindow
from ba._general import Call
import base64
import datetime
import ssl
import bastd.ui.party as bastd_party
from typing import List, Sequence, Optional, Dict, Any, Union
from bastd.ui.colorpicker import ColorPickerExact
from bastd.ui.confirm import ConfirmWindow
from dataclasses import dataclass
import math
import time
import ba
import _ba
from typing import TYPE_CHECKING, cast
import urllib.request
from _thread import start_new_thread
import threading
version_str = "7"
import os,urllib
import os,sys,re,json,codecs,traceback,base64
import threading
import time,copy,datetime,shutil
from _thread import start_new_thread
import urllib.request
from typing import TYPE_CHECKING, cast
import _ba
import ba
import time
import math
import threading
from dataclasses import dataclass
from bastd.ui.popup import PopupMenuWindow,PopupWindow
from bastd.ui.confirm import ConfirmWindow
from bastd.ui.colorpicker import ColorPickerExact
from typing import List, Sequence, Optional, Dict, Any, Union
import bastd.ui.party as bastd_party
cache_chat = []
connect = _ba.connect_to_party
disconnect = _ba.disconnect_from_host
@ -56,8 +60,9 @@ p_port=43210
p_name = "local"
current_ping = 0.0
enable_typing = False # this will prevent auto ping to update textwidget when user actually typing chat message
import ssl
ssl._create_default_https_context = ssl._create_unverified_context
def newconnect_to_party(address, port=43210, print_progress=False):
global ip_add
global p_port
@ -77,6 +82,8 @@ def newconnect_to_party(address,port=43210,print_progress=False):
DEBUG_SERVER_COMMUNICATION = False
DEBUG_PROCESSING = False
class PingThread(threading.Thread):
"""Thread for sending out game pings."""
@ -166,11 +173,14 @@ class PingThread(threading.Thread):
try:
import OnlineTranslator
tranTypes = [item for item in dir(OnlineTranslator) if item.startswith("Translator_")]
if "item" in globals():del item
except:tranTypes = []#;ba.print_exception()
if "item" in globals():
del item
except:
tranTypes = [] # ;ba.print_exception()
RecordFilesDir = os.path.join(_ba.env()["python_directory_user"], "Configs" + os.sep)
if not os.path.exists(RecordFilesDir):os.makedirs(RecordFilesDir)
if not os.path.exists(RecordFilesDir):
os.makedirs(RecordFilesDir)
version_str = "3.0.1"
@ -180,6 +190,7 @@ SystemEncode = sys.getfilesystemencoding()
if not isinstance(SystemEncode, str):
SystemEncode = "utf-8"
def update_ping():
try:
_ba.set_ping_widget_value(current_ping)
@ -188,23 +199,28 @@ def update_ping():
if hasattr(_ba, "ping_widget") and _ba.ping_widget.exists():
ba.textwidget(edit=_ba.ping_widget, text="Ping:"+str(current_ping)+" ms")
PingThread().start()
import datetime
try:
from ba._generated.enums import TimeType
except:
from ba._enums import TimeType
class chatloggThread():
"""Thread for sending out game pings."""
def __init__(self):
super().__init__()
self.saved_msg = []
def run(self) -> None:
# pylint: disable=too-many-branches
# pylint: disable=too-many-statements
global chatlogger
self.timerr = ba.Timer(5.0, self.chatlogg, repeat=True, timetype=TimeType.REAL)
def chatlogg(self):
global chatlogger
chats = _ba.get_chat_messages()
@ -220,14 +236,18 @@ class chatloggThread():
pass
else:
self.timerr = None
def save(self, msg):
x = str(datetime.datetime.now())
t = open(os.path.join(_ba.env()["python_directory_user"], "Chat logged.txt"), "a+")
t.write(x+" : " + msg + "\n")
t.close()
class mututalServerThread():
def run(self):
self.timer = ba.Timer(10, self.checkPlayers, repeat=True, timetype=TimeType.REAL)
def checkPlayers(self):
if _ba.get_connection_to_host_info() != {}:
server_name = _ba.get_connection_to_host_info()["name"]
@ -236,6 +256,7 @@ class mututalServerThread():
players.append(ros["display_string"])
start_new_thread(dump_mutual_servers, (players, server_name,))
def dump_mutual_servers(players, server_name):
filePath = os.path.join(RecordFilesDir, "players.json")
data = {}
@ -251,6 +272,8 @@ def dump_mutual_servers(players,server_name):
data[player] = [server_name]
f = open(filePath, "w")
json.dump(data, f)
mututalServerThread().run()
@ -264,6 +287,7 @@ class customchatThread():
chats = _ba.get_chat_messages()
for msg in chats: # fill up old chat , to avoid old msg popup
cache_chat.append(msg)
def run(self) -> None:
# pylint: disable=too-many-branches
# pylint: disable=too-many-statements
@ -288,6 +312,7 @@ class customchatThread():
else:
self.timerr = None
def chatloggerstatus():
global chatlogger
if chatlogger:
@ -295,6 +320,7 @@ def chatloggerstatus():
else:
return "Turn on chat logger"
def _getTransText(text, isBaLstr=False, same_fb=False):
global Current_Lang
global chatlogger
@ -354,19 +380,20 @@ command to kick %s?",
return (Language_Texts.get(text, "#Unknown Text#" if not same_fb else text) if not isBaLstr else
ba.Lstr(resource="??Unknown??", fallback_value=Language_Texts.get(text, "#Unknown Text#" if not same_fb else text)))
def _get_popup_window_scale() -> float:
uiscale = ba.app.ui.uiscale
return (2.3 if uiscale is ba.UIScale.SMALL else
1.65 if uiscale is ba.UIScale.MEDIUM else 1.23)
def _creat_Lstr_list(string_list: list = []) -> list:
return ([ba.Lstr(resource="??Unknown??", fallback_value=item) for item in string_list])
customchatThread().run()
class ModifiedPartyWindow(bastd_party.PartyWindow):
def __init__(self, origin: Sequence[float] = (0, 0)):
_ba.set_party_window_open(True)
@ -377,17 +404,15 @@ class ModifiedPartyWindow(bastd_party.PartyWindow):
self._popup_party_member_is_host: Optional[bool] = None
self._width = 500
uiscale = ba.app.ui.uiscale
self._height = (365 if uiscale is ba.UIScale.SMALL else
480 if uiscale is ba.UIScale.MEDIUM else 600)
# Custom color here
self._bg_color = ba.app.config.get("PartyWindow_Main_Color",(0.40, 0.55, 0.20)) if not isinstance(self._getCustomSets().get("Color"),(list,tuple)) else self._getCustomSets().get("Color")
if not isinstance(self._bg_color,(list,tuple)) or not len(self._bg_color) == 3:self._bg_color = (0.40, 0.55, 0.20)
self._bg_color = ba.app.config.get("PartyWindow_Main_Color", (0.40, 0.55, 0.20)) if not isinstance(
self._getCustomSets().get("Color"), (list, tuple)) else self._getCustomSets().get("Color")
if not isinstance(self._bg_color, (list, tuple)) or not len(self._bg_color) == 3:
self._bg_color = (0.40, 0.55, 0.20)
ba.Window.__init__(self, root_widget=ba.containerwidget(
size=(self._width, self._height),
@ -541,7 +566,6 @@ class ModifiedPartyWindow(bastd_party.PartyWindow):
v_align='center',
corner_scale=0.7)
# for m in _ba.get_chat_messages():
# if m:
# ttchat=ba.textwidget(
@ -575,8 +599,6 @@ class ModifiedPartyWindow(bastd_party.PartyWindow):
position=(self._width - 70, 35),
on_activate_call=self._send_chat_message)
def _times_button_on_click():
# self._popup_type = "send_Times_Press"
# allow_range = 100 if _ba.get_foreground_host_session() is not None else 4
@ -618,16 +640,16 @@ class ModifiedPartyWindow(bastd_party.PartyWindow):
timetype=ba.TimeType.REAL)
self._update()
def title_selected(self):
self.full_chat_mode = self.full_chat_mode == False
self._update()
def smoothy_roster_changer(self):
self.smoothy_mode = (self.smoothy_mode+1) % 3
self._update()
def on_chat_message(self, msg: str) -> None:
@ -635,6 +657,7 @@ class ModifiedPartyWindow(bastd_party.PartyWindow):
# print("on_chat"+msg)
if True:
self._add_msg(msg)
def _on_chat_press(self, msg, widget):
global unmuted_names
if msg.split(":")[0] in unmuted_names:
@ -655,12 +678,10 @@ class ModifiedPartyWindow(bastd_party.PartyWindow):
# _ba.chatmessage("pressed")
def _add_msg(self, msg: str) -> None:
try:
if ba.app.config.resolve('Chat Muted'):
txt = ba.textwidget(parent=self._columnwidget,
text=msg,
h_align='left',
@ -722,13 +743,16 @@ class ModifiedPartyWindow(bastd_party.PartyWindow):
first = self._chat_texts.pop(0)
first.delete()
ba.containerwidget(edit=self._columnwidget, visible_child=txt)
def color_picker_closing(self, picker) -> None:
ba._appconfig.commit_app_config()
def color_picker_selected_color(self, picker, color) -> None:
# bs.animateArray(self._root_widget,"color",3,{0:self._bg_color,1500:color})
ba.containerwidget(edit=self._root_widget, color=color)
self._bg_color = color
ba.app.config["PartyWindow_Main_Color"] = color
def _on_nick_rename_press(self, arg) -> None:
ba.containerwidget(edit=self._root_widget, transition='out_scale')
@ -782,6 +806,7 @@ class ModifiedPartyWindow(bastd_party.PartyWindow):
ba.widget(edit=okb, left_widget=cbtn)
ba.textwidget(edit=txt89, on_return_press_call=okb.activate)
ba.containerwidget(edit=cnt, cancel_button=cbtn, start_button=okb)
def _add_nick(self, arg):
config = ba.app.config
new_name_raw = cast(str, ba.textwidget(query=self._player_nick_text))
@ -793,6 +818,7 @@ class ModifiedPartyWindow(bastd_party.PartyWindow):
ba.containerwidget(edit=self._nick_rename_window,
transition='out_scale')
# ba.containerwidget(edit=self._root_widget,transition='in_scale')
def _get_nick(self, id):
config = ba.app.config
if not isinstance(config.get('players nick'), dict):
@ -804,36 +830,46 @@ class ModifiedPartyWindow(bastd_party.PartyWindow):
def _reset_game_record(self) -> None:
try:
dir_path = _ba.get_replays_dir();curFilePath = os.path.join(dir_path+os.sep,"__lastReplay.brp").encode(SystemEncode)
newFileName = str(ba.Lstr(resource="replayNameDefaultText").evaluate()+" (%s)"%(datetime.datetime.strftime(datetime.datetime.now(),"%Y_%m_%d_%H_%M_%S"))+".brp")
dir_path = _ba.get_replays_dir()
curFilePath = os.path.join(dir_path+os.sep, "__lastReplay.brp").encode(SystemEncode)
newFileName = str(ba.Lstr(resource="replayNameDefaultText").evaluate(
)+" (%s)" % (datetime.datetime.strftime(datetime.datetime.now(), "%Y_%m_%d_%H_%M_%S"))+".brp")
newFilePath = os.path.join(dir_path+os.sep, newFileName).encode(SystemEncode)
#print(curFilePath, newFilePath)
# os.rename(curFilePath,newFilePath)
shutil.copyfile(curFilePath, newFilePath)
_ba.reset_game_activity_tracking()
ba.screenmessage(_getTransText("Game_Record_Saved") % newFileName, color=(1, 1, 1))
except:ba.print_exception();ba.screenmessage(ba.Lstr(resource="replayWriteErrorText").evaluate()+"\
"+traceback.format_exc(),color = (1,0,0))
except:
ba.print_exception()
ba.screenmessage(ba.Lstr(resource="replayWriteErrorText").evaluate() +
""+traceback.format_exc(), color=(1, 0, 0))
def _on_menu_button_press(self) -> None:
is_muted = ba.app.config.resolve('Chat Muted')
global chatlogger
choices = ["unmute" if is_muted else "mute","screenmsg","addQuickReply","removeQuickReply","chatlogger","credits"]
choices = ["unmute" if is_muted else "mute", "screenmsg",
"addQuickReply", "removeQuickReply", "chatlogger", "credits"]
DisChoices = [_getTransText("unmuteall", isBaLstr=True) if is_muted else _getTransText("muteall", isBaLstr=True),
_getTransText("screenmsgoff",isBaLstr = True) if screenmsg else _getTransText("screenmsgon",isBaLstr = True),
_getTransText("screenmsgoff", isBaLstr=True) if screenmsg else _getTransText(
"screenmsgon", isBaLstr=True),
_getTransText("Add_a_Quick_Reply", isBaLstr=True),
_getTransText("Remove_a_Quick_Reply", isBaLstr=True),
_getTransText("chatloggeroff",isBaLstr = True) if chatlogger else _getTransText("chatloggeron",isBaLstr = True),
_getTransText("chatloggeroff", isBaLstr=True) if chatlogger else _getTransText(
"chatloggeron", isBaLstr=True),
_getTransText("Credits_for_This", isBaLstr=True)
]
if len(tranTypes) > 0:
choices.append("translator");DisChoices.append(_getTransText("Translator",isBaLstr = True))
choices.append("translator")
DisChoices.append(_getTransText("Translator", isBaLstr=True))
choices.append("resetGameRecord")
DisChoices.append(_getTransText("Restart_Game_Record", isBaLstr=True))
if self._getCustomSets().get("Enable_HostInfo_Debug", False):
choices.append("hostInfo_Debug");DisChoices.append(_getTransText("Debug_for_Host_Info",isBaLstr = True))
choices.append("hostInfo_Debug")
DisChoices.append(_getTransText("Debug_for_Host_Info", isBaLstr=True))
PopupMenuWindow(
position=self._menu_button.get_screen_space_center(),
@ -842,12 +878,14 @@ class ModifiedPartyWindow(bastd_party.PartyWindow):
choices_display=DisChoices,
current_choice="unmute" if is_muted else "mute", delegate=self)
self._popup_type = "menu"
def _on_party_member_press(self, client_id: int, is_host: bool,
widget: ba.Widget) -> None:
# if we"re the host, pop up "kick" options for all non-host members
if _ba.get_foreground_host_session() is not None:
kick_str = ba.Lstr(resource="kickText")
else:kick_str = ba.Lstr(resource="kickVoteText")
else:
kick_str = ba.Lstr(resource="kickVoteText")
choices = ["kick", "@ this guy", "info", "adminkick"]
choices_display = [kick_str, _getTransText("Mention_this_guy", isBaLstr=True), ba.Lstr(resource="??Unknown??", fallback_value="Info"),
@ -855,10 +893,10 @@ class ModifiedPartyWindow(bastd_party.PartyWindow):
try:
if len(self._getCustomSets().get("partyMemberPress_Custom") if isinstance(self._getCustomSets().get("partyMemberPress_Custom"), dict) else {}) > 0:
choices.append("customAction");choices_display.append(_getTransText("Custom_Action",isBaLstr = True))
except:ba.print_exception()
choices.append("customAction")
choices_display.append(_getTransText("Custom_Action", isBaLstr=True))
except:
ba.print_exception()
PopupMenuWindow(position=widget.get_screen_space_center(),
scale=_get_popup_window_scale(),
@ -970,8 +1008,10 @@ class ModifiedPartyWindow(bastd_party.PartyWindow):
# else:
# _ba.chatmessage(sendtext)
# ba.textwidget(edit=self._text_field,text="")
def _get_quick_responds(self):
if not hasattr(self,"_caches") or not isinstance(self._caches,dict):self._caches = {}
if not hasattr(self, "_caches") or not isinstance(self._caches, dict):
self._caches = {}
try:
filePath = os.path.join(RecordFilesDir, "Quickmessage.txt")
@ -991,19 +1031,29 @@ class ModifiedPartyWindow(bastd_party.PartyWindow):
self._caches["quickReplys"] = (Text).split("\\n")
self._caches["Vertify_Quickresponse_Text"] = os.path.getmtime(filePath)
return (self._caches.get("quickReplys", []))
except:ba.print_exception();ba.screenmessage(ba.Lstr(resource="errorText"),(1,0,0));ba.playsound(ba.getsound("error"))
except:
ba.print_exception()
ba.screenmessage(ba.Lstr(resource="errorText"), (1, 0, 0))
ba.playsound(ba.getsound("error"))
def _write_quick_responds(self, data):
try:
with open(os.path.join(RecordFilesDir, "Quickmessage.txt"), "wb") as writer:
writer.write("\\n".join(data).encode("utf-8"))
except:ba.print_exception();ba.screenmessage(ba.Lstr(resource="errorText"),(1,0,0));ba.playsound(ba.getsound("error"))
except:
ba.print_exception()
ba.screenmessage(ba.Lstr(resource="errorText"), (1, 0, 0))
ba.playsound(ba.getsound("error"))
def _getCustomSets(self):
try:
if not hasattr(self,"_caches") or not isinstance(self._caches,dict):self._caches = {}
if not hasattr(self, "_caches") or not isinstance(self._caches, dict):
self._caches = {}
try:
from VirtualHost import MainSettings
if MainSettings.get("Custom_PartyWindow_Sets", {}) != self._caches.get("PartyWindow_Sets", {}):
self._caches["PartyWindow_Sets"] = MainSettings.get("Custom_PartyWindow_Sets",{})
self._caches["PartyWindow_Sets"] = MainSettings.get(
"Custom_PartyWindow_Sets", {})
except:
try:
filePath = os.path.join(RecordFilesDir, "Settings.json")
@ -1013,50 +1063,80 @@ class ModifiedPartyWindow(bastd_party.PartyWindow):
Text = Reader.read()
if Text.startswith(str(codecs.BOM_UTF8)):
Text = Text[3:]
self._caches["PartyWindow_Sets"] = json.loads(Text.decode("utf-8")).get("Custom_PartyWindow_Sets",{})
self._caches["Vertify_MainSettings.json_Text"] = os.path.getmtime(filePath)
except:ba.print_exception()
self._caches["PartyWindow_Sets"] = json.loads(
Text.decode("utf-8")).get("Custom_PartyWindow_Sets", {})
self._caches["Vertify_MainSettings.json_Text"] = os.path.getmtime(
filePath)
except:
ba.print_exception()
return (self._caches.get("PartyWindow_Sets") if isinstance(self._caches.get("PartyWindow_Sets"), dict) else {})
except:ba.print_exception()
except:
ba.print_exception()
def _getObjectByID(self, type="playerName", ID=None):
if ID is None:ID = self._popup_party_member_client_id
type = type.lower();output = []
if ID is None:
ID = self._popup_party_member_client_id
type = type.lower()
output = []
for roster in self._roster:
if type.startswith("all"):
if type in ("roster","fullrecord"):output += [roster]
if type in ("roster", "fullrecord"):
output += [roster]
elif type.find("player") != -1 and roster["players"] != []:
if type.find("namefull") != -1:output += [(i["name_full"]) for i in roster["players"]]
elif type.find("name") != -1:output += [(i["name"]) for i in roster["players"]]
elif type.find("playerid") != -1:output += [i["id"] for i in roster["players"]]
elif type.lower() in ("account","displaystring"):output += [(roster["display_string"])]
if type.find("namefull") != -1:
output += [(i["name_full"]) for i in roster["players"]]
elif type.find("name") != -1:
output += [(i["name"]) for i in roster["players"]]
elif type.find("playerid") != -1:
output += [i["id"] for i in roster["players"]]
elif type.lower() in ("account", "displaystring"):
output += [(roster["display_string"])]
elif roster["client_id"] == ID and not type.startswith("all"):
try:
if type in ("roster","fullrecord"):return(roster)
if type in ("roster", "fullrecord"):
return (roster)
elif type.find("player") != -1 and roster["players"] != []:
if len(roster["players"]) == 1 or type.find("singleplayer") != -1:
if type.find("namefull") != -1:return((roster["players"][0]["name_full"]))
elif type.find("name") != -1:return((roster["players"][0]["name"]))
elif type.find("playerid") != -1:return(roster["players"][0]["id"])
if type.find("namefull") != -1:
return ((roster["players"][0]["name_full"]))
elif type.find("name") != -1:
return ((roster["players"][0]["name"]))
elif type.find("playerid") != -1:
return (roster["players"][0]["id"])
else:
if type.find("namefull") != -1:return([(i["name_full"]) for i in roster["players"]])
elif type.find("name") != -1:return([(i["name"]) for i in roster["players"]])
elif type.find("playerid") != -1:return([i["id"] for i in roster["players"]])
elif type.lower() in ("account","displaystring"):return((roster["display_string"]))
except:ba.print_exception()
if type.find("namefull") != -1:
return ([(i["name_full"]) for i in roster["players"]])
elif type.find("name") != -1:
return ([(i["name"]) for i in roster["players"]])
elif type.find("playerid") != -1:
return ([i["id"] for i in roster["players"]])
elif type.lower() in ("account", "displaystring"):
return ((roster["display_string"]))
except:
ba.print_exception()
return (None if len(output) == 0 else output)
def _edit_text_msg_box(self, text, type="rewrite"):
if not isinstance(type,str) or not isinstance(text,str):return
type = type.lower();text = (text)
if type.find("add") != -1:ba.textwidget(edit=self._text_field,text=ba.textwidget(query=self._text_field)+text)
else:ba.textwidget(edit=self._text_field,text=text)
def _send_admin_kick_command(self):_ba.chatmessage("/kick " + str(self._popup_party_member_client_id))
if not isinstance(type, str) or not isinstance(text, str):
return
type = type.lower()
text = (text)
if type.find("add") != -1:
ba.textwidget(edit=self._text_field, text=ba.textwidget(query=self._text_field)+text)
else:
ba.textwidget(edit=self._text_field, text=text)
def _send_admin_kick_command(self): _ba.chatmessage(
"/kick " + str(self._popup_party_member_client_id))
def new_input_window_callback(self, got_text, flag, code):
if got_text:
if flag.startswith("Host_Kick_Player:"):
try:
result = _ba.disconnect_client(self._popup_party_member_client_id, ban_time=int(code))
result = _ba.disconnect_client(
self._popup_party_member_client_id, ban_time=int(code))
if not result:
ba.playsound(ba.getsound('error'))
ba.screenmessage(
@ -1066,7 +1146,6 @@ class ModifiedPartyWindow(bastd_party.PartyWindow):
ba.playsound(ba.getsound('error'))
print(traceback.format_exc())
def _kick_selected_player(self):
"""
result = _ba._disconnectClient(self._popup_party_member_client_id,banTime)
@ -1082,7 +1161,8 @@ class ModifiedPartyWindow(bastd_party.PartyWindow):
PopupMenuWindow(position=self.get_root_widget().get_screen_space_center(),
scale=_get_popup_window_scale(),
choices=[str(item) for item in choices],
choices_display=_creat_Lstr_list([_getTransText("Ban_For_%d_Seconds")%item for item in choices]),
choices_display=_creat_Lstr_list(
[_getTransText("Ban_For_%d_Seconds") % item for item in choices]),
current_choice="Share_Server_Info",
delegate=self)
"""
@ -1101,7 +1181,8 @@ class ModifiedPartyWindow(bastd_party.PartyWindow):
else:
# Ban for 5 minutes.
result = _ba.disconnect_client(self._popup_party_member_client_id, ban_time=5 * 60)
result = _ba.disconnect_client(
self._popup_party_member_client_id, ban_time=5 * 60)
if not result:
ba.playsound(ba.getsound('error'))
ba.screenmessage(
@ -1118,6 +1199,7 @@ class ModifiedPartyWindow(bastd_party.PartyWindow):
import random
url = ['https://discord.gg/CbxhJTrRta', 'https://discord.gg/ucyaesh']
ba.open_url(url[random.randint(0, 1)])
def _update(self) -> None:
# pylint: disable=too-many-locals
# pylint: disable=too-many-branches
@ -1208,7 +1290,6 @@ class ModifiedPartyWindow(bastd_party.PartyWindow):
p_str = self._roster[index][
'display_string']
except Exception:
ba.print_exception(
'Error calcing client name str.')
@ -1292,6 +1373,7 @@ class ModifiedPartyWindow(bastd_party.PartyWindow):
position=(30, 80))
except Exception:
pass
def hide_screen_msg(self):
file = open('ba_data/data/languages/english.json')
eng = json.loads(file.read())
@ -1346,7 +1428,8 @@ class ModifiedPartyWindow(bastd_party.PartyWindow):
color=(1, 0, 0))
elif self._popup_type == "send_Times_Press":
self._send_msg_times = int(choice)
ba.buttonwidget(edit = self._times_button,label="%s:%d"%(_getTransText("Times"),getattr(self,"_send_msg_times",1)))
ba.buttonwidget(edit=self._times_button, label="%s:%d" %
(_getTransText("Times"), getattr(self, "_send_msg_times", 1)))
elif self._popup_type == "chatmessagepress":
if choice == "mute":
@ -1355,7 +1438,6 @@ class ModifiedPartyWindow(bastd_party.PartyWindow):
if choice == "unmute":
unmuted_names.append(self.msg_user_selected)
elif self._popup_type == "partyMemberPress":
if choice == "kick":
ConfirmWindow(text=_getTransText("Normal_kick_confirm") % self._getObjectByID("account"),
@ -1377,19 +1459,23 @@ class ModifiedPartyWindow(bastd_party.PartyWindow):
origin_widget=self.get_root_widget())
elif choice == "@ this guy":
ChoiceDis = [];NewChoices = []
ChoiceDis = []
NewChoices = []
account = self._getObjectByID("account")
ChoiceDis.append(account)
temp = self._getObjectByID("playerNameFull")
if temp is not None:
if isinstance(temp,str) and temp not in ChoiceDis:ChoiceDis.append(temp)
if isinstance(temp, str) and temp not in ChoiceDis:
ChoiceDis.append(temp)
elif isinstance(temp, (list, tuple)):
for item in temp:
if isinstance(item,str) and item not in ChoiceDis:ChoiceDis.append(item)
if isinstance(item, str) and item not in ChoiceDis:
ChoiceDis.append(item)
# print("r\\""
for item in ChoiceDis:
NewChoices.append(u"self._edit_text_msg_box('%s','add')"%(item.replace("'",r"'").replace('"',r'\\"')))
NewChoices.append(u"self._edit_text_msg_box('%s','add')" %
(item.replace("'", r"'").replace('"', r'\\"')))
else:
nick = self._get_nick(account)
@ -1404,10 +1490,13 @@ class ModifiedPartyWindow(bastd_party.PartyWindow):
self._popup_type = "Custom_Exec_Choice"
elif choice == "customAction":
customActionSets = self._getCustomSets()
customActionSets = customActionSets.get("partyMemberPress_Custom") if isinstance(customActionSets.get("partyMemberPress_Custom"),dict) else {}
ChoiceDis = [];NewChoices = []
customActionSets = customActionSets.get("partyMemberPress_Custom") if isinstance(
customActionSets.get("partyMemberPress_Custom"), dict) else {}
ChoiceDis = []
NewChoices = []
for key, item in customActionSets.items():
ChoiceDis.append(key);NewChoices.append(item)
ChoiceDis.append(key)
NewChoices.append(item)
if len(ChoiceDis) > 0:
p = PopupMenuWindow(position=popup_window.root_widget.get_screen_space_center(),
scale=_get_popup_window_scale(),
@ -1416,7 +1505,10 @@ class ModifiedPartyWindow(bastd_party.PartyWindow):
current_choice=NewChoices[0],
delegate=self)
self._popup_type = "customAction_partyMemberPress"
else:ba.playsound(ba.getsound("error"));ba.screenmessage(ba.Lstr(resource="getTicketsWindow.unavailableText"),color=(1,0,0))
else:
ba.playsound(ba.getsound("error"))
ba.screenmessage(
ba.Lstr(resource="getTicketsWindow.unavailableText"), color=(1, 0, 0))
elif self._popup_type == "menu":
if choice in ("mute", "unmute"):
cfg = ba.app.config
@ -1456,9 +1548,11 @@ class ModifiedPartyWindow(bastd_party.PartyWindow):
data = self._get_quick_responds()
data.append(newReply)
self._write_quick_responds(data)
ba.screenmessage(_getTransText("Something_is_added")%newReply,color=(0,1,0))
ba.screenmessage(_getTransText("Something_is_added") %
newReply, color=(0, 1, 0))
ba.playsound(ba.getsound("dingSmallHigh"))
except:ba.print_exception()
except:
ba.print_exception()
elif choice == "removeQuickReply":
Quickreply = self._get_quick_responds()
PopupMenuWindow(position=self._text_field.get_screen_space_center(),
@ -1473,7 +1567,8 @@ class ModifiedPartyWindow(bastd_party.PartyWindow):
# print(_ba.get_connection_to_host_info(),type(_ba.get_connection_to_host_info()))
ChoiceDis = list(_ba.get_connection_to_host_info().keys())
NewChoices = ["ba.screenmessage(str(_ba.get_connection_to_host_info().get('%s')))"%((str(i)).replace("'",r"'").replace('"',r'\\"')) for i in ChoiceDis]
NewChoices = ["ba.screenmessage(str(_ba.get_connection_to_host_info().get('%s')))" % (
(str(i)).replace("'", r"'").replace('"', r'\\"')) for i in ChoiceDis]
PopupMenuWindow(position=popup_window.root_widget.get_screen_space_center(),
scale=_get_popup_window_scale(),
choices=NewChoices,
@ -1482,7 +1577,10 @@ class ModifiedPartyWindow(bastd_party.PartyWindow):
delegate=self)
self._popup_type = "Custom_Exec_Choice"
else:ba.playsound(ba.getsound("error"));ba.screenmessage(ba.Lstr(resource="getTicketsWindow.unavailableText"),color=(1,0,0))
else:
ba.playsound(ba.getsound("error"))
ba.screenmessage(
ba.Lstr(resource="getTicketsWindow.unavailableText"), color=(1, 0, 0))
elif choice == "translator":
chats = _ba._getChatMessages()
if len(chats) > 0:
@ -1494,7 +1592,10 @@ class ModifiedPartyWindow(bastd_party.PartyWindow):
current_choice=choices[0],
delegate=self)
self._popup_type = "translator_Press"
else:ba.playsound(ba.getsound("error"));ba.screenmessage(ba.Lstr(resource="getTicketsWindow.unavailableText"),color=(1,0,0))
else:
ba.playsound(ba.getsound("error"))
ba.screenmessage(
ba.Lstr(resource="getTicketsWindow.unavailableText"), color=(1, 0, 0))
elif choice == "resetGameRecord":
ConfirmWindow(text=_getTransText("Restart_Game_Record_Confirm"),
action=self._reset_game_record, cancel_button=True, cancel_is_selected=True,
@ -1503,9 +1604,11 @@ class ModifiedPartyWindow(bastd_party.PartyWindow):
elif self._popup_type == "translator_Press":
if len(tranTypes) == 1:
exec("start_new_thread(OnlineTranslator.%s,(u'%s',))"%(tranTypes[0],choice.replace("'",r"'").replace('"',r'\\"')))
exec("start_new_thread(OnlineTranslator.%s,(u'%s',))" %
(tranTypes[0], choice.replace("'", r"'").replace('"', r'\\"')))
elif len(tranTypes) > 1:
choices = ["start_new_thread(OnlineTranslator.%s,(u'%s',))"%(item,choice.replace("'",r"'").replace('"',r'\\"')) for item in tranTypes]
choices = ["start_new_thread(OnlineTranslator.%s,(u'%s',))" % (
item, choice.replace("'", r"'").replace('"', r'\\"')) for item in tranTypes]
PopupMenuWindow(position=popup_window.root_widget.get_screen_space_center(),
scale=_get_popup_window_scale(),
@ -1514,25 +1617,34 @@ class ModifiedPartyWindow(bastd_party.PartyWindow):
current_choice=choices[0],
delegate=self)
self._popup_type = "Custom_Exec_Choice"
else:ba.playsound(ba.getsound("error"));ba.screenmessage(ba.Lstr(resource="getTicketsWindow.unavailableText"),color=(1,0,0))
else:
ba.playsound(ba.getsound("error"))
ba.screenmessage(
ba.Lstr(resource="getTicketsWindow.unavailableText"), color=(1, 0, 0))
elif self._popup_type == "customAction_partyMemberPress":
try:
keyReplaceValue = (r"{$PlayerNameFull}",r"{$PlayerName}",r"{$PlayerID}",r"{$AccountInfo}",r"{$AllPlayerName}",r"{$AllPlayerNameFull}")
pos = None;curKeyWord = None
keyReplaceValue = (r"{$PlayerNameFull}", r"{$PlayerName}", r"{$PlayerID}",
r"{$AccountInfo}", r"{$AllPlayerName}", r"{$AllPlayerNameFull}")
pos = None
curKeyWord = None
for keyWord in keyReplaceValue:
CurPos = choice.find(keyWord)
if CurPos != -1 and (pos is None or CurPos < pos):
pos = CurPos;curKeyWord = keyWord
pos = CurPos
curKeyWord = keyWord
if isinstance(pos, int) and isinstance(curKeyWord, str):
if curKeyWord in (r"{$PlayerNameFull}", r"{$PlayerName}", r"{$AllPlayerName}", r"{$AllPlayerNameFull}"):
# if choice.count(curKeyWord) != 0:
playerName = self._getObjectByID(curKeyWord.replace("{$","").replace("}",""))
playerName = self._getObjectByID(
curKeyWord.replace("{$", "").replace("}", ""))
if isinstance(playerName, (list, tuple)):
ChoiceDis = [];NewChoices = []
ChoiceDis = []
NewChoices = []
for i in playerName:
ChoiceDis.append(i)
NewChoices.append(choice.replace(curKeyWord,(i.replace("'",r"'").replace('"',r'\\"')),1))
NewChoices.append(choice.replace(
curKeyWord, (i.replace("'", r"'").replace('"', r'\\"')), 1))
p = PopupMenuWindow(position=popup_window.root_widget.get_screen_space_center(),
scale=_get_popup_window_scale(),
choices=NewChoices,
@ -1541,16 +1653,22 @@ class ModifiedPartyWindow(bastd_party.PartyWindow):
delegate=self)
self._popup_type = "customAction_partyMemberPress"
elif isinstance(playerName, str):
self.popup_menu_selected_choice(popup_window,choice.replace(curKeyWord,(playerName.replace("'",r"'").replace('"',r'\\"')),1))
else:ba.screenmessage(_getTransText("No_valid_player_found"),(1,0,0));ba.playsound(ba.getsound("error"))
self.popup_menu_selected_choice(popup_window, choice.replace(
curKeyWord, (playerName.replace("'", r"'").replace('"', r'\\"')), 1))
else:
ba.screenmessage(_getTransText("No_valid_player_found"), (1, 0, 0))
ba.playsound(ba.getsound("error"))
elif curKeyWord in (r"{$PlayerID}",) != 0:
playerID = self._getObjectByID("PlayerID")
playerName = self._getObjectByID("PlayerName")
# print(playerID,playerName)
if isinstance(playerID, (list, tuple)) and isinstance(playerName, (list, tuple)) and len(playerName) == len(playerID):
ChoiceDis = [];NewChoices = []
ChoiceDis = []
NewChoices = []
for i1, i2 in playerName, playerID:
ChoiceDis.append(i1);NewChoices.append(choice.replace(r"{$PlayerID}",str(i2).replace("'",r"'").replace('"',r'\\"')),1)
ChoiceDis.append(i1)
NewChoices.append(choice.replace(r"{$PlayerID}", str(
i2).replace("'", r"'").replace('"', r'\\"')), 1)
p = PopupMenuWindow(position=popup_window.root_widget.get_screen_space_center(),
scale=_get_popup_window_scale(),
choices=NewChoices,
@ -1559,12 +1677,18 @@ class ModifiedPartyWindow(bastd_party.PartyWindow):
delegate=self)
self._popup_type = "customAction_partyMemberPress"
elif isinstance(playerID, int):
self.popup_menu_selected_choice(popup_window,choice.replace(r"{$PlayerID}",str(playerID).replace("'",r"'").replace('"',r'\\"')))
else:ba.screenmessage(_getTransText("No_valid_player_id_found"),(1,0,0));ba.playsound(ba.getsound("error"))
self.popup_menu_selected_choice(popup_window, choice.replace(
r"{$PlayerID}", str(playerID).replace("'", r"'").replace('"', r'\\"')))
else:
ba.screenmessage(_getTransText("No_valid_player_id_found"), (1, 0, 0))
ba.playsound(ba.getsound("error"))
elif curKeyWord in (r"{$AccountInfo}",) != 0:
self.popup_menu_selected_choice(popup_window,choice.replace(r"{$AccountInfo}",(str(self._getObjectByID("roster"))).replace("'",r"'").replace('"',r'\\"'),1))
else:exec(choice)
except Exception as e:ba.screenmessage(repr(e),(1,0,0))
self.popup_menu_selected_choice(popup_window, choice.replace(
r"{$AccountInfo}", (str(self._getObjectByID("roster"))).replace("'", r"'").replace('"', r'\\"'), 1))
else:
exec(choice)
except Exception as e:
ba.screenmessage(repr(e), (1, 0, 0))
elif self._popup_type == "QuickMessageSelect":
# ba.textwidget(edit=self._text_field,text=self._get_quick_responds()[index])
self._edit_text_msg_box(choice, "add")
@ -1575,15 +1699,16 @@ class ModifiedPartyWindow(bastd_party.PartyWindow):
self._write_quick_responds(data)
ba.screenmessage(_getTransText("Something_is_removed") % choice, (1, 0, 0))
ba.playsound(ba.getsound("shieldDown"))
else:ba.screenmessage(ba.Lstr(resource="errorText"),(1,0,0));ba.playsound(ba.getsound("error"))
else:
ba.screenmessage(ba.Lstr(resource="errorText"), (1, 0, 0))
ba.playsound(ba.getsound("error"))
elif choice.startswith("custom_Exec_Choice_") or self._popup_type == "Custom_Exec_Choice":
exec(choice[len("custom_Exec_Choice_"):] if choice.startswith("custom_Exec_Choice_") else choice)
exec(choice[len("custom_Exec_Choice_"):]
if choice.startswith("custom_Exec_Choice_") else choice)
else:
print("unhandled popup type: "+str(self._popup_type))
import base64
from ba._general import Call
def fetchAccountInfo(account, loading_widget):
pbid = ""
account_data = []
@ -1596,16 +1721,17 @@ def fetchAccountInfo(account,loading_widget):
fdata = json.load(f)
if account in fdata:
servers = fdata[account]
data = urllib.request.urlopen(f'https://api.bombsquad.ga/player?key={base64.b64encode(account.encode("utf-8")).decode("utf-8")}&base64=true')
data = urllib.request.urlopen(
f'https://api.bombsquad.ga/player?key={base64.b64encode(account.encode("utf-8")).decode("utf-8")}&base64=true')
account_data = json.loads(data.read().decode('utf-8'))[0]
pbid = account_data["pbid"]
except:
pass
# _ba.pushcall(Call(updateAccountWindow,loading_widget,accounts[0]),from_other_thread=True)
_ba.pushcall(Call(CustomAccountViewerWindow,pbid,account_data,servers,loading_widget),from_other_thread =True)
_ba.pushcall(Call(CustomAccountViewerWindow, pbid, account_data,
servers, loading_widget), from_other_thread=True)
from bastd.ui.account import viewer
class CustomAccountViewerWindow(viewer.AccountViewerWindow):
def __init__(self, account_id, custom_data, servers, loading_widget):
@ -1617,9 +1743,11 @@ class CustomAccountViewerWindow(viewer.AccountViewerWindow):
self.custom_data = custom_data
self.pb_id = account_id
self.servers = servers
def _copy_pb(self):
ba.clipboard_set_text(self.pb_id)
ba.screenmessage(ba.Lstr(resource='gatherWindow.copyCodeConfirmText'))
def _on_query_response(self, data):
if data is None:
@ -1846,7 +1974,8 @@ class CustomAccountViewerWindow(viewer.AccountViewerWindow):
h_align='center',
v_align='center',
scale=0.55,
text=self.custom_data["discord"][0]["username"]+ ","+self.custom_data["discord"][0]["id"],
text=self.custom_data["discord"][0]["username"] +
","+self.custom_data["discord"][0]["id"],
maxwidth=sub_width * maxwidth_scale)
v -= 26
ba.textwidget(parent=self._subcontainer,
@ -2043,9 +2172,12 @@ class CustomAccountViewerWindow(viewer.AccountViewerWindow):
ba.print_exception('Error displaying account info.')
# ba_meta export plugin
class bySmoothy(ba.Plugin):
def __init__(self):
if _ba.env().get("build_number", 0) >= 20577:
_ba.connect_to_party = newconnect_to_party
bastd_party.PartyWindow = ModifiedPartyWindow
else:print("AdvancePartyWindow only runs with BombSquad version equal or higher than 1.7")
else:
print("AdvancePartyWindow only runs with BombSquad version equal or higher than 1.7")

View file

@ -31,6 +31,8 @@ server=[]
ip_add = "private"
p_port = 44444
p_name = "nothing here"
def newconnect_to_party(address, port=43210, print_progress=False):
global ip_add
global p_port
@ -43,11 +45,12 @@ def newconnect_to_party(address,port=43210,print_progress=False):
connect(address, port, print_progress)
else:
ip_add = address
p_port = port
# print(ip_add,p_port)
connect(ip_add, port, print_progress)
def newdisconnect_from_host():
try:
name = _ba.get_connection_to_host_info()['name']
@ -62,8 +65,11 @@ def newdisconnect_from_host():
pass
disconnect()
def printip():
ba.screenmessage("ip address is"+ip_add)
def new_refresh_in_game(
self, positions: List[Tuple[float, float,
float]]) -> Tuple[float, float, float]:
@ -126,6 +132,7 @@ def new_refresh_in_game(
v_h = v
global server
def con(address, port):
global ip_add
global p_port
@ -245,6 +252,8 @@ def new_refresh_in_game(
scale=0.45,
maxwidth=self._button_width * 0.9)
return h, v, scale
def new_refresh(self) -> None:
# pylint: disable=too-many-branches
# pylint: disable=too-many-locals
@ -284,7 +293,6 @@ def new_refresh(self) -> None:
input_device.is_connected_to_remote_player()
if input_device else False)
positions: List[Tuple[float, float, float]] = []
self._p_index = 0
@ -552,10 +560,13 @@ def new_refresh(self) -> None:
scale=3.0 * t_scale)
# ba_meta export plugin
class bySmoothy(ba.Plugin):
def __init__(self):
if _ba.env().get("build_number", 0) >= 20577:
bastd_ui_mainmenu.MainMenuWindow._refresh_in_game = new_refresh_in_game
_ba.connect_to_party = newconnect_to_party
_ba.disconnect_from_host = newdisconnect_from_host
else:print("Server Switch only works on bs 1.7 and above")
else:
print("Server Switch only works on bs 1.7 and above")