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

📄 char_item.c.bak

📁 石器时代8.0服务端完整源代码。可以直接编译
💻 BAK
📖 第 1 页 / 共 5 页
字号:
							CHAR_talkToCli(charaindex, -1, "现在无法下注!", CHAR_COLORYELLOW);							return;						}else{							snprintf(tmpbuf, sizeof(tmpbuf), "你在 %s 下注了一张彩券", casinomap[j].casinoinfo);							if(dropflag >= MAXSTAKENUM){								snprintf(tmpbuf, sizeof(tmpbuf), "你已经下注五次了,无法再下注!");								CHAR_talkToCli(charaindex, -1, tmpbuf, CHAR_COLORYELLOW);								return;							}							for(k = 0; k < MAXSTAKENUM; k++){								if(CHAR_getWorkInt(charaindex, CHAR_WORKSTAKETYPE1 + k) == 0){									CHAR_setWorkInt(charaindex, CHAR_WORKSTAKETYPE1 + k, casinomap[j].casinotype);									casinomap[j].stakenum = casinomap[j].stakenum + 1;									if(casinomap[j].stakenum >= 100000000)										casinomap[j].stakenum = 100000000;									dropflag++;									if(casinomap[j].stakenum <= 1)										bdropstake = 1;									break;								}							}						}						CHAR_talkToCli(charaindex, -1, tmpbuf, CHAR_COLORYELLOW);#ifdef _FIX_GAMBLENUM								//做扣点的动作						if (dropflag <= MAXSTAKENUM){							int nAcc = CHAR_getInt(charaindex, CHAR_GAMBLENUM);                                															nAcc -= casinomap[j].accumulation;							CHAR_setInt(charaindex, CHAR_GAMBLENUM, nAcc);														}#endif						if (dropflag >= MAXSTAKENUM){							dropflag = 0;							for (k = 0; k < MAXSTAKENUM ; k++){								if (CHAR_getWorkInt(charaindex, CHAR_WORKSTAKETYPE1 + k) > 0)									dropflag++;							}							CHAR_setWorkInt(charaindex, CHAR_WORKSTAKEFLAG, dropflag);						}else{							CHAR_setWorkInt(charaindex, CHAR_WORKSTAKEFLAG, dropflag);						}						continue;					}				}			}			// 此地方的彩券数量超过一张以上			if(bdropstake == 0 && casinoflag != 0){				CHAR_setItemIndex(charaindex, itemcharaindex ,-1);				CHAR_sendItemDataOne(charaindex, itemcharaindex);				LogItem(CHAR_getChar(charaindex, CHAR_NAME),						CHAR_getChar(charaindex, CHAR_CDKEY),#ifdef _add_item_log_name  // WON ADD 在item的log中增加item名称						itemindex,#else						ITEM_getInt(itemindex, ITEM_ID),#endif						"StakeDrop(丢出彩券)",						CHAR_getInt(charaindex,CHAR_FLOOR),						CHAR_getInt(charaindex,CHAR_X), 						CHAR_getInt(charaindex,CHAR_Y),						ITEM_getChar(itemindex, ITEM_UNIQUECODE),					ITEM_getChar( itemindex, ITEM_NAME),					ITEM_getInt( itemindex, ITEM_ID)						);				return;			}		}#endif		{			int ret = CHAR_DropItemFXY( charaindex,itemcharaindex,									CHAR_getInt(charaindex,CHAR_FLOOR), x, y,  &objindex );			switch( ret ){			case 0:					droped = 1;#ifdef _ITEM_ORNAMENTS	// WON FIX			if( ITEM_getWorkInt( itemindex, ITEM_CANPICKUP) > 0 ){				ITEM_setInt( itemindex, ITEM_PUTTIME, NowTime.tv_sec + 60*5);			}else{				ITEM_setInt( itemindex, ITEM_PUTTIME, NowTime.tv_sec);			}#else			ITEM_setInt( itemindex, ITEM_PUTTIME, NowTime.tv_sec);#endif				goto END;				break;			case -1:			case -2:				break;			case -3:			default:				return;				break;			}#ifdef _DROPSTAKENEW		}#endif	}#ifdef _DROPCHECK		if( droped != 1 ) {		CHAR_talkToCli( charaindex, -1, "周围的地面已经满了。", CHAR_COLORYELLOW );		return;	}#endifEND:	CHAR_sendWatchEvent( objindex, CHAR_ACTSTAND, NULL, 0, TRUE);	CHAR_setItemIndex( charaindex, itemcharaindex ,-1);{	char	category[3];	snprintf( category,sizeof( category),"J%d", itemcharaindex);	CHAR_sendStatusString( charaindex , category);}	if( CHAR_complianceParameter( charaindex ) ){		CHAR_sendCToArroundCharacter( CHAR_getWorkInt( charaindex, CHAR_WORKOBJINDEX) );	}	if( CHAR_getInt( charaindex, CHAR_WHICHTYPE) == CHAR_TYPEPLAYER) {		CHAR_send_P_StatusString( charaindex,								  CHAR_P_STRING_HP|CHAR_P_STRING_MAXHP|								  CHAR_P_STRING_MP|CHAR_P_STRING_MAXMP|								  CHAR_P_STRING_ATK|CHAR_P_STRING_DEF|								  CHAR_P_STRING_QUICK|CHAR_P_STRING_CHARM|								  CHAR_P_STRING_LUCK|CHAR_P_STRING_EARTH|								  CHAR_P_STRING_WATER|CHAR_P_STRING_FIRE|								  CHAR_P_STRING_WIND								);        CHAR_sendItemDataOne( charaindex, itemcharaindex);	}	return;}#endifint CHAR_DropItemAbsolute( int itemindex, int floor, int x, int y,						   BOOL net){	Object object;	int objindex;	if( !ITEM_CHECKINDEX( itemindex) )return FALSE;	object.type = OBJTYPE_ITEM;	object.index = itemindex;	object.x = x;	object.y = y;	object.floor = floor;	objindex = initObjectOne( &object );	ITEM_setWorkInt( itemindex,ITEM_WORKOBJINDEX, objindex );	ITEM_setWorkInt( itemindex,ITEM_WORKCHARAINDEX, -1 );	if( net )		CHAR_sendWatchEvent( objindex,CHAR_ACTSTAND,NULL,0,TRUE);	return objindex;}int  CHAR_addItemSpecificItemIndex( int charaindex, int itemindex ){	int emptyindex;	if( CHAR_CHECKINDEX( charaindex) == FALSE) return -1;	if( ITEM_CHECKINDEX( itemindex) == FALSE) return -1;	emptyindex = CHAR_findEmptyItemBox( charaindex );	if( emptyindex == -1 ){		return CHAR_MAXITEMHAVE;	}else{		CHAR_setItemIndex(charaindex,emptyindex,itemindex);		ITEM_setWorkInt(itemindex,ITEM_WORKCHARAINDEX,charaindex);		ITEM_setWorkInt(itemindex,ITEM_WORKOBJINDEX,-1);	}	return emptyindex;}static int CHAR_PickUpItemFXY( int charaindex, int fl ,int x , int y ,							   int* contents,int* objindex ){	OBJECT  object;	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_ITEM ){			int ret;			int itemindex = OBJECT_getIndex( index);#ifdef _MARKET_TRADE	//买			if( ITEM_getWorkInt( itemindex, ITEM_WORKTRADETYPE) == TRADETYPE_SELL )	{				MAP_TRADEPICKUP( charaindex, itemindex, fl, x, y, TRADEITEMTYPE);				return -1;			}#endif#ifdef _ITEM_ORNAMENTS			if( ITEM_getWorkInt( itemindex, ITEM_CANPICKUP) > 0 ){				return -1;			}#endif#ifdef _DROPSTAKENEW			// 判断物品是否为彩券			if(ITEM_getInt(itemindex, ITEM_ID) == CASINOTOKENID){				int i = 0;				int bdropstake = 0, casinoflag = 0, emptyitemindexinchara = -1;				for(i = 0; i < arraysizeof(casinomap); i++){					if(fl == casinomap[i].casinofl){						if(x == casinomap[i].casinox && y == casinomap[i].casinoy){							int j = 0, stakeflag = 0;							int pickupflag = 0;							casinoflag = 1;							if(casinomap[i].dropflag == 0){								CHAR_talkToCli(charaindex, -1, "现在已经无法取回下注彩券了!", CHAR_COLORYELLOW);								return -1;							}							stakeflag = CHAR_getWorkInt(charaindex, CHAR_WORKSTAKEFLAG);							if(stakeflag == 0){								CHAR_talkToCli(charaindex, -1, "您并没有下注,所以无法取回彩券!", CHAR_COLORYELLOW);								return -1;							}							for(j = 0; j < MAXSTAKENUM; j++){								if(CHAR_getWorkInt(charaindex, CHAR_WORKSTAKETYPE1 + j) == casinomap[i].casinotype){									emptyitemindexinchara = CHAR_findEmptyItemBox(charaindex);								   if(emptyitemindexinchara < 0) return -2;									CHAR_setWorkInt(charaindex, CHAR_WORKSTAKETYPE1 + j, 0);									casinomap[i].stakenum = casinomap[i].stakenum - 1;									stakeflag--;									pickupflag = 1;#ifdef _FIX_GAMBLENUM									//做加点的动作									{										int nAcc = CHAR_getInt(charaindex, CHAR_GAMBLENUM);																				nAcc += casinomap[i].accumulation;										CHAR_setInt(charaindex, CHAR_GAMBLENUM, nAcc);																			}#endif									if(casinomap[i].stakenum <= 0){										bdropstake = 1;										casinomap[i].stakenum = 0;									}									break;								}							}							if(stakeflag < 0){								stakeflag = 0;								for(j = 0; j < MAXSTAKENUM; j++){									if(CHAR_getWorkInt(charaindex, CHAR_WORKSTAKETYPE1 + j) > 0)										stakeflag++;								}								CHAR_setWorkInt(charaindex, CHAR_WORKSTAKEFLAG, stakeflag);							}else								CHAR_setWorkInt(charaindex, CHAR_WORKSTAKEFLAG, stakeflag);							if(pickupflag == 0){								CHAR_talkToCli(charaindex, -1, "您没有在此下注,所以无法取回彩券!", CHAR_COLORYELLOW);								return -1;							}						}					}				}								if(bdropstake == 0 && casinoflag != 0){// 此地方的彩券数量超过一张以上					char tmpbuf[256];					if(emptyitemindexinchara != -1){						int itemid=-1, ret=-1;						itemid = ITEM_makeItemAndRegist(CASINOTOKENID);						if(itemid == -1) return -1;						ret = CHAR_addItemSpecificItemIndex( charaindex, itemid);						if( ret < 0 || ret >= CHAR_MAXITEMHAVE ) {							ITEM_endExistItemsOne( itemid );							return -1;						}					}					CHAR_sendItemDataOne(charaindex, emptyitemindexinchara);					snprintf(tmpbuf, sizeof(tmpbuf), "拾回%s,已将下注取消!",						ITEM_getChar(itemindex, ITEM_NAME));					CHAR_talkToCli(charaindex, -1, tmpbuf, CHAR_COLORWHITE);					// 记录捡回记录					LogItem(CHAR_getChar(charaindex, CHAR_NAME),							CHAR_getChar(charaindex, CHAR_CDKEY),#ifdef _add_item_log_name  // WON ADD 在item的log中增加item名称							itemindex,#else							ITEM_getInt(itemindex, ITEM_ID),#endif							"StakePickUp(捡起彩券)",							CHAR_getInt(charaindex,CHAR_FLOOR),							CHAR_getInt(charaindex,CHAR_X), 							CHAR_getInt(charaindex,CHAR_Y),							ITEM_getChar(itemindex, ITEM_UNIQUECODE),							ITEM_getChar( itemindex, ITEM_NAME),							ITEM_getInt( itemindex, ITEM_ID)							);					return -1;				}			}#endif			ret = CHAR_addItemSpecificItemIndex( charaindex, itemindex );			if(ret == CHAR_MAXITEMHAVE ){				return -2;			}else if( ret != -1 ) {				typedef void (*PICKUPFUNC)( int, int);				PICKUPFUNC pickupfunc = NULL;				pickupfunc = (PICKUPFUNC)ITEM_getFunctionPointer(									itemindex, ITEM_PICKUPFUNC);				if( pickupfunc) pickupfunc( charaindex, itemindex);								*contents = OBJECT_getIndex(index);				*objindex = index;	        	CHAR_sendItemDataOne( charaindex, ret);				return 0;			}		}else if( objtype == OBJTYPE_GOLD ){			int MaxGold;			long dropgoldamount = 0, newamountgold = 0, Minus = 0, newgold = 0;			long mygold = (long) CHAR_getInt( charaindex, CHAR_GOLD );			MaxGold = CHAR_getMaxHaveGold( charaindex);			if ((mygold <0) || (mygold > MaxGold))return -2;			dropgoldamount = OBJECT_getIndex(index);			newamountgold  = (unsigned int) CHAR_getInt( charaindex,CHAR_GOLD ) + dropgoldamount;			Minus = newamountgold - MaxGold;			if( Minus > 0 ) {				newgold = Minus;				*contents = dropgoldamount - Minus;			}else {				newgold = 0;				*contents = dropgoldamount;			}			OBJECT_setIndex( index, newgold);			CHAR_setInt( charaindex, CHAR_GOLD, min( newamountgold, MaxGold ) );			*objindex = index;			return 1;		}else if( objtype == OBJTYPE_CHARA ) {			int pindex = OBJECT_getIndex( index);			if( !CHAR_CHECKINDEX( pindex) ) continue;			if( CHAR_getInt( pindex, CHAR_WHICHTYPE) == CHAR_TYPEPET ) {				int havepetindex = CHAR_getCharPetElement( charaindex);				if( havepetindex == -1 ) {					if( CHAR_getWorkInt( pindex, CHAR_WORKPETFOLLOWMODE) != CHAR_PETFOLLOW_NOW )					return -3;				}				if( CHAR_getWorkInt( charaindex, CHAR_PickAllPet) != TRUE )	{					if( (CHAR_getInt( pindex, CHAR_LV) - CHAR_getInt( charaindex, CHAR_LV) > 5 )						&& (CHAR_getInt( charaindex, CHAR_TRANSMIGRATION ) <= 0 ))	{						return -4;					}				}				/*if( !strcmp( CHAR_getChar( pindex, CHAR_OWNERCDKEY), "SYSTEM_WAYI" ) &&					!strcmp( CHAR_getChar( pindex, CHAR_OWNERCHARANAME), "SYSTEM_WAYI" ) ){				}else{					if( strcmp( CHAR_getChar( pindex, CHAR_OWNERCDKEY), CHAR_getChar( charaindex, CHAR_CDKEY) ) ||						strcmp( CHAR_getChar( pindex, CHAR_OWNERCHARANAME), CHAR_getChar( charaindex, CHAR_NAME) )){						return -5;					}				}*/#ifdef _MARKET_TRADE				if( CHAR_getWorkInt( pindex, CHAR_WORKTRADETYP) ==  TRADETYPE_SELL )	{	//买宠					MAP_TRADEPICKUP( charaindex, pindex, fl, x, y, TRADEPETTYPE );					return -1;				}#endif				if( CHAR_getWorkInt( pindex, CHAR_WORKPETFOLLOWMODE) == CHAR_PETFOLLOW_NOW ){					CHAR_pickupFollowPet( charaindex, pindex );					return -1;				}								/*if( CHAR_getInt( pindex, CHAR_MAILMODE) != CHAR_PETMAIL_NONE){					if( strcmp( CHAR_getChar( pindex, CHAR_OWNERCDKEY),								CHAR_getChar( charaindex, CHAR_CDKEY)) 	!= 0 ||						strcmp( CHAR_getChar( pindex, CHAR_OWNERCHARANAME),						CHAR_getChar( charaindex, CHAR_NAME))!= 0 ){						return -5;					}else if( CHAR_getInt( pindex, CHAR_MAILMODE) != CHAR_PETMAIL_IDLE5){						return -5;					}				}*/				if( CHAR_getInt( pindex, CHAR_MAILMODE) != CHAR_PETMAIL_NONE){					Char	*ch;					CHAR_setInt( pindex, CHAR_MAILMODE, CHAR_PETMAIL_NONE);					CHAR_setInt( pindex, CHAR_PETMAILIDLETIME, 0);					PETMAIL_delPetMailTotalnums( 1); //手动捡起mail PET				    ch  = CHAR_getCharPointer( pindex);				    if( ch != NULL ) {						strcpysafe( ch->charfunctable[CHAR_LOOPFUNC].string,									sizeof( ch->charfunctable[CHAR_LOOPFUNC]),	"");						CHAR_constructFunctable( pindex);					}				}				CHAR_setWorkInt( pindex, CHAR_WORKPLAYERINDEX, charaindex);				CHAR_setCharPet( charaindex, havepetindex, pindex);#ifdef _PET_TALK				if( CHAR_getInt( pindex, CHAR_PETID) != 718 )	{#endif					CHAR_setChar( pindex, CHAR_OWNERCDKEY,						CHAR_getChar( charaindex, CHAR_CDKEY));					CHAR_setChar( pindex, CHAR_OWNERCHARANAME,						CHAR_getChar( charaindex, CHAR_NAME));#ifdef _PET_TALK				}#endif				CHAR_complianceParameter( pindex);{				char category[3];				snprintf( category,sizeof( category),"K%d",havepetindex);				CHAR_sendStatusString( charaindex, category);				snprintf( category,sizeof( category),"W%d",havepetindex);				CHAR_sendStatusString( charaindex, category);

⌨️ 快捷键说明

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