cl_context createClContextFromPlatform(cl_platform_id platformId, cl_device_id* outputClDeviceId) { // Only allow GPU devices to be used // If your machine has integrated graphics or something, you might have to change this // (You can tell if it spits at you "Unable to find suitable OpenCL device") const cl_device_type clDeviceType = CL_DEVICE_TYPE_GPU; // Get cl_device_id count and then list cl_uint openclDeviceCount = 0; if (PrintErr(clGetDeviceIDs(platformId, clDeviceType, 0, NULL, &openclDeviceCount))) return NULL; cl_device_id deviceIds[openclDeviceCount]; if (PrintErr(clGetDeviceIDs(platformId, clDeviceType, openclDeviceCount, deviceIds, NULL))) return NULL; for (cl_uint device = 0; device < openclDeviceCount; device++) { cl_device_id deviceId = deviceIds[device]; cl_context context = createClContextFromDevice(platformId, deviceId); if (context) { *outputClDeviceId = deviceId; return context; } } return NULL; }
//! 删除个人房屋信息 void CRsMail::DeleteMail(const CGUID& guid, _ConnectionPtr& cn) { char sql[500] = ""; try { char szGUID[128]; guid.tostring(szGUID); sprintf(sql, "DELETE FROM CSL_MAIL WHERE PlayerID='%s'", szGUID); // 先删除该个人房屋的成员 if(!ExecuteCn(sql, cn)) { PrintErr(CStringReading::LoadString(IDS_DBS_RSDUPRGN,STR_DBS_DUPRGN_DELDUPRGNPROPERTYERR)); return; } // 删除房间内物品 DeleteMailGoods(guid); return; } catch (_com_error &e) { PrintErr(CStringReading::LoadString(IDS_DBS_RSDUPRGN,STR_DBS_DUPRGN_DELRGNOBJFAIL), e); return; } return; }
// Upload memory to the GPU int uplMem(struct Interop* interop, int key, size_t memSize, float* data) { size_t gpuSize; cl_mem gpu = getMem(*interop, key, &gpuSize); if (gpu) { // We just assume people know what they're doing if it's a screenbuffer. // This is probably a bad decision. if (gpuSize != 0 && gpuSize != memSize) { printf("Cannot upload memory: GPU was of size %lu while data was %lu\n", gpuSize, memSize); return -1; } } else { printf("Allocating memory due to uplMem unknown buffer %d of size %lu\n", key, memSize); if (memSize == 0) { puts("Cannot allocate a zero-sized gpu array"); return -1; } if (PrintErr(allocMem(interop, key, memSize, 0))) return -1; gpu = getMem(*interop, key, &gpuSize); } if (PrintErr(clEnqueueWriteBuffer(interop->command_queue, gpu, 1, 0, memSize, data, 0, NULL, NULL))) return -1; return 0; }
//! 删除个人房屋信息 void CRsDupRgn::DeleteDupRgn(CDBDupRgn* dupRgn) { _RecordsetPtr rs; char sql[1024] = ""; try { char szGUID[128]; dupRgn->GetExID().tostring(szGUID); sprintf(sql, "DELETE FROM CSL_DUPRGN_PROPERTY WHERE guid='%s'", szGUID); // 先删除该个人房屋的成员 if(!ExecuteCn(sql, GetGame()->GetDBEntityManager()->GetAccessThread()->GetConnPtr())) { PrintErr(CStringReading::LoadString(IDS_DBS_RSDUPRGN,STR_DBS_DUPRGN_DELDUPRGNPROPERTYERR)); return; } // 删除房间内物品 DeleteDupRgnObj(dupRgn->GetExID()); return; } catch (_com_error &e) { ReleaseRs(rs); PrintErr(CStringReading::LoadString(IDS_DBS_RSDUPRGN,STR_DBS_DUPRGN_DELRGNOBJFAIL), e); return; } return; }
static void PrintListing(void) /* Print a source listing with error messages */ { struct ErrDesc *nextErr; int lnr, errC; long srcPos; char line[255]; fprintf(lst, "Listing:\n\n"); srcPos = 0; nextErr = FirstErr; srcPos = GetLine(srcPos, line); lnr = 1; errC = 0; while (srcPos != -1) { fprintf(lst, "%5d %s\n", lnr, line); while (nextErr != NULL && nextErr->line == lnr) { PrintErr(nextErr->nr, nextErr->col); errC++; nextErr = nextErr->next; } srcPos = GetLine(srcPos, line); lnr++; } if (nextErr != NULL) { fprintf(lst, "%5d\n", lnr); while (nextErr != NULL) { PrintErr(nextErr->nr, nextErr->col); errC++; nextErr = nextErr->next; } } fprintf(lst, "\n\n%5d syntax errors\n", errC); }
void VM::PrintMethodInitException(MethodInitException &e) { FILE *err = stderr; fwprintf(err, L"An error occurred while initializing the method '"); MethodOverload *method = e.GetMethod(); if (method->declType) PrintInternal(err, L"%ls.", method->declType->fullName); PrintErr(method->group->name); PrintInternal(err, L"' from module %ls: ", method->group->declModule->GetName()); fwprintf(err, CSTR L"\n", e.what()); switch (e.GetFailureKind()) { case MethodInitException::INCONSISTENT_STACK: case MethodInitException::INVALID_BRANCH_OFFSET: case MethodInitException::INSUFFICIENT_STACK_HEIGHT: case MethodInitException::STACK_HAS_REFS: fwprintf(err, L"Instruction index: %d\n", e.GetInstructionIndex()); break; case MethodInitException::INACCESSIBLE_MEMBER: case MethodInitException::FIELD_STATIC_MISMATCH: fwprintf(err, L"Member: "); { Member *member = e.GetMember(); if (member->declType) PrintInternal(err, L"%ls.", member->declType->fullName); PrintInternal(err, L"%ls\n", member->name); } break; case MethodInitException::UNRESOLVED_TOKEN: fwprintf(err, L"Token: %08X\n", e.GetToken()); break; case MethodInitException::NO_MATCHING_OVERLOAD: fwprintf(err, L"Method: '"); { Method *method = e.GetMethodGroup(); if (method->declType) PrintInternal(err, L"%ls.", method->declType->fullName); PrintErr(method->name); PrintInternal(err, L"' from module %ls\n", method->declModule->GetName()); } fwprintf(err, L"Argument count: %u\n", e.GetArgumentCount()); break; case MethodInitException::INACCESSIBLE_TYPE: case MethodInitException::TYPE_NOT_CONSTRUCTIBLE: PrintInternal(err, L"Type: '%ls' ", e.GetType()->fullName); PrintInternal(err, L"from module %ls\n", e.GetType()->module->GetName()); break; } }
bool CRsSetup::SavePlayerID(_ConnectionPtr& cn) { // 存盘线程传过来的连接不存在 bool IsLocalConn = false; /*if(cn == NULL) { TESTHR(CreateCn(cn)); TESTHR(OpenCn(cn)); // PrintErr("存盘线程传过来的连接不存在"); // return false; IsLocalConn = true; }*/ if(GetGame()->GetDBEntityManager()->GetDBSetupMap().size()) { CGUID id = (GetGame()->GetDBEntityManager()->GetDBSetupMap().begin())->second->GetPlayerID(); char sql[512]; char szid[128]; id.tostring(szid); sprintf(sql, "UPDATE csl_setup SET playerID='%s'", szid); if( !ExecuteCn(sql, GetGame()->GetDBEntityManager()->GetAccessThread()->GetConnPtr()) ) { // if(IsLocalConn) //ReleaseCn(cn); PrintErr("save playerid error"); return false; } } else { CDBSetup* s = new CDBSetup; GetGame()->GetDBEntityManager()->AddOneDBSetup(s); char sql[512]; sprintf(sql, "UPDATE csl_setup SET playerID=%d", s->GetPlayerID()); if( !ExecuteCn(sql, GetGame()->GetDBEntityManager()->GetAccessThread()->GetConnPtr()) ) { // if(IsLocalConn) //ReleaseCn(cn); PrintErr("save playerid error"); return false; } } // if(IsLocalConn) //ReleaseCn(cn); return true; }
//! 删除个人房屋内的物品信息 void CRsDupRgn::DeleteDupRgnObj(const CGUID& guid) { _RecordsetPtr rs; char sql[500] = ""; try { TESTHR(CreateRs(rs)); char szGUID[128]; guid.tostring(szGUID); sprintf(sql, "DELETE FROM CSL_DUPRGN_GOODS WHERE DupRgnGUID='%s'", szGUID); // 先删除该个人房屋的成员 TESTHR(OpenRs(sql, rs, GetGame()->GetDBEntityManager()->GetAccessThread()->GetConnPtr())); ReleaseRs(rs); return; } catch (_com_error &e) { ReleaseRs(rs); PrintErr(CStringReading::LoadString(IDS_DBS_RSDUPRGN,STR_DBS_DUPRGN_DELRGNOBJFAIL), e); return; } return; }
void printDeviceIdName(cl_device_id device) { size_t nameSize = 0; if (PrintErr(clGetDeviceInfo(device, CL_DEVICE_NAME, 0, NULL, &nameSize))) { puts("Ignoring."); return; } char name[nameSize]; if (PrintErr(clGetDeviceInfo(device, CL_DEVICE_NAME, nameSize, name, NULL))) { puts("Ignorning."); return; } printf("Using device %s\n", name); }
bool CRsMail::DeletePlayerMailsGoods(set<CGUID>& mailSet, _ConnectionPtr& cn) { char* sql = new char[256*mailSet.size()]; sprintf(sql, "DELETE FROM CSL_MAIL_GOODS WHERE guid='"); try { set<CGUID>::iterator itr = mailSet.begin(); for(; itr != mailSet.end(); itr++) { char szGUID[128]; (*itr).tostring(szGUID); strcat(sql, szGUID); strcat(sql, "' OR '"); } long sqlLen = strlen(sql); sql[sqlLen-4] = '\0'; // 先删除该个人房屋的成员 TESTHR(ExecuteCn(sql, cn)); SAFE_DELETE_ARRAY(sql); return true; } catch (_com_error &e) { SAFE_DELETE_ARRAY(sql); PrintErr(CStringReading::LoadString(IDS_DBS_RSDUPRGN,STR_DBS_DUPRGN_DELRGNOBJFAIL), e); return false; } return false; }
//-------------------------------------------------------------------------------- // Function: // Parameters: // // Return: // // Purpose: // [2004/12/24] //-------------------------------------------------------------------------------- bool CRsLogInfo::AccountEnterLog(LPCSTR szAccount, DWORD dwIP) { // 无帐户 if(!szAccount) return false; char sql[512]; char szAccountEnterTime[20]; char szIP[16]; sprintf(szIP, "%d.%d.%d.%d", LOBYTE(LOWORD(dwIP)), HIBYTE(LOWORD(dwIP)), LOBYTE(HIWORD(dwIP)), HIBYTE(HIWORD(dwIP))); _ConnectionPtr cn; GetSystemTimeAsString(szAccountEnterTime); if(!CreateCn(cn)) return false; if(!OpenCn(cn)) return false; sprintf(sql,"INSERT INTO LogInfo(Account,AccountEnterTime,IP) VALUES('%s','%s','%s')", szAccount,szAccountEnterTime,szIP); if(!ExecuteCn(sql, cn/*m_Connection*/)) { ReleaseCn(cn); PrintErr("日志:写入帐户登录错"); return false; } ReleaseCn(cn); return true; }
void printDeviceVersion(cl_device_id device) { size_t nameSize = 0; if (PrintErr(clGetDeviceInfo(device, CL_DEVICE_VERSION, 0, NULL, &nameSize))) { puts("Ignoring."); return; } char name[nameSize]; if (PrintErr(clGetDeviceInfo(device, CL_DEVICE_VERSION, nameSize, name, NULL))) { puts("Ignorning."); return; } printf("Device version %s\n", name); }
static bool init(HINSTANCE hInst) { bool bSuccess = false; //add dll ref! ++RefCount; PRINT("[%s]Add RefCount , Now RefCount is %d\n",\ __func__,RefCount); if(!FreeSys(hInst)) { PRINT("[%s]err : FreeSys Failed!\n",__func__); goto QUIT; } dllext_init(); bSuccess = true; QUIT: if(!bSuccess) { PRINT("[%s]err : init failed!\n",__func__); PrintErr(); } return bSuccess; }
//-------------------------------------------------------------------------------- // Function: // Parameters: // // Return: // // Purpose: // [2004/12/24] //-------------------------------------------------------------------------------- DWORD CRsLogInfo::GetLogInfoIDForUpdate(LPCSTR szAccount) { if(!szAccount) return -1; char sql[512]; _ConnectionPtr cn; _RecordsetPtr rs; DWORD dwLogInfoID = -1; try { CreateCn(cn); CreateRs(rs); OpenCn(cn); sprintf(sql,"SELECT TOP 1 LogInfoID FROM logInfo WHERE (Account = '%s') ORDER BY AccountEnterTime DESC", szAccount); OpenRs(sql, rs, cn/*m_Connection*/); if(!rs->GetadoEOF()) dwLogInfoID = rs->GetCollect("logInfoID"); ReleaseRs(rs); ReleaseCn(cn); return dwLogInfoID; } catch(_com_error &e) { ReleaseRs(rs); ReleaseCn(cn); PrintErr("日志:获取日志信息ID错", e); return -1; } }
bool CRsSetup::SaveLeaveWorldID(_ConnectionPtr& cn) { bool IsLocalConn = false; // 存盘线程传过来的连接不存在 /* if(cn == NULL) { TESTHR(CreateCn(cn)); TESTHR(OpenCn(cn)); // PrintErr("存盘线程传过来的连接不存在"); // return false; IsLocalConn = true; }*/ CDBEntityManager::DBSetupMapItr itr = GetGame()->GetDBEntityManager()->GetDBSetupMap().begin(); if(itr != GetGame()->GetDBEntityManager()->GetDBSetupMap().end()) { char sql[512]; sprintf(sql, "UPDATE csl_setup SET LeaveWordID=%d", itr->second->GetLeaveWordID()); if( !ExecuteCn(sql, GetGame()->GetDBEntityManager()->GetAccessThread()->GetConnPtr()) ) { // if(IsLocalConn) //ReleaseCn(cn); PrintErr("save LeaveWordID error"); return false; } } else { CGUID guid; CGUID::CreateGUID(guid); CDBSetup* s = new CDBSetup(guid); GetGame()->GetDBEntityManager()->AddOneDBSetup(s); char sql[512]; sprintf(sql, "UPDATE csl_setup SET LeaveWordID=%d", s->GetLeaveWordID()); if( !ExecuteCn(sql, GetGame()->GetDBEntityManager()->GetAccessThread()->GetConnPtr()) ) { // if(IsLocalConn) //ReleaseCn(cn); PrintErr("save LeaveWordID error"); return false; } } //if(IsLocalConn) //ReleaseCn(cn); return true; }
int dlrawbuffer_callback(float* data, long bufferSize) { if (PrintErr(saveRaw(data, bufferSize))) { puts("Ignoring raw write error."); } return 0; }
//! 删除邮件信息 DB_OPERATION_RESULT_TYPE CRsMail::DeleteMails(CDBMailGroup* goodsGroup, _ConnectionPtr& cn) { _RecordsetPtr rs; char* sql = new char[1024* (long)goodsGroup->GetMailGroupSet().size()]; try { char szGUID[128]; sprintf(sql, "DELETE FROM CSL_MAIL WHERE guid='"); set<CDBMail*>::iterator itr = goodsGroup->GetMailGroupSet().begin(); for(; itr != goodsGroup->GetMailGroupSet().end(); itr++) { (*itr)->GetExID().tostring(szGUID); strcat(sql, szGUID); strcat(sql, "'"); strcat(sql, " OR guid='"); // 删除房间内物品 DeleteMailGoods((*itr)->GetExID()); } long sqlLen = strlen(sql); sql[sqlLen-10] = '\0'; // 先删除该个人房屋的成员 if(!ExecuteCn(sql, cn)) { SAFE_DELETE_ARRAY(sql); PrintErr(CStringReading::LoadString(IDS_DBS_RSDUPRGN,STR_DBS_DUPRGN_DELDUPRGNPROPERTYERR)); return DB_OPER_RESULT_ERROR; } SAFE_DELETE_ARRAY(sql); return DB_OPER_RESULT_OK; } catch (_com_error &e) { SAFE_DELETE_ARRAY(sql); PrintErr(CStringReading::LoadString(IDS_DBS_RSDUPRGN,STR_DBS_DUPRGN_DELRGNOBJFAIL), e); return DB_OPER_RESULT_ERROR; } SAFE_DELETE_ARRAY(sql); return DB_OPER_RESULT_ERROR; }
cl_context createClContextFromNothing(cl_device_id* outputClDeviceId) { cl_uint openclPlatformCount = 0; if (PrintErr(clGetPlatformIDs(0, NULL, &openclPlatformCount))) return NULL; cl_platform_id platformIds[openclPlatformCount]; if (PrintErr(clGetPlatformIDs(openclPlatformCount, platformIds, NULL))) return NULL; for (cl_uint platform = 0; platform < openclPlatformCount; platform++) { cl_platform_id platformId = platformIds[platform]; cl_context context = createClContextFromPlatform(platformId, outputClDeviceId); if (context) return context; } return NULL; }
DB_OPERATION_RESULT_TYPE CRsMail::DeletePlayerMails(const CGUID& playerID, _ConnectionPtr& cn) { _RecordsetPtr rs; char sql[1024] = ""; try { set<CGUID> guidSet; char szGUID[128]; playerID.tostring(szGUID); sprintf(sql, "SELECT * FROM CSL_MAIL WHERE PlayerID='%s'", szGUID); TESTHR(CreateRs(rs)); TESTHR(OpenRs(sql, rs, cn, adOpenForwardOnly, adLockOptimistic)); rs->MoveFirst(); while(!rs->GetadoEOF()) { CGUID tGUID((_bstr_t)rs->GetCollect("guid")); guidSet.insert(tGUID); rs->MoveNext(); } ReleaseRs(rs); // 删除房间内物品 DeletePlayerMailsGoods(guidSet, cn); sprintf(sql, "DELETE FROM CSL_MAIL WHERE PlayerID='%s'", szGUID); // 先删除该个人房屋的成员 if(!ExecuteCn(sql, cn)) { PrintErr(CStringReading::LoadString(IDS_DBS_RSDUPRGN,STR_DBS_DUPRGN_DELDUPRGNPROPERTYERR)); return DB_OPER_RESULT_ERROR; } return DB_OPER_RESULT_OK; } catch (_com_error &e) { ReleaseRs(rs); PrintErr(CStringReading::LoadString(IDS_DBS_RSDUPRGN,STR_DBS_DUPRGN_DELRGNOBJFAIL), e); return DB_OPER_RESULT_ERROR; } return DB_OPER_RESULT_ERROR; }
DLLEXP bool StopSvr(PSvrHnds pSH) { SERVICE_STATUS SvrSta; if(!ControlService(pSH->hSVR,SERVICE_CONTROL_STOP,&SvrSta)) { PRINT("[%s]err : Stop Svr Failed!\n",__func__); PrintErr(); return false; } return true; }
// GS查询指定玩家的个人房屋副本GUID void CRsDupRgn::QuestPHGuidByPlayerID(const char* playerName, CGUID& retPHGUID) { _RecordsetPtr rs, rs1; char sql[500] = ""; try { TESTHR(CreateRs(rs)); TESTHR(CreateRs(rs1)); // 先查找Player GUID sprintf(sql, "SELECT * FROM baseproperty WHERE Name='%s'", playerName); TESTHR(OpenRs(sql, rs, GetGame()->GetDBEntityManager()->GetAccessThread()->GetConnPtr())); char* szGUID = NULL; if(!rs->GetadoEOF()) { szGUID = (_bstr_t)rs->GetCollect("guid"); } ReleaseRs(rs); sprintf(sql, "SELECT * FROM CSL_DUPRGN_PROPERTY WHERE OwnerGUID='%s'", szGUID); TESTHR(OpenRs(sql, rs, GetGame()->GetDBEntityManager()->GetAccessThread()->GetConnPtr())); while(!rs->GetadoEOF()) { // GUID retPHGUID = CGUID((_bstr_t)rs->GetCollect("guid")); } ReleaseRs(rs1); PrintErr(CStringReading::LoadString(IDS_DBS_RSDUPRGN,STR_DBS_DUPRGN_QUESTRGNGUIDOK)); return; } catch (_com_error &e) { ReleaseRs(rs); ReleaseRs(rs1); PrintErr(CStringReading::LoadString(IDS_DBS_RSDUPRGN,STR_DBS_DUPRGN_QUESTRGNGUIDFAIL), e); return; } return; }
// Allocates a cl_mem object and calls addMem() int allocMem(struct Interop* interop, int key, size_t memSize, size_t screenSizeBytes) { cl_int openclError; cl_mem memory = clCreateBuffer(interop->context, CL_MEM_READ_WRITE, memSize == 0 ? screenSizeBytes : memSize, NULL, &openclError); if (PrintErr(openclError)) { puts(" Was from clCreateBuffer()"); return -1; } return addMem(interop, key, memory, memSize); }
void MsgPrintErr( uint msg, ... ) { //===================================== // Display message to the error and listing file. char msgbuff[LFERR_BUFF_SIZE+1]; va_list args; va_start( args, msg ); __BldErrMsg( msg, msgbuff, args ); va_end( args ); PrintErr( msgbuff ); }
// Creates an Interop struct int newInterop(struct Interop* result) { result->context = getClContext(&result->deviceId); result->clMems = NULL; memset(&result->clContext, 0, sizeof(struct ClContext)); if (!result->context) { puts("No OpenCL devices found"); return -1; } glClearColor(1.0f, 0.0f, 0.0f, 1.0f); glMatrixMode(GL_PROJECTION); glLoadIdentity(); glOrtho(0.f, 1.f, 0.f, 1.f, -1.f, 1.f); glMatrixMode(GL_MODELVIEW); glLoadIdentity(); glGenTextures(1, &result->glTexture); glGenBuffers(1, &result->glBuffer); glEnable(GL_TEXTURE_2D); glBindTexture(GL_TEXTURE_2D, result->glTexture); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); if (PrintErr((int)glGetError())) return -1; cl_int openclError; result->command_queue = clCreateCommandQueue(result->context, result->deviceId, 0, &openclError); if (PrintErr(openclError)) return -1; return 0; }
// Download memory from the GPU float* dlMem(struct Interop interop, int key, size_t* memSize, size_t screenSizeBytes) { cl_mem clmem = getMem(interop, key, memSize); if (!clmem) return NULL; if (*memSize == 0) *memSize = screenSizeBytes; float* data = malloc_s(*memSize); if (PrintErr(clEnqueueReadBuffer(interop.command_queue, clmem, 1, 0, *memSize, data, 0, NULL, NULL))) { free(data); return NULL; } return data; }
//存Buffer bool CRsDupRgn::SaveBufferField(CBaseDBEntity *pGoods, const char* szFiledName, _RecordsetPtr &rs) { if(pGoods == NULL) return false; if(szFiledName == NULL) return false; VARIANT varBLOB; SAFEARRAY* psa; CEntityProperty* ep = pGoods->GetDataEntityManager().GetEntityProperty(string(szFiledName)); if(NULL == ep) return false; BYTE* buffer = NULL; long dataSize = ep->GetBufSize(0); if(dataSize) { buffer = new BYTE[dataSize]; ep->GetBufAttr(0, (void*)buffer, dataSize); long lSize=(long)dataSize; SAFEARRAYBOUND rgsabound[1]; rgsabound[0].lLbound=0; rgsabound[0].cElements=lSize; psa=SafeArrayCreate(VT_UI1,1,rgsabound); for(long i=0;i<lSize;i++) { SafeArrayPutElement(psa,&i,&buffer[i]); } varBLOB.vt=VT_ARRAY|VT_UI1; varBLOB.parray=psa; try { rs->GetFields()->GetItem(szFiledName)->AppendChunk(varBLOB); } catch(_com_error e) { PrintErr(CStringReading::LoadString(IDS_DBS_RSDUPRGN, STR_DBS_DUPRGN_SAVERGNOBJFAIL), e); SAFE_DELETE_ARRAY(buffer); return false; } SafeArrayDestroy(psa); } SAFE_DELETE_ARRAY(buffer); return true; }
//-------------------------------------------------------------------------------- // Function: // Parameters: // // Return: // // Purpose: // [2004/12/24] //-------------------------------------------------------------------------------- bool CRsLogInfo::RoleEnterLog(LPCSTR szAccount, LPCSTR szRoleName, BYTE btRoleLevel, BYTE btWorldNumber) { char sql[512]; char szCurrentTime[20]; _ConnectionPtr cn; GetSystemTimeAsString(szCurrentTime); if(!CreateCn(cn)) return false; if(!OpenCn(cn)) return false; sprintf(sql,"UPDATE LogInfo SET RoleEnterTime='%s', RoleName='%s', RoleLevel='%d', WorldNumber='%d' \ WHERE LogInfoID='%d'", szCurrentTime, szRoleName, btRoleLevel, btWorldNumber, GetLogInfoIDForUpdate(szAccount)); if(!ExecuteCn(sql, cn/*m_Connection*/)) { ReleaseCn(cn); PrintErr("日志:写人角色登录错"); return false; } ReleaseCn(cn); return true; }
//! 删除个人房屋内的物品信息 void CRsMail::DeleteMailGoods(const CGUID& guid) { char sql[500] = ""; try { char szGUID[128]; guid.tostring(szGUID); sprintf(sql, "DELETE FROM CSL_MAIL_GOODS WHERE MailID='%s'", szGUID); // 先删除该个人房屋的成员 TESTHR(ExecuteCn(sql, GetGame()->GetDBEntityManager()->GetAccessThread()->GetConnPtr())); return; } catch (_com_error &e) { PrintErr(CStringReading::LoadString(IDS_DBS_RSDUPRGN,STR_DBS_DUPRGN_DELRGNOBJFAIL), e); return; } return; }
//! 读取玩家的所有邮件信息 bool CRsMail::LoadPlayerMails(const CGUID& playerID, CDBMailGroup* mailGroup, _ConnectionPtr& cn) { if(!mailGroup) return true; mailGroup->Clear(); mailGroup->SetOwnerGUID(playerID); _RecordsetPtr rs; char sql[500] = ""; try { TESTHR(CreateRs(rs)); char szGUID[128]; playerID.tostring(szGUID); sprintf(sql, "select * FROM CSL_MAIL WHERE PlayerID='%s'", szGUID); // 先删除该个人房屋的成员 TESTHR(OpenRs(sql, rs, cn)); while(!rs->GetadoEOF()) { CGUID tGuid((_bstr_t)rs->GetCollect("guid")); CDBMail* mail = new CDBMail(tGuid); LoadMail(mail, rs, cn); mailGroup->GetMailGroupSet().insert(mail); rs->MoveNext(); } ReleaseRs(rs); return true; } catch (_com_error &e) { PrintErr(CStringReading::LoadString(IDS_DBS_RSDUPRGN,STR_DBS_DUPRGN_DELRGNOBJFAIL), e); ReleaseRs(rs); return false; } ReleaseRs(rs); return false; }
bool CRsLogInfo::LeaveLog(LPCSTR szAccount) { char sql[512]; char szCurrentTime[20]; _ConnectionPtr cn; GetSystemTimeAsString(szCurrentTime); if(!CreateCn(cn)) return false; if(!OpenCn(cn)) return false; sprintf(sql,"UPDATE logInfo SET RoleLeaveTime = '%s', AccountLeaveTime = '%s' WHERE (LogInfoID = '%d')", szCurrentTime,szCurrentTime,GetLogInfoIDForUpdate(szAccount)); if(!ExecuteCn(sql, cn/*m_Connection*/)) { ReleaseCn(cn); PrintErr("日志:写人帐户和角色登出错"); return false; } ReleaseCn(cn); return true; }