- Katılım
- 21 Ocak 2017
- Konular
- 38
- Mesajlar
- 632
- Çözüm
- 3
- Online süresi
- 3mo 28d
- Reaksiyon Skoru
- 961
- Altın Konu
- 2
- TM Yaşı
- 9 Yıl 4 Ay 25 Gün
- Başarım Puanı
- 193
- MmoLira
- 10,551
- DevLira
- 39
HERAKLES Otomatik Avlı kalıcı sunucu. 19 Haziran'da açılıyor. Atius & Wizard güvencesiyle hemen kayıt ol, ön kayıt ödülleri aktif. 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
Üstüne eklenir
içinde Aratılır:
Değiştirilir
Gerçek zamanlı çalışmasını istediğiniz AFFECT numarasını gercekZamanliAff arrayına eklemeniz yeterlidir.
Örnek affect eklemesi(get_global_time() + verilecekSaniye);
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.
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()
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:
- Katılım
- 16 Eki 2009
- Konular
- 82
- Mesajlar
- 2,278
- Çözüm
- 1
- Online süresi
- 22d 19h
- Reaksiyon Skoru
- 825
- Altın Konu
- 16
- Başarım Puanı
- 239
- Yaş
- 36
- MmoLira
- 4,621
- DevLira
- 12
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, };
içinde Aratılır:C++:int CHARACTER::ProcessAffect()
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:
- Katılım
- 27 Nis 2017
- Konular
- 91
- Mesajlar
- 2,386
- Çözüm
- 47
- Online süresi
- 17d 3h
- Reaksiyon Skoru
- 1,571
- Altın Konu
- 2
- TM Yaşı
- 9 Yıl 1 Ay 19 Gün
- Başarım Puanı
- 248
- MmoLira
- 439
- DevLira
- 13
Paylaşım için teşekkürler.
Şu an konuyu görüntüleyenler (Toplam : 0, Üye: 0, Misafir: 0)
Benzer konular
- Cevaplar
- 6
- Görüntüleme
- 1K
- Cevaplar
- 16
- Görüntüleme
- 3K
- Cevaplar
- 22
- Görüntüleme
- 3K









