bool SystemDB::LoadSystemEntities(uint32 systemID, std::vector<DBSystemEntity> &into) { DBQueryResult res; if(!sDatabase.RunQuery(res, "SELECT " " itemID,typeID,groupID,orbitID," " x,y,z,radius,security,itemName" " FROM mapDenormalize" " WHERE solarSystemID=%u", systemID )) { codelog(SERVICE__ERROR, "Error in query: %s", res.error.c_str()); return false; } DBResultRow row; DBSystemEntity entry; while(res.GetRow(row)) { entry.itemID = row.GetInt(0); entry.typeID = row.GetInt(1); entry.groupID = row.GetInt(2); entry.orbitID = (row.IsNull(3) ? 0 : row.GetInt(3)); entry.position.x = row.GetDouble(4); entry.position.y = row.GetDouble(5); entry.position.z = row.GetDouble(6); entry.radius = (row.IsNull(7) ? 1 : row.GetDouble(7)); entry.security = (row.IsNull(8) ? 0.0 : row.GetDouble(8)); entry.itemName = row.GetText(9); into.push_back(entry); } return true; }
bool ReprocessingDB::LoadStatic(const uint32 stationID, double &efficiency, double &tax) { DBQueryResult res; if(!sDatabase.RunQuery(res, "SELECT reprocessingEfficiency, reprocessingStationsTake" " FROM staStations" " WHERE stationID=%u", stationID)) { _log(DATABASE__ERROR, "Failed to get reprocessing info for station %u: '%s'.", stationID, res.error.c_str()); return false; } DBResultRow row; if(!res.GetRow(row)) { _log(DATABASE__ERROR, "No data found for stationID %u.", stationID); return false; } efficiency = row.GetDouble(0); tax = row.GetDouble(1); return true; }
bool RamProxyDB::GetAssemblyLineProperties(const uint32 assemblyLineID, double &baseMaterialMultiplier, double &baseTimeMultiplier, double &costInstall, double &costPerHour) { DBQueryResult res; if(!DBcore::RunQuery(res, "SELECT" " assemblyLineType.baseMaterialMultiplier," " assemblyLineType.baseTimeMultiplier," " assemblyLine.costInstall," " assemblyLine.costPerHour" " FROM ramAssemblyLines AS assemblyLine" " LEFT JOIN ramAssemblyLineTypes AS assemblyLineType ON assemblyLine.assemblyLineTypeID = assemblyLineType.assemblyLineTypeID" " WHERE assemblyLine.assemblyLineID = %u", assemblyLineID)) { _log(DATABASE__ERROR, "Failed to query properties for assembly line %u: %s.", assemblyLineID, res.error.c_str()); return false; } DBResultRow row; if(!res.GetRow(row)) { _log(DATABASE__ERROR, "No properties found for assembly line %u.", assemblyLineID); return false; } baseMaterialMultiplier = row.GetDouble(0); baseTimeMultiplier = row.GetDouble(1); costInstall = row.GetDouble(2); costPerHour = row.GetDouble(3); return true; }
bool SystemDB::LoadSystemDynamicEntities(uint32 systemID, std::vector<DBSystemDynamicEntity> &into) { DBQueryResult res; if(!sDatabase.RunQuery(res, "SELECT" " entity.itemID," " entity.itemName," " entity.typeID," " entity.ownerID," " entity.locationID," " entity.flag," " invTypes.groupID," " invGroups.categoryID," " 0,"//" character_.corporationID," " 0,"//" corporation.allianceID," " x," " y," " z" " FROM entity, invTypes, invGroups"//, character_, corporation" " WHERE" " entity.typeID=invTypes.typeID" " AND invTypes.groupID=invGroups.groupID" " AND invGroups.categoryID NOT IN (%d,%d)" //" AND character_.characterID = entity.ownerID" //" AND corporation.corporationID = character_.corporationID" " AND locationID=%u", //excluded categories: //celestials: EVEDB::invCategories::_System, EVEDB::invCategories::Station, //NPCs: //EVEDB::invCategories::Entity, systemID )) { codelog(SERVICE__ERROR, "Error in query: %s", res.error.c_str()); return false; } DBResultRow row; DBSystemDynamicEntity entry; while(res.GetRow(row)) { entry.itemID = row.GetInt(0); entry.itemName = row.GetText(1); entry.typeID = row.GetInt(2); entry.ownerID = row.GetInt(3); entry.locationID = row.GetInt(4); entry.flag = row.GetInt(5); entry.groupID = row.GetInt(6); entry.categoryID = row.GetInt(7); entry.corporationID = row.GetInt(8); entry.allianceID = row.GetInt(9); entry.x = row.GetDouble(10); entry.y = row.GetDouble(11); entry.z = row.GetDouble(12); into.push_back(entry); } return true; }
bool BookmarkDB::GetBookmarkInformation(uint32 bookmarkID, uint32 &ownerID, uint32 &itemID, uint32 &typeID, uint32 &flag, std::string &memo, uint64 &created, double &x, double &y, double &z, uint32 &locationID, std::string ¬e, uint32 &creatorID, uint32 folderID) { DBQueryResult res; DBResultRow row; // Query database 'srvBookmarks' table for the supplied bookmarkID and retrieve entire row: if (!DBcore::RunQuery(res, " SELECT " " bookmarkID, " " ownerID, " " itemID, " " typeID, " " flag, " " memo, " " created, " " x, " " y, " " z, " " locationID, " " note," " creatorID," " folderID" " FROM srvBookmarks " " WHERE bookmarkID = %u ", bookmarkID)) { SysLog::Error( "BookmarkDB::GetBookmarkInformation()", "Error in query: %s", res.error.c_str() ); return false; } // Query went through, but check to see if there were zero rows, ie bookmarkID was invalid: if ( !(res.GetRow(row)) ) return false; // Bookmark 'bookmarkID' was found, Send back bookmark information: ownerID = row.GetUInt(1); itemID = row.GetUInt(2); typeID = row.GetUInt(3); flag = row.GetUInt(4); memo = row.GetText(5); created = row.GetUInt64(6); x = row.GetDouble(7); y = row.GetDouble(8); z = row.GetDouble(9); locationID = row.GetUInt(10); note = row.GetUInt(11); creatorID = row.GetUInt(12); folderID = row.GetUInt(13); return true; }
bool EVEStatic::loadStaStationTypes() { DBQueryResult result; DBResultRow row; std::string columns = "stationTypeID, dockEntryX, dockEntryY, dockEntryZ," " dockOrientationX, dockOrientationY, dockOrientationZ," " operationID, officeSlots, reprocessingEfficiency, conquerable," " dockingBayGraphicID, hangarGraphicID"; std::string qry = "SELECT " + columns + " FROM staStationTypes LEFT JOIN extStaStationTypes Using(stationTypeID)"; if (!DBcore::RunQuery(result, qry.c_str())) { SysLog::Error("Static DB", "Error in query: %s", result.error.c_str()); return false; } while (result.GetRow(row)) { uint32 stationTypeID = row.GetInt(0); double dockEntryX = row.GetDouble(1); double dockEntryY = row.GetDouble(2); double dockEntryZ = row.GetDouble(3); double dockOrientationX = row.GetDouble(4); double dockOrientationY = row.GetDouble(5); double dockOrientationZ = row.GetDouble(6); uint32 operationID = row.getIntNC(7); uint32 officeSlots = row.getIntNC(8); double reprocessingEfficiency = row.getDoubleNC(9); bool conquerable = row.GetBool(10); // From extStaStationTypes uint32 dockingBayGraphicID = row.getIntNC(11); uint32 hangarGraphicID = row.getIntNC(12); new StaStationType( stationTypeID, dockEntryX, dockEntryY, dockEntryZ, dockOrientationX, dockOrientationY, dockOrientationZ, operationID, officeSlots, reprocessingEfficiency, conquerable, dockingBayGraphicID, hangarGraphicID ); } return true; }
double ServiceDB::GetCorpBalance(uint32 corpID, uint32 walletKey) { DBQueryResult res; DBResultRow row; std::string name; if( ( walletKey < 1000 ) || ( walletKey > 1006 ) ) { walletKey = 1000; } // Care about wallet keys! if( walletKey == 1000 ) sprintf( name, "balance" ); else sprintf( name, "divisionBalance%u", walletKey - 999 ); if( !sDatabase.RunQuery( res, "SELECT " " %s" " FROM corporation" " WHERE corporationID = %u", name.c_str(), corpID ) ) { sLog.Error( "Service DB", "Error in query: %s", res.error.c_str() ); return 0.0; } if( !res.GetRow( row ) ) { sLog.Error( "Service DB", "Corporation %u missing from database", corpID ); return 0.0; } return row.GetDouble( 0 ); }
bool RamProxyDB::GetAssemblyLineVerifyProperties(const uint32 assemblyLineID, uint32 &ownerID, double &minCharSecurity, double &maxCharSecurity, EVERamRestrictionMask &restrictionMask, EVERamActivity &activity) { DBQueryResult res; if(!DBcore::RunQuery(res, "SELECT" " ownerID," " minimumCharSecurity," " maximumCharSecurity," " restrictionMask," " activityID" " FROM ramAssemblyLines" " WHERE assemblyLineID = %u", assemblyLineID)) { _log(DATABASE__ERROR, "Failed to query verify properties for assembly line %u: %s.", assemblyLineID, res.error.c_str()); return false; } DBResultRow row; if(!res.GetRow(row)) { _log(DATABASE__ERROR, "No verify properties found for assembly line %u.", assemblyLineID); return false; } ownerID = row.GetUInt(0); minCharSecurity = row.GetDouble(1); maxCharSecurity = row.GetDouble(2); restrictionMask = (EVERamRestrictionMask)row.GetUInt(3); activity = (EVERamActivity)row.GetUInt(4); return true; }
bool AttributeMap::ResetAttribute(uint32 attrID, bool notify) { //this isn't particularly efficient, but until I write a better solution, this will do DBQueryResult res; if(!sDatabase.RunQuery(res, "SELECT * FROM dgmTypeAttributes WHERE typeID='%u'", mItem.typeID())) { sLog.Error("AttributeMap", "Error in db load query: %s", res.error.c_str()); return false; } DBResultRow row; EvilNumber attrVal; uint32 attributeID; int amount = res.GetRowCount(); for (int i = 0; i < amount; i++) { res.GetRow(row); attributeID = row.GetUInt(1); if( attributeID == attrID ) { if(!row.IsNull(2)) attrVal = row.GetUInt64(2); else attrVal = row.GetDouble(3); SetAttribute(attributeID, attrVal, notify); } } return true; }
bool RamProxyDB::_GetMultipliers(const uint32 assemblyLineID, uint32 groupID, double &materialMultiplier, double &timeMultiplier) { DBQueryResult res; // check table ramAssemblyLineTypeDetailPerGroup first if(!DBcore::RunQuery(res, "SELECT materialMultiplier, timeMultiplier" " FROM ramAssemblyLineTypeDetailPerGroup" " JOIN ramAssemblyLines USING (assemblyLineTypeID)" " WHERE assemblyLineID = %u" " AND groupID = %u", assemblyLineID, groupID)) { _log(DATABASE__ERROR, "Failed to check producability of group %u by line %u: %s", groupID, assemblyLineID, res.error.c_str()); return false; } DBResultRow row; if(res.GetRow(row)) { materialMultiplier = row.GetDouble(0); timeMultiplier = row.GetDouble(1); return true; } // then ramAssemblyLineTypeDetailPerCategory if(!DBcore::RunQuery(res, "SELECT materialMultiplier, timeMultiplier" " FROM ramAssemblyLineTypeDetailPerCategory" " JOIN ramAssemblyLines USING (assemblyLineTypeID)" " JOIN invGroups USING (categoryID)" " WHERE assemblyLineID = %u" " AND groupID = %u", assemblyLineID, groupID)) { _log(DATABASE__ERROR, "Failed to check producability of group %u by line %u: %s", groupID, assemblyLineID, res.error.c_str()); return false; } if(res.GetRow(row)) { materialMultiplier = row.GetDouble(0); timeMultiplier = row.GetDouble(1); return true; } else { return false; } }
bool ServiceDB::GetStaticItemInfo(uint32 itemID, uint32 *systemID, uint32 *constellationID, uint32 *regionID, GPoint *position) { if( systemID == NULL && constellationID == NULL && regionID == NULL && position == NULL ) return true; DBQueryResult res; if(!DBcore::RunQuery(res, "SELECT" " solarSystemID," " constellationID," " regionID," " x, y, z" " FROM mapDenormalize" " WHERE itemID = %u", itemID)) { _log(DATABASE__ERROR, "Failed to query info for static item %u: %s.", itemID, res.error.c_str()); return false; } DBResultRow row; if(!res.GetRow(row)) { _log(DATABASE__ERROR, "Failed to query info for static item %u: Item not found.", itemID); return false; } if(systemID != NULL) *systemID = row.GetUInt(0); if(constellationID != NULL) *constellationID = row.GetUInt(1); if(regionID != NULL) *regionID = row.GetUInt(2); if(position != NULL) *position = GPoint( row.GetDouble(3), row.GetDouble(4), row.GetDouble(5) ); return true; }
double ServiceDB::GetCorpBalance(uint32 corpID) { DBQueryResult res; DBResultRow row; if (!sDatabase.RunQuery(res, "SELECT balance FROM corporation WHERE corporationID = %u ", corpID)) { sLog.Error("Service DB", "Error in query: %s", res.error.c_str()); return 0.0; } if (!res.GetRow(row)) { sLog.Error("Service DB", "Corporation %u missing from database.", corpID); return 0.0; } return row.GetDouble(0); }
bool CommandDB::GetRoidDist(const char * sec, std::map<double, uint32> &roids) { DBQueryResult res; DBResultRow row; if (!sDatabase.RunQuery(res, " SELECT roidID, percent FROM roidDistribution WHERE systemSec = '%s' ", sec)) { codelog(SERVICE__ERROR, "Error in query: %s", res.error.c_str()); return false; } double tot = 0.0; while (res.GetRow(row)) { tot += row.GetDouble(1); roids[tot] = row.GetUInt(0); } return !roids.empty(); }
bool MarketDB::GetOrderInfo(uint32 orderID, uint32 *orderOwnerID, uint32 *typeID, uint32 *stationID, uint32 *quantity, double *price, bool *isBuy, bool *isCorp) { DBQueryResult res; if(!sDatabase.RunQuery(res, "SELECT" " volRemaining," " price," " typeID," " stationID," " charID," " bid," " isCorp" " FROM market_orders" " WHERE orderID=%u", orderID)) { _log(MARKET__ERROR, "Error in query: %s.", res.error.c_str()); return false; } DBResultRow row; if(!res.GetRow(row)) { _log(MARKET__ERROR, "Order %u not found.", orderID); return false; } if(quantity != NULL) *quantity = row.GetUInt(0); if(price != NULL) *price = row.GetDouble(1); if(typeID != NULL) *typeID = row.GetUInt(2); if(stationID != NULL) *stationID = row.GetUInt(3); if(orderOwnerID != NULL) *orderOwnerID = row.GetUInt(4); if(isBuy != NULL) *isBuy = row.GetInt(5) ? true : false; if(isCorp != NULL) *isCorp = row.GetInt(6) ? true : false; return true; }
bool CorporationDB::UpdateCorporation(uint32 corpID, const Call_UpdateCorporation & upd, PyDict * notif) { DBQueryResult res; if (!sDatabase.RunQuery(res, " SELECT description, url, taxRate " " FROM corporation " " WHERE corporationID = %u ", corpID)) { codelog(SERVICE__ERROR, "Error in query: %s", res.error.c_str()); return false; } DBResultRow row; if (!res.GetRow(row)) { _log(DATABASE__ERROR, "Corporation %u doesn't exists.", corpID); return false; } std::vector<std::string> dbQ; ProcessStringChange("description", row.GetText(0), upd.description, notif, dbQ); ProcessStringChange("url", row.GetText(1), upd.address, notif, dbQ); ProcessRealChange("taxRate", row.GetDouble(2), upd.tax, notif, dbQ); std::string query = " UPDATE corporation SET "; int N = dbQ.size(); for (int i = 0; i < N; i++) { query += dbQ[i]; if (i < N - 1) query += ", "; } query += " WHERE corporationID = %u"; // only update if there is anything to update if ((N > 0) && (!sDatabase.RunQuery(res.error, query.c_str(), corpID))) { codelog(SERVICE__ERROR, "Error in query: %s", res.error.c_str()); return false; } return true; }
bool CommandDB::ItemSearch(uint32 typeID, uint32 &actualTypeID, std::string &actualTypeName, uint32 &actualGroupID, uint32 &actualCategoryID, double &actualRadius) { DBQueryResult result; DBResultRow row; if (!sDatabase.RunQuery(result, "SELECT " " invTypes.typeID," " invTypes.typeName," " invTypes.groupID," " invTypes.radius," " invGroups.categoryID" " FROM invTypes" " LEFT JOIN invGroups" " ON invGroups.groupID = invTypes.groupID" " WHERE typeID = %u", typeID )) { sLog.Error( "CommandDB::ItemSearch()", "Error in query: %s", result.error.c_str() ); return (false); } if( !result.GetRow(row) ) { sLog.Error( "CommandDB::ItemSearch()", "Query returned NO results: %s", result.error.c_str() ); return (false); } // Extract values from the first row: actualTypeID = row.GetUInt( 0 ); actualTypeName = row.GetText( 1 ); actualGroupID = row.GetUInt( 2 ); actualCategoryID = row.GetUInt( 4 ); actualRadius = row.GetDouble( 3 ); return true; }
bool ServiceDB::GetStationInfo(uint32 stationID, uint32 *systemID, uint32 *constellationID, uint32 *regionID, GPoint *position, GPoint *dockPosition, GVector *dockOrientation) { if( systemID == NULL && constellationID == NULL && regionID == NULL && position == NULL && dockPosition == NULL && dockOrientation == NULL ) return true; DBQueryResult res; if(!DBcore::RunQuery(res, "SELECT" " solarSystemID," " constellationID," " regionID," " x, y, z," " dockEntryX, dockEntryY, dockEntryZ," " dockOrientationX, dockOrientationY, dockOrientationZ" " FROM staStations" " LEFT JOIN staStationTypes USING (stationTypeID)" " WHERE stationID = %u", stationID)) { _log(DATABASE__ERROR, "Failed to query info for station %u: %s.", stationID, res.error.c_str()); return false; } DBResultRow row; if(!res.GetRow(row)) { _log(DATABASE__ERROR, "Failed to query info for station %u: Station not found.", stationID); return false; } if(systemID != NULL) *systemID = row.GetUInt(0); if(constellationID != NULL) *constellationID = row.GetUInt(1); if(regionID != NULL) *regionID = row.GetUInt(2); if(position != NULL) *position = GPoint( row.GetDouble(3), row.GetDouble(4), row.GetDouble(5) ); if(dockPosition != NULL) *dockPosition = GPoint( row.GetDouble(3) + row.GetDouble(6), row.GetDouble(4) + row.GetDouble(7), row.GetDouble(5) + row.GetDouble(8) ); if(dockOrientation != NULL) { *dockOrientation = GVector( row.GetDouble(9), row.GetDouble(10), row.GetDouble(11) ); // as it's direction, it should be normalized //dockOrientation->normalize(); } return true; }
bool AttributeMap::Load() { /* First, we load default attributes values using existing attribute system */ DgmTypeAttributeSet *attr_set = sDgmTypeAttrMgr.GetDmgTypeAttributeSet( mItem.typeID() ); if (attr_set == NULL) return false; DgmTypeAttributeSet::AttrSetItr itr = attr_set->attributeset.begin(); for (; itr != attr_set->attributeset.end(); itr++) SetAttribute((*itr)->attributeID, (*itr)->number, false); /* Then we load the saved attributes from the db, if there are any yet, and overwrite the defaults */ DBQueryResult res; if(mDefault) { if(!sDatabase.RunQuery(res, "SELECT * FROM entity_default_attributes WHERE itemID='%u'", mItem.itemID())) { sLog.Error("AttributeMap (DEFAULT)", "Error in db load query: %s", res.error.c_str()); return false; } } else { if(!sDatabase.RunQuery(res, "SELECT * FROM entity_attributes WHERE itemID='%u'", mItem.itemID())) { sLog.Error("AttributeMap", "Error in db load query: %s", res.error.c_str()); return false; } } DBResultRow row; int amount = res.GetRowCount(); for (int i = 0; i < amount; i++) { EvilNumber attr_value; res.GetRow(row); uint32 attributeID = row.GetUInt(1); if (!row.IsNull(2)) attr_value = row.GetInt64(2); else attr_value = row.GetDouble(3); SetAttribute(attributeID, attr_value, false); } return true; /* /// EXISTING AttributeMap::Load() function DBQueryResult res; if(!sDatabase.RunQuery(res,"SELECT * FROM entity_attributes WHERE itemID='%u'", mItem.itemID())) { sLog.Error("AttributeMap", "Error in db load query: %s", res.error.c_str()); return false; } DBResultRow row; int amount = res.GetRowCount(); // Right now, assume that we need to load all attributes with default values from dgmTypeAttributes table // IF AND ONLY IF the number of attributes pulled from the entity_attributes table for this item is ZERO: if( amount > 0 ) { // This item was found in the 'entity_attributes' table, so load all attributes found there // into the Attribute Map for this item: for (int i = 0; i < amount; i++) { res.GetRow(row); EvilNumber attr_value; uint32 attributeID = row.GetUInt(1); if ( !row.IsNull(2) ) attr_value = row.GetInt64(2); else if( !row.IsNull(3) ) attr_value = row.GetDouble(3); else sLog.Error( "AttributeMap::Load()", "Both valueInt and valueFloat fields of this (itemID,attributeID) = (%u,%u) are NULL.", row.GetInt(0), attributeID ); SetAttribute(attributeID, attr_value, false); //Add(attributeID, attr_value); } } else { // This item was NOT found in the 'entity_attributes' table, so let's assume that // this item was just created. // 1) Get complete list of attributes with default values from dgmTypeAttributes table using the item's typeID: DgmTypeAttributeSet *attr_set = sDgmTypeAttrMgr.GetDmgTypeAttributeSet( mItem.typeID() ); if (attr_set == NULL) return false; DgmTypeAttributeSet::AttrSetItr itr = attr_set->attributeset.begin(); // Store all these attributes to the item's AttributeMap for (; itr != attr_set->attributeset.end(); itr++) { SetAttribute((*itr)->attributeID, (*itr)->number, false); //Add((*itr)->attributeID, (*itr)->number); } // 2) Save these newly created and loaded attributes to the 'entity_attributes' table SaveAttributes(); } return true; */ }
bool CorporationDB::CreateCorporationCreatePacket(Notify_OnCorporaionChanged & cc, uint32 oldCorpID, uint32 newCorpID) { DBQueryResult res; DBResultRow row; if (!sDatabase.RunQuery(res, " SELECT " " corporationID,corporationName,description,tickerName,url," " taxRate,minimumJoinStanding,corporationType,hasPlayerPersonnelManager," " sendCharTerminationMessage,creatorID,ceoID,stationID,raceID," " allianceID,shares,memberCount,memberLimit,allowedMemberRaceIDs," " graphicID,shape1,shape2,shape3,color1,color2,color3,typeface," " division1,division2,division3,division4,division5,division6," " division7,deleted" " FROM corporation " " WHERE corporationID = %u ", newCorpID )) { codelog(SERVICE__ERROR, "Error in retrieving new corporation's data (%u)", newCorpID); return false; } if(!res.GetRow(row)) { codelog(SERVICE__ERROR, "Unable to find corporation's data (%u)", newCorpID); return false; } cc.allianceIDOld = new PyNone(); cc.allowedMemberRaceIDsOld = new PyNone(); cc.ceoIDOld = new PyNone(); cc.color1Old = new PyNone(); cc.color2Old = new PyNone(); cc.color3Old = new PyNone(); cc.corporationIDOld = new PyNone(); cc.corporationNameOld = new PyNone(); cc.corporationTypeOld = new PyNone(); cc.creatorIDOld = new PyNone(); cc.deletedOld = new PyNone(); cc.descriptionOld = new PyNone(); cc.division1Old = new PyNone(); cc.division2Old = new PyNone(); cc.division3Old = new PyNone(); cc.division4Old = new PyNone(); cc.division5Old = new PyNone(); cc.division6Old = new PyNone(); cc.division7Old = new PyNone(); cc.graphicIDOld = new PyNone(); cc.hasPlayerPersonnelManagerOld = new PyNone(); cc.memberCountOld = new PyNone(); cc.memberLimitOld = new PyNone(); cc.minimumJoinStandingOld = new PyNone(); cc.raceIDOld = new PyNone(); cc.sendCharTerminationMessageOld = new PyNone(); cc.shape1Old = new PyNone(); cc.shape2Old = new PyNone(); cc.shape3Old = new PyNone(); cc.sharesOld = new PyNone(); cc.stationIDOld = new PyNone(); cc.taxRateOld = new PyNone(); cc.tickerNameOld = new PyNone(); cc.typefaceOld = new PyNone(); cc.urlOld = new PyNone(); cc.corporationIDNew = row.GetUInt(0); cc.corporationNameNew = row.GetText(1); cc.descriptionNew = row.GetText(2); cc.tickerNameNew = row.GetText(3); cc.urlNew = row.GetText(4); cc.taxRateNew = row.GetDouble(5); cc.minimumJoinStandingNew = row.GetDouble(6); cc.corporationTypeNew = row.GetUInt(7); cc.hasPlayerPersonnelManagerNew = row.GetUInt(8); cc.sendCharTerminationMessageNew = row.GetUInt(9); cc.creatorIDNew = row.GetUInt(10); cc.ceoIDNew = row.GetUInt(11); cc.stationIDNew = row.GetUInt(12); _NI(raceIDNew, 13); _NI(allianceIDNew, 14); cc.sharesNew = row.GetUInt64(15); cc.memberCountNew = row.GetUInt(16); cc.memberLimitNew = row.GetUInt(17); cc.allowedMemberRaceIDsNew = row.GetUInt(18); cc.graphicIDNew = row.GetUInt(19); _NI(shape1New, 20); _NI(shape2New, 21); _NI(shape3New, 22); _NI(color1New, 23); _NI(color2New, 24); _NI(color3New, 25); _NI(typefaceNew, 26); _NI(division1New, 27); _NI(division2New, 28); _NI(division3New, 29); _NI(division4New, 30); _NI(division5New, 31); _NI(division6New, 32); _NI(division7New, 33); cc.deletedNew = row.GetUInt(34); return true; }