?? char_item.c
字號:
} CHAR_setInt( pindex, CHAR_PUTPETTIME, 0); *contents = pindex; *objindex = index; return 2; } } } return -1;}void CHAR_PickUpItem( int charaindex, int dir ){ int i; int dirx[2],diry[2]; int searchloopcount=0; if( !CHAR_CHECKINDEX(charaindex) )return; if( CHAR_getFlg( charaindex,CHAR_ISDIE ) )return; if( CHAR_getWorkInt( charaindex,CHAR_WORKBATTLEMODE ) )return; if( dir < 0 ){ searchloopcount = 1; dirx[0] = 0; diry[0] = 0; }else{ if( dir != CHAR_getInt( charaindex, CHAR_DIR)) { VALIDATEDIR(dir); CHAR_setInt(charaindex,CHAR_DIR,dir); CHAR_sendWatchEvent(CHAR_getWorkInt(charaindex,CHAR_WORKOBJINDEX), CHAR_ACTSTAND,NULL,0,FALSE); } dirx[0] = CHAR_getDX(CHAR_getInt(charaindex,CHAR_DIR)); diry[0] = CHAR_getDY(CHAR_getInt(charaindex,CHAR_DIR)); dirx[1] = 0; diry[1] = 0; searchloopcount=2; } for( i = 0 ; i < searchloopcount ; i ++ ){ int contents,objindex; int fl = CHAR_getInt(charaindex,CHAR_FLOOR); int y = CHAR_getInt(charaindex,CHAR_Y)+diry[i]; int x = CHAR_getInt(charaindex,CHAR_X)+dirx[i]; int ret = CHAR_PickUpItemFXY( charaindex,fl,x,y,&contents, &objindex); switch( ret ){ case 0: CHAR_ObjectDelete(objindex); { char mesg[256];#ifdef _DROPSTAKENEW int j = 0; int dropflag = 0; for(j = 0; j < arraysizeof(casinomap); j++) { if(CHAR_getInt(charaindex, CHAR_FLOOR) == casinomap[j].casinofl) { if(x == casinomap[j].casinox && y == casinomap[j].casinoy) { dropflag = 1; break; } } } if(ITEM_getInt(contents, ITEM_ID) == CASINOTOKENID && dropflag == 1) snprintf( mesg,sizeof(mesg), "拾回%s,已將下注取消!", ITEM_getAppropriateName(contents)); else#endif snprintf( mesg,sizeof(mesg), "拾獲 %s", ITEM_getAppropriateName(contents) ); CHAR_talkToCli(charaindex,-1,mesg,CHAR_COLORWHITE); } { LogItem( CHAR_getChar( charaindex, CHAR_NAME ), CHAR_getChar( charaindex, CHAR_CDKEY ),#ifdef _add_item_log_name // WON ADD 在item的log中增加item名稱 contents,#else ITEM_getInt(contents, ITEM_ID),#endif "PickUp(撿起道具)", CHAR_getInt( charaindex,CHAR_FLOOR), CHAR_getInt( charaindex,CHAR_X ), CHAR_getInt( charaindex,CHAR_Y ), ITEM_getChar( contents, ITEM_UNIQUECODE), ITEM_getChar( contents, ITEM_NAME), ITEM_getInt( contents, ITEM_ID) ); } return; break; case 1: CHAR_send_P_StatusString( charaindex, CHAR_P_STRING_GOLD); if( OBJECT_getIndex( objindex) == 0 ) { CHAR_ObjectDelete(objindex); }else { CHAR_sendWatchEvent(objindex,CHAR_ACTSTAND,NULL,0,TRUE); } { char mesg[256]; if( contents == 0 ) { snprintf( mesg,sizeof(mesg), "無法再拾獲Stone了。" ); }else { snprintf( mesg,sizeof(mesg), "拾獲 %d Stone",contents ); } CHAR_talkToCli(charaindex,-1,mesg,CHAR_COLORWHITE); } if( contents != 0 ){ LogStone( -1, CHAR_getChar( charaindex, CHAR_NAME ), CHAR_getChar( charaindex, CHAR_CDKEY ), contents, CHAR_getInt( charaindex, CHAR_GOLD ), "PickUp(拾獲金錢)", CHAR_getInt( charaindex,CHAR_FLOOR), CHAR_getInt( charaindex,CHAR_X ), CHAR_getInt( charaindex,CHAR_Y ) ); } return; break; case 2: //寵物 CHAR_ObjectDelete(objindex); CHAR_setWorkInt( contents, CHAR_WORKOBJINDEX, -1); { char mesg[256]; char *p = NULL; p = CHAR_getChar( contents, CHAR_USERPETNAME); if( strlen( p) == 0 ) { p = CHAR_getChar( contents, CHAR_NAME); } snprintf( mesg,sizeof(mesg), "拾獲 %s", p); CHAR_talkToCli(charaindex,-1,mesg,CHAR_COLORWHITE); } // 矢永玄毛膠勻兇夫弘 LogPet( CHAR_getChar( charaindex, CHAR_NAME ), /* 平乓仿 */ CHAR_getChar( charaindex, CHAR_CDKEY ), CHAR_getChar( contents, CHAR_NAME), CHAR_getInt( contents, CHAR_LV), "PickUp(撿寵)", CHAR_getInt( charaindex,CHAR_FLOOR), CHAR_getInt( charaindex,CHAR_X ), CHAR_getInt( charaindex,CHAR_Y ), CHAR_getChar( contents, CHAR_UNIQUECODE) // shan 2001/12/14 ); return; break; // Robin 0701 petFollow case 3: /* 引歹曰卞仇木毛壅六午中丹 */ CHAR_ObjectDelete(objindex); CHAR_setWorkInt( contents, CHAR_WORKOBJINDEX, -1); { char mesg[256]; char *p = NULL; p = CHAR_getChar( contents, CHAR_USERPETNAME); if( strlen( p) == 0 ) { p = CHAR_getChar( contents, CHAR_NAME); } snprintf( mesg,sizeof(mesg), "拾回 %s", p); CHAR_talkToCli(charaindex,-1,mesg,CHAR_COLORWHITE); } // 矢永玄毛膠勻兇夫弘 LogPet( CHAR_getChar( charaindex, CHAR_NAME ), /* 平乓仿 */ CHAR_getChar( charaindex, CHAR_CDKEY ), CHAR_getChar( contents, CHAR_NAME), CHAR_getInt( contents, CHAR_LV), "FollowPickUp(收回溜寵)", CHAR_getInt( charaindex,CHAR_FLOOR), CHAR_getInt( charaindex,CHAR_X ), CHAR_getInt( charaindex,CHAR_Y ), CHAR_getChar( contents, CHAR_UNIQUECODE) // shan 2001/12/14 ); return; break; case -1: break; case -2: CHAR_talkToCli( charaindex,-1,"道具欄已滿。", CHAR_COLORYELLOW); break; case -3: CHAR_talkToCli( charaindex,-1,"寵物數已滿。", CHAR_COLORYELLOW); break; case -4: CHAR_talkToCli( charaindex,-1,"無法照顧該寵物。", CHAR_COLORYELLOW); break; case -5: CHAR_talkToCli( charaindex,-1,"無法拾獲該寵物。", CHAR_COLORYELLOW); break; case -6: CHAR_talkToCli( charaindex,-1,"無法拾獲該道具。", CHAR_COLORYELLOW); break; default: return; } } return;}/*------------------------------------------------------------ * 云嗯毛甄 隙爛匹 公丹午允月[CHAR_DropMoney井日及心匹銀丹儀[ * 婁醒 * charaindex int 平乓仿奶件犯永弁旦 * itemindex int 失奶 丞奶件犯永弁旦(平乓仿犯□正及 匹及) * fl int 白夫失 * x int x * y int y * force BOOL 仇及襖互懇分午 泫 允 * objindex int* 中兇失奶 丞及 Object 匹及奶件犯弁永旦 * 忒曰襖 * 撩 (公氏卅卞云嗯毛 勻化中卅中) -1 * 撩 (嘩溥讀卞分戶) -2 * 公木動陸及撩 -3 * 撩 (公仇卞反公及洶及云嗯反聶允亢月) -4 * 允匹卞職及失奶 丞互 切化中月 -5 * 洶互 匹 [ -6 * 岳 0 ------------------------------------------------------------*/static BOOL CHAR_DropMoneyFXY( int charaindex, int amount, int fl , int x, int y, BOOL force, int* objindex ){ OBJECT object; int MaxGold; int mygold = CHAR_getInt( charaindex, CHAR_GOLD ); if( amount <= 0 )return -6; if( amount > mygold ) return -1; MaxGold = CHAR_getMaxHaveGold( charaindex); if ((mygold <0) || (mygold > MaxGold)) return -1; if( MAP_walkAbleFromPoint( fl,x,y,FALSE ) == FALSE )return -2; for( object=MAP_getTopObj(fl,x,y) ; object; object = NEXT_OBJECT(object) ){ int index = GET_OBJINDEX(object); int objtype = OBJECT_getType(index); if( objtype == OBJTYPE_NOUSE ) continue; else if( objtype == OBJTYPE_GOLD ){ long tmpamount = OBJECT_getIndex(index) + amount; if( tmpamount > MaxGold ) return -4; OBJECT_setIndex(index,tmpamount); CHAR_setInt(charaindex,CHAR_GOLD, (unsigned int)CHAR_getInt(charaindex, CHAR_GOLD ) - amount ); *objindex = index;#ifdef _DEL_DROP_GOLD OBJECT_setTime( index, NowTime.tv_sec);#endif if( amount >= 100 ){ /* 云嗯毛 中兇夫弘 */ LogStone(-1,CHAR_getChar( charaindex, CHAR_NAME ), /* 平乓仿 */ CHAR_getChar( charaindex, CHAR_CDKEY ), /* 交□扒□ID */ amount, /* 嗯喊 */ CHAR_getInt( charaindex, CHAR_GOLD ), "Drop(放置金錢)", CHAR_getInt( charaindex,CHAR_FLOOR), CHAR_getInt( charaindex,CHAR_X ), CHAR_getInt( charaindex,CHAR_Y ) ); } return 0; }else if( objtype == OBJTYPE_ITEM ){ if( force==TRUE ) continue; else /* 允匹卞失奶 丞互丐月及匹分戶 */ return -5; } } /* 仇仇引匹讒瓊允月午中丹儀反蕙筋瓚 允月 */ { Object one; one.type = OBJTYPE_GOLD; one.x = x; one.y = y; one.floor = fl; if( amount > MaxGold ) return -4; one.index = amount; *objindex = initObjectOne( &one ); /* 左皮斥尼弁玄瓚 允月 */ if( *objindex == -1 ) /* 瓚 撩 */ return -3; /*云嗯毛蛹日允*/ CHAR_setInt(charaindex,CHAR_GOLD, (unsigned int)CHAR_getInt(charaindex,CHAR_GOLD ) - amount );#ifdef _DEL_DROP_GOLD OBJECT_setTime( *objindex, NowTime.tv_sec);#endif if( amount >= 100 ){ /* 云嗯毛 中兇夫弘 */ LogStone(-1,CHAR_getChar( charaindex, CHAR_NAME ), /* 平乓仿 */ CHAR_getChar( charaindex, CHAR_CDKEY ), /* 交□扒□ID */ amount, /* 嗯喊 */ CHAR_getInt( charaindex, CHAR_GOLD ), "Drop(放置金錢)", CHAR_getInt( charaindex,CHAR_FLOOR), CHAR_getInt( charaindex,CHAR_X ), CHAR_getInt( charaindex,CHAR_Y ) ); } return 0; }}/*------------------------------------------------------------ * 云嗯毛 允楮醒[ 及蟆井日 允[ * 婁醒 * charaindex int 平乓仿奶件犯永弁旦 * amount int 云嗯及洶 * * 忒曰襖 * 卅仄 ------------------------------------------------------------*/void CHAR_DropMoney( int charaindex, int amount ){ int dirx[9],diry[9]; int ret; int i; int objindex, MaxGold; if( !CHAR_CHECKINDEX( charaindex ) )return;#ifdef _AVID_TRADETRYBUG //丟出石幣 if( CHAR_getWorkInt( charaindex, CHAR_WORKTRADEMODE) == CHAR_TRADE_TRADING ){ CHAR_talkToCli( charaindex, -1, "交易狀態中無法丟出石幣。", CHAR_COLORYELLOW ); return; }#endif MaxGold = CHAR_getMaxHaveGold( charaindex); if( CHAR_getFlg( charaindex,CHAR_ISDIE ) )return; //ANDY_ADD 12/28 { int money=0; money = CHAR_getInt( charaindex, CHAR_GOLD ); if( money < 0 ) { CHAR_setInt( charaindex, CHAR_GOLD, 0); return; } if( (amount > money) || (money > MaxGold)) { if( money > MaxGold ) { CHAR_setInt( charaindex, CHAR_GOLD, 0 ); print("\n ERR: %s(stone%d) dropMoney%d > CHAR_MAXGOLDHAVE !!", CHAR_getChar(charaindex, CHAR_CDKEY), money, amount); }else { print("\n ERR: %s dropMoney > CHAR_GOLD !!", CHAR_getChar(charaindex, CHAR_CDKEY)); } CHAR_send_P_StatusString( charaindex, CHAR_P_STRING_GOLD); return; } } //ANDY_END for( i = 0 ; i < 7 ; i ++ ){ dirx[i+2] = CHAR_getDX( CHAR_getInt(charaindex,CHAR_DIR) + i+1 ); diry[i+2] = CHAR_getDY( CHAR_getInt(charaindex,CHAR_DIR) + i+1 ); } dirx[0] = CHAR_getDX(CHAR_getInt(charaindex,CHAR_DIR)); diry[0] = CHAR_getDY(CHAR_getInt(charaindex,CHAR_DIR)); dirx[1] = 0; diry[1] = 0; for( i = 0 ; i < 9 ; i ++ ){ int x = CHAR_getInt(charaindex,CHAR_X) + dirx[i]; int y = CHAR_getInt(charaindex,CHAR_Y) + diry[i];// CoolFish 2002/04/06 下注處不可丟置石幣#ifdef _DROPSTAKENEW { int j = 0; for(j = 0; j < arraysizeof(casinomap); j++) { if(CHAR_getInt(charaindex, CHAR_FLOOR) == casinomap[j].casinofl) { if (x == casinomap[j].casinox && y == casinomap[j].casinoy) { CHAR_talkToCli(charaindex, -1, "這里
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -