传奇

时间:2024-03-10 20:21:14

传奇服务端架构

MapInfo.txt 所有的地图和对应的坐标点
# MapInfo.txt 所有的地图和对应的坐标点
[0 比奇省] IncGamePoint(60/1)  # 位置 0
[0122 宫殿] IncGamePoint(60/1) # 位置0122

0 346,186 -> 0122 559,553  # 0:比奇省 坐标 - 0122:宫殿 坐标

MerChant.txt

# 所有服务脚本性质的NPC 和 NPC对应的地图 坐标 NPC的样子
;脚本名称   地图名称 X坐标 Y坐标   NPC名称   标志(方向)   形象 是否属于沙 是否移动 移动间隔   变色模式:1=名字+身体,2=身体变色,3=名字变色 变色间隔(毫秒) 是否固定颜色:0=不固定,1-7=固定颜色.
;┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄
;脚本名称 地图名称     X坐标 Y坐标 NPC在游戏里的名称 标志(方向) 形象 是否属于沙 是否移动 移动间隔

传送员/封魔 4 237 207 传送使者 0 8 0 0 0
传送员/苍月 5 138 324 传送使者 0 8 0 0 0
传送员/比齐 0 330 270 传送使者 0 8 0 0 0
传送员/白日 11 181 323 传送使者   0 8 0 0       0
传送员/魔龙 6 120 154 传送使者 0 8 0 0 0
传送员/土城 3 341 335 传送使者 0 8 0 0 0
盟重城/盟重_老兵 3 326 326 老兵 0 1 0 0 0
盟重城/盟重_炼金师 3 320 334 炼金师 0 3 0 0 0
盟重城/盟重_综合服务 3 320 336 综合服务 0 31 0 0
        #### MonGen.txt  
# 各个地图刷新什么怪物 刷新数量 刷新范围等等
;代码 x y 名称 范围 数量 时间

;比奇
0 600 576 弓箭守卫 0 1 10

Npcs.txt

# 同样也是NPC文件  其实放在MerChant.txt脚本里也是可以的
;名称       代码       地图     x         y   范围 图标

比奇国王           1          0122     29        32        0      8
管理人员           2          0150     9         12        0      8
沙城老兵           0          3        669       338       0      1
红娘               0         m101     27        32        0      12

AdminList.txt

# 管理员列表 把人物名输入到里面就是管理员了  这个在M2里面同样可以设置
*         张三
*         李四

UserCmd.txt

#  游戏里的命令 比如会员命令是 @会员服务 等等。。。对应的脚本是QFunction-0.txt
;引擎插件配置文件
;命令名称 对应编号
会员服务              1
洗红服务              5

MonSayMsg.txt

# 怪物说话配制 需要在M2功能设置里开启怪物说话才可以使用

# 状态(0为杀人,1为被攻击,2为死亡,3为刚刷出来) 刚刷出来发的文字为广播文字全服务器都可以看 # 到。
# 机率(数字越大,说话机率越小)
# 颜色(0为红色,1为绿色,2为蓝色,3为白色) 白色文字,显示在怪物头顶上所有旁边的人都可以看到,# # 其它颜色则显示在人物聊到框中只有对应的人物可以看到。 这个些的很详细 大家自己研究一下就能看懂

状态   机率 颜色     怪物名称               文字内容
1       30      3     弓箭守卫       我只能打你,你不能打我
1       30      3     弓箭守卫     哇!有没有搞错,%d我没K你。你居然K我!
2       30      3     弓箭守卫               不要打我
1       30      3     欢迎光临     欢迎光临宣之再创盛世!完美变态网络!
1       15      3     欢迎光临     强烈强烈要求您下载补丁 不然你不会了解什么是完美。。。

MapQuest_def\QManage.txt

# 登陆脚本 每个人物登陆游戏都会经过此脚本 起着决定性作用 以后学习脚本命令后 这个文件就可以学习# 到了

[@Login]
#IF
CHECKLEVELEX > 0
#ACT
SET [297] 0
VAR Integer HUMAN RWSR
LOADVAR HUMAN RWSR ..\QuestDiary\脚本触发\自定义\游戏数据.txt
goto @main
goto @main11
goto @main1
goto @main2
goto @wudijn
Break

[@wudijn]
#IF
CHECK [298] 1
#act
DELAYGOTO 30 @60xkd

[@60xkd]
#act
SET [298] 0
sendmsg 6 提示:无敌守护冷却完毕 随时可以进行释放...


[@main]
#IF
ISNEWHUMAN
#ACT
inc G0
SENDMSG 0 热烈欢迎!! 第【<$STR(G0)>】名玩家【%s】闪亮登场!!!
#CALL [\脚本触发\自定义\新人技能.txt] @新人技能
map B110
break

[@main11]
#IF
CHECKIPLIST ..\QuestDiary\游戏登陆\禁止登陆IP.txt
#act
kick
messagebox 提示:对不起!你三次登陆错误!IP已经被全面封杀!!!!!
break


[@main1]
#CALL [\脚本触发\封号系统\封号系统.txt] @封号分类

[@main2]
#CALL [\脚本触发\自定义\验证脚本.txt] @登陆激活


[@KSDT]
#act
GAMEPOINT + 100
CALCVAR HUMAN RWSR + 1
SAVEVAR HUMAN RWSR ..\QuestDiary\脚本触发\自定义\游戏数据.txt
SendMsg 5 您的谋杀罪名成立............
SendMsg 5 提示:您在狂杀暗殿杀了人!!奖励100点能量!能量值现有<$GAMEPOINT>点......

[@PTSW]
#act
GAMEPOINT + 50
CALCVAR HUMAN RWSR + 1
SAVEVAR HUMAN RWSR ..\QuestDiary\脚本触发\自定义\游戏数据.txt
SendMsg 5 您的谋杀罪名成立............
SendMsg 5 提示:您已经杀了人!!奖励50点能量!能量值现有<$GAMEPOINT>点......

[@NLBG]
#act
CALCVAR HUMAN RWSR + 1
SAVEVAR HUMAN RWSR ..\QuestDiary\脚本触发\自定义\游戏数据.txt
SendMsg 5 您的谋杀罪名成立............
SendMsg 5 提示:您杀的对手能量不够!!无法获得能量!能量值现有<$GAMEPOINT>点......

Market_Def\QFunction-0.txt

功能脚本 比如游戏里的卷轴使用后的效果就是通过此脚本完成

MapQuest.txt

# 怪物触发脚本 在某地图杀死某个怪将会执行某个功能 比如有些怪物是做任务的时候需要杀死的

0     [100]     0     稻草人         *               Q001
0     [100]     0     多钩猫         *               Q002
0     [100]     0     钉耙猫         *               Q002
0     [100]     0     半兽人         *               Q003
0     [100]     0     毒蜘蛛         *               Q003
↑   ↑       ↑    ↑           ↑            ↑
地图 变量值   是否触发 怪物名        检测          触发脚本名

MonItems

# 此文件夹内就是暴率脚本 里面的怪物名对应的是怪物的暴出物品的暴率

 

搭建环境

1. DBC2000 # 注意配置DB 的path。
2. 版本一套
3. 登录器一个

登录器的配置 及列表更新

# 配置登录器
# 远程游戏列表地址 **
# 游戏登录验证码 要一致
mirserver\LoginSrv
选项-基本设置-专用登录器模式

 

 

DB数据库添加 怪物装备等

# 装备
分类号 衣服,武器外观

# 怪物
攻击类型 攻击样子 攻击效果

添加装备,以及装备补丁的制作

1. 装备素材
2. WIL文件管理器

Hum.wil  # 衣服外观
Hum.wix
Weapon.wil # 武器外观
Weapon.wix
HumEffect.wil # 翅膀外观    
stateitem.wil # 装备在装备栏的样子
Items.wil     # 装备在背包的样子
DnItems.wil   # 装备掉在地上的样子

# 导入
# 每一个武器,衣服(男,女)有1200张图片(坐标)
# 添加的物品需要推荐到数据库中
# 添加完后 把*.wil *.wix 文件打包做成补丁

添加新怪物和新地图

# 怪物添加重点:怪物样子代码计算公式:mon后面的数字减1  再乘以10  得出来的数字就是当前打开怪               物文件的第一个怪物的样子代码,第二个怪物就是得出来的数字加1,第三个怪物用得出来               的数字加2......依此类推


# 地图添加的重点:1.地图和怪物与装备的添加有所不同,分为.wil文件和.map文件,这两个文件制作出 来的时候就是相互对应的,在添加的时候,需要把WIL添加到盛大的客户端或者是把 图片导入盛大的客户端,同时也需要把.map文件加到服务端的map文件夹和客户端的 map文件夹下面,并且设置服务端 D:\MirServer\Mir200\Envir\MapInfo.txt 这个文件,你所新加的地图才会正常的启动

脚本

if    # 如果
act   # 则执行
say   # 对
elseact   # 如果不符合条件,则执行
elsesay   # 如果不符合条件,则对话
break    # 返回
close   # 关闭

check [条件数]  # 检测条件数
set [条件数]    # 给予条件数

G0-G99 全局变量(数字型) 可保存
A0-A99 全局变量(字符型) 可保存
M0-M99 私人变量(数字型) 不可保存
I0-I99 全局变量(数字型) 不可保存
D0-D9 私人变量(数字型) 不可保存
N0-N99 私人变量(数字型) 不可保存
S0-S99 私人变量(字符型) 不可保存
P0-P9 私人变量(数字型) 不可保存

check (变量) (数值) 检测变量是否等于某数值
set   (变量) (数值) 给予指定变量一个数值
inc   (变量) (数值) 加指定数值到变量
small (变量) (数值) 检测变量是不是小于指定数值
large (变量) (数值) 检测变量是不是大于指定数值
equal (变量) (数值) 检测变量是不是等于指定数值

<$STR(x)> 显示当前变量的数值 X等于变量的数值


个人变量
公有和私有变量
自定义变量
1、首先要声明变量
2、读取变量
3 对变量进行编辑 可以 加 减 等等等....
4、保存变量

公有   GLOBAL
私有   HUMAN

Integer   数字型
String   字符型

1.声明变量
VAR Integer 公有/私有 变量名称 数字型
VAR String 公有/私有 变量名称 字符型

2.读取变量
LOADVAR 公有/私有 变量名称 ..\QuestDiary\某某目录\某某.txt

3.修改变量
CALCVAR 公有/私有 变量名称 + - * / =     脚本命令CALCVAR支持对变量进行+ - * / =五种操作

4、保存变量
SAVEVAR 公有/私有 变量名称 ..\QuestDiary\某某目录\某某.txt

5.检测变量
CHECKVAR 公有/私有 变量名称 > < =     脚本命令CHECKVAR支持对变量进行 > < = 三种操作
查看变量
<$公有/私有(变量名称)>

添加NPC

>> Mir200/Envir/MerChant.txt 
测试合成   3  333 333 测试合成npc 0   8   0   0   0   0

>> Mir200/Envir/Market_def   # 添加npc脚本文件 测试合成-3.txt
[@main]
#CALL [\\测试合成\测试.txt] @合成

>> Mir200/Envir/QuestDiary
# 创建文件夹 测试合成-测试.txt

自定义变量设置

>> Envir\MapQuset_def/QManage.txt
[@sharen]
#atc
VAR Integer HUMAN 测试杀人
LOADVAR HUMAN 测试杀人 ..\QestDiary\测试杀人\测试杀人.txt
[@StdModeFuncX]  # X 你需要添加的数值 在db里添加相应的武器装备
#if
#act
give 麻痹戒指 1
give 麻痹戒指 1
give 麻痹戒指 1
添加音乐 \Legend of mir\wav

 

1机2区

1.控制面板下BDE 创建新的HeroDB

2.配置 控制器通讯端口:不能一样 游戏服务器名称 网关端口

如何更新服务端和引擎

1.查看自己的版本和引擎

2.在官方网站下载相应的文件

3.如何更新引擎和版本

4.更新引擎和版本的目的

添加地图

>> Mir200\Envir\MapInfo.txt   # [0  比奇省]
>> Mir200\Map                 # 存放地图的一些文件 0.map

# [0 比奇省]
# [gm1212|0 比奇省二层]

#===================================================================================
[@main]
想去比奇省二层?\\
<跟我来/@go> <怕怕/@exit>

[@go]
#act
mapmove gm1212
give 回城卷 1
close
#==================================================================================

 

如何添人形怪物以及应用方式详细语音教程

>> Mir200\Envir\MonUseItems   # 人形怪所在位置

#===================== 人形怪完整的配置 ============================================
[BaseInfo]
;职业 # 0:战士 1:法师 2:道士
job=0
;性别 # 0:男 1:女
Gender=1
;头发  
Hair=5
;使用魔法
;注意:人形怪必须有相关技能才可以正常使用技能。
Magic=基本剑术,攻击剑术,刺杀剑术,烈火剑法,野蛮冲撞,半月弯刀,开天斩
;是否掉落身上物品 0=不掉 1=掉落
DropItem=0
;活动范围,0是不限制活动范围,超过活动范围自动返回出生点.
Territory=0
;是否允许挖取身上装备 1=是,0=否
ButchUseItem=1
;是否允许挖取身上装备:1为百分百,数字越大机率越小
;注意:设置0并不代表可以100% 挖到身上物品。
ButchRate=80

[UseItems]
;衣服
DRESSNAME=圣战宝甲
;武器
WEAPONNAME=怒斩
;照明物
RIGHTHANDNAME=
;项链
NECKLACENAME=圣战项链
;头盔
HELMETNAME=圣战头盔
;左手镯
ARMRINGLNAME=圣战手镯
;右手镯
ARMRINGRNAME=圣战手镯
;左戒指
RINGLANEME=圣战戒指
;右戒指
RINGRNAME=圣战戒指
;物品
BUJUKNAM=
;腰带
BELTNAME=圣剑腰带
;鞋子
BOOTSNAME=圣战鞋子
;宝石
CHARMNAME=魔血石(大)
;死亡掉装备机率 数字越小掉装备机率越高
DieDropUserItemRate=500
#===================================================================================

怪物数据库-添加数据

# 设置怪物爆率
>> Mir200/Envir/MonItems
# ============================ 新怪.txt ============================================
1/1 屠龙 #杀死一个怪 爆6把屠龙
1/1 屠龙
1/1 屠龙
1/1 屠龙
1/1 屠龙
1/1 屠龙
# ==================================================================================

# 命令制造 怪物

如何添抽奖脚本以及应用方式详细语音教程

# 2种方式
>> Mir200\Envir\Market_Def
# 1.===============================================================================
[@MAIN]
亲爱的玩家:<$USERNAME>  \
¤╭⌒╮╭⌒╮         欢迎光临       \
╱◥██◣ ╭⌒╮           \
︱田︱田田|╰-------------  \
╬╬╬╬╬╬╬╬╬╬╬╬╬       \
------------------------------------------------------------  \
在我这里可以抽奖\
<开抽/@chou>

[@chou]
#IF
CHECKGAMEGOLD   >   499
#ACT
MOVR d9  3         # 3 以下的随机数 [0,1,2] 多少个物品写多少
GOTO   @go
#ELSESAY
你的元宝不够!!

[@go]
#IF
CHECKGAMEGOLD   >   499
EQUAL   d9  0       # 检测指定变量是否等于几 如果等于=0
#ACT
MOV   d9  0 # d9=0
GAMEGOLD  -   500
give 麻痹戒指 1
SENDMSG 7 【%S】恭喜你获得麻痹戒指
SENDMSG 0   恭喜【%S】在土城抽奖获得麻痹戒指一枚!
BREAK


#IF
CHECKGAMEGOLD   >   499
EQUAL   d9  1 # 检测指定变量是否等于几 如果等于=1
#ACT
MOV   d9  0
GAMEGOLD  -   500
give 护身戒指 1
SENDMSG 7 【%S】恭喜你获得护身戒指
SENDMSG 0   恭喜【%S】在土城抽奖获得护身戒指一枚!
BREAK


#IF
CHECKGAMEGOLD   >   499
EQUAL   d9  2 # 检测指定变量是否等于几 如果等于=2
#ACT
MOV   d9  0
GAMEGOLD  -   500
give 复活戒指 1
SENDMSG 7 【%S】恭喜你获得复活戒指
SENDMSG 0   恭喜【%S】在土城抽奖获得复活戒指一枚!
BREAK
# =================================================================================


# 2.===============================================================================
[@main]  
<〖开始抽奖〗/@go>     每次100元宝\

[@go]
#IF
CHECKGAMEGOLD > 99
#ACT
GAMEGOLD - 100
goto @chou
#elseact
goto @likai

[@chou]
#IF
RANDOM 3   # 有三分之一几率执行这段脚本   100:百分之一
#ACT
SENDMSG 0 [%s]进行了元宝抽奖,获得的奖励是:[麻痹戒指]
give 麻痹戒指 1
break

#IF
RANDOM 3
#ACT
SENDMSG 0 [%s]进行了元宝抽奖,获得的奖励是:[护身戒指]
give 护身戒指 1
break

#IF
RANDOM 3
#ACT
SENDMSG 0 [%s]进行了元宝抽奖,获得的奖励是:[复活戒指]
give 复活戒指 1
break

[@likai]
#ACT
MESSAGEBOX 抽奖失败,您没有100个元宝!
# ==================================================================================