Board logo

標題: 請求96 封包的詳細解決方法 [打印本頁]

作者: hongbbn    時間: 2013-5-8 00:15     標題: 請求96 封包的詳細解決方法

在這位置

// shan 2002/01/10
void 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);
             
}


應該怎樣修改的???

我爬文看到的是

約是這樣:


if(nPet < 0 || nPet > 4 || sPet <0 || sPet >4 )
    return ;


但應該從哪個位置修改呢?
有大大可以詳細說一下如果修改嗎?

我自己改了幾次,都編譯不到gmsv,直接//了後,在遊戲里的寵物切換"戰鬥,等待,郵件"等會出現錯誤
之後就掉線了

求解

[ 本帖最後由 hongbbn 於 2013-5-8 00:20 編輯 ]
作者: 囡囡    時間: 2013-5-11 08:10

// shan 2002/01/10
void 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(nPet < 0 || nPet > 4 || sPet <0 || sPet >4 )
    return ;
            
}


修复后会出现别的BUG
作者: hongbbn    時間: 2013-5-14 19:09

if( nums <= 3 )
                CHAR_setWorkInt( charaindex, CHAR_WORK_PET0_STAT+nPet, sPet);

轉到

   if(nPet < 0 || nPet > 4 || sPet <0 || sPet >4 )
    return ;

後,會出現什麼樣的bugs?

我編譯源碼時,直接加上
  if(nPet < 0 || nPet > 4 || sPet <0 || sPet >4 )
    return ;

請問會有作用嗎?


謝謝指教
作者: vickelyz    時間: 2013-5-20 03:19

判断后,是否溢出,测返回…………
作者: shen    時間: 2013-5-21 10:38

這段直接放在 function 最前面就行了

   if(nPet < 0 || nPet > 4 || sPet <0 || sPet >4 )
    return ;
作者: hongbbn    時間: 2013-5-21 20:09

謝謝指教                  




歡迎光臨 We Love SA 石器時代研討中心 (http://lab.welovesa.com/) Powered by Discuz! 6.0.0