[DEV]AB 1
[DEV]AB
Sevdamsın 1
Sevdamsın
TuZaKK 1
TuZaKK
kaptanmikro1 1
kaptanmikro1
farkmt2official 2
farkmt2official
kralhakan2009 1
kralhakan2009
Vahsi Uzman 1
Vahsi Uzman
Bvural41 1
Bvural41
Hikaye Ekle

Gerçek Zamanlı(Real-Time) Affect

  • Konuyu başlatan Konuyu başlatan canTolip
  • Başlangıç tarihi Başlangıç tarihi
  • Cevaplar Cevaplar 17
  • Görüntüleme Görüntüleme 5K

Türkiye'de ilk Mobil & PC Aynı Anda Metin2 Oyna. Triarchonline kalıcı ve uzun ömürlü yapısı ile 24 Temmuz'da açılıyor. | 1-99 Mobil Metin2 Triarch HEMEN TIKLA!

Oyuncularınıza gerçek zamanlı affectler verebilmenize yarar. Örneğin bir oyuncunuza 7 günlük tag verdiniz ama oyuncu oyunda yokken de süresinin eksilmesini istiyorsunuz. İşte bu size göre;

Not: Gcc sürümüne bilmem neye ihtiyaç yoktur, herkesin kullanabileceği şekilde düzenlenmiştir.
Not2: İfdef'i kafanıza göre ayarlamayı veya kaldırmayı unutmayın.

game/char_affect.cpp
Aratılır
C++:
int CHARACTER::ProcessAffect()

Üstüne eklenir

Kod:
const DWORD realTimeAffList[] = {
    AFFECT_TAG_YOUTUBE,
    AFFECT_TAG_TWITCH,
    AFFECT_TAG_FACEBOOK,
};


C++:
int CHARACTER::ProcessAffect()
içinde Aratılır:

C++:
if (--pkAff->lDuration <= 0) { bEnd = true; }

Değiştirilir


C++:
        const long timeNow = (long)get_global_time();
        bool isRealTime = false;
        for (uint8_t i = 0; i < _countof(realTimeAffList); i++) {
            if (realTimeAffList[i] == pkAff->dwType) {
                //if (IsGM()) { ChatPacket(1, "<GM|realTimeAffListECT> affIdx:%d var.farkSn:%d", pkAff->dwType, (pkAff->lDuration - suanTime)); }
                if (pkAff->lDuration <= timeNow)
                    bEnd = true;
                isRealTime = true;
                break;
            }
        }
        if (!isRealTime) {
            if (--pkAff->lDuration <= 0) { bEnd = true; }
        }


Gerçek zamanlı çalışmasını istediğiniz AFFECT numarasını gercekZamanliAff arrayına eklemeniz yeterlidir.
Örnek affect eklemesi(get_global_time() + verilecekSaniye);

C++:
AddAffect(AFFECT_BLOCK_CHAT, POINT_NONE, 0, AFF_CHATBAN, get_global_time() + 86400, 0, false); }

Gcc11 ve daha üstü sürümlerde bu eklentiyi kullananlar, gerçek süreli affect sona erdiğinde affect remove kod bloğu yüzünden core alacaktır. 22.06.2023 16:03 tarihiyle kodu düzgün hali ile değiştirdim. Kullanıp problem yaşamış olan var ise kusura bakmasın hiçbir geri dönüş almamıştım. Eğer bu düzenlemeyi kullanan var ise konudaki hali ile değiştirsin lütfen.
 
Son düzenleme:
Oyuncularınıza gerçek zamanlı affectler verebilmenize yarar. Örneğin bir oyuncunuza 7 günlük tag verdiniz ama oyuncu oyunda yokken de süresinin eksilmesini istiyorsunuz. İşte bu size göre;

Not: Gcc sürümüne bilmem neye ihtiyaç yoktur, herkesin kullanabileceği şekilde düzenlenmiştir.
Not2: İfdef'i kafanıza göre ayarlamayı veya kaldırmayı unutmayın.

game/char_affect.cpp
Aratılır
C++:
int CHARACTER::ProcessAffect()

Üstüne eklenir

Kod:
const DWORD realTimeAffList[] = {
    AFFECT_TAG_YOUTUBE,
    AFFECT_TAG_TWITCH,
    AFFECT_TAG_FACEBOOK,
};


C++:
int CHARACTER::ProcessAffect()
içinde Aratılır:

C++:
if (--pkAff->lDuration <= 0) { bEnd = true; }

Değiştirilir


C++:
        const long timeNow = (long)get_global_time();
        bool isRealTime = false;
        for (uint8_t i = 0; i < _countof(realTimeAffList); i++) {
            if (realTimeAffList[i] == pkAff->dwType) {
                //if (IsGM()) { ChatPacket(1, "<GM|realTimeAffListECT> affIdx:%d var.farkSn:%d", pkAff->dwType, (pkAff->lDuration - suanTime)); }
                if (pkAff->lDuration <= timeNow)
                    bEnd = true;
                isRealTime = true;
                break;
            }
        }
        if (!isRealTime) {
            if (--pkAff->lDuration <= 0) { bEnd = true; }
        }


Gerçek zamanlı çalışmasını istediğiniz AFFECT numarasını gercekZamanliAff arrayına eklemeniz yeterlidir.
Örnek affect eklemesi(get_global_time() + verilecekSaniye);

C++:
AddAffect(AFFECT_BLOCK_CHAT, POINT_NONE, 0, AFF_CHATBAN, get_global_time() + 86400, 0, false); }

Gcc11 ve daha üstü sürümlerde bu eklentiyi kullananlar, gerçek süreli affect sona erdiğinde affect remove kod bloğu yüzünden core alacaktır. 22.06.2023 16:03 tarihiyle kodu düzgün hali ile değiştirdim. Kullanıp problem yaşamış olan var ise kusura bakmasın hiçbir geri dönüş almamıştım. Eğer bu düzenlemeyi kullanan var ise konudaki hali ile değiştirsin lütfen.
Paylaşım için teşekkürler.
 
Son düzenleme:

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

Geri
Üst