static bool Cmd_ConScribe_GetRegisteredLogNames_Execute(COMMAND_ARGS) { *result = 0; const char* ModName = ResolveModName(scriptObj); if (ModName == NULL) return true; LogManager::GetSingleton()->RegisterMod(ModName); std::vector<OBSEElement> LogList; for (std::vector<std::string>::const_iterator Itr = LogManager::GetSingleton()->GetModLogData(ModName)->RegisteredLogs.begin(); Itr != LogManager::GetSingleton()->GetModLogData(ModName)->RegisteredLogs.end(); Itr++) { LogList.push_back(Itr->c_str()); } std::map<std::string, OBSEElement> OBSEStringMap; OBSEArray* OBSEVector = ArrayFromStdVector(LogList, scriptObj); OBSEStringMap["default log"] = LogManager::GetSingleton()->GetDefaultLog(ModName); OBSEStringMap["log list"] = OBSEVector; OBSEArray* ResultArray = StringMapFromStdMap(OBSEStringMap, scriptObj); if (!ResultArray) _MESSAGE("Couldn't create array. Passed in script %08x", scriptObj->refID); else if (!g_arrayIntfc->AssignCommandResult(ResultArray, result)) _MESSAGE("Couldn't assign result array. Passed in script %08x", scriptObj->refID); return true; }
bool Cmd_ExamplePlugin_MakeArray_Execute(COMMAND_ARGS) { // Create an array of the format // { // 0:"Zero" // 1:1.0 // 2:PlayerRef // 3:StringMap { "A":"a", "B":123.456, "C":"manually set" } // 4:"Appended" // } // create the inner StringMap array std::map<std::string, OBSEElement> stringMap; stringMap["A"] = "a"; stringMap["B"] = 123.456; // create the outer array std::vector<OBSEElement> vec; vec.push_back("Zero"); vec.push_back(1.0); vec.push_back(*g_thePlayer); // convert our map to an OBSE StringMap and store in outer array OBSEArray* stringMapArr = StringMapFromStdMap(stringMap, scriptObj); vec.push_back(stringMapArr); // manually set another element in stringmap g_arrayIntfc->SetElement(stringMapArr, "C", "manually set"); // convert outer array OBSEArray* arr = ArrayFromStdVector(vec, scriptObj); // append another element to array g_arrayIntfc->AppendElement(arr, "appended"); if (!arr) Console_Print("Couldn't create array"); // return the array if (!g_arrayIntfc->AssignCommandResult(arr, result)) Console_Print("Couldn't assign array to command result."); // result contains the new ArrayID; print it Console_Print("Returned array ID %.0f", *result); return true; }