C3无度传奇引擎装备打孔孔位设置与宝石镶嵌属性数据库NPC脚本教程

来源: 作者: 点击:
C3打孔镶嵌分界面触发、NPC脚本、物品库宝石属性、M2开关四块。打孔用客户端打孔框配合@_HOLEINI、@_PUTDOWN、@_PUTUP、@_STARTHOLE等标签;镶嵌用@_PUTDOWNDIAMOND、@_PUTUPDIAMOND处理宝石放入取出;孔位颜色、成功率、成功失败回调用SetSuccessRate、SetHoleButton、SETHOLECOLOR、MakeHoleSucc、MakeHoleFail。宝石本身在StdItems里按StdMode、Shape、Source、AC/AC2、DC/DC2、MC/MC2、SC/SC2、HP、MP、Reserved配属性。

一、C3打孔界面触发标签

打开打孔界面触发@_HOLEINI,D99返回当前装备已开孔数。脚本里先清计数再等放材料。

放入打孔材料触发@_PUTDOWN,D99返回材料StdMode,D98返回Shape,D97返回孔位,D96返回叠加数,A99返回材料名;材料不被接受D99返回-1。失败用PUTDOWNFAIL反馈。

取下材料触发@_PUTUP,同样回传D99/D98/D97/D96/A99;失败D99=-1。

点打孔按钮触发@_STARTHOLE,D99返回目标孔位,D98返回装备MakeIndex,MakeIndex由系统给,脚本不要改。

相关控制命令:

SetSuccessRate 数值 向客户端发送成功率显示。
MakeHoleSucc 打孔成功处理。
MakeHoleFail 打孔失败处理。
SetHoleButton 位置 状态,位置1是打孔按钮、2是镶嵌按钮,状态1可用0不可用;SetHoleButton 1 1开打孔,SetHoleButton 2 1开镶嵌。
SETHOLECOLOR 位置 颜色,位置填1或2,颜色1红2黄3蓝,按本服颜色号扩展。
PUTDOWNFAIL 孔位 材料放入失败回退。

二、基础打孔NPC脚本

Npc_def或Market_Def按本服NPC类型建文件,打孔官脚本示例:

[@_HOLEINI]
IF

ACT

MOV D90 0
MOV D91 0
SENDMSG 6 打孔界面初始化,等待放入打孔材料

[@_PUTDOWN]
IF

EQUAL D99 -1
ACT

SENDMSG 6 材料放入失败
PUTDOWNFAIL %D97
BREAK
IF

EQUAL D99 70
ACT

INC D90 1
SetSuccessRate %D90
ELSEACT

PUTDOWNFAIL %D97
SENDMSG 6 不是打孔材料
BREAK
IF

EQUAL D99 70
SMALL D91 4
ACT

SetHoleButton 1 1
SENDMSG 6 材料合规,可打孔

[@_PUTUP]
IF

EQUAL D99 70
ACT

DEC D90 1
SetSuccessRate %D90
IF

SMALL D91 1
ACT

SetHoleButton 1 0
SENDMSG 6 已取下材料,关闭打孔按钮

[@_STARTHOLE]
IF

ACT

RandomEx D89 100
IF

LARGE D90 D89
ACT

RandomEx D1 5
SETHOLECOLOR 1 1
MakeHoleSucc
ShowHumEff 114 21
SENDMSG 6 打孔成功
ELSEACT

MakeHoleFail
ShowHumEff 144 21
SENDMSG 6 打孔失败

D90做材料计数和成功率,D91限制最多孔数,示例SMALL D91 4表示最多4孔。RandomEx D89 100先取随机值,LARGE D90 D89表示成功率大于随机值则成;具体随机命令名按C3小版本替换,老版可用RANDOM 100加D变量判断。MakeHoleSucc后装备获得孔位,但孔位实际数量仍受物品库或引擎最大孔数限制。

三、材料库设置

打孔材料在StdItems建行,StdMode按C3打孔材料配置填,上面示例用D99=70识别,说明材料StdMode为70;实际以本服打孔材料库为准。Shape区分不同材料类型,Anicount可放附加规则,Name、Price、Weight正常填。

若一种材料对应一孔、高级材料对应多孔,脚本用D98 Shape分支:

IF

EQUAL D99 70
EQUAL D98 1
ACT

MOV D91 1
SetHoleButton 1 1
SENDMSG 6 普通打孔石,允许1孔

IF

EQUAL D99 70
EQUAL D98 2
ACT

MOV D91 2
SetHoleButton 1 1
SENDMSG 6 高级打孔石,允许2孔

材料名通过A99取,菜单提示可用A99拼接,但C3打孔框多以D系列回传为主。

四、宝石数据库字段

C3/通用凹槽宝石常用StdMode 46,Shape决定属性类型:

Shape 1防御,2魔御,3攻击,4魔法,5道术,6生命,7魔法值,8准确,9敏捷,10幸运,11攻速,12魔躲,13毒躲,14中毒恢复,15体恢,16法恢,17穿戴负重,18背包负重。

Source填基础属性值来源类型,AC填主值。若按基础七属性做宝石,Reserved=0时AC2、MAC2、DC2、MC2、SC2、HP、MP为对应增加量;例如攻击宝石Shape=3,DC填攻击值,DC2可按引擎作为附加攻击。

元素/特殊属性用AC体系时,AC 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蛛网、28致命、29致命威力、30致命防御;AC2填对应百分比或数值。

Reserved控制卸下行为:0表示取宝石不消耗宝石,大于0表示卸下后宝石消失。需要玩家可反复拆装用0;做成消耗型高级孔用大于0。

Anicount在12到16附加属性时填1到10,对应10%到100%;AC在15到27的特殊状态类,AC2可作为触发概率1到100。

五、C3镶嵌界面触发

放宝石触发@_PUTDOWNDIAMOND,D99返回宝石StdMode,D98返回Shape,D97返回孔位,A99返回宝石名;失败D99=-1。

取宝石触发@_PUTUPDIAMOND,同样回传D99/D98/D97/A99。

脚本示例:

[@_PUTDOWNDIAMOND]
IF

EQUAL D99 -1
ACT

SENDMSG 6 宝石放入失败
BREAK
IF

EQUAL D99 46
ACT

SENDMSG 6 已放入宝石:%A99,孔位:%D97
SetHoleButton 2 1
ELSEACT

SENDMSG 6 不是可镶嵌宝石
BREAK

[@_PUTUPDIAMOND]
IF

EQUAL D99 46
ACT

SENDMSG 6 已取下宝石:%A99
SetHoleButton 2 0
ELSEACT

SENDMSG 6 取宝石失败

实际镶嵌提交由客户端点镶嵌按钮调用C3内部写孔;若用脚本命令强写,可参考其他引擎的SOCKETABLEITEM,但C3打孔框通常以@_PUTDOWNDIAMOND收材料、后端按Shape写属性。需要脚本检测已镶嵌用CheckSocketableItem类命令,检测数量用CheckSocketableItemCount,检测打孔用CheckDrillHole,检测打孔数量用CheckDrillHoleCount;这些更偏通用/其他引擎,C3若不支持就只用界面标签加M2宝石库。

六、通用OK框打孔备选

不用C3打孔框,可用凹槽命令自行做NPC。设孔:

SETFLUTECOUNT 位置 数量
位置:-1升级框,0到25装备栏,30到35首饰盒,40到51神佑袋,boxitem0到boxitem7 OK框。

检测孔数:

CheckFluteCount 位置 符号 数量

检测镶嵌数:

CheckItemStoneCount 装备位置 符号 数量

检测指定宝石:

CheckItemHasStone 装备位置 宝石名 数量

直接给装备写宝石,不消耗背包宝石:

ItemAddStone 装备位置 宝石名 孔位置
孔位置0或空自动找空孔,1到8指定孔。

删除孔位宝石:

ItemDelStone 装备位置 孔位置

全身宝石统计:

CheckStoneCount 宝石名 符号 数量

卸下宝石NPC标签@ArmRemoveStone,QF卸下触发@RemoveStoneItem,背包用宝石右键镶嵌可走@BagUseStoneItemOK。

七、宝石右键与混元锤卸下

StdItems建卸石道具:StdMode 46,Shape 9,名称混元锤;NPC或右键调用卸下界面,脚本头支持@ArmRemoveStone后玩家在对话框选择装备孔位取石。

右键直接镶嵌方案在ItemDescList.txt或M2列表信息二写备注,例如宝石备注“将需镶嵌装备放入背包后鼠标右键点击宝石,再左键点装备”。M2要开右键设置,路径:M2选项、物品装备、第一页右键/新增属性相关开关;不开右键宝石无反应。

八、M2开关与显示

打孔后属性不显示先查M2:选项、物品装备、新增属性,勾启用新增属性;元素、凹槽、新属性不显示多因该开关未开。重启M2和重新生成登录器后再测。

套装类凹槽要单独在M2列表信息套装功能建名称、成员、触发数量;StdItems相关字段填同编号。仅改NPC不改M2套装,可能导致全身多件宝石加成不统计。

九、宝石属性不生效排查

1. 打孔成功但装备无孔:看@_STARTHOLE是否真的调用MakeHoleSucc;只看SENDMSG不算成功,必须过引擎写孔。D91最大孔数小于计划孔数会限制成功数。
2. 有孔镶宝石无属性:StdItems宝石Shape与装备槽不匹配,武器用攻击石Shape3,衣服可防御魔御,饰品用攻魔道或特殊属性;StdMode不是46或Shape错,界面能放但属性不写。
3. 元素属性灰色不显示:M2新增属性未启用,或登录器不是配套C3专用端;补丁PAK密码错也会界面异常。
4. 卸下后宝石消失不符合预期:Reserved误填大于0;要保留改0,要消耗改1或更大。
5. 右键无反应:M2右键开关未开、ItemDescList备注格式错、登录器不支持C3凹槽右键。
6. 打孔材料放不进:@_PUTDOWN里D99判断错,材料StdMode不是脚本约定值;用A99打日志看实际材料名,D99打日志看StdMode。
7. 成功率永远成功或失败:SetSuccessRate传入D90但@_STARTHOLE随机逻辑反了;LARGE D90 D89成、否则败,D90为0必然败,D90大于100按引擎随机范围调整。
8. 多孔只显示一孔属性:检测CheckFluteCount/CheckItemStoneCount只查1孔;全身统计用CheckStoneCount,数据库AC/AC2只配单属性时多孔也只加一种。

十、完整打孔+镶嵌NPC结构

打孔官主标签走C3界面,不用主菜单发物品,靠客户端框交互:

[@main]
打孔镶嵌中心\ \
打孔请放入装备后点开始\ \
镶嵌请先打孔再放宝石\ \
帮助请点 /@help

[@help]
IF

SAY

材料StdMode按本服打孔材料设,示例70\ \
宝石StdMode46,Shape1防2魔3攻4法5道\ \
最多孔数在@_PUTDOWN用D91限制\ \
成功率在@_STARTHOLE用D90与随机值比\ \

[@_HOLEINI]
IF

ACT

MOV D90 0
MOV D91 0
SENDMSG 6 初始化打孔

[@_PUTDOWN]
IF

EQUAL D99 -1
ACT

PUTDOWNFAIL %D97
SENDMSG 6 材料异常
BREAK
IF

EQUAL D99 70
SMALL D91 4
ACT

INC D90 1
SetSuccessRate %D90
SetHoleButton 1 1
SENDMSG 6 材料计入,当前成功率%D90
ELSEACT

PUTDOWNFAIL %D97
SENDMSG 6 材料不符或超最大孔数
BREAK

[@_STARTHOLE]
IF

ACT

RandomEx D89 100
IF

LARGE D90 D89
ACT

RandomEx D1 5
SETHOLECOLOR 1 1
MakeHoleSucc
ShowHumEff 114 21
SENDMSG 6 打孔成功
ELSEACT

MakeHoleFail
ShowHumEff 144 21
SENDMSG 6 打孔失败

[@_PUTDOWNDIAMOND]
IF

EQUAL D99 46
SMALL D97 4
ACT

SENDMSG 6 宝石%D97孔待镶嵌:%A99
SetHoleButton 2 1
ELSEACT

SENDMSG 6 宝石类型错误或孔位超限
BREAK

[@_PUTUPDIAMOND]
IF

EQUAL D99 46
ACT

SENDMSG 6 取下宝石:%A99
SetHoleButton 2 0

若本服C3不支持RandomEx,替换成RANDOM 100存D89,再用LARGE D90 D89判断;ShowHumEff资源号114/144/21仅示例,按本服特效文件调整。

十一、按装备类型限制镶嵌

武器位置1只让攻击、暴击、攻速、准确、元素输出石:

IF

EQUAL D98 3
ACT

SENDMSG 6 攻击宝石可镶武器
IF

EQUAL D98 1
ACT

SENDMSG 6 防御宝石建议衣服头盔,武器拒绝可在此BREAK

衣服位置0可防魔御、HP、魔躲、减伤;戒指2/3可攻魔道、暴击、命中;勋章按本服位置配特殊石。StdMode 19/20/21/23/24/5/6类无防魔的装备,不镶防御魔御,避免属性库计算异常。

十二、限量和高价值孔控制

高级装备最多3孔,普通最多1孔,在@_HOLEINI读装备名分支:

IF

CHECKITEMNAME 极品屠龙
ACT

MOV D91 3
SENDMSG 6 该武器最高3孔
IF

CHECKITEMNAME 普通战剑
ACT

MOV D91 1
SENDMSG 6 该武器最高1孔

CHECKITEMNAME按本服命令名替换;若用MakeIndex判断更准,但打孔框D98只回MakeIndex于@_STARTHOLE,初始化阶段可先按放入装备名设上限。打孔材料分普通/高级,高级材料提高D90成功率并允许更多孔,防止白装随便开多孔。

十三、数据库导入示例片段

攻击宝石行思路:

Name 攻击宝石,StdMode 46,Shape 3,Source 0,AC 0,AC2 0,DC 3,DC2 0,MAC 0,MAC2 0,MC 0,MC2 0,SC 0,SC2 0,HP 0,MP 0,Reserved 0,Anicount 0。

魔法宝石Shape 4,MC填值;道术Shape 5,SC填值;防御Shape 1,AC填值;魔御Shape 2,MAC填值;生命Shape 6,HP填值;魔法Shape 7,MP填值。元素暴击宝石Shape按本服元素石设定,AC 1,AC2填暴击百分比;物伤减少AC 3,AC2填减伤百分比;魔伤减少AC 4,AC2填百分比。麻痹石AC 22,AC2填触发概率;复活石AC 23,AC2填复活相关参数;具体数值受M2特殊状态子项限制。

混元锤卸石行:

Name 混元锤,StdMode 46,Shape 9,Reserved按消耗设定,Price/Weight按本服填,备注写“右键混元锤进入卸石界面”。

十四、排错顺序固定

先M2开新增属性、右键、凹槽;再查StdItems宝石StdMode/Shape/Reserved;再开NPC看@_HOLEINI/@_PUTDOWN/@_STARTHOLE是否回传D99;再小号放普通装备打1孔,成功后在@_PUTDOWNDIAMOND放Shape3攻击石,看属性面板;不显示就换专用登录器、重导StdItems、清客户端缓存。打孔框整页不弹,优先看NPC是否C3打孔功能型注册、登录器是否支持C3凹槽,而不是先改脚本。全服都不显示元素只显示基础,M2新增属性未勾的概率最高;单件不打孔只放宝石无属性属正常,必须先打孔再镶嵌。