// By Rick. Duh! function isType(v, t) { if (v.type() == -1 || v.type() != t) { return false; } return true; } function isArray(array) { return isType(array, 3); } function isString(string) { return isType(object, 1); } function isObject(object) { return isType(object, 2); } function doMessage(text) { sendtonc("Dump [" @ myVersion @ "]: " @ text); } function parseValue(value) { ret := "Unknown"; switch$ (value.type()) { case -1: ret := "NULL"; break; case 0: ret := "" @ value @ ""; break; case 1: ret := "\\"" @ value @ "\\""; break; case 2: ret := "OBJECT_" @ value.objecttype(); break; case 3: ret := "{"; k := false; for (j = 0; j < value.size(); j++) { if (value[j].type() == -1 && k == false) { k = true; continue; } ret @= parseValue(value[j]); if (j + 1 < value.size()) { ret @= ", "; } } ret @= "}"; break; default: ret := "UNKNOWN_TYPE_" @ value.type(); break; } return ret; } function dumpObject(object, filename, mode := 1) { if (isObject(object) == false) { return "Please specify a valid object."; } log := new [0]; funcs := object.getFunctions(); vars := object.getVarNames(); log.add("new " @ object.objectType() @ "(" @ object.name @ ")"); log.add("{"); for (i := 0; i < vars.size(); i++) { log.add("\\t" @ vars[i] @ " := " @ parseValue(makevar("object." @ vars[i])) @ ";"); } log.add("}"); log.add(""); for (i := 0; i < funcs.size(); i++) { log.add("function " @ object.name @ "." @ funcs[i] @ "()"); log.add("{"); log.add("}"); if (i + 1 < funcs.size()) { log.add(""); } } log.saveLines(filename, mode); } function onCreated() { if (myVersion.type() == -1) { myVersion := 0; } else { myVersion++; } dumpObject(this, "levels/dump.txt", 0); }