func init // adds using namespace sys.add_use('CScriptEngine') // adds assembly sys.add_assembly('CSScriptLibrary', 'CSScriptLibrary.dll', 'assembly\\CSScript\\') sys.add_assembly('CSSCodeProvider', 'CSSCodeProvider.dll', 'assembly\\CSScript\\') sys.add_assembly('System.Linq', 'System.Linq.dll', 'assembly\\CSScript\\') sys.UseClass("CScript") // adds template file for C++ sys.file_copyto('' + code(packet_dir()) + 'assembly\\CSScript\\cpp.template', code(project_dir()) && 'cpp.template') // initialize instance sys.add_object(this.codename, 'CScript') // initialize script buffer sys.add_var('text', 2) blk_init.println(this.text, ' = ', this.props('Script').value, ';') // initialize properties //sys.set_typed_field(2, 'text', 'Script') // adds vars if(linked("doCScript") and linked("Result")) sys.add_var('obj', 'object') end sys.add_var('errors', 2) end func make_result(data) p = '' if(this.numdatas > 0) p = d("Arg1") for(i = 2; i <= this.numdatas; i++) dt = 'Arg' + i p = '' + p + ', ' + d(dt) end end return(this.codename && '.run("Main", new object[] { ' && p && ' })') end func doCheck() blk.println('if (!', this.codename, '.check(out ', this.errors, ')) {').inc() event("onError", this.errors) blk.dec().println('}') end func doCScript(data) _args = isdef("UseClass") ? 'false' : 'true' _args += ', ' + isdef("NoCache") ? 'false' : 'true' blk.println('using (CScript ', this.codename, ' = new CScript(', code(_args), ') { text = ', this.text, ' })').inc() doCheck() blk.println('else {').inc() if(linked("Result")) blk.println(this.obj, ' = ', make_result(data), ';') event("onResult", this.obj) else if(linked("onResult")) event("onResult", make_result(data)) else blk.println(make_result(data), ';') end end blk.dec().println('}') end func doScript(data) blk.println(this.text, ' = ', data, ';') end func Result if(linked("doCScript")) return(this.obj) else doCheck() return(make_result()) end end