PROTOCOL_LOGIN_ACK - Форум администраторов игровых серверов
Форум администраторов игровых серверов StormWall - Защита от DDos атак
Регистрация Мнения Справка Сообщество Календарь
Вернуться   Форум администраторов игровых серверов > MMO > Point Blank (Piercing Blow)

Point Blank (Piercing Blow)
Общие вопросы по написанию эмулятора. General questions on developing emulator. При поддержке: Lucera 2 - разработка Java Interlude

Ответ
Опции темы
Непрочитано 21.05.2016, 16:52   #1
Забанен за кидаловo/обман/развод

Автор темы (Топик Стартер) PROTOCOL_LOGIN_ACK и помощь с сервером

Programmator не мог бы ты еще немного помочь.
Я начал писать подключение к БД и возник вопрос.
После отправки пакета PROTOCOL_LOGIN_ACK, мне надо что то вызывать чтобы подключиться к БД и пошла загрузка инф из БД в PROTOCOL_BASE_GET_USER_INFO_ACK?

И не мог бы подсказать что нужно для написание BattleServer с UDP 3?


Ошибка так и осталась, хоть я и изменил
ClientConnection:
Свернуть ↑Развернуть ↓

Boris2105 вне форума Ответить с цитированием
Непрочитано 21.05.2016, 17:37   #2
Аватар для Awiion

По умолчанию Re: PROTOCOL_LOGIN_ACK и помощь с сервером

Boris2105, Для udp3 сервера надо,
Пакет подключения игрока, вот Connect
Пакет о комнате,
Пакет о состояние боя,
И структуру динамического боя.
Это все есть тут
______________________________
Цитата:
Сообщение от Boris2105 Посмотреть сообщение
Programmator не мог бы ты еще немного помочь.
Я начал писать подключение к БД и возник вопрос.
После отправки пакета PROTOCOL_LOGIN_ACK, мне надо что то вызывать чтобы подключиться к БД и пошла загрузка инф из БД в PROTOCOL_BASE_GET_USER_INFO_ACK?
А что там такого?

Пишешь коннектор, создаешь таблицу и указываешь аккаунт ид.
потом потом ее кидаешь в цикл, получится типо такого

private Player player;
player = PlayerTable.Players[account.AccountID];
Awiion вне форума Отправить сообщение для Awiion с помощью Skype™ Ответить с цитированием
Сказали спасибо:
Непрочитано 21.05.2016, 18:15   #3
Аватар для PROGRAMMATOR
Администратор

По умолчанию Re: PROTOCOL_LOGIN_ACK и помощь с сервером

Boris2105, предположу, что MySQL? Через NuGet ставишь MySql.Data, и по примеру Awiion пишешь примерно следующее:

using (var reader = MySqlHelper.ExecuteReader(ConnectionString, "SELECT * FROM `accounts`"))
{
	while (reader.Read())
	{
		var account = new Account()
		{
			Id = reader.GetUInt64("Id"),
			Name = reader.GetString("Name"),
			Password = reader.GetString("Password"),
			Email = reader.GetString("Email"),
			// ...
		};
 
		accounts.Add(account);
	}
}
 
Code: C#

Или доставить ещё Dapper и тогда можно так:

using (var connection = Cached.GetConnection) // connection = MySqlConnection
{
    var accounts = SqlMapper.Query<AccountModel>(connection, "SELECT * FROM `accounts`");
 
    return accounts;
}
 
Code: C#

И выбираешь при авторизации по логину (токену если нужно):

var account = accounts.FirstOrDefault(x => x.Login == login);
 
Code: C#

ConnectionString имеет следующий вид:

Код:
$"server={server};port={port};database={database};Character Set={encoding};User Id={user};password={password}"
__________________
composer require laravel/framework
yarn add vue
PROGRAMMATOR вне форума Отправить сообщение для PROGRAMMATOR с помощью ICQ Отправить сообщение для PROGRAMMATOR с помощью Skype™ Ответить с цитированием
Сказали спасибо:
Непрочитано 22.05.2016, 01:02   #4
Забанен за кидаловo/обман/развод

Автор темы (Топик Стартер) Re: PROTOCOL_LOGIN_ACK и помощь с сервером

Цитата:
Сообщение от PROGRAMMATOR Посмотреть сообщение
Boris2105, предположу, что MySQL? Через NuGet ставишь MySql.Data, и по примеру Awiion пишешь примерно следующее:

using (var reader = MySqlHelper.ExecuteReader(ConnectionString, "SELECT * FROM `accounts`"))
{
	while (reader.Read())
	{
		var account = new Account()
		{
			Id = reader.GetUInt64("Id"),
			Name = reader.GetString("Name"),
			Password = reader.GetString("Password"),
			Email = reader.GetString("Email"),
			// ...
		};
 
		accounts.Add(account);
	}
}
 
Code: C#

Или доставить ещё Dapper и тогда можно так:

using (var connection = Cached.GetConnection) // connection = MySqlConnection
{
    var accounts = SqlMapper.Query<AccountModel>(connection, "SELECT * FROM `accounts`");
 
    return accounts;
}
 
Code: C#

И выбираешь при авторизации по логину (токену если нужно):

var account = accounts.FirstOrDefault(x => x.Login == login);
 
Code: C#

ConnectionString имеет следующий вид:

Код:
$"server={server};port={port};database={database};Character Set={encoding};User Id={user};password={password}"

Спасибо , а вот на счет этого?
Цитата:
Ошибка так и осталась, хоть я и изменил
ClientConnection:
Свернуть ↑Развернуть ↓

Boris2105 вне форума Ответить с цитированием
Непрочитано 22.05.2016, 01:11   #5
Аватар для PROGRAMMATOR
Администратор

По умолчанию Re: PROTOCOL_LOGIN_ACK и помощь с сервером

Тебе виднее, я же не вижу, как себя ведёт клиент.
Может после подключения он валится от какой-то ошибки.
__________________
composer require laravel/framework
yarn add vue
PROGRAMMATOR вне форума Отправить сообщение для PROGRAMMATOR с помощью ICQ Отправить сообщение для PROGRAMMATOR с помощью Skype™ Ответить с цитированием
Непрочитано 24.05.2016, 23:42   #6
Забанен за кидаловo/обман/развод

Автор темы (Топик Стартер) PROTOCOL_LOGIN_ACK

При попытке войти , клиент сразу отключает.


ClientPacket:
Свернуть ↑Развернуть ↓


PROTOCOL_LOGIN_REQ:
Свернуть ↑Развернуть ↓

PROTOCOL_LOGIN_ACK:
Свернуть ↑Развернуть ↓
Boris2105 вне форума Ответить с цитированием
Непрочитано 25.05.2016, 00:07   #7
Аватар для PROGRAMMATOR
Администратор

По умолчанию Re: PROTOCOL_LOGIN_ACK

Открой для себя BinaryReader и BinaryWriter и не нужно будет париться об офсетах.

Код:
int _length = text.IndexOf(char.MinValue);
if (_length != -1)
{
text = text.Substring(0, _length);
}
Это не длина, а индекс (IndexOf как бы намекает).

int index = text.IndexOf('\0');
 
if (index != -1)
{
    text = text.Remove(index);
}
 
Code: C#

P.S. Незачем новую тему создавать, ты же пару дней назад с таким же названием создал.
__________________
composer require laravel/framework
yarn add vue
PROGRAMMATOR вне форума Отправить сообщение для PROGRAMMATOR с помощью ICQ Отправить сообщение для PROGRAMMATOR с помощью Skype™ Ответить с цитированием
Непрочитано 25.05.2016, 01:08   #8
Забанен за кидаловo/обман/развод

Автор темы (Топик Стартер) Re: PROTOCOL_LOGIN_ACK

Цитата:
Сообщение от PROGRAMMATOR Посмотреть сообщение
Открой для себя BinaryReader и BinaryWriter и не нужно будет париться об офсетах.

Код:
int _length = text.IndexOf(char.MinValue);
if (_length != -1)
{
text = text.Substring(0, _length);
}
Это не длина, а индекс (IndexOf как бы намекает).

int index = text.IndexOf('\0');
 
if (index != -1)
{
    text = text.Remove(index);
}
 
Code: C#

P.S. Незачем новую тему создавать, ты же пару дней назад с таким же названием создал.

ты имеешь ввиду что-то типа такого?
Код:
private BinaryReader reader;
private byte[] _buffer;
private int _offset;
public int Remaining { get { return (int)(_buffer - _offset); } }
public int ReadInt()
        {
            if (Remaining < 4)
                throw new IndexOutOfRangeException();
            return reader.ReadInt32();
        }
Boris2105 вне форума Ответить с цитированием
Непрочитано 25.05.2016, 01:28   #9
Аватар для PROGRAMMATOR
Администратор

По умолчанию Re: PROTOCOL_LOGIN_ACK

Типа такого:

public class PacketReader
{
    MemoryStream stream;
    BinaryReader reader;
 
    /// <summary>
    /// 
    /// </summary>
    /// <param name="buffer"></param>
    public void Init(byte[] buffer)
    {
        stream = new MemoryStream(buffer);
        reader = new BinaryReader(stream);
    }
 
    /// <summary>
    /// 
    /// </summary>
    /// <returns></returns>
    protected int ReadInt() => reader.ReadInt();
 
    /// ...
}
 
Code: C#
__________________
composer require laravel/framework
yarn add vue
PROGRAMMATOR вне форума Отправить сообщение для PROGRAMMATOR с помощью ICQ Отправить сообщение для PROGRAMMATOR с помощью Skype™ Ответить с цитированием
Непрочитано 25.05.2016, 02:10   #10
Забанен за кидаловo/обман/развод

Автор темы (Топик Стартер) Re: PROTOCOL_LOGIN_ACK

то есть вместо ReadD будет использоваться protected int ReadInt() => reader.ReadInt(); ?
Boris2105 вне форума Ответить с цитированием
Ответ


Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
PROTOCOL_LOGIN_ACK и помощь с сервером Boris2105 Point Blank (Piercing Blow) 4 22.05.2016 01:11
Структура PROTOCOL_LOGIN_ACK Sojang Point Blank (Piercing Blow) 15 20.01.2016 01:02


© 2007–2024 «Форум администраторов игровых серверов»
Защита сайта от DDoS атак — StormWall
Работает на Булке неизвестной версии с переводом от zCarot
Текущее время: 00:29. Часовой пояс GMT +3.

Вверх