Oyunda kullanılmayan iksiri özellik verip aktif etme SRC

  • Konuyu açan Konuyu açan Battle2
  • Açılış Tarihi Açılış Tarihi
  • Yanıt Yanıt 2
  • Gösterim Gösterim 122

Battle2

Üye
Üye
Mesaj
32
Çözümler
3
Beğeni
26
Puan
329
Ticaret Puanı
0
Merhabalar her fileste bulunan ama kullanılmayan pembe iksir ve Gök mavisi iksirlerini aktif edicez ancak ben şuan sadece pembe iksiri aktif ettim yarında büyük ihtimal gök mavisi iksirini aktif ederim başlıyalım
item_proto ve src client:
Genişlet Daralt Kopyala
//Filezilla Girelim item_proto.txt açalım ve 27118 aratalım

ITEM_NONE    0
böyledir biz böyle yapalım   yani 0 yerine USE_SPECİAL koyucaz
eğer pack tarafında problem oluyorsa  USE_ABILITY_UP  kullanılabilir
ITEM_USE    USE_SPECIAL

//Source geçelim  game/src/affect.h  açalım ve aratalım     AFFECT_NOG_ABILITY,
//Hemen altına
    NEW_AFFECT_OZEL_IKSIR = 910, //Yeni Harici Kritik Havuzu
    AFFECT_OZEL_IKSIR_HP = 911, // Yeni Harici HP Havuzu
    AFFECT_OZEL_IKSIR_DELICI = 912, // Yeni Harici Delici Havuzu
 
//Yazalım kaydedip kapatalım.
//char_item.cpp açalım  game/src klasörü içinde
//aratalım     case ITEM_GIVE_STAT_RESET_COUNT_VNUM:   bir boşluk bırakıp üzerine alttaki kodu yapıştıralım

                            case 27118: // Özel İksir (HP, Kritik, Delici)
                                {
                                    // Sınırsız üst üste basılmayı engelleyen orijinal kontrol
                                    if (FindAffect(NEW_AFFECT_OZEL_IKSIR))
                                    {
                                        ChatPacket(CHAT_TYPE_INFO, "Bu iksirin etkisi zaten uzerinizde aktif.");
                                        return false;
                                    }

                                    // Süre Tanımı: 10 Dakika (600 Saniye)
                                    long lDuration = 600;

                                    AddAffect(NEW_AFFECT_OZEL_IKSIR, POINT_CRITICAL_PCT, 10, AFF_NONE, lDuration, 0, true);
                                    AddAffect(AFFECT_OZEL_IKSIR_HP, POINT_MAX_HP, 1000, AFF_NONE, lDuration, 0, true);
                                    AddAffect(AFFECT_OZEL_IKSIR_DELICI, POINT_PENETRATE_PCT, 10, AFF_NONE, lDuration, 0, true);

                                    // Zindan ve Savaş haritalarındaki iksir kullanım log tetikleyicileri
                                    if (GetDungeon())
                                        GetDungeon()->UsePotion(this);

                                    if (GetWarMap())
                                        GetWarMap()->UsePotion(this, item);

                                    // Can barının (HP Bar) anlık güncellenmesi için zorunlu yenileme
                                    PointChange(POINT_MAX_HP, 0);

                                    ChatPacket(CHAT_TYPE_INFO, "[Sistem] Ozel iksir kullanildi! 1000 HP, %%10 Kritik ve %%10 Delici 10 dakika aktif.");
                               
                                    // İksiri envanterden 1 adet eksiltir
                                    item->SetCount(item->GetCount() - 1);
                                }
                                break;

//SRC tarafı bitti build alalım şimdi iksire basınca sol üstte gözükmesi için client pack ayarlarını yapalım
//InstanceBase.h açalım ve aratalım   NEW_AFFECT_QUEST_START_IDX bir boşluk üzerine  bu alttaki kodu yapıştıralım.
            NEW_AFFECT_OZEL_IKSIR = 910,

//kaydedip kapatalım  PythonCharacterModule.cpp açalım ve aratalım
//     PyModule_AddIntConstant(poModule, "AFFECT_FISH_MIND",                    CInstanceBase::AFFECT_FISH_MIND);
//hemen üzerine  ekliyelim
    PyModule_AddIntConstant(poModule, "NEW_AFFECT_OZEL_IKSIR",            CInstanceBase::NEW_AFFECT_OZEL_IKSIR);

//kaydetip  client build alalım
//Pack ayarı kaldı son olarak  root dosyasındaki uiaffectshower.py açalım
//class AffectShower içerisinde  AFFECT_DATA_DICT bul ve müsait yere bu kodu ekle
            chr.NEW_AFFECT_OZEL_IKSIR : (localeInfo.NEW_AFFECT_OZEL_IKSIR, "icon/item/27118.tga"),

//kaydet ve rootu paketle  locale_tr'yi aç  locale_game.txt bul aç en altına
NEW_AFFECT_OZEL_IKSIR    Pembeİksir    SNA
//ekle ve kaydet locale_tr kapat oyuna gir
//NOT : İKSİRİN ÖZELLİKLERİNİ İSTEDİĞİNİZ GİBİ DEĞİŞTİREBİLİRSİNİZ VEYA ORANLARINI
//İKSİR KULLANILDIĞINDA [SİSTEM] MESAJI GEÇER AKTİF İKEN KULLANIRSANIZ ETKİ DEVAM EDİYOR DİYECEKTİR
gökmavisi iksir yapımı:
Genişlet Daralt Kopyala
//Filezilla item_proto.txt açalım 27121 aratalım
//ITEM_NONE olan ve 0 yazan yerleri bununla değiştirelim
ITEM_USE    USE_SPECIAL
//pack içinde bununla değiştir iksir sesleri çıkması için
ITEM_USE    USE_ABILITY_UP
//USE_SPECIAL böyle olsada çalışır fakat iksir sesi çıkmaz
//not : filezilla tarafı her zaman  USE_SPECIAL böyle olmalı

//SRC tarafında affect.h açalım game/src kısmında
//Yukarıda verdiğim kodların altına ekle
    AFFECT_OZEL_SAVUNMA = 913, //Karakterlere Beceri Savunması %5
    AFFECT_OZEL_SAVUNMA_IKI = 914, //Karakterlere Ortalama Savunma %5
//kaydet ve char_item.cpp aç yukarıda verdiğim kodun üzerine bu kodu yapiştir
                            case 27121: // Ozel Iksir (Karakterlere Savunma)
                                {
                                    // Sınırsız ust uste basılmayı engelleyen orijinal kontrol
                                    if (FindAffect(AFFECT_OZEL_SAVUNMA))
                                    {
                                        ChatPacket(CHAT_TYPE_INFO, "Bu iksirin etkisi zaten uzerinizde aktif.");
                                        return false;
                                    }

                                    // Sure Tanımı: 10 Dakika (600 Saniye)
                                    long lDuration = 600;

                                    //Karakterlere karsi savunma bonusları veriyoruz.
                                    AddAffect(AFFECT_OZEL_SAVUNMA, POINT_NORMAL_HIT_DEFEND_BONUS, 5, AFF_NONE, lDuration, 0, true);
                                    AddAffect(AFFECT_OZEL_SAVUNMA_IKI, POINT_SKILL_DEFEND_BONUS, 5, AFF_NONE, lDuration, 0, true);

                                    // Zindan ve Sava? haritalarındaki iksir kullanım log tetikleyicileri
                                    if (GetDungeon())
                                        GetDungeon()->UsePotion(this);

                                    if (GetWarMap())
                                        GetWarMap()->UsePotion(this, item);

                                    // Can barının (HP Bar) anlık guncellenmesi icin zorunlu yenileme
                                    PointChange(POINT_MAX_HP, 0);

                                    ChatPacket(CHAT_TYPE_INFO, "[Sistem] Karakterlere karsi savunma %%5 iksiri 10 dakika aktif.");
                                  
                                    // ?ksiri envanterden 1 adet eksiltir
                                    item->SetCount(item->GetCount() - 1);
                                }
                                break;

//yukarıda kod ile yapısı aynıdır sadece iksirin verdiği özellikler değiştirilmiştir
//kaydet ve build alalım daha sonra client tarafını ayarlayalım
// InstanceBase.h açalım ve yukarıda verdiğim kodun altına bunu ekle ve kaydet
            NEW_AFFECT_OZEL_SAVUNMA = 913,

//PythonCharacterModule.cpp aç ve yukarıda verdiğim kodun altına bunu koy
    PyModule_AddIntConstant(poModule, "NEW_AFFECT_OZEL_SAVUNMA",            CInstanceBase::NEW_AFFECT_OZEL_SAVUNMA);

//kaydet ve build al pack tarafını yapalım
//pack root açalım uiaffectshower.py açalım ve yukarıda verilen kodun altına bunu koyalım
            chr.NEW_AFFECT_OZEL_SAVUNMA : (localeInfo.NEW_AFFECT_OZEL_SAVUNMA, "icon/item/27121.tga"),

//kaydedip locale_tr açalım ve locale_game.txt düzenliyelim altına bunu yazalım
NEW_AFFECT_OZEL_SAVUNMA    Gök Mavisi İksir    SNA

//kaydedip pack kapatıp oyuna girelim böylelikle gökmavisi iksir %5 karakterlere savunma verecektir
 

Dosya Eklentileri

  • yeniiksir.webp
    yeniiksir.webp
    120,9 KB · Gösterim: 68
  • gökmavisi iksir.webp
    gökmavisi iksir.webp
    133,2 KB · Gösterim: 7
Son düzenleme:
her affect = db de her oyuncu için 1 satır demek

tek affect üzerinden 3 tane bonus verebilirsiniz
 
her affect = db de her oyuncu için 1 satır demek

tek affect üzerinden 3 tane bonus verebilirsiniz
Bunu denedim ancak filestenmi tam çözemedim sadece 1 özellik çalışıyordu bu yüzden 3 affect ekledim ayrı olsun düzgün çalışsın diye
 
Geri
Üst