项链的幸运值不是脚本临时算出来的数字,它落在物品数据库的固定字段里,脚本只负责往这个字段上加。所以要先弄清数据库里哪一列是幸运,再谈命令怎么写。这两块接不上,脚本写得再对,加出来的属性也不显示。
热血传奇
项链的幸运值存在数据库哪个字段
物品数据库是StdItems.DB,每条记录按固定列顺序排开:序号、名称、StdMode、Shape、重量、AniCount、Source、Reserved、Looks、持久、Ac、Ac2、Mac、Mac2、Dc、Dc2、Mc、Mc2、Sc、Sc2、需求、需求等级、价格、是否库存……
项链这一类,StdMode填19、20、21三种都算项链,但每种对应一组不同的属性位置。关键在Shape和Mac2。
当StdMode为19时,Ac2这一列是魔法躲避,Mac2这一列就是幸运。也就是说,一条本来带幸运的项链,幸运值就明明白白写在Mac2上。白色虎齿项链、灯笼项链、记忆项链走的都是这个类型,Shape值19决定了它的第一个可加属性位置是魔法躲避,第二个是幸运。
当StdMode为20时,Ac2变准确,Mac2变敏捷,这一类加不出幸运。当StdMode为21时,Ac2是体力恢复,Mac2是魔法恢复,同样加不出幸运。
把项链做成幸运款,最省事的办法是在数据库里直接把Mac2改成想要的数字,比如填2,这条项链出生就带幸运加2。想批量发一批带幸运的项链,改数据库字段比写脚本快。但玩家手里已经拿着的项链改不了,那种情况必须靠脚本。
百分百加幸运靠的是升级命令的第三个参数
脚本里给项链补幸运,用的命令是UPGRADEITEMEX。它的完整格式是四到五个参数:装备位置、属性位置、成功率、增加点数、是否提示。
装备位置里,0到13对应人物身上各个格子,其中项链固定是3。属性位置里,StdMode为19的项链,位置0是魔法躲避,位置1就是幸运。
第三个参数是成功率,这正是百分百和概率的分界线。
text
UPGRADEITEMEX31010
这一行拆开看:3是项链格子,1是幸运属性位,0是成功率,1是加一点,最后0表示不弹提示。成功率写0的时候,引擎按必定成功处理,不加随机数判断,执行下去幸运一定加1。这就是所谓百分百。
对比一下带概率的写法。同样加幸运,概率版的段里会塞一个random判断,命中了才加,没命中就只扣钱不给属性。
text
#IF
random2
CHECKGAMEGOLD>199999
CHECKITEMADDVALUE31=2
#ACT
GAMEGOLD-200000
MESSAGEBOX项链升级失败
BREAK
上面这段是失败分支,random2表示有一半概率落到这里,钱照扣,属性不给。要做成百分百,把这类random段整段删掉,只留下UPGRADEITEMEX那一行就够了。
NPC直接升级的完整脚本
一个能用的百分百加幸运脚本,把检测和执行分清楚就行。检测部分干三件事:确认玩家佩着项链、确认当前幸运值没到顶、确认元宝够。
text
[@main]
欢迎来到这里为项链补幸运,每次加一点,必定成功。\
<升级幸运/@升级><关闭/@exit>\
\
[@升级]
#IF
CHECKITEMW白色虎齿项链1
CHECKITEMADDVALUE31<3
CHECKGAMEGOLD>49999
#ACT
GAMEGOLD-50000
UPGRADEITEMEX31010
SENDMSG5恭喜,项链幸运值增加一点
BREAK
#ELSEACT
MESSAGEBOX没有佩带项链,幸运已满,或者元宝不足
BREAK
CHECKITEMW检测装备栏里有没有这项项链,它和检测背包的CHECKITEM不是一回事,写错了会出现人没戴项链也能升级。CHECKITEMADDVALUE31<3卡住上限,项链幸运一般封顶在3,不加这一句玩家能一路点到很高,属性直接失衡。
这里有个细节要留意,CHECKITEMADDVALUE后面接的是运算符和数值。有的引擎版本只认等号,写大于小于会报错,那种情况下就得把0、1、2三段分开写,每段一个等号,段尾都要BREAK。
text
#IF
CHECKITEMADDVALUE31=0
#ACT
UPGRADEITEMEX31010
BREAK
#IF
CHECKITEMADDVALUE31=1
#ACT
UPGRADEITEMEX31010
BREAK
分段写法啰嗦,但兼容老引擎。段与段之间不写BREAK,第一段执行完会接着往下匹配,一条项链一口气加两点。
用祝福油做成可双击的物品
不想让玩家找NPC,可以做成道具。玩家把项链拿在手上,双击祝福油,属性就加上去。这种做法把功能塞进物品使用脚本里,入口在QFunction-0.txt。
数据库里先建一条祝福油记录,名称、外观、持久设好,重点在StdMode和AniCount两列。上网类消耗品的StdMode一般填31,AniCount填一个没用过的编号,比如57。这个编号决定双击物品时脚本去调哪一段,AniCount填57,脚本里就要写[@StdModeFunc57]。
text
1006;项链祝福油;31;0;1;57;0;0;1326;1;20000;5;;
接着在QFunction-0.txt里补上这段。
text
[@StdModeFunc57]
#IF
CHECKITEMADDVALUE31>2
#ACT
GIVE项链祝福油1
SENDMSG5项链幸运已到上限,油退还给你
BREAK
#IF
CHECKUSEITEM3
#ACT
TAKE项链祝福油1
UPGRADEITEMEX31010
SENDMSG5项链幸运值增加一点
BREAK
#ELSEACT
GIVE项链祝福油1
MESSAGEBOX手上没有项链,油还给你
BREAK
CHECKUSEITEM3判断玩家光标上是不是停着一条项链,是就继续,不是就把油退回去。这两条命令的顺序不能颠倒,先耗油再加属性,中途判断失败油就白扣。把TAKE放在判断之后,是保证只有真正要升级的时候才消耗道具。
AniCount的编号要和脚本段名严格对上。数据库填57,脚本写成[@StdModeFunc55],双击下去没有任何反应,油不会消耗,项链也不会变。这是这类物品脚本最常见的毛病。
直接发放带幸运项链的写法
有些引擎扩展了发放命令,可以一次给出一条自带极品属性的项链,不需要玩家自己升级。命令是GIVE物品名数量属性位置数值。属性位置1就是幸运,数值写3就是直接给三点。
text
#IF
CHECKLEVELEX>39
#ACT
GIVE白色虎齿项链113
SENDMSG0玩家%s领取了一条幸运项链
BREAK
这一行给出去的就是幸运加3的白色虎齿项链,出生自带,不用再走升级流程。用这个命令发奖励,能绕开数据库,单条项链单独带属性。要留意的是,属性位置的含义跟着Shape走,把这条命令用在Shape不是19的项链上,加出来的可能是敏捷而不是幸运。
做活动发奖励、开区送新手礼,这种方式最直接。数量和属性位置都写在命令里,改奖品只改这一行。
关键编码对照
装备位置这一组要背熟,写错格子会加到别的装备上。0是衣服,1是武器,2是蜡烛,3是项链,4是头盔,5是左手镯,6是右手镯,7是左戒指,8是右戒指。给项链加幸运,位置一律填3。
项链的属性位置跟着Shape走。Shape19:位置0魔法躲避,位置1幸运。Shape20:位置0准确,位置1敏捷。Shape21:位置0体力恢复,位置1魔法恢复。
数据库列里,项链的Ac2是魔法躲避,Mac2是幸运。手工改字段就改这两列,脚本加属性就看Shape定位置,两套口径要一致。
text
#IF
CHECKITEMTYPE319
#ACT
UPGRADEITEMEX31010
BREAK
CHECKITEMTYPE319先确认光标上的项链确实是19类,防止有人拿20类的项链来升级,刷出一堆错位属性。
引擎之间的写法差别
GOM和GEE引擎走上面这套命令,UPGRADEITEMEX、CHECKITEMADDVALUE、GIVE扩展属性都支持,成功率填0就是必成,兼容性最好。HERO引擎同样认这组命令,属性位置的编号范围略有出入,用之前翻一遍引擎自带的说明。
BLUE和LEGEND引擎的命令名一致,但变量写法和调用习惯不同,装备位置的数字编码要按手册核对。部分老引擎的GIVE只支持两个参数,写三个参数会报错,多出来的属性参数被忽略,发出去的就是白板项链。
物品使用脚本的触发段名,各家引擎都认[@StdModeFunc编号],编号取自数据库的AniCount,这一段所有引擎通用。
换引擎时别照抄,先拿一条垃圾项链试一次升级,确认命令认得到、属性落对位置,再整套搬。
调试时反复出现的问题
加了幸运项链上不显示。检查项链的StdMode是不是19。把19类的项链拿去用位置1加,出来才是幸运。StdMode是20的项链同一个位置加出来是敏捷,属性写进去了,只是名字不一样。
幸运能一直加,停不下来。脚本里少了CHECKITEMADDVALUE的上限判断,或者判断写成了别的装备位置。给项链加就检测位置3的属性位置1,别写成位置2或者戒指的位置。
双击祝福油没反应。数据库AniCount的编号和脚本里[@StdModeFunc编号]对不上。填57就搜57,填55就搜55,两个数字必须一样。另外确认QFunction-0.txt里确实有这一段,段名前后的方括号是半角。
升级成功但元宝没扣。扣钱命令写在UPGRADEITEMEX后面,中间被BREAK截断了。扣费放前面,升级放后面,顺序反了就会出现白给属性。
一次升了两点。多段检测之间没有BREAK,脚本执行完一段继续往下匹配。每段末尾补上BREAK。
发出去的项链不同人属性不一样。用了带随机的升级命令,或者数据库里那条项链的Mac2本身就带了一个幸运值,脚本再加就叠上去了。发放型奖励统一走GIVE扩展参数,别用带概率的UPGRADEITEMEX。
数值上定好上限。项链幸运封顶三点是常规做法,配合武器幸运凑运九套。上限写死在脚本的检测里,比改数据库更灵活,活动期间要放开,只改一个数字。材料、元宝、幸运三样东西的关系理清了,这套脚本就不会出岔子。
热血传奇
项链的幸运值存在数据库哪个字段
物品数据库是StdItems.DB,每条记录按固定列顺序排开:序号、名称、StdMode、Shape、重量、AniCount、Source、Reserved、Looks、持久、Ac、Ac2、Mac、Mac2、Dc、Dc2、Mc、Mc2、Sc、Sc2、需求、需求等级、价格、是否库存……
项链这一类,StdMode填19、20、21三种都算项链,但每种对应一组不同的属性位置。关键在Shape和Mac2。
当StdMode为19时,Ac2这一列是魔法躲避,Mac2这一列就是幸运。也就是说,一条本来带幸运的项链,幸运值就明明白白写在Mac2上。白色虎齿项链、灯笼项链、记忆项链走的都是这个类型,Shape值19决定了它的第一个可加属性位置是魔法躲避,第二个是幸运。
当StdMode为20时,Ac2变准确,Mac2变敏捷,这一类加不出幸运。当StdMode为21时,Ac2是体力恢复,Mac2是魔法恢复,同样加不出幸运。
把项链做成幸运款,最省事的办法是在数据库里直接把Mac2改成想要的数字,比如填2,这条项链出生就带幸运加2。想批量发一批带幸运的项链,改数据库字段比写脚本快。但玩家手里已经拿着的项链改不了,那种情况必须靠脚本。
百分百加幸运靠的是升级命令的第三个参数
脚本里给项链补幸运,用的命令是UPGRADEITEMEX。它的完整格式是四到五个参数:装备位置、属性位置、成功率、增加点数、是否提示。
装备位置里,0到13对应人物身上各个格子,其中项链固定是3。属性位置里,StdMode为19的项链,位置0是魔法躲避,位置1就是幸运。
第三个参数是成功率,这正是百分百和概率的分界线。
text
UPGRADEITEMEX31010
这一行拆开看:3是项链格子,1是幸运属性位,0是成功率,1是加一点,最后0表示不弹提示。成功率写0的时候,引擎按必定成功处理,不加随机数判断,执行下去幸运一定加1。这就是所谓百分百。
对比一下带概率的写法。同样加幸运,概率版的段里会塞一个random判断,命中了才加,没命中就只扣钱不给属性。
text
#IF
random2
CHECKGAMEGOLD>199999
CHECKITEMADDVALUE31=2
#ACT
GAMEGOLD-200000
MESSAGEBOX项链升级失败
BREAK
上面这段是失败分支,random2表示有一半概率落到这里,钱照扣,属性不给。要做成百分百,把这类random段整段删掉,只留下UPGRADEITEMEX那一行就够了。
NPC直接升级的完整脚本
一个能用的百分百加幸运脚本,把检测和执行分清楚就行。检测部分干三件事:确认玩家佩着项链、确认当前幸运值没到顶、确认元宝够。
text
[@main]
欢迎来到这里为项链补幸运,每次加一点,必定成功。\
<升级幸运/@升级><关闭/@exit>\
\
[@升级]
#IF
CHECKITEMW白色虎齿项链1
CHECKITEMADDVALUE31<3
CHECKGAMEGOLD>49999
#ACT
GAMEGOLD-50000
UPGRADEITEMEX31010
SENDMSG5恭喜,项链幸运值增加一点
BREAK
#ELSEACT
MESSAGEBOX没有佩带项链,幸运已满,或者元宝不足
BREAK
CHECKITEMW检测装备栏里有没有这项项链,它和检测背包的CHECKITEM不是一回事,写错了会出现人没戴项链也能升级。CHECKITEMADDVALUE31<3卡住上限,项链幸运一般封顶在3,不加这一句玩家能一路点到很高,属性直接失衡。
这里有个细节要留意,CHECKITEMADDVALUE后面接的是运算符和数值。有的引擎版本只认等号,写大于小于会报错,那种情况下就得把0、1、2三段分开写,每段一个等号,段尾都要BREAK。
text
#IF
CHECKITEMADDVALUE31=0
#ACT
UPGRADEITEMEX31010
BREAK
#IF
CHECKITEMADDVALUE31=1
#ACT
UPGRADEITEMEX31010
BREAK
分段写法啰嗦,但兼容老引擎。段与段之间不写BREAK,第一段执行完会接着往下匹配,一条项链一口气加两点。
用祝福油做成可双击的物品
不想让玩家找NPC,可以做成道具。玩家把项链拿在手上,双击祝福油,属性就加上去。这种做法把功能塞进物品使用脚本里,入口在QFunction-0.txt。
数据库里先建一条祝福油记录,名称、外观、持久设好,重点在StdMode和AniCount两列。上网类消耗品的StdMode一般填31,AniCount填一个没用过的编号,比如57。这个编号决定双击物品时脚本去调哪一段,AniCount填57,脚本里就要写[@StdModeFunc57]。
text
1006;项链祝福油;31;0;1;57;0;0;1326;1;20000;5;;
接着在QFunction-0.txt里补上这段。
text
[@StdModeFunc57]
#IF
CHECKITEMADDVALUE31>2
#ACT
GIVE项链祝福油1
SENDMSG5项链幸运已到上限,油退还给你
BREAK
#IF
CHECKUSEITEM3
#ACT
TAKE项链祝福油1
UPGRADEITEMEX31010
SENDMSG5项链幸运值增加一点
BREAK
#ELSEACT
GIVE项链祝福油1
MESSAGEBOX手上没有项链,油还给你
BREAK
CHECKUSEITEM3判断玩家光标上是不是停着一条项链,是就继续,不是就把油退回去。这两条命令的顺序不能颠倒,先耗油再加属性,中途判断失败油就白扣。把TAKE放在判断之后,是保证只有真正要升级的时候才消耗道具。
AniCount的编号要和脚本段名严格对上。数据库填57,脚本写成[@StdModeFunc55],双击下去没有任何反应,油不会消耗,项链也不会变。这是这类物品脚本最常见的毛病。
直接发放带幸运项链的写法
有些引擎扩展了发放命令,可以一次给出一条自带极品属性的项链,不需要玩家自己升级。命令是GIVE物品名数量属性位置数值。属性位置1就是幸运,数值写3就是直接给三点。
text
#IF
CHECKLEVELEX>39
#ACT
GIVE白色虎齿项链113
SENDMSG0玩家%s领取了一条幸运项链
BREAK
这一行给出去的就是幸运加3的白色虎齿项链,出生自带,不用再走升级流程。用这个命令发奖励,能绕开数据库,单条项链单独带属性。要留意的是,属性位置的含义跟着Shape走,把这条命令用在Shape不是19的项链上,加出来的可能是敏捷而不是幸运。
做活动发奖励、开区送新手礼,这种方式最直接。数量和属性位置都写在命令里,改奖品只改这一行。
关键编码对照
装备位置这一组要背熟,写错格子会加到别的装备上。0是衣服,1是武器,2是蜡烛,3是项链,4是头盔,5是左手镯,6是右手镯,7是左戒指,8是右戒指。给项链加幸运,位置一律填3。
项链的属性位置跟着Shape走。Shape19:位置0魔法躲避,位置1幸运。Shape20:位置0准确,位置1敏捷。Shape21:位置0体力恢复,位置1魔法恢复。
数据库列里,项链的Ac2是魔法躲避,Mac2是幸运。手工改字段就改这两列,脚本加属性就看Shape定位置,两套口径要一致。
text
#IF
CHECKITEMTYPE319
#ACT
UPGRADEITEMEX31010
BREAK
CHECKITEMTYPE319先确认光标上的项链确实是19类,防止有人拿20类的项链来升级,刷出一堆错位属性。
引擎之间的写法差别
GOM和GEE引擎走上面这套命令,UPGRADEITEMEX、CHECKITEMADDVALUE、GIVE扩展属性都支持,成功率填0就是必成,兼容性最好。HERO引擎同样认这组命令,属性位置的编号范围略有出入,用之前翻一遍引擎自带的说明。
BLUE和LEGEND引擎的命令名一致,但变量写法和调用习惯不同,装备位置的数字编码要按手册核对。部分老引擎的GIVE只支持两个参数,写三个参数会报错,多出来的属性参数被忽略,发出去的就是白板项链。
物品使用脚本的触发段名,各家引擎都认[@StdModeFunc编号],编号取自数据库的AniCount,这一段所有引擎通用。
换引擎时别照抄,先拿一条垃圾项链试一次升级,确认命令认得到、属性落对位置,再整套搬。
调试时反复出现的问题
加了幸运项链上不显示。检查项链的StdMode是不是19。把19类的项链拿去用位置1加,出来才是幸运。StdMode是20的项链同一个位置加出来是敏捷,属性写进去了,只是名字不一样。
幸运能一直加,停不下来。脚本里少了CHECKITEMADDVALUE的上限判断,或者判断写成了别的装备位置。给项链加就检测位置3的属性位置1,别写成位置2或者戒指的位置。
双击祝福油没反应。数据库AniCount的编号和脚本里[@StdModeFunc编号]对不上。填57就搜57,填55就搜55,两个数字必须一样。另外确认QFunction-0.txt里确实有这一段,段名前后的方括号是半角。
升级成功但元宝没扣。扣钱命令写在UPGRADEITEMEX后面,中间被BREAK截断了。扣费放前面,升级放后面,顺序反了就会出现白给属性。
一次升了两点。多段检测之间没有BREAK,脚本执行完一段继续往下匹配。每段末尾补上BREAK。
发出去的项链不同人属性不一样。用了带随机的升级命令,或者数据库里那条项链的Mac2本身就带了一个幸运值,脚本再加就叠上去了。发放型奖励统一走GIVE扩展参数,别用带概率的UPGRADEITEMEX。
数值上定好上限。项链幸运封顶三点是常规做法,配合武器幸运凑运九套。上限写死在脚本的检测里,比改数据库更灵活,活动期间要放开,只改一个数字。材料、元宝、幸运三样东西的关系理清了,这套脚本就不会出岔子。

