在传奇gom引擎的脚本编写中,合理利用对象常量和变量是提升脚本灵活性和交互性的关键。本文将介绍如何在攻击触发等场景中,通过在变量前添加“C.”前缀来引用当前对象的常量和变量。
C.前缀的使用
在传奇gom引擎中,当前对象的大部分私有常量都可以通过在变量名前加上“C.”来引用。对于私有变量,则可以使用<$CSTR(S1)>和<$STR(S1)>这样的格式,其中CSTR表示当前对象的变量,而STR表示自己的变量。在攻击触发、被攻击触发、死亡触发以及查看出售角色信息等触发事件中,这种方式尤其有用。
当前对象的常量示例:
<$C.HP>:当前对象的血量
<$C.PKPOINT>:当前对象的PK值
<$C.GOLDCOUNT>:当前对象的元宝数量
<$C.GAMEGOLD>:当前对象的游戏金币
当前对象的变量示例:
<$CSTR(S1)>:当前对象的S1变量
<$CSTR(A1)>:当前对象的A1变量
<$CSTR(T1)>:当前对象的T1变量
<$CSTR(U1)>:当前对象的U1变量
魔法攻击触发示例
; 魔法攻击触发
[@MagicStruck]
#IF
CHECKCURRTARGETRACE = 0
#ACT
SENDMSG 6 你被人物【<$CURRRTARGETNAME>】攻击了。使用魔法ID=<$CURRRUSEMAGICID> 255 253
SENDMSG 6 你被人物【<$C.USERNAME>】攻击了。使用魔法ID=<$CURRRUSEMAGICID>。对方HP=<$C.HP>对方PK值=<$C.PKPOINT>对方元宝=<$C.GAMEGOLD> 255 253
BREAK
#IF
#ACT
SENDMSG 6 你被怪物【<$CURRRTARGETNAME>】攻击了。使用魔法ID=<$CURRRUSEMAGICID> 255 253
BREAK
Copy
物理攻击触发示例
; 物理攻击触发
[@Struck]
#IF
CHECKCURRTARGETRACE = 0
#ACT
SENDMSG 6 你被人物【<$CURRRTARGETNAME>】攻击了。使用魔法ID=<$CURRRUSEMAGICID> 255 253
BREAK
#IF
#ACT
SENDMSG 6 你被怪物【<$CURRRTARGETNAME>】攻击了。使用魔法ID=<$CURRRUSEMAGICID> 255 253
BREAK
[@Attack]
#IF
CHECKCURRTARGETRACE = 0
#ACT
MOV <$CSTR(S1)> <$STR(S1)>
SENDMSG 6 把我的S1变量值传递给攻击人的S1变量里,使用“CSTR”代表当前对象的变量比自己的“STR”前面多一个“C”
MOV <$STR(N1)> <$CSTR(N1)>
SENDMSG 6 把对方的N1变量值传递给我的N1变量里,使用“CSTR”代表当前对象的变量比自己的“STR”前面多一个“C”
SENDMSG 6 你攻击了人物【<$C.USERNAME>】。使用魔法ID=<$CURRRUSEMAGICID> 255 249
BREAK
#IF
#ACT
SENDMSG 6 你攻击了怪物【<$CURRRTARGETNAME>】。使用魔法ID=<$CURRRUSEMAGICID> 255 249
BREAK
当前对象的大部分私人的常量都可以使用在前面加“C.”的方式
当前对象的大部分私人的变量使用<$CSTR(S1)>和查看自己的变量<$STR(S1)>多一个“C”
比如在攻击触发,被攻击触发,死亡触发,还有查看出售角色的其他信息的触发时
当前对象的常量,例如:<$C.HP> <$C.PKPOINT> <$C.GOLDCOUNT> <$C.GAMEGOLD>
当前对象的变量,例如:<$CSTR(S1)> <$CSTR(A1)> <$CSTR(T1)> <$CSTR(U1)>
;大部分触发只有攻击到怪物才会触发,有些魔法不会触发,如魔法盾
;======================魔法攻击触发==========================
[@MagicStruck]
#IF
CHECKCURRTARGETRACE = 0
#ACT
SENDMSG 6 你被人物【<$CURRRTARGETNAME>】攻击了。使用魔法ID=<$CURRRUSEMAGICID> 255 253
SENDMSG 6 你被人物【<$C.USERNAME>】攻击了。使用魔法ID=<$CURRRUSEMAGICID>。对方HP=<$C.HP>对方PK值=<$C.PKPOINT>对方元宝=<$C.GAMEGOLD> 255 253
BREAK
#IF
#ACT
SENDMSG 6 你被怪物【<$CURRRTARGETNAME>】攻击了。使用魔法ID=<$CURRRUSEMAGICID> 255 253
BREAK
[@MagicAttack]
#IF
CHECKCURRTARGETRACE = 0
#ACT
SENDMSG 6 你攻击了人物【<$CURRRTARGETNAME>】。使用魔法ID=<$CURRRUSEMAGICID>。魔法攻击的鼠标指向的坐标【<$STR(N98)>:<$STR(N99)>】 255 249
SENDMSG 6 你攻击了人物【<$C.USERNAME>】。使用魔法ID=<$CURRRUSEMAGICID>。对方HP=<$C.HP>对方PK值=<$C.PKPOINT>对方元宝=<$C.GAMEGOLD> 255 249
BREAK
#IF
#ACT
SENDMSG 6 你攻击了怪物【<$CURRRTARGETNAME>】。使用魔法ID=<$CURRRUSEMAGICID> 255 249
BREAK
;======================物理攻击触发==========================
[@Struck]
#IF
CHECKCURRTARGETRACE = 0
#ACT
SENDMSG 6 你被人物【<$CURRRTARGETNAME>】攻击了。使用魔法ID=<$CURRRUSEMAGICID> 255 253
BREAK
#IF
#ACT
SENDMSG 6 你被怪物【<$CURRRTARGETNAME>】攻击了。使用魔法ID=<$CURRRUSEMAGICID> 255 253
BREAK
[@Attack]
#IF
CHECKCURRTARGETRACE = 0
#ACT
MOV <$CSTR(S1)> <$STR(S1)>
SENDMSG 6 把我的S1变量值传递给攻击人的S1变量里,使用“CSTR”代表当前对象的变量比自己的“STR”前面多一个“C”
MOV <$STR(N1)> <$CSTR(N1)>
SENDMSG 6 把对方的的N1变量值传递给我的的N1变量里,使用“CSTR”代表当前对象的变量比自己的“STR”前面多一个“C”
SENDMSG 6 你攻击了人物【<$C.USERNAME>】。使用魔法ID=<$CURRRUSEMAGICID> 255 249
BREAK
#IF
#ACT
SENDMSG 6 你攻击了怪物【<$CURRRTARGETNAME>】。使用魔法ID=<$CURRRUSEMAGICID> 255 249
BREAK