int add_emote(char *text, int len){ int j; char *id; actor *act=NULL; for(j=1;j<len;j++) if(text[j]==' ') {text[j]=0; break;} id=&text[j+1]; text++; printf("Actor [%s] [%s]\n",text,id); LOCK_ACTORS_LISTS(); for (j = 0; j < max_actors; j++){ if (!strncasecmp(actors_list[j]->actor_name, text, strlen(text)) && (actors_list[j]->actor_name[strlen(text)] == ' ' || actors_list[j]->actor_name[strlen(text)] == '\0')){ act = actors_list[j]; LOG_TO_CONSOLE(c_orange1, "actor found, adding emote"); printf("actor found\n"); add_emote_to_actor(act->actor_id,atoi(id)); printf("message added %s\n",id); } } if (!act){ UNLOCK_ACTORS_LISTS(); LOG_TO_CONSOLE(c_orange1, "actor not found"); return 1; } UNLOCK_ACTORS_LISTS(); *(id-1)=' '; return 1; }
// Load the item lists from the file in players config directory // void List_Container::load(void) { loaded = true; saved_item_lists.clear(); std::string fullpath = get_path_config() + std::string(filename); std::ifstream in(fullpath.c_str()); if (!in) return; int revision; in >> revision; if (revision != FILE_REVISION) { LOG_ERROR("%s: %s [%s]\n", __FILE__, item_list_version_error_str, fullpath.c_str() ); LOG_TO_CONSOLE(c_red2, item_list_version_error_str); return; } bool logged_error = false; while (!in.eof()) { saved_item_lists.push_back(List()); if (!saved_item_lists.back().read(in)) { if ((saved_item_lists.back().is_valid_format()) && !logged_error) { LOG_TO_CONSOLE(c_red2, item_list_format_error); logged_error = true; } saved_item_lists.pop_back(); } } in.close(); sort_list(); set_active(initial_active_list); }
int list_ignores() { int i; char str[MAX_IGNORES*19]; if(!ignored_so_far) { LOG_TO_CONSOLE(c_grey1,no_ignores_str); return 1; } safe_snprintf(str,sizeof(str),"%s:\n",ignores_str); for(i=0;i<MAX_IGNORES;i++) { if(ignore_list[i].used) { safe_strcat (str, ignore_list[i].name, sizeof(str)); safe_strcat (str, ", ", sizeof(str)); } } str[strlen(str)-2]=0;//get rid of the last ", " thingy LOG_TO_CONSOLE(c_grey1,str); return 1; }
int command_markpos(char *text, int len) { int map_x, map_y; char *ptr = text; char msg[512]; const char *usage = help_cmd_markpos_str; while (isspace(*ptr)) ptr++; if (sscanf(ptr, "%d,%d ", &map_x, &map_y) != 2) { LOG_TO_CONSOLE(c_red2, usage); return 1; } while (*ptr != ' ' && *ptr) ptr++; while (*ptr == ' ') ptr++; if (!*ptr) { LOG_TO_CONSOLE(c_red2, usage); return 1; } if (put_mark_on_position(map_x, map_y, ptr)) { safe_snprintf (msg, sizeof(msg), location_info_str, map_x, map_y, ptr); LOG_TO_CONSOLE(c_orange1,msg); } else { safe_snprintf (msg,sizeof(msg), invalid_location_str, map_x, map_y); LOG_TO_CONSOLE(c_red2,msg); } return 1; }
void new_minute_console(void){ if(!(real_game_minute%60)){ timestamp_chat_log(); } if(time_warn_h >= 0 && (time_warn_h+real_game_minute)%60 == 0){ char str[75]; safe_snprintf(str, sizeof(str), time_warn_hour_str, time_warn_h); LOG_TO_CONSOLE(c_purple1, str); } if(time_warn_s >= 0 && (time_warn_s+real_game_minute)%180 == 30){ char str[100]; if (time_warn_s+real_game_minute == 30) { // sunrise safe_snprintf(str, sizeof(str), time_warn_sunrise_str, time_warn_s); } else { // sunset safe_snprintf(str, sizeof(str), time_warn_sunset_str, time_warn_s); } LOG_TO_CONSOLE(c_purple1, str); } if(time_warn_d >= 0 && (time_warn_d+real_game_minute)%360 == 0){ char str[75]; safe_snprintf(str, sizeof(str), time_warn_day_str, time_warn_d); LOG_TO_CONSOLE(c_purple1, str); } }
static void show_astro_details(void) { if (last_astro_message_len && last_astro_message!=NULL) { LOG_TO_CONSOLE(c_green2, stone_name); LOG_TO_CONSOLE(c_grey1, last_astro_message); } }
int command_ignore(char *text, int len) { char name[MAX_USERNAME_LENGTH]; int i; Uint8 ch='\0'; int result; while (isspace(*text)) text++; for (i = 0; i < MAX_USERNAME_LENGTH - 1; i++) { ch = text[i]; if (ch == ' ' || ch == '\0') { ch = '\0'; break; } name[i] = ch; } name[i] = '\0'; if (i >= MAX_USERNAME_LENGTH - 1 && text[i] != '\0') // This is the max chrs of name but isn't a null terminator { char str[100]; safe_snprintf (str, sizeof(str), "%s %s", name_too_long, not_added_to_ignores); LOG_TO_CONSOLE (c_red1, str); return 1; } if (i < 3) { char str[100]; safe_snprintf (str, sizeof(str), "%s %s", name_too_short, not_added_to_ignores); LOG_TO_CONSOLE (c_red1, name_too_short); return 1; } result = add_to_ignore_list (name, save_ignores); if (result == -1) { char str[100]; safe_snprintf (str, sizeof(str), already_ignoring, name); LOG_TO_CONSOLE (c_red1, str); return 1; } if(result == -2) { LOG_TO_CONSOLE (c_red1, ignore_list_full); } else { char str[100]; safe_snprintf (str, sizeof(str), added_to_ignores, name); LOG_TO_CONSOLE (c_green1, str); } return 1; }
int print_emotes(char *text, int len){ hash_entry *he;; LOG_TO_CONSOLE(c_orange1,"EMOTES"); LOG_TO_CONSOLE(c_orange1,"--------------------"); hash_start_iterator(emote_cmds); while((he=hash_get_next(emote_cmds))) LOG_TO_CONSOLE(c_orange1,((emote_dict *)he->item)->command); return 1; }
void add_buddy (const char *name, int type, int len) { int i, found = 0; char message[35]; add_name_to_tablist(name); // Check if the buddy already exists for (i = 0; i < MAX_BUDDY; i++) { if(strncasecmp(buddy_list[i].name, name, len) == 0){ //this name is already in our list if(buddy_list[i].type != type){ //colour change, not a new entry if(buddy_log_notice == 1){ if(buddy_list[i].type == 0xFE){//logging on safe_snprintf (message, sizeof(message), buddy_logon_str, len, name); LOG_TO_CONSOLE (c_green1, message); flash_icon(tt_buddy, 5); }else if(type == 0xFE){//logging off safe_snprintf (message, sizeof(message), buddy_logoff_str, len, name); LOG_TO_CONSOLE (c_green1, message); flash_icon(tt_buddy, 5); }//else it's just a normal colour change } buddy_list[i].type=type; } found = 1; break; } } if (found != 1) { // find empty space for (i = 0; i < MAX_BUDDY; i++) { if (buddy_list[i].type == 0xff) { // found then add buddy buddy_list[i].type = type; safe_snprintf (buddy_list[i].name, sizeof(buddy_list[i].name), "%.*s", len, name); // write optional online message if ((buddy_log_notice == 1) && (type != 0xFE)) { safe_snprintf (message, sizeof(message), buddy_online_str, len, name); LOG_TO_CONSOLE (c_green1, message); flash_icon(tt_buddy, 5); } break; } } } set_scrollbar_len(); }
int command_calc(char *text, int len) { double res; char str[100]; int calcerr; res = calc_exp(text, &calcerr); switch (calcerr){ case CALCERR_OK: if (trunc(res)==res) safe_snprintf (str,sizeof(str), "%s = %.0f",text,res); else safe_snprintf (str,sizeof(str), "%s = %.2f",text,res); LOG_TO_CONSOLE (c_orange1, str); break; case CALCERR_SYNTAX: safe_snprintf (str,sizeof(str), "%s = Syntax error",text); LOG_TO_CONSOLE (c_orange1, str); break; case CALCERR_DIVIDE: safe_snprintf (str, sizeof(str),"%s = Divide by zero",text); LOG_TO_CONSOLE (c_orange1, str); break; case CALCERR_MEM: safe_snprintf (str,sizeof(str), "%s = Memory error",text); LOG_TO_CONSOLE (c_orange1, str); break; case CALCERR_XOPSYNTAX: safe_snprintf (str,sizeof(str), "%s = Bad argument for X", text); LOG_TO_CONSOLE (c_orange1, str); break; case CALCERR_LOPSYNTAX: safe_snprintf (str,sizeof(str), "%s = Bad argument for L", text); LOG_TO_CONSOLE (c_orange1, str); break; case CALCERR_EOPSYNTAX: safe_snprintf (str,sizeof(str), "%s = Bad argument for E", text); LOG_TO_CONSOLE (c_orange1, str); break; case CALCERR_NOPSYNTAX: safe_snprintf (str,sizeof(str), "%s = Bad argument for N", text); LOG_TO_CONSOLE (c_orange1, str); break; case CALCERR_ZOPSYNTAX: safe_snprintf (str,sizeof(str), "%s = Bad argument for Z", text); LOG_TO_CONSOLE (c_orange1, str); break; case CALCERR_QOPSYNTAX: safe_snprintf (str,sizeof(str), "%s = Bad argument for Q", text); LOG_TO_CONSOLE (c_orange1, str); break; } return 1; }
// If the item_info file is missing or item_uid not enabled, show one time help // void List::help_if_needed(void) { if (shown_help) return; if (!info_available()) { std::string message = "Could not load the item information file: " + item_info_filename; LOG_TO_CONSOLE(c_red1, message.c_str()); } if (!item_uid_enabled) LOG_TO_CONSOLE(c_red1, "Use #item_uid (set to 1) to enable unique item information."); shown_help = true; }
int command_filter(char *text, int len) { char name[256]; char str[100]; int i; Uint8 ch = '\0'; int result; while (isspace(*text)) text++; for (i = 0; i < sizeof (name) - 1; i++) { ch = text[i]; if (ch == '\0') break; name[i] = ch; } name[i] = '\0'; if (i >= sizeof (name) - 1 && ch != '\0') { safe_snprintf (str, sizeof (str), "%s %s", word_too_long, not_added_to_filter); LOG_TO_CONSOLE (c_red1, str); return 1; } else if (i < 3) { safe_snprintf (str, sizeof (str), "%s %s", word_too_short, not_added_to_filter); LOG_TO_CONSOLE (c_red1, word_too_short); return 1; } result = add_to_filter_list (name, 1, save_ignores); if (result == -1) { safe_snprintf (str, sizeof (str), already_filtering, name); LOG_TO_CONSOLE (c_red1, str); } else if (result == -2) { LOG_TO_CONSOLE (c_red1, filter_list_full); } else { safe_snprintf (str, sizeof (str), added_to_filters, name); LOG_TO_CONSOLE (c_green1, str); } return 1; }
int command_glinfo (const char *text, int len) { const char *my_string; size_t size = 8192, minlen; char* this_string = calloc (size, 1); my_string = (const char*) glGetString (GL_RENDERER); minlen = strlen (video_card_str) + strlen (my_string) + 3; if (size < minlen) { while (size < minlen) size += size; this_string = realloc (this_string, size); } safe_snprintf (this_string, size,"%s: %s",video_card_str, my_string); LOG_TO_CONSOLE (c_red2, this_string); my_string = (const char*) glGetString (GL_VENDOR); minlen = strlen (video_vendor_str) + strlen (my_string) + 3; if (size < minlen) { while (size < minlen) size += size; this_string = realloc (this_string, size); } safe_snprintf (this_string, size,"%s: %s", video_vendor_str, my_string); LOG_TO_CONSOLE (c_yellow3, this_string); my_string = (const char*) glGetString (GL_VERSION); minlen = strlen (opengl_version_str) + strlen (my_string) + 3; if (size < minlen) { while (size < minlen) size += size; this_string = realloc (this_string, size); } safe_snprintf (this_string, size, "%s: %s", opengl_version_str, my_string); LOG_TO_CONSOLE (c_yellow2, this_string); my_string = (const char*) glGetString (GL_EXTENSIONS); minlen = strlen (supported_extensions_str) + strlen (my_string) + 3; if (size < minlen) { while (size < minlen) size += size; this_string = realloc (this_string, size); } safe_snprintf (this_string, size, "%s: %s", supported_extensions_str, my_string); LOG_TO_CONSOLE (c_grey1, this_string); free (this_string); return 1; }
int command_update(char *text, int len) { if (custom_update == 0) { LOG_TO_CONSOLE(c_red1, "Custom updates disabled"); } else { start_custom_update(); LOG_TO_CONSOLE(c_green1, "Custom updates started. " "Use #update_status to check progress"); } return 1; }
int set_idle(char *text, int len){ int j,x; char *id; actor *act=NULL; for(j=1;j<len;j++) if(text[j]==' ') {text[j]=0; break;} id=&text[j+1]; x=j; text++; printf("Actor [%s] [%s]\n",text,id); LOCK_ACTORS_LISTS(); for (j = 0; j < max_actors; j++){ if (!strncasecmp(actors_list[j]->actor_name, text, strlen(text)) && (actors_list[j]->actor_name[strlen(text)] == ' ' || actors_list[j]->actor_name[strlen(text)] == '\0')){ struct CalMixer *mixer; act = actors_list[j]; mixer=CalModel_GetMixer(act->calmodel); LOG_TO_CONSOLE(c_orange1, "actor found, adding anims"); printf("actor found\n"); CalMixer_ClearCycle(mixer,act->cur_anim.anim_index, 0.0f); while(*id){ int anim_id; double anim_wg; anim_id=atoi(id); id++; while(*id!=' '&&*id!=0) id++; anim_wg=atof(id); id++; while(*id!=' '&&*id!=0) id++; printf("setting anim %i with weight %f\n",anim_id,anim_wg); if(anim_wg<0) CalMixer_ClearCycle(mixer,actors_defs[act->actor_type].cal_frames[anim_id].anim_index, 0.0f); else CalMixer_BlendCycle(mixer,actors_defs[act->actor_type].cal_frames[anim_id].anim_index,anim_wg, 0.1f); } printf("command added %s\n",id); } } if (!act){ UNLOCK_ACTORS_LISTS(); LOG_TO_CONSOLE(c_orange1, "actor not found"); return 1; } UNLOCK_ACTORS_LISTS(); text[x-1]=' '; return 1; }
// handle context menu options // int Hud_Timer::cm_handler(window_info *win, int option) { switch (option) { case CMHT_MODE: toggle_mode(); break; case CMHT_RUNSTATE: toggle_running(); break; case CMHT_SETTIME: { if (!input) input = new INPUT_POPUP; else close_ipu(input); init_ipu(input, win->window_id, 220, -1, 4, 1, 0, set_timer_time); input->x = -230; input->y = last_base_y_start; display_popup_win(input, hud_timer_popup_title_str); } break; case CMHT_RESET: reset(); break; case CMHT_HELP: { const char *desc = get_option_description("view_hud_timer", INI_FILE_VAR); if (desc && (strlen(desc) > 0)) LOG_TO_CONSOLE(c_green1, desc); } break; case CMHT_KEEPSTATE: break; default: return 0; } return 1; }
void get_storage_text (const Uint8 *in_data, int len) { safe_snprintf(storage_text, sizeof(storage_text), "%.*s", len, in_data); if ((len > 0) && (printing_category > -1) && (next_item_to_print < number_to_print)) { char the_text[MAX_DESCR_LEN+20]; if (!next_item_to_print) { safe_snprintf(the_text, sizeof(the_text), "%s:", &storage_categories[printing_category].name[1] ); LOG_TO_CONSOLE(c_green2, the_text); } safe_snprintf(the_text, sizeof(the_text), "%d %s", print_quanities[next_item_to_print++], &storage_text[1] ); LOG_TO_CONSOLE(c_grey1, the_text); storage_text[0] = '\0'; } }
int put_mark_on_position(int map_x, int map_y, const char * name) { if (map_x < 0 || map_x >= tile_map_size_x*6 || map_y < 0 || map_y >= tile_map_size_y*6) { return 0; } if (max_mark>=MAX_USER_MARKS) { LOG_TO_CONSOLE(c_red2, err_mapmarks_str); return 0; } marks[max_mark].x = map_x; marks[max_mark].y = map_y; memset(marks[max_mark].text,0,sizeof(marks[max_mark].text)); my_strncp(marks[max_mark].text,name,sizeof(marks[max_mark].text)); marks[max_mark].text[strlen(marks[max_mark].text)]=0; marks[max_mark].server_side=0; marks[max_mark].r=curmark_r; marks[max_mark].g=curmark_g; marks[max_mark].b=curmark_b; max_mark++; save_markings(); return 1; }
void print_items(void) { int i; actor *me; me = get_our_actor(); if (me) if(me->fighting) { LOG_TO_CONSOLE(c_red1, "You can't do this during combat!"); return; } /* request the description for each item */ number_to_print = next_item_to_print = 0; printing_category = selected_category; for (i = 0; i < no_storage && i < STORAGE_ITEMS_SIZE; i++) { if (storage_items[i].quantity) { Uint8 str[3]; print_quanities[number_to_print++] = storage_items[i].quantity; str[0]=LOOK_AT_STORAGE_ITEM; *((Uint16*)(str+1))=SDL_SwapLE16(storage_items[i].pos); my_tcp_send(my_socket, str, 3); } } }
void fill_encyclopedia_win () { set_window_handler (encyclopedia_win, ELW_HANDLER_DISPLAY, &display_encyclopedia_handler); set_window_handler (encyclopedia_win, ELW_HANDLER_CLICK, &click_encyclopedia_handler); encyclopedia_scroll_id = vscrollbar_add_extended(encyclopedia_win, encyclopedia_scroll_id, NULL, encyclopedia_menu_x_len-20, 0, 20, encyclopedia_menu_y_len, 0, 1.0, newcol_r, newcol_g, newcol_b, 0, 30, Page[currentpage].max_y); if (numpage<=0) { LOG_TO_CONSOLE(c_red1, cant_load_encycl); return; } #ifdef ENCYCL_NAVIGATION set_window_handler(encyclopedia_win, ELW_HANDLER_MOUSEOVER, &mouseover_encyclopedia_handler); set_window_handler(encyclopedia_win, ELW_HANDLER_KEYPRESS, &keypress_encyclopedia_handler); if (!cm_valid(cm_encycl)) { cm_encycl = cm_create(cm_encycl_base_str, cm_encycl_handler); cm_set_pre_show_handler(cm_encycl, cm_encycl_pre_show_handler); cm_add_window(cm_encycl, encyclopedia_win); init_ipu(&ipu_encycl, -1, -1, -1, 1, 1, NULL, NULL); find_base_pages(); process_encycl_links(); } #endif }
int keypress_update_root_handler (window_info *win, int mx, int my, Uint32 key, Uint32 unikey) { Uint16 keysym = key & 0xffff; // first, try to see if we pressed Alt+x, to quit. if ( check_quit_or_fullscreen (key) ) { return 1; } else if (keysym == SDLK_RETURN) { exit_now = 1; return 1; } else if (keysym == SDLK_ESCAPE) { update_countdown = -1; hide_window(update_root_win); show_window(window_to_show); LOG_TO_CONSOLE(c_red2, "You need to restart the client to activate the updates!"); return 1; } return 1; }
void load_mines_config() { xmlDoc *doc; xmlNode *root = NULL; char *file = "mines.xml"; if ((doc = xmlReadFile(file, NULL, 0)) == NULL) { char str[200]; safe_snprintf(str, sizeof(str), "%s: %s", mines_config_open_err_str, file); LOG_ERROR(str); LOG_TO_CONSOLE(c_red1,str); } // Can we find a root element else if ((root = xmlDocGetRootElement(doc)) == NULL) { LOG_ERROR("%s: No XML root element found in '%s'", mines_config_error, file); } // Is the root the right type? else if (xmlStrcmp(root->name, (xmlChar*)"mines")) { LOG_ERROR("%s: Invalid root element '%s' in '%s'", mines_config_error, root->name, file); } // We've found our expected root, now parse the children else { parse_mine_defs(root); } xmlFree(doc); }
void List::help_if_needed(void) { if (shown_help) return; if (!info_available()) { std::string url("Download from: http://el.other-life.com/downloads/item_info.txt"); find_all_url(url.c_str(), url.size()); LOG_TO_CONSOLE(c_red1, "Could not load the item information file."); LOG_TO_CONSOLE(c_red1, url.c_str()); LOG_TO_CONSOLE(c_red1, "Save the file in the data or updates/x_y_z directory then restart."); } if (!item_uid_enabled) LOG_TO_CONSOLE(c_red1, "Use #item_uid (set to 1) to enable unique item information."); shown_help = true; }
int command_mark_color(char *text, int len) { char str[512]; while (isspace(*text)) text++; if(*text) { int r=-1,g,b; if(sscanf(text,"%d %d %d",&r,&g,&b)==3) { if(!(r>=0&&r<=255&&g>=0&&g<=255&&b>=0&&b<=255)) r=-1; //don't set color } else { if(strcasecmp(text,"red")==0) {r=255;g=0;b=0;} else if(strcasecmp(text,"blue")==0) {r=0;g=0;b=255;} else if(strcasecmp(text,"green")==0) {r=0;g=255;b=0;} else if(strcasecmp(text,"yellow")==0) {r=255;g=255;b=0;} else if(strcasecmp(text,"cyan")==0) {r=0;g=255;b=255;} else if(strcasecmp(text,"magenta")==0) {r=255;g=0;b=255;} else if(strcasecmp(text,"white")==0) {r=255;g=255;b=255;} } if(r>-1) { //set color curmark_r=r; curmark_g=g; curmark_b=b; } } safe_snprintf (str, sizeof(str), "Current marker color is (RGB): %d %d %d", curmark_r,curmark_g,curmark_b); LOG_TO_CONSOLE(c_orange1,str); return 1; }
void init_session(void) { int save_server = 1; /* if we have server info saved, compare with current */ if (last_port > 0) { /* if changed, we need to reset the session stats */ if ((last_port != port) || (strcmp((char *)last_server_address, (char *)server_address))) { LOG_TO_CONSOLE(c_red2,"Server changed so resetting session stats"); reconnecting = 0; } /* else if the same, no need */ else save_server = 0; } /* save the server info if first time or changed */ if (save_server) { last_port = port; safe_strncpy((char *)last_server_address, (char *)server_address, sizeof(last_server_address)); } if (!reconnecting){ set_session_exp_to_current(); session_start_time = cur_time; reconnecting = 1; } else if ( disconnect_time != 0 ) { session_start_time += (cur_time-disconnect_time); disconnect_time = 0; } }
int command_unmark_special(char *text, int len, int do_log) { int i; while (isspace(*text)) text++; if(*text) { for (i = 0; i < max_mark; i ++) { if (my_strcompare(marks[i].text, text) && (marks[i].x != -1) && !marks[i].server_side) { char str[512]; marks[i].x = marks[i].y = -1; if (do_log) { safe_snprintf(str, sizeof(str), unmarked_str, marks[i].text); LOG_TO_CONSOLE(c_orange1, str); } save_markings(); load_map_marks(); // simply to compact the array and make room for new marks break; } } } return 1; }
int command_unignore(char *text, int len) { char name[MAX_USERNAME_LENGTH]; char str[200]; int i; Uint8 ch = '\0'; int result; while (isspace(*text)) text++; for (i = 0; i < MAX_USERNAME_LENGTH - 1; i++) { ch = text[i]; if (ch == ' ' || ch == '\0') { break; } name[i] = ch; } name[i] = '\0'; if (i >= MAX_USERNAME_LENGTH - 1 && text[i] != '\0') // This is the max chrs of name but isn't a null terminator { safe_snprintf (str, sizeof (str), "%s %s", name_too_long, not_removed_from_ignores); LOG_TO_CONSOLE (c_red1, str); return 1; } if (i < 3) { safe_snprintf (str, sizeof (str), "%s %s", name_too_short, not_removed_from_filter); LOG_TO_CONSOLE (c_red1, str); return 1; } result = remove_from_ignore_list (name); if (result == -1) { safe_snprintf (str, sizeof (str), not_ignoring, name); LOG_TO_CONSOLE (c_red1, str); } else { safe_snprintf (str, sizeof (str), removed_from_ignores, name); LOG_TO_CONSOLE (c_green1, str); } return 1; }
int horse_cmd(char* text, int len){ int j,x; char *id; actor *act=NULL; for(j=1;j<len;j++) if(text[j]==' ') {text[j]=0; break;} id=&text[j+1]; x=j; text++; printf("Actor [%s] [%s] [%i]\n",text,id,atoi(id)); LOCK_ACTORS_LISTS(); for (j = 0; j < max_actors; j++){ if (!strncasecmp(actors_list[j]->actor_name, text, strlen(text)) && (actors_list[j]->actor_name[strlen(text)] == ' ' || actors_list[j]->actor_name[strlen(text)] == '\0')){ act = actors_list[j]; LOG_TO_CONSOLE(c_orange1, "actor found, adding horse"); } } text[x-1]=' '; if (!act){ UNLOCK_ACTORS_LISTS(); LOG_TO_CONSOLE(c_orange1,"Actor doesn't exist"); return 1; // Eek! We don't have an actor match... o.O } act->sit_idle=act->stand_idle=0; if(act->attached_actor>=0){ //remove horse remove_actor_attachment(act->actor_id); LOG_TO_CONSOLE(c_orange1,"De-horsified"); } else { //add horse int hh=atoi(id); if (hh<=0) hh=200; add_actor_attachment(act->actor_id, hh); LOG_TO_CONSOLE(c_orange1,"Horsified"); } UNLOCK_ACTORS_LISTS(); return 1; }
int command_ver(char *text, int len) { char str[250]; print_version_string(str, sizeof(str)); LOG_TO_CONSOLE(c_green1, str); return 1; }
int click_update_root_abort () { update_countdown = -1; hide_window(update_root_win); show_window(window_to_show); LOG_TO_CONSOLE(c_red2, "You need to restart the client to activate the updates!"); return 1; }