InfernoShade 1
InfernoShade
Fethi Polat 1
Fethi Polat
Bvural41 1
Bvural41
noisiv 1
noisiv
Manwe Work 1
Manwe Work
shrpnl 1
shrpnl
YusufŞimşek14 1
YusufŞimşek14
berzahx 2
berzahx
xranzei 1
xranzei
Hikaye Ekle
Reklam vermek için turkmmo@gmail.com
Kaynak ikonu

Hunting System - Avcılık Sistemi 2023-02-11

indirmek için izniniz yok
  • Konuyu başlatan Konuyu başlatan recepk78
  • Başlangıç tarihi Başlangıç tarihi
  • Cevaplar Cevaplar 34
  • Görüntüleme Görüntüleme 9K
5.00 yıldız(lar) 1 Değerlendirme Değerlendirenler

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!

Paylaşım için teşekkürler.
 
Bunları saklamayın kuzum bırakın herkes faydalansın :d



Link:
VT:

Paylaşım için teşekkürler.
 
Paylaşım için teşekkürler, sistemi biraz inceleme fırsatım oldu. Her level range'i arası için ayrı bir array oluşturulmuş. Aslında buna gerek yok.

constants.cpp
C++:
constexpr std::array<std::array<int, 2>, 5> THuntingRandomItem_Ranges = {{ // level range'ini belirtir
  {{1, 20}},
  {{21, 40}},
  {{41, 60}},
  {{61, 80}},
  {{81, 90}},
}};
constexpr std::array<std::array<std::array<int, 2>, 10>, 5> THuntingRandomItems = {{ // her range'de verilicek random item ve count'u belirtir.
  {{{{100, 1}}, {{200, 2}}, {{300, 3}}, {{400, 4}}, {{500, 5}}, {{600, 6}}, {{700, 7}}, {{800, 8}}, {{900, 9}}, {{1000, 10}}}},
  {{{{1100, 11}}, {{1200, 12}}, {{1300, 13}}, {{1400, 14}}, {{1500, 15}}, {{1600, 16}}, {{1700, 17}}, {{1800, 18}}, {{1900, 19}}, {{2000, 20}}}},
  {{{{2100, 21}}, {{2200, 22}}, {{2300, 23}}, {{2400, 24}}, {{2500, 25}}, {{2600, 26}}, {{2700, 27}}, {{2800, 28}}, {{2900, 29}}, {{3000, 30}}}},
  {{{{3100, 31}}, {{3200, 32}}, {{3300, 33}}, {{3400, 34}}, {{3500, 35}}, {{3600, 36}}, {{3700, 37}}, {{3800, 38}}, {{3900, 39}}, {{4000, 40}}}},
  {{{{4100, 41}}, {{4200, 42}}, {{4300, 43}}, {{4400, 44}}, {{4500, 45}}, {{4600, 46}}, {{4700, 47}}, {{4800, 48}}, {{4900, 49}}, {{5000, 50}}}},
}};

constants.h'a da ekleme yaparsınız.

char_hunting.cpp
C++:
void CHARACTER::SetRewardRandomItemFromTable()
{
    BYTE bMissionLevel = GetQuestFlag("hunting_system.level");
    
    DWORD itemVnum, itemCount;

    auto it = std::find_if(THuntingRandomItem_Ranges.begin(), THuntingRandomItem_Ranges.end(),
        [bMissionLevel](const auto& range){
            return bMissionLevel >= std::get<0>(range) && bMissionLevel <= std::get<1>(range);
        });
    
    if (it != THuntingRandomItem_Ranges.end()) {
        int randItem = number(0,9); // array length - 1
        itemVnum = THuntingRandomItems[std::distance(THuntingRandomItem_Ranges.begin(), it)][randItem][0];
        itemCount = THuntingRandomItems[std::distance(THuntingRandomItem_Ranges.begin(), it)][randItem][1];
    }
    SetQuestFlag("hunting_system.reward_rand", itemVnum);
    SetQuestFlag("hunting_system.reward_rand_count", itemCount);
    return;
}
Bu gibi sistemde benim açımdan değiştirilmesi gereken çok şey var, yine de paylaşım için teşekkürler. Üzerinde çalışarak güzel hale getirilebilir.

NOT: Eğer verdiğim düzenlemeyi yaparsanız levelrange arraylerini kullanan SendRandomItemPacket fonksiyonunu da düzenlemeniz gerek.
 
Easy cum, easy go! :) ilaç gibi geldi

Ekli dosyayı görüntüle 90807

Paylaşım için teşekkürler

Paylaşım için teşekkürler

Paylaşım için teşekkürler.

Paylaşım için teşekkürler.

Paylaşım için teşekkürler

Paylaşım için teşekkürler.

Paylaşım için teşekkürler.

paylaşım için teşekkürler.

Paylaşım için teşekkürler :)

Paylaşım için teşekkürler.

Paylaşım için teşekkürler cano.

Paylaşım için teşekkürler.

Paylaşım için teşekkürler

Paylaşım için teşekkürler.

Paylaşım için teşekkürler.

Paylaşım için teşekkürler, sistemi biraz inceleme fırsatım oldu. Her level range'i arası için ayrı bir array oluşturulmuş. Aslında buna gerek yok.

constants.cpp
C++:
constexpr std::array<std::array<int, 2>, 5> THuntingRandomItem_Ranges = {{ // level range'ini belirtir
  {{1, 20}},
  {{21, 40}},
  {{41, 60}},
  {{61, 80}},
  {{81, 90}},
}};
constexpr std::array<std::array<std::array<int, 2>, 10>, 5> THuntingRandomItems = {{ // her range'de verilicek random item ve count'u belirtir.
  {{{{100, 1}}, {{200, 2}}, {{300, 3}}, {{400, 4}}, {{500, 5}}, {{600, 6}}, {{700, 7}}, {{800, 8}}, {{900, 9}}, {{1000, 10}}}},
  {{{{1100, 11}}, {{1200, 12}}, {{1300, 13}}, {{1400, 14}}, {{1500, 15}}, {{1600, 16}}, {{1700, 17}}, {{1800, 18}}, {{1900, 19}}, {{2000, 20}}}},
  {{{{2100, 21}}, {{2200, 22}}, {{2300, 23}}, {{2400, 24}}, {{2500, 25}}, {{2600, 26}}, {{2700, 27}}, {{2800, 28}}, {{2900, 29}}, {{3000, 30}}}},
  {{{{3100, 31}}, {{3200, 32}}, {{3300, 33}}, {{3400, 34}}, {{3500, 35}}, {{3600, 36}}, {{3700, 37}}, {{3800, 38}}, {{3900, 39}}, {{4000, 40}}}},
  {{{{4100, 41}}, {{4200, 42}}, {{4300, 43}}, {{4400, 44}}, {{4500, 45}}, {{4600, 46}}, {{4700, 47}}, {{4800, 48}}, {{4900, 49}}, {{5000, 50}}}},
}};

constants.h'a da ekleme yaparsınız.

char_hunting.cpp
C++:
void CHARACTER::SetRewardRandomItemFromTable()
{
    BYTE bMissionLevel = GetQuestFlag("hunting_system.level");
    
    DWORD itemVnum, itemCount;

    auto it = std::find_if(THuntingRandomItem_Ranges.begin(), THuntingRandomItem_Ranges.end(),
        [bMissionLevel](const auto& range){
            return bMissionLevel >= std::get<0>(range) && bMissionLevel <= std::get<1>(range);
        });
    
    if (it != THuntingRandomItem_Ranges.end()) {
        int randItem = number(0,9); // array length - 1
        itemVnum = THuntingRandomItems[std::distance(THuntingRandomItem_Ranges.begin(), it)][randItem][0];
        itemCount = THuntingRandomItems[std::distance(THuntingRandomItem_Ranges.begin(), it)][randItem][1];
    }
    SetQuestFlag("hunting_system.reward_rand", itemVnum);
    SetQuestFlag("hunting_system.reward_rand_count", itemCount);
    return;
}
Bu gibi sistemde benim açımdan değiştirilmesi gereken çok şey var, yine de paylaşım için teşekkürler. Üzerinde çalışarak güzel hale getirilebilir.

NOT: Eğer verdiğim düzenlemeyi yaparsanız levelrange arraylerini kullanan SendRandomItemPacket fonksiyonunu da düzenlemeniz gerek.

Rica ederim efenim
 
0214 21:55:15365 ::
uiHunting.py(line:139) LoadWindow
ui.py(line:3500) GetChild

HuntingWindow.LoadWindow.BindObject - <type 'exceptions.KeyError'>:'item_area'

0214 21:55:15365 :: ============================================================================================================
0214 21:55:15365 :: Abort!!!!
 

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

Geri
Üst