Ultimate 发表于 2015-9-22 22:41:52

【地图实例教程】仿HL2的AR2固定机枪

本帖最后由 Ultimate 于 2015-10-9 22:41 编辑





下载本帖下方提供的地图源码文件进行参考/学习。如果你对实体没有基础了解,你可能不知道干了什么,完全新手请先了解实体Inputs/Outputs系统,如果你会做一个按E开门的按钮触发或者会制作一个简单的传送区域,请继续跟随教程。

地图内容包括:
一把可射击并且能造成伤害的的“机枪”,仿自HL2。

特性:
-模拟子弹效果(仅效果,无伤害)
-火光特效-包含激活、非激活、射击三个状态的动画

-------------------------------------------------------------------------

源码内容:
-仿HL2固定机枪一把

源码说明:
-point_camera (startcamera) 无作用,只为进入游戏时的一个摄像机,不计入下方总实体列表中。
-请添加CS起源bin目录下的halflife2.fgd到你的起源FGD加载列表内,否则部分实体你不能使用SmartEdit模式编辑。

-------------------------------------------------------------------------

地图说明:
-开局将会执行以下命令:sv_cheats 1、bot_stop 1(暂停BOT行为)、mp_autoteambalance 0(关闭自动团队平衡)、mp_limitteams 100(阵营玩家数相差最大数量)、mp_freezetime 0(开局冻结时间)
-进入游戏时请选择CT阵营

额外说明:
-ent_messages_draw (显示信息)效果:
http://i3.tietuku.com/b148028c9e8511f1.png

-showtriggers_toggle (显示触发)效果:
http://i3.tietuku.com/ccd661889afaa5f6.png

-developer 2 (开发者模式)效果
http://i3.tietuku.com/f4c6acf7bd1b270c.png

-ent_text "func_breakable" (显示指定Targetname/Classname信息)效果
http://i3.tietuku.com/696986e0de245e71.png

-------------------------------------------------------------------------

GIF-制作中的动画预览图:
http://i3.tietuku.com/bb96df65c21bf966.gif

GIF-射击预览图:
http://i3.tietuku.com/9c599b7741285ea4.gif

-------------------------------------------------------------------------

实体列表见 2楼特别提醒:该机枪工作不会用到cheats!cheats是为了开启那些命令而用的,和机枪本身没有任何关系!

-------------------------------------------------------------------------
源码教程下载地址:
VMF+BSP=RAR:http://pan.baidu.com/s/1gdez0BL 密码:jh0h

------------------------------------------------------------------------

任何问题——请留言本帖,如果有空,我会回复你。
此贴所有内容(包括使用/提供的源码/地图/说明/图片)归互联网所有。

Ultimate 发表于 2015-9-22 22:42:42

实体列表 V1:

总计实体:
      ambient_generic - 播放音效
      *env_muzzleflash - 创建一个枪火特效
      *env_gunfire - 模拟SMG或AR2射击的实体,无伤害,纯视觉效果
      env_sprite - 播放一个spr/特效
      env_spark - 创建一个火花
      func_brush - 具有功能性的固体
      func_button - 一个可以被按下的按钮实体,顾名思义
      game_ui - 重新定义部分玩家输入命令后的触发事件
      logic_auto - 游戏开局将会执行的触发事件
      logic_measure_movement - 测量指定实体之间的运动,彼此做相同的运动,不同于Parent键值
      logic_timer - 设定时间触发事件的实体
      logic_case - 预先设定值,各数值对应各自触发事件
      logic_relay - 转发器,常用于将同性质的触发归类在一块,防止混淆
      point_template - 预先设定实体,被触发时可将实体生成
      point_servercommand - 在服务端执行命令的实体,相当于控制台输入
      prop_dynamic - 可播放动画的实体,具有更高的道具价值,可设定Targetname
      trigger_push - 模拟推动的实体
      trigger_hurt - 造成伤害的实体

一般功能实体:
      logic_auto https://developer.valvesoftware.com/wiki/Logic_auto
                功能:用于修复logic measure movement在被我这样使用时的一个的BUG
                Outputs:
                        OnMapSpawn - 当地图以任何的理由被载入时

      point_template https://developer.valvesoftware.com/wiki/Point_template
                功能:同上
                Outputs:
                        ForceSpawn - 生成预设实体

      point_servercommand https://developer.valvesoftware.com/wiki/Point_servercommand
                功能:在服务端后台执行命令,这里用于那三个按钮的功能以及修复prop的Parent BUG
                Inputs:
                        Command - 执行命令

      prop_dynamic https://developer.valvesoftware.com/wiki/Prop_dynamic
                功能:用于模拟一把机枪模型
                Inputs:
                        SetParent - 设置自身为另外一个实体的父实体
                        SetAnimation - 强行设置模型动画(DefaultAnimation会循环播放,当SetAnimation的Animation播放完时将自动继续播放DefaultAnimation)

瞄准/方向/移动实体:
      func_button https://developer.valvesoftware.com/wiki/Func_button
                功能:启用/激活机枪控制、设定玩家Targetname
                Outputs:
                        OnPressed - 当被E键按下时

                Inputs:
                        Lock - 锁上按钮(无法触发OnPressed,但依旧可以触发OnDamaged)
                        Unlock - 解锁按钮

      func_brush https://developer.valvesoftware.com/wiki/Func_brush
                功能:作为在机枪没有被控制时使用的被测量运动实体,也就是机枪“复位”的位置

      game_ui https://developer.valvesoftware.com/wiki/Game_ui
                功能:控制方向/开火/激活
                Outputs:
                        PressedAttack - 当输入者执行+attack时(也就是当你按下鼠标左键/不放)
                        UnpressedAttack - 当输入者执行-attack时(也就是当你松开鼠标左键)
                        PlayerOn - 当输入者进入控制时(即输入者Activate的时候)
                        PlayerOff - 当输入者退出控制时(即输入者Deactivates的时候)

      logic_measure_movement https://developer.valvesoftware.com/wiki/Logic_measure_movement
                功能:设定机枪做被测量实体的相同运动,也就是“瞄准”
                Inputs:
                        SetMeasureTarget - 相当于设定了Entity to Measure的值

Ultimate 发表于 2015-9-22 22:43:24

本帖最后由 Ultimate 于 2015-9-23 13:30 编辑

机枪开火实体:
       ambient_generic https://developer.valvesoftware.com/wiki/Ambient_generic
                功能:启用/开火音效
                Outputs:
                        PlayerSound - 播放设定音效

      *env_muzzleflash https://developer.valvesoftware.com/wiki/Env_muzzleflash(不包含在CS起源默认FGD中)
                功能:创造类似HL2 SMG枪火特效
                Outputs:
                        OnUser1 - 这是一个自定义触发,用于当对该实体输入FireUser1时执行OnUser1触发事件
                Inputs:
                        Fire - 表示“开火”,即显示特效
                        FireUser1 - 执行指定实体的FireUser1输入,对应OnUser1触发事件

      *env_gunfire https://developer.valvesoftware.com/wiki/Env_gunfire(不包含在CS起源默认FGD中)
                功能:模拟AR2或SMG的子弹射击效果,无伤害
                Inputs:
                        Enable - 启动该实体
                        Disable - 禁用该实体
                        SetParent - 设置自身为另外一个实体的子实体

       env_sprite https://developer.valvesoftware.com/wiki/Env_sprite
                功能:辅助显示开火特效
                Inputs:
                        FireUser1 - 执行指定实体的FireUser1输入,对应OnUser1触发事件
                        ShowSprite - 显示sprite
                        HideSprite - 隐藏sprite
                Outputs:
                        OnUser1 - 这是一个自定义触发,用于当对该实体输入FireUser1时执行OnUser1触发事件

      env_spark https://developer.valvesoftware.com/wiki/Env_spark
                功能:作为子弹射击的目标/方向,替代了info_target,因为它有BUG

      game_ui https://developer.valvesoftware.com/wiki/Game_ui
                功能:控制方向/开火/激活
                Outputs:
                        PressedAttack - 当输入者执行+attack时(也就是当你按下鼠标左键/不放)
                        UnpressedAttack - 当输入者执行-attack时(也就是当你松开鼠标左键)
                        PlayerOn - 当输入者进入控制时(即输入者Activate的时候)
                        PlayerOff - 当输入者退出控制时(即输入者Deactivates的时候)

      logic_case https://developer.valvesoftware.com/wiki/Logic_case
                功能:启用伤害实体来造成伤害
                Inputs:
                        PickRandom - 强制触发预设Case中的任意一个,可被重复随即到同一个
                        SetParent - 设置自身为另外一个实体的子实体(这里由于Targetname小细节错误导致有了这一项Inputs,其实没有用处,可以无视)
                Outputs:
                        OnCase01
                        OnCase16 - 当触发Case 01-16 对应值时

      logic_relay https://developer.valvesoftware.com/wiki/Logic_relay
                功能:开火触发转发器,整合开火时需要进行的触发,便于分辨,不易混淆,十分有用。
                Inputs:
                        Trigger - 触发(即对应OnTrigger输出)
                Outputs:
                        OnTrigger - 当触发时(即Trigger被输入)

      logic_timer https://developer.valvesoftware.com/wiki/Logic_timer
                功能:开火/开火间隔设定。
                Inputs:
                        Enable - 启动该实体
                        Disable - 禁用该实体
                Outputs:
                        OnTimer - 当设定的时间到时

      trigger_hurt https://developer.valvesoftware.com/wiki/Trigger_hurt
                功能:子弹伤害
                Inputs:
                        Enable - 启动该实体
                        Disable - 禁用该实体
                        SetParent - 设置自身为另外一个实体的父实体

      trigger_push https://developer.valvesoftware.com/wiki/Trigger_push
                功能:子弹造成的小推动
                        Enable - 启动该实体
                        Disable - 禁用该实体

-------------------------------------------------------------------------

其他细节:
格式:执行实体→执行条件→执行目标→执行输出→可选参数→延迟
疑问:logic_auto→OnMapSpawn→AR2_firehurt*→SetParent→AR2_soild→0.02
解释:*号为通配符,模糊搜索匹配到的实体,对所有符合Targetname匹配的实体进行触发

疑问:func_button→OnPressed→!activator→AddOutput→targetname player_guncontrol→0.00
解释:!activator表示输入者,即当有一个实体对func_button执行了Press输入,那么对func_button输入Press的这个实体表示!activator。

addoutput输出可以修改指定实体的键值,或者添加一个新Outputs,用法见下。

修改键值格式:<key><vaule>
例子:targetname 233

Targetname可表示修改指定实体的名称,即Name,不是Classname,即Type。

豆奶 发表于 2015-9-23 00:03:08

擅自修改地图加机枪 会导致版权问题的吧{:32_795:}

不起眼的轧空 发表于 2015-9-23 00:08:47

这个让我想起了似乎逃跑图还没见过需要人类操纵炮台之类的图呢

软妹 发表于 2015-9-23 00:11:07

{:32_795:}虽然看不懂但是感觉好厉害的样子

kine 发表于 2015-9-23 00:24:30

666666

sjj00913 发表于 2015-9-23 06:08:36

{:27_146:}

疯狂的小孩 发表于 2015-9-23 06:24:02

撸主游戏里那调戏模式是怎么开的?(噢不,是调试{:32_795:})

synr6318 发表于 2015-9-23 11:56:20

{:28_200:}

2861873871 发表于 2015-9-23 12:14:37

哦3Q 我下了

是巨兔呀 发表于 2015-9-23 13:16:51

可以啊{:27_127:}

Ultimate 发表于 2015-9-23 18:18:48

豆奶 发表于 2015-9-23 00:03
擅自修改地图加机枪 会导致版权问题的吧

{:28_184:}

Ultimate 发表于 2015-9-23 18:19:33

不起眼的轧空 发表于 2015-9-23 00:08
这个让我想起了似乎逃跑图还没见过需要人类操纵炮台之类的图呢

自动化的还在学习

Ultimate 发表于 2015-9-23 18:22:27

疯狂的小孩 发表于 2015-9-23 06:24
撸主游戏里那调戏模式是怎么开的?(噢不,是调试)

developer 2   

飞武 发表于 2015-9-23 20:36:27

{:27_148:}顶

乐乐 发表于 2017-6-27 14:30:25

{:27_127:}
页: [1]
查看完整版本: 【地图实例教程】仿HL2的AR2固定机枪