解析吸烟cleo
在GTASA里,一些帮派成员或者路人会抽烟,装上cleo合集的抽烟cleo,cj也可以抽烟。但你想要抽烟加血,并且烟会慢慢烧完,该怎么实现呢?下面我来解析下我的吸烟cleo。
下面请看语句:
:SMOKE_1
0001: wait 0
00D6: if
Player.Defined($PLAYER_CHAR)
jf @SMOKE_1
jump @SMOKE_2
:SMOKE_2
0001: wait 0
00D6: if
not Actor.Driving($PLAYER_ACTOR)
jf @SMOKE_1
jump @SMOKE_3
:SMOKE_3
0001: wait 0
00D6: if
not Actor.Dead($PLAYER_ACTOR)
jf @SMOKE_1
jump @SMOKE_4
:SMOKE_4
0001: wait 0
if
02D8: actor $PLAYER_ACTOR current_weapon == 0
jf @SMOKE_1
jump @SMOKE_5
:SMOKE_5
0001: wait 0
if
0ADC: test_cheat "SMOKE"
jf @SMOKE_1
jump @SMOKE_6
:SMOKE_6
wait 0
029B: 1@ = init_object 3044 at 0.0 0.0 0.0
070A: AS_actor $PLAYER_ACTOR attach_to_object 1@ offset 0.04 0.1 0.05 on_bone 6 16 perform_animation "NULL" IFP_file "NULL" time -1
10@ = 0
jump @SMOKE_7
:SMOKE_7
wait 0
04ED: load_animation "GANGS"
:SMOKE_8
0001: wait 0
00D6: if
04EE: animation "GANGS" loaded
jf @SMOKE_7
jump @SMOKE_9
:SMOKE_9
0001: wait 0
10@ += 1
if
0AB0: key_pressed 2
jf @SMOKE_11
jump @SMOKE_10
:SMOKE_10
wait 0
0605: actor $PLAYER_ACTOR perform_animation "SMKCIG_PRTL" IFP "GANGS" framedelta 4.0 loop 0 lockX 0 lockY 0 lockF 0 time 2000
10@ += 100
0001: wait 900
0669: 2@ = attach_particle "EXHALE" to_actor $PLAYER_ACTOR with_offset 0.05 0.0 -0.05 type 2
0883: attach_particle 2@ to_actor $PLAYER_ACTOR mode 5
064C: make_particle 2@ visible
$HEALTH = Actor.Health($PLAYER_ACTOR)
$HEALTH += 10
Actor.Health($PLAYER_ACTOR) = $HEALTH
0001: wait 1000
0650: destroy_particle 2@
0001: wait 1000
jump @SMOKE_9
:SMOKE_11
0001: wait 0
if
0AB0: key_pressed 70
jf @SMOKE_13
jump @SMOKE_12
:SMOKE_12
wait 0
0108: destroy_object 1@
jump @SMOKE_1
:SMOKE_13
wait 0
if
10@ > 1000
jf @SMOKE_9
jump @SMOKE_12
好了,这个语句组就可以实现烟会自己烧完了,我来给你们一句句讲解下
:SMOKE_1
0001: wait 0
00D6: if
Player.Defined($PLAYER_CHAR)
jf @SMOKE_1
jump @SMOKE_2
:SMOKE_2
0001: wait 0
00D6: if
not Actor.Driving($PLAYER_ACTOR)
jf @SMOKE_1
jump @SMOKE_3
:SMOKE_3
0001: wait 0
00D6: if
not Actor.Dead($PLAYER_ACTOR)
jf @SMOKE_1
jump @SMOKE_4
:SMOKE_4
0001: wait 0
if
02D8: actor $PLAYER_ACTOR current_weapon == 0
jf @SMOKE_1
jump @SMOKE_5
:SMOKE_5
0001: wait 0
if
0ADC: test_cheat "SMOKE"
jf @SMOKE_1
jump @SMOKE_6
这几句是判定,当cj未死亡,不在车里,空手并且输入作弊代码"smoke"时跳转到标签smoke_6
我只是用多了几个标签,方便修改而已。你们也可以用if and
:SMOKE_6
wait 0
029B: 1@ = init_object 3044 at 0.0 0.0 0.0
070A: AS_actor $PLAYER_ACTOR attach_to_object 1@ offset 0.04 0.1 0.05 on_bone 6 16 perform_animation "NULL" IFP_file "NULL" time -1
10@ = 0
jump @SMOKE_7
这句的意思是把obj id3044存储为 1@
然后把obj 1@ 绑在cj右手上。
10@这个变量很重要,等下要用上。
2楼继续发...
:SMOKE_7
wait 0
04ED: load_animation "GANGS"
:SMOKE_8
0001: wait 0
00D6: if
04EE: animation "GANGS" loaded
jf @SMOKE_7
jump @SMOKE_9
这个是加载动作"gangs"
标签8是判定动作是否加载完成,如没完成则跳转到标签7.
:SMOKE_9
0001: wait 0
10@ += 1 10@加1
if
0AB0: key_pressed 2 判定按下鼠标右键
jf @SMOKE_11
jump @SMOKE_10
:SMOKE_10
wait 0
0605: actor $PLAYER_ACTOR perform_animation "SMKCIG_PRTL" IFP "GANGS" framedelta 4.0 loop 0 lockX 0 lockY 0 lockF 0 time 2000动作
10@ += 100 10@加100
0001: wait 900
0669: 2@ = attach_particle "EXHALE" to_actor $PLAYER_ACTOR with_offset 0.05 0.0 -0.05 type 2 特效
0883: attach_particle 2@ to_actor $PLAYER_ACTOR mode 5
064C: make_particle 2@ visible
$HEALTH = Actor.Health($PLAYER_ACTOR)
$HEALTH += 10 加血
Actor.Health($PLAYER_ACTOR) = $HEALTH
0001: wait 1000
0650: destroy_particle 2@ 删除特效
0001: wait 1000
jump @SMOKE_9
:SMOKE_11
0001: wait 0
if
0AB0: key_pressed 70 判定按下F
jf @SMOKE_13
jump @SMOKE_12
:SMOKE_12
wait 0
0108: destroy_object 1@ 删除香烟obj
jump @SMOKE_1
:SMOKE_13
wait 0
if
10@ > 1000
jf @SMOKE_9
jump @SMOKE_12
那么10@有什么用呢? 10@是用来限制时间的。
开始10@ = 0
然后判定按键的时候不断的跳转,10@ += 1
10@ += 1会消耗一点时间,并且可以不断跳转判定按键,
所以到后面加个判定当10@ > 1000时
删除香烟obj,跳转到标签1(香烟烧完)
所以,你如果要修改香烟燃烧的时间,可以修改10@ > 1000
10@ += 100 也是同一个道理。
假如拿着香烟过了一小段时间,10@ = 1时
抽10口烟
100×10 = 1000
1000+1= 1001>1000
香烟就会被抽完了。
{:6_154:}
表示多个 触发条件(判定)可以使用
if and 放在一起,减少不必要的 标签 萌え系爱 发表于 2015-8-2 14:31
表示多个 触发条件(判定)可以使用
if and 放在一起,减少不必要的 标签
我怕以后会加上什么其他判定元素,为了避免麻烦弄多几个标签 {:5_137:}斯国一 {:7_199:}捉到楼主大神一枚, {:5_136:}力顶技术贴! 自己看懂了
不过我想提俩问题
制作特效的语句attach_particle "EXHALE"这个特效名称是在Effect.fxp中的吗?
SMKCIG_PRTL" IFP "GANGS这个IFP前面的是动画名还是后面的是动画名 SunshineME 发表于 2015-8-2 16:19
自己看懂了
不过我想提俩问题
制作特效的语句attach_particle "EXHALE"这个特效名称是在Effect.fxp中的吗 ...
EXHALE可以在fxp里搜到,SMKCIG_PRTL是GANGS.ifp内的一个动画(一个ifp文件内可有多个动画) 用32@或33@代替10@计时,这两个变量自动每秒增加1000
页:
[1]