[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 页)