GameofMir__游戏Mod制作【1】

目录

一、添加安全区和出生地

二、公告

1:发公告给新人  

2:发送给普通玩家

三、新手装备和技能添加

四、NPC

五、制作MOD补丁和关联

六、自定义按钮

1.添加按钮对应的脚本:

2.这里讲解一下思路:

①:

②:

③拓展:

七、添加游戏地图:

添加一下地图到游戏里面:

 地图参数表 :

使用GM命令去查看地图:

八、泡点升级: 

升级奖励:


一、添加安全区和出生地

        配置文件: D:\MirServer\Mir200\Envir\StartPoint.txt

        

 

 根据上面的命令,写出对应的参数。

 这样就设置成功一个安全区了,然后区M2上看看,出生点的设置。

        如果这里设置了多个安全区,新人出生点的范围选3的话,会从最前面3个安全区,随机选择一个出生。

         这里我就保留一个出生点,然后保存,再重启Misever服务端,重开游戏。

         新建一个人物,测试一下出生点。

         发现新的人物出生点已经在对应的地图了,而且周围的安全区也设置好了。

二、公告

                公告一般在登录脚本(QManage)中实现,其最常用的段是[@login]段,意思是玩家登录以后,执行里面的脚本。

         配置文件: D:\MirServer\Mir200\Envir\MapQuest_Def\QManage.txt

1:发公告给新人  

命令:GuildNoticeMsg

参数详解
功能: 发送自定义颜色的文字信息
参数1: 是前景颜色
参数2: 背景颜色
参数3: 要发送的文字信息
参数4: 四等于'Self'时只发送给自己,等于'Group'时发送给组队, 等于'National'时发送给自己国家的人(使用于国战), 等于'Map'时发送到当前地图中的人物.如果省略参数四表示全服发送。
支持的参数:

%s(玩家名字)

%d(NPC名字)

%m(地图名字)

%x%y(坐标)

<$KILLER>杀死人物的名字

<$MONKILLER>杀死怪物的名字

PS!!!!!:在QM里面写脚本,写好了后要去M2里面加载。

 

        然后上游戏测试,看看公告是不是出来了。

2:发送给普通玩家

命令:SendTopChatBoardMsg 参数详解
功能: 发送聊天框固顶信息
参数1: 发送模式(0发送给所有人,1发送给自己)
参数2: 字体颜色
参数3: 背景颜色
参数4: 时间(秒)
参数5: 信息
参数6: 是否显示人物名称(0显示,1不显示)

         发送一个固定的聊天信息在聊天窗口上面(还是写在[@login]段下面)

PS:65535是一直显示。

三、新手装备和技能添加

        在新人登录的时候,给与一些初始物品和技能。同样写在[@login]段下面。

         加载脚本,上线测试。

         发现给与了装备,并且也穿戴好了。

         这里为了减少QM的压力,部分脚本代码都是写在外部,然后在里面调用的。

         这种写法跟前面是一样的,而且减少了QM代码长度,便于整理和阅读。

四、NPC添加

        新建一个传送员NPC,专门用来传送到某个地图。

        增加NPC,配置文件:D:\MirServer\Mir200\Envir\MerChant.txt

         这边为了方便管理,一般把相同的功能的NPC放在同一个文件夹下面。

         在里面写上脚本功能。

 

五、制作MOD补丁和关联

        游戏里面各种特效和装备,都是通过调用制作好的补丁来生成的,补丁里面保存着对应的素材。

        这里我们就新建一个icon补丁。要使用工具WIL编辑器

        素材可以去别的版本上扒,或者是网上论坛上下载。

        这里先建一个补丁文件,并且设置密码。

        

         然后打开补丁文件,导入素材。

 

        

         打开补丁要输入刚刚设置好的密码,如果密码输入错误会导致打开失败,并且看不到图片素材。

         

         把整个文件的素材导入进去,然后就可以在补丁里面看到图片素材了,要注意这里每一个素材对应的编号都是有用的

         除了能把素材导入以外呢,还能使用导出功能,把图片素材导出到文件夹中。

 

         部分图片有坐标功能,也会被导出来。

         这里光制作了补丁没有用,还要进行绑定,不然游戏登录器识别不到,游戏就加载不到补丁。

 这里去配置器里面找到pak.txt文件,添加补丁的路径和密码。(一般单个补丁都放在MOD下面)

 全部设置好后要重新生成一下登录器,这样新的登录器才能读取到这个补丁。

 如果需要在脚本中调用补丁,还要去M2引擎中进行关联。

 

         以后使用脚本的调用的时候,直接使用补丁编号就可以了。

六、自定义按钮

                这里再游戏主界面上添加一些功能按钮,按钮的素材就再上面添加的补丁后面,再添加几个图片。

        

PS:这里要注意一下我为了方便,这里的图片是后面添加的到补丁里面的,不是新建的,所以不用重新生成登录器,就可以使用,但是要去M2引擎里面更新一下。

         然后使用添加按钮的参数来添加,补丁序号就是上面添加补丁时候M2给的编号,这里就是43。

命令:AddButton 参数详解
功能: 增加自定义按钮命令
参数1: WIL补丁序号,此序号在M2-查看-列表信息二-WIL资源 里面编辑
参数2: 按钮点击后的脚本触发序号,触发QF里面的[@ButtonClickX]X即为触发序号
参数3: 按钮默认图片编号
参数4: 鼠标经过图片编号
参数5: 按钮按下图片编号
参数6: 距离窗口左边的距离(此参数建议用分辨率宽变量计算)
参数7: 距离窗口顶边的距离(此参数建议用分辨率高变量计算)
参数8: 按钮是否可以移动,0=不能移动1=可以移动
参数9: 按钮上面显示的文字标题,-1时为空标题(用于不显示标题)
参数10:

鼠标移动到按钮显示的悬浮框备注信息。

“\”表示换行 “/”颜色分割符 自定义颜色功能需要2015-01-08之后的程序才支持

        同样去QM里面写脚本。

PS:这里要注意按钮序号不能重复,不然会造成覆盖。按钮序号只能为1-20,因为gom引擎最多就添加20个自定义按钮。

        服务端加载QM,去游戏里面看下效果。

 1.添加按钮对应的脚本:

        这里使用调用大窗口的函数,设计一个礼包领取的脚本。这里的触发脚本要卸载QFunction.txt里面。

        功能脚本文件:D:\MirServer\Mir200\Envir\Market_Def\QFunction-0.txt

命令:OpenMerchantBigDlg 参数详解
功能: NPC大对话框
参数1: WIL文件序号
参数2: 图片序号
参数3: 是否可以移动(0,1)
参数4: 显示位置(0=左上角,1=右上角,2=左下角,3=右下角,4=居中)
参数5: 微调坐标X
参数6: 微调坐标Y
参数7: 是否显示"关闭按钮"(0,1)
参数8: "关闭"按钮坐标X
参数9: "关闭"按钮坐标Y

        在QF写触发脚本,这里为了减小代码量,方便修改,把脚本功能单独写,然后在QF里面调用。

 

         去游戏上看看效果。

 

 

兑换码错误示范。

 

兑换码填写正确后,赠送物品和装备。

再次领取显示已经兑换过礼包了。 

2.这里讲解一下思路:

        按下按钮后,使用NPC大对话框弹出信息,然后输入兑换码,首先设一个标志位[200]检查你是否领取过礼包。

        原来没有领取过标志位为0,如果领取标志位会被设为1,则提示已经兑换过。如果没有,则去文件上比对兑换码。

        这里我的兑换码的文件放置在D:\MirServer\Mir200\Envir\QuestDiary\QQ群KYE.txt路径下面。(兑换码可以多设置几个)

        

         然后检查输入的兑换码是不是跟文本文件里面的兑换码一样,如果一样则赠送礼包,并且设置标志位为1,如果不一样,提示兑换码错误。

部分代码:

①:

命令:SendMsg 参数详解
功能: 利用NPC发送信息。
参数1: 信息类型代码
参数2: 字体颜色(0-255)
参数3: 背景颜色(0-255)
参数4: %s信息内容%d
信息类型代码:

1、发送普通红色广播信息。

2、发送普通红色广播信息,并显示NPC名称。

3、发送普通红色广播信息,并人物NPC名称。

4、在NPC头顶,显示普通说话信息。

5、发送红色信息给人物

6、发送绿色信息给人物

7、发送蓝色信息给人物

%s 代表人物名称 %d 代表NPC名称

②:

命令:CheckTextList 参数详解
功能: 检查字符串是否在指定文件中,区分大小写
示例: CHECKTEXTLIST ..\QuestDiary\充值系统\10元卡号.txt <$STR(S$2)> <$STR(S$3)>

PS:可以检查多个字符串,这里后面参数是字符串变量。

③拓展:

命令:PlayImg 参数详解

格式:<PlayImg:F:N:C:T:X:Y:M:L/@Label>

功能:NPC对话框里,播放动态图片
F 表示WIL文件序号
N 表示播放开始图片
C 表示播放张数
T 表示播放速度(毫秒)
X,Y 表示微调坐标
M 是绘制模式0普通绘制 1特效绘制
L 表示播放次数,如果为空或为0时,表示无限次数。设置大于0时,表示播放的次数,次数到了就会自动消失

@Label

是点击图片时需要触发的脚本标签.

        要注意的是这个代码是可以连续播放图片的,连续播放图片就成了动画。        

        在上面的脚本中添加一段代码。

3.再多添加几个常用按钮:

 

QFunction-0.txt里面写对应按钮脚本:

关闭按钮:

        思路比较简单,点击按钮编号为7的按钮,也就是关闭按钮,设置一个字符串,如果字符串为空,说明是关闭按钮,就删除所有的按钮,然后添加一个展开按钮。

        点击展开按钮后,如果字符串不是空,就是添加按钮,就把原来的按钮重新添加上来。并且删除展开按钮,添加关闭按钮。

 

 

七、添加游戏地图:

        一个地图文件是由 SmTiles(存放小地砖地图),Tiles(存放大地砖地图),Objects(存放建筑)。这三个文件组成,

这里可以用地图编辑器打开一个地图文件。

!PS:地图编辑器要放到游戏的data目录下面。

        然后用编辑器打开一个地图文件。

 分析一下地图。

 

 如果出现补丁冲突,就可以使用这个功能查错。

添加地图到游戏里面:

        添加地图的文件:D:\MirServer\Mir200\Envir\MapInfo.txt

地图参数表 :

地图参数标志 功能 格式 说明
CheckQuest 进入本地图执行任务脚本 CHECKQUEST(Q001) Q001 代表脚本名。
Need_Set_On 进入本地图需要人物指定标志为打开状态 NEEDSET_ON(001) 001 代表人物标志
Need_Set_Off 进入本地图需要人物指定标志为关闭状态 NEEDSET_OFF(001) 001 代表人物标志
Music 进入入本地图播放音乐 MUSIC(Wav\bg.mp3) 或者 MUSIC(Wav\sellect-loop2.wav) 代表客户端Wav目录下的sellect-loop2.wav文件
Exprate 进入本地图后杀怪经验倍数 EXPRATE(100) 100代表经验倍数,除以100后为实际倍数
PkWinLevel 进入本地图后可以PK升级 PKWINLEVEL(1) 1代表升多少级
PkWinExp 进入本地图后可以PK得经验 PKWINEXP(1000) 1000代表得多少经验
PkLostLevel 进入本地图后可以PK死亡掉等级 PKLOSTLEVEL(1) 1代表掉多少等级;
PkLostExp 进入本地图后可以PK死亡掉经验 PKLOSTEXPP(1000) 1000代表掉多少经验
DecHp 进入本地图后自动减HP DECHP(1/10) 1/10 1代表减的间隔(秒),10代表一次减多少点
IncHp 进入本地图后自动加HP INCHP(1/10) 1/10 1代表减的间隔(秒),10代表一次加多少点
DecGameGold 进入本地图后自动减游戏币 DECGAMEGOLD(1/10) 说明 1/10 1代表减的间隔(秒),10代表一次减多少点;
IncGameGold 进入本地图后自动加游戏币 INCGAMEGOLD(1/10) 1/10 1代表加的间隔(秒),10代表一次加多少点;
IncGamePoint 进入本地图后自动加游戏点 INCGAMEPOINT(1/10) 1/10 1代表加的间隔(秒),10代表一次加多少点;(用于游戏泡点功能)
RunMon 允许穿怪
RunHuman 允许穿人
NoRunMon 禁止穿怪
NoRunHuman 禁止穿人
NeedHole 进入需要洞
NoReCall 禁止记忆召唤
NoGuildReCall 禁止行会召唤
NoDearReCall 禁止夫妻召唤
NoMasterReCall 禁止师徒传送
NoRandomMove 禁止使用瞬息移动
NoDrug 禁止吃药
Mine 可以挖矿
NoDeal 禁止交易
NoPositionMove 禁止定座标移动
NoReConnect 进游戏时退出本地图 NORECONNECT(3) 3 代表地图号盟重
Quiz 禁止喊话
AllowUseMyshop 允许摆摊,该参数只对个人商店的摆摊有效,对仿Hero摆摊的无效(必需先设置摆摊限制在指定地图才会生效)
NoAllowUseItems 禁止使用物品 NOALLOWUSEITEMS(回城卷|强效金创药)
NotAllowUseMagic 禁止使用技能 NOTALLOWUSEMAGIC(火墙|彻地钉)
NoHeroProtect 禁止英雄守护
Thunder THUNDER(10) 此地图有闪电效果,击中减hp为10
Lava LAVA(10) 此地图地上冒岩浆,击中减HP为10
Flame FLAME(45:82:50|43:84:50) x坐标:y坐标:伤害 。(可以为多坐标。以|分隔)
Horse 允许骑马
Mission 不允许使用任何物品和技能,并且宝宝在该地图会自动消失,不能攻击
NoManNoMon 智能刷怪 无效
NoCallHero 禁止召唤英雄,已召唤英雄将自动消失
Night 该参数与M2内挂设置配合使用,当M2设置免蜡烛时凡是地图带NIGHT开启天气效果,M2取消免蜡烛时不带该参数的地图天启天气效果
NeedLevelTime 没到指定等级时不让进入,发送string.ini里的NeedLevelToXYErrorMsg提示可以自行修改
DecExprateTime(值) 每秒减双倍经验时间,如值小于1时,则默认为1
NgExprate(数值) 内功经验倍数(100代表经验倍数,除以100后为实际倍数)
PulsExprate(数值) 经络经验倍数(100代表经验倍数,除以100后为实际倍数)
Dark 黑暗效果 如果同时存在 DAY以DAY参数效果为准
Day 白天效果 如果同时存在DARK以DAY参数效果为准
SayLevel(等级) 可限制当前地图人物说话等级.
DelDropItem 人物(英雄)死亡后掉落的身上物品立即消失(不掉落在地图中).
Revival(X:N) 当前地图人物可复活的次数,X表示复活次数,N表示人物在当前地图已经复活次数的自动清零间隔(最小30秒).具体表示:每经过指定秒人物在当前地图复活过的次数自动减1.
NoDropUseItems 当前地图人物死亡不掉落身上的物品
NoSafePositionMove 禁止在当前地图安全区中使用传送戒指
NoAllowUseItems 不允许使用物品 NOALLOWUSEITEMS(回城卷,随机传送卷)
OnKillMon 杀死怪物时触发,对应地图参数中需要加入ONKILLMON才可生效!
HitMon(触发字段) 攻击怪物触发。 HITMON(@攻击) 攻击怪物会触发QF脚本的[@攻击]字段
Fight 杀人不加PK值 死亡不掉装备
Fight2 杀人不加PK值 死亡掉装备
Fight3(是否掉装备) 行会战地图 进入该地图名字颜色会变色,杀人不加PK FIGHT3(0) ;FIGHT3(1) 死亡不掉装备; 死亡掉装备
Fight4 挑战地图 杀人不加PK 死亡不掉装备
Weather1 天气效果1 读取Effect_SE.wzl
Weather2 天气效果2 读取Effect_SE.wzl
Weather3 天气效果3 读取Effect_SE.wzl

!PS:添加完成地图后要重启服务端,才能生效。

使用GM命令去查看地图:

        首先先把账号变为GM号,并给与10级的权限。

        再把GM号放到白名单里面去。 (不然插件会检测然后停止游戏)

GM命令再M2上可以查看:

 

        使用命令进入地图,如果都正常显示,没有黑屏,说明地图添加好了。

小地图文件:D:\MirServer\Mir200\Envir\MiniMap.txt

         这里就是添加对应地图的小地图。

八、泡点升级: 

        通过定时器实现。gom引擎定时器只有255

命令:SetOnTimer 参数详解
功能: 个人定时器。
参数1: 定时器索引(0-255)
参数2: 定时间隔(单位为秒)
命令:SetOffTimer 参数详解
功能: 停止定时器
参数1: 定时器索引(0-255)

PS:功能脚本写在QM里面。

 

 

        也可以设置一个NPC进入特定的地图进行升级。

升级奖励:

PS:checklevel命令不支持运算符,后面是直接跟数字。checklevelex支持运算符。

在QF功能脚本里面去写。

 


猜你喜欢

转载自blog.csdn.net/weixin_45423515/article/details/125549611
mod