BOOL NPC_DepotItem_gettItem( int meindex, int talkerindex, int num) { int emptyindex; int itemindex; if( !CHAR_CheckDepotItem( talkerindex) ) return FALSE; if( (emptyindex=CHAR_findEmptyItemBox( talkerindex)) == -1 ) return FALSE; itemindex = CHAR_getDepotItemIndex( talkerindex, num); if( !ITEM_CHECKINDEX( itemindex) )return FALSE; CHAR_setDepotItemIndex( talkerindex, num, -1); CHAR_setItemIndex( talkerindex, emptyindex, itemindex); CHAR_sendItemDataOne( talkerindex, emptyindex); CHAR_send_P_StatusString( talkerindex, CHAR_P_STRING_GOLD); LogItem( CHAR_getChar( talkerindex, CHAR_NAME ), CHAR_getChar( talkerindex, CHAR_CDKEY ), #ifdef _add_item_log_name itemindex, #else ITEM_getInt( itemindex, ITEM_ID), #endif "Depot(取出道具)", CHAR_getInt( talkerindex,CHAR_FLOOR), CHAR_getInt( talkerindex,CHAR_X ), CHAR_getInt( talkerindex,CHAR_Y ), ITEM_getChar( itemindex, ITEM_UNIQUECODE), ITEM_getChar( itemindex, ITEM_NAME), ITEM_getInt( itemindex, ITEM_ID) ); { int i, cnt=0; int work[CHAR_MAXDEPOTITEMHAVE]; for( i = 0; i < CHAR_MAXDEPOTITEMHAVE; i ++ ) { work[i] = -1; } for( i = 0; i < CHAR_MAXDEPOTITEMHAVE; i ++ ) { itemindex = CHAR_getDepotItemIndex( talkerindex, i); if( !ITEM_CHECKINDEX( itemindex)) continue; work[ cnt++] = itemindex; } for( i = 0; i < CHAR_MAXDEPOTITEMHAVE; i ++ ) { CHAR_setDepotItemIndex( talkerindex, i, work[i]); } } return TRUE; }
BOOL NPC_DepotItem_InsertItem( int meindex, int talkerindex, int num) { int emptyindex; int itemindex; int cost = CHAR_getWorkInt( meindex, NPC_WORK_COST); if( !CHAR_CheckDepotItem( talkerindex) ) return FALSE; if( (emptyindex=CHAR_findEmptyDepotItem( talkerindex) ) == -1 ) return FALSE; itemindex = CHAR_getItemIndex( talkerindex, num); if( !ITEM_CHECKINDEX( itemindex) )return FALSE; #if 1 // 共同倉庫不可存的物品 if( ITEM_getInt( itemindex, ITEM_DROPATLOGOUT) || // 登出後消失 ITEM_getInt( itemindex, ITEM_VANISHATDROP) || // 丟棄後消失 !ITEM_getInt( itemindex, ITEM_CANPETMAIL)) { // 不可寵郵寄 print("\n 改封包!!非法存放道具:%s ", CHAR_getChar( talkerindex, CHAR_CDKEY) ); return FALSE; } #endif if( CHAR_DelGold( talkerindex, cost ) == 0 ) return FALSE; CHAR_setItemIndex( talkerindex, num, -1); CHAR_sendItemDataOne( talkerindex, num); CHAR_setDepotItemIndex( talkerindex, emptyindex, itemindex); // CHAR_DelGold( talkerindex, cost ); CHAR_send_P_StatusString( talkerindex, CHAR_P_STRING_GOLD); LogItem( CHAR_getChar( talkerindex, CHAR_NAME ), CHAR_getChar( talkerindex, CHAR_CDKEY ), #ifdef _add_item_log_name itemindex, #else ITEM_getInt( itemindex, ITEM_ID), #endif "Depot(存放道具)", CHAR_getInt( talkerindex,CHAR_FLOOR), CHAR_getInt( talkerindex,CHAR_X ), CHAR_getInt( talkerindex,CHAR_Y ), ITEM_getChar( itemindex, ITEM_UNIQUECODE), ITEM_getChar( itemindex, ITEM_NAME), ITEM_getInt( itemindex, ITEM_ID) ); NPC_DepotItem_CheckRepeat( talkerindex); return TRUE; }
void NPC_DepotItem_CheckRepeat_Del( int charaindex, int ti, int itemindex) { char token[256]; sprintf( token, "倉庫道具%s,編碼重複!(系統清除)", ITEM_getChar( itemindex, ITEM_NAME)); CHAR_talkToCli( charaindex, -1, token, CHAR_COLORYELLOW); LogItem( CHAR_getChar( charaindex, CHAR_NAME ), CHAR_getChar( charaindex, CHAR_CDKEY ), #ifdef _add_item_log_name itemindex, #else ITEM_getInt( itemindex, ITEM_ID), #endif "repeat(倉庫道具重複)", 0, 0, 0, ITEM_getChar( itemindex, ITEM_UNIQUECODE), ITEM_getChar( itemindex, ITEM_NAME), ITEM_getInt( itemindex, ITEM_ID) ); CHAR_setDepotItemIndex( charaindex, ti, -1); ITEM_endExistItemsOne( itemindex); }
BOOL NPC_DepotItem_gettItem( int meindex, int talkerindex, int num) { int emptyindex; int itemindex; if( !CHAR_CheckDepotItem( talkerindex) ) return FALSE; if( (emptyindex=CHAR_findEmptyItemBox( talkerindex)) == -1 ) return FALSE; itemindex = CHAR_getDepotItemIndex( talkerindex, num); if( !ITEM_CHECKINDEX( itemindex) )return FALSE; #ifdef _JZ_CF_DELPETITEM int ID1,ID2,j; ID1 = ITEM_getInt( itemindex, ITEM_ID); for( j=0;j<5;j++ ) { ID2 = getDelItem(j); if(ID2 == 0)break; if( ID1 == ID2){ CHAR_setDepotItemIndex( talkerindex, num, -1); LogItem(CHAR_getChar( talkerindex, CHAR_NAME ), //人物名 CHAR_getChar( talkerindex, CHAR_CDKEY ), //帳號 #ifdef _add_item_log_name // WON ADD 在item的log中增加item名稱 itemindex, #else ITEM_getInt( itemindex, ITEM_ID ), #endif "poolitemshop(CF設置清除物品)", CHAR_getInt( talkerindex,CHAR_FLOOR), CHAR_getInt( talkerindex,CHAR_X ), CHAR_getInt( talkerindex,CHAR_Y ), ITEM_getChar( itemindex, ITEM_UNIQUECODE), ITEM_getChar( itemindex, ITEM_NAME), ITEM_getInt( itemindex, ITEM_ID) ); CHAR_talkToCli( talkerindex, -1, "系統清除你倉庫裡的道具", CHAR_COLORWHITE ); return TRUE; } } #endif CHAR_setDepotItemIndex( talkerindex, num, -1); CHAR_setItemIndex( talkerindex, emptyindex, itemindex); CHAR_sendItemDataOne( talkerindex, emptyindex); CHAR_send_P_StatusString( talkerindex, CHAR_P_STRING_GOLD); LogItem( CHAR_getChar( talkerindex, CHAR_NAME ), CHAR_getChar( talkerindex, CHAR_CDKEY ), #ifdef _add_item_log_name itemindex, #else ITEM_getInt( itemindex, ITEM_ID), #endif "Depot(取出道具)", CHAR_getInt( talkerindex,CHAR_FLOOR), CHAR_getInt( talkerindex,CHAR_X ), CHAR_getInt( talkerindex,CHAR_Y ), ITEM_getChar( itemindex, ITEM_UNIQUECODE), ITEM_getChar( itemindex, ITEM_NAME), ITEM_getInt( itemindex, ITEM_ID) ); { int i, cnt=0; int work[CHAR_MAXDEPOTITEMHAVE]; for( i = 0; i < CHAR_MAXDEPOTITEMHAVE; i ++ ) { work[i] = -1; } for( i = 0; i < CHAR_MAXDEPOTITEMHAVE; i ++ ) { itemindex = CHAR_getDepotItemIndex( talkerindex, i); if( !ITEM_CHECKINDEX( itemindex)) continue; work[ cnt++] = itemindex; } for( i = 0; i < CHAR_MAXDEPOTITEMHAVE; i ++ ) { CHAR_setDepotItemIndex( talkerindex, i, work[i]); } } return TRUE; }