подмена idauthkey'a со стороны сервера

Iskon

Участник
Автор темы
112
18
Код:
const ID_AUTH_KEY = 12;
OInternalPacket:ID_AUTH_KEY(playerid, BitStream:bs)
{
    new auth_key[512];

    BS_IgnoreBits(bs, 8); // packetid

    BS_ReadValue(bs, PR_STRING8, auth_key, sizeof(auth_key));
    printf("incoming auth_key %s", auth_key);

    new BitStream:newBs = BS_New();

    BS_WriteValue(newBs,
     PR_UINT8, 12, PR_STRING8, "2DC8A9B16332F78", 15);

    PR_SendPacket(newBs, playerid, PR_SYSTEM_PRIORITY, PR_RELIABLE_SEQUENCED);
    BS_Delete(newBs);
    return 0;
}
По идее, этот код должен не отправить оригинальный idauthkey клиенту, а подменять значение idauthkey'a на "2DC8A9B16332F78", но пакет не отправляется клиенту. Как будто функция PR_SendPacket не срабатывает, и клиент ждет ответа от сервера. Как заставить отправить пакет?
 

Iskon

Участник
Автор темы
112
18
Ауткей должен отправляться с надежностью PR_RELIABLE
Привет. Сделал так, как ты сказал. Не сработало, клиенту все равно не приходит


Код:
const ID_AUTH_KEY = 12;
OInternalPacket:ID_AUTH_KEY(playerid, BitStream:bs)
{
    new auth_key[512];

    BS_IgnoreBits(bs, 8); // packetid

    BS_ReadValue(bs, PR_STRING8, auth_key, sizeof(auth_key));
    printf("incoming auth_key %s", auth_key);

    new BitStream:newBs = BS_New();

    BS_WriteValue(newBs,
     PR_UINT8, 12, PR_STRING8, "2DC8A9B16332F78", 15);

    PR_SendPacket(newBs, playerid, PR_SYSTEM_PRIORITY, PR_RELIABLE);
    BS_Delete(newBs);
    return 0;
}

Нашел инфу на другом форуме.

Вот решение, если кому нужно.


Решение:
// В конфиге plugins/pawnraknet.cfg строка InterceptOutgoingInternalPacket должна быть true

OInternalPacket:ID_AUTH_KEY(playerid, BitStream:bs)
{
        new auth[] = "2DC8A9B16332F78",
                auth_len = strlen(auth);

        BS_SetWriteOffset(bs, 8);
        
        BS_WriteValue(bs, PR_UINT8, auth_len);
        BS_WriteValue(bs, PR_STRING, auth, auth_len);

        return 1;
}
 
Последнее редактирование:
  • Ха-ха
Реакции: atomlin