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

📄 item_event.c

📁 石器时代2.0完整版源代码.已经加入新功能. 在REDHAT9下GCC3.4编译成功.
💻 C
📖 第 1 页 / 共 5 页
字号:
                CHAR_setInt( toindex, CHAR_WATERAT, CHAR_getInt( toindex, CHAR_WATERAT )-10 ),			    CHAR_setInt( toindex, CHAR_EARTHAT, CHAR_getInt( toindex, CHAR_EARTHAT )+10 );            else if( CHAR_getInt( toindex, CHAR_FIREAT ) == 100 )                CHAR_setInt( toindex, CHAR_FIREAT, CHAR_getInt( toindex, CHAR_FIREAT )-10 ),			    CHAR_setInt( toindex, CHAR_WATERAT, CHAR_getInt( toindex, CHAR_WATERAT )+10 );            else if( CHAR_getInt( toindex, CHAR_WINDAT ) == 100 )                CHAR_setInt( toindex, CHAR_WINDAT, CHAR_getInt( toindex, CHAR_WINDAT )-10 ),			    CHAR_setInt( toindex, CHAR_FIREAT, CHAR_getInt( toindex, CHAR_FIREAT )+10 );		    else if( CHAR_getInt( toindex, CHAR_EARTHAT ) > 0 && CHAR_getInt( toindex, CHAR_WATERAT ) > 0 )                CHAR_setInt( toindex, CHAR_EARTHAT, CHAR_getInt( toindex, CHAR_EARTHAT )+10 ),			    CHAR_setInt( toindex, CHAR_WATERAT, CHAR_getInt( toindex, CHAR_WATERAT )-10 );            else if( CHAR_getInt( toindex, CHAR_WATERAT ) > 0 && CHAR_getInt( toindex, CHAR_FIREAT ) > 0 )                CHAR_setInt( toindex, CHAR_WATERAT, CHAR_getInt( toindex, CHAR_WATERAT )+10 ),			    CHAR_setInt( toindex, CHAR_FIREAT, CHAR_getInt( toindex, CHAR_FIREAT )-10 );		    else if( CHAR_getInt( toindex, CHAR_FIREAT ) > 0 && CHAR_getInt( toindex, CHAR_WINDAT ) > 0 )                CHAR_setInt( toindex, CHAR_FIREAT, CHAR_getInt( toindex, CHAR_FIREAT )+10 ),			    CHAR_setInt( toindex, CHAR_WINDAT, CHAR_getInt( toindex, CHAR_WINDAT )-10 );            else if( CHAR_getInt( toindex, CHAR_WINDAT ) > 0 && CHAR_getInt( toindex, CHAR_EARTHAT ) > 0 )                CHAR_setInt( toindex, CHAR_WINDAT, CHAR_getInt( toindex, CHAR_WINDAT )+10 ),			    CHAR_setInt( toindex, CHAR_EARTHAT, CHAR_getInt( toindex, CHAR_EARTHAT )-10 );		}		CHAR_DelItemMess( charaindex, haveitemindex, 0);		CHAR_complianceParameter( toindex );		CHAR_sendCToArroundCharacter( CHAR_getWorkInt( toindex , CHAR_WORKOBJINDEX ));		CHAR_send_P_StatusString( toindex ,					CHAR_P_STRING_EARTH	|					CHAR_P_STRING_WATER	|					CHAR_P_STRING_FIRE	|					CHAR_P_STRING_WIND					);		return;	}#endif#ifdef _ITEM_ADDPETEXP	if( (p = strstr( arg, "GETEXP" )) != NULL ){		if (CHAR_getInt(toindex, CHAR_WHICHTYPE)==CHAR_TYPEPET){			getStringFromIndexWithDelim( arg, "|", 2, msgbuf,sizeof( msgbuf));//宠物编号			if( atoi(msgbuf) == CHAR_getInt( toindex, CHAR_PETID) ){				getStringFromIndexWithDelim( arg, "|", 3, msgbuf,sizeof( msgbuf));//等级上限(等级超过才可用)				if( CHAR_getInt( toindex, CHAR_LV ) >= atoi(msgbuf) ){					getStringFromIndexWithDelim( arg, "|", 4, msgbuf,sizeof( msgbuf));//经验值增加					if( CHAR_getInt( toindex, CHAR_LV) < CHAR_MAXUPLEVEL ){						int UpLevel = 0;						CHAR_setWorkInt( toindex, CHAR_WORKGETEXP, atoi(msgbuf) );//回存CHAR_WORKGETEXP						CHAR_AddMaxExp( toindex, CHAR_getWorkInt( toindex, CHAR_WORKGETEXP ) );						sprintf( msgbuf,"这石头里面不知道有什麽样的矿,让我看看。(增加经验%d)", CHAR_getWorkInt( toindex, CHAR_WORKGETEXP ) );						CHAR_talkToCli( charaindex,-1,msgbuf,CHAR_COLORWHITE);  						UpLevel = CHAR_LevelUpCheck( toindex , charaindex);						if( UpLevel > 0 ){							if( getBattleDebugMsg( ) != 0 ){								snprintf( msgbuf, sizeof(msgbuf),											"(%s) 升级至 %d",											CHAR_getUseName( toindex ),											CHAR_getInt( toindex, CHAR_LV ) );							BATTLE_talkToCli( charaindex, msgbuf, CHAR_COLORYELLOW );							}						}						for( j = 0; j < UpLevel; j ++ ){							CHAR_PetLevelUp( toindex );							CHAR_PetAddVariableAi( toindex, AI_FIX_PETLEVELUP );						}						CHAR_complianceParameter( toindex );					}					else{						CHAR_talkToCli( charaindex,-1,"不能使用",CHAR_COLORWHITE);  					}					/*CHAR_send_P_StatusString(  charindex, CHAR_P_STRING_DUELPOINT|					CHAR_P_STRING_TRANSMIGRATION| CHAR_P_STRING_RIDEPET|					CHAR_P_STRING_BASEBASEIMAGENUMBER| CHAR_P_STRING_GOLD|					CHAR_P_STRING_EXP| CHAR_P_STRING_LV| CHAR_P_STRING_HP|CHAR_P_STRING_LEARNRIDE);				*/				}				else					CHAR_talkToCli( charaindex,-1,"这石头....(无法判别,无法增加经验)",CHAR_COLORWHITE);  			}			CHAR_DelItemMess( charaindex, haveitemindex, 0);			CHAR_complianceParameter( toindex );			CHAR_sendCToArroundCharacter( CHAR_getWorkInt( toindex , CHAR_WORKOBJINDEX ));			return;		}		else{			CHAR_talkToCli( charaindex,-1,"不能使用",CHAR_COLORWHITE);  		}	}#endif	for( j = 0; j < BD_KIND_END; j ++ ){		power[j] = 0;		recovery[j] = 0;	}	if( (p = strstr( arg, "全" )) != NULL ){		HealFlg = ( 1 << BD_KIND_HP );		if( CHAR_getInt( toindex, CHAR_WHICHTYPE) == CHAR_TYPEPET ){		}else{			HealFlg |= ( 1 << BD_KIND_MP );		}		power[BD_KIND_HP] = 10000000;		power[BD_KIND_MP] = 100;	}	kind = BD_KIND_HP;	if( (p = strstr( arg, aszKeyString[kind] )) != NULL ){		HealFlg |= ( 1 << kind );		if( sscanf( p+2, "%d", &work ) != 1 ){			power[kind] = 1;		}else{			power[kind] = RAND( (work*0.9), (work*1.1) );		}#ifndef _MAGIC_REHPAI		power[kind] *= GetRecoveryRate( toindex );#endif	}	kind = BD_KIND_MP;	if( (p = strstr( arg, aszKeyString[kind] )) != NULL	&&  CHAR_getInt( toindex, CHAR_WHICHTYPE) == CHAR_TYPEPLAYER){		HealFlg |= ( 1 << kind );		if( sscanf( p+2, "%d", &work ) != 1 ){			power[kind] = 1;		}else{			power[kind] = RAND( (work*0.9), (work*1.1) );		}	}	kind = BD_KIND_AI;	if( (p = strstr( arg, aszKeyString[kind] )) != NULL		&& CHAR_getInt( toindex, CHAR_WHICHTYPE) == CHAR_TYPEPET){		HealFlg |= ( 1 << kind );		if( sscanf( p+2, "%d", &work ) != 1 ){			power[kind] = 1;		}else{			power[kind] = RAND( (work*0.9), (work*1.1) );		}		power[kind] *= 100;	}	kind = BD_KIND_CHARM;	if( (p = strstr( arg, aszKeyString[kind] )) != NULL	&& CHAR_getInt( toindex, CHAR_WHICHTYPE) == CHAR_TYPEPLAYER	){		HealFlg |= ( 1 << kind );		if( sscanf( p+2, "%d", &work ) != 1 ){			power[kind] = 1;		}else{			power[kind] = RAND( (work*0.9), (work*1.1) );		}	}	if( HealFlg == 0 )return;#ifdef _TYPE_TOXICATION	if( CHAR_CanCureFlg( toindex, "HP") == FALSE )return;#endif	for( j = 0; j < BD_KIND_END; j ++ ){		if( ( HealFlg & ( 1 << j ) ) == 0 )continue;		prevhp = CHAR_getInt( toindex, aHealInt[j] );		workhp = prevhp + (int)power[j];		if( j == BD_KIND_CHARM ){			workmax = 100;			workmin = 0;		}else		if( j == BD_KIND_AI ){			workmax = 10000;			workmin = -10000;		}else{			workmax = CHAR_getWorkInt( toindex, aHealMaxWork[j] );			workmin = 1;		}		workhp = min( workhp, workmax );		workhp = max( workhp, workmin );		CHAR_setInt( toindex, aHealInt[j], workhp );		recovery[j] = workhp - prevhp;		if( j == BD_KIND_AI ){			recovery[j] *= 0.01;		}	}	CHAR_complianceParameter( toindex );	if( CHAR_getInt( toindex, CHAR_WHICHTYPE) == CHAR_TYPEPLAYER) {		if( charaindex != toindex ) {			CHAR_send_P_StatusString( toindex, CHAR_P_STRING_HP|CHAR_P_STRING_MP|CHAR_P_STRING_CHARM);		}	}	CHAR_send_P_StatusString( charaindex, CHAR_P_STRING_HP|CHAR_P_STRING_MP|CHAR_P_STRING_CHARM);	if( CHAR_getInt( toindex, CHAR_WHICHTYPE) == CHAR_TYPEPLAYER &&		CHAR_getWorkInt( charaindex, CHAR_WORKPARTYMODE) != CHAR_PARTY_NONE ){		CHAR_PartyUpdate( toindex, CHAR_N_STRING_HP|CHAR_N_STRING_MP );	}	if( CHAR_getInt( toindex, CHAR_WHICHTYPE) == CHAR_TYPEPET ){		int		i;		for( i = 0; i < CHAR_MAXPETHAVE; i ++ ) {			int workindex = CHAR_getCharPet( charaindex, i );			if( workindex == toindex ){				CHAR_send_K_StatusString( charaindex, i, CHAR_K_STRING_HP|CHAR_K_STRING_AI);			}		}	}	for( j = 0; j < BD_KIND_END; j ++ ){		if( ( HealFlg & ( 1 << j ) ) == 0 )continue;		if( charaindex != toindex) {			if( power[j] >= 0 ){				snprintf( msgbuf, sizeof( msgbuf),					aszHealStringByOwn[j],					CHAR_getUseName( toindex ), recovery[j] );			}else{				snprintf( msgbuf, sizeof( msgbuf),					aszDownStringByOwn[j],					CHAR_getUseName( toindex ), -recovery[j] );			}			CHAR_talkToCli( charaindex, -1, msgbuf, CHAR_COLORWHITE);			if( CHAR_getInt( toindex, CHAR_WHICHTYPE) == CHAR_TYPEPLAYER) {				if( power[j] >= 0 ){					snprintf( msgbuf, sizeof( msgbuf),						aszHealStringByOther[j],						CHAR_getUseName( charaindex ),						CHAR_getUseName( toindex ), recovery[j] );				}else{					snprintf( msgbuf, sizeof( msgbuf),						aszDownStringByOther[j],						CHAR_getUseName( charaindex ),						CHAR_getUseName( toindex ), -recovery[j] );				}				CHAR_talkToCli( toindex, -1, msgbuf, CHAR_COLORWHITE);			}		}else {			if( power[j] >= 0 ){				snprintf( msgbuf, sizeof( msgbuf),					aszHealStringByOwn[j],					CHAR_getUseName( charaindex ), recovery[j] );			}else{				snprintf( msgbuf, sizeof( msgbuf),					aszDownStringByOwn[j],					CHAR_getUseName( charaindex ), -recovery[j] );			}			CHAR_talkToCli( charaindex, -1, msgbuf, 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			"FieldUse",	       	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)		);	}	CHAR_DelItemMess( charaindex, haveitemindex, 0);}#endifvoid ITEM_useRecovery( int charaindex, int toindex, int haveitemindex){	int battlemode;	if( CHAR_CHECKINDEX( charaindex ) == FALSE )return ;	battlemode = CHAR_getWorkInt( charaindex, CHAR_WORKBATTLEMODE );	if( battlemode == BATTLE_CHARMODE_INIT ){	}else		if( battlemode ){			ITEM_useRecovery_Battle( charaindex, toindex, haveitemindex );		}else{			ITEM_useRecovery_Field(	charaindex, toindex, haveitemindex );		}}#ifdef _ITEM_MAGICRECOVERYvoid ITEM_useMRecovery( int charaindex, int toindex, int haveitemindex){	int battlemode;	if( CHAR_CHECKINDEX( charaindex ) == FALSE )return ;	battlemode = CHAR_getWorkInt( charaindex, CHAR_WORKBATTLEMODE );	if( battlemode == BATTLE_CHARMODE_INIT ){	}else		if( battlemode ){			ITEM_useMRecovery_Battle( charaindex, toindex, haveitemindex );		}else{//			ITEM_useRecovery_Field(	charaindex, toindex, haveitemindex );		}}#endif#ifdef _ITEM_USEMAGICvoid ITEM_useMagic( int charaindex, int toindex, int haveitemindex){	int battlemode;	if( CHAR_CHECKINDEX( charaindex ) == FALSE )return ;	battlemode = CHAR_getWorkInt( charaindex, CHAR_WORKBATTLEMODE );	if( battlemode == BATTLE_CHARMODE_INIT ){	}else		if( battlemode ){			ITEM_useMagic_Battle( charaindex, toindex, haveitemindex );		}}#endif#ifdef _PET_LIMITLEVELvoid ITEM_useOtherEditBase( int charaindex, int toindex, int haveitemindex){	int itemindex,i;	int work[4];	int num=-1,type;	int LevelUpPoint,petrank;	char buf1[256];	char buf2[][32]={"腕力成长率","耐久力成长率","速度成长率","体力成长率","能力"};	char buf3[][32]={"大幅提高","略为提高","略为减少"};	if( !CHAR_CHECKINDEX( charaindex ) )  return;	if( !CHAR_CHECKINDEX( toindex ) )  return; #define RAND(x,y)   ((x-1)+1+ (int)( (double)(y-(x-1))*rand()/(RAND_MAX+1.0)) )		itemindex = CHAR_getItemIndex( charaindex, haveitemindex);		if( !ITEM_CHECKINDEX(itemindex) )  return;		if( CHAR_getInt( toindex, CHAR_PETID) == 718 #ifdef _PET_2LIMITLEVEL			|| CHAR_getInt( toindex, CHAR_PETID) == 401 #endif			)	{			int maxnums=50;			if( CHAR_getInt( toindex,CHAR_LV ) < 74 )	{				sprintf(buf1,"给我的吗?好美丽的项链喔!〈能力起了变化〉");				CHAR_talkToCli( charaindex, toindex, buf1, CHAR_COLORWHITE);				num = ITEM_MODIFYATTACK;				LevelUpPoint = CHAR_getInt( toindex, CHAR_ALLOCPOINT );				petrank = CHAR_getInt( toindex, CHAR_PETRANK );				work[3] =(( LevelUpPoint >> 24 ) & 0xFF);				work[0] = (( LevelUpPoint >> 16 ) & 0xFF);				work[1] = (( LevelUpPoint >> 8 ) & 0xFF);				work[2] = (( LevelUpPoint >> 0 ) & 0xFF);				for( i=0; i<4; i++)	{					type = ITEM_getInt( itemindex, (num + i));					work[i] += type;					strcpy( buf1,"\0");					if( work[i] > maxnums )	{						sprintf(buf1,"%s 已经达到最高了。", buf2[i]);						work[i] = maxnums;					}else if( work[i] < 0 )	{						sprintf(buf1,"%s 已经为零了。", buf2[i]);						work[i] = 0;					}else	{						if( type > 0 )	{							if( type > 2 )								sprintf(buf1,"%s %s %s", buf2[i], buf3[0], "。");							else								sprintf(buf1,"%s %s %s", buf2[i], buf3[1], "。");						}else if( type < 0 ){							sprintf(buf1,"%s %s %s", buf2[i], buf3[2], "。");							}					}					if( strcmp( buf1, "\0"))	{						CHAR_talkToCli( charaindex, toindex, buf1, CHAR_COLORWHITE);					}				}								LevelUpPoint = ( work[3]<< 24) + ( work[0]<< 16) + ( work[1]<< 8) + ( work[2]<< 0);				CHAR_setInt( toindex, CHAR_ALLOCPOINT, LevelUpPoint);				CHAR_setInt( toindex, CHAR_PETRANK, petrank);				LogPetPointChange(					CHAR_getChar( charaindex, CHAR_NAME ),					CHAR_getChar( charaindex, CHAR_CDKEY ),					CHAR_getChar( charaindex, CHAR_NAME),					toindex, 4,					CHAR_getInt( toindex, CHAR_LV),					"item_use",					CHAR_getInt( charaindex, CHAR_FLOOR),					CHAR_getInt( charaindex, CHAR_X ),					CHAR_getInt( charaindex, CHAR_Y )					);			}						}else	{			sprintf(buf1,"???");		}		CHAR_DelItem( charaindex, haveitemindex);		return;}#endifvoid ITEM_useStatusChange( int charaindex, int toindex, int haveitemindex){	int battlemode;	if( CHAR_CHECKINDEX( charaindex ) == FALSE )return ; //{撩  	battlemode = CHAR_getWorkInt( charaindex, CHAR_WORKBATTLEMODE );	if( battlemode == BATTLE_CHARMODE_INIT ){	}else	if( battlemode ){		ITEM_useStatusChange_Battle( charaindex, toindex, haveitemindex );	}else{	}}

⌨️ 快捷键说明

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