yarka0000 1
yarka0000
kralhakan2009 1
kralhakan2009
Vahsi Uzman 1
Vahsi Uzman
farkmt2official 1
farkmt2official
Hikaye Ekle

[C++] Bir Hesapta 8 Karakter Açma

  • Konuyu başlatan Konuyu başlatan MAREK38
  • Başlangıç tarihi Başlangıç tarihi
  • Cevaplar Cevaplar 82
  • Görüntüleme Görüntüleme 20K
Herkese Selamun Aleyküm arkadaşlar iyi forumlar uzatmadan direkt geçiyorum

Common/length.h Açılır

Aratılır

Kod:
    PLAYER_PER_ACCOUNT        = 4,

Değiştirilir

Kod:
    PLAYER_PER_ACCOUNT        = 8,

Game/src/locale_service.cpp Açılır

Aratılır

Kod:
static void __CheckPlayerSlot(const std::string& service_name)
{
    if (PLAYER_PER_ACCOUNT != 4)
    {
        printf("<ERROR> PLAYER_PER_ACCOUNT = %d\n", PLAYER_PER_ACCOUNT);
        exit(0);
    }
}

Değiştirilir

Kod:
static void __CheckPlayerSlot(const std::string& service_name)
{
    if (PLAYER_PER_ACCOUNT != 8)
    {
        printf("<ERROR> PLAYER_PER_ACCOUNT = %d\n", PLAYER_PER_ACCOUNT);
        exit(0);
    }
}

Game/src/char_change_empire.cpp Açılır

Aratılır

Kod:
        snprintf(szQuery, sizeof(szQuery), 
                "SELECT id, pid1, pid2, pid3, pid4 FROM player_index%s WHERE pid1=%u OR pid2=%u OR pid3=%u OR pid4=%u AND empire=%u", 
                get_table_postfix(), GetPlayerID(), GetPlayerID(), GetPlayerID(), GetPlayerID(), GetEmpire());

        std::auto_ptr<SQLMsg> msg(DBManager::instance().DirectQuery(szQuery));

Ve değiştirilir



Aratılır

Kod:
        MYSQL_ROW row = mysql_fetch_row(msg->Get()->pSQLResult);

        str_to_number(dwAID, row[0]);
        str_to_number(dwPID[0], row[1]);
        str_to_number(dwPID[1], row[2]);
        str_to_number(dwPID[2], row[3]);
        str_to_number(dwPID[3], row[4]);

Değiştirilir



Tekrar aratılır

Kod:
        snprintf(szQuery, sizeof(szQuery), "UPDATE player_index%s SET empire=%u WHERE pid1=%u OR pid2=%u OR pid3=%u OR pid4=%u AND empire=%u", 
                get_table_postfix(), empire, GetPlayerID(), GetPlayerID(), GetPlayerID(), GetPlayerID(), GetEmpire());

        std::auto_ptr<SQLMsg> msg(DBManager::instance().DirectQuery(szQuery));

Değiştirilir



Aratılır

Kod:
DWORD CHARACTER::GetAID() const
{
    char szQuery[1024+1];
    DWORD dwAID = 0;

    snprintf(szQuery, sizeof(szQuery), "SELECT id FROM player_index%s WHERE pid1=%u OR pid2=%u OR pid3=%u OR pid4=%u AND empire=%u", 
            get_table_postfix(), GetPlayerID(), GetPlayerID(), GetPlayerID(), GetPlayerID(), GetEmpire());

    SQLMsg* pMsg = DBManager::instance().DirectQuery(szQuery);

Değiştirilir



Db/src/ClientManager.cpp Açılır

Aratılır

Kod:
void CClientManager::QUERY_EMPIRE_SELECT(CPeer * pkPeer, DWORD dwHandle, TEmpireSelectPacket * p)
{
    char szQuery[QUERY_MAX_LEN];

    snprintf(szQuery, sizeof(szQuery), "UPDATE player_index%s SET empire=%u WHERE id=%u", GetTablePostfix(), p->bEmpire, p->dwAccountID);
    delete CDBManager::instance().DirectQuery(szQuery);

    sys_log(0, "EmpireSelect: %s", szQuery);
    {
        snprintf(szQuery, sizeof(szQuery),
                "SELECT pid1, pid2, pid3, pid4 FROM player_index%s WHERE id=%u", GetTablePostfix(), p->dwAccountID);

        std::auto_ptr<SQLMsg> pmsg(CDBManager::instance().DirectQuery(szQuery));

        SQLResult * pRes = pmsg->Get();

Değiştirilir



Aratılır

Kod:
void CClientManager::ChangeMonarchLord(CPeer * peer, DWORD dwHandle, TPacketChangeMonarchLord* info)
{
    char szQuery[1024];
    snprintf(szQuery, sizeof(szQuery), 
            "SELECT a.name, NOW() FROM player%s AS a, player_index%s AS b WHERE (a.account_id=b.id AND a.id=%u AND b.empire=%u) AND "
            "(b.pid1=%u OR b.pid2=%u OR b.pid3=%u OR b.pid4=%u)", 
            GetTablePostfix(), GetTablePostfix(), info->dwPID, info->bEmpire,
               info->dwPID, info->dwPID, info->dwPID, info->dwPID);

    SQLMsg * pMsg = CDBManager::instance().DirectQuery(szQuery, SQL_PLAYER);

Değiştirilir



Db/src/ClientManagerLogin.cpp Açılır

Aratılır

Kod:
void CClientManager::QUERY_LOGIN_BY_KEY(CPeer * pkPeer, DWORD dwHandle, TPacketGDLoginByKey * p)

Kod satırının en altında tekrar aratılır

Kod:
    sys_log(0, "LOGIN_BY_KEY success %s %lu %s", r.login, p->dwLoginKey, info->ip);
    char szQuery[QUERY_MAX_LEN];
    snprintf(szQuery, sizeof(szQuery), "SELECT pid1, pid2, pid3, pid4, empire FROM player_index%s WHERE id=%u", GetTablePostfix(), r.id);
    CDBManager::instance().ReturnQuery(szQuery, QID_LOGIN_BY_KEY, pkPeer->GetHandle(), info);

Değiştirilir



Aratılır

Kod:
void CClientManager::RESULT_LOGIN_BY_KEY(CPeer * peer, SQLMsg * msg)

Kod satırında aratılır

Kod:
    if (msg->Get()->uiNumRows == 0)
    {
        DWORD account_id = info->pAccountTable->id;
        char szQuery[QUERY_MAX_LEN];
        snprintf(szQuery, sizeof(szQuery), "SELECT pid1, pid2, pid3, pid4, empire FROM player_index%s WHERE id=%u", GetTablePostfix(), account_id);
        std::auto_ptr<SQLMsg> pMsg(CDBManager::instance().DirectQuery(szQuery, SQL_PLAYER));

Değiştirilir



Aratılır

Kod:
void CClientManager::RESULT_PLAYER_INDEX_CREATE(CPeer * pkPeer, SQLMsg * msg)

Kod satırında aratılır

Kod:
    char szQuery[QUERY_MAX_LEN];
    snprintf(szQuery, sizeof(szQuery), "SELECT pid1, pid2, pid3, pid4, empire FROM player_index%s WHERE id=%u", GetTablePostfix(), info->pAccountTable->id);
    CDBManager::instance().ReturnQuery(szQuery, QID_LOGIN_BY_KEY, pkPeer->GetHandle(), info);

Değiştirilir




Şimdi Client'e geçelim...

Client/UserInterface/Packet.h Açılır

Aratılır

Kod:
    PLAYER_PER_ACCOUNT3 = 3,
    PLAYER_PER_ACCOUNT4 = 4,

Değiştirilir

Kod:
    PLAYER_PER_ACCOUNT3 = 7,
    PLAYER_PER_ACCOUNT4 = 8,

Pack/root/introselect.py Açılır

Aratılır

Kod:
    SLOT_COUNT = 4

Değiştirilir

Kod:
    SLOT_COUNT = 8

Aratılır

Kod:
    SLOT_ROTATION = [135.0, 225.0, 315.0, 45.0]

Değiştirilir

Kod:
    SLOT_ROTATION = [135.0, 180.0, 225.0, 270.0, 315.0, 360.0, 45.0, 90.0]

Aratılır

Kod:
        chr.DeleteInstance(0)
        chr.DeleteInstance(1)
        chr.DeleteInstance(2)
        chr.DeleteInstance(3)

Değiştirilir



Aratılır

Kod:
indexArray = (3, 2, 1, 0)

Değiştirilir

Kod:
indexArray = (8, 7, 6, 5, 4, 3, 2, 1, 0)

Aratılır

Kod:
    def OnKeyDown(self, key):

        if 1 == key:
            self.ExitSelect()
        if 2 == key:
            self.SelectSlot(0)
        if 3 == key:
            self.SelectSlot(1)
        if 4 == key:
            self.SelectSlot(2)
        if 5 == key:
            self.SelectSlot(3)

Değiştirilir



Mysql

Player/Player_index

Kod:
  `id` int(11) NOT NULL DEFAULT '0',
  `pid1` int(11) NOT NULL DEFAULT '0',
  `pid2` int(11) NOT NULL DEFAULT '0',
  `pid3` int(11) NOT NULL DEFAULT '0',
  `pid4` int(11) NOT NULL DEFAULT '0',
  `empire` tinyint(4) NOT NULL DEFAULT '0',

Değiştirilir

Kod:
  `id` int(11) NOT NULL DEFAULT '0',
  `pid1` int(11) NOT NULL DEFAULT '0',
  `pid2` int(11) NOT NULL DEFAULT '0',
  `pid3` int(11) NOT NULL DEFAULT '0',
  `pid4` int(11) NOT NULL DEFAULT '0',
  `pid5` int(11) NOT NULL DEFAULT '0',
  `pid6` int(11) NOT NULL DEFAULT '0',
  `pid7` int(11) NOT NULL DEFAULT '0',
  `pid8` int(11) NOT NULL DEFAULT '0',
  `empire` tinyint(4) NOT NULL DEFAULT '0',





Teşekkürler
 

Şu an konuyu görüntüleyenler (Toplam : 0, Üye: 0, Misafir: 0)

Geri
Üst