/************************** Description ************************************* * Snippit name: object find wear location * * * * Description: * * Loop through all objects, returning a list of all with a given wear * * location * * * * Exampel: * * ofwl arms , This will retutn all objects with wear location arms * ****************************************************************************/ /****************************** Install ************************************* * Add this in the end of act_wiz. (From after * Copy from here *) * * interp.h: * * Add DECLARE_DO_FUN( do_objectfindwearlocation ); in the end of the file * * interp.c: * * Add: * * { "ofwl", do_objectfindwearlocation, POS_RESTING, 0, LOG_NORMAL, 1 }, * ****************************************************************************/ // * Copy from here * /************************** License ***************************************** * Fate of Kingdoms 4.0 is copyright 2000-???? Christian Tusborg (Kazmir) * * By using this code, you have agreed to follow the terms of the * * Fate of Kingdoms snippit license. * * License: * * Anyone is allowed to use this snippit, as long you keep this header. * * Fate of kingdoms or Fate of Kingdoms staff can not be hold responsible. * * for any damage this snippit may cause on your mud. * * * * Original Fate of Kingdom Mud (mud.kingdom.dk 4000) * * Homepage: http://www.kingdom.dk * * Fate of Kingdoms publish by snippit@kingdom.dk * * Bug reporting: snpbug@kingdom.dk * ****************************************************************************/ void do_objectfindwearlocation( CHAR_DATA *ch, char *argument ) /***************************************************************************** Called By: File: interp.c | Function: interpret( CHAR_DATA *ch, char *argument ) Pre: ch != NULL | ON PRE ERROR: return and and inform player |if ch == NULL then report bug and abort Post: Send object with a give argument as wear location; Mobile: Nothing prevent mobiles in this function *****************************************************************************/ /* Note: * Yeah, so what it take over all vnum's (like 10,000 loops). * Get_obj_index is fast, and I don't feel like threading another link. */ { //extern var extern int top_obj_index; //internal var char buf[MAX_STRING_LENGTH]; char arg[MAX_INPUT_LENGTH]; char arg1[MAX_INPUT_LENGTH]; OBJ_INDEX_DATA *pObjIndex = NULL; int vnum = -1; int nMatch = 0; bool fAll = FALSE; bool found = FALSE; int intFind = 0; int intFound = -1; if (ch == NULL) { bug( "*BUG* File: objectfindwearlocation.c | Function: do_objectfindwearlocation | Error: ch = NULL",0 ); return; } //Splitting argument argument = one_argument( argument, arg ); one_argument( argument, arg1 ); //Do player use an argument? if ( arg[0] == '\0' ) { //Give list with vnums send_to_char( "Syntax: ofwl .\n\r", ch ); //Give list without vnums send_to_char( "Syntax: ofwl .\n\r", ch ); return; } //Did user write a real wear location? for ( intFind = 0; wear_flags[intFind].name != NULL; intFind++) { //check if wear location found. if (!str_cmp (wear_flags[intFind].name, argument)) intFound = intFind; } //The wear location was NOT right if (intFound < 0) return; //For all objects on the mud. for ( vnum = 0; nMatch < top_obj_index; vnum++ ) { if ( ( pObjIndex = get_obj_index( vnum ) ) != NULL ) { nMatch++; //Check if right wear location if ( fAll || CAN_WEAR(pObjIndex, wear_flags[intFound].bit) ) { found = TRUE; //how do we write it to the player. if (str_cmp(arg1,"nonvnum")) sprintf( buf, "[%5d] %s\n\r",pObjIndex->vnum, pObjIndex->short_descr ); else sprintf( buf, "%s\n\r",pObjIndex->short_descr ); //Send it to the player. send_to_char( buf, ch ); } } } //We didn't find any objects with the wear location. if ( !found ) send_to_char( "No objects with this wear location found.\n\r", ch ); return; }