立即注册 找回密码

搜索

GOM引擎版本转996PC笔记,从(M2-素材-脚本-特性)精细打磨

[复制链接]
发表于 1 小时前 | 显示全部楼层 |阅读模式
目前996PC引擎使用用户越来越多出篇GOM转换的教程,本文将从内核的引擎M2设置细节(参数-功能-大背包-光柱-装备对比-玩家视野)-到素材的注意事项以及转换-到脚本部分代码命令功能场景功能-再到996PC的特效记录等几个维度分别如下:



d1.jpg



一.M2设置


参数设置-移动速度,点一下将补偿转换为公共CD


参数设置 - 环境设置  玩家视野,


选项-客户端控制NPC坐标偏移


选项-客户端控制 内挂控制二 获得物品、经验、升级,右对齐


选项-功能设置-客户端设置 装备对比


选项-功能设置 基本功能 - 掉落来源 地图事件触发


选项-功能设置 - 技能 - 道术毒符 佩戴 、无


选项-功能设置-客户端设置-启用套装改名判断  没事千万没勾


光柱导入后 坐标和绘制模式可能失效 需要核实


列表二-内挂捡取 需要重新设置


选项-客户端控制-内挂控制 需要重新设置内挂选项


大背包在M2-选项-功能设置-客户端设置,背包按钮需要在UI中配置,且在QF写入触发命令


刷新包裹按钮无效,需要用自定义背包按钮+刷新包裹命令自己写


M2选项-查看列表信息二-技能描述




二.素材部分


996自带的转换工具会把png也转成24位BMP,导致部分素材花屏


996PC不支持24位以下BMP会,导致部分地图黑屏、素材不显示


完美解决办法:用GMGJX转一份素材【主用】,引擎自带转换工具一份备用。进游戏后发现1、2问题,则去引擎自带转换工具转的那份里对应jpk找到对应图片导出、导入使用,偷懒点就整个jpk替换


以下怪物素材编号要规避,系统固定编号
Mon80~83 也就是appr790-829 火龙系怪物
Mon91 也就是appr 900-909 沙巴克城墙
Mon96 也就是appr 950~959 强化骷髅




三.脚本部分


镶嵌相关命令(SOCKETABLEITEM、DRILLHOLE等)精简后只有3个参数,不需要88或者***去占位无用参数


杀怪爆率命令KILLMONBURSTRATE 同上


所有输入框都需要搜索出来,加一句MOV S变量 <$NPCPARAMS(1,S变量)>,N变量同理


货币名称修改需要在数据库顶部几行中修改,不是在!Setup中修改了


个人商店已作废,改用拍卖行,需要在M2隐藏个人商店,删除qf中相关代码


变量P D M N S I 0-99  G A 0-499  U T J 0-254 使用范围外变量会报错
更严谨的变量使用,命令中使用变量如果是调用则需要加<$str()>,如果是输出则不能有<$str()> 这个要花点时间,一般我会搜 .txt <$str     再搜 <$str 检查


注意SetStringBlank是不能加<$str()>的,其他就是几个文件操作


称号给予删除不会自动转换


【全系】RangeHarm不会报错,需要转成SetAttackRange 2025.08.01.08更新了RangeHarm和RangeHarmEx


【GEE系】 鼠标坐标N998,N999需要改成<$mouseX> <$mouseY>


【GEE系】PLAYEFFECT参数不同 LF坐标参数无效,996会生效反而出错(原有需要脚本写上坐标参数得删除)


【GEE系】ChangeHumAbility不支持百分比参数


【全系】推荐使用ChangeHumNewValueEx,更全面的属性修改命令(多达81种人物属性,不仅包含元素,还有大量伤害类属性对应的抵抗属性,如暴击几率和暴击抵抗),完全可以代替ChangeHumAbility
ChangeHumNewValueEx 修改临时属性的值不需要清空,类似于ChangeHumAbility =,而不是ChangeHumAbility +
建议长效属性用ChangeHumNewValueEx,短效用ChangeHumAbility


【GEE系】[@BeginMagic]技能前触发<$MagicName>需要改为<$param2>
【GOM系】GOM靠插件实现[@ESPBeginMagic]


【GOM系】TAKEONALL 和 TAKEOFFALL 需要改成 takeonex  takeoffex


【全系】Guildbase目录已废弃 覆盖guildbase目录建立行会的方式要改成 命令形式
    addguild 行会名 self -1
清空行会需要在引擎控制器或者合区工具清理,自动开合区的GM可以找助手技术修改


【全系】Dummylogon 需要在结尾加一个乱序登录参数1 不然会反复登录同一个假人


CheckMagicName 烈火剑法  检查是否学习了某个技能


经过测试,996PC的元素增伤减伤,与GOM、LF存在较大差异,当攻击方存在元素增伤时,被攻击方的元素减伤需先抵扣攻击方的元素增伤。
简单举例,攻击方100攻击,元素增伤+100%,,被攻击方元素减伤100%,仍会受到100点伤害。
介于本人对伤害计算要求较高,需要调平与GOM的差异,以下为修复代码。


[@AttackDamage]
#ACT
FORMULATION (<$DAMAGEVALUE>*(100+<$VALUE2>)*(100-<$c.VALUE3>))/((100+<$VALUE2>-<$c.VALUE3>)*100) N$最终伤害
ChangeDamageValue 0 = <$str(N$最终伤害)>


修复996PC元素减伤计算方式与GOM一致,服务器开销我测试了,只多花了0.000291秒


2025.12.23更新批注:实测<$c.VALUE3>,<$c.MAXHP>,<$c.MAXAC>等变量能丝滑取到怪物的属性和元素,以上修复脚本能同时修复攻击怪物时的伤害值


经过测试,996的暴击也与GOM/LF存在较大差异,举例如下:
GOM/LF: (人物综合攻击-怪物防御)*暴击倍数
996PC:人物综合攻击*暴击倍数-怪物防御
故得出以下修复代码,实测有效:


[@CritTrigger]
#ACT
FORMULATION <$PARAM1>-<$c.maxac> N$暴击伤害
Return <$STR(N$暴击伤害)>


2025.12.23更新批注:需要注意的是,以上公式中<$c.maxac>,取决于M2设定的暴击报数,正常暴击倍数为200%就直接用上面公式即可,如果暴击倍数300%,就需要<$c.maxac>*2,如果暴击倍数150%,择<$c.maxac>/2




四.99PC新特性记录


RandomGoto 100 10:@触发1|50:@触发2|100:@触发3 几率跳转


等概率或者按权限随机获取分割字符串
格式:RANSJSTR 参数1 参数2 参数3 参数4 参数5


功能: 修改无属性附加属性值(44)


格式: NEWCHANGEITEMADDVALUE 装备位置(-1时是OK框中的装备, 0~28或30~47时是穿在身上的装备) 属性位置(44) (符号 + - =) 值


检测格式:NEWCHECKITEMADDVALUE 装备位置(-1时是OK框中的装备, 0-55时是穿在身上的装备) 属性位置(44) (符号 < > = ?) 值 保存变量


获取格式:NEWGETITEMADDVALUE 装备位置(-1时是OK框中的装备, 0-55时是穿在身上的装备) 属性位置(44) 存放变量 获取方式(0获取附加属性 1=基础属性+附加属性)


装备常量: 唯一ID<$USEITEM[XX]>;IDX<$USEITEMID[XX]>;名字<$USEITEMNAME[XX]>


XX表示M2设置的装备位置支持(0-111)


取身上物品位置唯一ID
说明:原来的物品常量后面加上ID,就可以获取到装备位装备的唯一ID,如:
衣服原来的常量为:<$DRESS>   想取当前身上衣服唯一ID:<$DRESSID>
武器原来的常量为:<$WEAPON>  想取当前身上武器唯一ID:<$WEAPONID>


新自定义变量(重点)
1.不再需要以文件形式保存自定义变量,也就是以前的SAVEVAR和LOADVAR(不需要LOADVAR,但需要SAVEVAR,不过不再需要SAVE到一个文件)
2.清理全局自定义变量ClearHumCustVar
传统方法需要清空自定义变量文件,并用gmexecute重载在线玩家的自定义变量
3.更牛逼的自定义变量排序SortHumVar、HumVarRank
原本需要写一堆代码实现的功能,一行代码直接搞定,具体自己查说明书


高级分割命令 GETVALIDSTRSUPER 分割内容|分割内容|分割内容| | S$变量
输出的是S$变量1 S$变量2 S$变量3   
老命令ExtractString 不支持自定义变量自动编号


批量使用叠加消耗类型物品(只支持叠加物品)
EatItem 参数1 参数2  
[传统方法需要checkitem take之后再写一遍@STDMODEFUNC里的内容]取两个日期之间相差的天数
格式 DaysBetween 参数1:日期,参数2:日期,参数3:接收变量
取两个时间之间的相差秒数
脚本格式:Taketime 时间1 时间2
时间相差常量:<$Timeresult>


获取背包物品数量
格式:GETBAGITEMCOUNT 物品名称 变量名


禁止跑步 NoRun (0~1)


强制爆出身上物品 HumanDropUseItem 参数1 参数2


身上物品爆出时触发[@CheckDropUseItems],需要在列表二设置哪些装备会触发


数字转图片 <TextAtlas:F:N:X:Y:L>


邮件系统  MailGIVE


使用地图参数限制角色在地图内时间 TimeMap
直接写在mapinfo里 可以省去以前写在常驻定时器里


取指定行会成员人数 GetGuildHum


铭文系统功能 流星火雨X段伤害 恢复类药品加成 施毒术无需佩戴毒(用处不大)


货币超出21亿触发(金币不支持) [@ChangeMoneyOut]


地图播放怪物形象倒计时(支持自定义特效) MAPEFFECTFUNCALL 用来写BOSS死亡墓碑倒计时


获取指定地图怪物数量  FindMapMonster


获取指定地图玩家数量  GetPlayCountInMap


获取指定地图、指定怪物当前血量和最大血量  FindMapMonsterHealth


清理地图某范围的怪物 KillMapMon


改变技能特效 SETMAGICWILLID 参数1 参数2 参数3


设置当前攻击飘血样式 SETATTACKEFFTYPE
写在[@AttackDamage]里 符合条件情况下修改伤害值并修改飘血样式,用在自定义攻击类型 比如破碎打击


主屏幕弹出公告消息 SENDMSGNEW  弹出效果比较帅


新方式给装备设置绑定状态 SETITEMBINDSTATE


唯一ID存仓 TAKEITEMTOSTORAGE   用在自动存仓


多条件判断  IF(2)


设置剪切板内容 SETCLIPBOARDTEXT


等概率或者按权限随机获取分割字符串
RANSJSTR 测试1#2000|测试2#1000|测试3#5000 1 3 S0 S1


脚本开启隔位野蛮功能  格式:SetSpaceMotaebo


批量检测拿走给予背包物品
功能1:批量检测背包物品
格式:CHECKITEMS 参数1 参数2 参数3
功能2:批量拿走背包物品
格式:TAKES 参数1 参数2 参数3 参数4
功能3:批量给予物品
格式:GIVES 参数1
【用处不大,原来要多行检测拿走给予的可以写成一行,有时候判断复杂的时候可以用】


设置等级锁定命令 setlocklevel


切换地图触发  [@EnterMap] 切换前地图为:<$oldmap> 新地图为:<$map>


穿脱装备入包前触发 [@TakeOffExchange] 用于清除只针对身上装备的额外加成


暴击触发 [@CritTrigger]  可修改暴击值


爆物品触发 [@ScatterBagItems] 进包前修改属性


多级脚本使用


H. 表示是英雄
O. 表示是主人
M. 表示是怪物
P. 表示是对面的角色
pex.表示攻击的目标(人物,英雄)


累加行会所有在线成员的个人变量
AddGuildHumVar 行会名称 需要累加的变量(N等等数字变量) 累加结果保存变量


;示例
ADDGuildHumVar 兄弟团 U20 N$统计总数
sendmsg 7 兄弟团中的所有在线成员的U20变量累加合计为<$STR(N$统计总数)>




上一篇:新GOM引擎更新引擎后人物跑一步卡一下解决方法
下一篇:传奇单机版登陆器读取列表失败无法进入游戏的解决办法
回复

使用道具 举报

发表于 1 小时前 | 显示全部楼层
比较全的传奇脚本分享网站,站长辛苦了。
回复

使用道具 举报

懒得打字嘛,点击右侧快捷回复 【64gm论坛,传奇版本库】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

客服QQ:909928377

在线会员自助办理
传奇手游版本库
传奇世界版本库

顶部

QQ|传奇开区一条龙|私服服务端|传奇单机架设教程|手机版|64gm论坛 ( 鄂ICP备2021011479号-2 )|网站地图

GMT+8, 2026-6-1 20:33 , Processed in 0.259202 second(s), 82 queries .

Powered by 64gm X3.5 © 2009-2023 64gm论坛 Inc &

免责声明:本站所有资源均来至网络,仅供学习交流,严禁用于商业用途,请于24小时内删除!开区请获得授权.