static void sedit_compact_rooms_menu(struct descriptor_data *d) { struct shop_data *shop; int i; shop = OLC_SHOP(d); get_char_colors(d->character); clear_screen(d); for (i = 0; S_ROOM(shop, i) != NOWHERE; i++) { if (real_room(S_ROOM(shop, i)) != NOWHERE) { write_to_output(d, "%2d - [@\t%5d\tn] - \ty%s\tn\r\n", i, S_ROOM(shop, i), world[real_room(S_ROOM(shop, i))].name); } else { write_to_output(d, "%2d - [\tR!Removed Room!\tn]\r\n", i); } } write_to_output(d, "\r\n" "%sA%s) Add a new room.\r\n" "%sD%s) Delete a room.\r\n" "%sL%s) Long display.\r\n" "%sQ%s) Quit\r\n" "Enter choice : ", grn, nrm, grn, nrm, grn, nrm, grn, nrm); OLC_MODE(d) = SEDIT_ROOMS_MENU; }
/* * Object value #3 */ void oedit_disp_val3_menu(struct descriptor_data *d) { OLC_MODE(d) = OEDIT_VALUE_3; switch (GET_OBJ_TYPE(OLC_OBJ(d))) { case ITEM_LIGHT: write_to_output(d, "Number of hours (0 = burnt, -1 is infinite) : "); break; case ITEM_SCROLL: case ITEM_POTION: oedit_disp_spells_menu(d); break; case ITEM_WAND: case ITEM_STAFF: write_to_output(d, "Number of charges remaining : "); break; case ITEM_WEAPON: write_to_output(d, "Size of damage dice : "); break; case ITEM_CONTAINER: write_to_output(d, "Vnum of key to open container (-1 for no key) : "); break; case ITEM_DRINKCON: case ITEM_FOUNTAIN: oedit_liquid_type(d); break; default: oedit_disp_menu(d); } }
void tedit_string_cleanup(struct descriptor_data *d, int terminator) { FILE *fl; char *storage = OLC_STORAGE(d); if (!storage) terminator = STRINGADD_ABORT; switch (terminator) { case STRINGADD_SAVE: if (!(fl = fopen(storage, "w"))) mudlog(CMP, LVL_IMPL, TRUE, "SYSERR: Can't write file '%s'.", storage); else { if (*d->str) { strip_cr(*d->str); fputs(*d->str, fl); } fclose(fl); mudlog(CMP, LVL_GOD, TRUE, "OLC: %s saves '%s'.", GET_NAME(d->character), storage); write_to_output(d, "Saved.\r\n"); } break; case STRINGADD_ABORT: write_to_output(d, "Edit aborted.\r\n"); act("$n stops editing some scrolls.", TRUE, d->character, 0, 0, TO_ROOM); break; default: log("SYSERR: tedit_string_cleanup: Unknown terminator status."); break; } /* Common cleanup code. */ cleanup_olc(d, CLEANUP_ALL); STATE(d) = CON_PLAYING; }
void trigedit_disp_types(struct descriptor_data *d) { int i, columns = 0; const char **types; char bitbuf[MAX_STRING_LENGTH]; switch(OLC_TRIG(d)->attach_type) { case WLD_TRIGGER: types = wtrig_types; break; case OBJ_TRIGGER: types = otrig_types; break; case MOB_TRIGGER: default: types = trig_types; break; } get_char_colors(d->character); clear_screen(d); for (i = 0; i < NUM_TRIG_TYPE_FLAGS; i++) { write_to_output(d, "%s%2d%s) %-20.20s %s", grn, i + 1, nrm, types[i], !(++columns % 2) ? "\r\n" : ""); } sprintbit(GET_TRIG_TYPE(OLC_TRIG(d)), types, bitbuf, sizeof(bitbuf)); write_to_output(d, "\r\nCurrent types : %s%s%s\r\nEnter type (0 to quit) : ", cyn, bitbuf, nrm); }
/* * Object value #2 */ void oedit_disp_val2_menu(struct descriptor_data *d) { OLC_MODE(d) = OEDIT_VALUE_2; switch (GET_OBJ_TYPE(OLC_OBJ(d))) { case ITEM_SCROLL: case ITEM_POTION: oedit_disp_spells_menu(d); break; case ITEM_WAND: case ITEM_STAFF: write_to_output(d, "Max number of charges : "); break; case ITEM_WEAPON: write_to_output(d, "Number of damage dice : "); break; case ITEM_FOOD: /* * Values 2 and 3 are unused, jump to 4...Odd. */ oedit_disp_val4_menu(d); break; case ITEM_CONTAINER: /* * These are flags, needs a bit of special handling. */ oedit_disp_container_flags_menu(d); break; case ITEM_DRINKCON: case ITEM_FOUNTAIN: write_to_output(d, "Initial drink units : "); break; default: oedit_disp_menu(d); } }
static void sedit_rooms_menu(struct descriptor_data *d) { struct shop_data *shop; int i; room_rnum rnum; shop = OLC_SHOP(d); get_char_colors(d->character); clear_screen(d); write_to_output(d, "## VNUM Room\r\n\r\n"); for (i = 0; S_ROOM(shop, i) != NOWHERE; i++) { rnum = real_room(S_ROOM(shop, i)); /* if the room has been deleted, this may crash us otherwise. */ /* set to 0 to be deletable. -- Welcor 09/04 */ if (rnum == NOWHERE) S_ROOM(shop, i) = rnum = 0; write_to_output(d, "%2d - [%s%5d%s] - %s%s%s\r\n", i, cyn, S_ROOM(shop, i), nrm, yel, world[rnum].name, nrm); } write_to_output(d, "\r\n" "%sA%s) Add a new room.\r\n" "%sD%s) Delete a room.\r\n" "%sC%s) Compact Display.\r\n" "%sQ%s) Quit\r\n" "Enter choice : ", grn, nrm, grn, nrm, grn, nrm, grn, nrm); OLC_MODE(d) = SEDIT_ROOMS_MENU; }
/* Display attack types menu. */ static void medit_disp_attack_types(struct descriptor_data *d) { int i; get_char_colors(d->character); clear_screen(d); for (i = 0; i < NUM_ATTACK_TYPES; i++) { write_to_output(d, "%s%2d%s) %s\r\n", grn, i, nrm, attack_hit_text[i].singular); } write_to_output(d, "Enter attack type : "); }
/* Display main menu. */ static void medit_disp_menu(struct descriptor_data *d) { struct char_data *mob; char flags[MAX_STRING_LENGTH], flag2[MAX_STRING_LENGTH]; mob = OLC_MOB(d); get_char_colors(d->character); clear_screen(d); write_to_output(d, "-- Mob Number: [%s%d%s]\r\n" "%s1%s) Sex: %s%-7.7s%s %s2%s) Keywords: %s%s\r\n" "%s3%s) S-Desc: %s%s\r\n" "%s4%s) L-Desc:-\r\n%s%s\r\n" "%s5%s) D-Desc:-\r\n%s%s\r\n", cyn, OLC_NUM(d), nrm, grn, nrm, yel, genders[(int)GET_SEX(mob)], nrm, grn, nrm, yel, GET_ALIAS(mob), grn, nrm, yel, GET_SDESC(mob), grn, nrm, yel, GET_LDESC(mob), grn, nrm, yel, GET_DDESC(mob) ); sprintbitarray(MOB_FLAGS(mob), action_bits, AF_ARRAY_MAX, flags); sprintbitarray(AFF_FLAGS(mob), affected_bits, AF_ARRAY_MAX, flag2); write_to_output(d, "%s6%s) Position : %s%s\r\n" "%s7%s) Default : %s%s\r\n" "%s8%s) Attack : %s%s\r\n" "%s9%s) Stats Menu...\r\n" "%sA%s) NPC Flags : %s%s\r\n" "%sB%s) AFF Flags : %s%s\r\n" "%sS%s) Script : %s%s\r\n" "%sW%s) Copy mob\r\n" "%sX%s) Delete mob\r\n" "%sQ%s) Quit\r\n" "Enter choice : ", grn, nrm, yel, position_types[(int)GET_POS(mob)], grn, nrm, yel, position_types[(int)GET_DEFAULT_POS(mob)], grn, nrm, yel, attack_hit_text[(int)GET_ATTACK(mob)].singular, grn, nrm, grn, nrm, cyn, flags, grn, nrm, cyn, flag2, grn, nrm, cyn, OLC_SCRIPT(d) ?"Set.":"Not Set.", grn, nrm, grn, nrm, grn, nrm ); OLC_MODE(d) = MEDIT_MAIN_MENU; }
void trigedit_disp_menu(struct descriptor_data *d) { struct trig_data *trig = OLC_TRIG(d); char *attach_type; char trgtypes[256]; get_char_colors(d->character); clear_screen(d); if (trig->attach_type==OBJ_TRIGGER) { attach_type = "Objects"; sprintbit(GET_TRIG_TYPE(trig), otrig_types, trgtypes, sizeof(trgtypes)); } else if (trig->attach_type==WLD_TRIGGER) { attach_type = "Rooms"; sprintbit(GET_TRIG_TYPE(trig), wtrig_types, trgtypes, sizeof(trgtypes)); } else { attach_type = "Mobiles"; sprintbit(GET_TRIG_TYPE(trig), trig_types, trgtypes, sizeof(trgtypes)); } write_to_output(d, TRUE, #if defined(CLEAR_SCREEN) "^[[H^[[J" #endif "Trigger Editor [%s%d%s]\r\n\r\n" "%s1)%s Name : %s%s\r\n" "%s2)%s Intended for : %s%s\r\n" "%s3)%s Trigger types: %s%s\r\n" "%s4)%s Numberic Arg : %s%d\r\n" "%s5)%s Arguments : %s%s\r\n" "%s6)%s Commands:\r\n%s", grn, OLC_NUM(d), nrm, /* vnum on the title line */ grn, nrm, yel, GET_TRIG_NAME(trig), /* name */ grn, nrm, yel, attach_type, /* attach type */ grn, nrm, yel, trgtypes, /* greet/drop/etc */ grn, nrm, yel, trig->narg, /* numeric arg */ grn, nrm, yel, trig->arglist?trig->arglist:"", /* strict arg */ grn, nrm, cyn ); write_to_output(d, FALSE, "%s\r\n", OLC_STORAGE(d) /* the command list */ ); write_to_output(d, TRUE, "%sQ)%s Quit\r\n" "Enter Choice :", grn, nrm /* quit colors */ ); OLC_MODE(d) = TRIGEDIT_MAIN_MENU; }
/* * Object type. */ void oedit_disp_type_menu(struct descriptor_data *d) { int counter, columns = 0; get_char_colors(d->character); clear_screen(d); for (counter = 0; counter < NUM_ITEM_TYPES; counter++) { write_to_output(d, "%s%2d%s) %-20.20s %s", grn, counter, nrm, item_types[counter], !(++columns % 2) ? "\r\n" : ""); } write_to_output(d, "\r\nEnter object type : "); }
void hedit_exits_menu(struct descriptor_data *d) { struct house_data *house; int i; house = OLC_HOUSE(d); get_char_colors(d->character); clear_screen(d); for (i = 0; *dirs[i] != '\n'; i++) write_to_output(d, TRUE, "%s%2d%s) %s%s%s\r\n", grn, i, nrm, yel, dirs[i], nrm); write_to_output(d, TRUE, "\r\nEnter Exit number : "); }
/* * Spell type. */ void oedit_disp_spells_menu(struct descriptor_data *d) { int counter, columns = 0; get_char_colors(d->character); clear_screen(d); for (counter = 0; counter < NUM_SPELLS; counter++) { write_to_output(d, "%s%2d%s) %s%-20.20s %s", grn, counter, nrm, yel, spell_info[counter].name, !(++columns % 3) ? "\r\n" : ""); } write_to_output(d, "\r\n%sEnter spell choice (0 for none) : ", nrm); }
void hedit_modes_menu(struct descriptor_data *d) { struct house_data *house; int i; house = OLC_HOUSE(d); get_char_colors(d->character); clear_screen(d); for (i = 0; *house_types[i] != '\n'; i++) write_to_output(d, TRUE, "%s%2d%s) %s%s%s\r\n", grn, i, nrm, cyn, house_types[i], nrm); write_to_output(d, TRUE, "\r\nEnter House Type : "); }
void hedit_prune_safe_menu(struct descriptor_data *d) { struct house_data *house; int i; house = OLC_HOUSE(d); get_char_colors(d->character); clear_screen(d); for (i = 0; i < 2; i++) write_to_output(d, TRUE, "%s%2d%s) %s%s%s\r\n", grn, i, nrm, cyn, YESNO(i), nrm); write_to_output(d, TRUE, "\r\nShould the house be prune-safe? : "); }
static void sedit_types_menu(struct descriptor_data *d) { int i, count = 0; get_char_colors(d->character); clear_screen(d); for (i = 0; i < NUM_ITEM_TYPES; i++) { write_to_output(d, "%s%2d%s) %s%-20s%s %s", grn, i, nrm, cyn, item_types[i], nrm, !(++count % 3) ? "\r\n" : ""); } write_to_output(d, "%sEnter choice : ", nrm); OLC_MODE(d) = SEDIT_TYPE_MENU; }
/* * The actual apply to set. */ void oedit_disp_apply_menu(struct descriptor_data *d) { int counter, columns = 0; get_char_colors(d->character); clear_screen(d); for (counter = 0; counter < NUM_APPLIES; counter++) { write_to_output(d, "%s%2d%s) %-20.20s %s", grn, counter, nrm, apply_types[counter], !(++columns % 2) ? "\r\n" : ""); } write_to_output(d, "\r\nEnter apply type (0 is no apply) : "); OLC_MODE(d) = OEDIT_APPLY; }
/* * Ask for liquid type. */ void oedit_liquid_type(struct descriptor_data *d) { int counter, columns = 0; get_char_colors(d->character); clear_screen(d); for (counter = 0; counter < NUM_LIQ_TYPES; counter++) { write_to_output(d, " %s%2d%s) %s%-20.20s %s", grn, counter, nrm, yel, drinks[counter], !(++columns % 2) ? "\r\n" : ""); } write_to_output(d, "\r\n%sEnter drink type : ", nrm); OLC_MODE(d) = OEDIT_VALUE_3; }
/* * Weapon type. */ void oedit_disp_weapon_menu(struct descriptor_data *d) { int counter, columns = 0; get_char_colors(d->character); clear_screen(d); for (counter = 0; counter < NUM_ATTACK_TYPES; counter++) { write_to_output(d, "%s%2d%s) %-20.20s %s", grn, counter, nrm, attack_hit_text[counter].singular, !(++columns % 2) ? "\r\n" : ""); } write_to_output(d, "\r\nEnter weapon type : "); }
/* * Object perm flags. */ void oedit_disp_perm_menu(struct descriptor_data *d) { char bits[MAX_STRING_LENGTH]; int counter, columns = 0; get_char_colors(d->character); clear_screen(d); for (counter = 0; counter < NUM_AFF_FLAGS; counter++) { write_to_output(d, "%s%2d%s) %-20.20s %s", grn, counter + 1, nrm, affected_bits[counter], !(++columns % 2) ? "\r\n" : ""); } sprintbit(GET_OBJ_PERM(OLC_OBJ(d)), affected_bits, bits, sizeof(bits)); write_to_output(d, "\r\nObject permanent flags: %s%s%s\r\n" "Enter object perm flag (0 to quit) : ", cyn, bits, nrm); }
/* Display the gender of the mobile. */ static void medit_disp_sex(struct descriptor_data *d) { get_char_colors(d->character); clear_screen(d); column_list(d->character, 0, genders, NUM_GENDERS, TRUE); write_to_output(d, "Enter gender number : "); }
void Rsh::receive() { std::string temp = ""; while(true) { int len = 0; char* msg = shareinfo->get_message(len); if(msg != NULL) { temp.append(msg, len); int pos = temp.rfind('\n'); if(pos != std::string::npos) { std::string substr = temp.substr(0, pos+1); write_to_output(substr.c_str(), substr.size()); shell_prompt(); temp.erase(0, pos+1); } delete msg; } int* requests = shareinfo->get_requests(len); if(requests != NULL) { for(int i = 0; i < len; i++) { int fd = open(get_fifo_id(partners[requests[i]], shareinfo->get_id()), O_RDONLY, 0666); if(fd != -1) fifomgt->insert(std::pair<int, int>(requests[i], fd)); } delete requests; } usleep(100000); } }
/* Menu functions Display positions. (sitting, standing, etc) */ static void medit_disp_positions(struct descriptor_data *d) { get_char_colors(d->character); clear_screen(d); column_list(d->character, 0, position_types, NUM_POSITIONS, TRUE); write_to_output(d, "Enter position number : "); }
/* * Object wear flags. */ void oedit_disp_wear_menu(struct descriptor_data *d) { char bits[MAX_STRING_LENGTH]; int counter, columns = 0; get_char_colors(d->character); clear_screen(d); for (counter = 0; counter < NUM_ITEM_WEARS; counter++) { write_to_output(d, "%s%2d%s) %-20.20s %s", grn, counter + 1, nrm, wear_bits[counter], !(++columns % 2) ? "\r\n" : ""); } sprintbit(GET_OBJ_WEAR(OLC_OBJ(d)), wear_bits, bits, sizeof(bits)); write_to_output(d, "\r\nWear flags: %s%s%s\r\n" "Enter wear flag, 0 to quit : ", cyn, bits, nrm); }
/*Searches a slice (given by SV) for search_str, then * outputs to file OutB.txt at the end of the search. * If there are more slices to search, it continues. * Otherwise, the thread exits.*/ void *search_slice(void* tid) { int threadid = (intptr_t)tid; int slice = SV; SV++; int j = slice_indexes[slice]- (slice_len-1); int found = 0; int the_index = 0; while (j <= slice_indexes[slice]) { if (strcmp(array[j], search_str) == 0) { found = 1; the_index = j; } j++; } FILE* ofp = fopen("OutB.txt", "a"); write_to_output(ofp, threadid, slice, found, the_index); fclose(ofp); if (SV >= NS) { pthread_exit(NULL); } else { search_slice(tid); } }
void sedit_shop_flags_menu(struct descriptor_data *d) { char bits[MAX_STRING_LENGTH]; int i, count = 0; get_char_colors(d->character); clear_screen(d); for (i = 0; i < NUM_SHOP_FLAGS; i++) { write_to_output(d, "%s%2d%s) %-20.20s %s", grn, i + 1, nrm, shop_bits[i], !(++count % 2) ? "\r\n" : ""); } sprintbit(S_BITVECTOR(OLC_SHOP(d)), shop_bits, bits, sizeof(bits)); write_to_output(d, "\r\nCurrent Shop Flags : %s%s%s\r\nEnter choice : ", cyn, bits, nrm); OLC_MODE(d) = SEDIT_SHOP_FLAGS; }
void sedit_no_trade_menu(struct descriptor_data *d) { char bits[MAX_STRING_LENGTH]; int i, count = 0; get_char_colors(d->character); clear_screen(d); for (i = 0; i < NUM_TRADERS; i++) { write_to_output(d, "%s%2d%s) %-20.20s %s", grn, i + 1, nrm, trade_letters[i], !(++count % 2) ? "\r\n" : ""); } sprintbit(S_NOTRADE(OLC_SHOP(d)), trade_letters, bits, sizeof(bits)); write_to_output(d, "\r\nCurrently won't trade with: %s%s%s\r\n" "Enter choice : ", cyn, bits, nrm); OLC_MODE(d) = SEDIT_NOTRADE; }
/* Ask for liquid type. */ static void oedit_liquid_type(struct descriptor_data *d) { get_char_colors(d->character); clear_screen(d); column_list(d->character, 0, drinks, NUM_LIQ_TYPES, TRUE); write_to_output(d, "\r\n%sEnter drink type : ", nrm); OLC_MODE(d) = OEDIT_VALUE_3; }
/* Display mob-flags menu. */ static void medit_disp_mob_flags(struct descriptor_data *d) { int i, count = 0, columns = 0; char flags[MAX_STRING_LENGTH]; get_char_colors(d->character); clear_screen(d); /* Mob flags has special handling to remove illegal flags from the list */ for (i = 0; i < NUM_MOB_FLAGS; i++) { if (medit_illegal_mob_flag(i)) continue; write_to_output(d, "%s%2d%s) %-20.20s %s", grn, ++count, nrm, action_bits[i], !(++columns % 2) ? "\r\n" : ""); } sprintbitarray(MOB_FLAGS(OLC_MOB(d)), action_bits, AF_ARRAY_MAX, flags); write_to_output(d, "\r\nCurrent flags : %s%s%s\r\nEnter mob flags (0 to quit) : ", cyn, flags, nrm); }
/* * Object extra flags. */ void oedit_disp_extra_menu(struct descriptor_data *d) { char bits[MAX_STRING_LENGTH]; int counter, columns = 0; get_char_colors(d->character); clear_screen(d); for (counter = 0; counter < NUM_ITEM_FLAGS; counter++) { write_to_output(d, "%s%2d%s) %-20.20s %s", grn, counter + 1, nrm, extra_bits[counter], !(++columns % 2) ? "\r\n" : ""); } sprintbitarray(GET_OBJ_EXTRA(OLC_OBJ(d)), extra_bits, EF_ARRAY_MAX, bits); write_to_output(d, "\r\nObject flags: %s%s%s\r\n" "Enter object extra flag (0 to quit) : ", cyn, bits, nrm); }
/* The actual apply to set. */ static void oedit_disp_apply_menu(struct descriptor_data *d) { get_char_colors(d->character); clear_screen(d); column_list(d->character, 0, apply_types, NUM_APPLIES, TRUE); write_to_output(d, "\r\nEnter apply type (0 is no apply) : "); OLC_MODE(d) = OEDIT_APPLY; }