melankolıa18 1
melankolıa18
shrpnl 1
shrpnl
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
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

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!

Paylaşım için teşekkürler. Bu sistemin tek bir sorunu var agresif moblar yakınınzda spawnlanınca direkt saldırmaya başladıkları için cesare pelerini bassanız bile yanınıza gelmiyor. Tabi bunu sorun olarak görmeyenler de vardır orası değişir.
 
Paylaşım için teşekkürler.
 
Paylaşım için teşekkürler.
 
a
Ö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:[/COLOR][/SIZE][/CENTER]
[SIZE=4][COLOR=rgb(204, 204, 204)][CENTER]        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:

Ekli dosyayı görüntüle 94017

VİDEO:

1: Efekt Karakter'de Varken



giphy-downsized-large.gif


2. Efekt Karakterde Yokken

giphy.gif
hocam tab ayarlarını yapamıyorum hazır dosya verseniz veya yardımcı olacak biri
 
Frankly, I did not understand what he was doing. Do you have any information about his presence on the official server?
 

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

Geri
Üst