forked from ReScrap/ScrapHacks
Daniel Seiller
0461764566
Added more functions to DLL Simplified Injector Added Screenshot Added some more functions to dbg.py module
357 lines
8.1 KiB
Python
357 lines
8.1 KiB
Python
import sys
|
|
import Scrap
|
|
import quickconsole
|
|
import MissionsFuncs
|
|
import SScorer
|
|
import Menu
|
|
import sys
|
|
QC = quickconsole
|
|
MF = MissionsFuncs
|
|
last_frame = None
|
|
|
|
sys.path.append(".\\pylib\\Lib")
|
|
sys.path.append(".\\pylib\\Libs")
|
|
sys.path.append(".\\pylib")
|
|
|
|
|
|
def reload():
|
|
sys.settrace(None)
|
|
sys.modules['__builtin__'].reload(sys.modules['dbg'])
|
|
|
|
|
|
def dgb_info():
|
|
SScorer.SetLabelText(`last_frame`, Scrap.GetTime() + 0.1)
|
|
Scrap.DeleteScheduledFuncs("dbg.dbg_info")
|
|
Scrap.DeleteScheduledFuncs("dbg.dbg_info")
|
|
Scrap.AddScheduledFunc(Scrap.GetTime()+0.1, dgb_info, (), "dbg.dbg_info")
|
|
|
|
|
|
def crazy():
|
|
E = Scrap.GetFirst()
|
|
me = Scrap.UsrEntity(0)
|
|
while E:
|
|
if E.Name == me.Name:
|
|
E = Scrap.GetEntity(E.NextInSlot)
|
|
try:
|
|
E.Action = "CrazyInit"
|
|
E.CanPhoto = 1
|
|
E.DefLoop = "Crazy"
|
|
except:
|
|
pass
|
|
E = Scrap.GetEntity(E.NextInSlot)
|
|
|
|
|
|
def decrazy():
|
|
E = Scrap.GetFirst()
|
|
me = Scrap.UsrEntity(0)
|
|
while E:
|
|
if E.Name == me.Name:
|
|
E = Scrap.GetEntity(E.NextInSlot)
|
|
try:
|
|
E.Action = "CrazyEnd"
|
|
E.CanPhoto = 0
|
|
E.ForceDefLoop = "Relax"
|
|
except:
|
|
pass
|
|
E = Scrap.GetEntity(E.NextInSlot)
|
|
|
|
|
|
def p_s(*args):
|
|
msg = ""
|
|
for obj in args:
|
|
if msg:
|
|
msg = msg+" "+str(obj)
|
|
else:
|
|
msg = msg+str(obj)
|
|
Scrap.Print(msg)
|
|
|
|
|
|
def p_e(*args):
|
|
msg = ""
|
|
for obj in args:
|
|
if msg:
|
|
msg = msg+" "+str(obj)
|
|
else:
|
|
msg = msg+str(obj)
|
|
Scrap.ConsoleError(msg)
|
|
|
|
|
|
sys.stdout.write = p_s
|
|
sys.stderr.write = p_e
|
|
|
|
|
|
def p(*args):
|
|
msg = ""
|
|
for obj in args:
|
|
if msg:
|
|
msg = msg+" "+str(obj)
|
|
else:
|
|
msg = msg+str(obj)
|
|
Scrap.Print(msg+"\n")
|
|
|
|
|
|
def e(*args):
|
|
msg = ""
|
|
for obj in args:
|
|
if msg:
|
|
msg = msg+" "+str(obj)
|
|
else:
|
|
msg = msg+str(obj)
|
|
Scrap.ConsoleError(msg+"\n")
|
|
|
|
|
|
# sys.modules['__builtin__'].__dict__['print']=e
|
|
sys.modules['__builtin__'].__dict__['s_write'] = p
|
|
sys.modules['__builtin__'].__dict__['e_write'] = e
|
|
|
|
|
|
def modhelp(Module="Scrap"):
|
|
print "======== [ " + Module + " ] ========"
|
|
exec("import "+Module)
|
|
for v in dir(eval(Module)):
|
|
if v in ("__doc__", "__name__"):
|
|
continue
|
|
print v + ":"
|
|
try:
|
|
print " " + eval(Module + "." + v + ".__doc__")
|
|
except:
|
|
pass
|
|
|
|
|
|
def helpfunc(func):
|
|
print func.__name__+":"
|
|
print " "+func.__doc__
|
|
|
|
|
|
def trace(frame, event, arg):
|
|
global last_frame
|
|
if event != "call":
|
|
return
|
|
g = frame.f_globals
|
|
l = frame.f_locals
|
|
if frame.f_code.co_name == "godcall":
|
|
return
|
|
if frame.f_code.co_filename == ".\\lib\\dbg.py":
|
|
return
|
|
R = frame.f_code.co_filename+": "+frame.f_code.co_name+"("
|
|
for i in range(frame.f_code.co_argcount):
|
|
name = frame.f_code.co_varnames[i]
|
|
R = R+name+"="+repr(frame.f_locals[name])+","
|
|
R = R+") Consts: ["
|
|
for const in frame.f_code.co_consts:
|
|
R = R+repr(const)+","
|
|
R = R+"]"
|
|
print R, "Locals:", l, "Globals:", g
|
|
last_frame = R
|
|
return trace
|
|
|
|
|
|
def menu():
|
|
import Menu
|
|
Menu.DebugMenu(1, '')
|
|
Menu.InitMenuSys(1)
|
|
|
|
|
|
def settrace():
|
|
sys.settrace(trace)
|
|
|
|
|
|
def notrace():
|
|
sys.settrace(None)
|
|
|
|
|
|
def log(*args):
|
|
if not args:
|
|
open(logfile_name, "w").close()
|
|
return
|
|
msg = ""
|
|
for obj in args:
|
|
if msg:
|
|
msg = msg+" "+str(obj)
|
|
else:
|
|
msg = msg+str(obj)
|
|
open(logfile_name, "a").write(msg+"\n")
|
|
|
|
|
|
def helplib():
|
|
global logfile_name
|
|
print "Generating helplib.txt"
|
|
logfile_name = "helplib.txt"
|
|
log()
|
|
for modname, mod in sys.modules.items():
|
|
if hasattr(mod, '__file__'):
|
|
continue
|
|
log("======== [ "+modname+" ] ========")
|
|
for name, value in vars(mod).items():
|
|
if name in ("__doc__", "__name__"):
|
|
continue
|
|
if hasattr(value, "__doc__"):
|
|
if value.__doc__:
|
|
log("- "+name+":"+repr(value))
|
|
log(" "+value.__doc__)
|
|
else:
|
|
log("- "+name+":"+repr(value))
|
|
else:
|
|
log("- "+name+": "+repr(value))
|
|
log("\n")
|
|
logfile_name = None
|
|
print "Done!"
|
|
|
|
|
|
def enable_all_conv():
|
|
try:
|
|
import CharConversor
|
|
except ImportError:
|
|
print("CharConversor not available")
|
|
return
|
|
CharConversor.ConversionChars = list(CharConversor.ConversionChars)
|
|
E = Scrap.GetFirst()
|
|
while E:
|
|
try:
|
|
if E.ActCtrl not in CharConversor.ConversionChars:
|
|
CharConversor.ConversionChars.append(E.ActCtrl)
|
|
except:
|
|
E = Scrap.GetEntity(E.NextInSlot)
|
|
continue
|
|
E.Invulnerable = 0
|
|
E.Life = 100
|
|
E = Scrap.GetEntity(E.NextInSlot)
|
|
|
|
|
|
def goto(name=None):
|
|
if name == None:
|
|
name = MF.currentTarget
|
|
Scrap.UsrEntity(0).Pos = Scrap.GetEntity(name).Pos
|
|
|
|
|
|
def bring(name=None):
|
|
if name == None:
|
|
name = MF.currentTarget
|
|
Scrap.GetEntity(name).Pos = Scrap.UsrEntity(0).Pos
|
|
|
|
|
|
def nuke():
|
|
E = Scrap.GetFirst()
|
|
me = Scrap.UsrEntity(0)
|
|
while E:
|
|
if E.Name == me.Name:
|
|
E = Scrap.GetEntity(E.NextInSlot)
|
|
try:
|
|
E.Life = 0
|
|
E.Invulnerable = 0
|
|
except:
|
|
pass
|
|
E = Scrap.GetEntity(E.NextInSlot)
|
|
|
|
|
|
def become(name):
|
|
import CharConversor
|
|
enable_all_conv()
|
|
me = Scrap.UsrEntity(0)
|
|
ent = Scrap.GetEntity(name)
|
|
if ent:
|
|
CharConversor.Possession(me.Name, name)
|
|
else:
|
|
print "Entity not found"
|
|
|
|
|
|
StopMovie = 0
|
|
|
|
|
|
def movie(MovieName="Movie/Movie"):
|
|
global StopMovie
|
|
if LastTime == None:
|
|
Scrap.Set("PhysicalAspectRatio", 16.0/9.0)
|
|
LastTime = Scrap.GetTime()
|
|
StopMovie = 0
|
|
if StopMovie == 1:
|
|
return
|
|
Scrap.Set("DisableSkipSlot", 1)
|
|
Scrap.ProcessDVF(MovieName+".dvf", 0)
|
|
Scrap.ScreenShot(MovieName+"*")
|
|
NextTime = LastTime+1.0/25.0
|
|
Scrap.AddScheduledFunc(NextTime, movie, (Speed, MovieName, NextTime))
|
|
|
|
|
|
def find(filt="*"):
|
|
dummy = Scrap.StartDummySearch(filt, 1)
|
|
while dummy:
|
|
dummy = Scrap.NextDummySearch()
|
|
print dummy
|
|
|
|
|
|
def getall():
|
|
E = Scrap.GetFirst()
|
|
me = Scrap.UsrEntity(0)
|
|
while E:
|
|
try:
|
|
E.Pos = me.Pos
|
|
except:
|
|
pass
|
|
E = Scrap.GetEntity(E.NextInSlot)
|
|
|
|
|
|
def god(e=None):
|
|
if e == None:
|
|
e = Scrap.UsrEntity(0)
|
|
if e:
|
|
if e.IsType("Car"):
|
|
e.Ammo00 = SWeap.GetFAmmo(0, "Max")
|
|
e.Ammo01 = SWeap.GetFAmmo(1, "Max")
|
|
e.Ammo02 = SWeap.GetFAmmo(2, "Max")
|
|
e.Ammo03 = SWeap.GetFAmmo(3, "Max")
|
|
e.WeapList = "63,63,63,63,63,63,1"
|
|
e.MaxLife = e.MinLife
|
|
if e.Life > e.MaxLife:
|
|
e.Life = e.MaxLife
|
|
e.CMStamp = 0
|
|
e.FireStamp = 0
|
|
e.BoostTime = 0
|
|
elif e.IsType("WalkChar"):
|
|
e.Energy = 1
|
|
e.Invulnerable = 1
|
|
Scrap.DeleteScheduledFuncs("dbg.god")
|
|
Scrap.DeleteScheduledFuncs("dbg.god")
|
|
Scrap.AddScheduledFunc(Scrap.GetTime(), god, (e,), "dbg.god")
|
|
|
|
|
|
def ultranuke():
|
|
nuke()
|
|
Scrap.DeleteScheduledFuncs("dbg.ultranuke")
|
|
Scrap.DeleteScheduledFuncs("dbg.ultranuke")
|
|
Scrap.AddScheduledFunc(Scrap.GetTime(), ultranuke,
|
|
(), "dbg.ultranuke")
|
|
|
|
|
|
def brake():
|
|
if me:
|
|
me.Vel = (0, 0, 0)
|
|
|
|
|
|
for _ in range(1024):
|
|
Scrap.DeleteScheduledFuncs("dbg.dbg_info")
|
|
Scrap.DeleteScheduledFuncs("dbg.god")
|
|
Scrap.DeleteScheduledFuncs("dbg_info")
|
|
|
|
|
|
for module in sys.builtin_module_names:
|
|
if module[0] == "S":
|
|
print "Loading "+module
|
|
exec("import " + module)
|
|
|
|
sys.settrace(None)
|
|
|
|
me = Scrap.UsrEntity(0)
|
|
notrace()
|
|
helplib()
|
|
# settrace()
|
|
dgb_info()
|
|
enable_all_conv()
|
|
god()
|
|
Scrap.Set("debug", 3)
|
|
Scrap.Set("ShowConsoleLog", 1)
|
|
Scrap.Set("AlwaysFlushLog", 1)
|
|
Scrap.Set("PythonExecute", "import dbg")
|
|
exec("import QuickConsole;QuickConsole.debug=sys.modules['dbg']")
|
|
|
|
print "Debug Module loaded"
|