📄 item_event.c
字号:
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 + -