Bvural41 1
Bvural41
noisiv 1
noisiv
Manwe Work 1
Manwe Work
Reklam vermek için turkmmo@gmail.com

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
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 : 1, Üye: 0, Misafir: 1)

Geri
Üst