[Poradnik] Stawianie serwera Lineage 2 Prelude

Zaczęty przez a23v52, Listopad 24, 2013, 03:33:52 PM

Poprzedni wątek - Następny wątek

a23v52

Z okazji 10-lecia gry postanowiłem napisać ten poradnik. Na początek kilka słów ode mnie.

O Prelude Open Beta:
- dostępna tylko 1 zmiana klasy,
- brak raid bossów (poza Ant Queen i Core),
- top grade C (w Prestigious Items Hall, w Giran), są itemy B, A, S ale niedostępne dla graczy),
- brak spiritshotów (tylko soulshoty),
- inne UI, inne tekstury,
- świat podzielony na Elmore (Orc, Dwarften Village) i Aden (Talking Island, Elven, Dark Elven Village, Gludin, Gludio, Dion, Giran),
- brak Oren, Aden, i paru innych miast, jednak są tekstury Oren (tylko gm może się tam teleportować),
- można jeździć na striderze, wywernie (tylko gm),
- siege tylko w Gludio, jest też agit – Partisan Hideaway, brak clan halli,
- tax rate max 30%,
- niektóre buffy trwają tylko 10 minut.

Wstępne informacje:
- Serwer potrzebuje klienta Lineage 2 C0 open beta protocol 336. Niestety link z fileplanet padł. Można używać nowszego klienta (można go znaleźć w internecie, jeśli linki nie padły, protocol ~370) z systemem p336 jednak powoduje to drobne bugi,
- Serwer działa na wszystkich Windowsach do Windowsa 7 włącznie (Win8 i wyższe nie sprawdzałem),
- Wymaga MSSQL serwer 2000 (powinno działać na wyższym, ale poradnik jest na 2000),
- Na internecie można znaleźć różne datapacki:
   - koreański (bez geodaty, zapewne wyciekł),
   - przetłumaczone przez rebelstrika na angielski, z geodatą z C1 (zawiera tereny aden, oren, których nie było w C0).
- Serwer czasem lubi nie wystartować, z różnych powodów:
   - brak swap-u,
   - błąd w geodacie (wtedy trzeba znaleźć inną, uruchomienie serwera bez geo powiedzie się ale nie będzie można wejść do gry),
   - w niektórych poradnikach można przeczytać, że aby załadowały się wszystkie NPC, należy na końcu boot.ini do wpisu bootowania Windowsa(dotyczy starszych wesji) dopisać /3GB (info o tym przełączniku: http://support.microsoft.com/kb/833721/pl). Ten serwer NIE wymaga tego.
- Serwer może też wystartować zminimalizowany i nie chcieć się przywrócić – w takiej sytuacji należy go zmaksymalizować,
- Wszystko co można zmienić z serwerze znajduje się w folderach spript i html,
- Trzeba mieć l2decrypt.exe aby edytować l2.ini, nowsze file editory mogą nie zadziałać,
- Porty, na których działa serwer:
   2106 – login
   7777 – game
Pozostałe porty służą do komunikacji wewnętrznej programów serwera – powinny być zablokowane.
- Ostatnia uwaga: zanim przystąpisz do stawiania serwera powinieneś mieć co najmniej podstawową wiedzę o MSSQL – w części wymagającej jego użycia najczęściej pojawiają się błędy.

A teraz o stawianiu serwera...

a23v52

CZĘŚĆ 1 – Konfiguracja plików INI i config.txt

l2cache.ini w folderze CacheD

[LogD]
address="127.0.0.1"
port=3999

[Setting]
;Country=0 KR
;Country=1 US
;Country=2 JP
;Country=3 TW
Country=3

[World]
WorldId=1  //id świata – musi być wszędzie taki sam
Pair=0

[ItemAudit]
DefaultPriceLimit=1000000000
DefaultPriceCheck=500000000
ChgRatioLimit=30

AdenaLimit=1000000000
AdenaCheck=500000000
AdenaChgRatioLimit=30

[SQL]
SQLExecLimit=5000
;clear unowned item data[0:false, 1:true]
ItemClearOnStart=1
DiffBBSConn=0
SaveQsData=0

l2logd.ini w folderze L2LogD

[LogD]
address=127.0.0.1
port=3999
sendable=false

[LogTable]
Daily=0
BCPFolder=0

[Start]
BCPInt=3600000
ServerInt=600000
AutoBCP=0

[World]
WorldId=1 //id świata, wszędzie musi być taki sam

[SQL]
SQLExecLimit=5000
PollingInterval=6000
BCPThreadCount=2

L2NPC.ini w folderze L2NPC

[server]
address="127.0.0.1"
port=2002

[CacheD]
address="127.0.0.1"
port=2008

[map]
directory="map"

[LogD]
address="127.0.0.1"
port=3999

[World]
WorldId=1 // id świata, wszędzie musi być taki sam

l2server.ini w folderze L2Server

[CacheD]
address="127.0.0.1"
port=2006

[AuthD]
address="127.0.0.1"
port=2104

[LogD]
address="127.0.0.1"
port=3999

[World]
WorldId=1  //id świata, wszędzie musi być taki sam

[Setting]
UserPathFind=false
WorldCollision=false
;Country=0 KR
;Country=1 US
;Country=2 JP
;Country=3 TW
Country=3

[petitionD]
address="127.0.0.1"
port=2107
worldname="Lineage02" //nazwa świata, taka sama jak w bazie danych (o tym będzie niżej)


config.txt w folderze NewAuth\etc

serverPort = 2104
serverExPort = 2106
serverIntPort = 2108
worldport = 7777
DBConnectionNum=10
encrypt = false
numServerThread = 2
numServerExThread = 2
numServerIntThread = 2
logDirectory="log"
;30206 : l2, 30310 : Sl
ProtocolVersion = 30810
;8:lineage2, 4 halo
GameID=8
DesApply=false
PacketSizeType = 3
ReadLocalServerList=false
OneTimeLogOut=true
CountryCode=2
DevConnectOuter=true
DevServerIP="211.189.163.171" //twój WAN IP
SocketTimeOut =10
SocketLimit=5000
AcceptCallNum=1
UseOneIOCom=false
AcceptThread=1
WaitingUserLimit=10
dumppacket=false
UserData=false
UseLogD=false
logdip="127.0.0.1"
logdport=3999
logdconnectinterval=120

serverlist w folderze NewAuth\etc

1,Lineage02, 211.189.163.171,127.0.0.1,1
; 1 – id świata
; Lineage02 – nazwa świata
; 127.0.0.1 – WAN IP
; 127.0.0.1 – LAN IP

config.txt w folderze PetitionD\etc

; Number of threads working for transaction and service socket.
numberOfServiceThreads = 10

; Port number for world server
worldPort = 2107

; Port number for petition client
servicePort = 2109

; Run as test mode
runMode = 1

; WebAuthD address
webAuthServer = "127.0.0.1"

; WebAuthD port
webAuthPort = 2108

; Number of WebAuthD connections
numberOfWebAuthConnections = 0

; Log directory
logDirectory = "log"

; status refresh interval(seconds)
statusRefresh = 1

; Number of connections to petition database
numberOfPetitionDBConnections = 12

; petition database connection string

; number of games to support, should be consistent with game_title table
numberGames = 2

petitionDatabase =

"0xF6DBBAA8A7C57B6F418E95A7CFCBB4DAF09B9A5E39B2FCA717A7EA9C44E98FCDA34297C97542494D9977

C5E9ED58FBE5814852F7D8DAF11478AFEB5861F5572B4A2A7FE96453BBF6A3E4445310F58A15FB3FA2D8D26

BA61F2B50BE143F481EE33FF2BBDE07E242E5E29593F12D148CD1B73692179C15FDBAE96034D3B4C21363"


CZĘŚĆ 1 - KONIEC

a23v52

#2
CZĘŚĆ 2 – KONFIGURACJA BAZ DANYCH

Zmień w lin2world.sql
(Uwaga: w zależności od posiadanego datapacka znalezienie poniższej linijki może być utrudnione, może być tam inny ip, login, hasło.)

'SQLOLEDB', '127.0.0.1';'sa';'l2online'

127.0.0.1 twój ip (do MSSQL)
sa twój login MSSQL
l2online twoje hasło MSSQL

Będzie 14 linijek, które musisz zmienić. Gdy skończysz zapisz plik.

sprawdź l2logjob.sql
jeśli zamiast N'lin2log' masz N'l2online' >> zamień N'l2online' na N'lin2log'

sprawdź l2reportjob.sql
jeśli zamiast N'lin2report' masz N'l2online' >> zamień N'l2online' na N'lin2report'

1. Stwórz bazy danych

- lin2world
- lin2comm
- lin2log
- lin2report
- lin2db
- petition

2. W właściwościach bazy danych możesz zmienić ustawienia połączenia (NIE trzeba).
Wystartuj SQL server agent, jeśli tego nie zrobić skrypty się nie wykonają.
Skrypty wykonają się i tak z błędami, lecz te trzeba zignorować.

3. lin2world Database - lin2world.Sql
Parsuj >> Wykonaj, w kolejnych przypadkach tak samo

4. lin2comm Database - lin2comm.Sql
5. lin2log Database - lin2log.Sql
6. lin2log Database - l2logjob.Sql
7. lin2report Database - l2report.Sql
8. lin2report Database - l2reportjob.Sql
9. lin2db Database - lin2db.Sql
10. petition Database - petition_db_objects_20030324.Sql

WAŻNE
Enterprise manager >> otwórz swój serwer >>
lin2db Database -> Table -> Server (otwórz tabele)
dodaj

id = 1
name = nazwa worldname taka jak w l2server.ini, koniecznie równo 9 liter!
ip = twój wan ip
inner_ip = twój LAN ip
ageLimit = 0
pk_flag = 0 PK nie dozwolone; 1 dozwolone

CZĘŚĆ 2 - KONIEC

a23v52

CZĘŚĆ 3 – KONFIGURACJA DNS

Panel sterowania >> Narzędzia administracyjne >> ODBC >> Plikowe źródła danych
Zrób 6 projektów
lin2world
lin2comm
lin2log
lin2report
lin2db
petition

Konfiguracja
Dodaj – zaznacz SQL server – dalej – wpisz nazwę – dalej – zakończ.
W następnym oknie wpisz w okno serwer (local), chyba że MSSQL jest na innym komputerze.
Wybierz uwierzytelnienie Windows NT lub serwera SQL, w zależności od tego co podałeś podczas instalacji MSSQL. - dalej
Zmień domyślną bazę danych i wybierz bazę dla której robisz projekt. – dalej – zakończ.
Testuj źródło połączenie – ok – ok – teraz powtórz to dla innych projektów.

CZĘŚĆ 3 – KONIEC

a23v52

CZĘŚĆ 4 – URUCHOM SERWER!!!

L2LogD.exe

File DB = lin2log
login name = twój login
password = twoje hasło


CacheD.exe

File DB = lin2world
login name = twój login
password = twoje hasło


L2AuthD.exe

File DSN = lin2db
login name = twój login
password = twoje hasło


PetitionD.exe

Server = (local)
login name = twój login
password = twoje hasło
Database = petition


L2Server.exe
L2NPC.exe

Powodzenia!
Ode mnie: Jeśli się tutaj pomylisz musisz w rejestrze windowsa usunąć klucz:
HKML >> SOFTWARE >> PROJECT_L2
Dla 64 systemu
HKML >> SOFTWARE >> WOW6432NODE >> PROJECT_L2

CZĘŚĆ 4 – KONIEC

a23v52

#5
CZĘŚĆ 5 – ZAREJESTRUJ SWOJE KONTO // Używam innego account managera, więc tutaj będzie tylko czyste tłumaczenie. Zanim zaczniesz zainstaluj IIS.

Użyj ASP aby zarejestrować swoje konto. Są dwa różne rejestratory w ASPreg.zip

ASP_1 w ASPreg.zip
Sprawdź datę L2AuthD.exe, jeśli jest to 05/11/2003(encrypt) uruchom 注册组件.bat i INSTALL.EXE z folderu ActiveX.
Jeśli 30/08/2004(decrypt) pomiń to.

edytuj conn.asp

Dane do mssql:
ms_sql_server_host_addr = "127.0.0.1" //jeśli jest na tym samym komputerze
sql_server_username = "twój login"
sql_server_password = "twoje hasło"
tego poniżej nie zmieniamy
lin2db = "lin2db"
lin2world = "lin2world"
Jeśli L2AuthD.exe było encrypt zmień sys_type na ,,encrypt", jeśli nie przejdź dalej
sys_type = "none"

edytuj config.asp

nazwa twojej strony
const WEB_SIT_NAME = "狂歌浪舞 - 天堂II会员系统"
const SERVER_MAX_CLIENT = 100
const COOKIE_HEAD = "kglw"

UROCHOM IIS

--------------------------------------------------------------------

ASP_2 w ASPreg.zip

edytuj CH_regedit.asp


Dim SqlDatabaseName,SqlPassword,SqlUsername,SqlLocalName
SqlDatabaseName = "lin2World"
SqlUsername = "twój login MSSQL"
SqlPassword = "twoje hasło MSSQL"
SqlLocalName = "(local)"

URUCHOM IIS

--------------------------------------------------------------------


Jeśli nie chcesz używać ASP, uruchom Lin2Reg.exe (Made in China).

uruchom db.udl
uruchom Lin2Reg.exe
Lin2Reg.exe prawdopodobnie nie działa na angielskich 32 bitowych Windowsach.

----------------------------------------------------------------------

Jest jeszcze inny sposób - ręczna zmiana w MSSQL.
Nie będę się tutaj dużo rozpisywał. Koniecznie potrzebujesz l2pass.exe który szyfruje hasła.
W wierszu poleceń wpisz: l2pass.exe twoje hasło. Nie zapomnij zmienić pay_stat na 1 w jednej w tabel w bazie danych.

CZĘŚĆ 5 – KONIEC

a23v52

#6
CZĘŚĆ 6 – URUCHOM GRĘ

Możesz użyć tylko klientów l2 prelude.
Zainstaluj grę.
Zmień serveraddr w l2.ini w folderze system
(potrzebujesz l2decrypt.exe, wspomniałem o tym wcześniej)
edytuj L2.clear.ini

ServerAddr=127.0.0.1

zaszyfruj L2.clear.ini używając wersji 111

zmień nazwę l2.crypt.ini na l2.ini w skopiuj do folderu system.

CZĘŚĆ 6 - KONIEC

I jeszcze na koniec kilka słów ode mnie:
Poradnik został napisany przez użytkownika hicks z ragezone.
Zmiany, tłumaczenie i inne dodatkowe informacje wykonane przeze mnie.

PS Na koniec dodam poza tematem, że C1 java istnieje, choć nie kompletne
http://sourceforge.net/projects/l2j/files/l2j/
http://sourceforge.net/projects/l2j/files/l2j/version-0.1/
http://sourceforge.net/projects/l2j/files/l2j/version-0.4.1/

Na naszym forum wyczytałem, że l2j jest prowadzone od C3.

Jakby były jakieś problemy/niedomówienia to piszcie.

a23v52

#7
PS2 Są problemy z uruchomieniem gry na Windowsie 7. Najprostszą metodą uruchomienia gry jest zrobienie małego patha. W folderze Lineage II/system tworzymy plik l2.bat i za pomocą notatnika wklejamy do niego:

REM Check Windows Version
ver | findstr /i "5\.0\." > nul
if %ERRORLEVEL% EQU 0 goto ver_2000
ver | findstr /i "5\.1\." > nul
if %ERRORLEVEL% EQU 0 goto ver_XP
ver | findstr /i "5\.2\." > nul
if %ERRORLEVEL% EQU 0 goto ver_2003
ver | findstr /i "6\.0\." > nul
if %ERRORLEVEL% EQU 0 goto ver_Vista
ver | findstr /i "6\.1\." > nul
if %ERRORLEVEL% EQU 0 goto ver_Win7
ver | findstr /i "6\.2\." > nul
IF %ERRORLEVEL% EQU 0 goto ver_Win7


:ver_2000
echo 2000
goto runL2
:ver_XP
echo xp
goto runL2
:ver_2003
echo 2003
goto runL2

:runL2
SET L2DIR=%~dp0
ECHO Current directory: %L2DIR%
if not exist "%L2DIR%\l2.exe" goto ERR2
START /MIN l2.exe
goto END


:ver_Vista
echo Vista
goto BatchGotAdmin
:ver_Win7
echo Windows7
goto BatchGotAdmin
:BatchGotAdmin
:-------------------------------------
REM  --> Check for permissions
>nul 2>&1 "%SYSTEMROOT%\system32\cacls.exe" "%SYSTEMROOT%\system32\config\system"

REM --> If error flag set, we do not have admin.
if '%errorlevel%' NEQ '0' (
    echo Requesting administrative privileges, please wait...
    goto UACPrompt
) else ( goto gotAdmin )

:UACPrompt
    echo Set UAC = CreateObject^("Shell.Application"^) > "%temp%\getadmin.vbs"
    echo UAC.ShellExecute "%~s0", "", "", "runas", 1 >> "%temp%\getadmin.vbs"

    "%temp%\getadmin.vbs"
    exit /B

:gotAdmin
    if exist "%temp%\getadmin.vbs" ( del "%temp%\getadmin.vbs" )
    pushd "%CD%"
    CD /D "%~dp0"
:--------------------------------------
if exist "%SystemRoot%\SysWOW64\cmd.exe" SET SYSDIR="%SystemRoot%\SysWOW64"
goto STEP0
SET SYSDIR="%SystemRoot%\System32"

:STEP0
SET L2DIR=%~dp0
ECHO Current directory: %L2DIR%
if not exist "%L2DIR%\l2.exe" goto ERR2
CD SYSTEM
if not exist "%SYSDIR%\rsaenh.dll" goto ERR3
if exist ".\rsaenh.dll.bak" goto STEP1
takeown /f "%SYSDIR%\rsaenh.dll"
icacls "%SYSDIR%\rsaenh.dll" /grant %USERNAME%:F
move /Y "%SYSDIR%\rsaenh.dll" "%SYSDIR%\rsaenh.dll.bak"
if not exist "%SYSDIR%\rsaenh.dll.bak" goto ERR4
:--------------------------------------


:STEP1
if exist "%SYSDIR%\rsaenh.dll" del "%SYSDIR%\rsaenh.dll"

:CRTWAIT
if exist waitl2run.bat del waitl2run.bat
:: Waiting 10 seconds and moving rsaenh.dll back to SYSTEM folder.
echo @echo off>waitl2run.bat
echo cls>>waitl2run.bat
echo TIMEOUT /T 10>>waitl2run.bat
echo move /Y "%SYSDIR%\rsaenh.dll.bak" "%SYSDIR%\rsaenh.dll">>waitl2run.bat
echo EXIT>>waitl2run.bat

START /MIN %L2DIR%\l2.exe
START /MIN waitl2run.bat
goto END
:--------------------------------------


:ERR2
COLOR 0C
echo.
echo. L2.exe not found.
echo. Place this file into your system folder.
pause
goto END
:--------------------------------------

:ERR3
COLOR 0C
echo.
echo. "%SYSDIR%\rsaenh.dll" could not be found.
pause SET /P ANSWER=Should i try to execute L2.exe (y/n)?

if /i {%ANSWER}={y}{goto YES}
if /i {%ANSWER}={Y}{goto YES}
if /i {%ANSWER}={yes}{goto YES}
if /i {%ANSWER}={YES}{goto YES}
if /i {%ANSWER}={Yes}{goto YES}
goto NO
:YES
START /MIN %L2DIR%\l2.exe
:NO
goto END
:--------------------------------------


goto END

:ERR4
COLOR 0C
echo.
echo. Could not move "%SYSDIR%\rsaenh.dll"
echo. You need to run this script as administrator.
pause
goto END
:--------------------------------------



:END

Path ten odłącza na chwile od Windowsa plik rsaenh.dll który powoduje problemy a po 10 sekundach przywraca go spowrotem. Przed użyciem patha zalecane jest zrobienie kopii zapasowej tego pliku, tak na wszelki wypadek.

P4CZU

Dzięki za share, przyda się dla osób, które nie używały jeszcze plików oficjalnych.

Jak dla mnie powinien polecieć plusik.