[ZP]男女混打(共存)...實現!! 請進!!

Home Home
<< 1 2 3 4 5 >>
跳頁: (共 6 頁)
引用 | 編輯 AykinDalike
2009-11-15 17:15
樓主
推文 x20
有個辦法可以提供給各位參考 

男角時男手
女角時女手
音效亦同上述之結果
男角時男聲
女角時女聲 

不過你必須犧牲倖存者(survivor)這個角色 

做法:
EmEditor3打開zombie_plague40.sma
然後...follow me

1. 獨立模組(ak為例)
在各單位加入指令參數(藍色部分)

步驟一
//Weapon Models
new const model_vak47_survivor[] = { "models/v_ak472.mdl" }


步驟二 
//Custom weapon models 
engfunc(EngFunc_PrecacheModel, model_vak47_survivor)


步驟三 
//Set Custom Weapon Models
public replace_models(id)

        case CSW_AK47: // Survivor's AK47
        {
                 if (g_survivor[id]) 
                          set_pev(id, pev_viewmodel2, model_vak47_survivor) 

        }
.....
}


另外,『小刀』比較特殊,須要額外處理它
做法: 前兩步一樣,比照ak辦理

步驟一
// Weapon Models
new const model_vknife_survivor[] = { "models/v_knife2.mdl" }


步驟二
// Custom weapon models
engfunc(EngFunc_PrecacheModel, model_vknife_survivor)


步驟三
這裡要小心,要在else // Humans 條件下加入if (g_survivor[id]) 限制這是給survivor用的,如下...
else // Humans & Survivor   
{
          { 
                   set_pev(id, pev_viewmodel2, model_vknife_human)  
                   set_pev(id, pev_weaponmodel2, "models/p_knife.mdl") 
          }
          if (g_survivor[id]) 
          { 
                   set_pev(id, pev_viewmodel2, model_vknife_survivor)  
          }
 
}


上述完成後再到該指定資料夾放入v檔就行了 


2. 獨立音效(pain_sound為例)
一樣,在各單位加入..

步驟一
// Sound list (randomly chosen, add as many as you want)
new const survivor_pain[][] = { "zombie_plague/sur_pain1.wav" ) 


步驟二  
// Custom sounds  
for (i = 0; i < sizeof survivor_pain; i++) 
                       engfunc(EngFunc_PrecacheSound, survivor_pain)


步驟三 
這一步要注意:容易和原先的zombie_pain弄混
先限制是給survivor獨立擁有  ( 藍色字體 if (g_survivor[id]) { }內整段)
而且重點是原先的zombie_pain也要做一點點更動 (黑色字體部分)
另外紅色字的是survivor的fall_sound (survivor_fall)
survivor_fall前兩步的做法跟survivor_pain是一樣的,就不多做說明
排列方式請看...
// Emit Sound Forward
public fw_EmitSound(id, channel, const sample[], Float:volume, Float:attn, flags, pitch)

       if (g_survivor[id]) 
       { 
               // Replace these sounds for Survivor only 
               if (!is_user_connected(id) || !g_survivor[id]) 
                       return FMRES_IGNORED;         

               // Survivor being hit 
               if (equal(sample[7], "bhit", 4)) 
               { 
                       if (g_survivor[id]) 
                               engfunc(EngFunc_EmitSound, id, channel, survivor_pain[random_num(0, sizeof survivor_pain - 1)], volume, attn, flags, pitch) 
                       return FMRES_SUPERCEDE; 
               } 
              
// Survivor falls off 
               if (equal(sample[10], "fall", 4)) 
               { 
                       engfunc(EngFunc_EmitSound, id, channel, survivor_fall[random_num(0, sizeof survivor_fall - 1)], volume, attn, flags, pitch) 
                       return FMRES_SUPERCEDE; 
               } 
               return FMRES_IGNORED; 
       }
 
       if (g_zombie[id] || !g_nemesis[id]) 
       { 
               // Replace these sounds for zombies only 
               if (!is_user_connected(id) || !g_zombie[id]) 
                       return FMRES_IGNORED; 

               // Zombie being hit 
               if (equal(sample[7], "bhit", 4)) 
               { 
                       if (g_nemesis[id]) 
                               engfunc(EngFunc_EmitSound, id, channel, nemesis_pain[random_num(0, sizeof nemesis_pain - 1)], volume, attn, flags, pitch) 
                       else 
                               engfunc(EngFunc_EmitSound, id, channel, zombie_pain[random_num(0, sizeof zombie_pain - 1)], volume, attn, flags, pitch) 
                       return FMRES_SUPERCEDE; 
               } 
               // Zombie attacks with knife 
               if (equal(sample[8], "kni", 3)) 
               { 
                       if (equal(sample[14], "sla", 3)) // slash 
                       { 
                               engfunc(EngFunc_EmitSound, id, channel, zombie_miss_slash[random_num(0, sizeof zombie_miss_slash - 1)], volume, attn, flags, pitch) 
                               return FMRES_SUPERCEDE; 
                       } 
                       if (equal(sample[14], "hit", 3)) 
                       { 
                               if (sample[17] == 'w') // wall 
                               { 
                                       engfunc(EngFunc_EmitSound, id, channel, zombie_miss_wall[random_num(0, sizeof zombie_miss_wall - 1)], volume, attn, flags, pitch) 
                                       return FMRES_SUPERCEDE; 
                               } 
                               else // hit 
                               { 
                                       engfunc(EngFunc_EmitSound, id, channel, zombie_hit_normal[random_num(0, sizeof zombie_hit_normal - 1)], volume, attn, flags, pitch) 
                                       return FMRES_SUPERCEDE; 
                               } 
                       } 
                       if (equal(sample[14], "sta", 3)) // stab 
                       { 
                               engfunc(EngFunc_EmitSound, id, channel, zombie_hit_stab[random_num(0, sizeof zombie_hit_stab - 1)], volume, attn, flags, pitch) 
                               return FMRES_SUPERCEDE; 
                       } 
               } 

               // Zombie dies 
               if (equal(sample[7], "die", 3) || equal(sample[7], "dea", 3)) 
               { 
                       engfunc(EngFunc_EmitSound, id, channel, zombie_die[random_num(0, sizeof zombie_die - 1)], volume, attn, flags, pitch) 
                       return FMRES_SUPERCEDE; 
               } 

               // Zombie falls off 
               if (equal(sample[10], "fall", 4)) 
               { 
                       engfunc(EngFunc_EmitSound, id, channel, zombie_fall[random_num(0, sizeof zombie_fall - 1)], volume, attn, flags, pitch) 
                       return FMRES_SUPERCEDE; 
               } 
       } 
       return FMRES_IGNORED;
}


上述完畢後,類推,把音效檔放到該指定資料夾  →  沒問題


續~
還沒完喔
請看1F
內容太多按發表都當機
所以分頁說明之 

獻花 x11
引用 | 編輯 AykinDalike
2009-11-15 17:38
1樓
  
3. 模式設置 
讓survivor在任何模式都能出現(multi_infection為例)
加入藍色字體部分,其他不用理他,全放上來目的讓你看清楚它的位置,請看...  
  
       {
               // Multi Infection Mode 
               g_lastmode = MODE_MULTI 
               // iMaxZombies is rounded up, in case there aren't enough players 
               iMaxZombies = floatround(iPlayersnum*get_pcvar_float(cvar_multiratio), floatround_ceil) 
               iZombies = 0 

               // Turn someone into a Survivor 
               id = fnGetRandomAlive(random_num(1, iPlayersnum)) 
               humanme(id, 1) 

               // Randomly turn iMaxZombies players into zombies 
               while (iZombies < iMaxZombies) 
               { 
                       // Keep looping through all players 
                       if (id++ > g_maxplayers) id = 1 

                       // Dead or already a zombie 
                       if (!is_user_alive(id) || g_zombie[id]) 
                               continue; 

                       // Random chance 
                       if (random_num(0, 1)) 
                       { 
                               // Turn into a zombie 
                               zombieme(id, 0, 0, 1) 
                               iZombies++ 
                       } 
               } 

               // Turn the rest of players into humans 
               for (id = 1; id <= g_maxplayers; id++) 
               { 
                       // Only those of them who aren't zombies or survivor 
                       if (!is_user_alive(id) || g_zombie[id] || g_survivor[id]) 
                               continue 

                       // Remove previous tasks 
                       remove_task(id+TASK_TEAM)   

                       // Switch to CT 
                       if (fm_get_user_team(id) != CS_TEAM_CT) // need to change team? 
                       { 
                               fm_set_user_team(id, CS_TEAM_CT) 
                               set_task(0.1+g_teams_i, "fm_set_user_team_msg", id+TASK_TEAM) 
                               g_teams_i += 0.1; // increase teams task counter 
                       } 
               } 

               // Play multi infection sound 
               PlaySound(sound_multi[random_num(0, sizeof sound_multi -1)]); 

               // Show Multi Infection HUD notice 
               set_hudmessage(200, 50, 0, HUD_EVENT_X, HUD_EVENT_Y, 1, 0.0, 5.0, 1.0, 1.0, -1) 
               ShowSyncHudMsg(0, g_MsgSync, "%L", LANG_PLAYER, "NOTICE_MULTI") 

               // Round start forward 
               ExecuteForward(g_fwRoundStart, g_fwDummyResult, MODE_MULTI, 0); 
       }


4. 屬性設置
讓survivor在任何模式下都不會被感染
這項不加的話,survivor是會被攻擊變成殭屍的
如果想看他變殭屍的話,這段別理他
做法:
ctrl+f 鍵入human is killed
找到以下這段...加入g_survivor[victim]   
// Last human or swarm round or plague round 
       if (g_swarmround || g_plagueround || fnGetHumans() == 1 || g_survivor[victim])
               return HAM_IGNORED; // human is killed


5. 武器設置
5-1 丟槍
把survivor不能丟武器的藍色部分指令換成nemesis
換言之,把不能丟武器的行為主體改成nemesis (他本來就沒有武器所以沒差)
// Weapon Drop
public clcmd_drop(id)
{
 // Survivor should stick with M249
 if (g_survivor[id])
  return PLUGIN_HANDLED;
 
 return PLUGIN_CONTINUE;
}


5-2 撿槍
把survivor不能撿槍的指令改為zombie
前項為一般玩家,後項則改為限制給bot (藍色部分)
// Ham Weapon Touch Forward
public fw_TouchWeapon(weapon, id)
{
 // Not a player
 if (!is_user_connected(id))
  return HAM_IGNORED;
 
 // Dont pickup weapons if zombie or survivor
 if (g_zombie[id] || (g_survivor[id] && !is_user_bot(id)))
  return HAM_SUPERCEDE;
 
 return HAM_IGNORED;
}


5-3 給槍
給予survivor什麼槍?
藍色部分是舉例,當然你可以換成任何CS內建的武器
請看...
// Strip survivor from weapons and give M249 
  fm_strip_user_weapons(id) 
  fm_give_item(id, "weapon_knife")
  fm_give_item(id, "weapon_hegrenade")
  fm_give_item(id, "weapon_p228")
  fm_give_item(id, "weapon_mp5navy") 
  fm_give_item(id, "ammo_9mm")
  fm_give_item(id, "ammo_9mm")
  fm_give_item(id, "ammo_9mm")
  fm_give_item(id, "ammo_9mm") 
  fm_give_item(id, "ammo_357sig")
  fm_give_item(id, "ammo_357sig")
  fm_give_item(id, "ammo_357sig")
  fm_give_item(id, "ammo_357sig")
  fm_give_item(id, "ammo_357sig")


5-4 bpammo
這是為什麼surv 的後備子彈無限的原因了(藍色)
你要哪把槍無限在這邊調整即可
也可以全部都無限或都有限(有在這加入的武器前項5-3的 "ammo_xxx" 就不需要了) 
 // Unlimited BPAmmo?
 if ((infammo && MAXBPAMMO[weapon] > 2) || (g_survivor[msg_entity] && weapon == CSW_M249))
 {
  if (fm_get_user_bpammo(msg_entity, weapon) < MAXBPAMMO[weapon])
   fm_set_user_bpammo(msg_entity, weapon, MAXBPAMMO[weapon])
 }


5-5 clip ammo
這是為什麼surv 膛上子彈無限的原因(藍色)
 // Unlimited Clip Ammo?
 if ((infammo > 1 && MAXCLIP[weapon] > 0) || (g_survivor[msg_entity] && weapon == CSW_M249))
 {
  // HUD should show full clip all the time
  set_msg_arg_int(3, get_msg_argtype(3), MAXCLIP[weapon])
  
  // Refill when clip is nearly empty
  if (clip < 3) fm_set_weapon_ammo(weapon_ent, MAXCLIP[weapon])
 }


5-6 extra items
讓surv 可以進入選單購買特殊武器
刪掉以下三處...
(1)
 // 2. Extra items
 if (!g_survivor[id] && !g_nemesis[id] && get_pcvar_num(cvar_extraitems) && is_user_alive(id))
  len += formatex(menu[len], sizeof menu - 1 - len, "\r2.\w %L^n", id, "MENU_EXTRABUY")

(2)
   // Extra items enabled?
   if (get_pcvar_num(cvar_extraitems))
   {
    // Check whether the player is able to buy anything
    if (is_user_alive(id) && !g_survivor[id] && !g_nemesis[id])
     show_menu_extras(id)
    else
     zp_colored_print(id, "^x04[ZP]^x01 %L", id ,"CMD_NOT")
   }

(3)
// Extra Items Menu
public menu_extras(id, key)
{
 // Nemesis or Survivor shouldnt get extra items
 if (g_survivor[id] || g_nemesis[id] || !is_user_alive(id))
 {
  zp_colored_print(id, "^x04[ZP]^x01 %L", id, "CMD_NOT")
  return PLUGIN_HANDLED;
 }


乎~

基本上這樣已經差不多了
[補充]: 
1. 武器看你要設幾個(隨你高興),可以把CS內鍵的24把槍、小刀和手榴彈都獨立給survivor 
    但請注意!!!...超過10個模組的話可能會出錯 
    必須在設定上面做點調整 
    以下藍色部分就是它的上限值...
// Dynamic Stuff Limiters (increase if needed)
const MAX_EXTRA_ITEMS = 30
const MAX_ZOMBIE_CLASSSES = 20
const MAX_CSDM_SPAWNS = 128
const MAX_STATS_SAVED = 64
const MAX_MODELS_NEMESIS = 10
const MAX_MODELS_SURVIVOR = 10
const MAX_MODELS_HUMAN = 20
const MAX_MODELS_ADM_HUMAN = 10
const MAX_MODELS_ADM_ZOMBIE = 10

2. 同樣的,聲音檔看你要放幾個來源都行 
3. 把survivor 移到哪個模式出現也都看個人,方法雷同
    swarm模式要特別留意,有需要再跟大家說 
4. 和 5.就是可有可無了,自個兒斟酌囉 

[補充2]:

// Single Infection Mode
g_lastmode = MODE_INFECTION

if (fnGetHumans() > 1)   
{

        // Turn player into the first zombie 
        zombieme(id, 0, 0, 0)
}

if (fnGetHumans() >= 1)    
{    
        // Turn someone into a Survivor (if not a zombie) 
        while (g_zombie[id]) id = fnGetRandomAlive(random_num(1, iPlayersnum)); 
        humanme(id, 1)

}

// Randomly turn iMaxZombies players into zombies
while (iZombies < iMaxZombies)
{
     // Keep looping through all players
     if (id++ > g_maxplayers) id = 1
 
     // Dead or already a zombie or survivor
     if (!is_user_alive(id) || g_zombie[id] || g_survivor[id])
                continue;
    
     // Random chance
     if (random_num(0, 1))
     {
            // Turn into a zombie
            zombieme(id, 0, 0, 1)
            iZombies++
      }
}
...
.......
// First zombie/nemesis or survivor
if (!is_user_alive(id) || g_zombie[id] || g_survivor[id])

說明:如果要把surv改到一般模式出現需注意 (略有不同)
原因:若不定義『當有一位殭屍出現後的這個殭屍不會變倖存者』的話
          是會有可能沒殭屍的喔,因為surv定義在殭屍出現後的下一秒發生
          所以要排除掉可能殭屍和倖存者都隨機選到同一人的bug
          一般模式加入surv 修正後只剩下一個地方怪怪的,就是當遊戲室只有adm
          一人的時候可能會有問題,不過應該沒有人開殭屍自己玩的吧?跟誰玩?
          解:這點也解決了!! 做了點調整後不會有任何問題 !!

[補充3]:
本來不想加的
但是這樣應該會更有說服力
若想要你的1.6更趨近CSO
當然不能只有一個女角嘛
意思是...你可以創多個倖存者
告訴大家 ...加在[補充2]
以下...(藍色)

   // Single Infection Mode
   g_lastmode = MODE_INFECTION

   if (fnGetHumans() > 1)
   {
           // Turn player into the first zombie
           zombieme(id, 0, 0, 0)
   }
   
   if (fnGetHumans() >= 1)
   {
            // Turn someone into a Survivor(if ont a zombie)
            while (g_zombie[id]) id = fnGetRandomAlive(random_num(1, iPlayersnum));
            humanme(id, 1)
   }
   
   if (fnGetHumans() >= 5)
   {
           while (g_survivor[id] || g_zombie[id]) id = fnGetRandomAlive(random_num(1, iPlayersnum));
           humanme(id, 1)
   }
   
   if (fnGetHumans() >= 9)
   {
           while (g_survivor[id] || g_zombie[id]) id = fnGetRandomAlive(random_num(1, iPlayersnum));
           humanme(id, 1)

   }

以上修改客體為補充2的single infection mode
設置成當遊戲室人數達5人以上(包含5)會出現2個倖存者、9人以上(包含9)會出現3個倖存者...
以此類推...改在任何模式都隨己意!!有興趣者可自行修改單局倖存者數量與人數條件...或採半數為倖存者亦可...
順道一提...
武器設置的部分你有三個選擇...
1. 前面教過的5-3
2. 差件區的『倖存者選擇武器插件』
3. 此最為理想...做法:5-3只給刀、且把fm_strip_user_weapons(id) 刪除
   這樣就會延用殭屍出現前人類選的武器,直接換到女角手上的意思
   當然模組也跟著你的設定隨之換成女手!!

[補充4]
作用:使得倖存者可開啟手電筒照明
刪除以下紅色部分
 // Block it for zombies, survivor (and override it for humans when custom flashlight is on)
 if (g_zombie[id] || g_survivor[id] || (!g_zombie[id] && get_pcvar_num(cvar_cflash)))
 {
  // Human's custom flashlight should be turned on instead
  if (!g_zombie[id] && !g_survivor[id] && get_gametime() - g_lastflashtime[id] > 1.1)

  // Strip survivor from weapons and give M249
  fm_strip_user_weapons(id)
  fm_give_item(id, "weapon_knife")
  fm_give_item(id, "weapon_m249")
  
  // Turn off his flashlight
  turn_off_flashlight(id)

還有讓身為bot的surv在需要時買備用彈
紅色部分刪除,否則bot用完彈就只會拿刀囉
 // Bots automatically buy ammo when needed
 if (!g_zombie[msg_entity] && !g_survivor[msg_entity] && g_ammopacks[msg_entity] > 0 && MAXBPAMMO[weapon] > 2 && is_user_bot(msg_entity) && fm_get_user_bpammo(msg_entity, weapon) <= BUYAMMO[weapon])
  clcmd_buyammo(msg_entity);


以上修改了幾點要件:
survivor(倖存者)武器、音效被獨立出來(與一般人類和殭屍分開)
而他又可以撿槍丟槍、子彈有限、可以買特殊武器、又出現在任何模式
血量就看你打算給他多少
基本上她已經變成一般人了
當然可以把她設成女角
結果是...
當然就可以男女混打啦!!
系統會在各種模式下等待殭屍出現後
隨機選一人(或一人以上)當女角
其他的都還是男生
就看這些男生要不要保護她了

測試結果大概90分,出現唯一的缺點是
伺服器人數要在>=5才會正常運行
不然會有回合出現沒殭屍的狀況

上述問題已解決
要1vs1也行
跟伺服器人數多寡無關
總之人類那一方都會有一人(或數人)被隨機選為女角
如果是1打1的話
就變成1殭屍1女角
2打1的話就1殭屍1女角1男角
以此類推
如果也加入補充3的話
那就看你是定義有幾個女角了 
個人測試滿意度上升到97%
個人測試滿意度上升至99% 

所以製作前請先 "備份" 
但基本上玩殭屍也很少1對1的吧 (揚言pk那種除外)
因為圖大,人太少沒甚麼看頭
都給你跑就好了

還有radio目前還沒研究出怎麼獨立給survivor用
我看那要是po上來也是一大篇幅

這篇單是打在word就10頁了 
目前已找到解決辦法處理無線電的問題了
測試結果非常成功
更興奮的是連殭屍無線電也能一起改出來
(男角、女角以及殭屍的z、x、c語音完整呈現)
而且重點是不會占用系統512mb資源
因為並非新增音效來源
而是用id 判斷玩家身分後取代音效
例如身為女角,使用無線電呼叫時
聲音會直接被取代成女角的無線電語音
還剩下一點點小bug排除中 
(近期考慮發表在插件區)
 

好啦
希望各位喜歡!!

獻花 x3
引用 | 編輯 a7811311622
2009-11-15 17:54
2樓
  
雖然你很熱心的教學…不過數位男女幾乎沒幾個想自己動手的…
搞不好之後還會有回覆的內容是「請大大把改好的檔案上傳」之類的…
(以上言論代表個人偏見…不代表樓主立場…)

我用的ZP是某大直接用AMXX的,沒SMA可改(玩)…
所以ZP主插件的SMA都是純研究…不修改的…

結論:
感謝教學!

獻花 x0
引用 | 編輯 AykinDalike
2009-11-15 17:56
3樓
  
下面是引用 a7811311622 於 2009-11-15 17:54 發表的 : 到引言文
雖然你很熱心的教學…不過數位男女幾乎沒幾個想自己動手的…
搞不好之後還會有回覆的內容是「請大大把改好的檔案上傳」之類的…
(以上言論代表個人偏見…不代表樓主立場…)

我用的ZP是某大直接用AMXX的,沒SMA可改(玩)…
所以ZP主插件的SMA都是純研究…不修改的…

結論:
感謝教學!


對了
你來了太好囉
為什麼我排版一直出問題呢?

1. 字體大小變來變去
2. [ quote ].......[ /quote ]變的好怪,不能用
     (我在quote前後加空格是因為這樣才顯示得出來我要問的東西)

獻花 x0
引用 | 編輯 a7811311622
2009-11-15 18:10
4樓
  
下面是引用 AykinDalike 於 2009-11-15 17:56 發表的 : 到引言文


對了
你來了太好囉
為什麼我排版一直出問題呢?

1. 字體大小變來變去
2. [ quote ].......[ /quote ]變的好怪,不能用
     (我在quote前後加空格是因為這樣才顯示得出來我要問的東西)


1.字體大小我也不知道為什麼會變…就看你有沒有用的[ size]...[ /size]語法吧…?
2.怎麼個怪…?
如果只是單純想把一段字框起來應該用 [ quote].......[ /quote]應該不會有問題才對…
我來試試…

(順代一提,如果你一直排版的話是可能會出問題啦…我也曾排版排到版面越來越怪…)

獻花 x0
引用 | 編輯 AykinDalike
2009-11-15 18:24
5樓
  
下面是引用 a7811311622 於 2009-11-15 18:10 發表的 : 到引言文


1.字體大小我也不知道為什麼會變…就看你有沒有用的[ size]...[ /size]語法吧…?
2.怎麼個怪…?
如果只是單純想把一段字框起來應該用 [ quote].......[ /quote]應該不會有問題才對…


(順代一提,如果你一直排版的話是可能會出問題啦…我也曾排版排到版面越來越怪…)


不知道為什麼...
基本上這種語法應該是不受字體大小或字型影響吧?
第二篇試著統一arial字體就ok了

第一篇也是呀,居然還是會出現斷層 = =a

一度想直接刪文有沒有!!!!!!   火有點上來了!!!!!!!!!!
排版亂七八糟也不會有人看得懂


排好了
發現原因應該是我在word打好之後貼過來
所以發生怪怪的現象
現在沒事了

感謝你的支持!!
這是動力來源!!

獻花 x0
引用 | 編輯 AykinDalike
2009-11-16 01:41
6樓
  
下面是引用 a7811311622 於 2009-11-15 17:54 發表的 : 到引言文
雖然你很熱心的教學…不過數位男女幾乎沒幾個想自己動手的…
搞不好之後還會有回覆的內容是「請大大把改好的檔案上傳」之類的…
(以上言論代表個人偏見…不代表樓主立場…)

我用的ZP是某大直接用AMXX的,沒SMA可改(玩)…
所以ZP主插件的SMA都是純研究…不修改的…

結論:
感謝教學!


我會這麼做是因為
有些可能還沒有人做過或是有人正在研究中
如果是喪屍差件的話
我就不會想太深入了解
因為已經普及化了
插件一個比一個更前衛
而且越做越出色
想的到想不到的都有
也真的很佩服
那我就用別人的就好了

但如果是別人還沒研究出來的東西
那我會認為有他探討的必要性

獻花 x0
引用 | 編輯 小魂
2009-11-16 02:15
7樓
  
對於有學過程式語言而言容易多了...對於初學者來說...看不懂的文字一堆 表情
{已上是初學者的觀點!}

話說男女混打? 意義何在?

獻花 x0
引用 | 編輯 AykinDalike
2009-11-16 11:11
8樓
  
下面是引用 魂夢 於 2009-11-16 02:15 發表的 : 到引言文
對於有學過程式語言而言容易多了...對於初學者來說...看不懂的文字一堆 表情
{已上是初學者的觀點!}

話說男女混打? 意義何在?



意義?
這不是應該是很多人想解決的問題嗎?
希望能換男角的時候變男手
女角的時候亦同嗎?

意義看讀者怎麼評價它了

獻花 x1
引用 | 編輯 chapecs
2009-11-16 17:06
9樓
  
好文好文

原來小刀也要注意 表情


之前自己改都沒有注意到小刀耶 表情


來幫推囉 表情

獻花 x0
引用 | 編輯 HsK
2009-11-17 01:13
10樓
  
很像很煩= =

獻花 x0
引用 | 編輯 8106125
2009-11-17 02:03
11樓
  
我想請問樓主 表情
讓倖存者丟棄倒數前選的槍和手雷
這段程式碼是在什麼位置呢?

獻花 x0
引用 | 編輯 glay2005
2009-11-17 13:55
12樓
  
這教學對我來說很不錯^^
表情

獻花 x0
引用 | 編輯 AykinDalike
2009-11-17 15:58
13樓
  
下面是引用 8106125 於 2009-11-17 02:03 發表的 : 到引言文
我想請問樓主
讓倖存者丟棄倒數前選的槍和手雷
這段程式碼是在什麼位置呢?


你好
我想你要問的意思應該是
被選為倖存者的人fm_give_item的指令下
不會取代原持有的武器
而是丟到地上對吧? 

5-3fm_strip_user_weapons(id)
這段刪掉 
加入drop_primary_weapons(id)
還有drop_secondary_weapons(id)
注意:以上兩段一定要在fm_give_item之前  
         否則你會得到武器之後全部丟掉  
         那倖存者就蝦到爆了
以及以下兩段
加在任一空白處都可以
建議放在差件開頭
weapons_bit_sum附近
stock drop_primary_weapons(id)
{
 // Get user weapons
 static weapons[32], num, i, weaponid
 num = 0 // reset passed weapons count (bugfix)
 get_user_weapons(id, weapons, num)
 
 for (i = 0; i < num; i++)
 {
  weaponid = weapons
  
  if ((1<<weaponid) & PRIMARY_WEAPONS_BIT_SUM)
  {
   static wname[32]
   get_weaponname(weaponid, wname, sizeof wname - 1)
   engclient_cmd(id, "drop", wname)
  }
 }
}


stock drop_secondary_weapons(id)
{
 // Get user weapons
 static weapons[32], num, i, weaponid
 num = 0 // reset passed weapons count (bugfix)
 get_user_weapons(id, weapons, num)
 
 for (i = 0; i < num; i++)
 {
  weaponid = weapons
  
  if ((1<<weaponid) & SECONDARY_WEAPONS_BIT_SUM)
  {
   static wname[32]
   get_weaponname(weaponid, wname, sizeof wname - 1)
   engclient_cmd(id, "drop", wname)
  }
 }
}

一個是主槍、一個是副槍
倖存者就會丟出武器了

手雷的話
倖存者不會丟出
他會直接擁有
即使在WEAPONS_BIT_SUM加入CSW_HEGRENADE
或是client_cmd(id,"drop weapon_hegrenade ")
都一樣...
因為 !!
他也被認定為人類
所以直接持有手雷 (殭屍還沒出現前人類手上拿的那一顆)
在這情況下的假設
即使你在fm_give_weapon沒有給予倖存者he
她也會直接拿來用的意思

獻花 x1
引用 | 編輯 8106125
2009-11-17 17:09
14樓
  
感謝樓主的解說,這樣我了解了^^" 表情

獻花 x0
引用 | 編輯 a7811311622
2009-11-17 17:17
15樓
  
下面是引用 8106125 於 2009-11-17 17:09 發表的 : 到引言文
感謝樓主的解說,這樣我了解了^^" 表情


原本是我把這問題搞出來的…結果爛攤子被人收拾了…
好慚愧…表情

獻花 x0
引用 | 編輯 AykinDalike
2009-11-17 17:54
16樓
  
下面是引用 a7811311622 於 2009-11-17 17:17 發表的 : 到引言文


原本是我把這問題搞出來的…結果爛攤子被人收拾了…
好慚愧…表情


drop_weapon(id)這個知識是從你學來的呀
我在提問區問過你類似的問題
沒甚麼好慚愧的啦
你也是建功者之一捏~

獻花 x0
引用 | 編輯 pau84111
2009-11-18 08:04
17樓
  
好複雜呦 表情

獻花 x0
引用 | 編輯 a7811311622
2009-11-18 12:11
18樓
  
下面是引用 AykinDalike 於 2009-11-17 17:54 發表的 : 到引言文


drop_weapon(id)這個知識是從你學來的呀
我在提問區問過你類似的問題
沒甚麼好慚愧的啦
你也是建功者之一捏~


會這麼說是因為…那位大大上次請我幫他修改「每回合隨機給予武器」插件,
不過因為那插件本身設定的運行時間點和ZP倖存者的運行時間點會有些問題,
結果之後我說要想辦法,但…現在看到這篇才發現…
糟糕…我忘了這回事了…
(謎:健忘並不是推卸責任的藉口…表情 )

獻花 x0
引用 | 編輯 AykinDalike
2009-11-20 14:04
19樓
  
下面是引用 8106125 於 2009-11-17 02:03 發表的 : 到引言文
我想請問樓主 表情
讓倖存者丟棄倒數前選的槍和手雷
這段程式碼是在什麼位置呢?


另外一點補充
從a7811311622學來的方法
(感謝a7811311622,否則一開始對丟槍是沒有概念的)
但其實那用在一般插件比較恰當

因為後來發現在zp主差件裡面
早就有對丟槍的定義了
做法是:
直接把5-3
fm_strip_user_weapons(id)
換成
drop_weapons(id, 1)
drop_weapons(id, 2)
一個是主槍一個是副槍
就這樣搞定
倖存者就會丟出武器

結果是一樣的
方法簡單多了
因為作者幫了我們的忙
不過也同理可證手雷無法丟出
會直接持有

獻花 x0
引用 | 編輯 tonyyoung
2009-11-26 08:50
20樓
  
// Strip survivor from weapons and give M249 
  fm_strip_user_weapons(id) 
  fm_give_item(id, "weapon_knife")
  fm_give_item(id, "weapon_hegrenade")
  fm_give_item(id, "weapon_p228")
  fm_give_item(id, "weapon_mp5navy") 
  fm_give_item(id, "ammo_9mm")
  fm_give_item(id, "ammo_9mm")
  fm_give_item(id, "ammo_9mm")
  fm_give_item(id, "ammo_9mm") 
  fm_give_item(id, "ammo_357sig")
  fm_give_item(id, "ammo_357sig")
  fm_give_item(id, "ammo_357sig")
  fm_give_item(id, "ammo_357sig")
  fm_give_item(id, "ammo_357sig")


請問一下喔~
如果要給他一定數值的防彈衣
應該怎麼寫阿= =?






獻花 x0
引用 | 編輯 AykinDalike
2009-11-26 17:07
21樓
  
請問一下喔~
如果要給他一定數值的防彈衣
應該怎麼寫阿= =?


你好
倖存者的防彈衣嗎?
以下...
set_pev(id, pev_armorvalue, 700.0)

紅色部分就是你要的數值
最高可顯示到999

獻花 x1
引用 | 編輯 a7811311622
2009-11-26 18:01
22樓
  
下面是引用 AykinDalike 於 2009-11-26 17:07 發表的 : 到引言文


你好
倖存者的防彈衣嗎?
以下...

紅色部分就是你要的數值
最高可顯示到999
 
 雖然<fun>裡的set_user_armor(index, armor)應該也可以,
不過還要用到<fun>…可能會多此一舉…
果然set_pev(…)還蠻好用的…

獻花 x0
引用 | 編輯 AykinDalike
2009-11-26 22:04
23樓
  
下面是引用 a7811311622 於 2009-11-26 18:01 發表的 : 到引言文
 
 雖然<fun>裡的set_user_armor(index, armor)應該也可以,
不過還要用到<fun>…可能會多此一舉…
果然set_pev(…)還蠻好用的…


set_pev真的可行呀
而且適用許多狀況
想給誰就給誰
加個註解就好
而他若是想要只限定給倖存者的話
就打在// Strip survivor from weapons and give M249
那一堆裡面就好了...
方便又不會出錯

我也是這麼覺得啦
以主差件的角度來講
本身東西就很多了
定義能不另外下的就免了
除非有必要

補充:
對了
說到這個,有一點可以拿出來討論討論
當然這防彈衣也可以給殭屍,是不衝突的
不過想問的是殭屍被攻擊時怎麼會扣的只有血、不會扣護甲
我試著把remove那一段給殭屍的打成900
人類100、倖存者給200 (這兩個都很乖、正常運行)
另如隊友傷害或是手雷都會傷到自己的防彈衣
但殭屍的不會...護甲維持900然後一直噴血...XD

猜測是zombie_armor的關係(傷害折扣的那個)

獻花 x0
引用 | 編輯 a7811311622
2009-11-26 23:33
24樓
  
下面是引用 AykinDalike 於 2009-11-26 22:04 發表的 : 到引言文


set_pev真的可行呀
而且適用許多狀況
想給誰就給誰
加個註解就好
而他若是想要只限定給倖存者的話
就打在// Strip survivor from weapons and give M249
那一堆裡面就好了...
方便又不會出錯

我也是這麼覺得啦
以主差件的角度來講
本身東西就很多了
定義能不另外下的就免了
除非有必要

補充:
對了
說到這個,有一點可以拿出來討論討論
當然這防彈衣也可以給殭屍,是不衝突的
不過想問的是殭屍被攻擊時怎麼會扣的只有血、不會扣護甲
我試著把remove那一段給殭屍的打成900
人類100、倖存者給200 (這兩個都很乖、正常運行)
另如隊友傷害或是手雷都會傷到自己的防彈衣
但殭屍的不會...護甲維持900然後一直噴血...XD

猜測是zombie_armor的關係(傷害折扣的那個)


我是以獨立插件的角度啦…因為有些人看到ZP主插件超多行就沒興趣了…

至於護甲…就要看主插件怎麼寫了吧…我都以獨立插件的思考模式去想的…
我的想法是:
先判斷殭屍護甲值是否大於0,如果大於0就把受的傷改成減少護甲,再把傷害歸0,
這樣就會只扣護甲而沒傷害,至於護甲等於0時應該不用說了吧…

獻花 x0
引用 | 編輯 AykinDalike
2009-11-26 23:57
25樓
  
下面是引用 a7811311622 於 2009-11-26 23:33 發表的 : 到引言文


我是以獨立插件的角度啦…因為有些人看到ZP主插件超多行就沒興趣了…

至於護甲…就要看主插件怎麼寫了吧…我都以獨立插件的思考模式去想的…
我的想法是:
先判斷殭屍護甲值是否大於0,如果大於0就把受的傷改成減少護甲,再把傷害歸0,
這樣就會只扣護甲而沒傷害,至於護甲等於0時應該不用說了吧…


喔不不不

我懂你的意思
不過理想的是
讓殭屍護甲與zombie_armor的作用相仿
只是"減輕"傷害值
不要完全扣護甲
或只扣血

扣護甲的同時也損血
但是七折優待 (舉例)

這好像就不是那麼簡單
所以我才說有討論的空間嘛
大概要參考主程式怎麼寫了
因為主差件的內容似乎不包含這項
否則作者不需要另下一個zombie_armor的定義
這是能控制傷害的程度
不過若提升armor的數值也一樣能做到呀 
只是需要很多語法補強
那可能會使插件更複雜
再說這還只是顯示的問題
話說回來
ZP好像在許多顯示的部分
都用了替代方案做處理
例如血量(真的不好搞...頭很大)
殭屍護甲猜測也是其中之一
問題與血量顯示不同的是...
無法同步

獻花 x0
引用 | 編輯 a7811311622
2009-11-27 21:49
26樓
  
下面是引用 AykinDalike 於 2009-11-26 23:57 發表的 : 到引言文


喔不不不

我懂你的意思
不過理想的是
讓殭屍護甲與zombie_armor的作用相仿
只是"減輕"傷害值
不要完全扣護甲
或只扣血

扣護甲的同時也損血
但是七折優待 (舉例)

這好像就不是那麼簡單
所以我才說有討論的空間嘛
大概要參考主程式怎麼寫了
因為主差件的內容似乎不包含這項
否則作者不需要另下一個zombie_armor的定義
這是能控制傷害的程度
不過若提升armor的數值也一樣能做到呀 
只是需要很多語法補強
那可能會使插件更複雜
再說這還只是顯示的問題
話說回來
ZP好像在許多顯示的部分
都用了替代方案做處理
例如血量(真的不好搞...頭很大)
殭屍護甲猜測也是其中之一
問題與血量顯示不同的是...
無法同步


那不就只要讓傷害別歸零,把原傷害*0.3,再把(護甲-原傷害*0.7),
這樣不可行嗎…?

獻花 x0
引用 | 編輯 AykinDalike
2009-11-27 22:07
27樓
  
下面是引用 a7811311622 於 2009-11-27 21:49 發表的 : 到引言文


那不就只要讓傷害別歸零,把原傷害*0.3,再把(護甲-原傷害*0.7),
這樣不可行嗎…?


沒錯
你的理論成立
不過可惜的是...(但書)

主差件裡面
沒有明白定義給殭屍的防彈衣
嚴格來說...有!!
是可以命令它打幾折就幾折
只是我稱它作『無形的護甲』
這就是我說的顯示的問題
否則裡面有一段大可以直接刪了它↓
// remove zombie armor
就是因為無法成功跳表顯示出來
所以乾脆不顯示
但又不能沒有護甲
所以採取非常手段
下了zombiearmor的定義
否則殭屍被打假的勒

我看到作者這麼下定義之後
我感覺到那應該是有難度的
反之,原創一定希望呈現出最好的作品來呀
一定是盡量避免類似情形發生的才對

揣測作者的用意
不代表任何立場

獻花 x0
引用 | 編輯 a9872310
2009-12-02 00:09
28樓
  
請問
4.3的插件
該怎麼改呢-   -
因為每次4.3都跟別人不同
我好恨阿 表情

這樣每次都很麻煩您...

獻花 x0
引用 | 編輯 AykinDalike
2009-12-02 12:54
29樓
  
下面是引用 a9872310 於 2009-12-02 00:09 發表的 : 到引言文
請問
4.3的插件
該怎麼改呢-   -
因為每次4.3都跟別人不同
我好恨阿 表情

這樣每次都很麻煩您...


我建議你
一步一步慢慢來
你要改哪一步跟我說
我慢慢教你

(4.3確實不好處理,整個書寫方式都經過大修改)

獻花 x0
<< 1 2 3 4 5 >>
跳頁: (共 6 頁)