?? callfromcli.c
字號:
//家族頻道開關 CHAR_setFlg(fd_charaindex,CHAR_ISFM,(flg & CHAR_FS_FM )? TRUE:FALSE); //職業頻道開關 CHAR_setFlg(fd_charaindex,CHAR_ISOCC,(flg & CHAR_FS_OCC )? TRUE:FALSE); //聊天室 CHAR_setFlg(fd_charaindex,CHAR_ISCHAT,(flg & CHAR_FS_CHAT )? TRUE:FALSE); //儲存對話開關 CHAR_setFlg(fd_charaindex,CHAR_ISSAVE,(flg & CHAR_FS_SAVE )? TRUE:FALSE);#endif#ifdef _AUCPROTOCOL // (不可開) Syu ADD 拍賣頻道開關Protocol CHAR_setFlg( fd_charaindex, CHAR_ISAUC, (flg & CHAR_FS_AUC )? TRUE:FALSE);#endif // CoolFish: Trade 2001/4/18 CHAR_setFlg( fd_charaindex, CHAR_ISTRADE, (flg & CHAR_FS_TRADE )? TRUE:FALSE); /* if (CHAR_getFlg(fd_charaindex, CHAR_ISTRADECARD) == TRUE) CHAR_setFlg(fd_charaindex, CHAR_ISTRADE, FALSE); if (CHAR_getFlg(fd_charaindex, CHAR_ISTRADE) == TRUE) CHAR_setFlg(fd_charaindex, CHAR_ISTRADECARD, FALSE); */ lssproto_FS_send( fd, flg);}/*------------------------------------------------------------ * 醮棉邰菲 戲[ ------------------------------------------------------------*/void lssproto_PR_recv( int fd,int x, int y, int request ){ int result = FALSE; int fd_charaindex; CHECKFDANDTIME; fd_charaindex = CONNECT_getCharaindex( fd );#if 1 // 禁止組隊區域 if( request == 1 ) { int nowFloor; nowFloor = CHAR_getInt( fd_charaindex, CHAR_FLOOR); if( nowFloor == 31706 || nowFloor == 10204 || (10601 <= nowFloor && nowFloor <= 10605 ) || nowFloor == 10919 || nowFloor == 10920 || nowFloor == 20711 || nowFloor == 20712 || nowFloor == 1008 || nowFloor == 1021 || nowFloor == 3008 || nowFloor == 3021 || ( nowFloor <= 8213 && nowFloor >= 8200 ) || ( nowFloor >= 30017 && nowFloor <= 30021 )#ifdef _TIME_TICKET || check_TimeTicketMap(nowFloor)#endif ){ print("\n 改封包!禁止組隊區域!!:%s ", CHAR_getChar( fd_charaindex, CHAR_CDKEY) ); return; } }#endif {//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<PR>--Error!!!!"); //print("\n<PR>origion x=%d,y=%d",ix,iy); //print("\n<PR>modify X=%d,Y=%d",x,y); x=ix; y=iy; } } CHAR_setMyPosition( fd_charaindex, x,y,TRUE); if( request == 0 ) { /* 輪邇允月 */ result = CHAR_DischargeParty(fd_charaindex, 0); } else if( request == 1 ) { /* 邇允月 */ result = CHAR_JoinParty(fd_charaindex); }}/*------------------------------------------------------------ * 爵 卞瓚 允月矢永玄毛薊 仄兇[ ------------------------------------------------------------*/void lssproto_KS_recv( int fd,int petarray ){ int ret , fd_charaindex; CHECKFDANDTIME; fd_charaindex = CONNECT_getCharaindex( fd ); if( CHAR_getInt( fd_charaindex, CHAR_RIDEPET) == petarray ) lssproto_KS_send( fd, petarray, FALSE); ret = PET_SelectBattleEntryPet( fd_charaindex, petarray); lssproto_KS_send( fd, petarray, ret);}#ifdef _STANDBYPETvoid lssproto_SPET_recv( int fd, int standbypet ){ int fd_charaindex; int i, s_pet =0, cnt =0; CHECKFDANDTIME; fd_charaindex = CONNECT_getCharaindex( fd ); if( CHAR_getWorkInt( fd_charaindex, CHAR_WORKBATTLEMODE) != BATTLE_CHARMODE_NONE && standbypet >= CHAR_getWorkInt( fd_charaindex, CHAR_WORKSTANDBYPET) ) { print("\n 改封包!??戰斗中用SPET增加待機寵!!:%s ", CHAR_getChar( fd_charaindex, CHAR_CDKEY) ); return; } //if( CHAR_getInt( fd_charaindex, CHAR_RIDEPET) == petarray ) { // lssproto_SPET_send( fd, petarray, FALSE); //} for( i =0; i < CHAR_MAXPETHAVE; i++) { if( standbypet & ( 1 << i ) ) { //if( CHAR_getInt( fd_charaindex, CHAR_RIDEPET) == i ) // continue; cnt++; if( cnt > 3 ) { print("\n 改封包!待機寵超過數量!!:%s ", CHAR_getChar( fd_charaindex, CHAR_CDKEY) ); //lssproto_SPET_send( fd, s_pet, FALSE); break; } s_pet |= ( 1 << i ); } } CHAR_setWorkInt( fd_charaindex, CHAR_WORKSTANDBYPET, s_pet); lssproto_SPET_send( fd, s_pet, TRUE);}#endif/*------------------------------------------------------------ * 減變升啼卅升及 蜇六方午熬仃午勻兇 ------------------------------------------------------------*/void lssproto_AC_recv( int fd,int x, int y,int actionno ){ int fd_charaindex; CHECKFDANDTIME; fd_charaindex = CONNECT_getCharaindex( fd ); {//ttom avoid the warp at will Char *ch; ch = CHAR_getCharPointer( fd_charaindex); // CoolFish: +1 2001/11/05 if (!ch) return; if((ch->data[CHAR_X]!=x)||(ch->data[CHAR_Y]!=y)){ return; } } CHAR_setMyPosition( fd_charaindex, x,y,TRUE); CHAR_sendAction( fd_charaindex, actionno, FALSE); return;}/*------------------------------------------------------------ * 芊毛銀勻兇[ ------------------------------------------------------------*/void lssproto_MU_recv( int fd,int x,int y,int array,int toindex ){ int to_charaindex = -1, fd_charaindex; 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<MU>--Error!!!!"); //print("\n<MU>origion x=%d,y=%d",ix,iy); //print("\n<MU>modify X=%d,Y=%d",x,y); x=ix; y=iy; } } CHAR_setMyPosition( fd_charaindex, x,y,TRUE); /* toindex 毛平乓仿弁正□犯□正及index卞 晶允月 */ to_charaindex = Callfromcli_Util_getTargetCharaindex( fd, toindex); MAGIC_Use( fd_charaindex, array, to_charaindex);}void lssproto_JB_recv( int fd,int x,int y ){ int charaindex, floor; CHECKFDANDTIME; charaindex = CONNECT_getCharaindex( fd ); { int ix,iy; ix=CHAR_getInt(charaindex, CHAR_X); iy=CHAR_getInt(charaindex, CHAR_Y); if( (ix!=x)||(iy!=y)){ x=ix; y=iy; } } CHAR_setMyPosition( charaindex, x,y,TRUE); if( CHAR_CHECKINDEX( charaindex ) == FALSE )return; floor = CHAR_getInt( charaindex, CHAR_FLOOR ); if( floor == 1007 || floor == 2007 || floor == 3007 || floor == 4007 || floor == 130 ){ BATTLE_WatchTry( charaindex ); }else{ BATTLE_RescueTry( charaindex ); }}void lssproto_KN_recv( int fd,int havepetindex,char* data ){ int fd_charaindex; CHECKFD; fd_charaindex = CONNECT_getCharaindex( fd ); // Robin 04/26 debug if( strlen(data) > 16 ) return; // CoolFish: Prevent Trade Cheat 2001/4/18 if (CHAR_getWorkInt(fd_charaindex, CHAR_WORKTRADEMODE) != CHAR_TRADE_FREE) return; if( checkStringErr(data) ) return; CHAR_inputUserPetName( fd_charaindex, havepetindex, data); }/*------------------------------------------------------------ * 它奴件玉它毛薊 仄兇[ ------------------------------------------------------------*/void lssproto_WN_recv( int fd,int x,int y,int seqno, int objindex,int select, char* data ){ int fd_charaindex; CHECKFDANDTIME; if( checkStringErr(data) ) return;#ifdef _NO_WARP { if(seqno!=CONNECT_get_seqno(fd)){ return; } if( !( (select)&(CONNECT_get_selectbutton(fd)) ) && select ){ if( CONNECT_get_seqno(fd)==CHAR_WINDOWTYPE_QUIZ_MAIN ){ }else if( ( (CONNECT_get_seqno(fd)==CHAR_WINDOWTYPE_SCHEDULEMAN_START) || (CONNECT_get_seqno(fd)==CHAR_WINDOWTYPE_SCHEDULEMAN_SELECT) ) && (select==1) ){ }else{ return ; } } } // shan End #endif fd_charaindex = CONNECT_getCharaindex( fd ); // CoolFish: Prevent Trade Cheat 2001/4/18 if (CHAR_getWorkInt(fd_charaindex, CHAR_WORKTRADEMODE) != CHAR_TRADE_FREE) { return; } // Robin if( checkStringErr(data) ) return;#ifdef _ANGEL_SUMMON if( seqno == CHAR_WINDOWTYPE_ANGEL_ASK ) { print("\n CHAR_WINDOWTYPE_ANGEL_ASK objindex:%d select:%d data:%s ", objindex, select, data ); if(select==WINDOW_BUTTONTYPE_YES ) { if( AngelCreate( fd_charaindex) == FALSE ) { sendAngelCleanToCli( fd ); } } else if(select==WINDOW_BUTTONTYPE_NO ) { int mindex; char nameinfo[64]; mindex = checkIfAngel( fd_charaindex); print(" ====不接受召喚任務==== "); getMissionNameInfo( fd_charaindex, nameinfo); saacproto_ACMissionTable_send( acfd, mindex, 3, nameinfo, ""); lssproto_WN_send( fd, WINDOW_MESSAGETYPE_MESSAGE, WINDOW_BUTTONTYPE_OK, -1, -1, "真是遺憾。\n少了你的幫助,看來魔族會繼續危害大陸的人民了。" ); //CHAR_talkToCli( fd_charaindex, -1, "天之聲:真是可惜,這可是難得的機會呀。", CHAR_COLORYELLOW); sendAngelCleanToCli( fd ); } }#endif#ifdef _CONTRACT if( seqno == CHAR_WINDOWTYPE_CONTRACT_ANSWER ) { ITEM_contractSign( fd, objindex, select); }#endif {//ttom avoid the warp at will Char *ch; ch = CHAR_getCharPointer( fd_charaindex); // CoolFish: +1 2001/11/05 if (!ch) return; if((ch->data[CHAR_X]!=x)||(ch->data[CHAR_Y]!=y)){ // Robin 04/20 test return; x=ch->data[CHAR_X]; y=ch->data[CHAR_Y]; } //ttom avoid WN at will if(seqno==CHAR_WINDOWTYPE_NPCENEMY_START){// Char *ch; OBJECT object; int ix,iy,ifloor,i,j; int whichtype= -1; int enemy=0; int enemy_index; if(!CHECKOBJECT(objindex)){ goto FIRST; } enemy_index=OBJECT_getIndex(objindex);//ttom 11/15/2000 ix =ch->data[CHAR_X]; iy =ch->data[CHAR_Y]; ifloor=ch->data[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 objindex = GET_OBJINDEX(object); switch( OBJECT_getType(objindex) ){ case OBJTYPE_CHARA: whichtype = CHAR_getInt( OBJECT_getIndex( objindex), CHAR_WHICHTYPE); if( whichtype == CHAR_TYPENPCENEMY){ int i_ene_temp; i_ene_temp=OBJECT_getIndex( objindex); //print("\n<WN>--enetemp=%d",i_ene_temp); if(i_ene_temp== enemy_index){ goto START_WN; }else{ enemy=0; } } break; case OBJTYPE_ITEM: break; case OBJTYPE_GOLD: break; default: break; } } } } if(enemy==0){FIRST: lssproto_EN_send( fd, FALSE, 0 ); CHAR_talkToCli(fd_charaindex, -1, "事件錯誤。", CHAR_COLORYELLOW); goto END_WN; } } } //ttom endSTART_WN: CHAR_setMyPosition( fd_charaindex, x,y,TRUE); if( CHAR_getWorkInt( fd_charaindex, CHAR_WORKBATTLEMODE) == BATTLE_CHARMODE_NONE){ if(seqno==CHAR_WINDOWTYPE_WINDOWWARPMAN_MAIN){ if(!CONNECT_get_first_warp(fd)){ select=1; } } CHAR_processWindow( fd_charaindex, seqno, select, objindex, makeStringFromEscaped(data));#ifdef _NO_WARP if (CONNECT_get_seqno(fd)==CHAR_WINDOWTYPE_WINDOWWARPMAN_MAIN) { CONNECT_set_seqno(fd,-1); CONNECT_set_selectbutton(fd,1); }#endif }//ttom+1END_WN: return; //CONNECT_set_pass(fd,TRUE);//ttom}/*------------------------------------------------------------ * 云踞仃乒□玉 凳毛熬仃兇 ------------------------------------------------------------*/void lssproto_HL_recv( int fd,int flg ){ char msgbuf[128]; int i, fd_charaindex; CHECKFD; fd_charaindex = CONNECT_getCharaindex( fd ); /* 爵 元扎卅井勻兇日 骰允月 */ if( CHAR_getWorkInt( fd_charaindex, CHAR_WORKBATTLEMODE) == BATTLE_CHARMODE_NONE) { return; }#ifdef _LOCKHELP_OK // (不可開) Syu ADD 鎖定不可加入戰斗
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -