Перейти к содержимому

Фотография
- - - - -

Ответы на часто задаваемые вопросы [Сервер]


  • Закрытая тема Тема закрыта
В этой теме нет ответов

#1
Miracle

Miracle

Почему не работают пакеты gamedbd?

 

Перед структурой пакета для gamedbd находится int.

 

При отправке он должен быть равен 0xFFFFFFFF

При приеме он обычно равен 0x7FFFFFFF


Где взять структуру пакета для другой версии сервера?

 

1. Необходимо установить gdb, если он отсутствует.

sudo apt-get install gdb

2. Перейти в папку нужного сервиса (например, gamedbd).

cd /home/gamedbd

3. Вызвать gdb.

gdb

4. Прочитать в gdb отладочную информацию сервиса.

file gamedbd

5. Прочесть структуру нужного пакета по его имени (например, DBGetConsumeInfosArg).

ptype DBGetConsumeInfosArg

Как отправить золото сразу после регистрации?

 

Стандартные способы выдачи через MySql медленные, потому что золото выдает authd через определенные промежутки времени. Для моментальной выдачи необходимо использовать пакет DebugAddCash.

Код ниже отправит на аккаунт 5 золотых.

<?
include("packet_class.php");
$DebugAddCash = new WritePacket();
$DebugAddCash -> getresponse = false; // without response
$DebugAddCash -> WriteUInt32(1024); // userid
$DebugAddCash -> WriteUInt32(5 * 100); // cash
$DebugAddCash -> Pack(0x209); // opcode
$DebugAddCash -> Send("localhost", 29400); // send to gamedbd
?>

Как получить IP последнего (текущего) входа игрока?

 

Данная информация есть в структуре PlayerConsumeInfo, которая содержится в ответе на пакет DBGetConsumeInfosArg.

<?
include("packet_class.php");
$DBGetConsumeInfos = new WritePacket();
$DBGetConsumeInfos -> WriteUInt32(-1); // always
$DBGetConsumeInfos -> WriteCUInt32(1); // count of array
$DBGetConsumeInfos -> WriteUInt32(1024); // roleid
$DBGetConsumeInfos -> Pack(0x180);
 
if (!$DBGetConsumeInfos -> Send("localhost", 29400))
	return -1;
 
$DBGetConsumeInfos_Re = new ReadPacket($DBGetConsumeInfos);
$DBGetConsumeInfos_Re -> ReadPacketInfo();
$DBGetConsumeInfos_Re -> ReadUInt32(); // always
$DBGetConsumeInfos_Re -> ReadUInt32(); // retcode
$DBGetConsumeInfos_Re -> ReadCUInt32(); // count of array
$DBGetConsumeInfos_Re -> ReadUInt32(); // roleid
$DBGetConsumeInfos_Re -> ReadUInt32(); // level
$loginip = $DBGetConsumeInfos_Re -> ReadUInt32();
$ip[0] = $loginip & 0xFF;
$ip[1] = ($loginip >> 8) & 0xFF;
$ip[2] = ($loginip >> 16) & 0xFF;
$ip[3] = ($loginip >> 24) & 0xFF;
echo "{$ip[0]}.{$ip[1]}.{$ip[2]}.{$ip[3]}";
?>

  • 0


Количество пользователей, читающих эту тему: 0

0 пользователей, 0 гостей, 0 анонимных

Rawr.su - Сделано с для игроков.