| 
                
                  | Rubbish-Nec     
         
         
  
 | 分享:        ▲
                    
                      ▼         
 
   下面是引用 [AHK]XXX 於 2010-07-15 18:07 發表的 :  能解釋一下嗎@@
 依我看來的白目 解釋是: survivor_fail() {     for (new id = 1; id <= 32; id++) // 新增一個『ID』代表全部人     {         if (!is_user_connected(id) || !is_user_alive(id))  // 如果『ID』已連線、還沒有死就下去                 continue;               if (cs_get_user_team(id) == CS_TEAM_CT) // 如果『ID』是CT         {             user_kill(id,0)  // 幹掉他         }     }     remove_task(TASK_AMBIENCE_SOUND)     remove_task(TASK_BOSS_AMBIENCE_SOUND)     StopSound(0)     PlaySound(0, SOUND_SURVIVOR_FAIL) } 
 |  
                  | 
                
                  | 
 已成過去的中二少年。 |  
                  |  x0  [11 樓]
                    
                    
                     From:沒有資料 |  Posted:2010-07-16 23:39 | |  |  
                
                  | a7811311622   
         
       
  我…在工作了… 
  
  級別: 版主  
                      版區: CS提問區  x772  x2153 | 分享:        ▲
                    
                      ▼         
 
   下面是引用 chuchung712 於 2010-07-17 12:00 發表的 :   回a78大:
 那為什麼大神的recoil插件要有那Loop?
 複製程式
 
 
       for (new i = 0; i < sizeof weapon_classname; i++) 
       { 
              if (strlen(weapon_classname[i]) == 0) 
                     continue; 
               
              formatex(cvar_string, charsmax(cvar_string), "weap_%s_recoil", weapon_classname[i][7]) 
              g_weap_recoil[i] = register_cvar(cvar_string, weapon_recoil[i]) 
               
              RegisterHam(Ham_Weapon_PrimaryAttack, weapon_classname[i], "fw_WeapPriAttack") 
              RegisterHam(Ham_Weapon_PrimaryAttack, weapon_classname[i], "fw_WeapPriAttack_Post", 1) 
       } 
 很複雜 >_<
 
 因為「RegisterHam(Ham_Weapon_PrimaryAttack…)」這段指定的武器只能用一把…  所以才會在前面先用個Array列出所以武器的名稱:   // Weapons calssname
 new const weapon_classname[][] = { "", "weapon_p228", "", "weapon_scout", "", "weapon_xm1014", "", "weapon_mac10",  "weapon_aug", "", "weapon_elite", "weapon_fiveseven", "weapon_ump45", "weapon_sg550", "weapon_galil", "weapon_famas",  "weapon_usp", "weapon_glock18", "weapon_awp", "weapon_mp5navy", "weapon_m249", "weapon_m3", "weapon_m4a1",  "weapon_tmp", "weapon_g3sg1", "", "weapon_deagle", "weapon_sg552", "weapon_ak47", "", "weapon_p90" }
 
 而大神那段的loop目的是讓用寫一次「RegisterHam」就讀取完全部的武器…  不然如果那段不用個loop的話就會變成每把武器都要寫一次「register_cvar」和「RegisterHam」: 複製程式 
 
register_cvar("weap_p228_recoil", "-1.0") 
RegisterHam(Ham_Weapon_PrimaryAttack, "weapon_p228", "fw_WeapPriAttack", 1) 
register_cvar("weap_scout_recoil", "-1.0") 
RegisterHam(Ham_Weapon_PrimaryAttack, "weapon_scout", "fw_WeapPriAttack", 1) 
‧ 
‧ 
‧ 
 那不是很繁雜嗎…?所以才會用個loop來讀取…  至於為何loop裡會有個「if (strlen(weapon_classname[ i ]) == 0) continue; 」是因為  「weapon_classname[][]」這個Array裡面有些是空值「""」…但是這讀取並無意義…  所以用這段假設來略過這些空值…  而「formatex(cvar_string, charsmax(cvar_string), "weap_%s_recoil", weapon_classname[ i ][7])」  這段的目的是將武器的名稱讀取出來…因為字串是可以用Array讀取的…  所以「weapon_classname[ i ][7]」這個假設就是讀取字串位置用的…而字串對上的Array位置如下: weapon_0123456 「weapon_classname[ i ][0]」對應「w」…「weapon_classname[ i ][1]」對應「e」…以此類推…  所以想讀取武器名稱時自然是從「weapon_classname[ i ][7]」開始讀取後面的字串… 
 
 [ 此文章被a7811311622在2010-07-17 13:54重新編輯 ] 
 |  
                  | 
                
                  | 
 |  
                  |  x0  [13 樓]
                    
                    
                     From:台灣中華電信 |  Posted:2010-07-17 13:48 | |  |  |