// clears the "tasked" flag on all items // original code by Quietust (http://www.bay12forums.com/smf/index.php?action=profile;u=18111) #include #include #include #include #include #include using namespace std; #include #include #include #include #include #include #include using namespace DFHack; DFhackCExport command_result df_cleartask (Core * c, vector & parameters); DFhackCExport const char * plugin_name ( void ) { return "cleartask"; } DFhackCExport command_result plugin_init ( Core * c, std::vector &commands) { commands.clear(); commands.push_back(PluginCommand("cleartask", "Clears the \"tasked\" flag on all items. This is dangerous. Only use after reclaims.", df_cleartask)); return CR_OK; } DFhackCExport command_result plugin_shutdown ( Core * c ) { return CR_OK; } DFhackCExport command_result df_cleartask (Core * c, vector & parameters) { c->Suspend(); DFHack::Items * Items = c->getItems(); uint32_t item_vec_offset = 0; vector p_items; if(!Items->readItemVector(p_items)) { c->con.printerr("Can't read items...\n"); c->Resume(); return CR_FAILURE; } int numtasked = 0; for (std::size_t i = 0; i < p_items.size(); i++) { t_item * ptr = p_items[i]; if (ptr->flags.in_job) { ptr->flags.in_job = 0; numtasked++; } } c->con.print("Found and untasked %d items.\n", numtasked); c->Resume(); return CR_OK; }