📄 item_event.c.bak
字号:
{ char titlenumstring[256]; int titleindex; if( ITEM_CHECKINDEX(itemindex) == FALSE )return; if( ITEM_getArgument( ITEM_getChar(itemindex,ITEM_ARGUMENT),"addt", titlenumstring, sizeof( titlenumstring) ) == FALSE ){ print( "Can't find \"addt\" entry: %s\n", ITEM_getChar(itemindex,ITEM_ARGUMENT)); return; } titleindex = atoi( titlenumstring ); TITLE_addtitle( charaindex, titleindex ); CHAR_sendStatusString( charaindex, "T" );}void ITEM_delTitleDetach( int charaindex, int itemindex ){ char titlenumstring[256]; int titleindex; if( ITEM_CHECKINDEX(itemindex) == FALSE )return; if( ITEM_getArgument( ITEM_getChar(itemindex,ITEM_ARGUMENT),"delt", titlenumstring, sizeof( titlenumstring) ) == FALSE ){ print( "Can't find \"delt\" entry: %s\n", ITEM_getChar(itemindex,ITEM_ARGUMENT)); return; } titleindex = atoi( titlenumstring ); TITLE_deltitle( charaindex, titleindex ); CHAR_sendStatusString( charaindex, "T" );}void ITEM_DeleteByWatched( int myobjindex, int moveobjindex, CHAR_ACTION act, int x, int y, int dir, int* opt, int optlen ){ int itemindex, moveindex; char szBuffer[256]=""; itemindex = OBJECT_getIndex(myobjindex); if( !ITEM_CHECKINDEX( itemindex )) return; if( OBJECT_getType( moveobjindex ) == OBJTYPE_CHARA ){ moveindex = OBJECT_getIndex(moveobjindex); if( CHAR_getInt( moveindex , CHAR_WHICHTYPE ) == CHAR_TYPEPLAYER ){ snprintf( szBuffer, sizeof( szBuffer ), "%s", ITEM_getAppropriateName(itemindex) ); CHAR_talkToCli( moveindex , -1, "%s 消灭了。", CHAR_COLORWHITE ); } } ITEM_endExistItemsOne(itemindex); CHAR_ObjectDelete(myobjindex);}void ITEM_DeleteTimeWatched( int objindex, int moveobjindex, CHAR_ACTION act, int x, int y, int dir, int* opt, int optlen){ int itemindex; int itemputtime; if( !CHECKOBJECTUSE(objindex) ){ return; } itemindex = OBJECT_getIndex(objindex); if(!ITEM_CHECKINDEX(itemindex)){ return; } itemputtime=ITEM_getInt(itemindex,ITEM_PUTTIME); if( !ITEM_CHECKINDEX( itemindex )) return;#ifdef _MARKET_TRADE if( ITEM_getWorkInt( itemindex, ITEM_WORKTRADETYPE) == TRADETYPE_SELL ) { return; }#endif if( (int)NowTime.tv_sec > (int)( itemputtime + getItemdeletetime() ) ) { if( ITEM_TimeDelCheck( itemindex ) == FALSE ){ return ; } { LogItem( "NULL", "NULL",#ifdef _add_item_log_name // WON ADD 在item的log中增加item名称 itemindex,#else ITEM_getInt( itemindex, ITEM_ID ),#endif "TiemDelete", OBJECT_getFloor( objindex ), OBJECT_getX( objindex ), OBJECT_getY( objindex ), ITEM_getChar( itemindex, ITEM_UNIQUECODE), ITEM_getChar( itemindex, ITEM_NAME), ITEM_getInt( itemindex, ITEM_ID) ); } ITEM_endExistItemsOne(itemindex); CHAR_ObjectDelete(objindex); }}void ITEM_useEffectTohelos( int charaindex, int to_charaindex, int haveitemindex){ char buf[64]; char msgbuf[64]; int ret; int itemindex; int cutrate, limitcount; int per; int sendcharaindex = charaindex; itemindex = CHAR_getItemIndex( charaindex, haveitemindex); if(!ITEM_CHECKINDEX(itemindex)) return; CHAR_setItemIndex(charaindex, haveitemindex ,-1); CHAR_sendItemDataOne( charaindex, haveitemindex); ret = getStringFromIndexWithDelim( ITEM_getChar(itemindex, ITEM_ARGUMENT) , "|", 1, buf, sizeof( buf)); if( ret != TRUE ) { { 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 "FieldErrorUse", 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) ); } ITEM_endExistItemsOne( itemindex); return; } cutrate = atoi( buf); if( cutrate < 0 ) cutrate = 0; ret = getStringFromIndexWithDelim( ITEM_getChar(itemindex, ITEM_ARGUMENT) , "|", 2, buf, sizeof( buf)); if( ret != TRUE ) { { 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) ); } ITEM_endExistItemsOne( itemindex); return; } limitcount = atoi( buf); if( limitcount < 0) limitcount = 0; if( CHAR_getWorkInt( charaindex, CHAR_WORKPARTYMODE) == CHAR_PARTY_CLIENT) { sendcharaindex = CHAR_getWorkInt( charaindex, CHAR_WORKPARTYINDEX1); } CHAR_setWorkInt( sendcharaindex, CHAR_WORK_TOHELOS_CUTRATE, cutrate); CHAR_setWorkInt( sendcharaindex, CHAR_WORK_TOHELOS_COUNT, limitcount); snprintf( msgbuf, sizeof(msgbuf), "抓到了%s 。", ITEM_getChar(itemindex, ITEM_NAME) ); CHAR_talkToCli( charaindex, -1, msgbuf, CHAR_COLORWHITE ); if( sendcharaindex != charaindex ) { snprintf( msgbuf, sizeof(msgbuf), "%s 抓到了 %s。 ", CHAR_getChar( charaindex, CHAR_NAME), ITEM_getChar( itemindex, ITEM_NAME) ); CHAR_talkToCli( sendcharaindex, -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) ); } ITEM_endExistItemsOne( itemindex); per = ENCOUNT_getEncountPercentMin( sendcharaindex, CHAR_getInt( sendcharaindex, CHAR_FLOOR), CHAR_getInt( sendcharaindex, CHAR_X), CHAR_getInt( sendcharaindex, CHAR_Y)); if( per != -1) { CHAR_setWorkInt( sendcharaindex, CHAR_WORKENCOUNTPROBABILITY_MIN, per); } per = ENCOUNT_getEncountPercentMax( sendcharaindex, CHAR_getInt( sendcharaindex, CHAR_FLOOR), CHAR_getInt( sendcharaindex, CHAR_X), CHAR_getInt( sendcharaindex, CHAR_Y)); if( per != -1) { CHAR_setWorkInt( sendcharaindex, CHAR_WORKENCOUNTPROBABILITY_MAX, per); } CHAR_sendStatusString( sendcharaindex, "E" );}void ITEM_dropMic( int charaindex , int itemindex ){ if( !ITEM_CHECKINDEX( itemindex )) return; CHAR_setWorkInt( charaindex, CHAR_WORKFLG, CHAR_getWorkInt( charaindex, CHAR_WORKFLG ) & ~WORKFLG_MICMODE );}void ITEM_useMic_Field( int charaindex, int to_charaindex, int haveitemindex ){ if( CHAR_getWorkInt( charaindex, CHAR_WORKFLG ) & WORKFLG_MICMODE ){ CHAR_setWorkInt( charaindex, CHAR_WORKFLG, CHAR_getWorkInt( charaindex, CHAR_WORKFLG ) & ~WORKFLG_MICMODE ); CHAR_talkToCli( charaindex, -1, "将麦克风设定为OFF。", CHAR_COLORWHITE); }else{ CHAR_setWorkInt( charaindex, CHAR_WORKFLG, CHAR_getWorkInt( charaindex, CHAR_WORKFLG ) | WORKFLG_MICMODE ); CHAR_talkToCli( charaindex, -1, "将麦克风设定为ON。", CHAR_COLORWHITE); }}#if 1char *aszHealStringByOwn[] = { "%s的耐久力回复%d", "%s的气力回复%d", "%s的魅力上升%d", "%s的忠诚度上升%d", ""};char *aszDownStringByOwn[] = { "%s的耐久力减低%d", "%s的气力减低%d", "%s的魅力下降%d", "%s的忠诚度下降%d", ""};char *aszHealStringByOther[] = { "藉由%s%s的耐久力回复%d", "藉由%s%s的气力回复%d", "藉由%s%s的魅力上升%d", "藉由%s%s的忠诚度上升%d", ""};char *aszDownStringByOther[] = { "藉由%s%s的耐久力减低%d", "藉由%s%s的气力减低%d", "藉由%s%s的魅力减低%d", "藉由%s%s的忠诚度减低%d", ""};char *aszKeyString[] = {"体", "气", "魅", "忠", ""};int aHealInt[] = { CHAR_HP, CHAR_MP, CHAR_CHARM, CHAR_VARIABLEAI, -1 };int aHealMaxWork[] = { CHAR_WORKMAXHP, CHAR_WORKMAXMP, -1, -1, -1 };void ITEM_useRecovery_Field( int charaindex, int toindex, int haveitemindex){ int work, workmax, workmin; int power[BD_KIND_END] = {0,0,0}, prevhp = 0, workhp = 0, recovery[BD_KIND_END] = {0,0,0}; int itemindex, kind = BD_KIND_HP, HealFlg = 0, j; char *p = NULL, *arg, msgbuf[256]; itemindex = CHAR_getItemIndex( charaindex, haveitemindex); if( !ITEM_CHECKINDEX(itemindex) ) return; if( CHAR_CHECKINDEX( toindex ) == FALSE )return ; arg = ITEM_getChar(itemindex, ITEM_ARGUMENT ); if( arg == NULL ) return;#ifdef _ITEM_UNBECOMEPIG if( (p = strstr( arg, "解猪" )) != NULL ){ if( CHAR_getInt( toindex, CHAR_BECOMEPIG ) > -1 ){ CHAR_setInt( toindex, CHAR_BECOMEPIG, -1 ); CHAR_complianceParameter( toindex ); CHAR_sendCToArroundCharacter( CHAR_getWorkInt( toindex , CHAR_WORKOBJINDEX )); CHAR_send_P_StatusString( toindex , CHAR_P_STRING_BASEBASEIMAGENUMBER); CHAR_talkToCli( toindex,-1,"乌力化失效了。",CHAR_COLORWHITE); CHAR_DelItemMess( charaindex, haveitemindex, 0); } return; }#endif#ifdef _ITEM_LVUPUP if( (p = strstr( arg, "LVUPUP" ) ) != NULL ){ if (CHAR_getInt(toindex, CHAR_WHICHTYPE)==CHAR_TYPEPET){ int pidx=0,lvup=0,lv=0; sprintf( msgbuf, "%s", p+7 ); pidx = atoi( strtok( msgbuf, " " ) ); if( pidx != CHAR_getInt( toindex, CHAR_PETID) || CHAR_getInt(toindex, CHAR_LIMITLEVEL) == 0 ){ CHAR_talkToCli( charaindex,-1,"无法使用",CHAR_COLORWHITE); return; } lv = CHAR_getInt( toindex, CHAR_LV ); if( lv < 10 || lv >= 140 ){ CHAR_talkToCli( charaindex,-1,"目前等级无法使用",CHAR_COLORWHITE); return; } if( (p = strstr( arg, "地" )) != NULL ) lvup=2; if( (p = strstr( arg, "水" )) != NULL ) lvup=3; if( (p = strstr( arg, "火" )) != NULL ) lvup=0; if( (p = strstr( arg, "风" )) != NULL ) lvup=1; if( lv%4 != lvup || CHAR_getInt(toindex, CHAR_LIMITLEVEL)-lv >= 1 ){// CHAR_talkToCli( charaindex,-1,"破除封印失败",CHAR_COLORWHITE); CHAR_DelItemMess( charaindex, haveitemindex, 0); return; } CHAR_setInt(toindex, CHAR_LIMITLEVEL, CHAR_getInt(toindex, CHAR_LIMITLEVEL)+1); CHAR_talkToCli( charaindex,-1,"封印魔咒减弱,最高等级提升",CHAR_COLORWHITE); if( CHAR_getInt(toindex, CHAR_LIMITLEVEL) == 140 ){ CHAR_setInt(toindex, CHAR_LIMITLEVEL, 0); CHAR_talkToCli( charaindex,-1,"封印魔咒解除了",CHAR_COLORWHITE); } CHAR_DelItemMess( charaindex, haveitemindex, 0); CHAR_complianceParameter( toindex ); CHAR_sendCToArroundCharacter( CHAR_getWorkInt( toindex , CHAR_WORKOBJINDEX )); } return; } if( (p = strstr( arg, "UPUPLV" ) ) != NULL ){ if (CHAR_getInt(toindex, CHAR_WHICHTYPE)==CHAR_TYPEPET){ int pidx=0,lvup=0,lv=0; sprintf( msgbuf, "%s", p+7 ); pidx = atoi( strtok( msgbuf, " " ) ); if( pidx != CHAR_getInt( toindex, CHAR_PETID) || CHAR_getInt(toindex, CHAR_LIMITLEVEL) == 0 ){ CHAR_talkToCli( charaindex,-1,"无法使用",CHAR_COLORWHITE); return; } lv = CHAR_getInt( toindex, CHAR_LV ); if( lv < 125 || lv > 140 ){ CHAR_talkToCli( charaindex,-1,"目前等级无法使用",CHAR_COLORWHITE); return; } CHAR_setInt(toindex, CHAR_LIMITLEVEL, 0); CHAR_talkToCli( charaindex,-1,"封印魔咒解除了",CHAR_COLORWHITE); CHAR_DelItemMess( charaindex, haveitemindex, 0); CHAR_complianceParameter( toindex ); CHAR_sendCToArroundCharacter( CHAR_getWorkInt( toindex , CHAR_WORKOBJINDEX )); } return; }#endif#ifdef _ITEM_PROPERTY if( (p = strstr( arg, "PROPERTY" ) ) != NULL ){ //print("地水火风:%s", arg ); if (CHAR_getInt(toindex, CHAR_WHICHTYPE)!=CHAR_TYPEPLAYER) return; if( (p = strstr( arg, "+" ) ) != NULL ){//旋转属性 正转 if( CHAR_getInt( toindex, CHAR_EARTHAT ) == 100 ) 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 ) == 100 ) 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 ) == 100 ) 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 ) == 100 ) CHAR_setInt( toindex, CHAR_WINDAT, CHAR_getInt( toindex, CHAR_WINDAT )-10 ), CHAR_setInt( toindex, CHAR_EARTHAT, CHAR_getInt( toindex, CHAR_EARTHAT )+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 ),
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -