Yardım Efsun Botu Ekleme

  • Konuyu açan Konuyu açan farukkaya
  • Açılış Tarihi Açılış Tarihi
  • Yanıt Yanıt 17
  • Gösterim Gösterim 225
Konu sahibi bu konuda soru soruyor. Sorusu ile ilgili bilgisi olanların yanıtlamasını bekliyor.

farukkaya

Üye
Üye
Mesaj
77
Beğeni
10
Puan
421
Ticaret Puanı
0
Merhaba Efsun botu eklerken hata ile karşılaştım. Files olarak Bunu kurdum
Hatalar altaki gibidir.






1.webp

2.webp
 
Lenght.h item_lenght.h dosyalrına definelerini ekledin mi? Ayrıca switchbot mu yoksa switchbott mu yazdın bak kodda bir kısımds 2t içeriyor bir ifade 1428. Satıra bak

Ayrıca bak cpp dosyanda şöyle bir hatada var zaten eklediğin kodda ingilizce olarak diyor ki;
Replace your old line with the whole ifdef/else statement
Eski satırınızı ifdef/else ifadesinin tamamıyla değiştirin


C++:
Genişlet Daralt Kopyala
#ifdef ENABLE_SWITCHBOT //Replace your old line with the whole ifdef/else statement
        snprintf(queryStr, sizeof(queryStr), "DELETE FROM item%s WHERE owner_id=%d AND (window < %d or window = %d or window %d)", GetTablePostfix(), pi->player_id, SAFEBOX, DRAGON_SOUL_INVENTORY, SWITCHBOT);
#else
        snprintf(queryStr, sizeof(queryStr), "DELETE FROM item%s WHERE owner_id=%d AND (window < %d or window = %d)", GetTablePostfix(), pi->player_id, SAFEBOX, DRAGON_SOUL_INVENTORY);
#endif

        snprintf(queryStr, sizeof(queryStr), "DELETE FROM item%s WHERE owner_id=%d AND (window < %d or window = %d)", GetTablePostfix(), pi->player_id, SAFEBOX, DRAGON_SOUL_INVENTORY); // <--- BU SATIRIN SİLİNMESİ LAZIM
        delete CDBManager::instance().DirectQuery(queryStr);
Bunu eklersen düzelir:
Genişlet Daralt Kopyala
#ifdef ENABLE_SWITCHBOT //Replace your old line with the whole ifdef/else statement
        snprintf(queryStr, sizeof(queryStr), "DELETE FROM item%s WHERE owner_id=%d AND (window < %d or window = %d or window %d)", GetTablePostfix(), pi->player_id, SAFEBOX, DRAGON_SOUL_INVENTORY, SWITCHBOT);
#else
        snprintf(queryStr, sizeof(queryStr), "DELETE FROM item%s WHERE owner_id=%d AND (window < %d or window = %d)", GetTablePostfix(), pi->player_id, SAFEBOX, DRAGON_SOUL_INVENTORY);
#endif

        delete CDBManager::instance().DirectQuery(queryStr);
 
Ayrıca cpp dosyan hatalarla dolu devam ediyorum düzeltmelere ve defineleri vermeye.


1. Hata: QUERY_PLAYER_LOAD Fonksiyonu (Cache'de Bulunduğunda)
Oyuncu eşyaları cache'den (önbellekten) yüklenirken, snprintf sorgusunun sonunda fazladan bir satır kalmış.
Hatalı Kod (301. satır)

Bu kodu:
Genişlet Daralt Kopyala
            // ... (SELECT sorgusu)
#ifdef ENABLE_SWITCHBOT
                , SWITCHBOT
#endif
            );
                    GetTablePostfix(), pTab->id); // <--- BU SATIR FAZLADAN EKLENMİŞ
            
            CDBManager::instance().ReturnQuery(szQuery, QID_QUEST, peer->GetHandle(), new ClientHandleInfo(dwHandle,0,packet->account_id));

Çözüm:


O fazlalık satırı silmen gerekiyor. Kodun son hali şöyle olmalı:


Düzeltilmiş Kod:


Bununla değiştir:
Genişlet Daralt Kopyala
            // ... (SELECT sorgusu)
#ifdef ENABLE_SWITCHBOT
                , SWITCHBOT
#endif
            );
            
            CDBManager::instance().ReturnQuery(szQuery, QID_QUEST, peer->GetHandle(), new ClientHandleInfo(dwHandle,0,packet->account_id));

Ayrıca leght.h veya item_lenght.h ye define

Define kodlar:
Genişlet Daralt Kopyala
#define MAX_NORM_ATTR_NUM                    0
#define SWITCHBOT_SLOT_COUNT                0
#define SWITCHBOT_ALTERNATIVE_COUNT            0

//0 yazan değerleri kendin değiştireceksin
 
Ayrıca cpp dosyan hatalarla dolu devam ediyorum düzeltmelere ve defineleri vermeye.


1. Hata: QUERY_PLAYER_LOAD Fonksiyonu (Cache'de Bulunduğunda)
Oyuncu eşyaları cache'den (önbellekten) yüklenirken, snprintf sorgusunun sonunda fazladan bir satır kalmış.
Hatalı Kod (301. satır)

Bu kodu:
Genişlet Daralt Kopyala
            // ... (SELECT sorgusu)
#ifdef ENABLE_SWITCHBOT
                , SWITCHBOT
#endif
            );
                    GetTablePostfix(), pTab->id); // <--- BU SATIR FAZLADAN EKLENMİŞ
           
            CDBManager::instance().ReturnQuery(szQuery, QID_QUEST, peer->GetHandle(), new ClientHandleInfo(dwHandle,0,packet->account_id));

Çözüm:


O fazlalık satırı silmen gerekiyor. Kodun son hali şöyle olmalı:


Düzeltilmiş Kod:


Bununla değiştir:
Genişlet Daralt Kopyala
            // ... (SELECT sorgusu)
#ifdef ENABLE_SWITCHBOT
                , SWITCHBOT
#endif
            );
           
            CDBManager::instance().ReturnQuery(szQuery, QID_QUEST, peer->GetHandle(), new ClientHandleInfo(dwHandle,0,packet->account_id));

Ayrıca leght.h veya item_lenght.h ye define

Define kodlar:
Genişlet Daralt Kopyala
#define MAX_NORM_ATTR_NUM                    0
#define SWITCHBOT_SLOT_COUNT                0
#define SWITCHBOT_ALTERNATIVE_COUNT            0

//0 yazan değerleri kendin değiştireceksin
Defineleri yazmadım neye göre değer vermemiz gerekiyor ?

Diğerlerini uyguladım ama yine aynı hatalar :(

 
Lenght.h

8. Satıra

Bunu ekle:
Genişlet Daralt Kopyala
enum EMisc
{
    MAX_NORM_ATTR_NUM        = 5, // <--- BU SATIRI EKLE
    MAX_HOST_LENGTH            = 15,
    IP_ADDRESS_LENGTH        = 15,
//... (dosyanın geri kalanı aynı)
 
.cpp dosyasını düzenlediğinden emin ol

Table.h dosyanda da hata var

Hata:
Genişlet Daralt Kopyala
struct TSwitchbottAttributeTable // <--- HATA: Çift 't' harfi var
{
    BYTE attribute_set;
    int apply_num;
    long max_value;
};
 
Sana sunabileceğiö son çözüm tables.h yi aç
İlk üç satırdaki kodları şu şekilde düzenle save yaptığından emin ol

#include "service.h" // <-- BU SATIRI EN BAŞA AL
#include "length.h"
#include "item_length.h"
 
Merhaba Arkadaşlar
Switchbot tanımı yok diyor ama nerede tanımlı olması gerekmekte ?




bilgisizlikten bunları bile tanımladım :D

Kod:
Genişlet Daralt Kopyala
#include "../../common/service.h"
#include "../../common/length.h"
#include "../../common/tables.h"

3.webp
 
Geri
Üst