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

📄 item_event.c.bak

📁 石器时代8.0服务端完整源代码。可以直接编译
💻 BAK
📖 第 1 页 / 共 5 页
字号:
			renameitemhaveindex = CHAR_getWorkInt( charaindex, CHAR_WORKRENAMEITEMINDEX);			renameitemindex = CHAR_getItemIndex( charaindex, renameitemhaveindex);			if( !ITEM_CHECKINDEX( renameitemindex)) {				print( "%s %d err\n", __FILE__, __LINE__);				return;			}			remain = atoi( ITEM_getChar( renameitemindex, ITEM_ARGUMENT));			if( remain != 0 ) {				remain --;				if( remain <= 0 ) {					snprintf( msgbuf, sizeof(msgbuf),"%s 消失了", 							ITEM_getChar( renameitemindex, ITEM_NAME));				    CHAR_talkToCli( charaindex, -1, msgbuf, CHAR_COLORYELLOW);				    CHAR_setItemIndex( charaindex, renameitemhaveindex, -1);				    CHAR_sendItemDataOne( charaindex, renameitemhaveindex);					ITEM_endExistItemsOne( renameitemindex );				}else {					char buf[32];					snprintf( buf, sizeof( buf),"%d", remain);					ITEM_setChar( renameitemindex, ITEM_ARGUMENT, buf);				}			}		}	}}//-------------------------------------------------------------------------//	今中仇欠毛  蜇允月楮醒[//	  午仄凶凛卞]仿件母丞卞ㄠ  ㄥ毛蓟太]  蟆午  飓  寞毛  凳允月[//-------------------------------------------------------------------------void ITEM_dropDice( int charaindex, int itemindex){	char *dicename[] = { "一", "二",  "叁", "四", "五", "六"};	int  diceimagenumber[] = { 24298,24299,24300,24301,24302,24303};	int r = RAND( 0,5);		//   飓  寞毛谨  	ITEM_setInt( itemindex, ITEM_VAR1, ITEM_getInt( itemindex, ITEM_BASEIMAGENUMBER));	//   飓  寞凳蕙	ITEM_setInt( itemindex, ITEM_BASEIMAGENUMBER, diceimagenumber[r]);	//   蟆凳蕙	ITEM_setChar( itemindex, ITEM_SECRETNAME, dicename[r]);		// 犯□正及弁仿奶失件玄尺及霜耨反晓匏楮醒匹垫丹及匹]仇仇匹反支日卅中[}//-------------------------------------------------------------------------//	今中仇欠毛  蜇允月楮醒[//  胶匀凶凛卞]  蟆午  飓  寞毛葭卞  允[//-------------------------------------------------------------------------void ITEM_pickupDice( int charaindex, int itemindex){	//   飓  寞毛葭卞  允[	ITEM_setInt( itemindex,  ITEM_BASEIMAGENUMBER, ITEM_getInt( itemindex, ITEM_VAR1));	//   蟆手葭卞  允	ITEM_setChar( itemindex, ITEM_SECRETNAME, ITEM_getChar( itemindex, ITEM_NAME));}enum {	ITEM_LOTTERY_1ST,		// 1羁	ITEM_LOTTERY_2ND,	ITEM_LOTTERY_3RD,	ITEM_LOTTERY_4TH,	ITEM_LOTTERY_5TH,		// 5羁	ITEM_LOTTERY_6TH,		// 6羁	ITEM_LOTTERY_NONE,		// 陆木	ITEM_LOTTERY_NUM,};//-------------------------------------------------------------------------//	旦疋□玉仁元互综日木月凛及楮醒[//  仇仇匹窒羁操卞卅月井毛瑁户月[//  割  反动票及骚曰[#define PRE_6		(10000)#define PRE_5		(1300 + PRE_6)#define PRE_4		(600 + PRE_5)#define PRE_3		(300 + PRE_4)#define PRE_2		(8 + PRE_3)#define PRE_1		(1 + PRE_2)//#define PRE_5		(13000)//#define PRE_4		(2300 + PRE_5)//#define PRE_3		(540 + PRE_4)//#define PRE_2		(8 + PRE_3)//#define PRE_1		(1 + PRE_2)//#define PRE_5		(16000)//#define PRE_4		(2500 + PRE_5)//#define PRE_3		(400 + PRE_4)//#define PRE_2		(10 + PRE_3)//#define PRE_1		(1 + PRE_2)//#define PRE_5		(27000)//#define PRE_4		(4000 + PRE_5)//#define PRE_3		(400 + PRE_4)//#define PRE_2		(10 + PRE_3)//#define PRE_1		(1 + PRE_2)////-------------------------------------------------------------------------BOOL ITEM_initLottery(ITEM_Item* itm){	int r = RAND( 0, 49999);	int hit = ITEM_LOTTERY_NONE;		// 	char result[7];		// 请  	int countnum[6];	int count;	int i;	int len;	// 域荚综匀化月及匹[疯粟  仄凶凛午井卞综曰卅云今木卅中方丹卞[	if( itm->data[ITEM_VAR3] == 1 ) return TRUE;	// 铲蓟允月[	if( r < PRE_6 ) hit = ITEM_LOTTERY_6TH;	else if( r < PRE_5 ) hit = ITEM_LOTTERY_5TH;	else if( r < PRE_4 ) hit = ITEM_LOTTERY_4TH;	else if( r < PRE_3 ) hit = ITEM_LOTTERY_3RD;	else if( r < PRE_2 ) hit = ITEM_LOTTERY_2ND;	else if( r < PRE_1 ) hit = ITEM_LOTTERY_1ST;	else hit = ITEM_LOTTERY_NONE;		// 请  毛瑁烂允月[	count = 0;	memset( countnum, 0, sizeof( countnum));	if( hit != ITEM_LOTTERY_NONE ) {		// 癫曰毛本永玄		result[0] = result[1] = result[2] = hit+1;		count = 3;		countnum[hit] = 3;	}	while( count < 6 ) {		int r = RAND( ITEM_LOTTERY_1ST, ITEM_LOTTERY_6TH);		if( countnum[r] >= 2 ) continue;		// 2/3仁日中及割  匹]职及陆木钓  毛伉□民今六化支月[		// 升五升五[		if(      ( hit != ITEM_LOTTERY_NONE && count == 3 )		     ||  ( hit == ITEM_LOTTERY_NONE && count == 0 ) )		{			if( RAND( 0,2)) {				result[count] = result[count+1] = r+1;				countnum[r] += 2;				count += 2;				continue;			}		}		countnum[r] ++;		result[count] = r+1;		count++;	}	// 请  毛扑乓永白伙允月[	// 癫曰及凛反2/3及割  匹]癫曰醒侬毛域    欠卞裔烂允月[	// 玉平玉平躲绊毛谎丹啃[	len = sizeof( result)-2;	if( hit != ITEM_LOTTERY_NONE ) {		if( RAND( 0,2) ) {			// 癫曰醒侬毛域    欠卞[			char s = result[0];			result[0] = result[5];			result[5] = s;			len = sizeof( result)-3;		}	}	for( i = 0; i < 10; i ++) {		int x = RAND( 0, len);		int y = RAND( 0, len);		int s;		s = result[x];		result[x] = result[y];		result[y] = s;	}	//   及凶户]  侬  健中卞仄化云仁[	result[sizeof(result)-1] = '\0';	itm->data[ITEM_VAR1] = hit;	// 户仁匀凶市它件玄	itm->data[ITEM_VAR2] = 0;	itm->data[ITEM_VAR3] = 1;	memcpy( itm->string[ITEM_ARGUMENT].string, result, sizeof( result));		return TRUE;}//-------------------------------------------------------------------------//	旦疋□玉仁元毛银匀凶凛及楮醒[//  ㄥ荚银丹午]窒羁操井及失奶  丞卞  祭允月[//-------------------------------------------------------------------------void ITEM_useLottery( int charaindex, int toindex, int haveitemindex){	int i,j;	int itemindex = CHAR_getItemIndex( charaindex, haveitemindex);	int count = ITEM_getInt( itemindex, ITEM_VAR2);	int hit = ITEM_getInt( itemindex, ITEM_VAR1);	char buff[1024];	char num[6][3] = { {"迭"},{"迫"},{"迤"},{"迨"},{"郊"}, {"郎"}};	char numbuff[128];	char *n;	int result;	BOOL flg;	if( !ITEM_CHECKINDEX( itemindex) ) return;	if( count == 0 ) {		ITEM_setChar( itemindex, ITEM_EFFECTSTRING, "");	}	// ㄥ荚  及银迕反]陆木仄井丐曰  卅中及匹]仇仇匹失奶  丞毛壅允	else if( count == 6 ) {        CHAR_setItemIndex( charaindex , haveitemindex, -1 );		CHAR_sendItemDataOne( charaindex, haveitemindex);        ITEM_endExistItemsOne( itemindex );		return;	}	n = ITEM_getChar( itemindex, ITEM_ARGUMENT);	// for debug#if 0    snprintf( buff, sizeof( buff), "羁操“%d 请  : %d%d%d%d%d%d",    			hit,    			(int)(n[0]+1),(int)(n[1]+1),    			(int)(n[2]+1),(int)(n[3]+1),    			(int)(n[4]+1),(int)(n[5]+1)    			);    CHAR_talkToCli( charaindex, -1,                    buff, CHAR_COLORYELLOW );#endif	result = (int)n[count]-1;	// 伉□民井譬屯月	flg = FALSE;	for( i = 0; i < count+1 && flg == FALSE; i ++ ) {		for( j = i+1; j < count+1 && flg == FALSE; j ++ ) {			if( i != j ) {				if( n[i] == n[j] ) {					flg = TRUE;				}			}		}	}	memset( numbuff, 0, sizeof( numbuff));	memcpy( numbuff, ITEM_getChar( itemindex, ITEM_EFFECTSTRING), (count)*2);	// 躲绊  侬  卞]请  毛请允[	snprintf( buff, sizeof( buff), "%s%s", numbuff, num[result]);	count ++;	ITEM_setInt( itemindex, ITEM_VAR2, count);	// ㄥ荚  匹癫曰卅日癫曰失奶  丞卞  凳]陆木卅日陆木午  憎]	// 戚荚母皮伙弁伉永弁匹壅允[	if( count >= 6 ) {		// 癫曰		if( hit != ITEM_LOTTERY_NONE ) {      		int newitemindex;      		char strbuff[1024];            char msgbuff[1024];            // 壅仄化            CHAR_setItemIndex( charaindex , haveitemindex, -1 );            ITEM_endExistItemsOne( itemindex );			// 2729 - 2734 反  仁元及1  6羁			newitemindex = ITEM_makeItemAndRegist( 2729 + hit);            CHAR_setItemIndex( charaindex , haveitemindex, newitemindex );			// 请  手戊疋□			snprintf( strbuff, sizeof( strbuff), "%s                %s", buff, 						ITEM_getChar( newitemindex, ITEM_EFFECTSTRING));			ITEM_setChar( newitemindex, ITEM_EFFECTSTRING, strbuff);			CHAR_sendItemDataOne( charaindex, haveitemindex);            snprintf( msgbuff, sizeof( msgbuff), "中了第%d奖", hit+1 );            CHAR_talkToCli( charaindex, -1,                            msgbuff,                            CHAR_COLORYELLOW );		}		// 陆木		else {//            CHAR_setItemIndex( charaindex , haveitemindex, -1 );			// 请  手戊疋□      		char strbuff[1024];			snprintf( strbuff, sizeof( strbuff), "%s                       没中,下次再来", buff);			ITEM_setChar( itemindex, ITEM_EFFECTSTRING, strbuff);			CHAR_sendItemDataOne( charaindex, haveitemindex);//            ITEM_endExistItemsOne( itemindex );//            CHAR_talkToCli( charaindex, -1,//                            "反内木″",//                            CHAR_COLORWHITE );		}	}	// 公丹元扎  中凛反]犯□正毛霜曰卅云允分仃[	else {		char strbuff[1024];		if( flg) {			// 旦矢□旦煌遥			// 失奶  丞及      及戊丢件玄反]ㄠ垫ㄡㄧ  侬匹]			// 旦矢□旦毛银匀化荼垫仄化中月[			int spc = 16 + ( 6-count)*2;			char space[17];			memset( space, ' ', spc);			space[spc] = '\0';			snprintf( strbuff, sizeof( strbuff), "%s%s快中了", buff, space);		}		else {			strcpy( strbuff, buff);		}		ITEM_setChar( itemindex, ITEM_EFFECTSTRING, strbuff);		CHAR_sendItemDataOne( charaindex, haveitemindex);	}}void ITEM_WarpDelErrorItem( int charaindex ){	int j;	for(j=0; j<CHAR_MAXITEMHAVE; j++){		int itemindex=CHAR_getItemIndex(charaindex, j);		if(ITEM_CHECKINDEX(itemindex)){			int id=ITEM_getInt(itemindex, ITEM_ID);			if(id==2609||id==2704){				CHAR_setItemIndex(charaindex, j, -1);				ITEM_endExistItemsOne(itemindex);				CHAR_sendItemDataOne(charaindex, j);			}		}	}#ifdef _ITEM_WARP_FIX_BI	if(!CHAR_getWorkInt( charaindex, CHAR_WORKITEMMETAMO))		recoverbi(charaindex);#endif}BOOL ITEM_WarpForAny(int charaindex, int haveitemindex, int ff, int fx, int fy,int flg){	if( CHAR_getWorkInt( charaindex, CHAR_WORKBATTLEMODE ) != BATTLE_CHARMODE_NONE )		return FALSE;#ifdef _BAD_PLAYER             // WON ADD 送坏玩家去关	if( (CHAR_getInt(charaindex,CHAR_FLOOR)==117)||(CHAR_getInt(charaindex,CHAR_FLOOR)==887) ){#else	if( CHAR_getInt( charaindex, CHAR_FLOOR) == 117 #ifdef _ADD_DUNGEON            //追加地牢        || CHAR_getInt( charaindex,CHAR_FLOOR ) == 8513#endif		){#endif		CHAR_talkToCli(charaindex, -1, "此处无法使用。", CHAR_COLORYELLOW);		return FALSE;	}	if( CHAR_getWorkInt( charaindex, CHAR_WORKPARTYMODE ) == CHAR_PARTY_LEADER ){		int i;		if( flg == 0 )	{//单体			CHAR_talkToCli(charaindex, -1, "只能单人使用。", CHAR_COLORYELLOW);			return FALSE;		}		for( i = 0; i < CHAR_PARTYMAX; i ++ ){			int subindex = CHAR_getWorkInt( charaindex, CHAR_WORKPARTYINDEX1+i );			if( CHAR_CHECKINDEX( subindex ) == FALSE ) continue;			CHAR_talkToCli( subindex, -1, "全体瞬间飞行...", CHAR_COLORWHITE);			ITEM_WarpDelErrorItem( subindex );			CHAR_warpToSpecificPoint( subindex, ff, fx, fy );		}	}else if( CHAR_getWorkInt( charaindex, CHAR_WORKPARTYMODE ) == CHAR_PARTY_CLIENT ){		CHAR_talkToCli(charaindex, -1, "队员无法使用。", CHAR_COLORYELLOW);		return FALSE;	}else if( CHAR_getWorkInt( charaindex, CHAR_WORKPARTYMODE ) == CHAR_PARTY_NONE ){		ITEM_WarpDelErrorItem( charaindex );		CHAR_warpToSpecificPoint( charaindex, ff, fx, fy);	}	return TRUE;}//andy_end// Robin 0523void ITEM_useWarp( int charaindex, int toindex, int haveitemindex ){	char *arg;	int itemindex, warp_t, warp_fl, warp_x, warp_y;	itemindex = CHAR_getItemIndex( charaindex, haveitemindex);	if(!ITEM_CHECKINDEX(itemindex)) return;#ifdef _ITEM_CHECKWARES	if( CHAR_CheckInItemForWares( charaindex, 0) == FALSE ){		CHAR_talkToCli(charaindex, -1, "携带货物无法使用。", CHAR_COLORYELLOW);		return;	}#endif#ifdef _BAD_PLAYER             // WON ADD 送坏玩家去关	if( (CHAR_getInt(charaindex,CHAR_FLOOR)==117)||(CHAR_getInt(charaindex,CHAR_FLOOR)==887) ){		CHAR_talkToCli(charaindex, -1, "此处无法使用。", CHAR_COLORYELLOW);		return;	}#endif	arg = ITEM_getChar(itemindex, ITEM_ARGUMENT );	if( arg == NULL )	return;	if( sscanf( arg, "%d %d %d %d", &warp_t, &warp_fl, &warp_x, &warp_y) != 4 )		return;	if( ITEM_WarpForAny(charaindex, haveitemindex, warp_fl, warp_x, warp_y, warp_t) == FALSE )		return;	CHAR_DelItem( charaindex, haveitemindex);	CHAR_sendStatusString(charaindex, "P");}#ifdef _USEWARP_FORNUMvoid ITEM_useWarpForNum( int charaindex, int toindex, int haveitemindex ){	char *arg;	int flg, ff, fx, fy, itemindex, usenum=0, i;	int Mf, Mx, My;	int MapPoint[12]={		100, 200, 300, 400, 700,		701, 702, 703, 704, 705,		707, 708 };		char MapString[12][256]={			"萨伊那斯

⌨️ 快捷键说明

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