Skocz do zawartości
Masz już aplikację Sharegon?

Odkryj wszystkie możliwości. Dowiedz się więcej

Sharegon.pl

Zainstaluj aplikację Sharegon i korzystaj z powiadomień push oraz licznika nowych aktywności bezpośrednio z ekranu głównego.

Aby zainstalować tę aplikację na iOS i iPadOS.
  1. Tap the Share icon in Safari
  2. Przewiń menu i stuknij Dodaj do ekranu początkowego.
  3. Stuknij Dodaj w prawym górnym rogu.
Zainstaluj aplikację Sharegon na Androidzie
  1. Otwórz Sklep Google Play na swoim smarfonie.
  2. Wyszukaj „Sharegon” w pasku wyszukiwania.
  3. Stuknij „Zainstaluj”, aby pobrać aplikację.

Pytanie o db_clientdesc

Featured Replies

Opublikowano

Analizuje sobie kod i może jestem jakiś lekko upo, ale w kodzie input_login.cpp nie widzie nigdzie zdeklarowanego db_clientdesc, chciałbym się dowiedzieć jak to działa. Po ostatnim moim pytaniu wnioskuje ze jest db_clientdesc który czeka na pakiety i GD, ale tu pojawia się moje następne pytanie czy są pakiety DG?
 

HTMLKod został skopiowany
void CInputLogin::Login(LPDESC d, const char * data){    TPacketCGLogin * pinfo = (TPacketCGLogin *) data;     char login[LOGIN_MAX_LEN + 1];    trim_and_lower(pinfo->login, login, sizeof(login));     sys_log(0, "InputLogin::Login : %s", login);     TPacketGCLoginFailure failurePacket;     if (!test_server)    {        failurePacket.header = HEADER_GC_LOGIN_FAILURE;        strlcpy(failurePacket.szStatus, "VERSION", sizeof(failurePacket.szStatus));        d->Packet(&failurePacket, sizeof(TPacketGCLoginFailure));        return;    }     if (g_bNoMoreClient)    {        failurePacket.header = HEADER_GC_LOGIN_FAILURE;        strlcpy(failurePacket.szStatus, "SHUTDOWN", sizeof(failurePacket.szStatus));        d->Packet(&failurePacket, sizeof(TPacketGCLoginFailure));        return;    }     if (g_iUserLimit > 0)    {        int iTotal;        int * paiEmpireUserCount;        int iLocal;         DESC_MANAGER::instance().GetUserCount(iTotal, &paiEmpireUserCount, iLocal);         if (g_iUserLimit <= iTotal)        {            failurePacket.header = HEADER_GC_LOGIN_FAILURE;            strlcpy(failurePacket.szStatus, "FULL", sizeof(failurePacket.szStatus));            d->Packet(&failurePacket, sizeof(TPacketGCLoginFailure));            return;        }    }     TLoginPacket login_packet;     strlcpy(login_packet.login, login, sizeof(login_packet.login));    strlcpy(login_packet.passwd, pinfo->passwd, sizeof(login_packet.passwd));     db_clientdesc->DBPacket(HEADER_GD_LOGIN, d->GetHandle(), &login_packet, sizeof(TLoginPacket));}


 

Edytowane przez theblabil

Rozwiązane przez KoYGeR

Opublikowano
  • Autor

Nieważne znalazłem, w input_db.cpp i tak są pakiety DG, ale dalej nie rozumiem mechaniki samego 'db_clientdesc', gdzie w kodzie jest to zdeklarowane i czy jest to jakoś globalnie dostępne? 

Edytowane przez theblabil

Opublikowano

Bardzo fajne pytanie, również się dołączam. Ktoś obeznany mógłby w wolnej chwili wytlumaczyć główny mechanizm i zależności między nimi lub podesłać jakieś istniejące źródło.

Opublikowano
  • Rozwiązanie

db_clientdesc zadeklarowane jest w pliku /game/src/desc_client.h

 

Jest to zmienna globalna używana do komunikacji między aplikacjami game oraz db

 

Tworzenie połączenia do db jest w pliku /game/src/main.cpp i wygląda następująco:

CKod został skopiowany
db_clientdesc = DESC_MANAGER::instance().CreateConnectionDesc(main_fdw, db_addr, db_port, PHASE_DBCLIENT, true);

 

Aby korzystać z db_clientdesc należy dodać w pliku *.cpp (jeśli brakuje):

CKod został skopiowany
#include "desc_client.h"

 

  

W dniu 6.02.2025 o 23:19, theblabil napisał(a):

Nieważne znalazłem, w input_db.cpp i tak są pakiety DG, ale dalej nie rozumiem mechaniki samego 'db_clientdesc', gdzie w kodzie jest to zdeklarowane i czy jest to jakoś globalnie dostępne? 

W pliku input_db.cpp jest obsługa pakietów wysłanych z db do game

Edytowane przez KoYGeR

Gość
Ten temat został zamknięty. Brak możliwości dodania odpowiedzi.

Konto

Nawigacja

Skonfiguruj powiadomienia push w przeglądarce.

Chrome (Android)
  1. Stuknij ikonę kłódki obok paska adresu.
  2. Wybierz Uprawnienia → Powiadomienia.
  3. Dostosuj swoje preferencje.
Chrome (Desktop)
  1. Kliknij ikonę kłódki na pasku adresu.
  2. Wybierz Ustawienia witryny.
  3. Znajdź Powiadomienia i dostosuj swoje preferencje.