所有版本私服文字教程及现在的情况预测
现在服务端有两大
一种是模拟器(淡漠夕阳)(自创)
一种是M2版(龙城,一起传世,天天版)(自创)
M2就是2
模拟器就是做起来比较简单的那种很多说什么 功能全啊,结婚啊,攻城啊,行会啊,那都是2的功能把它应用到里来的
现在M2版的虽然功能全,但它不可能拥有的独特之处,
因为现在模拟器还没完善,一些人就用M2版做长久稳定之,其实不然,
M2版只是在模拟器还没完善之前的代替品
绝对不能永远超出模拟器的,模拟器是传世的绝对终极服务端。现在很多都是M2的,比如
天天
一起
古城
..................................................................
模拟器的有
逍遥,大侠,基地测试...............................................
有人说玩仿盛大,那就必须去M2,有人说玩变态,那就去模拟器,(只是现在7月到8月间)
大家现在可以看到,
模拟器正飞速发展着,功能不断更新,从淡漠0710。0715,0718,0719,0722,0724几乎每过几天就有新,
这无疑是最好的预兆,预兆着模拟器能真正超越M2
有人说模拟器垃圾
那只是临时的说法,
想想看,M2基本的发展很没前途,因为是转传世,所以如果要开发出传世的独有功能真的很难,但模拟器不同,模拟器容易开发,因为模拟器本来就是的"老家"嘛。
现在大侠和逍遥被玩家唾骂,
实在背负着很大压力,
所以做为逍遥GM的我,决定进行关闭,等到模拟器完善了,基本可玩的了,稳定了,再开放,到时要捧场哦!
因为现在不完善,所以不可能象他们讲的那样,
什么功能全啊,与盛大官方一样啊,其实根本只是诱惑,只是用M2版的罢了,
真正功能全的时候,就应该是模拟器开发完成了,那样才会与官方一样的,
很多人问我,
为什么你的私服有这么多问题啊?其他却没有!
现在的回答是;我看到了的未来,是模拟器的未来,而不是传2,
所以现在我坚持用模拟器,对不起了我的玩家,让你们辛苦了,
现在模拟器问题是很多,
帐号不可用问题
下线装备消失问题
功能不全及回城卷等不能买和用的问题。。
不是我不去做好 而是模拟器现在需要时间,请谅解。。。。
好了现在我进入正题了。
模拟器与M2版的区别与结构
如下
首先说M2的。这是结构
二、 文档修订纪录
序 号修改时间修 改 人审 核 人备 注
1
2
3
4
5
6
7
8
9
15
16
17
三、 功能及运行
日志通过UDP协议接收GameServer
发送来的加密日志信息包,解密并解析相关内容后,发送给已连接的MySQL数据库,在MySQL数据库中记录下相关日志信息。
在启动日志服务器之前,首先必须启动MySQL数据库,且建好数据库表(见建表脚本文件table_script.txt)。然后正确配置日志的配置文件Config.ini
四、配置文件说明
配置文件:Config.ini
[LogServer]
logip = 10.10.10.36 ( LogServer 接收信息端的IP地址 ,必须与GameServer的配置一致)
logport = 6801 ( LogServer 接收信息端的端口,必须与GameServer的配置一致)
[MySqlServer]
mysqlip = 10.10.10.160 ( MySQL数据库的IP地址 )
mysqlport = 3306 ( MySQL数据库的端口 )
dbname = logs ( 数据库的名称 )
user = root ( 数据库用户名 )
password = ( 数据库密码 )
五、表结构说明
1. GD行为日志表
create table Gd_Action_Logs
(
rowidbigint unsignednot null AUTO_INCREMENT,
Player_Idvarchar(14)not null,
Player_Chrvarchar(18)not null,
Player_IPvarchar(18)not null,
GD_Commandvarchar(255)not null,
Use_datedatetimenot null default 'NOW()',
ActionTypevarchar(50)not null,
primary key (rowid)
);
字段说明:
Player_Id 玩家帐号
Player_Chr 玩家角色名
Player_IP玩家IP地址
Use_date时间
ActionTypeGD_Command
上下线上线/下线
GD指令对象/使用参数/包括群发消息的消息内容。
交易对方/物品/
组队队长角色/组员
行会行会名/在其中担任的职务/
发言内容发言方式(组队/普通/行会内/喊话等)/私聊对象/发言内容
拣物品/扔物品动作类型(扔/拣)物品/金钱数量
装备/取下物品动作类型/装备/取下物品
PK地图/对方/胜负对方死/自己死/对方受伤害但没有死/无伤害/自己的
伤害情况)
打怪地图/怪物/
死亡地图/对方(人或怪物)
非隐身状态时间始终点/
GD参与的举动
2. 交易日志表
create table Items_Transform_Logs
(
rowidbigint unsignednot null AUTO_INCREMENT,
Player_Chr1varchar(18)not null,
Item_List1textnot null,
Player_Chr2varchar(18)not null,
Item_List2textnot null,
Trans_datedatetimenot null default 'NOW()',
primary key (rowid)
);
字段说明:
Player_Chr1参与交易的玩家1角色名
Item_List1玩家1的交易物品
Player_Chr2参与交易的玩家2角色名
Item_List2玩家2的交易物品
Trans_date交易时间
3. 跳GS日志表
create table Jump_Gs_Logs
(
rowidbigint unsignednot null AUTO_INCREMENT,
Player_Chrvarchar(18)not null,
JumpDetailvarchar(80)not null,
Jump_datedatetimenot null default 'NOW()',
primary key (rowid)
);
字段说明:
Player_Chr玩家角色名
JumpDetail跳GS的详细描述
Jump_date跳GS时间
4. 组队日志表
create table Group_Logs
(
rowidbigint unsignednot null AUTO_INCREMENT,
Player_Chrvarchar(18)not null,
GroupDetailvarchar(100) not null,
Group_datedatetimenot null default 'NOW()',
primary key (rowid)
);
字段说明:
Player_Chr玩家角色名
GroupDetail组队的详细描述
Group_date组队时间
5. 仓库存取物品记录日志表
create table StoreItem_Logs
(
rowidbigint unsignednot null AUTO_INCREMENT,
Item_Idbigint unsignednot null,
Item_Namevarchar(30)not null,
Item_Hostvarchar(18)not null,
Action_Typevarchar(10)not null,
Item_Propertyvarchar(255)not null,
StoreDatedatetimenot null default 'NOW()',
primary key (rowid)
);
字段说明:
Item_Id物品ID
Item_Name物品名称
Item_Host物品的所有者
Action_Type存物品/取物品
Item_Property物品属性
StoreDate存取物品时间
6. 武器升级记录日志
create table WeaponUpdate_Logs
(
rowid bigint unsigned not null AUTO_INCREMENT,
Weapon_Idbigint unsigned not null,
Weapon_Name varchar(30) not null,
Weapon_Host varchar(18) not null,
Update_Type varchar(20) not null,
Weapon_Property varchar(255) not null,
UpdateDate datetime not null default 'NOW()',
primary key (rowid)
);
字段说明:
Weapon_Id武器ID
Weapon_Name武器名称
Weapon_Host武器所有者
Update_Type使用祝福油被祝福/使用祝福油被诅咒/修练/PK被诅咒
Weapon_Property武器升级前属性和升级后属性
UpdateDate时间
7. PK记录日志表
create table pk_logs
(
rowid bigint unsigned not null AUTO_INCREMENT,
Player1_Chr varchar(18) not null,
Player2_Chrvarchar(18) not null,
Pk_Resultvarchar(50) not null,
Pkdatedatetime not null default 'NOW()',
primary key (rowid)
);
字段说明:
Player1_Chr玩家角色名
Player2_Chr对方玩家角色名
Pk_ResultPk结果
PkdatePK时间
8. 行会记录日志表
create table guild_logs
(
rowid bigint unsigned not null AUTO_INCREMENT,
Player_Chr varchar(18) not null,
Guild_Name varchar(30) not null,
IsGuildChairsmallint unsignednot null,
Action_Type varchar(20) not null,
Detailvarchar(20) ,
Pkdate datetime not null default 'NOW()',
primary key (rowid)
);
字段说明:
Player_Chr玩家角色名
Guild_Name玩家所属行会名
IsGuildChair0
Pkdate时间
Action_TypeDetail
加入行会
退出行会
建立行会
删除行会
编辑封号
编辑公告
申请行会战对方行会名
同盟对方行会名
解除同盟对方行会名
添加行会成员成员角色名
删除行会成员成员角色名
申请攻城 城主行会
9. 升级记录日志表
create table upgrade_logs
(
rowid bigint unsigned not null AUTO_INCREMENT,
Player_Id varchar(14) not null,
Player_Chr varchar(18) not null,
Upgradevarchar(10) not null,
date datetime not null default 'NOW()',
primary key (rowid)
);
字段说明:
Player_Id 玩家帐号
Player_Chr 玩家角色名
Upgrade升级描述 (例如从一级升到二级为:1-〉2 )
Date升级时间
10. 声望值记录日志表
create table repute
(
rowid bigint unsigned not null AUTO_INCREMENT,
player_Chrvarchar(18)not null,
reputevarchar(20)not null,
detailvarchar(50)not null,
date datetime not null default 'NOW()',
primary key (rowid)
);
字段说明:
player_Chr玩家角色名
repute声望值变化
detail声望值变化原因
date时间
11. 婚姻关系记录日志表
create table marry
(
rowid bigint unsigned not null AUTO_INCREMENT,
hu##andvarchar(18)not null,
wifevarchar(18)not null,
typevarchar(20)not null,
detailvarchar(50)not null,
date datetime not null default 'NOW()',
primary key (rowid)
);
字段说明:
hu##and丈夫角色名
wife妻子角色名
type结婚、离婚
detail结婚或离婚的原因
date时间
12. 师徒关系记录日志表
create table teacher
(
rowid bigint unsigned not null AUTO_INCREMENT,
teachervarchar(18)not null,
studentvarchar(18)not null,
typevarchar(20)not null,
detailvarchar(50)not null,
date datetime not null default 'NOW()',
primary key (rowid)
);
字段说明:
teacher师父角色名
student徒弟角色名
type建立师徒关系、解除师徒关系
detail建立或解除师徒关系的原因
date时间
M2版文件结构图
├GameLog(物品日志)
│ └LogDataSrv(物品日志服务端)
│ ├LogBase(包含物品日志文件)
│ ├LogData.ini(物品日志配置文件)
│ └LogDataServer.exe(日志服务端程序)
├Gate_Server(客服接口)
│ ├LoginGate(ID登录接口)
│ │ ├LoginGate.exe(ID登录接口程序)
│ │ └MirGate.ini(ID登录接口配置文件)
│ ├SelChrGate(角色登录接口)
│ │ ├Gate30.exe(角色登录接口程序)
│ │ └Mirgate.ini(角色登录接口配置文件)
│ └RunGate(运行接口)
│ ├RunGate.exe(运行接口程序)
│ ├Mirgate.ini(运行接口配置文件)
│ └WordFilt.ini(脏话信息)
├Mir200(服务端,服务于RunGate)
│ ├ConLog(登录日志)
│ ├Envir(环境设置)
│ │ ├Castle(沙城状态)
│ │ │ ├AttackSabukWall.txt(攻城信息)
│ │ │ └Sabukw.txt(沙巴克状态信息)
│ │ ├Defines
│ │ ├MapQuest_def
│ │ ├Market_def(商人信息,与Merchant.txt对应)
│ │ ├Market_prices(商品物价信息)
│ │ ├Market_saved(商品存储信息)
│ │ ├Market_upg
│ │ ├MonItems(怪物所爆物品及几率,与Monster.DB对应)
│ │ ├Npc_def(NPC人物信息,与NPCs.txt对应)
│ │ ├QuestDiary
│ │ ├GMFile.txt(GM列表文件)
│ │ ├GuardList.txt(守卫坐标文件)
│ │ ├MakeItem.txt(毒药配方文件)
│ │ ├MapInfo.txt(地图信息文件)
│ │ ├MapQuest.txt(任务配置文件)
│ │ ├Merchant.txt(商人信息文件)
│ │ ├MiniMap.txt(小地图信息文件)
│ │ ├Mongen.txt(怪物刷新配置文件)
│ │ ├Npcs.txt(NPC信息文件)
│ │ ├StartPoint.txt(复活点信息文件)
│ │ └UnbindList.txt(打捆物品拆包信息文件)
│ ├GuildBase(行会信息)
│ │ ├Guilds(行会信息)
│ │ └GuildList.txt(行会列表文件)
│ ├Log(运行服务端日志)
│ ├Map(地图文件)
│ ├Notice(提示信息)
│ │ ├LineNotice.txt(运行中的提示,蓝字部分)
│ │ └Notice.txt(选择之后出现的版权信息)
│ ├Share
│ ├ShareL
│ ├ShareV
│ ├!Abuse.txt(脏话信息)
│ ├!RunAddr.txt
│ ├!ServerTable.txt
│ ├!Setup.txt(运行服务端配置文件)
│ ├M2Server.exe(运行服务端)
│ └Mir.dat(与客户端的Mir.exe对应)
├Mud2(服务端)
│ ├DB(数据库Paradox)
│ │ ├Magic.DB(技能数据库)
│ │ ├Monster.DB(怪物数据库)
│ │ └StdItems.DB(物品数据库)
│ ├DBSrv200(角色选择服务端,服务于ChrSelGate)
│ │ ├Connection
│ │ ├FDB(人物数据库,数据库格式为自定义格式)
│ │ ├Log(角色选择服务端日志)
│ │ ├!AddrTable.txt
│ │ ├!IdList.txt(交费账号列表,!Setup.exe中ServiceMode=TRUE时起作用)
│ │ ├!ServerInfo.txt
│ │ ├DBServer.exe(角色选择服务端)
│ │ └DBSrc.ini(角色选择服务端配置文件)
│ └LogSrv(ID登录服务端,服务于LoginGate)
│ ├ChrLog(ID创建、修改日志)
│ ├ConLog(ID登录日志)
│ ├CountLog(ID登录数量统计日志)
│ ├IDDB(ID数据库,数据库格式为自定义格式)
│ │ ├ID.DB(ID数据库)
│ │ ┕ID.DB.idx(ID数据库索引)
│ ├!AddrTable.txt
│ ├!ServerAddr.txt
│ ├!UserLimit.txt
│ ├LoginSrv.exe(ID登录服务端程序)
│ └LogSrv.ini(ID登录服务端配置文件)
┕Share
├Feed
└GameWFolde
现在说模拟器
历史:
今后,模拟器还将继续完善下去,为了实现最终的世界的梦想。
功能:
目前的淡抹夕阳模拟器的功能主要有以下几个大类
1- 帐号注册/登陆/修改密码
2- 角色创建/删除/恢复
3- 打怪升级以及属性变化
4- 主要武器装备饰品外观和数值效果
5- NPC以及脚本系统。
6- 部分职业的技能效果支持
7- 简单聊天(说来比较惭愧,这么简单的系统一直没有完善)
模拟器的一些指标如下
1- 后台使用SQL Server2000作为数据库
2- 使用分布式的逻辑架构
3- 使用IOCP(完成端口)来处理大量的并发连接和庞大的数据流I/O。
4- 各种单个逻辑模块使用统一的界面风格和操作方式。
5- 对于数据,采用容易编辑的txt作为数据源
架设:
1- 部署:
a) 数据库部署
首先- 安装SQL Server2000 或者更高。并确保SQL server的服务是运行状态
。而且要打开SQL Server2000的网络服务端口。
然后- 用查询分析器的文件菜单中的打开菜单项来打开模拟器压缩包中带的4个数
据库表,依次执行,将会生成一个叫做MirWorldDB的数据库和4张表。分别是TBL_ACCOUNT/
TBL_CHARACTER_INFO/ TBL_CHARACTER_ITEM/ TBL_CHARACTER_MAGIC。
最后- 数据库就部署完毕~
b) 模拟的各个模块的部署
首先- 确定部署策略,loginserver/selectcharserver/gameserver 三个
需要接受客户端的连接,所以,不能架设在内网。其他的模块可以放在内网。(如果有的话)
然后- 将每个模块的exe拷贝到相应的机器,可以放在一个文件夹(配置文件可以
共享),也可以放在不同的文件夹(独立的配置文件)。
最后- 启动各个模块。这里,透露一个小秘密,在每个模块启动时加参数,可以
自动启动该模块,不需要再去按开始按钮。方法是 为每个模块创建一个快捷方式,打开快捷方
式的属性对话框,然后会看到一个写着“目标”的编辑框,如果路径不含有空格,编辑框内的
文字没有引号,如果有空格,则框内文字有引号。这个不需要管,只要在这些文字的后面空一
个格,写上“start”5个字母就可以了。试试看用这些快捷方式启动,是不是自动就启
动好了。 还有一个方法: 建立一个名为startserver.cmd的文件,用记事本写入命令 “start
模块exe的名字 start”,(注意,引号不要写进去),保存后,双击这个cmd文件就可以自动
启动这个模块了。
2- 配置:
a)整体部署配置(config.ini)
观察一下config.ini里面的内容,会发现开头有两句配置:
scaddr = 127.0.0.1
scport = 6000
这两句的意思是告诉模块,服务器中心的地址和端口,用来注册自己到中
心。这里要注意的是,无论是多个模块放在一起共享配置文件,还是分开,独立的配置文件,
开头的这两行配置一定要有。否则会工作不正常。
接下来,会看到几个段(就是以[...]开头的一组配置)。这些段的段名是固定的,
不能随便修改,否则就会不正常了。每个段有6个相同的配置项。我们以登陆段为例
[登陆]
addr =222.65.7.114
port = 7000
type = loginserver
id = 1
group = 1
name = 登陆1
其中addr 描述的是模块的地址,一定要设置成部署位置的ip地址,如果要
公开,就写成外网地址,如果不要公开的就写成内网地址。port描述的是登陆的端口。
type描述了该配置的模块的类型,登陆的类型一定要设置成loginserver。id 描述的是
该服务器在自己组内的id,如果组内的该类型的大于一台,id就不能重复。group描述的
是组的代号,一般设置成1,有多组存在时,设置成组的代号,该代号只能为数字。name
描述了该的名字,这个对于gameserver和selectcharserver很重要,设置不对会找不到
的。
b)dbServer的配置
config.ini里面的数据库的段里面多了几个配置选项。
server = (local)
database = MirWorldDB
account = sa
password = dragon
server描述的是SQL Server所在的位置,如果在本机就是(local),如果在其他机器
,一般是该机器的机器名。 database描述的是表所在的数据库,如果是用原版的sql脚本导入
的,这里一般是 MirWorldDB。 account 是描述这个数据库的登陆帐号,可以不用sa这个账号
,但是必须有查询写入的权限。password 描述的是数据库登陆账号的密码。
c)GameServer的配置
GameServer的配置较多,除了config.ini里面的基本配置外,还需要一个叫做data
的文件夹来存放各种数据。其中有个叫作server.txt里面就是gameserver的基本逻辑配置
。一般内容如下:
[humandata]
warrior = .\data\humandata\战士.csv
magician = .\data\humandata\法师.csv
taoshi = .\data\humandata\道士.csv
;这里描述的是角色每个等级的数据的相对于exe的路径。这三个文件必须为.csv文件,你可以
用excel来编辑这三个文件,修改各个等级的属性数据。
[firstlogin]
script = firstlogin
startlevel = 22
startgold = 0
startitem = 金创药(小量)*2/赤明天帝/金鹏宝甲(男)*2
;这里描述的是,角色第一次登陆的一些配置,startlevel描述的是起始的等级,startgold描
述的是开始时候背包内的系统给予的金钱的数量。startitem描述的是开始的时候系统给予的物
品,不同的物品用/来分隔,每个物品名字必须与baseitem.txt里描述的物品名字一致。而且可
以在名字后面用 *和数字来描述物品的数量。
[setting]
downitemupdatetime = 300
;这里描述的是掉在地上的物品更新的时间,以秒为单位。
[var]
itemupdatetime = 300
;这里描述的是掉在地上的物品更新的时间,以秒为单位。目前使用上面一个,这个未使用。
maxgold = 8000000
;这里描述的是角色最大可以持有的金钱数量。
[name]
goldname = 金币
;这里描述的是金币的名字,必须和MonItems里面的金币名字一致。否则怪物不掉钱
malename = 男
femalename = 女
;这里描述的是性别的名字,这个是应英国朋友的要求,修改来适应英文版的需要。
;这个跟@makeitem 命令造衣服有关,主要是没有指定男女的衣服名字后面加上一个(男)之类的标记来区别相同的名字。
第一节 data文件夹的布局
首先有 5个子文件夹,分别为
humandata 存放人物升级的属性信息
maps 存放地图信息
MonItems 存放怪物掉宝文件
script 存放npc的脚本文件
stringlist 存放脚本中使用的一些字符串的表,具体作用在讲解脚本的时候详细描述
还有几个文本文件,分别为
server.txt 内容是世界的一些配置
baseitem.txt 物品数据文件
basemagic.txt 技能数据文件
basemonster.txt 怪物数据文件
mongen.txt 怪物刷新文件
npcgen.txt npc刷新文件
startpoint.txt 出生点的设置
notice.txt 协议对话框的内容
以上是data中的主要数据的分布,其他文件一般是非必须的文件。
第二节。物品数据
物品数据文件 baseitem.txt 详细解释
在物品数据文件baseitem.txt里面,每种物品数据文件按照下面这种格式来存储。
name/stdmode/shape/image/specialpower/ac1/ac2/mac1/mac2/dc1/dc2/mc1/mc2/sc1/sc2/wei
ght/maxdura/price/needtype/needlevel
示例:
粗布衣(男)/10/ 1/117/0/2/ 2/0/1/0/0/0/0/0/0/ 5/ 5/2000/0/1
其中,各个字段的含义是
name 表示物品名字,
stdmode 表示物品的种类,
shape 字面上是形状,其实表示物品的一些特性,根据stdmode不同而不同,
image 表示的是物品的外观,就是掉在地上的外观和放在背包里面的外观,对于武器,头盔
和衣服来说,还表示装备在身上的时候在装备画面的样子,但不表示中的角色的外观。这
个,我们稍候再议。
specialpower,ac1,ac2,mac1,mac2这些属性根据stdmode的不同而表示不同的含义。
dc1 表示最小攻击力
dc2 表示最大攻击力
mc1 表示最小魔法
mc2 表示最大魔法
sc1 表示最小道术
sc2 表示最大道术
weight 表示物品的重量
maxdura 表示物品的持久/书籍表示学习的等级
price 表示价格(这个属性基本没用)
needtype 表示限制条件的类型(0- 表示等级限制 1- 表示攻击力限制 2- 表示魔法限
制 3- 表示道术限制)
needlevel 表示限制条件的数值
stdmode字段,在整个物品数据里面起着非常重要的作用,它决定了物品的作用和属性加成。
首先,让我们了解一下都有哪些物品类型
0- 药品
10 男装
11 女装
15 头盔
5 普通武器
6 特殊类武器(锄头等)
22 23 戒指类
19 20 21 项链类
24 26 手套手镯类
4 书籍
3 特殊作用类物品,如祝福油
31 药品包,捆绑类物品
81 靴子
58 腰带
45 材料 如 红绿蓝 宝石 x星珠 魔蛋 未鉴定的物品等
55 特殊类物品 如 天玉宝石
59 60 61 可装备宝石类
30 勋章神饰类
34 道符
52 杂物类
44 鉴定卷轴 任务类物品 战斗号角
47 金砖金条类
46 赏金令牌等任务物品
38 黑暗之戒
25 稻草人偶
33 马牌
43 矿石
49 字体卷轴
下面详细解释下 药品 武器 男女服装 戒指 手镯 腰带 靴子 宝石 勋章 神饰 stdmode对属性
加成的影响
〈〈药品 〉〉
stdmode = 0
ac1 表示+HP
mac1 表示+MP
其他属性不加
〈〈武器 〉〉
stdmode = 5,6
ac1 表示幸运
ac2 表示准确
ac3 表示诅咒
dc1 dc2 mc1 mc2 sc1 sc2 分别表示 攻击 魔法 道术 的最小最大值
〈〈男女衣服 〉〉
stdmode = 10,11
ac1 ac2 表示防御最小最大值
mac1 mac2表示魔防最小最大值
dc1 dc2 mc1 mc2 sc1 sc2 分别表示 攻击 魔法 道术 的最小最大值
〈〈戒指 〉〉
stdmode = 22 时
ac1 ac2 表示防御最小最大值
mac1 mac2 表示魔防最小最大值
dc1 dc2 mc1 mc2 sc1 sc2 分别表示 攻击 魔法 道术 的最小最大值
stdmode = 23 时
ac1 表示攻击速度
ac2 表示毒物躲避,显示出来的值是设置值的10倍,比如设置10 显示 100%
mac1 表示攻击速度减多少
mac2 表示中毒恢复 也是10倍的关系
dc1 dc2 mc1 mc2 sc1 sc2 分别表示 攻击 魔法 道术 的最小最大值
〈〈手镯〉〉
stdmode = 24
ac2 = 命中
mac2 = 回避
dc1 dc2 mc1 mc2 sc1 sc2 分别表示 攻击 魔法 道术 的最小最大值
stdmode = 26
ac1 ac2 表示防御最小最大值
mac1 mac2 表示魔防最小最大值
dc1 dc2 mc1 mc2 sc1 sc2 分别表示 攻击 魔法 道术 的最小最大值
〈〈腰带〉〉
stdmode = 58
ac1 ac2 表示防御最小最大值
mac1 mac2 表示魔防最小最大值
dc1 dc2 mc1 mc2 sc1 sc2 分别表示 攻击 魔法 道术 的最小最大值
〈〈靴子〉〉
stdmode = 81
ac1 ac2 表示防御最小最大值
mac1 mac2 表示魔防最小最大值
dc1 dc2 mc1 mc2 sc1 sc2 分别表示 攻击 魔法 道术 的最小最大值
〈〈宝石〉〉
stdmode = 59, 60, 61
ac1 ac2 表示防御最小最大值
mac1 mac2 表示魔防最小最大值
dc1 dc2 mc1 mc2 sc1 sc2 分别表示 攻击 魔法 道术 的最小最大值
〈〈勋章〉〉
stdmode = 30
shape = 0
ac1 ac2 表示防御最小最大值
mac1 mac2 表示魔防最小最大值
dc1 dc2 mc1 mc2 sc1 sc2 分别表示 攻击 魔法 道术 的最小最大值
〈〈神饰〉〉
stdmode = 30
shape = 1
sc1 表示极品爆出率
接下来说一下shape对于物品的影响,
在上面一节中,我们看到,神饰和勋章stdmode 都是30,但是shape不同,加成属性就不同。其
实shape的作用远大于此,大概说来,shape就是一种子类型的作用,就是从stdmode这种大类型
中分出子类
〈〈衣服〉〉
shape在衣服类中,取值范围是0-15,分别表示光身子和15套衣服,其实用到的只有其中的几套
,还有几套做了保留。
〈〈武器〉〉
shape在武器类中,标志着拿在手里的外观,就是别人看到你的样子。
〈〈药品〉〉
根据观察,shape在药品中的左右就是标记是否是瞬间作用(太阳水) 0 表示慢慢恢复 1表示瞬
间恢复
〈〈书籍〉〉
书籍类,shape的作用在于标记书籍适用的职业 0 表示武士 1 表示法师 2 表示道士。
其他类的shape的作用就在于区别特殊于一般的关系,比如特殊戒指,特殊项链的shape就和普
通的不一样。
好了,物品数据的解释就到这里,如果还有不明白的,可以在发帖子问我。
第三节 地图数据
地图数据存放在data文件夹下的maps子文件夹下。
进入maps子文件夹,可以看到两个文件夹logic和physics。字面意思就是逻辑和物理。
淡抹夕阳模拟器和普通的m2的一个不同之处就是地图数据处理上,完全不同。分为逻辑
地图和物理地图两种,
逻辑地图主要负责管理地图上的角色,怪物,等,物理地图主要提供障碍信息。
简单的来说,这种方式的好处就是,当你中有两个中州的时候,他们都指向内存和硬盘
上的同一个 0.nmp。也就是节省内存和硬盘消耗,共享同一份障碍图。
存放在physics里面的就是后缀名是nmp的地图文件,大家可以从客户端的map文件夹把所有的
nmp文件拷贝到physics文件夹内。
存放在logic里面的是后缀名是ini的逻辑地图配置文件。ini的内容,一般是下面这样的。
[define]
name = 中州
;地图的名字,显示在客户端的界面上
blockmap = 0
;障碍图的名字,比如障碍图是xxxx.nmp 这里就写xxxx
minimap = 101
;小地图号,这个对应客户端的mmap里面的小地图
mapid = 16
;地图编号,必须是唯一的编号
linkcount = 19
;连接数量,就是出口的数量
[linkpoint]
;下面描述了19个出口的信息,格式是 (本地图x,本地图y)=〉[目的地图编号](目的地图x,目的
地图y)
linkpoint1=(740,328)=〉[17](34,45)
linkpoint2=(468,226)=〉[164](116,85)
linkpoint3=(520,267)=〉[29](7,21)
linkpoint4=(725,35)=〉[67](438,971)
linkpoint5=(484,141)=〉[28](12,52)
linkpoint6=(372,207)=〉[30](5,16)
linkpoint7=(473,250)=〉[31](9,20)
linkpoint8=(548,195)=〉[32](19,28)
linkpoint9=(381,258)=〉[34](6,19)
linkpoint10=(418,205)=〉[37](6,13)
linkpoint11=(461,259)=〉[38](8,13)
linkpoint12=(497,245)=〉[39](7,13)
linkpoint13=(493,272)=〉[40](7,16)
linkpoint14=(474,126)=〉[41](13,18)
linkpoint15=(488,173)=〉[42](6,18)
linkpoint16=(28,346)=〉[43](258,497)
linkpoint17=(55,176)=〉[43](241,35)
linkpoint18=(777,393)=〉[47](201,329)
linkpoint19=(783,532)=〉[273](12,14)
如果地图连接出了问题,可以修改这里
在发布的中,我们预先根据官方的minmaplist.txt生成了一些数据ini,但是可能有错误,
当遇到错误的时候,可以自己修改,也可以到求助,我们会给你帮助的。
第四节。其他数据
1- GM列表 gmlist.txt
里面保存了gm的帐号和等级,使用这些帐号登陆的gm就可以通过@gamemaster来打开gm模式
,从而使用一些gm特有的命令。
这里注意!!!!,是登陆用的帐号,不是角色名字,好多玩家都因为写了角色名字导致无法
打开gm模式。
现在支持的gm命令
@setlevel(等级) 设置自己的等级
@addexp(经验) 增加自己的经验
@move(地图id, 坐标x, 坐标y ) 移动到指定地图的x,y坐标处
@move(坐标x, 坐标y) 移动到当前地图的 x,y 坐标处
@makeitem(物品名字 创建一个物品,并加入到背包里
@addmagic(技能名字 为自己添加一个存在于basemagic.txt里的技能
@callmon(怪物名字 召唤一个怪物到自己的下面一个格子(如果该格子有人,命令失败)
常用的gm命令就这些了,其他的都是开发阶段作调试用命令,不推荐使用。
2- 技能数据 basemagic.txt
这个由于暂时没有完全完成,所以,不能给大家详细的介绍,中间的文件结构可能会按照开发
进度而改变,所以,请大家关注,上面有完整的从官方dump下来的技能数据。
3- 怪物数据basemonster.txt
怪物数据文件的结构如下
name/title/view/hp/dc/ac/mac/gainexp/delay/autoattack
name 表示怪物类名字
title 表示怪物的显示名字(客户端显示)
使用这两个名字是为了解决相同名字的怪物掉不同的东西和拥有不同的能力。
view 表示怪物的外观,内部上已经发布了全部怪物的外观,没有看到的朋友可以找一下老
贴子,我们发布的包里也是完整版的怪物外观。
hp 表示怪物的hp上限
dc 表示怪物攻击力 用 a-b的形式, a表示最小攻击力,b表示最大攻击力
ac 表示怪物防御 使用和攻击力一样的表示形式
mac 表示怪物的魔法防御,使用和攻击力一样的表示形式
gainexp 表示杀死怪物可以得到的经验值
delay 表示怪物的ai时间间隔,单位是毫秒。
autoattack 是一个标记表示是否自动攻击,现在还没用到,全部设置为1
4- mongen.txt 怪物刷新数据文件
文件格式如下
name/mapid/x/y/range/count/refreshdelay(seconds)
name表示刷新的怪物名字,对应怪物数据文件中的name
mapid 表示刷新的地图的id
x,y表示刷新的坐标
range表示刷新的范围,以格子为单位
count表示刷新的数量,单位 只
refreshdelay表示刷新的间隔,单位 秒
5- startpoint.txt 出生点坐标文件
warrior = [16](414,600)-(416,604)
magician = [16](414,600)-(416,604)
taoshi = [16](414,600)-(416,604)
前面的 warrior表示战士 magician 表示法师 taoshi 表示道士
后面的[]内的数字表示地图的编号 16 代表中州
后面第一个括号表示 区域的左上角坐标, 后面一个括号表示区域的右下角坐标。
6- notice.txt 协议框文字
每次登录游戏的时候都能看到写在这个文件中的文字,确认后才能进入。
7- npcgen.txt npc的刷新文件
格式如下
name/id/view/mapid/x/y/istalk/scriptfile
name 表示npc的名字
id 表示npc的数据库id,目前没用随便设置
view 表示npc的外观,上有人发过全版
mapid 表示npc所在地图的id
x/y 表示npc的坐标
istalk 表示是否为对话npc,目前固定为1
scriptfile 是脚本文件的名字,对应script文件夹中的 设置值.txt 文件, 比如你设置这里
为 abc 那么对应script下的abc.txt
有的人说IP不会设置 下面看着
建立一个名为MirWorldDB的数据库,打开查询分析器把数据库指向MirWorldDB数据库,用记事本打开下的dbo.TBL_ACCOUNT.TAB文件.复制内容到查询分析器,然后点上面的蓝三角!(后面的2个分别为dbo.TBL_CHARACTER_INFO.TAB\dbo.TBL_CHARACTER_ITEM.TAB同样这样操作!),现在夕阳一般DB文件夹里还有第4个技能文件:magic.sql,也要导入,否则技能将无法使用!随着以后新版的开发,只要是DB里的文件就全部要导入~
然后到控制面版、管理工具、打开数据源 (ODBC) 选择系统DSN,点添加,选择SQL
server完成名称为MirWorldDB,描述为空,填入(local)下一步,指向MirWorldDB数据库完成。
接下来打开下的config.ini内容具体如下!
scaddr = 222.138.109.183 IP(注意)
scport = 6000
[数据库]
addr = 222.138.109.183 IP(注意)
port = 8000
type = databaseserver
id = 1
group = 1
name = MirWorldDB 数据库名(注意)
server = (local) 名(注意)这里(local)指本机的意思,一般不修改
database = MirWorldDB 数据库名(注意)
account = sa SQL2000的用户名(一般默认为SA也需要改)
password = ********* SQL2000的密码(注意)这个没个人估计都不一样!
[登陆]
addr = 222.138.109.183 IP(注意)
port = 7000
type = loginserver
id = 1
group = 1
name = 九九 名(注意)
[选人]
addr = 222.138.109.183 IP(注意)
port = 7100
type = selcharserver
id = 1
group = 1
name = 九九 名(注意)
[世界]
addr = 222.138.109.183 IP(注意)
port = 7200
type = gameserver
id = 1
group = 1
name = 九九 名(注意)
[中心]
addr = 222.138.109.183 IP(注意)
port = 6000
type = servercenter
id = 1
group = 1
name = 九九 名(注意)
接下来启动,顺序为servercenter.exe(这个必须第一位)然后从下往上启动!
启动完后下载进吧 好现在发布我自创新怪(逍遥霸主)
逍遥霸主/逍遥霸主/0xc7/23000/60-80/20-50/40-41/10000/2000/0
一种是模拟器(淡漠夕阳)(自创)
一种是M2版(龙城,一起传世,天天版)(自创)
M2就是2
模拟器就是做起来比较简单的那种很多说什么 功能全啊,结婚啊,攻城啊,行会啊,那都是2的功能把它应用到里来的
现在M2版的虽然功能全,但它不可能拥有的独特之处,
因为现在模拟器还没完善,一些人就用M2版做长久稳定之,其实不然,
M2版只是在模拟器还没完善之前的代替品
绝对不能永远超出模拟器的,模拟器是传世的绝对终极服务端。现在很多都是M2的,比如
天天
一起
古城
..................................................................
模拟器的有
逍遥,大侠,基地测试...............................................
有人说玩仿盛大,那就必须去M2,有人说玩变态,那就去模拟器,(只是现在7月到8月间)
大家现在可以看到,
模拟器正飞速发展着,功能不断更新,从淡漠0710。0715,0718,0719,0722,0724几乎每过几天就有新,
这无疑是最好的预兆,预兆着模拟器能真正超越M2
有人说模拟器垃圾
那只是临时的说法,
想想看,M2基本的发展很没前途,因为是转传世,所以如果要开发出传世的独有功能真的很难,但模拟器不同,模拟器容易开发,因为模拟器本来就是的"老家"嘛。
现在大侠和逍遥被玩家唾骂,
实在背负着很大压力,
所以做为逍遥GM的我,决定进行关闭,等到模拟器完善了,基本可玩的了,稳定了,再开放,到时要捧场哦!
因为现在不完善,所以不可能象他们讲的那样,
什么功能全啊,与盛大官方一样啊,其实根本只是诱惑,只是用M2版的罢了,
真正功能全的时候,就应该是模拟器开发完成了,那样才会与官方一样的,
很多人问我,
为什么你的私服有这么多问题啊?其他却没有!
现在的回答是;我看到了的未来,是模拟器的未来,而不是传2,
所以现在我坚持用模拟器,对不起了我的玩家,让你们辛苦了,
现在模拟器问题是很多,
帐号不可用问题
下线装备消失问题
功能不全及回城卷等不能买和用的问题。。
不是我不去做好 而是模拟器现在需要时间,请谅解。。。。
好了现在我进入正题了。
模拟器与M2版的区别与结构
如下
首先说M2的。这是结构
二、 文档修订纪录
序 号修改时间修 改 人审 核 人备 注
1
2
3
4
5
6
7
8
9
15
16
17
三、 功能及运行
日志通过UDP协议接收GameServer
发送来的加密日志信息包,解密并解析相关内容后,发送给已连接的MySQL数据库,在MySQL数据库中记录下相关日志信息。
在启动日志服务器之前,首先必须启动MySQL数据库,且建好数据库表(见建表脚本文件table_script.txt)。然后正确配置日志的配置文件Config.ini
四、配置文件说明
配置文件:Config.ini
[LogServer]
logip = 10.10.10.36 ( LogServer 接收信息端的IP地址 ,必须与GameServer的配置一致)
logport = 6801 ( LogServer 接收信息端的端口,必须与GameServer的配置一致)
[MySqlServer]
mysqlip = 10.10.10.160 ( MySQL数据库的IP地址 )
mysqlport = 3306 ( MySQL数据库的端口 )
dbname = logs ( 数据库的名称 )
user = root ( 数据库用户名 )
password = ( 数据库密码 )
五、表结构说明
1. GD行为日志表
create table Gd_Action_Logs
(
rowidbigint unsignednot null AUTO_INCREMENT,
Player_Idvarchar(14)not null,
Player_Chrvarchar(18)not null,
Player_IPvarchar(18)not null,
GD_Commandvarchar(255)not null,
Use_datedatetimenot null default 'NOW()',
ActionTypevarchar(50)not null,
primary key (rowid)
);
字段说明:
Player_Id 玩家帐号
Player_Chr 玩家角色名
Player_IP玩家IP地址
Use_date时间
ActionTypeGD_Command
上下线上线/下线
GD指令对象/使用参数/包括群发消息的消息内容。
交易对方/物品/
组队队长角色/组员
行会行会名/在其中担任的职务/
发言内容发言方式(组队/普通/行会内/喊话等)/私聊对象/发言内容
拣物品/扔物品动作类型(扔/拣)物品/金钱数量
装备/取下物品动作类型/装备/取下物品
PK地图/对方/胜负对方死/自己死/对方受伤害但没有死/无伤害/自己的
伤害情况)
打怪地图/怪物/
死亡地图/对方(人或怪物)
非隐身状态时间始终点/
GD参与的举动
2. 交易日志表
create table Items_Transform_Logs
(
rowidbigint unsignednot null AUTO_INCREMENT,
Player_Chr1varchar(18)not null,
Item_List1textnot null,
Player_Chr2varchar(18)not null,
Item_List2textnot null,
Trans_datedatetimenot null default 'NOW()',
primary key (rowid)
);
字段说明:
Player_Chr1参与交易的玩家1角色名
Item_List1玩家1的交易物品
Player_Chr2参与交易的玩家2角色名
Item_List2玩家2的交易物品
Trans_date交易时间
3. 跳GS日志表
create table Jump_Gs_Logs
(
rowidbigint unsignednot null AUTO_INCREMENT,
Player_Chrvarchar(18)not null,
JumpDetailvarchar(80)not null,
Jump_datedatetimenot null default 'NOW()',
primary key (rowid)
);
字段说明:
Player_Chr玩家角色名
JumpDetail跳GS的详细描述
Jump_date跳GS时间
4. 组队日志表
create table Group_Logs
(
rowidbigint unsignednot null AUTO_INCREMENT,
Player_Chrvarchar(18)not null,
GroupDetailvarchar(100) not null,
Group_datedatetimenot null default 'NOW()',
primary key (rowid)
);
字段说明:
Player_Chr玩家角色名
GroupDetail组队的详细描述
Group_date组队时间
5. 仓库存取物品记录日志表
create table StoreItem_Logs
(
rowidbigint unsignednot null AUTO_INCREMENT,
Item_Idbigint unsignednot null,
Item_Namevarchar(30)not null,
Item_Hostvarchar(18)not null,
Action_Typevarchar(10)not null,
Item_Propertyvarchar(255)not null,
StoreDatedatetimenot null default 'NOW()',
primary key (rowid)
);
字段说明:
Item_Id物品ID
Item_Name物品名称
Item_Host物品的所有者
Action_Type存物品/取物品
Item_Property物品属性
StoreDate存取物品时间
6. 武器升级记录日志
create table WeaponUpdate_Logs
(
rowid bigint unsigned not null AUTO_INCREMENT,
Weapon_Idbigint unsigned not null,
Weapon_Name varchar(30) not null,
Weapon_Host varchar(18) not null,
Update_Type varchar(20) not null,
Weapon_Property varchar(255) not null,
UpdateDate datetime not null default 'NOW()',
primary key (rowid)
);
字段说明:
Weapon_Id武器ID
Weapon_Name武器名称
Weapon_Host武器所有者
Update_Type使用祝福油被祝福/使用祝福油被诅咒/修练/PK被诅咒
Weapon_Property武器升级前属性和升级后属性
UpdateDate时间
7. PK记录日志表
create table pk_logs
(
rowid bigint unsigned not null AUTO_INCREMENT,
Player1_Chr varchar(18) not null,
Player2_Chrvarchar(18) not null,
Pk_Resultvarchar(50) not null,
Pkdatedatetime not null default 'NOW()',
primary key (rowid)
);
字段说明:
Player1_Chr玩家角色名
Player2_Chr对方玩家角色名
Pk_ResultPk结果
PkdatePK时间
8. 行会记录日志表
create table guild_logs
(
rowid bigint unsigned not null AUTO_INCREMENT,
Player_Chr varchar(18) not null,
Guild_Name varchar(30) not null,
IsGuildChairsmallint unsignednot null,
Action_Type varchar(20) not null,
Detailvarchar(20) ,
Pkdate datetime not null default 'NOW()',
primary key (rowid)
);
字段说明:
Player_Chr玩家角色名
Guild_Name玩家所属行会名
IsGuildChair0
Pkdate时间
Action_TypeDetail
加入行会
退出行会
建立行会
删除行会
编辑封号
编辑公告
申请行会战对方行会名
同盟对方行会名
解除同盟对方行会名
添加行会成员成员角色名
删除行会成员成员角色名
申请攻城 城主行会
9. 升级记录日志表
create table upgrade_logs
(
rowid bigint unsigned not null AUTO_INCREMENT,
Player_Id varchar(14) not null,
Player_Chr varchar(18) not null,
Upgradevarchar(10) not null,
date datetime not null default 'NOW()',
primary key (rowid)
);
字段说明:
Player_Id 玩家帐号
Player_Chr 玩家角色名
Upgrade升级描述 (例如从一级升到二级为:1-〉2 )
Date升级时间
10. 声望值记录日志表
create table repute
(
rowid bigint unsigned not null AUTO_INCREMENT,
player_Chrvarchar(18)not null,
reputevarchar(20)not null,
detailvarchar(50)not null,
date datetime not null default 'NOW()',
primary key (rowid)
);
字段说明:
player_Chr玩家角色名
repute声望值变化
detail声望值变化原因
date时间
11. 婚姻关系记录日志表
create table marry
(
rowid bigint unsigned not null AUTO_INCREMENT,
hu##andvarchar(18)not null,
wifevarchar(18)not null,
typevarchar(20)not null,
detailvarchar(50)not null,
date datetime not null default 'NOW()',
primary key (rowid)
);
字段说明:
hu##and丈夫角色名
wife妻子角色名
type结婚、离婚
detail结婚或离婚的原因
date时间
12. 师徒关系记录日志表
create table teacher
(
rowid bigint unsigned not null AUTO_INCREMENT,
teachervarchar(18)not null,
studentvarchar(18)not null,
typevarchar(20)not null,
detailvarchar(50)not null,
date datetime not null default 'NOW()',
primary key (rowid)
);
字段说明:
teacher师父角色名
student徒弟角色名
type建立师徒关系、解除师徒关系
detail建立或解除师徒关系的原因
date时间
M2版文件结构图
├GameLog(物品日志)
│ └LogDataSrv(物品日志服务端)
│ ├LogBase(包含物品日志文件)
│ ├LogData.ini(物品日志配置文件)
│ └LogDataServer.exe(日志服务端程序)
├Gate_Server(客服接口)
│ ├LoginGate(ID登录接口)
│ │ ├LoginGate.exe(ID登录接口程序)
│ │ └MirGate.ini(ID登录接口配置文件)
│ ├SelChrGate(角色登录接口)
│ │ ├Gate30.exe(角色登录接口程序)
│ │ └Mirgate.ini(角色登录接口配置文件)
│ └RunGate(运行接口)
│ ├RunGate.exe(运行接口程序)
│ ├Mirgate.ini(运行接口配置文件)
│ └WordFilt.ini(脏话信息)
├Mir200(服务端,服务于RunGate)
│ ├ConLog(登录日志)
│ ├Envir(环境设置)
│ │ ├Castle(沙城状态)
│ │ │ ├AttackSabukWall.txt(攻城信息)
│ │ │ └Sabukw.txt(沙巴克状态信息)
│ │ ├Defines
│ │ ├MapQuest_def
│ │ ├Market_def(商人信息,与Merchant.txt对应)
│ │ ├Market_prices(商品物价信息)
│ │ ├Market_saved(商品存储信息)
│ │ ├Market_upg
│ │ ├MonItems(怪物所爆物品及几率,与Monster.DB对应)
│ │ ├Npc_def(NPC人物信息,与NPCs.txt对应)
│ │ ├QuestDiary
│ │ ├GMFile.txt(GM列表文件)
│ │ ├GuardList.txt(守卫坐标文件)
│ │ ├MakeItem.txt(毒药配方文件)
│ │ ├MapInfo.txt(地图信息文件)
│ │ ├MapQuest.txt(任务配置文件)
│ │ ├Merchant.txt(商人信息文件)
│ │ ├MiniMap.txt(小地图信息文件)
│ │ ├Mongen.txt(怪物刷新配置文件)
│ │ ├Npcs.txt(NPC信息文件)
│ │ ├StartPoint.txt(复活点信息文件)
│ │ └UnbindList.txt(打捆物品拆包信息文件)
│ ├GuildBase(行会信息)
│ │ ├Guilds(行会信息)
│ │ └GuildList.txt(行会列表文件)
│ ├Log(运行服务端日志)
│ ├Map(地图文件)
│ ├Notice(提示信息)
│ │ ├LineNotice.txt(运行中的提示,蓝字部分)
│ │ └Notice.txt(选择之后出现的版权信息)
│ ├Share
│ ├ShareL
│ ├ShareV
│ ├!Abuse.txt(脏话信息)
│ ├!RunAddr.txt
│ ├!ServerTable.txt
│ ├!Setup.txt(运行服务端配置文件)
│ ├M2Server.exe(运行服务端)
│ └Mir.dat(与客户端的Mir.exe对应)
├Mud2(服务端)
│ ├DB(数据库Paradox)
│ │ ├Magic.DB(技能数据库)
│ │ ├Monster.DB(怪物数据库)
│ │ └StdItems.DB(物品数据库)
│ ├DBSrv200(角色选择服务端,服务于ChrSelGate)
│ │ ├Connection
│ │ ├FDB(人物数据库,数据库格式为自定义格式)
│ │ ├Log(角色选择服务端日志)
│ │ ├!AddrTable.txt
│ │ ├!IdList.txt(交费账号列表,!Setup.exe中ServiceMode=TRUE时起作用)
│ │ ├!ServerInfo.txt
│ │ ├DBServer.exe(角色选择服务端)
│ │ └DBSrc.ini(角色选择服务端配置文件)
│ └LogSrv(ID登录服务端,服务于LoginGate)
│ ├ChrLog(ID创建、修改日志)
│ ├ConLog(ID登录日志)
│ ├CountLog(ID登录数量统计日志)
│ ├IDDB(ID数据库,数据库格式为自定义格式)
│ │ ├ID.DB(ID数据库)
│ │ ┕ID.DB.idx(ID数据库索引)
│ ├!AddrTable.txt
│ ├!ServerAddr.txt
│ ├!UserLimit.txt
│ ├LoginSrv.exe(ID登录服务端程序)
│ └LogSrv.ini(ID登录服务端配置文件)
┕Share
├Feed
└GameWFolde
现在说模拟器
历史:
今后,模拟器还将继续完善下去,为了实现最终的世界的梦想。
功能:
目前的淡抹夕阳模拟器的功能主要有以下几个大类
1- 帐号注册/登陆/修改密码
2- 角色创建/删除/恢复
3- 打怪升级以及属性变化
4- 主要武器装备饰品外观和数值效果
5- NPC以及脚本系统。
6- 部分职业的技能效果支持
7- 简单聊天(说来比较惭愧,这么简单的系统一直没有完善)
模拟器的一些指标如下
1- 后台使用SQL Server2000作为数据库
2- 使用分布式的逻辑架构
3- 使用IOCP(完成端口)来处理大量的并发连接和庞大的数据流I/O。
4- 各种单个逻辑模块使用统一的界面风格和操作方式。
5- 对于数据,采用容易编辑的txt作为数据源
架设:
1- 部署:
a) 数据库部署
首先- 安装SQL Server2000 或者更高。并确保SQL server的服务是运行状态
。而且要打开SQL Server2000的网络服务端口。
然后- 用查询分析器的文件菜单中的打开菜单项来打开模拟器压缩包中带的4个数
据库表,依次执行,将会生成一个叫做MirWorldDB的数据库和4张表。分别是TBL_ACCOUNT/
TBL_CHARACTER_INFO/ TBL_CHARACTER_ITEM/ TBL_CHARACTER_MAGIC。
最后- 数据库就部署完毕~
b) 模拟的各个模块的部署
首先- 确定部署策略,loginserver/selectcharserver/gameserver 三个
需要接受客户端的连接,所以,不能架设在内网。其他的模块可以放在内网。(如果有的话)
然后- 将每个模块的exe拷贝到相应的机器,可以放在一个文件夹(配置文件可以
共享),也可以放在不同的文件夹(独立的配置文件)。
最后- 启动各个模块。这里,透露一个小秘密,在每个模块启动时加参数,可以
自动启动该模块,不需要再去按开始按钮。方法是 为每个模块创建一个快捷方式,打开快捷方
式的属性对话框,然后会看到一个写着“目标”的编辑框,如果路径不含有空格,编辑框内的
文字没有引号,如果有空格,则框内文字有引号。这个不需要管,只要在这些文字的后面空一
个格,写上“start”5个字母就可以了。试试看用这些快捷方式启动,是不是自动就启
动好了。 还有一个方法: 建立一个名为startserver.cmd的文件,用记事本写入命令 “start
模块exe的名字 start”,(注意,引号不要写进去),保存后,双击这个cmd文件就可以自动
启动这个模块了。
2- 配置:
a)整体部署配置(config.ini)
观察一下config.ini里面的内容,会发现开头有两句配置:
scaddr = 127.0.0.1
scport = 6000
这两句的意思是告诉模块,服务器中心的地址和端口,用来注册自己到中
心。这里要注意的是,无论是多个模块放在一起共享配置文件,还是分开,独立的配置文件,
开头的这两行配置一定要有。否则会工作不正常。
接下来,会看到几个段(就是以[...]开头的一组配置)。这些段的段名是固定的,
不能随便修改,否则就会不正常了。每个段有6个相同的配置项。我们以登陆段为例
[登陆]
addr =222.65.7.114
port = 7000
type = loginserver
id = 1
group = 1
name = 登陆1
其中addr 描述的是模块的地址,一定要设置成部署位置的ip地址,如果要
公开,就写成外网地址,如果不要公开的就写成内网地址。port描述的是登陆的端口。
type描述了该配置的模块的类型,登陆的类型一定要设置成loginserver。id 描述的是
该服务器在自己组内的id,如果组内的该类型的大于一台,id就不能重复。group描述的
是组的代号,一般设置成1,有多组存在时,设置成组的代号,该代号只能为数字。name
描述了该的名字,这个对于gameserver和selectcharserver很重要,设置不对会找不到
的。
b)dbServer的配置
config.ini里面的数据库的段里面多了几个配置选项。
server = (local)
database = MirWorldDB
account = sa
password = dragon
server描述的是SQL Server所在的位置,如果在本机就是(local),如果在其他机器
,一般是该机器的机器名。 database描述的是表所在的数据库,如果是用原版的sql脚本导入
的,这里一般是 MirWorldDB。 account 是描述这个数据库的登陆帐号,可以不用sa这个账号
,但是必须有查询写入的权限。password 描述的是数据库登陆账号的密码。
c)GameServer的配置
GameServer的配置较多,除了config.ini里面的基本配置外,还需要一个叫做data
的文件夹来存放各种数据。其中有个叫作server.txt里面就是gameserver的基本逻辑配置
。一般内容如下:
[humandata]
warrior = .\data\humandata\战士.csv
magician = .\data\humandata\法师.csv
taoshi = .\data\humandata\道士.csv
;这里描述的是角色每个等级的数据的相对于exe的路径。这三个文件必须为.csv文件,你可以
用excel来编辑这三个文件,修改各个等级的属性数据。
[firstlogin]
script = firstlogin
startlevel = 22
startgold = 0
startitem = 金创药(小量)*2/赤明天帝/金鹏宝甲(男)*2
;这里描述的是,角色第一次登陆的一些配置,startlevel描述的是起始的等级,startgold描
述的是开始时候背包内的系统给予的金钱的数量。startitem描述的是开始的时候系统给予的物
品,不同的物品用/来分隔,每个物品名字必须与baseitem.txt里描述的物品名字一致。而且可
以在名字后面用 *和数字来描述物品的数量。
[setting]
downitemupdatetime = 300
;这里描述的是掉在地上的物品更新的时间,以秒为单位。
[var]
itemupdatetime = 300
;这里描述的是掉在地上的物品更新的时间,以秒为单位。目前使用上面一个,这个未使用。
maxgold = 8000000
;这里描述的是角色最大可以持有的金钱数量。
[name]
goldname = 金币
;这里描述的是金币的名字,必须和MonItems里面的金币名字一致。否则怪物不掉钱
malename = 男
femalename = 女
;这里描述的是性别的名字,这个是应英国朋友的要求,修改来适应英文版的需要。
;这个跟@makeitem 命令造衣服有关,主要是没有指定男女的衣服名字后面加上一个(男)之类的标记来区别相同的名字。
第一节 data文件夹的布局
首先有 5个子文件夹,分别为
humandata 存放人物升级的属性信息
maps 存放地图信息
MonItems 存放怪物掉宝文件
script 存放npc的脚本文件
stringlist 存放脚本中使用的一些字符串的表,具体作用在讲解脚本的时候详细描述
还有几个文本文件,分别为
server.txt 内容是世界的一些配置
baseitem.txt 物品数据文件
basemagic.txt 技能数据文件
basemonster.txt 怪物数据文件
mongen.txt 怪物刷新文件
npcgen.txt npc刷新文件
startpoint.txt 出生点的设置
notice.txt 协议对话框的内容
以上是data中的主要数据的分布,其他文件一般是非必须的文件。
第二节。物品数据
物品数据文件 baseitem.txt 详细解释
在物品数据文件baseitem.txt里面,每种物品数据文件按照下面这种格式来存储。
name/stdmode/shape/image/specialpower/ac1/ac2/mac1/mac2/dc1/dc2/mc1/mc2/sc1/sc2/wei
ght/maxdura/price/needtype/needlevel
示例:
粗布衣(男)/10/ 1/117/0/2/ 2/0/1/0/0/0/0/0/0/ 5/ 5/2000/0/1
其中,各个字段的含义是
name 表示物品名字,
stdmode 表示物品的种类,
shape 字面上是形状,其实表示物品的一些特性,根据stdmode不同而不同,
image 表示的是物品的外观,就是掉在地上的外观和放在背包里面的外观,对于武器,头盔
和衣服来说,还表示装备在身上的时候在装备画面的样子,但不表示中的角色的外观。这
个,我们稍候再议。
specialpower,ac1,ac2,mac1,mac2这些属性根据stdmode的不同而表示不同的含义。
dc1 表示最小攻击力
dc2 表示最大攻击力
mc1 表示最小魔法
mc2 表示最大魔法
sc1 表示最小道术
sc2 表示最大道术
weight 表示物品的重量
maxdura 表示物品的持久/书籍表示学习的等级
price 表示价格(这个属性基本没用)
needtype 表示限制条件的类型(0- 表示等级限制 1- 表示攻击力限制 2- 表示魔法限
制 3- 表示道术限制)
needlevel 表示限制条件的数值
stdmode字段,在整个物品数据里面起着非常重要的作用,它决定了物品的作用和属性加成。
首先,让我们了解一下都有哪些物品类型
0- 药品
10 男装
11 女装
15 头盔
5 普通武器
6 特殊类武器(锄头等)
22 23 戒指类
19 20 21 项链类
24 26 手套手镯类
4 书籍
3 特殊作用类物品,如祝福油
31 药品包,捆绑类物品
81 靴子
58 腰带
45 材料 如 红绿蓝 宝石 x星珠 魔蛋 未鉴定的物品等
55 特殊类物品 如 天玉宝石
59 60 61 可装备宝石类
30 勋章神饰类
34 道符
52 杂物类
44 鉴定卷轴 任务类物品 战斗号角
47 金砖金条类
46 赏金令牌等任务物品
38 黑暗之戒
25 稻草人偶
33 马牌
43 矿石
49 字体卷轴
下面详细解释下 药品 武器 男女服装 戒指 手镯 腰带 靴子 宝石 勋章 神饰 stdmode对属性
加成的影响
〈〈药品 〉〉
stdmode = 0
ac1 表示+HP
mac1 表示+MP
其他属性不加
〈〈武器 〉〉
stdmode = 5,6
ac1 表示幸运
ac2 表示准确
ac3 表示诅咒
dc1 dc2 mc1 mc2 sc1 sc2 分别表示 攻击 魔法 道术 的最小最大值
〈〈男女衣服 〉〉
stdmode = 10,11
ac1 ac2 表示防御最小最大值
mac1 mac2表示魔防最小最大值
dc1 dc2 mc1 mc2 sc1 sc2 分别表示 攻击 魔法 道术 的最小最大值
〈〈戒指 〉〉
stdmode = 22 时
ac1 ac2 表示防御最小最大值
mac1 mac2 表示魔防最小最大值
dc1 dc2 mc1 mc2 sc1 sc2 分别表示 攻击 魔法 道术 的最小最大值
stdmode = 23 时
ac1 表示攻击速度
ac2 表示毒物躲避,显示出来的值是设置值的10倍,比如设置10 显示 100%
mac1 表示攻击速度减多少
mac2 表示中毒恢复 也是10倍的关系
dc1 dc2 mc1 mc2 sc1 sc2 分别表示 攻击 魔法 道术 的最小最大值
〈〈手镯〉〉
stdmode = 24
ac2 = 命中
mac2 = 回避
dc1 dc2 mc1 mc2 sc1 sc2 分别表示 攻击 魔法 道术 的最小最大值
stdmode = 26
ac1 ac2 表示防御最小最大值
mac1 mac2 表示魔防最小最大值
dc1 dc2 mc1 mc2 sc1 sc2 分别表示 攻击 魔法 道术 的最小最大值
〈〈腰带〉〉
stdmode = 58
ac1 ac2 表示防御最小最大值
mac1 mac2 表示魔防最小最大值
dc1 dc2 mc1 mc2 sc1 sc2 分别表示 攻击 魔法 道术 的最小最大值
〈〈靴子〉〉
stdmode = 81
ac1 ac2 表示防御最小最大值
mac1 mac2 表示魔防最小最大值
dc1 dc2 mc1 mc2 sc1 sc2 分别表示 攻击 魔法 道术 的最小最大值
〈〈宝石〉〉
stdmode = 59, 60, 61
ac1 ac2 表示防御最小最大值
mac1 mac2 表示魔防最小最大值
dc1 dc2 mc1 mc2 sc1 sc2 分别表示 攻击 魔法 道术 的最小最大值
〈〈勋章〉〉
stdmode = 30
shape = 0
ac1 ac2 表示防御最小最大值
mac1 mac2 表示魔防最小最大值
dc1 dc2 mc1 mc2 sc1 sc2 分别表示 攻击 魔法 道术 的最小最大值
〈〈神饰〉〉
stdmode = 30
shape = 1
sc1 表示极品爆出率
接下来说一下shape对于物品的影响,
在上面一节中,我们看到,神饰和勋章stdmode 都是30,但是shape不同,加成属性就不同。其
实shape的作用远大于此,大概说来,shape就是一种子类型的作用,就是从stdmode这种大类型
中分出子类
〈〈衣服〉〉
shape在衣服类中,取值范围是0-15,分别表示光身子和15套衣服,其实用到的只有其中的几套
,还有几套做了保留。
〈〈武器〉〉
shape在武器类中,标志着拿在手里的外观,就是别人看到你的样子。
〈〈药品〉〉
根据观察,shape在药品中的左右就是标记是否是瞬间作用(太阳水) 0 表示慢慢恢复 1表示瞬
间恢复
〈〈书籍〉〉
书籍类,shape的作用在于标记书籍适用的职业 0 表示武士 1 表示法师 2 表示道士。
其他类的shape的作用就在于区别特殊于一般的关系,比如特殊戒指,特殊项链的shape就和普
通的不一样。
好了,物品数据的解释就到这里,如果还有不明白的,可以在发帖子问我。
第三节 地图数据
地图数据存放在data文件夹下的maps子文件夹下。
进入maps子文件夹,可以看到两个文件夹logic和physics。字面意思就是逻辑和物理。
淡抹夕阳模拟器和普通的m2的一个不同之处就是地图数据处理上,完全不同。分为逻辑
地图和物理地图两种,
逻辑地图主要负责管理地图上的角色,怪物,等,物理地图主要提供障碍信息。
简单的来说,这种方式的好处就是,当你中有两个中州的时候,他们都指向内存和硬盘
上的同一个 0.nmp。也就是节省内存和硬盘消耗,共享同一份障碍图。
存放在physics里面的就是后缀名是nmp的地图文件,大家可以从客户端的map文件夹把所有的
nmp文件拷贝到physics文件夹内。
存放在logic里面的是后缀名是ini的逻辑地图配置文件。ini的内容,一般是下面这样的。
[define]
name = 中州
;地图的名字,显示在客户端的界面上
blockmap = 0
;障碍图的名字,比如障碍图是xxxx.nmp 这里就写xxxx
minimap = 101
;小地图号,这个对应客户端的mmap里面的小地图
mapid = 16
;地图编号,必须是唯一的编号
linkcount = 19
;连接数量,就是出口的数量
[linkpoint]
;下面描述了19个出口的信息,格式是 (本地图x,本地图y)=〉[目的地图编号](目的地图x,目的
地图y)
linkpoint1=(740,328)=〉[17](34,45)
linkpoint2=(468,226)=〉[164](116,85)
linkpoint3=(520,267)=〉[29](7,21)
linkpoint4=(725,35)=〉[67](438,971)
linkpoint5=(484,141)=〉[28](12,52)
linkpoint6=(372,207)=〉[30](5,16)
linkpoint7=(473,250)=〉[31](9,20)
linkpoint8=(548,195)=〉[32](19,28)
linkpoint9=(381,258)=〉[34](6,19)
linkpoint10=(418,205)=〉[37](6,13)
linkpoint11=(461,259)=〉[38](8,13)
linkpoint12=(497,245)=〉[39](7,13)
linkpoint13=(493,272)=〉[40](7,16)
linkpoint14=(474,126)=〉[41](13,18)
linkpoint15=(488,173)=〉[42](6,18)
linkpoint16=(28,346)=〉[43](258,497)
linkpoint17=(55,176)=〉[43](241,35)
linkpoint18=(777,393)=〉[47](201,329)
linkpoint19=(783,532)=〉[273](12,14)
如果地图连接出了问题,可以修改这里
在发布的中,我们预先根据官方的minmaplist.txt生成了一些数据ini,但是可能有错误,
当遇到错误的时候,可以自己修改,也可以到求助,我们会给你帮助的。
第四节。其他数据
1- GM列表 gmlist.txt
里面保存了gm的帐号和等级,使用这些帐号登陆的gm就可以通过@gamemaster来打开gm模式
,从而使用一些gm特有的命令。
这里注意!!!!,是登陆用的帐号,不是角色名字,好多玩家都因为写了角色名字导致无法
打开gm模式。
现在支持的gm命令
@setlevel(等级) 设置自己的等级
@addexp(经验) 增加自己的经验
@move(地图id, 坐标x, 坐标y ) 移动到指定地图的x,y坐标处
@move(坐标x, 坐标y) 移动到当前地图的 x,y 坐标处
@makeitem(物品名字 创建一个物品,并加入到背包里
@addmagic(技能名字 为自己添加一个存在于basemagic.txt里的技能
@callmon(怪物名字 召唤一个怪物到自己的下面一个格子(如果该格子有人,命令失败)
常用的gm命令就这些了,其他的都是开发阶段作调试用命令,不推荐使用。
2- 技能数据 basemagic.txt
这个由于暂时没有完全完成,所以,不能给大家详细的介绍,中间的文件结构可能会按照开发
进度而改变,所以,请大家关注,上面有完整的从官方dump下来的技能数据。
3- 怪物数据basemonster.txt
怪物数据文件的结构如下
name/title/view/hp/dc/ac/mac/gainexp/delay/autoattack
name 表示怪物类名字
title 表示怪物的显示名字(客户端显示)
使用这两个名字是为了解决相同名字的怪物掉不同的东西和拥有不同的能力。
view 表示怪物的外观,内部上已经发布了全部怪物的外观,没有看到的朋友可以找一下老
贴子,我们发布的包里也是完整版的怪物外观。
hp 表示怪物的hp上限
dc 表示怪物攻击力 用 a-b的形式, a表示最小攻击力,b表示最大攻击力
ac 表示怪物防御 使用和攻击力一样的表示形式
mac 表示怪物的魔法防御,使用和攻击力一样的表示形式
gainexp 表示杀死怪物可以得到的经验值
delay 表示怪物的ai时间间隔,单位是毫秒。
autoattack 是一个标记表示是否自动攻击,现在还没用到,全部设置为1
4- mongen.txt 怪物刷新数据文件
文件格式如下
name/mapid/x/y/range/count/refreshdelay(seconds)
name表示刷新的怪物名字,对应怪物数据文件中的name
mapid 表示刷新的地图的id
x,y表示刷新的坐标
range表示刷新的范围,以格子为单位
count表示刷新的数量,单位 只
refreshdelay表示刷新的间隔,单位 秒
5- startpoint.txt 出生点坐标文件
warrior = [16](414,600)-(416,604)
magician = [16](414,600)-(416,604)
taoshi = [16](414,600)-(416,604)
前面的 warrior表示战士 magician 表示法师 taoshi 表示道士
后面的[]内的数字表示地图的编号 16 代表中州
后面第一个括号表示 区域的左上角坐标, 后面一个括号表示区域的右下角坐标。
6- notice.txt 协议框文字
每次登录游戏的时候都能看到写在这个文件中的文字,确认后才能进入。
7- npcgen.txt npc的刷新文件
格式如下
name/id/view/mapid/x/y/istalk/scriptfile
name 表示npc的名字
id 表示npc的数据库id,目前没用随便设置
view 表示npc的外观,上有人发过全版
mapid 表示npc所在地图的id
x/y 表示npc的坐标
istalk 表示是否为对话npc,目前固定为1
scriptfile 是脚本文件的名字,对应script文件夹中的 设置值.txt 文件, 比如你设置这里
为 abc 那么对应script下的abc.txt
有的人说IP不会设置 下面看着
建立一个名为MirWorldDB的数据库,打开查询分析器把数据库指向MirWorldDB数据库,用记事本打开下的dbo.TBL_ACCOUNT.TAB文件.复制内容到查询分析器,然后点上面的蓝三角!(后面的2个分别为dbo.TBL_CHARACTER_INFO.TAB\dbo.TBL_CHARACTER_ITEM.TAB同样这样操作!),现在夕阳一般DB文件夹里还有第4个技能文件:magic.sql,也要导入,否则技能将无法使用!随着以后新版的开发,只要是DB里的文件就全部要导入~
然后到控制面版、管理工具、打开数据源 (ODBC) 选择系统DSN,点添加,选择SQL
server完成名称为MirWorldDB,描述为空,填入(local)下一步,指向MirWorldDB数据库完成。
接下来打开下的config.ini内容具体如下!
scaddr = 222.138.109.183 IP(注意)
scport = 6000
[数据库]
addr = 222.138.109.183 IP(注意)
port = 8000
type = databaseserver
id = 1
group = 1
name = MirWorldDB 数据库名(注意)
server = (local) 名(注意)这里(local)指本机的意思,一般不修改
database = MirWorldDB 数据库名(注意)
account = sa SQL2000的用户名(一般默认为SA也需要改)
password = ********* SQL2000的密码(注意)这个没个人估计都不一样!
[登陆]
addr = 222.138.109.183 IP(注意)
port = 7000
type = loginserver
id = 1
group = 1
name = 九九 名(注意)
[选人]
addr = 222.138.109.183 IP(注意)
port = 7100
type = selcharserver
id = 1
group = 1
name = 九九 名(注意)
[世界]
addr = 222.138.109.183 IP(注意)
port = 7200
type = gameserver
id = 1
group = 1
name = 九九 名(注意)
[中心]
addr = 222.138.109.183 IP(注意)
port = 6000
type = servercenter
id = 1
group = 1
name = 九九 名(注意)
接下来启动,顺序为servercenter.exe(这个必须第一位)然后从下往上启动!
启动完后下载进吧 好现在发布我自创新怪(逍遥霸主)
逍遥霸主/逍遥霸主/0xc7/23000/60-80/20-50/40-41/10000/2000/0
Tags:
作者:佚名评论内容只代表网友观点,与本站立场无关!
评论摘要(共 0 条,得分 0 分,平均 0 分)
查看完整评论