?? callfromcli.c
字號(hào):
if((CHAR_getInt(fd_charaindex,CHAR_FLOOR) >= 8200 && CHAR_getInt(fd_charaindex,CHAR_FLOOR) <= 8213) || (CHAR_getInt(fd_charaindex,CHAR_FLOOR) >= 30017 && CHAR_getInt(fd_charaindex,CHAR_FLOOR) <= 30021) ){ return ; }#endif if( flg == TRUE ) {#ifdef _ESCAPE_RESET // 使用惡寶逃跑後x分鐘內(nèi)不可求救 if( getStayEncount( fd ) ) { //print(" 惡寶中組隊(duì) "); if( time(NULL) - CHAR_getWorkInt( fd_charaindex, CHAR_WORKLASTESCAPE) < 5*60 ) { lssproto_HL_send( fd, FALSE); //print(" 惡寶逃跑後組隊(duì) "); CHAR_talkToCli( fd_charaindex, -1, "暫時(shí)不可以求救。", CHAR_COLORYELLOW); return; } }#endif /* 云踞仃乒□玉及白仿弘 化月 */ BattleArray[CHAR_getWorkInt( fd_charaindex, CHAR_WORKBATTLEINDEX)].Side[ CHAR_getWorkInt( fd_charaindex, CHAR_WORKBATTLESIDE)].flg |= BSIDE_FLG_HELP_OK; snprintf( msgbuf, sizeof( msgbuf), "%s 在求救!", CHAR_getChar( fd_charaindex, CHAR_NAME)); } else { /* 云踞仃乒□玉及白仿弘 午允 */ BattleArray[CHAR_getWorkInt( fd_charaindex, CHAR_WORKBATTLEINDEX)].Side[ CHAR_getWorkInt( fd_charaindex, CHAR_WORKBATTLESIDE)].flg &= ~BSIDE_FLG_HELP_OK; snprintf( msgbuf, sizeof( msgbuf), "%s 決定拒絕幫助。", CHAR_getChar( fd_charaindex, CHAR_NAME)); } /* 云踞仃橇謫互 歹勻兇儀毛爵 醮棉卞(憤坌殖戈)霜耨 */ for( i = 0; i < 5; i ++ ) { int toindex = BattleArray[CHAR_getWorkInt( fd_charaindex, CHAR_WORKBATTLEINDEX)].Side[ CHAR_getWorkInt( fd_charaindex, CHAR_WORKBATTLESIDE)].Entry[i].charaindex; if( CHAR_CHECKINDEX( toindex)) { int tofd = getfdFromCharaIndex( toindex ); if( tofd != -1 ) { lssproto_HL_send( tofd, flg); } /* 丟永本□斥霜耨 */ CHAR_talkToCli( toindex, -1, msgbuf, CHAR_COLORYELLOW); /* 云踞仃CA 憎]引兇反壅允 */ CHAR_sendBattleEffect( toindex, ON); } }}/*------------------------------------------------------------ * proc 毛仁木午蛻歹木兇[ ------------------------------------------------------------*/void lssproto_ProcGet_recv( int fd ){ outputNetProcLog( fd, 1);}/*------------------------------------------------------------ * 皿伊奶乩□醒毛仁木午蛻歹木兇[ ------------------------------------------------------------*/void lssproto_PlayerNumGet_recv( int fd ){ int i; int clicnt =0; int playercnt = 0; for( i = 0; i < ConnectLen; i ++ ) { if( CONNECT_getUse_debug(i,1017) ){ if( CONNECT_getCtype(i) == CLI) { clicnt ++; if( CONNECT_getCharaindex(i) >= 0 ) playercnt++; } } } lssproto_PlayerNumGet_send( fd, clicnt, playercnt);}/*------------------------------------------------------------ * 棋爵邰菲 戲[ ------------------------------------------------------------*/void lssproto_LB_recv( int fd,int x,int y ){ int 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<LB>--Error!!!!"); //print("\n<LB>origion x=%d,y=%d",ix,iy); //print("\n<LB>modify X=%d,Y=%d",x,y); x=ix; y=iy; } } CHAR_setMyPosition( fd_charaindex, x,y,TRUE); /* 殺梁匹五月井民尼永弁仄化殺梁允月 */ BATTLE_WatchTry( fd_charaindex );}/*------------------------------------------------------------ * 撲乓永玄母它件質(zhì) 釩銨 ------------------------------------------------------------*/void lssproto_Shutdown_recv( int fd,char* passwd,int min ){ char buff[256]; if( strcmp( passwd, "hogehoge") == 0 ) { int i; int playernum = CHAR_getPlayerMaxNum(); snprintf( buff, sizeof( buff),"極度的系統(tǒng)公告。"); for( i = 0 ; i < playernum ; i++) { if( CHAR_getCharUse(i) != FALSE ) { CHAR_talkToCli( i, -1, buff, CHAR_COLORYELLOW); } } SERVSTATE_setLimittime(min); SERVSTATE_setShutdown( NowTime.tv_sec ); SERVSTATE_setDsptime( 0 ); }}void lssproto_PMSG_recv( int fd,int index,int petindex,int itemindex, char* message,int color ){ // CoolFish: Prevent Trade Cheat 2001/4/18 int fd_charaindex; fd_charaindex = CONNECT_getCharaindex(fd); if (CHAR_getWorkInt(fd_charaindex, CHAR_WORKTRADEMODE) != CHAR_TRADE_FREE) return; PETMAIL_sendPetMail( CONNECT_getCharaindex( fd ), index, petindex, itemindex, message, color);}/*------------------------------------------------------------ * 矢永玄 銀迕熬耨 ------------------------------------------------------------*/void lssproto_PS_recv( int fd, int havepetindex, int havepetskill, int toindex, char* data ){ int to_charaindex = Callfromcli_Util_getTargetCharaindex( fd, toindex); int charaindex = CONNECT_getCharaindex( fd ); int petindex; BOOL ret; petindex = CHAR_getCharPet( charaindex, havepetindex); if( !CHAR_CHECKINDEX( petindex)) return; ret = PETSKILL_Use( petindex, havepetskill, to_charaindex, data ); lssproto_PS_send( fd, ret, havepetindex, havepetskill, toindex);}/*------------------------------------------------------------ * 甄 毛本永玄允月 ------------------------------------------------------------*/void lssproto_SP_recv( int fd,int x,int y, int dir ){ int fd_charaindex; fd_charaindex = CONNECT_getCharaindex( fd ); {//ttom avoid the warp at will int i_x,i_y; i_x=CHAR_getInt(fd_charaindex, CHAR_X); i_y=CHAR_getInt(fd_charaindex, CHAR_Y); if((i_x!=x)||(i_y!=y)){ x=i_x; y=i_y; } }//ttom CHAR_setMyPosition_main( fd_charaindex, x,y,dir,TRUE);}/*------------------------------------------------------------ * CoolFish: Trade Command 2001/4/18 ------------------------------------------------------------*/void lssproto_TD_recv( int fd, char* message ){ int fd_charaindex; CHECKFDANDTIME; fd_charaindex = CONNECT_getCharaindex( fd ); print(" MAP_TRADEPICKUP_check0 "); CHAR_Trade(fd, fd_charaindex, message);}/*------------------------------------------------------------ * CoolFish: Family Command 2001/5/24 ------------------------------------------------------------*/void lssproto_FM_recv( int fd, char* message ){ int fd_charaindex; struct timeval recvtime; CHECKFDANDTIME; // add code by shan CONNECT_getLastrecvtime( fd, &recvtime); if( time_diff( NowTime, recvtime) < 0.5 ){ return; } CONNECT_setLastrecvtime(fd, &NowTime); fd_charaindex = CONNECT_getCharaindex( fd ); if( checkStringErr( message ) ) return; CHAR_Family(fd, fd_charaindex, message); }// shan 2002/01/10void lssproto_PETST_recv( int fd, int nPet, int sPet ){ int charaindex; int i, nums=0; CHECKFDANDTIME; charaindex = CONNECT_getCharaindex( fd ); if (!CHAR_CHECKINDEX( charaindex ) ) return; if( CHAR_getWorkInt( charaindex, CHAR_WORKBATTLEMODE) != BATTLE_CHARMODE_NONE) return ; for( i=0; i<5; i++) { if( CHAR_getWorkInt( charaindex, CHAR_WORK_PET0_STAT+i) == TRUE ) nums++; } if( nums <= 3 ) CHAR_setWorkInt( charaindex, CHAR_WORK_PET0_STAT+nPet, sPet); }void lssproto_BM_recv(int fd, int iindex){#ifdef _BLACK_MARKET int charaindex; CHECKFDANDTIME; charaindex = CONNECT_getCharaindex( fd); if(!CHAR_CHECKINDEX( charaindex)) return; if( CHAR_getWorkInt( charaindex, CHAR_WORKBATTLEMODE) != BATTLE_CHARMODE_NONE) return ; ITEM_BM_Exchange( charaindex, iindex);#endif}#ifdef _MIND_ICONvoid lssproto_MA_recv(int fd, int x, int y, int nMind){ int charaindex; CHECKFDANDTIME; charaindex = CONNECT_getCharaindex( fd); if(!CHAR_CHECKINDEX( charaindex)) return; if( CHAR_getWorkInt( charaindex, CHAR_WORKBATTLEMODE) != BATTLE_CHARMODE_NONE) return ; { int i_x, i_y; i_x = CHAR_getInt( charaindex, CHAR_X); i_y = CHAR_getInt( charaindex, CHAR_Y); if((i_x!=x)||(i_y!=y)){ x = i_x; y = i_y; } } //print("\nshan------------------>mind action->%d x->%d y->%d", nMind, x, y); CHAR_setMyPosition( charaindex, x, y, TRUE); CHAR_setWorkInt( charaindex, CHAR_MIND_NUM, nMind); CHAR_sendMindEffect( charaindex, CHAR_getWorkInt( charaindex, CHAR_MIND_NUM)); if(CHAR_getWorkInt( charaindex, CHAR_MIND_NUM) != 101290 && CHAR_getWorkInt( charaindex, CHAR_MIND_NUM) != 101294 && CHAR_getWorkInt( charaindex, CHAR_MIND_NUM) != 101288 ) CHAR_setWorkInt( charaindex, CHAR_MIND_NUM, 0); //print("\nshan------------------>end"); return;}#endifBOOL checkStringErr( char *checkstring ){ int i,ach; for (i=0,ach=0;i<strlen(checkstring);i++) { if ((unsigned char)checkstring[i]==0xff) { ach=1; break; } // Force no 0xff if ((unsigned char)checkstring[i]==0x80) { ach=1; break; } // Force no 0x80 if ((unsigned char)checkstring[i]==0x7f) { ach=1; break; } // Force no 0x7f if ((unsigned char)checkstring[i]<=0x20) { ach=1; break; } // Force greater than 0x20 if (ach) { if ((((unsigned char)checkstring[i]>=0x40)&&((unsigned char)checkstring[i]<=0x7e))|| (((unsigned char)checkstring[i]>=0xa1)&&((unsigned char)checkstring[i]<=0xfe))) ach=0; } else { if (((unsigned char)checkstring[i]>=0xa1)&&((unsigned char)checkstring[i]<=0xfe)) ach=1; } } if (ach) { print(" StringDog! "); return TRUE; } return FALSE; }#ifdef _FIX_DEL_MAP // WON ADD 玩家抽地圖送監(jiān)獄void lssproto_DM_recv( int fd ){ int index; index = CONNECT_getCharaindex( fd ); if( !CHAR_CHECKINDEX( index)) return; CHAR_warpToSpecificPoint(index,117,225,13);}#endif#ifdef _CHECK_GAMESPEEDvoid lssproto_CS_recv( int fd ){ int index, Ttime, NowTimes; index = CONNECT_getCharaindex( fd ); if( !CHAR_CHECKINDEX( index)) return; NowTimes = (int)time(NULL); Ttime = getGameSpeedTime( fd); setGameSpeedTime( fd, NowTimes); if( CHAR_getWorkInt( index, CHAR_WORKFLG) & WORKFLG_DEBUGMODE ) { }else if( (NowTimes-Ttime) < 20 ){ lssproto_CS_send( fd, 20 - (NowTimes-Ttime)); }}#endif#ifdef _TEAM_KICKPARTYvoid lssproto_KTEAM_recv( int fd, int si){ int charaindex=-1, pindex; if( si < 0 || si > 5 ) return; charaindex = CONNECT_getCharaindex( fd ); if( !CHAR_CHECKINDEX( charaindex) ) return; if( CHAR_getWorkInt( charaindex, CHAR_WORKPARTYMODE) != CHAR_PARTY_LEADER ) return; pindex = CHAR_getWorkInt( charaindex, si + CHAR_WORKPARTYINDEX1); if( !CHAR_CHECKINDEX( pindex) ) return; if( CHAR_getWorkInt( pindex, CHAR_WORKPARTYMODE) == CHAR_PARTY_LEADER ) return; if( CHAR_DischargeParty( pindex, 0) == FALSE ){ CHAR_talkToCli( charaindex, -1, "踢除失敗!", CHAR_COLORYELLOW); }else{ char buf1[256]; sprintf( buf1, "隊(duì)長[%s]將你踢除!", CHAR_getUseName( charaindex )); CHAR_talkToCli( pindex, -1, buf1, CHAR_COLORYELLOW); sprintf( buf1, "將[%s]踢除出團(tuán)隊(duì)!", CHAR_getUseName( pindex )); CHAR_talkToCli( charaindex, -1, buf1, CHAR_COLORYELLOW); }}#endif#ifdef _CHATROOMPROTOCOL // (不可開) Syu ADD 聊天室頻道void lssproto_CHATROOM_recv (int fd , char *data){ ChatRoom_recvall ( fd , data ) ; }#endif#ifdef _NEWREQUESTPROTOCOL // (不可開) Syu ADD 新增Protocol要求細(xì)項(xiàng)void lssproto_RESIST_recv (int fd ){ int charindex = -1 ; char token[256]; charindex = CONNECT_getCharaindex( fd ); if( !CHAR_CHECKINDEX( charindex) ) return; sprintf ( token , "%d|%d|%d|%d|%d|%d|%d|%d" , CHAR_getInt( charindex, CHAR_EARTH_RESIST ) , CHAR_getInt( charindex, CHAR_WATER_RESIST ) , CHAR_getInt( charindex, CHAR_FIRE_RESIST ) , CHAR_getInt( charindex, CHAR_WIND_RESIST ) , CHAR_getInt( charindex, CHAR_EARTH_EXP ) , CHAR_getInt( charindex, CHAR_WATER_EXP ) , CHAR_getInt( charindex, CHAR_FIRE_EXP ) , CHAR_getInt( charindex, CHAR_WIND_EXP ) ); lssproto_RESIST_send ( fd , token ) ; }#endif#ifdef _OUTOFBATTLESKILL // (不可開) Syu ADD 非戰(zhàn)斗時(shí)技能Protocolvoid lssproto_BATTLESKILL_recv (int fd, int iNum){ int charaindex = CONNECT_getCharaindex( fd );#ifndef _PROSKILL_OPTIMUM int skillindex=-1,char_pskill=-1,profession_skill=-1;#endif if( !CHAR_CHECKINDEX( charaindex) ) return; if( CHAR_getWorkInt( charaindex, CHAR_WORKBATTLEMODE) != BATTLE_CHARMODE_NONE ) return;#ifndef _PROSKILL_OPTIMUM // Robin fix cancel 此處略過職業(yè)檢查, 改在 PROFESSION_SKILL_Use 中檢查 // 人物的職業(yè) char_pskill = CHAR_getInt( charaindex, PROFESSION_CLASS ); skillindex = PROFESSION_SKILL_GetA
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -