V's Joker

Remember remember the chaos and smile

常用触发标签

QF常用触发


启动服务器时触发

1
2
3
4
[@_Startup]
#IF
#ACT
;触发脚本内容

人物登录游戏时触发

1
2
3
4
[@_Login]
#IF
#ACT
;触发脚本内容

使用道具物品时触发

1
2
3
[@_USEITEM(物品IDX)]
#ACT
;触发脚本内容

礼包类物品使用,如单次使用物品请配合收走物品命令(TAKEITEMIDX 物品IDX 1),否则物品使用完不会消失


人物升级时触发

1
2
3
4
[@_LevelUp]
#IF
#ACT
;触发脚本内容

被怪物杀死时触发

1
2
3
4
[@_PlayerDie]
#IF
#ACT
;触发脚本内容

被人物杀死时触发

1
2
3
4
[@_PlayKill]
#IF
#ACT
;触发脚本内容

相关命令:<$LASTKILLMEPLAYNAME> - 杀人者名字


怪物死亡时触发

1
2
3
4
[@_MonDie]
#IF
#ACT
TopMessage "当前杀死的怪物编号是:【<$LastKillMon>】" FALSE

个人每天0点在线触发

1
2
3
4
[@_DayChange]
#IF
#ACT
;触发脚本内容

分解装备触发

1
2
3
4
[@_DeCompose(99900002)]
#IF
#ACT
;触发脚本内容

重铸武器触发

1
2
3
4
[@_OnItemRestore(1)]
#IF
#ACT
TopMessage "重铸武器触发了" FALSE

脚本变量使用

常用变量和运算


游戏常量

变量名称 说明
<$USERNAME> 角色名称
<$GUILDNAME> 行会名称
<$GUILDLV> 行会等级
<$CLASS> 角色职业
<$LEVEL> 当前等级
<$HP> 当前生命值
<$MP> 当前魔法值
<$MAXHP> 生命值上限
<$MAXMP> 魔法值上限
<$PKPOINT> 当前PK值
<$GOLD> 金币数量
<$GAMEGOLD> 元宝数量
<$SILVER> 银币数量
<$PAYMENTDAY> 今日充值金额 24点后清零
<$PAYMENT> 累计充值金额
<$ACCOUNT> 人物帐号
<$PCODE> 推广码
<$DC> 最小攻击
<$MAXDC> 最大攻击
<$MC> 最小魔法
<$MAXMC> 最大魔法
<$SC> 最小道术
<$MAXSC> 最大道术
<$ASC> 最小刺术
<$MAXASC> 最大刺术
<$ARC> 最小弓术
<$MAXARC> 最大弓术
<$AC> 最小防御
<$MAXAC> 最大防御
<$MAC> 最小魔防
<$MAXMAC> 最大魔防
<$LUCK> 幸运等级
<$HIT> 物理准确
<$HITMC> 魔法命中
<$SPD> 物理敏捷
<$BLASTATT> 暴击概率
<$BLASTATTDAM> 暴击伤害
<$BLASTATTDEC> 减暴击
<$BLASTATTDAMDEC> 减暴伤
<$ANTIMAGIC> 魔法闪避
<$ANTIPOISON> 中毒躲避
<$ATTACTSPEED> 攻击速度
<$HOLYDM> 最小圣伤
<$MAXHOLYDAM> 最大圣伤
<$BREAKAC> 破物防
<$BREAKMAC> 破魔防
<$DCHITHP> 物理击回
<$MCHITHP> 魔法击回
<$POWERRATE> 伤害加成
<$POWER> 当前战力
<$DAYPOINT> 日程进度
<$BAGSIZE> 背包大小
<$DOUBLEEXP> 双倍经验
<$SCRIPTDROPRATE> 脚本爆率倍数
<$EXP> 当前经验
<$MAPMONCNT()> 地图怪物数量(地图编号)
<$MONCNT()> 地图指定怪物数量(地图编号,怪物名字)
<$MAP> 地图编号
<$X_COORD> 当前坐标X
<$Y_COORD> 当前坐标Y
<$LASTKILLMON> 最后杀死的怪物编号
<$LASTKILLMEPLAYNAME> 最后杀死自己的玩家名字
<$LASTKILLPLAYNAME> 最后杀死的玩家名字
<$ITEMNAME()> 物品名字(物品id)
<$ITEMVALUE()> 获取物品指定属性
<$VIP> 本期特权
<$MARFADAY> 玛法特权剩余天数
<$MARFADAY()> 剩余玛法特权(特权编号)
<$TITLE> 当前称号
<$PPOINT> 推广点
<$TALENTLV()> 天赋等级(天赋编号)
<$PHYSIQUE> 开通龙卫觉醒,开通返回1,否则0
<$AWAKE> 开启觉醒面板,开通返回1,否则0
<$CURDATE> 当前时间日期部分,时间为00:00:00
<$UTCNOW> 当前时间10位UTC时间戳
<$USERCOUNT> 玩家数量
<$VERSION> 开区节点
<$DATE> 当前时间日期部分
<$YEAR> 年份
<$MONTH> 月份
<$WEEK> 星期几
<$DAY>
<$HOUR> 小时
<$MINUTE> 分钟
<$SECOND>
<$VARSORTNAME()> 变量按名排序(1,U变量,名次)
<$VARSORTVALUE()> 变量按值排序(1,U变量,名次)
<$VARSORTIDX()> 变量按IDX排序(1,U变量);你的U变量当前排名
<$SPECIALREPAIRALLCOST> 全身特修费用
<$ItemValue(0,装备位置,装备属性)> 获取身上装备指定属性,装备属性表查看装备属性表
<$CASTLEGUILD> 沙巴克行会变量
<$CASTLELORD> 沙巴克城主变量
<$TITLE> 当前佩戴的称号编号

常用脚本变量

  • G0-G任意数字 (全局变量,数字型) 可保存。(存放在数据库里,清据数据时清零)
  • A0-A任意数字 (全局变量,字符型) 可保存。(存放在数据库里,清据数据时清空)
  • N0-N任意数字 (私人变量,数字型) 下线不保存.小退归0.
  • S0-S任意数字 (私人变量,字符型) 下线不保存.小退归0.
  • U0-U任意数字 (私人变量,数字型) 可保存。(存放在人物数据里面)
  • T0-T任意数字 (私人变量,字符型) 可保存。(存放在人物数据里面)
  • J0-J任意数字 (私人变量,数字型) 可保存,每天0点自动清零。(存放在人物数据里面)
  • Q0-Q任意数字 (私人变量,数字型) 关闭对话框重置为0。

变量显示格式<$STR(G0)><$STR(A0)><$STR(N0)>


变量检测与运算

检测变量

1
CheckCalc 检测值 检测符(> < == !=) 对比值或字符

比较符号

  • 大于:>
  • 小于:<
  • 等于:==
  • 不等于:!=

示例

1
2
3
4
5
6
7
[@MAIN]
#IF
CheckCalc N1 == 100
#SAY
提示:当前N1变量等于100。
#ELSESAY
提示:当前N1变量不等于100。

赋值变量

1
MOV 变量名 值

示例

1
2
3
4
[@MAIN]
#IF
#ACT
MOV N1 100

将N1赋值等于100。


变量运算

1
Calc 运算符(+ - * /) 运算值

运算符

  • 加:+
  • 减:-
  • 乘:*
  • 除:/

示例

1
2
3
4
5
[@MAIN]
#IF
#ACT
MOV N1 1
Calc N1 + 1

赋值N1等于1 然后加1结果就会等于2


Copyright © 2019. All rights reserved.

常用命令写法

常用脚本命令详解


[@段] - 段用数字表示

goto @段 - 跳转到指定段

#say 语句 - 语句设定为字符,不用加任何定界符,<BR>为换行符

#act - 执行命令

MOVE 地图ID 坐标X 坐标Y - 移动到这个地图的指定坐标点

BREAK - 中断脚本

<BR> - 对话框内容换行

小丑传奇引擎脚本教程(一):入门基础与环境配置

“掌握脚本开发,让你的传奇世界更加精彩!”

欢迎来到小丑传奇引擎脚本开发系列教程!本系列将带你从零开始,逐步掌握传奇引擎脚本的开发技巧。无论你是游戏开发新手还是想要深入了解传奇脚本系统的开发者,这个系列都将为你提供全面而实用的指导。

阅读全文 »

脚本入门说明

一、关于NPC内容调用

引擎目前脚本支持两种写法(lua写法和TXT写法)

lua脚本路径:Database\System\lua\Npc\NpcFace

TXT脚本路径:Database\System\Envir\NPCs


调用写法目录:Database\System\Npc数据\守卫数据

例:lua写法调用

1
2
3
4
5
6
{
"守卫编号": 874,
"守卫等级": 1,
"守卫名字": "钱多多01",
"触发lua": true
}

例:TXT写法调用

1
2
3
4
5
{
"守卫编号": 874,
"守卫等级": 1,
"守卫名字": "钱多多01"
}

二、NPC基础写法(TXT)


例:输出对话框

1
2
3
4
5
6
7
[@MAIN]
#IF
level < 10
#SAY
你的等级小于10级!
#ELSESAY
你的等级不小于10级!

例:
对话框换行

1
2
3
4
5
6
7
[@MAIN]
#IF
level < 10
#SAY
你的等级小于10级!<BR>先去升升级吧!
#ELSESAY
你的等级不小于10级!

例:执行功能

1
2
3
4
5
6
#IF
level < 10
#ACT
TopMessage "你当前等级小于10级" FALSE
#ELSEACT
TopMessage "你当前等级不小于10级" FALSE

例:对话框按钮执行脚本

1
2
3
4
5
6
7
8
9
10
[@MAIN]
#IF
#SAY
你好,有什么可以帮你?<#SO:1>我要金币<#SO/>

[@1]
#IF
#ACT
GiveGold 100
TopMessage "你获得100金币" FALSE

<#SO:1>按钮名字<#SO/> - <#SO:1>数字1代表按钮的触发标签,以<#SO/>结尾


例:多级跳转界面

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
[@MAIN]
#IF
#SAY
你好,有什么可以帮你?<#SO:1>我要金币<#SO/>

[@1]
#IF
#SAY
请问我为什么要给你金币?<#SO:1>因为我长得帅<#SO/>

[@1_1]
#IF
#SAY
长得帅就可以为所欲为?<#SO:1>求求你给我点吧<#SO/><#SO:2>不给就算了<#SO/>

[@1_1_1]
#IF
#ACT
GiveGold 100
TopMessage "好吧,我给你100金币吧" FALSE
BREAK

[@1_1_2]
#IF
#ACT
TopMessage "没爱了,不强求了" FALSE
BREAK

如果使用按钮跳转到下一个界面时,触发处就得每一级多加_加当前数字


例:多条件判断中断

1
2
3
4
5
6
7
8
9
10
11
#IF
level > 10
#ACT
TopMessage "你当前等级大于10级" FALSE
BREAK

#IF
level > 15
#ACT
TopMessage "你当前等级大于15级" FALSE
BREAK

这样第一个条件满足后就不执行后面的判断了


例:NOT取反判断

1
2
3
4
5
#IF
NOT level = 15
#ACT
TopMessage "你的等级不等于15级" FALSE
BREAK

例:OR多条件判断

1
2
3
4
5
6
#OR
level > 10
CheckClass 战士
#ACT
TopMessage "你的等级大于10级或你职业是战士" FALSE
BREAK

这样上面两个条件满足其中一个就会执行后面的语句


0%