Сборка RU клиента для High Five на 273 протоколе

Martali

Интересующийся
Участник
Сообщения
37
Розыгрыши
0
Репутация
10
Реакции
8
Баллы
335
Всем привет.

Скачал сборку PTS HF MyExt64 с форума, так как играл на руоффе на этих хрониках. Клиент использовал от Инновы(прям поставил через инсталлятор) и патч multilang HF. Дополнительно добавил файлики из p5 из темы об апе p4 до p5. Клиент вылетал на выборе сервера. В логах увидел запись, что неправильный протокол у клиента (268), а у сервера 273. Случайно нашёл в в конфигах параметр AcceptLowerProtocol = False. Изменил на True. Зашёл в игру, интерфейс, мобы, квесты, надписи всё на русском, как я хочу. Разрушения в мире из p5 тоже есть.
Хочу собрать чистый RU клиент на 273 протоколе. Лазил по форуму, встретил пару сообщений в старых темах(без подробностей), о скрещивании EU/EN клиента с клиентом от Инновы на 268 протоколе путём редактирование dat-файлов. Прошу подсказать какие файлы надо править?
Либо может ограничиться разрешением двух протоколов в ini-файле конфига сервера? Но там не встретил такого параметра.
В наличии есть инсталляторы(и уже устанновленные) Инновы, и EU/EN клиентов. Куча папок system's от «чистых патчей». Но нужна информация, как скрещивается 268 ру-протокол и 273-eu.
Дополнительный вопрос, возможно, не связан с клиентом, где настраивается/добавляется возможность создания чаров с русскими никами?
 
Привет, в бд lin2world хранимка lin_CreateChar
 
Спасибо, LightShock.
Мне код процедуры ничего не сказал, прогнал через ИИ, тот написал, что «всё хорошо». Тип данных в поле @char_name nvarchar(24) может принимать кириллицу. Посоветовал набрать никнейм с «N'», якобы так настроена какая-то проверка или клиент неправильно отправляет русские символы. В логах сервера получил сообщения об ошибке
Если вбивать просто русские ники, то в клиенте поле имя очищается, а снизу написано, что длина имени персонажа не должна превышать 16 символов. В журнале сервера ничего не пишется.

Посмотрел кодировку БД lin2world — Cyrillic_General_CI_AS. Возможно, в ней проблема, находил сообщения, что нужна с припиской _UTF8?

/****** 개체: StoredProcedure [dbo].[lin_CreateChar] 스크립트 날짜: 11/03/2010 15:03:56 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/**
name: lin_CreateChar
desc: create user_data, quest, user_slot

history: 2007-03-30 modified by btwinuni
*/
CREATE procedure [lin_CreateChar]
(
@char_name nvarchar(24),
@account_name nvarchar(24),
@account_id int,
@pledge_id int,
builder tinyint,
gender tinyint,
@race tinyint,
@class tinyint,
@world smallint,
@xloc int,
@yloc int,
@zloc int,
@HP float,
@MP float,
@SP int,
Exp bigint,
Lev tinyint,
@align smallint,
@PK int,
@Duel int,
@PKPardon int,
@FaceIndex int = 0,
@HairShapeIndex int = 0,
@HairColorIndex int = 0
)
as

set nocount on

declare @char_id int

set @char_id = 0
set @char_name = rtrim(@char_name)

-- for test server by btwinuni 2007-07-31
--set Lev = 82
--set Exp = 9198000000
--set @SP = 1000000000
-- for test server

-- debug code delete in commercial
--if (@@servername = 'DL380G3NEW' or @@servername = 'L2DEV-AMD64-2')
--begin
-- set builder = 1
--end
--else
--begin
-- if not exists(select * from account_ch2 (nolock) where account = @account_name)
-- begin
-- raiserror ('Creating character is prohibited : No account name on account_ch2 = [%s]', 16, 1, @account_name)
-- return -1
-- end
--end

if @char_name like N' '
begin
raiserror ('Character name has space : name = [%s]', 16, 1, @char_name)
return -1
end

-- check user_prohibit
if exists(select char_name from user_prohibit (nolock) where char_name = @char_name)
begin
raiserror ('Character name is prohibited: name = [%s]', 16, 1, @char_name)
return -1
end

declare @user_prohibit_word nvarchar(20)
select top 1 @user_prohibit_word = words from user_prohibit_word (nolock) where @char_name like '%' + words + '%'
if @user_prohibit_word is not null
begin
raiserror ('Character name has prohibited word: name = [%s], word[%s]', 16, 1, @char_name, @user_prohibit_word)
return -1
end

-- check reserved name
declare @reserved_name nvarchar(50)
declare @reserved_account_id int
select top 1 @reserved_name = char_name, @reserved_account_id = account_id from user_name_reserved (nolock) where used = 0 and char_name = @char_name
if not @reserved_name is null
begin
if not @reserved_account_id = @account_id
begin
raiserror ('Character name is reserved by other player: name = [%s]', 16, 1, @char_name)
return -1
end
end

-- insert user_data
insert into user_data (
char_name, account_name, account_id, pledge_id, builder, gender, race, class, subjob0_class,
world, xloc, yloc, zloc, HP, MP, max_hp, max_mp, SP, Exp, Lev, align, PK, PKpardon, duel,
create_date, face_index, hair_shape_index, hair_color_index
)
values (
@char_name, @account_name, @account_id, @pledge_id, builder, gender, @race, @class, @class,
@world, @xloc, @yloc, @zloc, @HP, @MP, @HP, @MP, @SP, Exp, Lev, @align, @PK, @Duel, @PKPardon,
GETDATE(), @FaceIndex, @HairShapeIndex, @HairColorIndex
)

if (@@error = 0)
begin
set @char_id = @@identity
insert into quest (char_id) values (@char_id)
insert into user_slot (char_id) values (@char_id)

-- for test server by neo 2008-04-10
-- insert into user_pccafe_point (char_id, point) values (@char_id, 20000)
-- for test server
end

Ко всем: может вам попадалась статья/тема с информацией о редактировании dat-файлов для «повышение» руофф клиента 268 протокола до 273?
 
Martali
С базовой процедурой все кириллические чары создаются? Вообще видел в настройках экста в саамом низу какие-то настройки, но особо не смотрел на них, мб в том числе и там задается блок.
А если вбивать короткие ру ники, например, не 16 символов, а 5?
 
Я не знаю про базовую процедуру, где посмотреть её, чтобы проверить поведение?
Я скачал архив PTS сервера из этой темы. В темах на форуме попалась ссылка на видео , ставил по нему с поправкой на папки и файлы из «моего» архива ПТС сервера.
Сейчас при создании чара, при вводе русских символов (разной длины) и нажатии кнопки Создать, поле имя очищается, а внизу появляется надпись «Введите имя персонажа (максимум 16 символов)». То есть у меня не было(и нет) успешных созданий чаров с русскими никами. С английскими буквами создаются.
Ещё узнал, что буква «ё» вообще не набирается в поле Имя.

В server.ini, я по-моему только имя сервера сменил с KAIN на Flare.
Код:
[CacheD]
address="127.0.0.1"
port=12006
 
[AuthD]
address="127.0.0.1"
port=2104
 
[LogD]
address="127.0.0.1"
port=3999
 
[World]
WorldId=1
UserLimit=7000
LetBuilder=1
PremiumLimit=7500
useCustomEquipment=false  ; look setting.txt for custom new character eqipment (deafult:false)
UseLecture=false  ; Japan Only
AuthServerID=2
 
[PetitionD]
address="127.0.0.1"
port=2107
WorldName="Flare"
DisableStart=0
DisableEnd=0
heartbeat=86400
NewPetition=false
 
[Report]
Interval=10
 
[Setting]
UserPathFind=true
WorldCollision=false
ExceptionMailing=false
MailServer="127.0.0.1"
ExceptionMinidump=false
IOBufferCount=160000  ; 80000 is euro\ru default (live servers)
AgeCheckType=0
AcceptEscapeCommand=true
reconnectAuth=1
country=8
BOTLog = false
BOTBlock = false
BOTBlockSec=30
BOTItem=13009
BOTItemCount=1
gameguard=false
gameguard_checkonly=false
isnonpk=false
 
canrolldice=1
cannotmonrace=false
disable18age=false
 
newinspector=false
newinspector_checkonly=false
 
EnablePacketShuffle = false
 
UsePacketLog=false
MaxSpawnNumPerOneTick=500
MaxDespawnNumPerOneTick=200
server_type=live
newinspectorversion=serverdata.dat
 
NavitAdventResetTime=23400
UseAuthUserData=false  ;  display character count at server selection window   
birthday_event_start="2012/11/02"
BirthdayItem=22187   
FreeTeleportNeedItem=true
 
FreeOpenServer=false ; innova = true, ncwest = false
 
PacketRepeatLimit=16
PacketRepeatLimitTime=1000
 
UseResourceLoader=true
 
AcceptLowerProtocol=True
autologoutsec=600
playtimelimit=0
CheckSecondaryAuth=false
 
MultiLang=false
 
ServerStopperEnabled = false
 
;IsMergedServer=1  ; Euro server merge setting
 
[HtmlLinkCheck]
HtmlLinkCheck=false
LogOnInvalidLink=false
KickOnInvalidLink=false
 
[FONTCHECK]
fontcheck=0
filename=smallfont.gly
 
[BBS]
WriteLevel=5
WorldNames="Flare"
 
[L2COMM]
Address="127.0.0.1"
Port=2010
Autoconnect=1
Usesvr=1
 
[BOT]
block=0
 
[NPCPOS]
extra_mob=on ; keep enabled (default)
 
[EVENT] ; general rates of server. vitality drop speed does NOT depend on this rate.
adenaamount=100 ; 100 - for x1 rate, 200 - x2 etc.
itemrate=100
spoilrate=100
exprate=500
aiexprate=500
aiadenarate=100
 
[Premium]
Enable=true
Address="127.0.0.1"
Port=10100
Heartbeat=10
Pause=false
cashShopPause=false
 
[PremiumUser] ; general Premium Account usage (login_flag = 1024)
PCCafe=true
ExpBoost=0
SpBoost=0
ExpBoostPercent=50 ; 1 - x2 Exp, 2 - x3 Exp etc. PcCafe handled
SpBoostPercent=50 ; PcCafe handled
SpoilBoost=0 ; 0 - no bonus
DropBoost=0 ; affects adena amount rate also
 
[GoodsInventory]
enable=false
address="127.0.0.1"
port=10510
heartbeat=60000
 
[Ping]
CachePingFlag=false
CachePingTime=60000
NpcPingFlag=flase
NpcPingTime=60000
 
Да тут не в сервере дело мне кажется, а в патче, найди норм патч мульти на 273.
 
LightShock, разобрался с «базовой процедурой».
Заменил
SQL:
if (@char_name like N''
begin
  raiserror ('Character name has space : name = [%s]', 16, 1, @char_name) 
  return -1
end

на

SQL:
if (@char_name like N'%[^a-zA-Z0-9]%') AND @char_name like N'%[^а-яА-Я0-9]%'
begin
  raiserror ('Character name has space : name = [%s]', 16, 1, @char_name) 
  return -1
end

Поведение клиента при создании чара не поменялось.
 
Реакции: Dara
кириллический ник занимает в 2 раза больше памяти, то есть в 2 раза меньше символов
 
Данный сайт использует cookie. Вы должны принять их для продолжения использования. Узнать больше…