xWiggle

Yeni üye
3 Şub 2018
23
5
0
(34) İstanbul Avrupa
Arkadaşlar merhaba, 
Ben projemde PUBG tarzı bir inventory/loot sistemi kurmaya çalışıyorum.
Sorunum spawn olan itemlerin kullanıcı tarafından alınabiliyor, ancak alındığında "destroy" edilemiyor olması. Server tarafı da alabiliyor itemi ve aldığında item destroy ediliyor.
Itemi replicated ettim. 
Destroy fonksiyonundan sonra belki çalışmıyordur diye yeni bir fonksiyon yazdım görünmez yapmak için o çalışıyor.
Set Auth ile yetki ayarları ile oynadım başarabildiğim tek şey sunucu tarafınında destroy edememesi oldu.

Blueprintlerimi paylaşıyorum aşağıda umarım çözebiliriz,
Şimdiden teşekkürler.

Not:CoreCharacter ile MainCharacter aynı, fotoğrafları çekerken arada ismini değiştirdim sadece.








 
[UETR]Ozzy' Alıntı:
Simple olarak düşünelim siz şuan destroy edebiliyor musunuz ? Sorununuz networking ile mi alakalı ?

2 kişi play yaptığım zaman server olan taraf destroy edebiliyor, client edemiyor, ikiside inventorye itemi alabiliyor.
Dedicated yaptığım zaman ise iki client de destroy edemiyor, ikiside itemi alabiliyor.
 
Spawn edilen objeleriniz yazdığınız spawn fonksiyonunda "Item to Spawn" ve pickup yaptığınız zaman "Item to Spawn" destroy etmeniz gerekiyor. Spawn edilen actorün detail tab kısmını screenshot olarak gönderebilir misiniz ?
 
[UETR]Ozzy' Alıntı:
Spawn edilen objeleriniz yazdığınız spawn fonksiyonunda "Item to Spawn" ve pickup yaptığınız zaman "Item to Spawn" destroy etmeniz gerekiyor. Spawn edilen actorün detail tab kısmını screenshot olarak gönderebilir misiniz ?
Item to spawn orada sadece yerde bulunan objenin referansı değil mi? Zaten destroy fonksiyonunu çağırdığımda target otomatik olarak o oluyor sanıyordum ben.
Spawn edilen actor;
 
Replicate Movement kısmını işaretleyin. Destroy etmek için en basit olarak bunu kendi sisteminize uyarlıyabilirsiniz. Oluşturduğum basit bir yapıdır Custom Event Run on Server olarak replicate etmeniz gerekiyor. Dilerseniz siz GetAllActorsOfClass node input girişine Items to Spawn çekebilirsiniz. Oluşturduğunuz Spawn fonksiyonu şu şekilde işlemiyor mu ? Class kısmı Actor Class variable tipinde ve array şeklindedir. Spawn edilecek actörler mevcut. Random integer ile minimum 0 ve array değerleri arasında rastgele bir şekilde SpawnPointCore lokasyonu ve rotasyonuna göre spawn etmekte. 

O9neCI.png


F7HKP9.png
 
[UETR]Ozzy' Alıntı:
Replicate Movement kısmını işaretleyin. Destroy etmek için en basit olarak bunu kendi sisteminize uyarlıyabilirsiniz. Oluşturduğum basit bir yapıdır Custom Event Run on Server olarak replicate etmeniz gerekiyor. Dilerseniz siz GetAllActorsOfClass node input girişine Items to Spawn çekebilirsiniz. Oluşturduğunuz Spawn fonksiyonu şu şekilde işlemiyor mu ? Class kısmı Actor Class variable tipinde ve array şeklindedir. Spawn edilecek actörler mevcut. Random integer ile minimum 0 ve array değerleri arasında rastgele bir şekilde SpawnPointCore lokasyonu ve rotasyonuna göre spawn etmekte. 
Yeni bir proje oluşturup baştan yaptım her şeyi, değişen bir sonuç olmadı.

Sizin söylediğinizi yaptığımda aldığım hata;
Blueprint Runtime Error: Accessed None trying to read property AnyItemRef from function:
'ExecuteUbergraph_ThirdPersonCharacter' from node: DestroyActor in graph: EventGraph in object: ThirdPersonCharacter with description: Accessed None trying to read property AnyItemRef

Araştırıyorum hatayı sonuç bulursam eklerim burayada.

Edit: Destroy Item Custom Event'inin içine IsValid koydum hata gitti.

Edit2: Çözdüm, problem server tarafının Item'i görmemesi imiş, yeniden yazarken destroy edilecek Item Referansını da gönderdim, Switch Has Authority ile de kullanınca bütün kullanıcılarda yok ediliyor.

Son hali bu belki birinin işine yarar;