Yardım Cube uzaktan Açtırma Hakkında

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

carpiciyim1

Premium Üye
Premium Üye
Üye
Mesaj
157
Çözümler
7
Beğeni
37
Puan
494
Ticaret Puanı
0
Sa saygı değer forum dostları
filesime cube sistemi ekledim bunu uzaktan açtırmak istiyorum lakin videodaki gibi bir sorunum mevcut yardımcı olursnaız çok sevinirim.
f5 hızlı menüye bu şekilde ekledim
game.py:
Genişlet Daralt Kopyala
        if constInfo.WIKI_SYSTEM == 1:
            net.SendChatPacket("/cube open")
            constInfo.WIKI_SYSTEM = 0

 
a:
Genişlet Daralt Kopyala
        if 1== constInfo.RANKINKRK:
            self.OpenRanking()
            constInfo.RANKINKRK = 0

RANKINKRK yazan ve açılması gereken pencereyi kendine göre ayarla

def OnUpdate(self): bu blok altına
 
Githubdan baktım şimdi telefondayım yatağa geçtim. 🤣

Eski cube.h de şöyle bir mesafe ayarı var

#define CUBE_MAX_DISTANCE 1000

Yeni cube de var mı ona göre o koşulu kaldırıp dene bakalım.
 
Githubdan baktım şimdi telefondayım yatağa geçtim. 🤣

Eski cube.h de şöyle bir mesafe ayarı var

#define CUBE_MAX_DISTANCE 1000

Yeni cube de var mı ona göre o koşulu kaldırıp dene bakalım.
bunu yapan bazı serverler var ama nasıl daha çözemedim. bir ara çok aradım denemediğim blok kalmadı mesafe filan değil de direk npc istiyor bu cube sistemi. manuel npc verince de yok ben gerçeğini istiyorum diye ağlıyor 🤣
 
Kod:
Genişlet Daralt Kopyala
        if constInfo.WIKI_SYSTEM == 1:
            self.interface.OpenCubeWindow()
            constInfo.WIKI_SYSTEM = 0
komutu ile cube açtırdım ama eski cubemi açıyor anlamadım bunu krallar

Linkleri görebilmek için giriş yap veya kayıt ol.
 
Şimdi sana mantığını anlatıyorum düz mantıkta yeni cube sistemini kodlarına baktım

şimdi adam burada senin mesafen ile açmak istediğinin npc'nin aranızdaki mesafeyi ölçüyor sabit bir sayı var eğer o sayı dışına çıkarsan kişi sys_log ile syslog.txt'ye yazdırmış mesela ChatPacket kullansaydı altta chatte neden açılmadığını görebilirdin ama syslog.txt 'ye yazdırdığı için tabii doğal olarak neden açılmadığını bilmiyorsun. (Kod okuma bilgin yok diyelim)

cube_renewal.h dosyasında

C++:
Genişlet Daralt Kopyala
#define CUBE_MAX_DISTANCE    1000

cube_renewal.cpp dosyasında

C++:
Genişlet Daralt Kopyala
    long distance = DISTANCE_APPROX(ch->GetX() - npc->GetX(), ch->GetY() - npc->GetY());
    if (distance >= CUBE_MAX_DISTANCE)
    {
        sys_log(1, "CUBE: TOO_FAR: %s distance %d", ch->GetName(), distance);
        return;
    }

Şimdi sen gui üzerinden seçimli olarak yapmak istiyorsan örneğin bir gui var içinde butonların var işte Set Bonus Cube Kostüm Cube Demirci Cube Silah Cube Zırh Cube vs vs.

Sen bu butonlara o npc'ye ait bilgileri yazacaksın örneğin
cube.txt'deki npc koduyla bilgileri cliente gönderiyor. Örneğin 2005 npc varsa o itemleri cliente gönder.

İşte npc kontrolü

C++:
Genişlet Daralt Kopyala
static bool FN_check_valid_npc(uint16_t vnum)

Kısacası anlayacağın şekilde söylim txt'de girilen npc'yi arar.

işte cpp dosyasındaki kod
C++:
Genişlet Daralt Kopyala
    LPCHARACTER    npc;
    npc = ch->GetQuestNPC();
    if (npc == nullptr)
        return;

    uint16_t npcVNUM = npc->GetRaceNum();

    if (FN_check_valid_npc(npcVNUM) == false)
    {
        return;
    }


eğer o fonksiyon false döndürürse işlemi durdurur yani pencere open olmaz.

kişi burada şunu demek istemiş npc adında bir değişken tanımlamış sonra bu değişkene senin yani oyuncunun aktif açılan quest penceresinin npc kodunu vermiş. Örneğin sen demircide quest penceresi açtın ch->SetQuestNpc(demirci_kodu) sonra bunu ch->GetQuestNpc(); ile o npc vnumunu aldın.

Burada bu şekilde çalışıyor Eğer sen gui ile yapmak istiyorsan dediğim gibi clientten tıkladığın veya seçtiğin butona göre npc kodunu göndereceksin diyelim demirci butonuna tıkladın open penceresine demircinin kodunu götüreceksin market cubesini açmak istiyorsun market vnumunu buraya getireceksin. Örneğin

Python:
Genişlet Daralt Kopyala
net.SendCupeOpen(npc_vnum)

Clientten - Server'a input_maine geldin

C++:
Genişlet Daralt Kopyala
Cube::Instance().Cube_Open(ch, p->npc_vnum);

cube_renewal.cpp

C++:
Genişlet Daralt Kopyala
void Cube::Cube_Open(const LPCHARACTER ch, uint16_t npc_vnum)

burayı sil

C++:
Genişlet Daralt Kopyala
    LPCHARACTER    npc;
    npc = ch->GetQuestNPC();
    if (npc == nullptr)
        return;

    uint16_t npcVNUM = npc->GetRaceNum();

şu şekilde değiştir aslında tekrar bir değişken yapmaya gerek yok ama alttaki değişken isimlerini de parametreden gelen isimle değiştirme diye böyle yap

sildiğin yere bunu ekle

C++:
Genişlet Daralt Kopyala
uint16_t npcVNUM = npc_vnum;
 
Son düzenleme:
@texas1343 yardımları ile buraya kadar geldik ama burada tutulduk ardaşlar
npc tıklamadan açtığımda pencere boş oluyor npc tıklayıp açın ca ise normal açılıyor videoda detaylı şekilde mevcut yardımlarınızı bekliyorum

 
Geri
Üst