cs地图制作进阶实体应用偏方

社区服务
高级搜索
猴岛论坛CSGO反恐精英cs地图制作进阶实体应用偏方
发帖 回复
倒序阅读 最近浏览的帖子最近浏览的版块
1个回复

cs地图制作进阶实体应用偏方

楼层直达
fyxridd

ZxID:14192977

等级: 列兵
举报 只看楼主 使用道具 楼主   发表于: 2011-08-30 0
Cs地图制作进阶实体应用偏方
By 2021
fyxridd.ys168.com
注:本实体应用无原理无详细解释,测试不严谨,可能有bug,见谅。编译器请用vluzacn的最新版,下载地址在我网盘或vluzacn.ys168.com
以下如没说明,实体键值的设置都是默认。并且要注意的是实体如果用的复杂的话,名字不要弄冲突了。实体不理解的请参考x-man天书。以下部分用法可能参考他人。

几个实体名字
Game_playerjoin玩家加入游戏的时候引发
Game_playerleave玩家离开游戏的时候引发
Game_playerspawn玩家重生的时候引发
Game_playerkill玩家杀人的时候引发
Game_playerdie玩家死亡的时候引发
以上为实体的名字,当满足条件的时候就会触发有相应名称的实体


狙击镜准星显示
用game_text实体在屏幕中央显示英文的“ . ”,你就会发现屏幕中央出现了一个小点,可以用在练狙图上当辅助准星用。
如果要一直显示,那可以把game_text实体的淡入淡出时间设为0,保持时间设为1。建立trigger_auto实体,目标m1,引发方式为开。再建立multiple_manager实体,名称m1,点优化模式,加入键值text1变量1,加入键值m1变量1,勾上多线程。再建立game_text实体,名称text1,淡入淡出时间设为0,保持时间设为1,频道可以选频道4,勾上对所有玩家,其它自己设置。

防止地图被改名
新建一个env_shooter实体,然后在喷射的模型栏里填maps/xxx.bsp
其中xxx是你的地图名
如果地图被改名,就会出现
Fatal Error
Mod_NumForName:maps/xxx.bsp not found
除此之外不会对地图效果有任何影响.

设置玩家开始血量
建立点实体game_player_hurt,名称game_playerspawn,引发者受到的伤害填90
这样玩家一出生血就是10了

开局双方自动得武器
新建实体player_weaponstrip,名称game_playerspawn
新建实体multi_manager,名称game_playerspawn,点优化模式,加入键值giveall,变量0.05,勾上多线程
game_player_equip,名称giveall,勾上只能引发,武器自己选
这样不管上回合结束时你手里拿的是什么武器,都会在开局重生的时候手里拿上指定的武器.

注意:玩家重生点的地上最好不要有任何武器装备,不然可能出错,放稍远一点就没问题了,只要不让玩家一掉到地上就捡到地上的武器就行;这个方法会使双方都得到相同的武器,如果要要双方武器不同,那就只能用其它方法了.

杀人者死
建立点实体game_player_hurt,名称game_playerkill,引发者受到的伤害填10000
这样杀人的就会残酷地被肢解了

杀人加血
建立点实体game_player_hurt,名称game_playerkill,引发者受到的伤害填-50
这样杀人就会加血了。

杀人加子弹
建立点实体game_player_equip,名称game_playerkill,勾上只能引发,加什么子弹自己选。


有玩家进入服务器显示文字信息
建立点实体game_text,名称game_playerjoin,其它自己设置。

有玩家离开服务器显示文字信息
建立点实体game_text,名称game_playerleave,其它自己设置。

死后显示文字信息
建立点实体game_text,名称game_playerdie,其它自己设置。
可以制作死后显示作者qq,网站等

每一段时间自动得子弹
建立点实体multiple_manager,名称game_playerjoin,勾上多线程,加入键值get变量0
建立点实体multiple_manager,名称get,勾上多线程,加入键值get变量10,键值get2变量10
建立点实体game_player_equip,名称get2,勾上只能引发,把你想加的子弹勾上(注意不要勾上木仓,不然会出错)
好了,现在玩家每10秒就会加一次子弹了。
每一段时间自动得武器
建立点实体multiple_manager,名称game_playerjoin,勾上多线程,加入键值getgun变量0
建立点实体multiple_manager,名称getgun,勾上多线程,加入键值getgun变量30,键值out变量29.95,键值getgun2变量30
建立点实体
建立点实体player_weaponstrip,名称out
建立点实体game_player_equip,名称getgun2,勾上只能引发,把你想得到的武器装备都勾上

玩家无法捡武器的方法
弄一个大方块包住整个地图(注意上面与天空sky之间要留有一定的空间,或者最好在天空的下面紧贴天空的地方弄一层透明的func_wall),转换为trigger_push,方向向上,推力大于等于800,再把那个不与玩家碰撞的选项选上是
这样掉在外面的武器就没人可以捡到了,僵尸图的制作中可以用到。
按开关得武器
放一个func_button,目标weapon,其它自己设置
建立一个点实体multiple_manager,名称weapon,勾上多线程,加入键值out变量0,加入键值weapon2变量0.05
建立一个点实体player_weaponstrip,名称out
建立一个点实体game_player_equip,名称weapon2,勾上只能引发,武器自己设置

按开关加血
放一个func_button,目标jia,其它自己设置
建立一个点实体game_player_hurt,名称jia,引发者受到的伤害填-50
不过血最多100

武器攻击开关加血
放一个func_button,目标jia,通过武器攻击引发选是,其它自己设置
建立一个点实体game_player_hurt,名称jia,引发者受到的伤害填-50
不过血最多100

伪随机效果
比如你要玩家按一个开关,随机引发不同的目标,比如,我这此按一下,引发了a,下次再按一次,引发的却是b,然而你不想引发是有规律的,比如引发一下a,再引发是b,再引发又是a,再引发又是b,你不想这么有规律,希望更加地随机一些.
方法很简单,你在地图里放上一个或一些trigger_multiple固体实体,目标是trigger_changetarget点实体,这个trigger_changetarget把开关的目标值改为a,再放一个或一些trigger_multiple固体实体,目标是另一个trigger_changetarget点实体,而这个trigger_changetarget则是把开关的目标值改为b,这样由于玩家随机在地图上走动,就会使开关的目标值随机地变化了.
trigger_multiple越多,复位前延时越短,随机效果就越显著.
当然,这个方法有个限制就是实体要有个目标值来使trigger_changetarget可以改变;如果没有,那有时可以加个中继实体trigger_relay.

按一个开关处死全部T
在ct与t出生点下面各放trigger_multiple固体实体。ct下面的trigger_multiple目标都填ct,引发前延时1。t下面的trigger_multiple目标都填t,引发前延时1。注意:trigger_multiple的放置要确保玩家只能开始时引发一次,游戏过程中无法引发到。可以采取把trigger_multiple放在高空的做法,也可以用传送的方法。并且每个出生点下面都要放。
建立点实体multiple_manager,名称ct,勾上多线程,加入键值ct2变量1
建立点实体multiple_manager,名称t,勾上多线程,加入键值t2变量1
建立点实体game_counter_set,名称ct2,目标ct新值0
建立点实体game_counter_set,名称t2,目标t新值0
建立点实体game_player_hurt,名称hurt,受到伤害10000
放个开关func_button,目标c1,其它自己设置
建立点实体trigger_changetarget,名称c1,目标ct2,新目标hurt
放个开关func_button,目标c2,其它自己设置
建立点实体trigger_changetarget,名称c2,目标t2,新目标hurt
在地图玩家所碰不到的地方比如墙里放个func_door,目标填reset
建立点实体trigger_changetarget,名称reset,目标ct2,新目标ct
建立点实体trigger_changetarget,名称reset,目标t2,新目标t
这样,按那个目标是c1的开关ct全部死亡,按那个目标是c2的开关t全部死亡。

实现开与关任何实体
用trigger_relay控制func_wall_toggle固体实体,你会发现引发为开那这个固体实体就出现,引发为关这个固体实体就消失;用trigger_relay控制trigger_push你会发现不管你引发为开或关或锁定,你引发一次,它就会在开与关之间切换一次,再引发,它就会再切换,也就是说它的开与关与它的初始状态与你引发的次数有关,而与trigger_relay的引发状态无关.
那么哪些实体是属于前者,哪些是属于后者,你可能不清楚,不过以下的方法可实现任何实体的开与关.
实现的原理是这样的:玩家引发一下后就用trigger_changetarget把两个trigger_relay的目标值改了,这样再次引发相同状态就无效,只有引发不同的状态才有效.

首先你需要确定的是这个实体只有两种状态,你将其中一种状态定为开,另一种状态定为关,并保证实体在引发前的初始状态是关.
具体实现:
trigger_relay,名称a1,目标a2,引发为开
trigger_relay,名称a2,目标t,引发为开
trigger_changetarget,名称a2,目标a1,新目标none
trigger_changetarget,名称a2,目标a3,新目标a4
trigger_relay,名称a3,目标none,引发为开
trigger_relay,名称a4,目标t,引发为关
trigger_changetarget,名称a4,目标a3,新目标none
trigger_changetarget,名称a4,目标a1,新目标a2
注:地图中不能有名称为none的实体;
建立这些实体后,使用方法为:用a1来开名称为t的实体,用a2来关名称为t的实体
比如,你在一个func_button的目标栏上填上a1,那么引发这个button就会打开名称为t的实体.

计时器制作
Func_door,弄小点,放在地图某个墙的里面,只要不要让玩家可以触发到就行,目标填m1,其它不用改
multi_manager,名称m1,勾上多线程,点优化模式,加入键值cs变量0.01(这样这个地图里每局重新开始的时候就会引发启动m1一次,如果还有其它实体需要在每局开始的时候引发就在这个multi_manager里自己添加)
game_counter_set,名称cs,目标jishi,新值0
trigger_auto,目标m2,引发方式开
multi_manager,名称m2,勾上多线程,点优化模式,加入 键值jishi变量1,键值m2变量1
game_counter,名称jishi,目标自己填,初始值0,限定值自己填
这样在每局开始的时候计时器就会重新计数,并且每个game_counter的目标只会在一局内引发零次或一次
比如你要在每局开始10秒钟后引发一个game_text,就可以在game_counter目标里填上game_text的名称,限定值填10.如果你还要在60秒种后再引发另一个game_text,方法也很简单,把上面那个game_counter实体复制一份,然后只需改目标与限定值就可以了,以此类推.

注:multi_manager里加入的键值的变量最大不要超过1秒,这样可以防止意外,因为multi_manager开启的线程是不会结束的,即使新的一局开始.而这样就可能与你的原意相反,比如你想要在每一局开始10秒钟后引发一个实体,于是你在multi_manager里加入一个键值,变量设为10,每局开始的时候触发一下这个multi_manager实体,这样比如一局开始了,5秒钟后如果又重新开局,那在这新的一局的第5秒与第10秒都会触发那个实体一次,如果这不是你想要看到的,那就采取上面的计时器方法吧.
另外,cs里时间精确度是0.01秒

去你大爷!

ZxID:5469089

等级: 元老

举报 只看该作者 沙发   发表于: 2011-08-31 0
都还不错
« 返回列表
发帖 回复