📄 item_event.c.bak
字号:
renameitemhaveindex = CHAR_getWorkInt( charaindex, CHAR_WORKRENAMEITEMINDEX); renameitemindex = CHAR_getItemIndex( charaindex, renameitemhaveindex); if( !ITEM_CHECKINDEX( renameitemindex)) { print( "%s %d err\n", __FILE__, __LINE__); return; } remain = atoi( ITEM_getChar( renameitemindex, ITEM_ARGUMENT)); if( remain != 0 ) { remain --; if( remain <= 0 ) { snprintf( msgbuf, sizeof(msgbuf),"%s 消失了", ITEM_getChar( renameitemindex, ITEM_NAME)); CHAR_talkToCli( charaindex, -1, msgbuf, CHAR_COLORYELLOW); CHAR_setItemIndex( charaindex, renameitemhaveindex, -1); CHAR_sendItemDataOne( charaindex, renameitemhaveindex); ITEM_endExistItemsOne( renameitemindex ); }else { char buf[32]; snprintf( buf, sizeof( buf),"%d", remain); ITEM_setChar( renameitemindex, ITEM_ARGUMENT, buf); } } } }}//-------------------------------------------------------------------------// 今中仇欠毛 蜇允月楮醒[// 午仄凶凛卞]仿件母丞卞ㄠ ㄥ毛蓟太] 蟆午 飓 寞毛 凳允月[//-------------------------------------------------------------------------void ITEM_dropDice( int charaindex, int itemindex){ char *dicename[] = { "一", "二", "叁", "四", "五", "六"}; int diceimagenumber[] = { 24298,24299,24300,24301,24302,24303}; int r = RAND( 0,5); // 飓 寞毛谨 ITEM_setInt( itemindex, ITEM_VAR1, ITEM_getInt( itemindex, ITEM_BASEIMAGENUMBER)); // 飓 寞凳蕙 ITEM_setInt( itemindex, ITEM_BASEIMAGENUMBER, diceimagenumber[r]); // 蟆凳蕙 ITEM_setChar( itemindex, ITEM_SECRETNAME, dicename[r]); // 犯□正及弁仿奶失件玄尺及霜耨反晓匏楮醒匹垫丹及匹]仇仇匹反支日卅中[}//-------------------------------------------------------------------------// 今中仇欠毛 蜇允月楮醒[// 胶匀凶凛卞] 蟆午 飓 寞毛葭卞 允[//-------------------------------------------------------------------------void ITEM_pickupDice( int charaindex, int itemindex){ // 飓 寞毛葭卞 允[ ITEM_setInt( itemindex, ITEM_BASEIMAGENUMBER, ITEM_getInt( itemindex, ITEM_VAR1)); // 蟆手葭卞 允 ITEM_setChar( itemindex, ITEM_SECRETNAME, ITEM_getChar( itemindex, ITEM_NAME));}enum { ITEM_LOTTERY_1ST, // 1羁 ITEM_LOTTERY_2ND, ITEM_LOTTERY_3RD, ITEM_LOTTERY_4TH, ITEM_LOTTERY_5TH, // 5羁 ITEM_LOTTERY_6TH, // 6羁 ITEM_LOTTERY_NONE, // 陆木 ITEM_LOTTERY_NUM,};//-------------------------------------------------------------------------// 旦疋□玉仁元互综日木月凛及楮醒[// 仇仇匹窒羁操卞卅月井毛瑁户月[// 割 反动票及骚曰[#define PRE_6 (10000)#define PRE_5 (1300 + PRE_6)#define PRE_4 (600 + PRE_5)#define PRE_3 (300 + PRE_4)#define PRE_2 (8 + PRE_3)#define PRE_1 (1 + PRE_2)//#define PRE_5 (13000)//#define PRE_4 (2300 + PRE_5)//#define PRE_3 (540 + PRE_4)//#define PRE_2 (8 + PRE_3)//#define PRE_1 (1 + PRE_2)//#define PRE_5 (16000)//#define PRE_4 (2500 + PRE_5)//#define PRE_3 (400 + PRE_4)//#define PRE_2 (10 + PRE_3)//#define PRE_1 (1 + PRE_2)//#define PRE_5 (27000)//#define PRE_4 (4000 + PRE_5)//#define PRE_3 (400 + PRE_4)//#define PRE_2 (10 + PRE_3)//#define PRE_1 (1 + PRE_2)////-------------------------------------------------------------------------BOOL ITEM_initLottery(ITEM_Item* itm){ int r = RAND( 0, 49999); int hit = ITEM_LOTTERY_NONE; // char result[7]; // 请 int countnum[6]; int count; int i; int len; // 域荚综匀化月及匹[疯粟 仄凶凛午井卞综曰卅云今木卅中方丹卞[ if( itm->data[ITEM_VAR3] == 1 ) return TRUE; // 铲蓟允月[ if( r < PRE_6 ) hit = ITEM_LOTTERY_6TH; else if( r < PRE_5 ) hit = ITEM_LOTTERY_5TH; else if( r < PRE_4 ) hit = ITEM_LOTTERY_4TH; else if( r < PRE_3 ) hit = ITEM_LOTTERY_3RD; else if( r < PRE_2 ) hit = ITEM_LOTTERY_2ND; else if( r < PRE_1 ) hit = ITEM_LOTTERY_1ST; else hit = ITEM_LOTTERY_NONE; // 请 毛瑁烂允月[ count = 0; memset( countnum, 0, sizeof( countnum)); if( hit != ITEM_LOTTERY_NONE ) { // 癫曰毛本永玄 result[0] = result[1] = result[2] = hit+1; count = 3; countnum[hit] = 3; } while( count < 6 ) { int r = RAND( ITEM_LOTTERY_1ST, ITEM_LOTTERY_6TH); if( countnum[r] >= 2 ) continue; // 2/3仁日中及割 匹]职及陆木钓 毛伉□民今六化支月[ // 升五升五[ if( ( hit != ITEM_LOTTERY_NONE && count == 3 ) || ( hit == ITEM_LOTTERY_NONE && count == 0 ) ) { if( RAND( 0,2)) { result[count] = result[count+1] = r+1; countnum[r] += 2; count += 2; continue; } } countnum[r] ++; result[count] = r+1; count++; } // 请 毛扑乓永白伙允月[ // 癫曰及凛反2/3及割 匹]癫曰醒侬毛域 欠卞裔烂允月[ // 玉平玉平躲绊毛谎丹啃[ len = sizeof( result)-2; if( hit != ITEM_LOTTERY_NONE ) { if( RAND( 0,2) ) { // 癫曰醒侬毛域 欠卞[ char s = result[0]; result[0] = result[5]; result[5] = s; len = sizeof( result)-3; } } for( i = 0; i < 10; i ++) { int x = RAND( 0, len); int y = RAND( 0, len); int s; s = result[x]; result[x] = result[y]; result[y] = s; } // 及凶户] 侬 健中卞仄化云仁[ result[sizeof(result)-1] = '\0'; itm->data[ITEM_VAR1] = hit; // 户仁匀凶市它件玄 itm->data[ITEM_VAR2] = 0; itm->data[ITEM_VAR3] = 1; memcpy( itm->string[ITEM_ARGUMENT].string, result, sizeof( result)); return TRUE;}//-------------------------------------------------------------------------// 旦疋□玉仁元毛银匀凶凛及楮醒[// ㄥ荚银丹午]窒羁操井及失奶 丞卞 祭允月[//-------------------------------------------------------------------------void ITEM_useLottery( int charaindex, int toindex, int haveitemindex){ int i,j; int itemindex = CHAR_getItemIndex( charaindex, haveitemindex); int count = ITEM_getInt( itemindex, ITEM_VAR2); int hit = ITEM_getInt( itemindex, ITEM_VAR1); char buff[1024]; char num[6][3] = { {"迭"},{"迫"},{"迤"},{"迨"},{"郊"}, {"郎"}}; char numbuff[128]; char *n; int result; BOOL flg; if( !ITEM_CHECKINDEX( itemindex) ) return; if( count == 0 ) { ITEM_setChar( itemindex, ITEM_EFFECTSTRING, ""); } // ㄥ荚 及银迕反]陆木仄井丐曰 卅中及匹]仇仇匹失奶 丞毛壅允 else if( count == 6 ) { CHAR_setItemIndex( charaindex , haveitemindex, -1 ); CHAR_sendItemDataOne( charaindex, haveitemindex); ITEM_endExistItemsOne( itemindex ); return; } n = ITEM_getChar( itemindex, ITEM_ARGUMENT); // for debug#if 0 snprintf( buff, sizeof( buff), "羁操“%d 请 : %d%d%d%d%d%d", hit, (int)(n[0]+1),(int)(n[1]+1), (int)(n[2]+1),(int)(n[3]+1), (int)(n[4]+1),(int)(n[5]+1) ); CHAR_talkToCli( charaindex, -1, buff, CHAR_COLORYELLOW );#endif result = (int)n[count]-1; // 伉□民井譬屯月 flg = FALSE; for( i = 0; i < count+1 && flg == FALSE; i ++ ) { for( j = i+1; j < count+1 && flg == FALSE; j ++ ) { if( i != j ) { if( n[i] == n[j] ) { flg = TRUE; } } } } memset( numbuff, 0, sizeof( numbuff)); memcpy( numbuff, ITEM_getChar( itemindex, ITEM_EFFECTSTRING), (count)*2); // 躲绊 侬 卞]请 毛请允[ snprintf( buff, sizeof( buff), "%s%s", numbuff, num[result]); count ++; ITEM_setInt( itemindex, ITEM_VAR2, count); // ㄥ荚 匹癫曰卅日癫曰失奶 丞卞 凳]陆木卅日陆木午 憎] // 戚荚母皮伙弁伉永弁匹壅允[ if( count >= 6 ) { // 癫曰 if( hit != ITEM_LOTTERY_NONE ) { int newitemindex; char strbuff[1024]; char msgbuff[1024]; // 壅仄化 CHAR_setItemIndex( charaindex , haveitemindex, -1 ); ITEM_endExistItemsOne( itemindex ); // 2729 - 2734 反 仁元及1 6羁 newitemindex = ITEM_makeItemAndRegist( 2729 + hit); CHAR_setItemIndex( charaindex , haveitemindex, newitemindex ); // 请 手戊疋□ snprintf( strbuff, sizeof( strbuff), "%s %s", buff, ITEM_getChar( newitemindex, ITEM_EFFECTSTRING)); ITEM_setChar( newitemindex, ITEM_EFFECTSTRING, strbuff); CHAR_sendItemDataOne( charaindex, haveitemindex); snprintf( msgbuff, sizeof( msgbuff), "中了第%d奖", hit+1 ); CHAR_talkToCli( charaindex, -1, msgbuff, CHAR_COLORYELLOW ); } // 陆木 else {// CHAR_setItemIndex( charaindex , haveitemindex, -1 ); // 请 手戊疋□ char strbuff[1024]; snprintf( strbuff, sizeof( strbuff), "%s 没中,下次再来", buff); ITEM_setChar( itemindex, ITEM_EFFECTSTRING, strbuff); CHAR_sendItemDataOne( charaindex, haveitemindex);// ITEM_endExistItemsOne( itemindex );// CHAR_talkToCli( charaindex, -1,// "反内木″",// CHAR_COLORWHITE ); } } // 公丹元扎 中凛反]犯□正毛霜曰卅云允分仃[ else { char strbuff[1024]; if( flg) { // 旦矢□旦煌遥 // 失奶 丞及 及戊丢件玄反]ㄠ垫ㄡㄧ 侬匹] // 旦矢□旦毛银匀化荼垫仄化中月[ int spc = 16 + ( 6-count)*2; char space[17]; memset( space, ' ', spc); space[spc] = '\0'; snprintf( strbuff, sizeof( strbuff), "%s%s快中了", buff, space); } else { strcpy( strbuff, buff); } ITEM_setChar( itemindex, ITEM_EFFECTSTRING, strbuff); CHAR_sendItemDataOne( charaindex, haveitemindex); }}void ITEM_WarpDelErrorItem( int charaindex ){ int j; for(j=0; j<CHAR_MAXITEMHAVE; j++){ int itemindex=CHAR_getItemIndex(charaindex, j); if(ITEM_CHECKINDEX(itemindex)){ int id=ITEM_getInt(itemindex, ITEM_ID); if(id==2609||id==2704){ CHAR_setItemIndex(charaindex, j, -1); ITEM_endExistItemsOne(itemindex); CHAR_sendItemDataOne(charaindex, j); } } }#ifdef _ITEM_WARP_FIX_BI if(!CHAR_getWorkInt( charaindex, CHAR_WORKITEMMETAMO)) recoverbi(charaindex);#endif}BOOL ITEM_WarpForAny(int charaindex, int haveitemindex, int ff, int fx, int fy,int flg){ if( CHAR_getWorkInt( charaindex, CHAR_WORKBATTLEMODE ) != BATTLE_CHARMODE_NONE ) return FALSE;#ifdef _BAD_PLAYER // WON ADD 送坏玩家去关 if( (CHAR_getInt(charaindex,CHAR_FLOOR)==117)||(CHAR_getInt(charaindex,CHAR_FLOOR)==887) ){#else if( CHAR_getInt( charaindex, CHAR_FLOOR) == 117 #ifdef _ADD_DUNGEON //追加地牢 || CHAR_getInt( charaindex,CHAR_FLOOR ) == 8513#endif ){#endif CHAR_talkToCli(charaindex, -1, "此处无法使用。", CHAR_COLORYELLOW); return FALSE; } if( CHAR_getWorkInt( charaindex, CHAR_WORKPARTYMODE ) == CHAR_PARTY_LEADER ){ int i; if( flg == 0 ) {//单体 CHAR_talkToCli(charaindex, -1, "只能单人使用。", CHAR_COLORYELLOW); return FALSE; } for( i = 0; i < CHAR_PARTYMAX; i ++ ){ int subindex = CHAR_getWorkInt( charaindex, CHAR_WORKPARTYINDEX1+i ); if( CHAR_CHECKINDEX( subindex ) == FALSE ) continue; CHAR_talkToCli( subindex, -1, "全体瞬间飞行...", CHAR_COLORWHITE); ITEM_WarpDelErrorItem( subindex ); CHAR_warpToSpecificPoint( subindex, ff, fx, fy ); } }else if( CHAR_getWorkInt( charaindex, CHAR_WORKPARTYMODE ) == CHAR_PARTY_CLIENT ){ CHAR_talkToCli(charaindex, -1, "队员无法使用。", CHAR_COLORYELLOW); return FALSE; }else if( CHAR_getWorkInt( charaindex, CHAR_WORKPARTYMODE ) == CHAR_PARTY_NONE ){ ITEM_WarpDelErrorItem( charaindex ); CHAR_warpToSpecificPoint( charaindex, ff, fx, fy); } return TRUE;}//andy_end// Robin 0523void ITEM_useWarp( int charaindex, int toindex, int haveitemindex ){ char *arg; int itemindex, warp_t, warp_fl, warp_x, warp_y; itemindex = CHAR_getItemIndex( charaindex, haveitemindex); if(!ITEM_CHECKINDEX(itemindex)) return;#ifdef _ITEM_CHECKWARES if( CHAR_CheckInItemForWares( charaindex, 0) == FALSE ){ CHAR_talkToCli(charaindex, -1, "携带货物无法使用。", CHAR_COLORYELLOW); return; }#endif#ifdef _BAD_PLAYER // WON ADD 送坏玩家去关 if( (CHAR_getInt(charaindex,CHAR_FLOOR)==117)||(CHAR_getInt(charaindex,CHAR_FLOOR)==887) ){ CHAR_talkToCli(charaindex, -1, "此处无法使用。", CHAR_COLORYELLOW); return; }#endif arg = ITEM_getChar(itemindex, ITEM_ARGUMENT ); if( arg == NULL ) return; if( sscanf( arg, "%d %d %d %d", &warp_t, &warp_fl, &warp_x, &warp_y) != 4 ) return; if( ITEM_WarpForAny(charaindex, haveitemindex, warp_fl, warp_x, warp_y, warp_t) == FALSE ) return; CHAR_DelItem( charaindex, haveitemindex); CHAR_sendStatusString(charaindex, "P");}#ifdef _USEWARP_FORNUMvoid ITEM_useWarpForNum( int charaindex, int toindex, int haveitemindex ){ char *arg; int flg, ff, fx, fy, itemindex, usenum=0, i; int Mf, Mx, My; int MapPoint[12]={ 100, 200, 300, 400, 700, 701, 702, 703, 704, 705, 707, 708 }; char MapString[12][256]={ "萨伊那斯
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -