static bool Cmd_GetRuntimeEditorID_Execute(COMMAND_ARGS) { TESForm* BaseObject = NULL; if (!g_scriptIntfc->ExtractArgsEx(paramInfo, arg1, opcodeOffsetPtr, scriptObj, eventList, &BaseObject) || (thisObj == NULL && BaseObject == NULL)) { g_strVarInfc->Assign(PASS_COMMAND_ARGS, ""); return true; } UInt32 FormID = 0; if (thisObj) FormID = thisObj->refID; else if (BaseObject) FormID = BaseObject->refID; const char* EditorID = g_editorIDManager.LookupByFormID(FormID); if (EditorID == NULL && BaseObject) EditorID = BaseObject->GetEditorID(); if (EditorID == NULL) g_strVarInfc->Assign(PASS_COMMAND_ARGS, ""); else { g_strVarInfc->Assign(PASS_COMMAND_ARGS, EditorID); if (IsConsoleMode()) Console_Print("EditorID: %s", EditorID); } return true; }
bool TESLeveledList::WalkForCircularPath( std::string& Output, TESLeveledList* Check, TESLeveledList* Against ) { bool Result = true; TESForm* CheckBase = CS_CAST(Check, TESLeveledList, TESForm); TESForm* CheckAgainstBase = CS_CAST(Against, TESLeveledList, TESForm); SME_ASSERT(CheckBase && CheckAgainstBase); for (TESLeveledList::LevListT::Iterator Itr = Check->levList.Begin(); Itr.Get() && Itr.End() == false; ++Itr) { TESForm* Item = Itr->form; TESLeveledList* Inner = CS_CAST(Item, TESForm, TESLeveledList); if (Item->formID == CheckAgainstBase->formID) { // the source lev list is an item Output += CheckBase->GetEditorID(); Output += " >"; Output += CheckAgainstBase->GetEditorID(); Result = false; break; } else if (Inner) { std::string TempStr = Output + CheckBase->GetEditorID(); TempStr += " >"; // recurse if (WalkForCircularPath(TempStr, Inner, Against) == false) { Output = TempStr; Result = false; break; } } } return Result; }