目录
一、添加安全区和出生地
二、公告
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功能脚本里面去写。