s1studios

Üye
27 Haz 2022
30
4
8
(34) İstanbul Avrupa
Merhaba. Çok Türkçe ve deyim yerindeyse Tarzanca ifade edeceğim, affola.

Amaç envantere giren nesneden XP puanı toplamak ve bunu HUD'a yansıtmak.

Bir envanter sistemi ve 5 çeşit aktör var. Bu nesneler e ile etkileşime girerek envantere alınabiliyor. Bir de xxx.Structure isminde bir dosyam var. Ben bu dosyaya XP değişkenini ekledim. Otomatik olarak 5 aktörün blueprintinde bu gözüktü. Aktörlerin içine girerek XP kısımlarını el ile numaralandırdım (Örneğin kutu ya 5, mikrofona 3, telefona 1 xp puanları yazdım).

Sonra Character BP'de XP isminde bir değişken oluşturdum. Ardından MainHUD'a girerek bir text oluşturdum, daha sonra'da Character referansı vererek bu xp yi çeksin ve settext ile ekrana yazdır işlemi yaptım.

Bir şey olmadı.

InventoryItem dosyası içinde işlem yapmam gerektiğini düşündüm, tam envantere aldıktan sonra xp kazanmalı dedim. Envantere aldığı esnada hangi node çalışıyorsa buldum (atıyorum add item to inventory). Burada birazcık oynadım ama hiçbir işe yaramadı. [Bu arada burada yaptığım bazı şeyler işe yarıyor. Mesela xp kazanmasını sağlıyorum ama her aktörde aynı xp puanını kazanıyor. Orada xp ekle + get, set xp falan işleri yaptım işte + kısmına 5 ekledim tüm aktörleri envantere ekleyince 5 geldi. Spesifik aktörün xp puanı neyse onu almalıydı).

Ya böyle hiyeroglif gibi anlattım ama sizce ne yapmalıyım. Çözüm önerileri gerçekten çok makbule geçer.

PS: Mesela aktöre sphere ekleyerek begin overlap ile character içine girdiğinde xp kazandırabiliyorum. Benim istediğim envantere ekledikten sonra artık kaç xp tanımladıysam o kadar xp kazanması).
 
Son düzenleme:
1. Character içinde bir Map değişken oluştur. Map değişkenin sol tarafında Classlar ve karşılarında da float ya da int cinsinden XP değerlerin olacak. Map public olsun. Yanında göz işareti vardır.
2. O aynı değerleri verdirmeyi başardım dediğin fonksiyona geri gel. Character referansını bul ve ondan oluşturduğun Map değişkenine ulaş.
3. Fonksiyon içerisinde hangi item koyuluyorsa onun GetClass ile class ını alıp, bunun karşılığında character den elde ettiğin Map te ona karşılık gelen XP değerini çek ve vermek istediğin yere onu ver.

Eğer bu söylediklerimden hiç bir şey anlamadıysan bir şeyler öğrenene kadar çok çok daha basit bir yöntem izlemelisin:
1. Beş BP nden her birine bir XP değişken yap ve türüne göre ayrı ayrı XP değerlerini ver.
2. Item inventory ye atandığında ,direk BP nin içindeki bu değişkene ulaş, ve bu değeri vermek istediğin yere ver.

İki yöntemde de aslında toplam XP yi character de ayrı bir değişkende tutmak istersin ve muhtemelen her gelen XP bu değişkene eklenir. MainHUD u nasıl yaptın bilmiyorum ama UMG kullanarak bir UI elemanı yaparsın ve characterdeki bu XP değişkeninin değerini gösterirsin.
 
1. Character içinde bir Map değişken oluştur. Map değişkenin sol tarafında Classlar ve karşılarında da float ya da int cinsinden XP değerlerin olacak. Map public olsun. Yanında göz işareti vardır.
2. O aynı değerleri verdirmeyi başardım dediğin fonksiyona geri gel. Character referansını bul ve ondan oluşturduğun Map değişkenine ulaş.
3. Fonksiyon içerisinde hangi item koyuluyorsa onun GetClass ile class ını alıp, bunun karşılığında character den elde ettiğin Map te ona karşılık gelen XP değerini çek ve vermek istediğin yere onu ver.

Eğer bu söylediklerimden hiç bir şey anlamadıysan bir şeyler öğrenene kadar çok çok daha basit bir yöntem izlemelisin:
1. Beş BP nden her birine bir XP değişken yap ve türüne göre ayrı ayrı XP değerlerini ver.
2. Item inventory ye atandığında ,direk BP nin içindeki bu değişkene ulaş, ve bu değeri vermek istediğin yere ver.

İki yöntemde de aslında toplam XP yi character de ayrı bir değişkende tutmak istersin ve muhtemelen her gelen XP bu değişkene eklenir. MainHUD u nasıl yaptın bilmiyorum ama UMG kullanarak bir UI elemanı yaparsın ve characterdeki bu XP değişkeninin değerini gösterirsin.
Cevap için çok teşekkür ederim. Akşam iki yöntemini de deneyeceğim. Anladım gibi. Bu iki yöntemi defalarca deneyip sonuç alırım sanki. Not düşeceğim buraya tekrardan.
 
1. Character içinde bir Map değişken oluştur. Map değişkenin sol tarafında Classlar ve karşılarında da float ya da int cinsinden XP değerlerin olacak. Map public olsun. Yanında göz işareti vardır.
2. O aynı değerleri verdirmeyi başardım dediğin fonksiyona geri gel. Character referansını bul ve ondan oluşturduğun Map değişkenine ulaş.
3. Fonksiyon içerisinde hangi item koyuluyorsa onun GetClass ile class ını alıp, bunun karşılığında character den elde ettiğin Map te ona karşılık gelen XP değerini çek ve vermek istediğin yere onu ver.

Eğer bu söylediklerimden hiç bir şey anlamadıysan bir şeyler öğrenene kadar çok çok daha basit bir yöntem izlemelisin:
1. Beş BP nden her birine bir XP değişken yap ve türüne göre ayrı ayrı XP değerlerini ver.
2. Item inventory ye atandığında ,direk BP nin içindeki bu değişkene ulaş, ve bu değeri vermek istediğin yere ver.

İki yöntemde de aslında toplam XP yi character de ayrı bir değişkende tutmak istersin ve muhtemelen her gelen XP bu değişkene eklenir. MainHUD u nasıl yaptın bilmiyorum ama UMG kullanarak bir UI elemanı yaparsın ve characterdeki bu XP değişkeninin değerini gösterirsin.
Hocam selamlar. 1.Yöntemi denedim. [2.Yöntem aslında daha zor geldi sanırım].

https://blueprintue.com/blueprint/7y9v9vrb/

Sonuç yine sabit xp vermesi oldu. [Nam değişkeninin ismi aslında XP].

Batarya ya da başka aktörü envantere aldığımda sonuç değişmedi. Yine hangi XP puanı yazıyorsa (Nam) o hepsine geliyor ayırt etmeden.
 
Saygıdeğer büyüğüm vallahi güldüm :LOL:.

Zahmetin için çok teşekkür ederim. Oldukça eğitici oldu bu görsel (Sadece ilgili konu için de değil üstelik). Akşamleyin tekrar üstünden geçeceğim ama gereksiz get ler set ler yapmışım. Ya da öylece bırakıp add falan gibi nodeları kullanmamışım. Özellikle 3 ve 6. maddeler olayın anahtarı olduğunu aydınlanmasını yaşıyorum. İlkel yöntemim şimdilik kalsın, bu yolu maddelerine göre tekrar deneyeceğim.
 
  • Beğen
Tepkiler: erginegider