?? callfromcli.c
字號:
} ix=CHAR_getInt(fd_charaindex, CHAR_X); iy=CHAR_getInt(fd_charaindex, CHAR_Y); x=ix; y=iy; CHAR_setMyPosition( fd_charaindex, x,y,TRUE); if(!CONNECT_get_shutup(fd)){ //ttom add the shut up function CHAR_Talk( fd,fd_charaindex, message, color, area ); }}void lssproto_M_recv( int fd, int fl, int x1, int y1 , int x2, int y2 ){ char* mapdata; RECT seek={x1,y1,x2-x1,y2-y1},ret; CHECKFD; mapdata = MAP_getdataFromRECT(fl,&seek,&ret); if( mapdata != NULL ){ lssproto_M_send( fd, fl, ret.x, ret.y, ret.x+ret.width, ret.y+ret.height, mapdata ); }}/*------------------------------------------------------------ * 平乓仿犯□正 邰菲[ ------------------------------------------------------------*/void lssproto_C_recv( int fd, int index ){ /* 仇木分仃凜棉及澀爛毛葦卅中儀卞允月 */ CHECKFD; CHAR_sendCSpecifiedObjindex( fd, index);}void lssproto_S_recv( int fd, char* category ){ char* string; int fd_charaindex; fd_charaindex = CONNECT_getCharaindex( fd ); string = CHAR_makeStatusString( fd_charaindex, category ); if( string != NULL ) lssproto_S_send( fd , string );}void lssproto_EV_recv( int fd,int event,int seqno,int x,int y, int dir ){ int rc; int fx,fy; int fd_charaindex; CHECKFD; fd_charaindex = CONNECT_getCharaindex( fd ); { int ix,iy; ix=CHAR_getInt(fd_charaindex, CHAR_X); iy=CHAR_getInt(fd_charaindex, CHAR_Y); if( ( ix != x ) || ( iy != y ) ){ goto CK1; } goto OK; }CK1: { OBJECT object; int ix,iy,ifloor,i,j; int warp_point_x[9]; int warp_point_y[9]; int warp_point=0; ix=CHAR_getInt(fd_charaindex, CHAR_X); iy=CHAR_getInt(fd_charaindex, CHAR_Y); ifloor=CHAR_getInt(fd_charaindex,CHAR_FLOOR); for(i=iy-1;i<=iy+1;i++){ for(j=ix-1;j<=ix+1;j++){ for( object = MAP_getTopObj(ifloor,j,i) ; object ;object = NEXT_OBJECT(object ) ){ int o = GET_OBJINDEX(object); if( OBJECT_getType(o) == OBJTYPE_CHARA ){ int etype; int charaindex=OBJECT_getIndex(o); if( !CHAR_CHECKINDEX(charaindex) ) continue; etype = CHAR_getWorkInt( charaindex, CHAR_WORKEVENTTYPE); if( etype != CHAR_EVENT_NONE ) { if(etype==CHAR_EVENT_WARP){ warp_point_x[warp_point]=j; warp_point_y[warp_point]=i; warp_point++; } } }#ifdef _MAP_WARPPOINT else if( OBJECT_getType(o) == OBJTYPE_WARPPOINT ){ int etype = OBJECT_getchartype( o); if( etype != CHAR_EVENT_NONE ) { warp_point_x[warp_point]=j; warp_point_y[warp_point]=i; warp_point++; break; } }#endif } } } for(i=0;i<warp_point;i++){ if((x==warp_point_x[i])&& (y==warp_point_y[i])) goto OK; } x=CHAR_getInt(fd_charaindex, CHAR_X); y=CHAR_getInt(fd_charaindex, CHAR_Y); }OK: CHAR_setMyPosition( fd_charaindex, x,y,TRUE); CHAR_setWorkChar( fd_charaindex , CHAR_WORKWALKARRAY,""); if( dir < 0 || dir > 7) { fx = CHAR_getInt(fd_charaindex, CHAR_X); fy = CHAR_getInt(fd_charaindex, CHAR_Y); }else { CHAR_getCoordinationDir( dir, CHAR_getInt(fd_charaindex, CHAR_X), CHAR_getInt(fd_charaindex, CHAR_Y),1,&fx,&fy); } rc = EVENT_main(fd_charaindex, event,fx,fy); lssproto_EV_send( fd, seqno, rc);}/*------------------------------------------------------------ * 巨件市它件玄 戲 ------------------------------------------------------------*/void lssproto_EN_recv( int fd , int x,int y ){ int ret = FALSE, err = 0; int fd_charaindex; CHECKFD; fd_charaindex = CONNECT_getCharaindex( fd); //print(" EN_recv "); if( CHAR_getWorkInt( fd_charaindex, CHAR_WORKPARTYMODE) != CHAR_PARTY_CLIENT){ CHAR_setMyPosition( fd_charaindex, x,y,TRUE); CHAR_setWorkChar( fd_charaindex, CHAR_WORKWALKARRAY,""); err = BATTLE_CreateVsEnemy( fd_charaindex,0, -1); if( err != 0 ){ ret = FALSE; }else{ ret = TRUE; } }}/*------------------------------------------------------------ * 皿伊奶乩□ 銜匹巨件市它件玄 瑁 戲 ------------------------------------------------------------*/void lssproto_DU_recv( int fd , int x,int y ){ OBJECT object; int fd_charaindex; int ret = FALSE, charaindex = -1, enemyindex; int frontx,fronty; int cnt = 0; BOOL found = FALSE; CHECKFDANDTIME; fd_charaindex = CONNECT_getCharaindex( fd ); {//ttom avoid warp at will int ix,iy; ix=CHAR_getInt(fd_charaindex, CHAR_X); iy=CHAR_getInt(fd_charaindex, CHAR_Y); if( (ix!=x)||(iy!=y)){ //print("\n<DU>--Error!!!!"); //print("\n<DU>origion x=%d,y=%d",ix,iy); //print("\n<DU>modify X=%d,Y=%d",x,y); x=ix; y=iy; } } /* 閡及凜反 骰允月 */ if( CHAR_getWorkInt( fd_charaindex, CHAR_WORKPARTYMODE) != CHAR_PARTY_CLIENT) { int i; // 憤坌及奶件犯永弁旦 charaindex = fd_charaindex; CHAR_setMyPosition( charaindex, x,y,TRUE); /* WALKARRAY毛弁伉失允月 */ CHAR_setWorkChar( charaindex, CHAR_WORKWALKARRAY,""); /* 賡渝祭允月 */ for( i = 0; i < CONNECT_WINDOWBUFSIZE ; i ++ ) { CONNECT_setDuelcharaindex( fd, i, -1 ); } /* 及蟆及甄 毛 月 */ CHAR_getCoordinationDir( CHAR_getInt( charaindex, CHAR_DIR ) , CHAR_getInt( charaindex , CHAR_X ), CHAR_getInt( charaindex , CHAR_Y ) , 1 , &frontx , &fronty ); /*憤坌及 及蟆及平乓仿毛潸 允月 */ for( object = MAP_getTopObj( CHAR_getInt( charaindex, CHAR_FLOOR), frontx,fronty) ; object ; object = NEXT_OBJECT(object ) ) { int toindex; int objindex = GET_OBJINDEX(object); /* 平乓仿弁正□元扎卅中 */ if( OBJECT_getType( objindex) != OBJTYPE_CHARA) continue; toindex = OBJECT_getIndex( objindex); /* 皿伊奶乩□元扎卅中 */ if( CHAR_getInt( toindex, CHAR_WHICHTYPE) != CHAR_TYPEPLAYER ) continue; found = TRUE; /* 爵 分勻兇日蟯 */ if( CHAR_getWorkInt( toindex, CHAR_WORKBATTLEMODE) != BATTLE_CHARMODE_NONE ){ continue; } /* 輔爵蛐 卅日蟯 */ if( !CHAR_getFlg( toindex, CHAR_ISDUEL)) continue; // shan begin { int i; for( i=0; i<FAMILY_FMPKFLOOR; i++){ if( fmpkflnum[i].fl == CHAR_getInt( charaindex, CHAR_FLOOR) ){ if( CHAR_getWorkInt( charaindex, CHAR_WORKBATTLEFLAG) == -1 ){ lssproto_EN_send( fd, FALSE, 0 ); return; } if(CHAR_getInt( charaindex, CHAR_FMINDEX) == CHAR_getInt( toindex, CHAR_FMINDEX)){ lssproto_EN_send( fd, FALSE, 0 ); return; } } } } // shan end // 閡間卅日褪毛裟氏匹仁月 if( CHAR_getWorkInt( toindex, CHAR_WORKPARTYMODE ) == CHAR_PARTY_CLIENT ) { int tmpindex = CHAR_getWorkInt( toindex, CHAR_WORKPARTYINDEX1 ); /* 鍬澎互皿伊奶乩□匹卅中儀手丐月 */ if( CHAR_CHECKINDEX( tmpindex)) { if( CHAR_getWorkInt( tmpindex, CHAR_WHICHTYPE) != CHAR_TYPEPLAYER){ continue; } } } CONNECT_setDuelcharaindex( fd, cnt,toindex ); cnt++; if( cnt == CONNECT_WINDOWBUFSIZE ) break; } /* 中卅井勻兇 */ if( cnt == 0 ) { goto lssproto_DU_recv_Err; } /* ㄠ諦分仃分勻兇日穡巨件玄伉□ */ else if( cnt == 1 ) { // 及蟆及平乓仿及奶件犯永弁旦 enemyindex = CONNECT_getDuelcharaindex(fd,0); // 鍬澎互褪卅日公及引引巨件市它件玄今六月互 // 閡間卅日褪毛裟氏匹仁月 if( CHAR_getWorkInt( enemyindex, CHAR_WORKPARTYMODE ) == CHAR_PARTY_CLIENT ) { enemyindex = CHAR_getWorkInt( enemyindex, CHAR_WORKPARTYINDEX1 ); // 卅兮井褪互中卅中 if( enemyindex < 0 )goto lssproto_DU_recv_Err; } ret = BATTLE_CreateVsPlayer( charaindex, enemyindex ); if( ret != 0 ){ ret = FALSE; }else{ ret = TRUE; } } /* ㄠ諦動曉中月樺寧反它奴件玉它毛請仄化 中寧歹六月 */ else if( cnt > 1 ) { int strlength; char msgbuf[1024]; char escapebuf[2048]; strcpy( msgbuf, "1\n要和誰戰(zhàn)斗?\n"); strlength = strlen( msgbuf); /* 它奴件玉它及丟永本□斥綜岳[ * 爵 及平乓仿及域 */ for( i = 0; CONNECT_getDuelcharaindex( fd,i) != -1 && i< CONNECT_WINDOWBUFSIZE; i ++ ) { char *a = CHAR_getChar( CONNECT_getDuelcharaindex( fd,i) , CHAR_NAME); char buf[256]; snprintf( buf, sizeof( buf),"%s [%s]\n", a, CHAR_getWorkInt( CONNECT_getDuelcharaindex(fd,i), CHAR_WORKPARTYMODE ) != CHAR_PARTY_NONE ? "團(tuán)體": "單獨"); if( strlength + strlen( buf) > arraysizeof( msgbuf)){ print( "%s:%d視窗訊息buffer不足。\n", __FILE__,__LINE__); break; } strcpy( &msgbuf[strlength], buf); strlength += strlen(buf); } lssproto_WN_send( fd, WINDOW_MESSAGETYPE_SELECT, WINDOW_BUTTONTYPE_CANCEL, CHAR_WINDOWTYPE_SELECTDUEL, -1, makeEscapeString( msgbuf, escapebuf, sizeof(escapebuf))); ret = TRUE; } }// 巨仿□質(zhì) lssproto_DU_recv_Err:; if( ret == FALSE ) { /* 瑛絆霜耨 */ lssproto_EN_send( fd, FALSE, 0 ); if( cnt > 0 ) CHAR_talkToCli( charaindex, -1, "遭遇失敗!", CHAR_COLORYELLOW); else if( found ) CHAR_talkToCli( charaindex, -1, "無人可以對戰(zhàn)。", CHAR_COLORYELLOW); else CHAR_talkToCli( charaindex, -1, "那里沒有任何人。", CHAR_COLORYELLOW); }}/*------------------------------------------------------------ * 巨件市它件玄蔽 ------------------------------------------------------------*/void lssproto_EO_recv( int fd, int dummy ){ int fd_charaindex; int battle_index;//ttom++ CHECKFD; fd_charaindex = CONNECT_getCharaindex( fd ); BattleEncountOut( fd_charaindex ); // Nuke start 0827 : Battle acceleration battle_index=CHAR_getWorkInt(fd_charaindex,CHAR_WORKBATTLEINDEX); if( BATTLE_CHECKINDEX( battle_index ) == FALSE ){ return; } if(BattleArray[battle_index].type != BATTLE_TYPE_P_vs_P){ if(CONNECT_get_watchmode(fd)) { //print("fd= %d Watching the battle __ lssprot_EO_recv \n",fd);//for debug CONNECT_set_watchmode(fd,FALSE); return; } else if (checkBEOTime( fd ) < 0) { //CHAR_talkToCli(fd_charaindex, -1, "你加速喔。", CHAR_COLORYELLOW); } } // Nuke end }/*------------------------------------------------------------ * 巨件市它件玄 蠅邰菲 ------------------------------------------------------------*/void lssproto_BU_recv( int fd, int dummy){ int fd_charaindex; CHECKFD; fd_charaindex = CONNECT_getCharaindex( fd ); // shan 2001/12/25 //BATTLE_WatchStop( fd_charaindex );}void lssproto_B_recv( int fd, char *command ){ int fd_charaindex; int battle_index;//ttom++ CHECKFD; fd_charaindex = CONNECT_getCharaindex( fd ); BattleCommandDispach( fd, command ); // Nuke +1 0827: Battle acceleration battle_index=CHAR_getWorkInt(fd_charaindex,CHAR_WORKBATTLEINDEX); if( BATTLE_CHECKINDEX( battle_index ) == FALSE ){ return; } if(BattleArray[battle_index].type != BATTLE_TYPE_P_vs_P){ if(BattleArray[battle_index].type == BATTLE_TYPE_WATCH) { CONNECT_set_watchmode(fd,TRUE); return; } } //Nuke end}void lssproto_FS_recv( int fd,int flg ){ int fd_charaindex; CHECKFDANDTIME; fd_charaindex = CONNECT_getCharaindex( fd ); /* 橢瘀反竣卞六內(nèi)卞公及引引白仿弘凳蕙 */ CHAR_setFlg( fd_charaindex, CHAR_ISPARTY, (flg & CHAR_FS_PARTY )? TRUE:FALSE); //CHAR_setFlg( fd_charaindex, CHAR_ISBATTLE, // (flg & CHAR_FS_BATTLE )? TRUE:FALSE); CHAR_setFlg( fd_charaindex, CHAR_ISDUEL, (flg & CHAR_FS_DUEL )? TRUE:FALSE); CHAR_setFlg( fd_charaindex, CHAR_ISPARTYCHAT, (flg & CHAR_FS_PARTYCHAT )? TRUE:FALSE); CHAR_setFlg( fd_charaindex, CHAR_ISTRADECARD, (flg & CHAR_FS_TRADECARD )? TRUE:FALSE);#ifdef _CHANNEL_MODIFY //密語頻道開關(guān) CHAR_setFlg(fd_charaindex,CHAR_ISTELL,(flg & CHAR_FS_TELL )? TRUE:FALSE);
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -