/// <summary> /// Loads a new script string in place of the old one /// </summary> public void Run() { AccessibleLuaScript accessibleLuaScript = Task.GetOrMakeAccessibleLuaScript(luaScript, scriptName); if (!GetComponent <WTBObject>().scripts.Contains(accessibleLuaScript)) { GetComponent <WTBObject>().scripts.Add(accessibleLuaScript); } //if (scriptName == "" || hasRun) return; //hasRun = true; // tableprint credit to https://stackoverflow.com/questions/9168058/how-to-dump-a-table-to-console string builtInEnvironment = @" function TablePrint (tbl, indent) if not indent then indent = 0 end for k, v in pairs(tbl) do formatting = string.rep(' ', indent) .. k .. ': '; if (type(v) == 'table') then print(formatting) TablePrint(v, indent+1) elseif (type(v) == 'boolean') then print(formatting .. tostring(v)) else print(formatting .. v) end end end function count(tbl) local count = 0 for k, v in pairs(tbl) do count = count + 1 end return count end function lerp(a, b, t) return a * (1-t) + (b*t) end "; try { if (Task.ScriptTextTable.ContainsKey(scriptName)) { luaScript.DoString(Task.ScriptTextTable[scriptName] + builtInEnvironment); } if (luaScript != null && luaScript.Globals["Start"] != null) { luaScript.Call(luaScript.Globals["Start"]); } hasRun = true; } catch (ScriptRuntimeException ex) { Debug.Log("Lua Error: " + ex.DecoratedMessage); string partIdentifier = gameObject.name; // null check series WTBObject wtbo = GetComponent <WTBObject>(); if (wtbo != null) { WorldComponent wc = (WorldComponent)wtbo.ComponentByName("World"); if (wc != null) { PropertyName pn = (PropertyName)wc.PropertyByName("Name"); if (pn != null) { partIdentifier = pn.dataString + ":" + gameObject.GetPhotonView().viewID; } } } Task.consoleControllerGlobal.Print("ERROR: [" + partIdentifier + "] " + ex.DecoratedMessage); if (Task.consoleController != null) { Task.consoleController.Print("ERROR: [" + partIdentifier + "] " + ex.DecoratedMessage); } } catch (InterpreterException ex) { Debug.Log("Lua Error: " + ex.DecoratedMessage); string partIdentifier = gameObject.name; // null check series WTBObject wtbo = GetComponent <WTBObject>(); if (wtbo != null) { WorldComponent wc = (WorldComponent)wtbo.ComponentByName("World"); if (wc != null) { PropertyName pn = (PropertyName)wc.PropertyByName("Name"); if (pn != null) { partIdentifier = pn.dataString + ":" + gameObject.GetPhotonView().viewID; } } } Task.consoleControllerGlobal.Print("ERROR: [" + partIdentifier + "] " + ex.DecoratedMessage); if (Task.consoleController != null) { Task.consoleController.Print("ERROR: [" + partIdentifier + "] " + ex.DecoratedMessage); } } }