From 1827e1193a8cf44e22ad53d517f82531dad4a397 Mon Sep 17 00:00:00 2001 From: Freaku17 <92618708+Freaku17@users.noreply.github.com> Date: Wed, 16 Mar 2022 08:57:34 +0530 Subject: [PATCH] Add files via upload --- Utilities/Terminal.py | 162 ++++++++++++++++++++++++++++-------------- 1 file changed, 109 insertions(+), 53 deletions(-) diff --git a/Utilities/Terminal.py b/Utilities/Terminal.py index 7dae7d4..5d2c35c 100644 --- a/Utilities/Terminal.py +++ b/Utilities/Terminal.py @@ -1,33 +1,57 @@ #Made by your friend: @[Just] Freak#4999 / Freaku -# Defines a simple plugin that allows you to see any errors of your mods (if present) in BombSquad/logging/logs.txt +# Defines a simple plugin that allows you to: +## See any errors of your mods (if present) in folder BombSquad/logging/logs.txt +## Get config contents +## Enable internal debugging +## Create/Delete sys # Note: Please perform the activities to log, if its a gamemode pls open and play it and then see logs. If its a window please touch buttons and then see logs. -# and so on according to the mod youre working... +# and so on according to the mod you're working... + + + + +# https://discord.gg/ucyaesh + +__author__ = "Freaku" +__version__ = 2 + +##### Goals for v3: ##### +# Focusing on universal platform modding (instead of just Android) +# Terminal UI +# Ability to get 2D/3D points for nodes like text or object positions (live via UI to adjust them) +# Creating mod environment with a click! +# Move the bottom index thingy somewhere in UI (or yeet it's existance 😨) + + ########## INDEX ########## ''' - Must READ - For beginners -- Fixing errors...''' +- Fixing errors... +''' # ----- MUST READ ----- ''' -# I hope you know Python and have seen Bombsquad's API, avaiable at +# I hope you know Python Programming Language and have seen Bombsquad's API, avaiable at # https://ballistica.net/wiki # else... its still fine :) +# Python is easiest language, hardly will take 1 week to learn (See YouTube tutorials) + # This mod is *genuinely* for Mobile Modders, # in PC you can directly get these Terminal Errors in console. # but sadly on mobile there's no way to view console. -# We can tho, by following GitHub's Android coding environment +# We can, by following GitHub's Android coding environment # https://github.com/efroemling/ballistica/wiki/Coding-Environment-(Android) # but it's long process, additionally around 500mb of data to download -# for Pydroid 3 and it's Pydroid's plugins... +# for Pydroid 3 and it's Pydroid's plugins... (not guaranteed to work properly) # This is helpful for new Modders (who don't use PC) # Also I'll ***HIGHLY*** suggest to not use this when other mods are installed # As a TONS of other mods includes errors (which aren't fixed) @@ -44,51 +68,27 @@ #AndroidModdersRock -# Btw I'll probably edit/add new things if you would like, I'm also currently learning Bombsquad modding stuffs!! ''' # ----- For beginners ----- ''' -# You should have Custom Scripts mod -# https://youtu.be/z4IvcyWQqsw -# and you should also view other mods file (if you don't have, you can get some mods from same channel) -# and a Code Editor app (on Play Store)''' +# Use create_sys / delete_sys in Plugins +# and a Code Editor app (on Play Store) +''' # ----- Fixing errors... ----- ''' # Incase you haven't ever seen console: # The logs.txt shows full stuff ... -# Like say you made a mod but in logs you'll see even file paths of in-game files. Example:''' +# Like say you made a mod but in logs you'll see entire file paths of in-game files. -'''ERROR: error adding level '' - root call: - context: - real-time: 1773 - sim-time: - base-time: - PRINTED-FROM: - File "ba_data/python/ba/_app.py", line 387, in on_app_launch - self.plugins.on_app_launch() - File "ba_data/python/ba/_plugin.py", line 35, in on_app_launch - plugin.on_app_launch() - File "/storage/emulated/0/BombSquad/MoreMinigames.py", line 1979, in on_app_launch - new_campaigns() - File "/storage/emulated/0/BombSquad/MoreMinigames.py", line 1945, in new_campaigns - print_exception("error adding level '"+str(level)+"'") - File "ba_data/python/ba/_error.py", line 155, in print_exception - stackstr = ''.join(traceback.format_stack()) - EXCEPTION: - Traceback (most recent call last): - File "/storage/emulated/0/BombSquad/MoreMinigames.py", line 1943, in new_campaigns - campaign.addlevel(level) - File "ba_data/python/ba/_campaign.py", line 49, in addlevel - raise RuntimeError('Level already belongs to a campaign.') - RuntimeError: Level already belongs to a campaign.''' - -''' # Over here you should ignore in-game files and just see Exception/Traceback (or the path where your mod file is named) # and bottom lines (to know what error is it exactly) +# Reason? Game is certainly completed so no matter what it wont have any error, the error causing is just your file. +# Traceback could look like: Game called a activity as said in this-this line of file, then Map was loaded by the activity, then Map tried to fetch spawn points, but spawn points have error (since you modified it) +''' + # Additionally, errors like # - Invalid Syntax (if you use code editor just press 3 dots and off word wrap, so you can scroll left/right so you can see the ^ arrow pointing correctly) This error is either cuz of some brackets opened but not closed or the other way around. Could also be if you put = instead of == # - Indentation error (this is related to spaces, Google can help/explain you in this...) @@ -98,39 +98,95 @@ # I would suggest this lovely discord server, # https://discord.gg/ucyaesh -# That's it UwU''' +# That's it UwU # + + # ba_meta require api 6 -import ba, _ba, os, pickle - +import _ba, ba, os folder = _ba.env()['python_directory_user'] + "/logging/" -file = folder + 'logs.txt' +log_copy = folder + 'logs.txt' +config_copy = folder + 'config.txt' def make_folder(): if not os.path.exists(folder): os.makedirs(folder) - if not os.path.exists(file): - with open(file, 'wb') as f: - pickle.dump({}, f) -def make_dirty_logs(logg): - f= open(file, "w+") - f.write(logg) - f.close() +def make_logs(content): + with open(log_copy, 'w+') as l: + l.write(content) + l.close() def log_it(): our_logs = _ba.getlog() if our_logs != "": - make_dirty_logs(our_logs) + make_logs(our_logs) else: - make_dirty_logs("🔥 Congratulations! No errors were found during this playing session!! 🔥") + make_logs("🔥 Congratulations! No errors were found during this playing session!! 🔥") + +def make_config(): + configs = _ba.app.config_file_path + config_contents = '' + with open(configs) as f: + config_contents = f.read() + with open(config_copy, 'w+') as e: + e.write(config_contents) + e.close() + +def internal_debug(): + """ + Eg. May show some error via screen msg even if try except is used. + Use only if you are going for really ADVANCED modding... + """ + setattr(_ba.app, '_debug_enabled', True) + +def make_sys(): + path = _ba.app.python_directory_user +'/sys/'+_ba.app.version + if not os.path.exists(path): + ba.modutils.create_user_system_scripts() + ba.screenmessage(f"Scripts created at {path}",color=(0, 1, 0)) + ba.screenmessage("Restart BombSquad to use them",color=(0, 1, 0)) + ba.app.config['Plugins'][__name__+'.create_sys']['enabled'] = False + ba.app.config.apply_and_commit() + else: ba.screenmessage('Cannot run '+__name__+'.create_sys\nScripts already exist :/',color=(1,0,0)) + +def yeet_sys(): + path = _ba.app.python_directory_user +'/sys/'+_ba.app.version + if os.path.exists(path): + ba.modutils.delete_user_system_scripts() + ba.screenmessage("Scripts deleted!",color=(1, 1, 0)) + ba.screenmessage("Restart BombSquad to use internal",color=(1, 1, 0)) + ba.app.config['Plugins'][__name__+'.delete_sys']['enabled'] = False + ba.app.config.apply_and_commit() + else: ba.screenmessage('Cannot run '+__name__+'.delete_sys\nNo Scripts exist :/',color=(1,0,0)) + # ba_meta export plugin -class seeINDEX_IN_thisFile(ba.Plugin): +class get_logs(ba.Plugin): def on_app_launch(self): make_folder() log_it() - self.update_logging = ba.timer(3, log_it, True) + ba.timer(1, log_it, repeat=True) + + +# ba_meta export plugin +class get_config(ba.Plugin): + def __init__(self): make_config() + + +# ba_meta export plugin +class live_debug(ba.Plugin): + def __init__(self): internal_debug() + + +# ba_meta export plugin +class create_sys(ba.Plugin): + def __init__(self): ba.timer(3, make_sys) + + +# ba_meta export plugin +class delete_sys(ba.Plugin): + def __init__(self): ba.timer(3.5, yeet_sys) \ No newline at end of file