📄 char_item.c.bak
字号:
CHAR_talkToCli(charaindex, -1, "现在无法下注!", CHAR_COLORYELLOW); return; }else{ snprintf(tmpbuf, sizeof(tmpbuf), "你在 %s 下注了一张彩券", casinomap[j].casinoinfo); if(dropflag >= MAXSTAKENUM){ snprintf(tmpbuf, sizeof(tmpbuf), "你已经下注五次了,无法再下注!"); CHAR_talkToCli(charaindex, -1, tmpbuf, CHAR_COLORYELLOW); return; } for(k = 0; k < MAXSTAKENUM; k++){ if(CHAR_getWorkInt(charaindex, CHAR_WORKSTAKETYPE1 + k) == 0){ CHAR_setWorkInt(charaindex, CHAR_WORKSTAKETYPE1 + k, casinomap[j].casinotype); casinomap[j].stakenum = casinomap[j].stakenum + 1; if(casinomap[j].stakenum >= 100000000) casinomap[j].stakenum = 100000000; dropflag++; if(casinomap[j].stakenum <= 1) bdropstake = 1; break; } } } CHAR_talkToCli(charaindex, -1, tmpbuf, CHAR_COLORYELLOW);#ifdef _FIX_GAMBLENUM //做扣点的动作 if (dropflag <= MAXSTAKENUM){ int nAcc = CHAR_getInt(charaindex, CHAR_GAMBLENUM); nAcc -= casinomap[j].accumulation; CHAR_setInt(charaindex, CHAR_GAMBLENUM, nAcc); }#endif if (dropflag >= MAXSTAKENUM){ dropflag = 0; for (k = 0; k < MAXSTAKENUM ; k++){ if (CHAR_getWorkInt(charaindex, CHAR_WORKSTAKETYPE1 + k) > 0) dropflag++; } CHAR_setWorkInt(charaindex, CHAR_WORKSTAKEFLAG, dropflag); }else{ CHAR_setWorkInt(charaindex, CHAR_WORKSTAKEFLAG, dropflag); } continue; } } } // 此地方的彩券数量超过一张以上 if(bdropstake == 0 && casinoflag != 0){ CHAR_setItemIndex(charaindex, itemcharaindex ,-1); CHAR_sendItemDataOne(charaindex, itemcharaindex); 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 "StakeDrop(丢出彩券)", 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) ); return; } }#endif { int ret = CHAR_DropItemFXY( charaindex,itemcharaindex, CHAR_getInt(charaindex,CHAR_FLOOR), x, y, &objindex ); switch( ret ){ case 0: droped = 1;#ifdef _ITEM_ORNAMENTS // WON FIX if( ITEM_getWorkInt( itemindex, ITEM_CANPICKUP) > 0 ){ ITEM_setInt( itemindex, ITEM_PUTTIME, NowTime.tv_sec + 60*5); }else{ ITEM_setInt( itemindex, ITEM_PUTTIME, NowTime.tv_sec); }#else ITEM_setInt( itemindex, ITEM_PUTTIME, NowTime.tv_sec);#endif goto END; break; case -1: case -2: break; case -3: default: return; break; }#ifdef _DROPSTAKENEW }#endif }#ifdef _DROPCHECK if( droped != 1 ) { CHAR_talkToCli( charaindex, -1, "周围的地面已经满了。", CHAR_COLORYELLOW ); return; }#endifEND: CHAR_sendWatchEvent( objindex, CHAR_ACTSTAND, NULL, 0, TRUE); CHAR_setItemIndex( charaindex, itemcharaindex ,-1);{ char category[3]; snprintf( category,sizeof( category),"J%d", itemcharaindex); CHAR_sendStatusString( charaindex , category);} if( CHAR_complianceParameter( charaindex ) ){ CHAR_sendCToArroundCharacter( CHAR_getWorkInt( charaindex, CHAR_WORKOBJINDEX) ); } if( CHAR_getInt( charaindex, CHAR_WHICHTYPE) == CHAR_TYPEPLAYER) { CHAR_send_P_StatusString( charaindex, CHAR_P_STRING_HP|CHAR_P_STRING_MAXHP| CHAR_P_STRING_MP|CHAR_P_STRING_MAXMP| CHAR_P_STRING_ATK|CHAR_P_STRING_DEF| CHAR_P_STRING_QUICK|CHAR_P_STRING_CHARM| CHAR_P_STRING_LUCK|CHAR_P_STRING_EARTH| CHAR_P_STRING_WATER|CHAR_P_STRING_FIRE| CHAR_P_STRING_WIND ); CHAR_sendItemDataOne( charaindex, itemcharaindex); } return;}#endifint CHAR_DropItemAbsolute( int itemindex, int floor, int x, int y, BOOL net){ Object object; int objindex; if( !ITEM_CHECKINDEX( itemindex) )return FALSE; object.type = OBJTYPE_ITEM; object.index = itemindex; object.x = x; object.y = y; object.floor = floor; objindex = initObjectOne( &object ); ITEM_setWorkInt( itemindex,ITEM_WORKOBJINDEX, objindex ); ITEM_setWorkInt( itemindex,ITEM_WORKCHARAINDEX, -1 ); if( net ) CHAR_sendWatchEvent( objindex,CHAR_ACTSTAND,NULL,0,TRUE); return objindex;}int CHAR_addItemSpecificItemIndex( int charaindex, int itemindex ){ int emptyindex; if( CHAR_CHECKINDEX( charaindex) == FALSE) return -1; if( ITEM_CHECKINDEX( itemindex) == FALSE) return -1; emptyindex = CHAR_findEmptyItemBox( charaindex ); if( emptyindex == -1 ){ return CHAR_MAXITEMHAVE; }else{ CHAR_setItemIndex(charaindex,emptyindex,itemindex); ITEM_setWorkInt(itemindex,ITEM_WORKCHARAINDEX,charaindex); ITEM_setWorkInt(itemindex,ITEM_WORKOBJINDEX,-1); } return emptyindex;}static int CHAR_PickUpItemFXY( int charaindex, int fl ,int x , int y , int* contents,int* objindex ){ OBJECT object; 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_ITEM ){ int ret; int itemindex = OBJECT_getIndex( index);#ifdef _MARKET_TRADE //买 if( ITEM_getWorkInt( itemindex, ITEM_WORKTRADETYPE) == TRADETYPE_SELL ) { MAP_TRADEPICKUP( charaindex, itemindex, fl, x, y, TRADEITEMTYPE); return -1; }#endif#ifdef _ITEM_ORNAMENTS if( ITEM_getWorkInt( itemindex, ITEM_CANPICKUP) > 0 ){ return -1; }#endif#ifdef _DROPSTAKENEW // 判断物品是否为彩券 if(ITEM_getInt(itemindex, ITEM_ID) == CASINOTOKENID){ int i = 0; int bdropstake = 0, casinoflag = 0, emptyitemindexinchara = -1; for(i = 0; i < arraysizeof(casinomap); i++){ if(fl == casinomap[i].casinofl){ if(x == casinomap[i].casinox && y == casinomap[i].casinoy){ int j = 0, stakeflag = 0; int pickupflag = 0; casinoflag = 1; if(casinomap[i].dropflag == 0){ CHAR_talkToCli(charaindex, -1, "现在已经无法取回下注彩券了!", CHAR_COLORYELLOW); return -1; } stakeflag = CHAR_getWorkInt(charaindex, CHAR_WORKSTAKEFLAG); if(stakeflag == 0){ CHAR_talkToCli(charaindex, -1, "您并没有下注,所以无法取回彩券!", CHAR_COLORYELLOW); return -1; } for(j = 0; j < MAXSTAKENUM; j++){ if(CHAR_getWorkInt(charaindex, CHAR_WORKSTAKETYPE1 + j) == casinomap[i].casinotype){ emptyitemindexinchara = CHAR_findEmptyItemBox(charaindex); if(emptyitemindexinchara < 0) return -2; CHAR_setWorkInt(charaindex, CHAR_WORKSTAKETYPE1 + j, 0); casinomap[i].stakenum = casinomap[i].stakenum - 1; stakeflag--; pickupflag = 1;#ifdef _FIX_GAMBLENUM //做加点的动作 { int nAcc = CHAR_getInt(charaindex, CHAR_GAMBLENUM); nAcc += casinomap[i].accumulation; CHAR_setInt(charaindex, CHAR_GAMBLENUM, nAcc); }#endif if(casinomap[i].stakenum <= 0){ bdropstake = 1; casinomap[i].stakenum = 0; } break; } } if(stakeflag < 0){ stakeflag = 0; for(j = 0; j < MAXSTAKENUM; j++){ if(CHAR_getWorkInt(charaindex, CHAR_WORKSTAKETYPE1 + j) > 0) stakeflag++; } CHAR_setWorkInt(charaindex, CHAR_WORKSTAKEFLAG, stakeflag); }else CHAR_setWorkInt(charaindex, CHAR_WORKSTAKEFLAG, stakeflag); if(pickupflag == 0){ CHAR_talkToCli(charaindex, -1, "您没有在此下注,所以无法取回彩券!", CHAR_COLORYELLOW); return -1; } } } } if(bdropstake == 0 && casinoflag != 0){// 此地方的彩券数量超过一张以上 char tmpbuf[256]; if(emptyitemindexinchara != -1){ int itemid=-1, ret=-1; itemid = ITEM_makeItemAndRegist(CASINOTOKENID); if(itemid == -1) return -1; ret = CHAR_addItemSpecificItemIndex( charaindex, itemid); if( ret < 0 || ret >= CHAR_MAXITEMHAVE ) { ITEM_endExistItemsOne( itemid ); return -1; } } CHAR_sendItemDataOne(charaindex, emptyitemindexinchara); snprintf(tmpbuf, sizeof(tmpbuf), "拾回%s,已将下注取消!", ITEM_getChar(itemindex, ITEM_NAME)); CHAR_talkToCli(charaindex, -1, tmpbuf, 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 "StakePickUp(捡起彩券)", 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) ); return -1; } }#endif ret = CHAR_addItemSpecificItemIndex( charaindex, itemindex ); if(ret == CHAR_MAXITEMHAVE ){ return -2; }else if( ret != -1 ) { typedef void (*PICKUPFUNC)( int, int); PICKUPFUNC pickupfunc = NULL; pickupfunc = (PICKUPFUNC)ITEM_getFunctionPointer( itemindex, ITEM_PICKUPFUNC); if( pickupfunc) pickupfunc( charaindex, itemindex); *contents = OBJECT_getIndex(index); *objindex = index; CHAR_sendItemDataOne( charaindex, ret); return 0; } }else if( objtype == OBJTYPE_GOLD ){ int MaxGold; long dropgoldamount = 0, newamountgold = 0, Minus = 0, newgold = 0; long mygold = (long) CHAR_getInt( charaindex, CHAR_GOLD ); MaxGold = CHAR_getMaxHaveGold( charaindex); if ((mygold <0) || (mygold > MaxGold))return -2; dropgoldamount = OBJECT_getIndex(index); newamountgold = (unsigned int) CHAR_getInt( charaindex,CHAR_GOLD ) + dropgoldamount; Minus = newamountgold - MaxGold; if( Minus > 0 ) { newgold = Minus; *contents = dropgoldamount - Minus; }else { newgold = 0; *contents = dropgoldamount; } OBJECT_setIndex( index, newgold); CHAR_setInt( charaindex, CHAR_GOLD, min( newamountgold, MaxGold ) ); *objindex = index; return 1; }else if( objtype == OBJTYPE_CHARA ) { int pindex = OBJECT_getIndex( index); if( !CHAR_CHECKINDEX( pindex) ) continue; if( CHAR_getInt( pindex, CHAR_WHICHTYPE) == CHAR_TYPEPET ) { int havepetindex = CHAR_getCharPetElement( charaindex); if( havepetindex == -1 ) { if( CHAR_getWorkInt( pindex, CHAR_WORKPETFOLLOWMODE) != CHAR_PETFOLLOW_NOW ) return -3; } if( CHAR_getWorkInt( charaindex, CHAR_PickAllPet) != TRUE ) { if( (CHAR_getInt( pindex, CHAR_LV) - CHAR_getInt( charaindex, CHAR_LV) > 5 ) && (CHAR_getInt( charaindex, CHAR_TRANSMIGRATION ) <= 0 )) { return -4; } } /*if( !strcmp( CHAR_getChar( pindex, CHAR_OWNERCDKEY), "SYSTEM_WAYI" ) && !strcmp( CHAR_getChar( pindex, CHAR_OWNERCHARANAME), "SYSTEM_WAYI" ) ){ }else{ if( strcmp( CHAR_getChar( pindex, CHAR_OWNERCDKEY), CHAR_getChar( charaindex, CHAR_CDKEY) ) || strcmp( CHAR_getChar( pindex, CHAR_OWNERCHARANAME), CHAR_getChar( charaindex, CHAR_NAME) )){ return -5; } }*/#ifdef _MARKET_TRADE if( CHAR_getWorkInt( pindex, CHAR_WORKTRADETYP) == TRADETYPE_SELL ) { //买宠 MAP_TRADEPICKUP( charaindex, pindex, fl, x, y, TRADEPETTYPE ); return -1; }#endif if( CHAR_getWorkInt( pindex, CHAR_WORKPETFOLLOWMODE) == CHAR_PETFOLLOW_NOW ){ CHAR_pickupFollowPet( charaindex, pindex ); return -1; } /*if( CHAR_getInt( pindex, CHAR_MAILMODE) != CHAR_PETMAIL_NONE){ if( strcmp( CHAR_getChar( pindex, CHAR_OWNERCDKEY), CHAR_getChar( charaindex, CHAR_CDKEY)) != 0 || strcmp( CHAR_getChar( pindex, CHAR_OWNERCHARANAME), CHAR_getChar( charaindex, CHAR_NAME))!= 0 ){ return -5; }else if( CHAR_getInt( pindex, CHAR_MAILMODE) != CHAR_PETMAIL_IDLE5){ return -5; } }*/ if( CHAR_getInt( pindex, CHAR_MAILMODE) != CHAR_PETMAIL_NONE){ Char *ch; CHAR_setInt( pindex, CHAR_MAILMODE, CHAR_PETMAIL_NONE); CHAR_setInt( pindex, CHAR_PETMAILIDLETIME, 0); PETMAIL_delPetMailTotalnums( 1); //手动捡起mail PET ch = CHAR_getCharPointer( pindex); if( ch != NULL ) { strcpysafe( ch->charfunctable[CHAR_LOOPFUNC].string, sizeof( ch->charfunctable[CHAR_LOOPFUNC]), ""); CHAR_constructFunctable( pindex); } } CHAR_setWorkInt( pindex, CHAR_WORKPLAYERINDEX, charaindex); CHAR_setCharPet( charaindex, havepetindex, pindex);#ifdef _PET_TALK if( CHAR_getInt( pindex, CHAR_PETID) != 718 ) {#endif CHAR_setChar( pindex, CHAR_OWNERCDKEY, CHAR_getChar( charaindex, CHAR_CDKEY)); CHAR_setChar( pindex, CHAR_OWNERCHARANAME, CHAR_getChar( charaindex, CHAR_NAME));#ifdef _PET_TALK }#endif CHAR_complianceParameter( pindex);{ char category[3]; snprintf( category,sizeof( category),"K%d",havepetindex); CHAR_sendStatusString( charaindex, category); snprintf( category,sizeof( category),"W%d",havepetindex); CHAR_sendStatusString( charaindex, category);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -