void CommandGameMode::perform(CommandSender *sender, std::vector<string_t> args) { if (args.size() == 1) { EntityPlayer *player = dynamic_cast<EntityPlayer*>(sender); if (player == nullptr) throw CommandException("Cette commande est pour les joueurs uniquement."); int_t gameMode = StringUtils::fromString<int_t>(args[0]); if (gameMode < EntityPlayer::GameMode::SURVIVAL || gameMode > EntityPlayer::GameMode::SPECTATOR) gameMode = EntityPlayer::GameMode::SURVIVAL; player->setGameMode((EntityPlayer::GameMode) gameMode); player->sendMessage(Chat() << Color::YELLOW << "Votre mode de jeu a été changé"); Logger() << "[" << player->getName() << " : " << "Mode de jeu changé en " << gameMode << "]" << std::endl; } else throw WrongUsageException("/gamemode <mode>"); }
/** * @brief survivalsquare::survivalsquare * @param parent */ survivalsquare::survivalsquare(QWidget *parent) : QMainWindow(parent), ui(new Ui::survivalsquare) { ui->setupUi(this); connect(ui->actionChat_en_ligne, SIGNAL(triggered()), this, SLOT(Chat())); connect(ui->actionFacile, SIGNAL(triggered()), this, SLOT(Facil())); connect(ui->actionNormal, SIGNAL(triggered()), this, SLOT(Moyen())); connect(ui->actionDifficile, SIGNAL(triggered()), this, SLOT(Difficil())); connect(ui->actionServeur, SIGNAL(triggered()), this, SLOT(CreateServer())); ui->actionArret->setEnabled(false); QObject::connect(ui->actionArret,SIGNAL(triggered()),this,SLOT(quitter()) ); regles = new Regles(); setCentralWidget(regles); //Insérer le texte de première page. }
bool Building::checkconstruction() { BuildingT* t = &g_bltype[type]; bool haveall = true; for(int i=0; i<RESOURCES; i++) if(conmat[i] < t->conmat[i]) { haveall = false; break; } #if 0 if(owner == g_localP) { char msg[128]; sprintf(msg, "%s construction complete.", t->name); Chat(msg); ConCom(); } #endif if(haveall && !finished) for(char ctype=0; ctype<CONDUIT_TYPES; ctype++) ReNetw(ctype); //if(owner == g_localP) // OnFinishedB(type); finished = haveall; remesh(); return finished; }
void menu() { FILE *pMenuFile; int Key, IsANSI; char temp[81], *Input, *sMenuPathFileName, buf[81]; Input = calloc(PATH_MAX, sizeof(char)); sMenuPathFileName = calloc(PATH_MAX, sizeof(char)); Syslog('+', "Starting menu loop"); /* * Loop forever, this is what a BBS should do until a user logs out. */ while (TRUE) { WhosDoingWhat(BROWSING, NULL); /* * Open menufile, first users language menu, if it fails * try to open the default menu. */ snprintf(sMenuPathFileName, PATH_MAX, "%s/share/int/menus/%s/%s", getenv("FTND_ROOT"), lang.lc, Menus[MenuLevel]); if ((pMenuFile = fopen(sMenuPathFileName, "r")) == NULL) { snprintf(sMenuPathFileName, PATH_MAX, "%s/share/int/menus/%s/%s", getenv("FTND_ROOT"), CFG.deflang, Menus[MenuLevel]); pMenuFile = fopen(sMenuPathFileName,"r"); if (pMenuFile != NULL) Syslog('b', "Menu %s (Default)", Menus[MenuLevel]); } else { Syslog('b', "Menu %s (%s)", Menus[MenuLevel], lang.Name); } if (pMenuFile == NULL) { clear(); WriteError("Can't open menu file: %s", sMenuPathFileName); MenuError++; /* * Is this the last attempt to open the default menu? */ if (MenuError == 10) { WriteError("FATAL ERROR: Too many menu errors"); snprintf(temp, 81, "Too many menu errors, notifying Sysop\r\n\r\n"); PUTSTR(temp); sleep(3); die(FTNERR_CONFIG_ERROR); } /* * Switch back to the default menu */ MenuLevel = 0; strcpy(Menus[0], CFG.default_menu); } else { /* * Display Menu Text Fields and Perform all autoexec menus in order of menu file. * First check if there are any ANSI menus, if not, send a clearscreen first. */ IsANSI = FALSE; while (fread(&menus, sizeof(menus), 1, pMenuFile) == 1) { if ( Le_Access(exitinfo.Security, menus.MenuSecurity) && (UserAge >= le_int(menus.Age))){ if ((le_int(menus.MenuType) == 5) || (le_int(menus.MenuType) == 19) || (le_int(menus.MenuType) == 20)) IsANSI = TRUE; } } fseek(pMenuFile, 0, SEEK_SET); if (! IsANSI) clear(); while (fread(&menus, sizeof(menus), 1, pMenuFile) == 1) { if ( Le_Access(exitinfo.Security, menus.MenuSecurity) && (UserAge >= le_int(menus.Age))){ if (menus.AutoExec) { DoMenu( le_int(menus.MenuType) ); } DisplayMenu( ); } } /* * Check if the BBS closed down for Zone Mail Hour or * system shutdown. If so, we run the Goodbye show. */ if (CheckStatus() == FALSE) { fclose(pMenuFile); Syslog('+', "Kicking user out, the BBS is closed."); sleep(3); Good_Bye(FTNERR_OK); } /* * Check the upsdown semafore */ if (IsSema((char *)"upsdown")) { fclose(pMenuFile); Syslog('+', "Kicking user out, upsdown semafore detected"); snprintf(temp, 81, "System power failure, closing the bbs"); PUTSTR(temp); Enter(2); sleep(3); Good_Bye(FTNERR_OK); } /* * Check if SysOp wants to chat to user everytime user gets prompt. */ if (CFG.iChatPromptChk) { snprintf(buf, 81, "CISC:1,%d", mypid); if (socket_send(buf) == 0) { strcpy(buf, socket_receive()); if (strcmp(buf, "100:1,1;") == 0) { Syslog('+', "Forced sysop/user chat"); Chat(exitinfo.Name, (char *)"#sysop"); continue; } } } /* * Check users timeleft */ TimeCheck(); alarm_on(); if (exitinfo.HotKeys) { Key = Readkey(); snprintf(Input, 81, "%c", Key); Enter(1); } else { colour(CFG.InputColourF, CFG.InputColourB); GetstrC(Input, 80); } if ((strcmp(Input, "")) != 0) { fseek(pMenuFile, 0, SEEK_SET); while (fread(&menus, sizeof(menus), 1, pMenuFile) == 1) { if ((strcmp(tu(Input), menus.MenuKey)) == 0) { if ((Le_Access(exitinfo.Security, menus.MenuSecurity)) && (UserAge >= le_int(menus.Age))) { Syslog('+', "Menu[%d] %d=(%s), Opt: '%s'", MenuLevel, le_int(menus.MenuType), menus.TypeDesc, menus.OptionalData); if (le_int(menus.MenuType) == 13) { /* * Terminate call, cleanup here */ free(Input); free(sMenuPathFileName); fclose(pMenuFile); } DoMenu(le_int(menus.MenuType)); break; } } } } fclose(pMenuFile); } /* If menu open */ } /* while true */ }
void DoMenu(int Type) { int Strlen, i, x; char *sPrompt, *sPromptBak, *temp; sPrompt = calloc(81, sizeof(char)); sPromptBak = calloc(81, sizeof(char)); temp = calloc(81, sizeof(char)); TimeCheck(); switch(Type) { case 0: /* Display Prompt Line Only */ break; case 1: /* Goto another menu */ strncpy(Menus[MenuLevel], menus.OptionalData, 14); break; case 2: /* Gosub another menu */ if (MenuLevel < 49) { MenuLevel++; strncpy(Menus[MenuLevel], menus.OptionalData, 14); } else Syslog('?', "More than 50 menu levels"); break; case 3: /* Return from gosub */ if (MenuLevel > 0) MenuLevel--; break; case 4: /* Return to top menu */ MenuLevel = 0; break; case 5: /* Display .a?? file with controlcodes */ DisplayFile(menus.OptionalData); break; case 6: /* Show menu prompt */ Strlen = strlen(menus.OptionalData); for (x = 0; x < Strlen; x++) { if (menus.OptionalData[x] == '~') { strcat(sPrompt, sUserTimeleft); } else { snprintf(temp, 81, "%c", menus.OptionalData[x]); strcat(sPrompt, temp); } } strcpy(sPromptBak, sPrompt); strcpy(sPrompt, ""); Strlen = strlen(sPromptBak); for (x = 0; x < Strlen; x++) { if (*(sPromptBak + x) == '@') strcat(sPrompt, sAreaDesc); else if (*(sPromptBak + x) == '^') strcat(sPrompt, sMsgAreaDesc); else if (*(sPromptBak + x) == '#') snprintf(sPrompt, 81, "%s%s", sPrompt, (char *) GetLocalHM()); else { snprintf(temp, 81, "%c", *(sPromptBak + x)); strcat(sPrompt, temp); } } if (le_int(menus.ForeGnd) || le_int(menus.BackGnd)) pout(le_int(menus.ForeGnd), le_int(menus.BackGnd), sPrompt); else pout(WHITE, BLACK, sPrompt); break; case 7: /* Run external program */ if (strlen(menus.DoorName) && !menus.HideDoor) { memset(temp, 0, sizeof(temp)); strcpy(temp, menus.DoorName); ExtDoor(menus.OptionalData, menus.NoDoorsys, menus.Y2Kdoorsys, menus.Comport, menus.NoSuid, menus.NoPrompt, menus.SingleUser, temp); } else { ExtDoor(menus.OptionalData, menus.NoDoorsys, menus.Y2Kdoorsys, menus.Comport, menus.NoSuid, menus.NoPrompt, menus.SingleUser, NULL); } break; case 8: /* Show product information */ cr(); break; case 9: /* display todays callers */ LastCallers(menus.OptionalData); break; case 10: /* display userlist */ UserList(menus.OptionalData); break; case 11: /* display time statistics */ TimeStats(); break; case 12: /* page sysop for chat */ Page_Sysop(menus.OptionalData); break; case 13: /* terminate call */ free(sPrompt); free(sPromptBak); free(temp); Good_Bye(FTNERR_OK); break; case 14: /* make a log entry */ LogEntry(menus.OptionalData); break; case 15: /* print text to screen */ if (exitinfo.Security.level >= le_int(menus.MenuSecurity.level)) { for (i = 0; i < strlen(menus.OptionalData); i++) if (*(menus.OptionalData + i) == '@') *(menus.OptionalData + i) = '\n'; snprintf(temp, 81, "%s\r\n", menus.OptionalData); PUTSTR(temp); } break; case 16: /* who's currently online */ WhosOn(menus.OptionalData); Pause(); break; case 17: /* comment to sysop */ SysopComment((char *)"Comment to Sysop"); break; case 18: /* send on-line message */ SendOnlineMsg(menus.OptionalData); break; case 19: /* display Textfile with more */ MoreFile(menus.OptionalData); break; case 20: /* display a?? file with controlcode and wait for enter */ DisplayFileEnter(menus.OptionalData); break; case 21: /* display menuline only */ break; case 22: /* Chat with any user */ Chat(NULL, NULL); break; case 101: FileArea_List(menus.OptionalData); break; case 102: File_List(); break; case 103: ViewFile(NULL); break; case 104: Download(); break; case 105: File_RawDir(menus.OptionalData); break; case 106: KeywordScan(); break; case 107: FilenameScan(); break; case 108: NewfileScan(TRUE); break; case 109: Upload(); break; case 110: EditTaglist(); break; case 111: /* View file in homedir */ break; case 112: DownloadDirect(menus.OptionalData, TRUE); break; case 113: Copy_Home(); break; case 114: List_Home(); break; case 115: Delete_Home(); break; /* 116 Unpack file in homedir */ /* 117 Pack files in homedir */ case 118: Download_Home(); break; case 119: Upload_Home(); break; case 201: MsgArea_List(menus.OptionalData); break; case 202: Post_Msg(); break; case 203: Read_Msgs(); break; case 204: CheckMail(); break; case 205: QuickScan_Msgs(); break; case 206: Delete_Msg(); break; case 207: MailStatus(); break; case 208: OLR_TagArea(); break; case 209: OLR_UntagArea(); break; case 210: OLR_ViewTags(); break; case 211: OLR_RestrictDate(); break; case 212: OLR_Upload(); break; case 213: OLR_DownBW(); break; case 214: OLR_DownQWK(); break; case 215: OLR_DownASCII(); break; case 216: Read_Email(); break; case 217: Write_Email(); break; case 218: Trash_Email(); break; case 219: Choose_Mailbox(menus.OptionalData); break; case 220: QuickScan_Email(); break; case 221: DisplayRules(); break; case 301: Chg_Protocol(); break; case 302: Chg_Password(); break; case 303: Chg_Location(); break; case 305: Chg_VoicePhone(); break; case 306: Chg_DataPhone(); break; case 307: Chg_News(); break; case 309: Chg_DOB(); break; case 310: Chg_Language(FALSE); break; case 311: Chg_Hotkeys(); break; case 312: Chg_Handle(); break; case 313: Chg_MailCheck(); break; case 314: Chg_Disturb(); break; case 315: Chg_FileCheck(); break; case 316: Chg_FsMsged(); break; case 317: Chg_FsMsgedKeys(); break; case 318: Chg_Address(); break; case 319: signature(); break; case 320: Chg_OLR_ExtInfo(); break; case 321: Chg_Charset(); break; case 322: Chg_Archiver(); break; case 401: Oneliner_Add(); break; case 402: Oneliner_List(); break; case 403: Oneliner_Show(); break; case 404: Oneliner_Delete(); break; case 405: Oneliner_Print(); break; default: Enter(1); pout(WHITE, BLACK, (char *) Language(339)); Enter(2); Syslog('?', "Option: %s -> Unknown Menu Type: %d on %s", menus.MenuKey, Type, Menus[MenuLevel]); Pause(); } free(sPrompt); free(sPromptBak); free(temp); }
std::pair<int, S> runPortfolio(int numThreads, boost::function<T()> driverFn, boost::function<S()> threadFns[], size_t stackSize, bool optionWaitToJoin, TimerStat& statWaitTime) { boost::thread thread_driver; boost::thread* threads = new boost::thread[numThreads]; S* threads_returnValue = new S[numThreads]; global_flag_done = false; global_winner = -1; for(int t = 0; t < numThreads; ++t) { #if BOOST_HAS_THREAD_ATTR boost::thread::attributes attrs; if(stackSize > 0) { attrs.set_stack_size(stackSize); } threads[t] = boost::thread(attrs, boost::bind(runThread<S>, t, threadFns[t], boost::ref(threads_returnValue[t]) ) ); #else /* BOOST_HAS_THREAD_ATTR */ if(stackSize > 0) { throw OptionException("cannot specify a stack size for worker threads; requires CVC4 to be built with Boost thread library >= 1.50.0"); } threads[t] = boost::thread(boost::bind(runThread<S>, t, threadFns[t], boost::ref(threads_returnValue[t]) ) ); #endif /* BOOST_HAS_THREAD_ATTR */ #if defined(BOOST_THREAD_PLATFORM_PTHREAD) if(Chat.isOn()) { void *stackaddr; size_t stacksize; pthread_attr_t attr; pthread_getattr_np(threads[t].native_handle(), &attr); pthread_attr_getstack(&attr, &stackaddr, &stacksize); Chat() << "Created worker thread " << t << " with stack size " << stacksize << std::endl; } #endif } if(not driverFn.empty()) thread_driver = boost::thread(driverFn); boost::unique_lock<boost::mutex> lock(mutex_main_wait); while(global_flag_done == false) { condition_var_main_wait.wait(lock); } statWaitTime.start(); if(not driverFn.empty()) { thread_driver.interrupt(); thread_driver.join(); } for(int t = 0; t < numThreads; ++t) { if(optionWaitToJoin) { threads[t].join(); } } std::pair<int, S> retval(global_winner, threads_returnValue[global_winner]); delete[] threads; delete[] threads_returnValue; return retval; }
LRESULT CInviteChatDlg::OnNetEvent(WPARAM w,LPARAM l) { NLT_Container *pItem = (NLT_Container *)w; ASSERT(pItem!=NULL); UnBlock(); switch(pItem->EventType) { case NLT_EDetails: { IUser *pUser = NULL; HRESULT hr = AutoUnMarchaling(pItem,(LPUNKNOWN*)&pUser); if(SUCCEEDED(hr)) { theNet2.LockTranslator(); theNet2.RemoveFromTranslator(Handle); try { CUser InfoUser(pUser); m_User = InfoUser; CString strNickText; strNickText.Format(GetString(IDS_INVITE_CHAT_NICK_NAME),m_User.GetShowName()); m_Nick.SetWindowText(strNickText); UpdateData(FALSE); } catch(...) { ASSERT(FALSE); } theNet2.UnlockTranslator(); pUser->Release(); } } break; case NLT_EChatCreate: { IChat *pChat = NULL; HRESULT hr = AutoUnMarchaling(pItem,(LPUNKNOWN*)&pChat); if(hr==S_OK) { // Step 1. Add new Chat to ChatsCollections [8/9/2002] pMessenger->AddNewChat(pChat,SC_INACTIVE); // Step 2. Connect to Chat [9/7/2002] CChat Chat(pChat); pMessenger->SetChatStatus(Chat.GetId(),SC_ACTIVE,CMainDlg::HCI_OPEN_CHAT_WINDOW); // Step 2. Free Interface [8/9/2002] pChat->Release(); } // Step 3. Close the Window KillWindow(); } break; case NLT_ECommandOK: theNet2.LockTranslator(); theNet2.RemoveFromTranslator(Handle); theNet2.UnlockTranslator(); KillWindow(); break; case NLT_ECommandError: theNet2.LockTranslator(); theNet2.RemoveFromTranslator(Handle); theNet2.UnlockTranslator(); if(pItem->Long1==etSERVER) { switch(pItem->Long2) { case ERR_UNABLE_CREATE_CONN: _SHOW_IBN_ERROR_DLG_OK(IDS_SERVICENOTAVAILABLE); break; } } MessageBox(GetString(IDS_INVITECHAT_ERROR),GetString(IDS_ERROR_TITLE),MB_OK|MB_ICONSTOP); break; } delete pItem; return 0; }
void PlayerConnection::disconnect(string_t reason) { sendPacket(std::make_shared<PacketDisconnect>(phase == PLAY, (Chat() << reason).getJSON())); }
void ChatsDataModel::addChat(bool isUser, int id, const QString &name) { beginInsertRows(QModelIndex(), rowCount(), rowCount()); m_chats << Chat(isUser, id, name); endInsertRows(); }