鉴于有的朋友需要,再次发布美丽世界-Nage 架设教程(附架设简化脚本及客户端)
本帖最后由 zhitianjiao 于 2012-4-3 17:10 编辑一、架设Nage的必备环境:
1. 操作系统:win2000或2003;
使用虚拟机架设win2000的朋友:虚拟机请用 Virtual PC 2007 ,再下载win2000操作系统,安装2000操作系统。
物理机与虚拟机之间的文件共享,请用Virtual PC 2007 软件界面上附带的辅助功能;
物理机与虚拟机之间的网络通讯,请自己百度。
2. 数据库:完整安装的sql 或 绿色免安装版的Gsql均可以。
3. 确定你的服务器使用的ip地址:如果使用127.0.0.1作为地址 则什么都不需设置; 如果是192.168.1.xxx 局域网ip则需要进入操作系统——网络连接——本地网络 , 右键[本地网络]设置ip地址。
4. 美丽世界Nage 6.0服务端;
5. 美丽世界客户端。( 如果你找不到客户端可以到此下载:《美丽世界N-age》之生化战场客户端 文件大小:350M http://115.com/file/c2mvhmph 如果你有就不必浪费时间下载 )
二、服务端的架设:
首先将服务端.rar解压你的D盘 , 并将你的客户端游戏程序安装。
第1步,创建数据库连接及还原数据库内容。
运行sql数据库:
(1) 建立数据源ODBC:运行 odbc注册.reg文件( 这个文件最好用我的,我放在第3楼 );
(2) 分别建立Nage,NageManager,NageBoard,NageMember 四个数据库;
(3) 分别还原 服务端/附件目录 内的4个文件: Nage.dat,NageManager.dat,NageBoard.dat,NageMember.dat。
第2步,做4项设置:修改服务端文件的ip地址、修改数据库中的服务器ip、添加游戏账号、创建一个临时表。
用我的vbs脚本按提示操作 , 可以不关心怎样做这4项修改。
请到第2楼 将代码保存到:服务端根目录/xxx.vbs ,双击运行这个vbs脚本。
在弹出的窗口,初次运行 你就输入 1 2 3 4,小脚本帮你完成上述4项设置。(注意修改xx.vbs 里面的sql账号和密码,否则无法正确连接sql)
http://attachment.iopq.com/forum/201201/24/00433677cspospob7xa7ox.png
第3步:手动修改一个文件:服务端/op_server/serinfo.ini 找到两个DB 字段
11100011 DB nage-11 自己SQL服务器的名字(比如我的是(Local)\GSQL ) 1433
44 11200 11 DB nage-11 自己SQL服务器的名字,同上 1433
第4步,覆盖客户端补丁。将 服务端目录/附件/登陆器 内的所有文件覆盖到 游戏客户端安装目录 。
第5步,修改 客户端登陆器程序的ip地址,指向你的服务器ip地址。( 最好先备份一下Me-NAge.exe)
下载Uedit编辑器软件, 打开 游戏客户端目录/Me-NAge.exe (这是登陆器) .打开后按快捷键Ctrl + H 再按 Ctrl + F 搜索 , 勾选以正则表达式( Perl 方式)搜索 ( 在搜索界面——高级——正则引擎上选择 Perl),输入 \d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}查找,找到后替换为你的服务器ip ,然后保存一下。
经过上述5步操作,运行 服务端/启动器.bat, 启动游戏服务端。
最后进入客户端目录/窗口.bat 运行游戏客户端了。 本帖最后由 关东唐 于 2012-3-15 17:33 编辑
感谢分享,现在给予高亮并编辑入本版置顶帖中。望楼主继续努力。
很详细的教程,看出楼主很用心,特+1宝物的奖励! 我修改后的一份比较准确的NAGE服务器架建初步教程 1、建立数据库(1) 分别建立Nage,NageManager,NageBoard,NageMember(2) 分别还原Nage.dat,NageManager.dat,NageBoard.dat,NageMember.dat。 2、建立ODBC 运行odbc注册.reg文件4、修改服务器端目录里所有*.txt和*.INI文件为自己服务器的IP。(127.0.0.1) (修改 /op_server/serinfo.ini 找到两个DB 类型的 ) 11100011 DB nage-11 自己SQL服务器的名字 1433 44 11200 11 DB nage-11 自己SQL服务器的名字 1433 5、修改数据库Nage里ServInfo表里的IP:查询sql语句执行 update ServInfo set servIP='127.0.0.1' 6、修改NageMember数据库中Loginlog_200522到Loginlog_2005215六个中任何一个为你的系统时间,否则登陆游戏会出现"服务器维护". 7、运行服务端/启动器.bat。8、将 附件/登陆器 复制到美丽世界游戏安装目录,运行"窗口.bat"或者"全屏.bat" 9、客户端IP在 002CE220 上下范围里修改。修改Me-NAge.exeUltraEdit 打开 搜索 192.看见7个ip,改为你架设的服务器ip地址。 GM解决办法和ID有关CHAR INFO关于卡号解决办法在人物表里的最后 NATT那!改成0就不卡号了! 外网IP如何设置1:修改agent_server文件里的serverlist.txt文本改为OWN_SERVER AGENT_SERVER 127.0.0.1 7001 [外网IP] 1002:修改agent_server_board文件里的serverlist.txt文本改为OWN_SERVER AGENT_SERVER 127.0.0.1 7999 [外网IP] 7003:修改board_server文件里的serverlist.txt文本改为OWN_SERVER BOARD_SERVER127.0.0.1 10001 [外网IP] 3004:修改login_server文件里的serverlist.txt文本改为OWN_SERVER LOGIN_SERVER127.0.0.1 6001 [外网IP] 300 关于卡号解决办法在人物表里的最后 NATT那!改成0就不卡号了! 怎么在SQL里建立ID 在NageMember数据库的chr_log_info表中添加帐号下面是必填的[其它可以不填]:propid 随意输入一组数字,不能与上面的数字重复 id_loginid 登陆游戏的帐号 id_passwd 登陆游戏的密码 sta_num 填1 id_regdate 注册时间 type_num 填1 id_real 填0 bill 填151 (帐户类型:151是正常登陆帐户,156是帐户点数不足,0大概是还没激活的帐户) 简单解决OPSERVER,Can't Connect to SQL Server for Admin ID的问题! --------------------------------------------------------------------------------解决办法一: 1、用UE打开OPSERVER的执行文件修改里面的IP为127.0.0.1,DATABASE=为NageManage 2、启动OPSERVER,他就出现Can't Connect to SQL Server for Admin ID这个错误! 3、进入控制面板-管理工具-ODBC,系统DSN,看到里面就会出现两个数据源,1个是NageLocalXX,NageBoardXX,XX为数字,一般为01或10,双击NageLocalXX,点一下步,在用户验证哪里选择NT身份验证,下一步,然后完成,测试连接,如果连接正常的话就OK了! 4、运行OPSERVER,肯定不会出错了! --------------------------------------------------------------------------------解决办法二: 出现这个问题后,打开"企业管理器",打开"SQL Server组",点右键删除原来的SQL Server注册,然后在"SQL Server组"点右键"新建SQL Server注册",在服务器那儿输入"(local)",然后点确定,是不是能打开数据库了?数据库没改变,所以我们不用重新还原了. 再到控制面板,进ODBC的"系统DSN",点击原来的那些选"配置",把服务器那儿全改成"(local)",其它不变. 进入服务器端"op_server"文件夹,看一下servinfo.txt这个文件,DB这一栏还是填入你原来的服务器名,不要填现在的(local). (如果你原来改过这里,那就可以不改了,如果原来没改过,那你打开"服务管理器"看一下就知道你的服务器名了.) 这时你再开启所有服务器端,用客户端测试,用帐号darr密码123457试试,是不是在维护中?那就行了~~ 测试GM指令GM公告:/GM公告 内容GM隐身:/GM透明GM显身:/GM不透明移动:/移动 XXX XXX拉人:/移动 XXX XXX ID CharInfo表解释baseskill 所属角色职业 7 = 神行6 = 超能2 = 持械0 = 武術 charName 所属角色名字 charNo 似乎是登陆改角色的次数 basemap 角色出生地方 1 = 波本3 = 自由 hero 这个我不用说了吧 1 = 开启0 = 关闭 lv 所属角色等级 Exp 所属角色等级经验 eclv 所属角色贸易等级 ecExp 所属角色贸易等级经验 HP SP 血和魔法值 stm 精力值 str 力量 Dex 防御力 money 金钱(身上) bankmoney 银行存款 cmap 角色所在地图 1 = 波本3 = 自由 教你如何在商店加入武器 裝備 機車 先找尋商家代碼如波本廣場武器店 代碼4 ownerID 為商店代碼 回傳StoreItem的資料 storeid 商店代碼 itemid 武器或是裝備代碼 maxstored 最大存貨量 stored 目前庫存量後面的都填0 itemid 自行找 iteminfo 裡的資料機車行的代碼21 所有機車鑰匙代碼 41501 ~ 41517 自行加入後 機車行 就有的買機車了商店设置在storeitem掉宝在npcdropstoreitem跟storeinfo和iteminfo有关npcdrop跟npcinfo和iteminfo有关 关于外网IP设置 说明:红色部分的218.23.159.122就是你的外网IP 1:修改agent_server文件里的serverlist.txt文本改为OWN_SERVER AGENT_SERVER 127.0.0.1 7001 218.23.159.122 100 2:修改agent_server_board文件里的serverlist.txt文本改为OWN_SERVER AGENT_SERVER 127.0.0.1 7999 218.23.159.122 700 3:修改board_server文件里的serverlist.txt文本改为OWN_SERVER BOARD_SERVER 127.0.0.1 10001 218.23.159.122 300 4:修改login_server文件里的serverlist.txt文本改为OWN_SERVER LOGIN_SERVER 127.0.0.1 6001 218.23.159.122 300 就这么简单,其他IP不用修改用单机就行有路由器的我没试过,不大清楚,你可以试着将 100 300 700端口打开看看。就这些了。祝大家早日进入自己的服务器。。
本帖最后由 zhitianjiao 于 2012-4-3 17:08 编辑
将代码保存为:win2000自动建立ODBC.reg 放在游戏服务端目录,双击就自动导入ODBC.
请自己将里面的 "Server"="(Local)"替换为你的【数据库服务器】名字( 如果使用的是GSQL绿色版,就改为 (Local)/GSQL )。
Windows Registry Editor Version 5.00
"LocalServer"="SQL Server"
"NageBoard"="SQL Server"
"NageBoard10"="SQL Server"
"NageLocal"="SQL Server"
"NageLocal10"="SQL Server"
"NageLogin"="SQL Server"
"NageManager"="SQL Server"
"NageSystem"="SQL Server"
"Driver"="c:\\winnt\\System32\\SQLSRV32.dll"
"Description"="NageBoard"
"Server"="(Local)"
"Database"="NageBoard"
"Trusted_Connection"="1"
"Driver"="c:\\winnt\\System32\\SQLSRV32.dll"
"Description"="NageBoard10"
"Server"="(Local)"
"Database"="NageBoard"
"Trusted_Connection"="1"
"Driver"="c:\\winnt\\System32\\SQLSRV32.dll"
"Description"="NageLocal"
"Server"="(Local)"
"Database"="Nage"
"Trusted_Connection"="1"
"Driver"="c:\\winnt\\System32\\SQLSRV32.dll"
"Description"="NageLocal10"
"Server"="(Local)"
"Database"="Nage"
"Trusted_Connection"="1"
"Driver"="c:\\winnt\\System32\\SQLSRV32.dll"
"Description"="LocalServer"
"Server"="(Local)"
"Trusted_connection"="1"
"UseProcForPrepare"="Yes"
"Driver"="c:\\winnt\\System32\\SQLSRV32.dll"
"Description"="NageLogin"
"Server"="(Local)"
"Database"="NageMember"
"Trusted_Connection"="1"
"Driver"="c:\\winnt\\System32\\SQLSRV32.dll"
"Description"="NageManager"
"Server"="(Local)"
"Database"="NageManager"
"Trusted_Connection"="1"
"Driver"="c:\\winnt\\System32\\SQLSRV32.dll"
"Description"="NageSystem"
"Server"="(Local)"
"Database"="Nage"
"Trusted_Connection"="1"
本帖最后由 zhitianjiao 于 2012-3-16 03:40 编辑
将以下代码保存为 xxx.vbs文件, 放在根目录
双击xx.vbs脚本后,会弹出窗口
http://attachment.iopq.com/forum/201201/24/00433677cspospob7xa7ox.png
初次启动服务端请填入 1 2 3 4 。之后,每天内启动服务端都需要选第 4项功能,(这是每天建立一个临时表,游戏才能正常运行)
你还需要修改代码内的sql账户密码:
sqlname = "sa" ' // 这里修改mssql的账号密码
sqlpass = "123456"
请拷贝以下代码:
' /*************************
' by橘 : zhitian@studio
' *************************/
Option Explicit
Dim sqlname , sqlpass
Dim conn , statu , action , i , server_ip , sqlinfo
' 填写: sqlser账号 密码
sqlname = "sa" ' // 这里修改mssql的账号密码
sqlpass = "123456"
' 功能选择
action = InputBox("请选择执行的功能:( 多个用空格分开 ) " & Chr(13) & Chr(10) & "数字1 【修改服务器ip】 " & Chr(13) & Chr(10) & "数字2 【替换文件ip】" & Chr(13) & Chr(10) & "数字3 【添加游戏账号】" & Chr(13) & Chr(10) & "数字4 【创建当天新表(数据库内类似Loginlog_200522的表名)】", "执行功能" , "1 2 3 4" )
If action = "" Then
MsgBox "没有执行任何动作."
else
action = Split( action , " " )
set conn = CreateObject("ADODB.Connection")
For Each i In action
Select Case Trim( i )
Case 1
' 执行更改服务器ip
server_ip = changeserver( sqlname , sqlpass , conn )
Case 2
' 修改本地文件内的ip
replace_ip "./" , server_ip
' 提示
msgbox "文件内的ip地址修改完毕" , 64 , "提示"
Case 3
' 执行添加角色函数
addmember sqlname , sqlpass , conn
Case 4
createtable( conn )
Case 5
testodbc( conn )
Case 6
getComputerName
Case 7
createodbc
End select
next
Set conn = Nothing
End If
' /**************** 函数区域 *****************/
' ###### 更改服务器ip函数
Function changeserver( sqlname , sqlpass , conn )
Dim serverip , regEx , tmp , statu ' 状态
serverip = InputBox( "请输入你的游戏服务器ip:", "您现在执行的是 修改数据库servinfo的ip字段" , "192.168.1.100" )
statu = checkip( serverip )
If statu = 0 Then
Exit Function
End if
' 建立sql连接 .数据库驱动连接方法
' 打开Nage数据库
conn.Open "Database=Nage;uid=" & sqlname & ";pwd=" & sqlpass & ";Driver={SQL Server};server=localhost"
If conn.State = 0 Then
statu = 0
MsgBox "连接数据库失败," & Chr(13) & Chr(10) & "请检查sqlser.exe是否运行," & Chr(13) & Chr(10) & "以及数据库账号和密码是否正确." , 53 , "连接数据库提示"
Else
' 更新ip
conn.Execute "update ServInfo set servIP='" & serverip & "'"
statu = serverip
' 提示
msgbox "数据库内的服务器ip修改完成" , 64 , "提示"
End If
' 关闭数据库连接
conn.Close
' 函数返回值
changeserver = statu
End function
' ###### 查找替换ip程序
Sub replace_ip( op_path , server_ip )
Dim fso , current , folder , file , fp
Dim regEx , suffix , tempstr , statu
' 如果没有server_ip则提示输入 , 否则使用server_ip的值
If server_ip = "" Then
server_ip = InputBox("请输入服务器ip地址:", "修改文件内的所有ip" , "192.168.1.100" )
Else
End If
' 检查输入的ip地址的合法性
statu = checkip( server_ip )
If statu = 0 Then
Exit sub
End if
' ip地址 正则表达式
Set regEx = New RegExp
regEx.Pattern = "\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}"
regEx.Global = True
' fso对象
Set fso = CreateObject("Scripting.FileSystemObject")
set current = fso.GetFolder( op_path )
' 处理第一层目录
For Each file In current.Files
' 只处理txt和ini文件
suffix = Lcase( mid( file , instrrev( file , "." ) + 1 ) )
If (suffix = "txt") Or (suffix = "ini") Then
' 打开文件
set fp = fso.OpenTextFile( file, 1, True )
On Error Resume next
' 读取文件 , 正则替换 , 写入文件
tempstr = fp.Readall
If regEx.test( tempstr ) Then
MsgBox file
tempstr = regEx.Replace( tempstr , server_ip )
set fp=fso.OpenTextFile( file, 2 , False , -2 )
fp.Write tempstr
End If
fp.close
End if
Next
' 递归处理 子目录
for each folder in current.subfolders
Call replace_ip( folder.path , server_ip )
next
set fso=nothing
End Sub
' ###### 添加角色函数
Function addmember( sqlname , sqlpass , conn )
Dim is_exist , u_input , uname , upass , statu
Dim rand_ppid
u_input = InputBox( "您现在执行的是建立角色功能" & Chr(13) & Chr(10) & "请输入 游戏账号和密码 " & Chr(13) & Chr(10) & " (限字母和数字) 用空格分开:", "建立游戏账号" )
u_input = Split( u_input , " " )
' 返回下标最大值,判断长度
If UBound( u_input ) < 1 Then
MsgBox "您只填写了1项,至少要填写2项内容,用空格分开."
Exit Function
End if
uname = u_input(0)
upass = u_input(1)
' 打开NageMember表
conn.Open "Database=NageMember;uid=" & sqlname & ";pwd=" & sqlpass & ";Driver={SQL Server};server=localhost"
If conn.State = 0 Then
statu = 0
MsgBox "连接数据库失败," & Chr(13) & Chr(10) & "请检查sqlser.exe是否运行," & Chr(13) & Chr(10) & "以及数据库账号和密码是否正确." , 53 , "连接数据库提示"
Else
' 查询账号是否存在
Set is_exist = conn.Execute( "SELECT count( id_loginid ) FROM chr_log_info WHERE id_loginid='" & uname & "'" )
If is_exist.recordcount > 0 then
MsgBox "游戏账号: "& uname & " 已经存在.", 53 , "账号提示"
statu = 0
Else
rand_ppid = myrand()
' 建立 游戏账户 此3项不能重复(随机数id,账号,密码)
conn.Execute "insert into chr_log_info( propid , id_loginid , id_passwd , sta_num , type_num , id_real , bill ) values(" & rand_ppid & " , '" & uname & "' , '" & upass & "' , 1 , 1 , 0 , 151 )"
statu = 1
End If
End If
' 关闭数据库连接
conn.Close
' 提示
If statu = 0 Then
msgbox "角色添加失败!" , 64 , "提示"
Else
MsgBox "角色添加成功!" , 64 , "提示"
End if
' 返回值
addmember = statu
End Function
Function createtable( conn )
Dim newtable , is_exist
' 打开NageMember表
conn.Open "Database=NageMember;uid=" & sqlname & ";pwd=" & sqlpass & ";Driver={SQL Server};server=localhost"
If conn.State = 0 Then
statu = 0
MsgBox "连接数据库失败," & Chr(13) & Chr(10) & "请检查sqlser.exe是否运行," & Chr(13) & Chr(10) & "以及数据库账号和密码是否正确." , 53 , "连接数据库提示"
Else
' 新表名 (当天时间)
newtable = "Loginlog_" & Year(Date()) & Month(Date()) & Day(Date())
' 查询 新表 是否存在
Set is_exist = conn.Execute( "select count(*) from sysobjects where ='" & newtable & "' and xtype='U'" )
If is_exist.Fields(0).Value <> 1 then
' 复制的方式 建立新表
conn.execute "select * into " & newtable & " from Loginlog_200552 where 1=2"
End If
End If
' 关闭数据库连接
conn.Close
MsgBox "更新数据库表名完成" , 64 , "ok"
End Function
' ###### 随机数
Function myrand( )
Dim i
Randomize
i = Int((99999 - 10000 + 1) * Rnd() + 10000)
myrand = i
End Function
' ###### 检查ip地址合法性
Function checkip( serverip )
Dim regEx , statu
statu = 1
If serverip = "" Then
MsgBox "服务器ip地址不能为空." , 53 , "ip地址不合法!"
checkip = 0
Exit function
End if
Set regEx = NEW RegExp
regEx.Pattern = "\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}"
If Not( regEx.test( serverip ) ) Then
MsgBox "您输入的服务器ip不正确." , 53 , "ip地址不合法!"
statu = 0
End If
checkip = statu
End function
顶了 看來在繁體中文上真的很難處理!
本帖最后由 zhitianjiao 于 2012-3-16 04:03 编辑
关东唐 发表于 2012-3-15 17:31 static/image/common/back.gif
感谢分享,现在给予高亮并编辑入本版置顶帖中。望楼主继续努力。
很详细的教程,看出楼主很用心,特+1宝 ...
多谢版主加分~真给力 {:soso_e113:}{:soso__16984349925490629196_1:} quyan123456789 发表于 2012-3-15 18:54 static/image/common/back.gif
顶了
多谢支持 {:soso__2997972517525164546_4:}
MiniCaesar 发表于 2012-3-15 19:14 static/image/common/back.gif
看來在繁體中文上真的很難處理!
详细已经在空间留言 {:soso__5622710549144034107_4:}
我放棄了!真的弄不出來! 段信联系我的各位朋友,请自己耐心看这个教程,由于精力有限不能一一回复了。
架设服务端才4步,倒是基础环境需要多一点时间。
虚拟机请用 Virtual PC 2007 ,再下载win2000操作系统,安装2000操作系统。
物理机与虚拟机之间的文件共享,请用Virtual PC 2007 软件界面上附带的辅助功能;
物理机与虚拟机之间的网络通讯,请自己百度。 支持!!!!!!!!! 那客户端安装在XP系统吗? 顺意平面设计 发表于 2012-4-27 15:24 static/image/common/back.gif
那客户端安装在XP系统吗?
对,客户端安装在xp ,服务端安在虚拟机里面。 楼主写得很详细,只是能不能把文中提到的资源分享一下呢,比如:美丽世界Nage 6.0服务端: zhitianjiao 发表于 2012-4-3 16:11 static/image/common/back.gif
段信联系我的各位朋友,请自己耐心看这个教程,由于精力有限不能一一回复了。
架设服务端才4步,倒是基础 ...
vpc最后无法PING成功 我看晕了不过支持下 第5步,修改 客户端登陆器程序的ip地址,指向你的服务器ip地址。( 最好先备份一下Me-NAge.exe)
下载Uedit编辑器软件, 打开 游戏客户端目录/Me-NAge.exe (这是登陆器) .打开后按快捷键Ctrl + H 再按 Ctrl + F 搜索 , 勾选以正则表达式( Perl 方式)搜索 ( 在搜索界面——高级——正则引擎上选择 Perl),输入 \d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}查找,找到后替换为你的服务器ip ,然后保存一下。
这一步我真心找不到 \d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}这个 求分享资源。。谢放。 :::
页:
[1]
2