import sys import Scrap import quickconsole import MissionsFuncs QC=quickconsole MF=MissionsFuncs 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 for module in sys.builtin_module_names: if module[0]=="S": print "Loading "+module exec("import "+module) sys.settrace(None) def trace(frame,event,arg): if event!="call": return g=frame.f_globals l=frame.f_locals if frame.f_code.co_name=="godcall": 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+"]" log(R) return trace def menu(): import Menu Menu.DebugMenu(0,'') Menu.InitMenuSys(0) def settrace(): sys.settrace(trace) 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(): print "Generating helplib.txt" log() for modname,mod in sys.modules.items(): log("======== [ "+modname+" ] ========") for name,value in vars(mod).items(): if name in ("__doc__","__name__"): continue if hasattr(value,"__doc__"): if value.__doc__: log("- "+name+":") log(" "+value.__doc__) else: log("- "+name+": ???") else: log("- "+name+": "+repr(value)) log("\n") print "Done!" def enable_all_conv(): import CharConversor 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) print(len(CharConversor.ConversionChars)) print "Done!" 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): enable_all_conv() import CharConversor 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)) logfile_name="helplib.txt" helplib() logfile_name="dbg.txt" log() quickconsole.god() print "Godmode active"