2.武器库
2.1武器库领取武器不同方式的辨析
武器库(Armory)的建造比起监狱(Cell)要更为复杂,除了基本的按钮开关门以外,还会调用更多的实体。而武器库方面,制作者可以更灵活的创建武器库。武器库领取武器简单的分为两种方式,在本节当中就以这两种方式为主题进行论证。
首先,两种方式分别是通过调用weapon实体(例如我想要一把AK47,便调用weapon_ak47这个实体)。第二种方法是调用game_player_equip(玩家装备)实体。
第一种方法是在武器库创建很多把可以捡起的枪(类似于玩家死亡后掉落的枪),假设我在武器库创建10把weapon_awp(AWP武器实体),那么最多只能有10位玩家拿到awp,因为每把awp被捡起后就会归捡起的玩家所有,而原先地上的那一把就会消失,所以如果有11位玩家想要使用awp进行镇暴,那么只有前10位玩家可以拿到awp,剩下的一位玩家只能使用别的武器了。而第二种方法是当玩家触发某个条件(比如按下按钮)后,给该玩家装备一把武器。这种情况下的武器是无限量的,因为是即时生成的武器。比如有一万名玩家想要awp,第一种方法肯定是供不应求的,但是第二种方法就完全可以满足。
比如在jb_indicator这张地图当中,所使用的方式就是第二种方式。我反编译了jb_indicator这张地图(为了学习),发现这张地图武器库里架子上的那些枪都是prop_static的模型,而jb_indicator的作者很巧妙的用func_button实体覆盖住了武器模型。所以当你对着武器模型按E的时候,你是触发了func_button的功能。而每个func_button链接到game_player_equip实体,就有了这样的效果。
第一种方式适用于限量的供应,比如地图武器的领取方式应该使用第一种方式,因为如果无限量的供应武器,那CT肯定要被打成筛子。所以第一种和第二种方法各有各的适用范围,而武器库算是他们两种方式的一个交集。武器库当中,我推荐使用第二种方式。
由于介绍到了weapon这个实体,所以在本章中,同样介绍地图武器的创建与制作。
2.2地图武器的创建制作与weapon实体
首先,要明确我要在地图的什么地点创建什么样的武器(weapon)。比如我想在监狱第一间创建一把awp,那我们就在监狱第一间创建一个点实体,实体名称就叫做weapon_awp。如果想创建ak47,实体名称就叫做weapon_ak47。特别注意的是,usp的实体名称不叫weapon_usp,是weapon_usp_silencer(因为CS:GO中是USP消音版)。
Weapon实体的参数设置需要注意两个参数,第一个是Class Info页的“Is this weapon allowed to be picked up?”(这把武器允许被捡起吗?),v社都已经把参数名改成问句了,想必也不用我再多解释了。当然,我们是创建地图武器,自然是允许匪徒们捡起,而不是当一个装饰品,所以这个地方我们应该填写Yes。
第二个是Flags页的start constrained(出生固定),这就有些小伙伴费解了。其实这个意思是询问你要不要让这把武器受到游戏物理引擎的作用。因为CS:GO中有强大的物理引擎,武器被扔出去后会因重力而掉到地上。如果把这个选项打勾,那么这个武器就不会受到重力影响,会一直保持原位不动。这个可以根据自己的需要自行决定。
2.3武器库武器和game_player_equip实体
本小节介绍第二种领取武器的方法。首先,我们要弄清楚,第二种方法需要哪些东西存在。第一点,我们需要一个东西提示我们即将领取到的东西是什么,可以使用prop_static调用武器模型,或者weapon实体(将Is this weapon allowed to be picked up变为NO,然后start constrained打勾,这样这个实体就变成一个模型了),或者point_worldtext(文字显示实体)都是可以的(本小节使用第一种方法)。第二点,我们需要一个触发按钮,一旦按下按钮,就可以激活我们的game_player_equip实体了。第三点,我们需要game_player_equip实体来决定我们领取到的东西是什么。
首先,与第一章一样,调用prop_static或prop_dynamic模型,模型名称自己可以在模型浏览器中搜索,比如沙漠之鹰,我可以搜索Deagle,这也就是要学好Filter过滤器的原因了,不然几千个模型,如大海捞针一般,费时费力。
然后,我们将该模型固定到墙上,在该模型上创建一个固体(该固体不可见,可以使用invisible贴图)。然后将该固体转换为固体实体func_button。
接着,我们创建game_player_equip实体,该实体是一个点实体。打开该实体,我们首先要取消“SmartEdit”这个功能,因为我们要自行添加参数。
去掉SmartEdit功能后,右侧有两个输入栏,分别是Key(参数)和Value(值)。在Key处输入你想要生成的武器,如图所示,我想生成一把usp消音版,则输入weapon_usp_silencer即可。下面的Value设为1。还要注意的是,Flags当中要勾选Use Only和Only strip same weapon type(只丢弃同类型枪械)。设置完成后,请为该实体取名。设置如图2.3-1
(图2.3-1)
有些地图当中,在你手上有一把同类型的武器(如AK47)后又去对相同武器类型武器按E(如AWP),那么后者不会出现在你手上,而是会变成weapon实体的形式掉到地上。这就是因为没有勾选Only strip same weapon type这个选项。这个选项的意思是丢弃相同类型的武器。因为CS:GO没有双持主武器这个设定,所以当这个选项被勾选后,在你对AWP按E的时候会自动丢弃你手上的AK47而捡起AWP。
在编辑完成game_player_equip后,返回func_button实体编辑界面。打开Outputs一栏,添加命令以链接至game_player_equip实体。
My Output填写OnPressed; Target Entity填写你game_player_equip实体的名称,如我的usp生成器叫做usp_spawner,那此处我就要填写usp_spawner; Via this input填写use(此处use会变红,没有关系,这个在游戏中是可以运行的通的,忽视即可); With a parameter override这一栏填写“!activator”(同上)。其余默认,保存即可。
2.4 武器库的其他设定
关于武器库密道方面,我将放在密道章统一讲解。
武器库作为CT的出生点,还需要一个实体就是CT出生实体。T的出生实体叫做info_player_terrorist,那么CT的照猫画虎就叫做info_player_counterterrorist。
注意,所有的出生点都是有几个出生点的话,该队伍人数最多就为几人,所以如果想要在服务器中正常游玩,一定要多增加几个info_player实体。
|