void UploadInfoPage::onResume() { if (!m_pItemInfo && GetUserCore() && !GetUserCore()->isAdmin()) { Close(); return; } m_tbItemFile->SetLabel(Managers::GetString(L"#UDF_RESUMEDIR")); m_butUpload->Enable(false); m_tbItemFile->Enable(false); m_butFile->Enable(false); m_bResume = true; safe_delete(m_pUpInfo); m_pUpInfo = gcRefPtr<WebCore::Misc::ResumeUploadInfo>::create(); if (GetThreadManager()) { m_pResumeThread = GetThreadManager()->newUploadResumeThread(getItemId(), m_szKey.c_str(), m_pUpInfo); m_pResumeThread->getErrorEvent() += guiDelegate(this, &UploadInfoPage::onError); m_pResumeThread->getCompleteStringEvent() += guiDelegate(this, &UploadInfoPage::onResumeCompleteCB); m_pResumeThread->start(); } Show(); Raise(); }
void FishAI::StopAI(bool showMsg) { if(showMsg) GetThreadManager()->AddGUIMessage(GBText("你的有效时间已到, 请续费!")); m_IsStop = 1; PauseAI(); }
bool AuthServerListener::Start(int listenPort, int listenThreadCount) { m_ListenSocket = socket(AF_INET,SOCK_STREAM,0);//创建了可识别套接字 m_ListenPort = listenPort; m_ListenThreadCount = listenThreadCount; //需要绑定的参数 SOCKADDR_IN addr; addr.sin_family=AF_INET; addr.sin_addr.S_un.S_addr=htonl(INADDR_ANY);//ip地址 addr.sin_port=htons(m_ListenPort);//绑定端口 if(bind(m_ListenSocket,(SOCKADDR*)&addr,sizeof(SOCKADDR)) == SOCKET_ERROR) { GetLog()->Warn("Bind Error:%s", SysErrorMessage(WSAGetLastError())); return false; } //其中第二个参数代表能够接收的最多的连接数 if(listen(m_ListenSocket,m_ListenThreadCount) == SOCKET_ERROR) { GetLog()->Warn("Listen Error:%s", SysErrorMessage(WSAGetLastError())); return false; } GetThreadManager()->ManagerCreateThread("ListenThread", ListenThread, false); return true; }
bool AuthClientUser::SendLogMessage(AnsiString msg) { String warnMsg = FormatStr("%s(%s) : %s", m_UserName, m_ClientIP, String(msg)); GetLog()->Warn(warnMsg); GetThreadManager()->AddGUIMessage(warnMsg); AnsiString sendMsg = msg; sendMsg.Unique(); if(!this->SocketSendBYTE(PT_MSG)) return false; if(!this->SocketSendWORD(sendMsg.Length())) return false; if(!this->SocketSendBuff(sendMsg.c_str(), sendMsg.Length())) return false; if(m_ADOQuery) { m_ADOQuery->SQL->Text = FormatStr("INSERT user_error_msg (accid, cur_time, build, ip, msg) VALUES ('%s', '%s', %d, '%s', '%s')", m_UserName, DateTimeToStr(Now()), m_Build, m_ClientIP, String(msg)); ExecSQL(m_ADOQuery); } // Sleep(1000); return true; }
void __fastcall TWOWFisherMain::Timer1Timer(TObject *Sender) { GetPackageContainerManager()->PopQueue(GetWOWProxyManager()->GetAllQueue()); GetPackageContainerManager()->ProcessClientMessage(); GetFiberManager()->Process(); PackageContainer * curPackageContainer = GetPackageContainerManager()->GetWorldPackageContainer(); if(curPackageContainer) { #ifdef _DEBUG int removeNum = 10000; #else int removeNum = 100; #endif if(removeNum != 0 && curPackageContainer->GetAll()->Count() > removeNum) { GetPackageContainerManager()->ClearAllPackage(); } } GetWOWProxyManager()->ProcessRemoveProxyList(); GetThreadManager()->ProcessDeletedThread(); GetGameWorld()->CheckWOWClosedRefresh(); String result; while(GetThreadManager()->GetGUIMessageCount()) { if(!GetThreadManager()->PopGUIMessage(&result)) { continue; } if(result == "REQ_CHARGE") { //弹出注册页面 frmChargeFrm->ShowFrm(); continue; } LogMsg(result); frmChargeFrm->AddLog(result); } }
//--------------------------------------------------------------------------- void __fastcall TWOWFisherMain::FormDestroy(TObject *Sender) { GetLog()->Warn("TWOWFisherMain::FormDestroy"); GetLog()->SetEnableLog(false); for(int i=0; i<GetWOWProxyPool()->GetProxyCount(); i++) { GetWOWProxyPool()->GetProxy(i)->Close(); } GetThreadManager()->FreeAll(); }
//--------------------------------------------------------------------------- void __fastcall TWOWFisherMain::FormCreate(TObject *Sender) { if(!IsWin2k()) { ShowMessage(GBText("你的操作系统版本过低, 需要win2000及以后的操作系统")); Application->Terminate(); return; } PageControl1->ActivePageIndex = 0; ExtractDllFromExe(); #ifndef _DEBUG tsDebug->TabVisible = false; #endif GetLog()->SetEnableLog(true); GetSharedMemInfo()->CreateMapping(); String filePath = ExtractFilePath(Application->ExeName) + "Log\\"; GetLog()->SetPath(filePath); GetLog()->SetFileName(filePath + "WOWFisher.log"); GetLog()->SetGUIWindow(this->Handle); GetLog()->Warn("Proc Init"); GetLog()->Info("Current ThreadID = %d", GetCurrentThreadId()); int listenPort = HOST_PORT; WOWHookViewInfo * view = GetSharedMemInfo()->CreateEmpty(listenPort); if(!view) { ShowMessage("FULL!"); return; } listenPort = view->HostPortNumber; String dllName = GetGameWorld()->GetDllFileName(); if(dllName == "") { dllName = ExtractFilePath(Application->ExeName) + "wowgo.dll"; } GetGameWorld()->InjectDll(dllName, typeid(*this).name()); if(!GetWOWProxyManager()->Start(listenPort)) { return; } GetWOWProxyManager()->fpOnUserAuthPacket = OnUserAuthPacket; GetThreadManager()->StartAll(); GetGameWorld()->InitFiberProcesser(); GetGameWorld()->LoadItemNameData(); GetGameWorld()->LoadFishData(); GetFiberManager()->Process(); #ifdef _DEBUG GetFiberManager()->Awake(FWC_REACTION_START); InitDebugFrms(); #endif }
void UploadInfoPage::initUpload(const char* path) { if (m_pUpInfo) { fileValidation(path); } else { m_pPrepThread = GetThreadManager()->newUploadPrepThread(getItemId(), path); *m_pPrepThread->getErrorEvent() += guiDelegate(this, &UploadInfoPage::onError); *m_pPrepThread->getCompleteStringEvent() += guiDelegate(this, &UploadInfoPage::onComplete); m_pPrepThread->start(); } }
void CreateProgPage::run() { if (!getItemInfo() && !GetUserCore()->isAdmin()) return; Show(true); Raise(); if (m_pThread) return; m_pThread = GetThreadManager()->newCreateMCFThread(getItemId(), m_szFolderPath.c_str()); *m_pThread->getMcfProgressEvent() += guiDelegate(this, &CreateProgPage::onProgress); *m_pThread->getErrorEvent() += guiDelegate(this, &CreateProgPage::onError); *m_pThread->getCompleteStringEvent() += guiDelegate(this, &CreateProgPage::onComplete); m_pThread->start(); }
void FishAI::OnProcess() { int ret = 0; if(!this->WaitFor(FWC_FISH_AI_START, "FWC_FISH_AI_START", 0)) { //如果是用户触发钓鱼的话, 不发出第一个钓鱼封包 ret = this->GetErrorCode(); } if(!m_IsStop) { GetThreadManager()->AddGUIMessage(GBText("开始自动钓鱼!")); } else { return; } m_ActiveTick = GetTickCount(); this->SetActive(1); int failTime = 0; while(this->GetActive()) { if(ret != FEC_USER_USE_SKILL) { SendStartFish(); } ret = 0; if(!this->WaitFor(FWC_FISH_HOOK, "FWC_FISH_HOOK")) { if(failTime > 3) { //3次失败强制中断 this->SetActive(0); } if(this->GetErrorCode() == FEC_SPELL_FAIL) { this->FiberSleep(2000); failTime++; } continue; } failTime = 0; uint64 guid = GetGameWorld()->GetDataGUID("self/fish/fishobjl", "self/fish/fishobjh"); GetGameWorld()->GetPackSender()->SendUseGameObject(guid); GetGameWorld()->GetPackSender()->SendReportUseGameObject(guid); if(!this->WaitFor(FWC_WAIT_LOOT, "FWC_WAIT_LOOT")) continue; for(int i=0; i<GetGameWorld()->GetDataInt("self/loot/count"); i++) { int itemid = GetGameWorld()->GetDataInt(FormatStr("self/loot/items/%d/itemid", i)); int itemcount = GetGameWorld()->GetDataInt(FormatStr("self/loot/items/%d/count", i)); int itemIndex = GetGameWorld()->GetDataInt(FormatStr("self/loot/items/%d/index", i)); // String name = GetGameWorld()->GetItemNameByID(itemid); if(GetGameWorld()->FindItemInPickupList(itemid)) { String key = FormatStr("fish_no_pick/%d", itemid); GetGameWorld()->SetData(key, GetGameWorld()->GetDataInt(key) + itemcount); continue; } String key = FormatStr("fish_results/%d", itemid); GetGameWorld()->SetData(key, GetGameWorld()->GetDataInt(key) + itemcount); GetGameWorld()->GetPackSender()->SendAutoStoreLootItem(itemIndex); } GetGameWorld()->RefreshFishResult(); // this->WaitFor(FWC_WAIT_LOOT_PICK, "FWC_WAIT_LOOT_PICK"); } if(!m_IsStop) { GetThreadManager()->AddGUIMessage(GBText("结束自动钓鱼!")); } }
void AuthClientUser::Start(SOCKET client, SOCKADDR_IN clientAddr) { SocketClientUser::Init(client, clientAddr); GetThreadManager()->ManagerCreateThread("ClientProcessThread", ClientProcessThread, false); }