Fethi Polat 1
Fethi Polat
kralhakan2009 1
kralhakan2009
Vahsi Uzman 1
Vahsi Uzman
Best Studio 1
Best Studio
Agora Metin2 1
Agora Metin2
raderde 1
raderde
Cannn6161 1
Cannn6161
noisiv 1
noisiv
Manwe Work 1
Manwe Work
Mt2Hizmet 1
Mt2Hizmet
melankolıa18 1
melankolıa18
Hikaye Ekle
Reklam vermek için turkmmo@gmail.com

[C++/Python] Okçular Dibimde Sistemi'ni Affect İle Yönetme

  • Konuyu başlatan Konuyu başlatan olkan41
  • Başlangıç tarihi Başlangıç tarihi
  • Cevaplar Cevaplar 15
  • Görüntüleme Görüntüleme 2K

olkan41

Müzik Prodüktörü ve Ses Tasarımcısı
Telefon Numarası Onaylanmış Üye TC Kimlik Numarası Doğrulanmış Üye
TM Üye
Katılım
4 Ağu 2010
Konular
356
Mesajlar
4,122
Çözüm
74
Online süresi
3mo 14d
Reaksiyon Skoru
2,235
Altın Konu
82
Başarım Puanı
292
Yaş
32
MmoLira
3,067
DevLira
138
Ticaret - 0%
0   0   0

ROHAN2 WORLD 1-120 TR TİPİ OFFICIAL YOHARA, BALATHOR VE AMON! 80. GÜNÜNDE! +10.000 ONLİNE! HİLE VE BOT %100 ENGELLİ HEMEN TIKLA!

Öncelikle Okçular Dibimde Sistemini Paylaşan Değerli Üyemiz @A99 Arkadaşımıza Teşekkür Ediyorum.

Onun Paylaşmız Olduğu İşleyiş'te Eğer 72000 Kodlu İtem'i Kullanırsanız AttackRanger(); Fonksiyonun Çalışmasını Sağlarsınız.
Öncelikle Cesaret Pelerini Kullanıp Ardından Canavarlar Yanınıza Geldikten Sonra Bu Sefer 7200 Kodlu İtem'e Tıklayıp Size Uzaktan Vuran Canavarları Dibinize Çağırmış Olacaksınız.


Bu Konuda Şimdi Affect Üzerinden Kullanılmasını Yapacağız.

GameSource/Affect.h Açalım ve Aratın:

AFFECT_QUEST_START_IDX = 1000

Üstüne Ekleyin:


Kod:
#if defined(ENABLE_ATTRACT_RANGER)
    AFFECT_CALL_ARCHER                        = 757,
#endif

Şimdi Genel İşleyişi Yapalım

GameSource/Char_İtem.cpp Açın ve Aratın:


Kod:
            case UNIQUE_ITEM_CAPE_OF_COURAGE:
            case UNIQUE_ITEM_CAPE_OF_COURAGE_ORIGINAL:
            case REWARD_BOX_UNIQUE_ITEM_CAPE_OF_COURAGE:

Üstüne Ekleyin:

Kod:
#if defined(ENABLE_ATTRACT_RANGER)
            case 72000:
            {
                if (FindAffect(AFFECT_CALL_ARCHER))
                {
                    ChatPacket(CHAT_TYPE_INFO, LC_TEXT("BU_ETKI_DEVAM_EDIYOR"));
                    return false;
                }

                AddAffect(AFFECT_CALL_ARCHER, POINT_NONE, 0, AFF_NONE, item->GetValue(0), 0, true);
                ChatPacket(CHAT_TYPE_INFO, LC_TEXT("Archers can now come to you."));

                item->SetCount(item->GetCount() - 1);
            }
            break;
#endif

Burada Ne Yapmış Bulunduk, 72000 Kodlu İtem'ı Kullandığımızda Eğer Karakterimiz de Bu Affect Var İse "Zaten Bu Efekt Sende Var" Gibi Oyuna Bir Mesaj Göndermesini Sağladık ve İşlemi Anlayacağınız Şekilde Söylemem Gerekirse Sonlandırdık ki; Altındaki Kodların Çalışmasını Engelledik.

Tamam Peki Eğer Karakterde Bu Efekt Yok İse O Zaman AddAffect İle Affect.h'deki Sabit Sayımızı Veriyoruz ve Bu Efektin Karakterde Kalacağı Süreyi İtemin(Protodaki) Value0 Kısmından Almasını İstiyoruz.

Sonra İtemi, Kişinin Var Olan İtem Sayısından 1 Adet Silmesini İstiyoruz.

Buraya Kadar Herşey İyi ve Bu Sayede Efekti Vermiş Olduk.
Şimdi Oyuncu Cesaret Pelerini'ni Kullandığında Eğer Bu Efekt Var İse Ona Uzaktan Vuran Canavarlarıda Dibine Çağırmasını Sağlayalım.

GameSource/Char_İtem.cpp Açın ve Aratın:


Kod:
            case UNIQUE_ITEM_CAPE_OF_COURAGE:
            case UNIQUE_ITEM_CAPE_OF_COURAGE_ORIGINAL:
            case REWARD_BOX_UNIQUE_ITEM_CAPE_OF_COURAGE:
            {
                AggregateMonster();

Ve Şu Şekilde Değiştirin (Yada Kendinize Göre Düzenleyin)


Kod:
            case UNIQUE_ITEM_CAPE_OF_COURAGE:
            case UNIQUE_ITEM_CAPE_OF_COURAGE_ORIGINAL:
            case REWARD_BOX_UNIQUE_ITEM_CAPE_OF_COURAGE:
            {
                AggregateMonster();

#if defined(ENABLE_ATTRACT_RANGER)
                if (FindAffect(AFFECT_CALL_ARCHER))
                    AttractRanger();
#endif

#ifdef ENABLE_GETCOUNT
                item->SetCount(item->GetCount() - 1);
#endif
            }
            break;

Sınırsız Cesaret Pelerini Kullanıyorsanız ENABLE_GETCOUNT ve Altındaki endif'e Kadar Silin veya Bu Tanım Sizin CommonDefine'nizde veya Service.h'nizde Varsa ENABLE_GETCOUNT İsmini Değiştirin.
Eğer Cesaret Pelerinin Her Kullandığınızda -1 Adet Silinmesini İstiyorsanız ENABLE_GETCOUNT ve Altındaki endi'i Silin. veya Bu Tanımı CommonDefines'e veya Service.h'ye Ekleyin.

CommonDefines.h veya Service.h Ekleyin:

#define ENABLE_ATTRACT_RANGER

Kusura Bakmayın Her Kesim İçin Açıklayıcı Şekilde Yazıyorum.

Şimdi GameSource Derleyebilirsiniz.

* CLIENT SOURCE *

InstanceBase.h#defineAratalım:

Kod:
NEW_AFFECT_QUEST_START_IDX                 = 1000,

Üstüne Ekleyelim:


Kod:
#if defined(ENABLE_ATTRACT_RANGER)
            AFFECT_CALL_ARCHER                         = 757,
#endif

PythonCharacterModule.cpp Açalım ve En Alta Ekleyelim:

Kod:
#if defined(ENABLE_ATTRACT_RANGER)
    PyModule_AddIntConstant(poModule, "AFFECT_CALL_ARCHER",                    CInstanceBase::AFFECT_CALL_ARCHER);
#endif

PythonApplicationModule.cpp Açalım ve En Alta Ekleyelim:

Kod:
#ifdef ENABLE_ATTRACT_RANGER
    PyModule_AddIntConstant(poModule, "ENABLE_ATTRACT_RANGER", true);
#else
    PyModule_AddIntConstant(poModule, "ENABLE_ATTRACT_RANGER", false);
#endif

Locale_inc.h Açın ve Ekleyin:

#define ENABLE_ATTRACT_RANGER

ClientSource Derleyebilirsiniz.

Root/uiAffectShower.py Açın ve Aratın:


Kod:
    if app.ENABLE_DRAGON_SOUL_SYSTEM:
        AFFECT_DATA_DICT[chr.NEW_AFFECT_DRAGON_SOUL_DECK1]         = (localeInfo.TOOLTIP_DRAGON_SOUL_DECK1, "d:/ymir work/ui/dragonsoul/buff_ds_sky1.tga")
        AFFECT_DATA_DICT[chr.NEW_AFFECT_DRAGON_SOUL_DECK2]         = (localeInfo.TOOLTIP_DRAGON_SOUL_DECK2, "d:/ymir work/ui/dragonsoul/buff_ds_land1.tga")

Altına Ekleyelim:[/COLOR#define]

Kod:
    if app.ENABLE_ATTRACT_RANGER:
        AFFECT_DATA_DICT[chr.AFFECT_CALL_ARCHER]                 = (localeInfo.TOOLTIP_AFFECT_CALL_ARCHER, "d:/ymir work/ui/skill/common/affect/call_archer.sub")

Lütfen Buradaki "d:/ymir work/ui/skill/common/affect/call_archer.sub" Sub İsmini Değiştirin

Locale_Game.txt Ekleyin:

Kod:
TOOLTIP_AFFECT_CALL_ARCHER    Bağları Çöz    SNA

Locale_Game -> Bağları Çöz İsmini Dilediğiniz Gibi Değiştirebilirsiniz. Sol Yukarıya Gelen Efektin Üstüne Geldiğinizde Çıkacak Yazı.


Örnek: Bağları Çöz (Kalan Süre: 15 gün)

locale ve root Paketleyip Oyuna Girebilirsiniz.

İtem_Names ve Proto'ya İtemi Eklemeyi Unutmayın. Efektin Karakterde Ne Kadar Sürede Kalacağını İtem'in Value0 Kısmına Eklemeyi Unutmayın.

Saniye Cinsinden Örnek 100 Saniye Kalmasını İstiyorsanız Value0 -> 100


KANIT:

1.png


VİDEO:

1: Efekt Karakter'de Varken



giphy-downsized-large.gif


2. Efekt Karakterde Yokken

giphy.gif
 
Son düzenleme:

En Çok Reaksiyon Alan Mesajlar

Paylaşım için teşekkürler ❤️
 
Paylaşım için teşekkürler
 
Öncelikle Okçular Dibimde Sistemini Paylaşan Değerli Üyemiz @A99 Arkadaşımıza Teşekkür Ediyorum.

Onun Paylaşmız Olduğu İşleyiş'te Eğer 72000 Kodlu İtem'i Kullanırsanız AttackRanger(); Fonksiyonun Çalışmasını Sağlarsınız.
Öncelikle Cesaret Pelerini Kullanıp Ardından Canavarlar Yanınıza Geldikten Sonra Bu Sefer 7200 Kodlu İtem'e Tıklayıp Size Uzaktan Vuran Canavarları Dibinize Çağırmış Olacaksınız.


Bu Konuda Şimdi Affect Üzerinden Kullanılmasını Yapacağız.

GameSource/Affect.h Açalım ve Aratın:

AFFECT_QUEST_START_IDX = 1000

Üstüne Ekleyin:


Kod:
#if defined(ENABLE_ATTRACT_RANGER)
    AFFECT_CALL_ARCHER                        = 757,
#endif

Şimdi Genel İşleyişi Yapalım

GameSource/Char_İtem.cpp Açın ve Aratın:


Kod:
            case UNIQUE_ITEM_CAPE_OF_COURAGE:
            case UNIQUE_ITEM_CAPE_OF_COURAGE_ORIGINAL:
            case REWARD_BOX_UNIQUE_ITEM_CAPE_OF_COURAGE:

Üstüne Ekleyin:

Kod:
#if defined(ENABLE_ATTRACT_RANGER)
            case 72000:
            {
                if (FindAffect(AFFECT_CALL_ARCHER))
                {
                    ChatPacket(CHAT_TYPE_INFO, LC_TEXT("BU_ETKI_DEVAM_EDIYOR"));
                    return false;
                }

                AddAffect(AFFECT_CALL_ARCHER, POINT_NONE, 0, AFF_NONE, item->GetValue(0), 0, true);
                ChatPacket(CHAT_TYPE_INFO, LC_TEXT("Archers can now come to you."));

                item->SetCount(item->GetCount() - 1);
            }
            break;
#endif

Burada Ne Yapmış Bulunduk, 72000 Kodlu İtem'ı Kullandığımızda Eğer Karakterimiz de Bu Affect Var İse "Zaten Bu Efekt Sende Var" Gibi Oyuna Bir Mesaj Göndermesini Sağladık ve İşlemi Anlayacağınız Şekilde Söylemem Gerekirse Sonlandırdık ki; Altındaki Kodların Çalışmasını Engelledik.

Tamam Peki Eğer Karakterde Bu Efekt Yok İse O Zaman AddAffect İle Affect.h'deki Sabit Sayımızı Veriyoruz ve Bu Efektin Karakterde Kalacağı Süreyi İtemin(Protodaki) Value0 Kısmından Almasını İstiyoruz.

Sonra İtemi, Kişinin Var Olan İtem Sayısından 1 Adet Silmesini İstiyoruz.

Buraya Kadar Herşey İyi ve Bu Sayede Efekti Vermiş Olduk.
Şimdi Oyuncu Cesaret Pelerini'ni Kullandığında Eğer Bu Efekt Var İse Ona Uzaktan Vuran Canavarlarıda Dibine Çağırmasını Sağlayalım.

GameSource/Char_İtem.cpp Açın ve Aratın:


Kod:
            case UNIQUE_ITEM_CAPE_OF_COURAGE:
            case UNIQUE_ITEM_CAPE_OF_COURAGE_ORIGINAL:
            case REWARD_BOX_UNIQUE_ITEM_CAPE_OF_COURAGE:
            {
                AggregateMonster();

Ve Şu Şekilde Değiştirin (Yada Kendinize Göre Düzenleyin)


Kod:
            case UNIQUE_ITEM_CAPE_OF_COURAGE:
            case UNIQUE_ITEM_CAPE_OF_COURAGE_ORIGINAL:
            case REWARD_BOX_UNIQUE_ITEM_CAPE_OF_COURAGE:
            {
                AggregateMonster();

#if defined(ENABLE_ATTRACT_RANGER)
                if (FindAffect(AFFECT_CALL_ARCHER))
                    AttractRanger();
#endif

#ifdef ENABLE_GETCOUNT
                item->SetCount(item->GetCount() - 1);
#endif
            }
            break;

Sınırsız Cesaret Pelerini Kullanıyorsanız ENABLE_GETCOUNT ve Altındaki endif'e Kadar Silin veya Bu Tanım Sizin CommonDefine'nizde veya Service.h'nizde Varsa ENABLE_GETCOUNT İsmini Değiştirin.
Eğer Cesaret Pelerinin Her Kullandığınızda -1 Adet Silinmesini İstiyorsanız ENABLE_GETCOUNT ve Altındaki endi'i Silin. veya Bu Tanımı CommonDefines'e veya Service.h'ye Ekleyin.

CommonDefines.h veya Service.h Ekleyin:

#define ENABLE_ATTRACT_RANGER

Kusura Bakmayın Her Kesim İçin Açıklayıcı Şekilde Yazıyorum.

Şimdi GameSource Derleyebilirsiniz.

* CLIENT SOURCE *

InstanceBase.h#define ve Aratalım:

Kod:
NEW_AFFECT_QUEST_START_IDX                 = 1000,

Üstüne Ekleyelim:


Kod:
#if defined(ENABLE_ATTRACT_RANGER)
            AFFECT_CALL_ARCHER                         = 757,
#endif

PythonCharacterModule.cpp Açalım ve En Alta Ekleyelim:

Kod:
#if defined(ENABLE_ATTRACT_RANGER)
    PyModule_AddIntConstant(poModule, "AFFECT_CALL_ARCHER",                    CInstanceBase::AFFECT_CALL_ARCHER);
#endif

PythonApplicationModule.cpp Açalım ve En Alta Ekleyelim:

Kod:
#ifdef ENABLE_ATTRACT_RANGER
    PyModule_AddIntConstant(poModule, "ENABLE_ATTRACT_RANGER", true);
#else
    PyModule_AddIntConstant(poModule, "ENABLE_ATTRACT_RANGER", false);
#endif

Locale_inc.h Açın ve Ekleyin:

#define ENABLE_ATTRACT_RANGER

ClientSource Derleyebilirsiniz.

Root/uiAffectShower.py Açın ve Aratın:


Kod:
    if app.ENABLE_DRAGON_SOUL_SYSTEM:
        AFFECT_DATA_DICT[chr.NEW_AFFECT_DRAGON_SOUL_DECK1]         = (localeInfo.TOOLTIP_DRAGON_SOUL_DECK1, "d:/ymir work/ui/dragonsoul/buff_ds_sky1.tga")
        AFFECT_DATA_DICT[chr.NEW_AFFECT_DRAGON_SOUL_DECK2]         = (localeInfo.TOOLTIP_DRAGON_SOUL_DECK2, "d:/ymir work/ui/dragonsoul/buff_ds_land1.tga")

Altına Ekleyelim:
#defineSIZE]



Lütfen Buradaki "d:/ymir work/ui/skill/common/affect/call_archer.sub" Sub İsmini Değiştirin



Locale_Game.txt Ekleyin:



Kod:
TOOLTIP_AFFECT_CALL_ARCHER    Bağları Çöz    SNA



Locale_Game -> Bağları Çöz İsmini Dilediğiniz Gibi Değiştirebilirsiniz. Sol Yukarıya Gelen Efektin Üstüne Geldiğinizde Çıkacak Yazı.



Örnek: Bağları Çöz (Kalan Süre: 15 gün)

locale ve root Paketleyip Oyuna Girebilirsiniz.



İtem_Names ve Proto'ya İtemi Eklemeyi Unutmayın. Efektin Karakterde Ne Kadar Sürede Kalacağını İtem'in Value0 Kısmına Eklemeyi Unutmayın.

Saniye Cinsinden Örnek 100 Saniye Kalmasını İstiyorsanız Value0 -> 100



KANIT:



Ekli dosyayı görüntüle 94017



VİDEO:



1: Efekt Karakter'de Varken



giphy-downsized-large.gif




2. Efekt Karakterde Yokken



giphy.gif
yavaş kardeşim ciğerimizi söktün
 
Paylaşım için teşekkürler.
 

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

Geri
Üst