⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 char_item.c.bak

📁 石器时代8.0服务端完整源代码。可以直接编译
💻 BAK
📖 第 1 页 / 共 5 页
字号:
}				CHAR_setInt( pindex, CHAR_PUTPETTIME, 0);				*contents = pindex;				*objindex = index;				return 2;			}		}	}	return -1;}void CHAR_PickUpItem( int charaindex, int dir ){	int i;	int dirx[2],diry[2];	int searchloopcount=0;	if( !CHAR_CHECKINDEX(charaindex) )return;	if( CHAR_getFlg( charaindex,CHAR_ISDIE ) )return;	if( CHAR_getWorkInt( charaindex,CHAR_WORKBATTLEMODE ) )return;	if( dir < 0 ){		searchloopcount = 1;		dirx[0] = 0;		diry[0] = 0;	}else{		if( dir != CHAR_getInt( charaindex, CHAR_DIR)) {			VALIDATEDIR(dir);			CHAR_setInt(charaindex,CHAR_DIR,dir);			CHAR_sendWatchEvent(CHAR_getWorkInt(charaindex,CHAR_WORKOBJINDEX),								CHAR_ACTSTAND,NULL,0,FALSE);		}		dirx[0] = CHAR_getDX(CHAR_getInt(charaindex,CHAR_DIR));		diry[0] = CHAR_getDY(CHAR_getInt(charaindex,CHAR_DIR));		dirx[1] = 0;		diry[1] = 0;		searchloopcount=2;	}	for( i = 0 ; i < searchloopcount ; i ++ ){		int contents,objindex;		int fl = CHAR_getInt(charaindex,CHAR_FLOOR);				int y  = CHAR_getInt(charaindex,CHAR_Y)+diry[i];		int x  = CHAR_getInt(charaindex,CHAR_X)+dirx[i];		int ret = CHAR_PickUpItemFXY( charaindex,fl,x,y,&contents,									  &objindex);		switch( ret ){		case 0:			CHAR_ObjectDelete(objindex);			{				char    mesg[256];#ifdef _DROPSTAKENEW				int j = 0;				int dropflag = 0;				for(j = 0; j < arraysizeof(casinomap); j++)				{					if(CHAR_getInt(charaindex, CHAR_FLOOR) == casinomap[j].casinofl)					{						if(x == casinomap[j].casinox && y == casinomap[j].casinoy)						{							dropflag = 1;							break;						}					}				}				if(ITEM_getInt(contents, ITEM_ID) == CASINOTOKENID && dropflag == 1)					snprintf( mesg,sizeof(mesg), "拾回%s,已将下注取消!",					ITEM_getAppropriateName(contents));				else#endif				snprintf( mesg,sizeof(mesg), "拾获 %s",						  ITEM_getAppropriateName(contents) );				CHAR_talkToCli(charaindex,-1,mesg,CHAR_COLORWHITE);			}			{				LogItem(					CHAR_getChar( charaindex, CHAR_NAME ),					CHAR_getChar( charaindex, CHAR_CDKEY ),#ifdef _add_item_log_name  // WON ADD 在item的log中增加item名称					contents,#else					ITEM_getInt(contents, ITEM_ID),#endif					"PickUp(捡起道具)",					CHAR_getInt( charaindex,CHAR_FLOOR),					CHAR_getInt( charaindex,CHAR_X ), 	      			CHAR_getInt( charaindex,CHAR_Y ),					ITEM_getChar( contents, ITEM_UNIQUECODE),					ITEM_getChar( contents, ITEM_NAME),					ITEM_getInt( contents, ITEM_ID)				);			}			return;			break;		case 1:			CHAR_send_P_StatusString( charaindex, CHAR_P_STRING_GOLD);			if( OBJECT_getIndex( objindex) == 0 ) {				CHAR_ObjectDelete(objindex);			}else {				CHAR_sendWatchEvent(objindex,CHAR_ACTSTAND,NULL,0,TRUE);			}			{				char    mesg[256];				if( contents == 0 ) {					snprintf( mesg,sizeof(mesg), "无法再拾获Stone了。" );				}else {					snprintf( mesg,sizeof(mesg), "拾获 %d Stone",contents );				}				CHAR_talkToCli(charaindex,-1,mesg,CHAR_COLORWHITE);			}			if( contents != 0 ){			     LogStone(										-1,			             CHAR_getChar( charaindex, CHAR_NAME ),			             CHAR_getChar( charaindex, CHAR_CDKEY ),			             contents,						 CHAR_getInt( charaindex, CHAR_GOLD ),			             "PickUp(拾获金钱)",			             CHAR_getInt( charaindex,CHAR_FLOOR),			             CHAR_getInt( charaindex,CHAR_X ),			             CHAR_getInt( charaindex,CHAR_Y )			             );			}			return;			break;		case 2:	//宠物			CHAR_ObjectDelete(objindex);			CHAR_setWorkInt( contents, CHAR_WORKOBJINDEX, -1);			{				char    mesg[256];				char    *p = NULL;				p = CHAR_getChar( contents, CHAR_USERPETNAME);				if( strlen( p) == 0 ) {					p = CHAR_getChar( contents, CHAR_NAME);				}				snprintf( mesg,sizeof(mesg), "拾获 %s", p);				CHAR_talkToCli(charaindex,-1,mesg,CHAR_COLORWHITE);			}			// 矢永玄毛胶匀凶夫弘			LogPet(				CHAR_getChar( charaindex, CHAR_NAME ), /* 平乓仿   */				CHAR_getChar( charaindex, CHAR_CDKEY ),				CHAR_getChar( contents, CHAR_NAME),				CHAR_getInt( contents, CHAR_LV),				"PickUp(捡宠)",				CHAR_getInt( charaindex,CHAR_FLOOR),				CHAR_getInt( charaindex,CHAR_X ),				CHAR_getInt( charaindex,CHAR_Y ),				CHAR_getChar( contents, CHAR_UNIQUECODE)   // shan 2001/12/14			);			return;			break;		// Robin 0701 petFollow		case 3:			/*  引歹曰卞仇木毛壅六午中丹    */			CHAR_ObjectDelete(objindex);			CHAR_setWorkInt( contents, CHAR_WORKOBJINDEX, -1);			{				char    mesg[256];				char    *p = NULL;				p = CHAR_getChar( contents, CHAR_USERPETNAME);				if( strlen( p) == 0 ) {					p = CHAR_getChar( contents, CHAR_NAME);				}				snprintf( mesg,sizeof(mesg), "拾回 %s", p);				CHAR_talkToCli(charaindex,-1,mesg,CHAR_COLORWHITE);			}			// 矢永玄毛胶匀凶夫弘			LogPet(				CHAR_getChar( charaindex, CHAR_NAME ), /* 平乓仿   */				CHAR_getChar( charaindex, CHAR_CDKEY ),				CHAR_getChar( contents, CHAR_NAME),				CHAR_getInt( contents, CHAR_LV),				"FollowPickUp(收回溜宠)",				CHAR_getInt( charaindex,CHAR_FLOOR),				CHAR_getInt( charaindex,CHAR_X ),				CHAR_getInt( charaindex,CHAR_Y ),				CHAR_getChar( contents, CHAR_UNIQUECODE)   // shan 2001/12/14			);			return;			break;				case -1:			break;		case -2:			CHAR_talkToCli( charaindex,-1,"道具栏已满。", CHAR_COLORYELLOW);			break;		case -3:			CHAR_talkToCli( charaindex,-1,"宠物数已满。", CHAR_COLORYELLOW);			break;		case -4:			CHAR_talkToCli( charaindex,-1,"无法照顾该宠物。", CHAR_COLORYELLOW);			break;		case -5:			CHAR_talkToCli( charaindex,-1,"无法拾获该宠物。", CHAR_COLORYELLOW);			break;		case -6:			CHAR_talkToCli( charaindex,-1,"无法拾获该道具。", CHAR_COLORYELLOW);			break;		default:			return;		}	}	return;}/*------------------------------------------------------------ * 云嗯毛甄  隙烂匹  公丹午允月[CHAR_DropMoney井日及心匹银丹仪[ * 娄醒 *  charaindex  int     平乓仿奶件犯永弁旦 *  itemindex   int     失奶  丞奶件犯永弁旦(平乓仿犯□正及  匹及) *  fl          int     白夫失 *  x           int     x *  y           int     y *  force       BOOL    仇及袄互恳分午    泫    允 *  objindex    int*      中凶失奶  丞及 Object 匹及奶件犯弁永旦 * 忒曰袄 *  撩  (公氏卅卞云嗯毛  匀化中卅中)    -1 *  撩  (哗溥读卞分户)  -2 *  公木动陆及撩    -3 *  撩  (公仇卞反公及汹及云嗯反聂允亢月)    -4 *  允匹卞职及失奶  丞互  切化中月  -5 *  汹互  匹  [ -6 *  岳      0 ------------------------------------------------------------*/static BOOL CHAR_DropMoneyFXY( int charaindex, int amount, int fl , int x,							   int y, BOOL force, int* objindex ){	OBJECT  object;	int MaxGold;	int mygold = CHAR_getInt( charaindex, CHAR_GOLD );	if( amount <= 0 )return -6;	if( amount > mygold )		return -1;	MaxGold = CHAR_getMaxHaveGold( charaindex);	if ((mygold <0) || (mygold > MaxGold))	return -1;                                                                              		if( MAP_walkAbleFromPoint( fl,x,y,FALSE ) == FALSE )return -2;	for( object=MAP_getTopObj(fl,x,y) ; object;		 object = NEXT_OBJECT(object) ){		int index = GET_OBJINDEX(object);		int objtype = OBJECT_getType(index);		if( objtype == OBJTYPE_NOUSE ) continue;		else if( objtype == OBJTYPE_GOLD ){			long tmpamount = OBJECT_getIndex(index) + amount;			if( tmpamount  > MaxGold )				return -4;			OBJECT_setIndex(index,tmpamount);			CHAR_setInt(charaindex,CHAR_GOLD,						(unsigned int)CHAR_getInt(charaindex,												  CHAR_GOLD )						- amount );			*objindex = index;#ifdef _DEL_DROP_GOLD			OBJECT_setTime( index, NowTime.tv_sec);#endif			if( amount >= 100 ){ /* 云嗯毛  中凶夫弘 */			        LogStone(-1,CHAR_getChar( charaindex, CHAR_NAME ), /* 平乓仿   */			                 CHAR_getChar( charaindex, CHAR_CDKEY ), /* 交□扒□ID */			                 amount,                                   /* 嗯喊 */							 CHAR_getInt( charaindex, CHAR_GOLD ),			                 "Drop(放置金钱)",			                 CHAR_getInt( charaindex,CHAR_FLOOR),			                 CHAR_getInt( charaindex,CHAR_X ),			                 CHAR_getInt( charaindex,CHAR_Y )			                 );			}			return 0;		}else if( objtype == OBJTYPE_ITEM ){			if( force==TRUE )				continue;			else				/* 允匹卞失奶  丞互丐月及匹分户 */				return -5;		}	}	/* 仇仇引匹谗琼允月午中丹仪反蕙筋瓒  允月 */	{		Object  one;		one.type = OBJTYPE_GOLD;		one.x = x;		one.y = y;		one.floor = fl;		if( amount > MaxGold )			return -4;		one.index = amount;		*objindex = initObjectOne( &one );		/*  左皮斥尼弁玄瓒  允月    */		if( *objindex == -1 )			/*  瓒  撩      */			return -3;		/*云嗯毛蛹日允*/		CHAR_setInt(charaindex,CHAR_GOLD,					(unsigned int)CHAR_getInt(charaindex,CHAR_GOLD )					- amount );#ifdef _DEL_DROP_GOLD		OBJECT_setTime( *objindex, NowTime.tv_sec);#endif		if( amount >= 100 ){ /* 云嗯毛  中凶夫弘 */		      LogStone(-1,CHAR_getChar( charaindex, CHAR_NAME ), /* 平乓仿   */		               CHAR_getChar( charaindex, CHAR_CDKEY ), /* 交□扒□ID */		               amount,                                   /* 嗯喊 */					   CHAR_getInt( charaindex, CHAR_GOLD ),		               "Drop(放置金钱)",		               CHAR_getInt( charaindex,CHAR_FLOOR),		               CHAR_getInt( charaindex,CHAR_X ),		               CHAR_getInt( charaindex,CHAR_Y )		               );		}		return 0;	}}/*------------------------------------------------------------ * 云嗯毛  允楮醒[  及蟆井日  允[ * 娄醒 *  charaindex      int     平乓仿奶件犯永弁旦 *  amount          int     云嗯及汹 * * 忒曰袄 *  卅仄 ------------------------------------------------------------*/void CHAR_DropMoney( int charaindex,  int amount ){	int dirx[9],diry[9];	int ret;	int i;	int objindex, MaxGold;	if( !CHAR_CHECKINDEX( charaindex ) )return;#ifdef _AVID_TRADETRYBUG //丢出石币	if( CHAR_getWorkInt( charaindex, CHAR_WORKTRADEMODE) == CHAR_TRADE_TRADING ){		CHAR_talkToCli( charaindex, -1, "交易状态中无法丢出石币。", CHAR_COLORYELLOW );		return;	}#endif	MaxGold = CHAR_getMaxHaveGold( charaindex);	if( CHAR_getFlg( charaindex,CHAR_ISDIE ) )return;	//ANDY_ADD	12/28	{		int money=0;		money = CHAR_getInt( charaindex, CHAR_GOLD );		if( money < 0 )	{			CHAR_setInt( charaindex, CHAR_GOLD, 0);			return;		}		if( (amount > money) || (money > MaxGold))	{			if( money > MaxGold )	{				CHAR_setInt( charaindex, CHAR_GOLD, 0 );				print("\n ERR: %s(stone%d) dropMoney%d > CHAR_MAXGOLDHAVE !!",						CHAR_getChar(charaindex, CHAR_CDKEY), money, amount);			}else	{				print("\n ERR: %s dropMoney > CHAR_GOLD !!", CHAR_getChar(charaindex, CHAR_CDKEY));			}			CHAR_send_P_StatusString( charaindex, CHAR_P_STRING_GOLD);			return;		}	}	//ANDY_END	for( i  = 0 ; i < 7 ; i  ++ ){		dirx[i+2] = CHAR_getDX( CHAR_getInt(charaindex,CHAR_DIR) + i+1 );		diry[i+2] = CHAR_getDY( CHAR_getInt(charaindex,CHAR_DIR) + i+1 );	}	dirx[0] = CHAR_getDX(CHAR_getInt(charaindex,CHAR_DIR));	diry[0] = CHAR_getDY(CHAR_getInt(charaindex,CHAR_DIR));	dirx[1] = 0;	diry[1] = 0;	for( i = 0 ; i < 9 ; i ++ ){		int x = CHAR_getInt(charaindex,CHAR_X) + dirx[i];		int y = CHAR_getInt(charaindex,CHAR_Y) + diry[i];// CoolFish 2002/04/06 下注处不可丢置石币#ifdef _DROPSTAKENEW		{			int j = 0;			for(j = 0; j < arraysizeof(casinomap); j++)			{				if(CHAR_getInt(charaindex, CHAR_FLOOR) == casinomap[j].casinofl)				{					if (x == casinomap[j].casinox && y == casinomap[j].casinoy)					{						CHAR_talkToCli(charaindex, -1, "

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -