【教程】求生之路2随机颜色警报车原理详解
求生之路地图制作吧
全部回复
仅看楼主
level 10
眸子- 楼主
镇楼

2017年07月10日 14点07分 1
level 10
眸子- 楼主
源文件请到q群下载,求生汽车警报或【实例】官方给出的教学vmf中有
prop_car_alarm.vmf,路径记得改成中文的。
看此教程最好有一定输出输入基础。
如有错误,请予指出。
需要用到的实体列表。
logic_auto
logic_case
logic_branch
logic_relay
env_entity_maker
point_template
logic_timer
ambient_generic
info_remarkable
info_game_event_proxy
prop_car_alarm
beam_spotlight灯光
env_sprite灯光
2017年07月10日 14点07分 2
打住,还有一个prop_car_glass
2017年08月09日 02点08分
level 10
眸子- 楼主
先来看看随机颜色是怎么做到的。
首先看到截图第三行右边那个红色的logic_auto实体。
在实体输出中可看到,一旦地图产生,就让那个叫case_car_color的logic_case实体pick_random,即让它随机产生一个输出,
即oncaseXX,XX即为随机事件编号,参考属性框。
注意logic_case的class info中,case 01的值是1,case02的值是2,以此类推。
输出中,必须要先建立case输出才能随机选。在此实例中,随机的是颜色,参数parameter中一栏中是颜色的RGB数值。
随机颜色的汽车?随机颜色的灯?随机颜色的楼房?改成kill输入做随机路线的地图?有了随机果然好干事
2017年07月10日 14点07分 6
level 10
眸子- 楼主
然后是较为复杂的警报车原理。可能有误,希望予以指正。
注意打开源文件,在主视图中,两个白色正方体实体分别藏了两个实体,把它们移出来就好。
还要注意实体输出输入中enable可用和trigger触发的区别,可用才能触发,不可用就触发不了。
第一步、先从logic_branch说起吧。就是截图中最上面那个
说明:可以使用该实体来区分一个事件的两种情况、
这个实体要用到boolean值,即on对应ture或1,并且off对应false或0。这个可在开发者网站查到。虽然听起来名字很玄乎,但其实很简单。对于这个实体不懂的可翻看陆大大地图设计艺术的实体源文件附件。
在此实体的class info界面可以看到Initial value的值为$start_off,对应false和0,再看inputs输入面板,有个logic_auto会在地图产生时检测它的boolean值,由于初始值为off,又没有其它的输入输出改变它,所以它的值在这个实例中不变。这个测试同时会触发它的onture或onfalse输出,所以再来看输出面板。
可以看到onfalse时,有个叫relay_caralarm_on的logic_relay被触发,这便是用来使警报汽车处于可用状态的实体。
这实体越说越用得玄乎。实际上用1和0管理很方便的。以后会慢慢明白的。
2017年07月10日 14点07分 7
level 10
眸子- 楼主
第二步、再看看那个叫relay_caralarm_on的logic_relay的实体。即截图第二层那两个中的一个。
这类实体是专门写输入输出的。
两个logic_relay是不同的,一个是用来启用警报的,一个是禁用警报的。
================
这个实体被触发后立即使叫caralarm_car1的prop_car_alarm实体,这便是警报车实体,警报汽车处于可用状态,就静静的躺在那里等着哪个幸存者把警报弄响。
===============
同时启用叫caralarm_glass1的prop_car_glass,禁用叫caralarm_glass1_off的prop_car_glass。
注意前者是models\props_vehicles\cara_95sedan_glass_alarm.mdl,可以闪烁橘黄色的光芒,而后者是models\props_vehicles\cara_95sedan_glass.mdl,只是普通的玻璃。恩,小心假冒伪劣产品。
===============
接着又触发一个叫maker_alarm_on的env_entity_maker,第二层那个白正方体。
这个env_entity_maker实体被触发后0.01秒又强制那个叫ptemplate_alarm_on的point_template产生模板。
产生的模板有两个,一个是叫caralarm_game_event的info_game_event_proxy,这个实体是用来触发事件的。开发者网站教程中用它来产生事件。不懂point_template可以参考本吧制作饮料机教程贴或地图设计艺术的实体源文件。这实体用着很好的。
=================
这个令人头疼的info_game_event_proxy,它的Name of the event to generate的脚本可在\Left 4 Dead 2\left4dead2\pak01_dir.vpk/
scripts/instructor_lessons.txt中找到,不过你得先得用提取vpk的工具gcfscape把pak01_dir.vpk提取了。不过我并不知道这个怎么用,怎么触发,希望有知道的伙伴能解答一下。
================
另一个叫remark_caralarm的info_remarkable,也是个白色正方体。是让幸存者们产生情景对话的实体,这个实体的subject context对话文本可在Left 4 Dead 2\left4dead2\pak01_dir.vpk/scripts\talker中找到,具体设置看开发者网站https://developer.valvesoftware.com/wiki/Info_remarkable
===============
此logic_relay输入输出上还写着它触发后0.02秒就把自己给禁用了,同时把另一个叫relay_caralarm_off的logic_relay的实体启用。
2017年07月10日 14点07分 8
level 10
眸子- 楼主
游戏中贴图就不发了,毕竟大家记得得打响警报车后自己一脸无辜的样子。
然后就是本文的主角。警报车!!!
这是一款名叫caralarm_car1的prop_car_alarm!!!有自动报警装置!
这个警报车的输入输入输出不怎么复杂。声音和灯光的输入输出就不说了。
当你靠近它时,触发OnCarAlarmChirpStart,车辆会通过ambient_generic,也就是那个喇叭,播放两声滴滴的声音警告幸存者,并且让四个env_sprite,就是那四个小正方体闪光!然后自动触发OnCarAlarmChirpEnd使它们停止闪光。如果不幸碰到了警报车,触发OnCarAlarmStart,启用那个叫alarmtimer1的logic_timer控制车辆闪光,播放持续不断的报警声,并且禁用闪光的玻璃,启用普通的玻璃。同时触发尸潮,连导演实体都不用。编译后在游戏中可以看到。由于没设置nav,左上方的(MOB) 97.43: MOB SPAWN ERROR: ANYWHERE = Empty spawn area set飚的飞起。
警报响了一阵后,触发OnCarAlarmEnd,然后停止播放警报声,关灯,触发叫relay_caralarm_off的logic_relay实体。顺便kill了那个info_game_event_proxy和info_remarkable。这时这辆警报车完成了召唤尸潮的使命后便成为了一块废铁。只不过它还能被tank再扔起来。蜂鸣器也因这个OnCarAlarmEnd而不能再次使用。
2017年07月10日 14点07分 9
level 10
眸子- 楼主
Logic_timer
计时器,用来重复触发事件。
这里的输入输出用处是控制所有车灯的,警报开始时启用,负责在车辆发出警报后控制车灯闪烁,警报结束后禁用。
由参数可见0.75秒循环一次,即亮起0.5秒,关闭0.25秒。
2017年07月10日 14点07分 10
level 10
眸子- 楼主
再回到relay_caralarm_off,那个relay_caralarm_on被触发后0.02秒就被启用的logic_relay实体。
在inputs中可以看到,当警报车触发警报且警报停止后,这个实体就会被触发。
看输入输出,这个实体触发后,禁用警报车,kill了那个info_game_event_proxy和info_remarkable,关灯,禁用闪光的玻璃,启用普通的玻璃。不过再过0.02秒就会重新启用relay_caralarm_on,禁用自己。
不过这时因为关键的实体不是被禁用就是被删除了,而且貌似由于prop_car_alarm的性质,警报不能再被触发了。
也许你会觉得这个实体和警报车的部分输出不是一样的吗,何必多次一举?
但是这样做在管理上更方便,要添加其它输出输入是也很方便。
当然如果地图并不复杂的话,也就没有必要这样了。
========================================================
至此,教程完。
2017年07月10日 14点07分 11
level 10
眸子- 楼主
补图。前者是info_remarkable相关,蓝色标记出的就是subject context的值。
后者和info_game_event_proxy有关,我不知道这个怎么用,但可以看到图片中open下面的explain_disturbance就是Name of the event to generate的值。
2017年07月10日 14点07分 12
level 3
学习学习
2017年07月10日 15点07分 13
level 1
http://pan.baidu.com/mbox/homepage?short=pLPBNwJ 要是链接失效,复制到别的帖子里再点开就好了!
2017年07月10日 15点07分 14
什么东西?不回复就删了
2017年07月10日 15点07分
回复 疾梭微痕◆ :失效的资源
2017年07月10日 15点07分
level 10
眸子- 楼主
原来可远观而不可亵玩的警报车终于变成了一堆废铜烂铁。
但你以为这就完了?
还记得那个像游戏杆的point_template不?
把它用在山地上,做滚下来的石头多好啊,滚石阵?
对了这玩意还能为炮台做子弹模板用。
做购买东西的模板用。
控制幸存者说话的info_remarkable?
让幸存者没空喊几句tank多好啊,增加一下气氛嘛。
Logic_timer控制灯光闪烁?
这玩意还能强制刷尸潮。
做个随机时间控制灯开关,便可做出颤栗深林那种忽亮忽不亮的恐怖灯光效果。
让门自动打开关闭,还不得把幸存者吓跑?
控制随机的logic_case?恩,发挥你的创造力吧!!!
====================================================
求生之路造物主,尊属于你的创世梦想!
疾梭微痕
17/7/10
2017年07月10日 15点07分 15
level 1
***!!!!!!
2017年07月10日 16点07分 16
level 13
[呵呵]前排
围观
2017年07月12日 02点07分 17
1