Yardım 3. ve 4. efsunları değiştirme nesnesi

Konu sahibi bu konuda soru soruyor. Sorusu ile ilgili bilgisi olanların yanıtlamasını bekliyor.

brave

Üye
Üye
Mesaj
115
Çözümler
5
Beğeni
25
Puan
479
Ticaret Puanı
0
Başlıktada anlaşılacağı üzere 3. ve 4. efsunları değiştiren iki adet efsun nesnesi yapmak istiyorum. Kadim Küresini inceledim fakat onun çalışma prensibi son efsunu silip yeni efsun eklemek. Ben sadece 3. ve 4. sıradaki efsunun değişmesini istiyorum.

öncelikle 3. efsunu değiştiren nesne için:

if(item2->GetAttributeCount() < 3 )

diye bir sorgu yazdım 3'den az efsunu olan itemlerde çalıştırmamak için ama devamını getiremedim. Bir itemdeki 3. ve 4. sıradaki efsunu nasıl bulabilirim?
 
Öncelikle Metin2 geliştiriciliği ile ilgili neredeyse hiçbir bilgim yok ancak yazılım deneyimime dayanarak söylüyorum. Dolayısıyla yanlışım varsa bilgili biri düzeltebilir.

Kadim Efsun eğer son efsunu silip onun yerine efsun ekliyorsa, aynen o mantıkla çalışabilir.
Yazacağın kod silahın efsunlarının hepsini kaydedip, sonrasında silahın efsunlarını silip, kaydedilen veriden değiştirilmek istenen efsun değiştirilip silaha eklenebilir.

Edit: Daha açıklayıcı olsun diye Javascript ile bahsettiğim olayı göstermek istedim. Kod şu şekilde çalışıyor:

"efsun1, 2, 3, 4, 5" id'lerindeki elementlerin içindeki bilgileri bir döngü ile toplayıp array'a kaydediyor.
Sonrasında "deg_efsun" id'sindeki elementin de içindeki ilk sayıyı (kaçıncı efsun olduğunu gösteren rakam) ve hangi efsun olacağı gibi bilgileri de ayrı ayrı çekip farklı bir array değişkenine gönderiyor. Sonrasında bu array değişkenindeki elemanları, halihazırda bir satırlık bir tanımlama koduyla asıl efsunlardaki belirtilen kısmı değiştirmek için kullanıyor. Son döngüyü sadece sonucu sayfaya yazdırmak için ekledim.


 
Son düzenleme:
işte sorun şu ki metin2 kütüphanesine pek hakim değilim. bazı fonksiyonların ne işe yaradığını çözebiliyorum ama itemdeki efsunları ve hangi sırada olduklarını nasıl çekebileceğimi bilmiyorum
 
Üstünden 9 gün geçti ama paylaşan olmadı :)
Bildirim gelmeyince unuttum. Ben başta konuyu yanlış anlamışım. Siz sabit bir efsun vermek yerine oradaki efsunu değişmek istiyorsunuz. Metin2 kaynak kodlarında removeattributeat(int idx) gibi bir fonksiyon var ama addattributeat(int idx) gibi bir fonksiyon yok. Verdiğiniz index numarasına göre oraya o iteme ait bir efsun gelmesi gerek
C++:
const TItemAttrTable& r = g_map_itemRare[attr_idx];

Buradaki attr_idx vereceğiniz apply type. Yani bunun PutAttribute fonksiyonu gibi random bir efsun gelmesini sağlayacak bir değişken olarak tanımlayacaksınız. Ardından
AddAttributeAt fonksiyonunda setforceattribute kullanıp, argüman olarak fonksiyonda bulunan idx argümanını, random efsunu (PutAttribute mantığıyla) ve yukarıda belirttiğim o apply_type'ına göre gelicek random level'ı (efsun oranından bahsediyorum) setleyeceksiniz.

Şuanda metin2 ile alakalı herhangi bir şey kurulu olmadığından test edip atamıyorum o yüzden temel mantığı anlattım. Birazdan da kod halini atacağım. Fakat test etmedim o yüzden tam bilemiyorum, discorddan benimle iletişime geçerseniz beraber test ederiz.

Emir.#4017
 

Reached çok güzel bir anlatım olmuş fakat az bilgimden dolayı pek anlayamadım müsait olduğunda bir kaç birşey danışmak istiyorum yardımcı olursan sevinirim​

Ben de bir şey bilmiyorum ki, ne de olsa bir şeyleri bir yerden alıntılayıp nasıl olduğunu bile bilmeden paylaşıyorum xd.
 
Geri
Üst