Buradan bir değer çekmeden önce şunu yapmalısın.
Mesela Custom bir playercontroller oluştur kendine önce. Sonra bunu oyunun mod kısmına ekle.
Mesela Parkur_PC ve bunu mod seçerken hani playerstate vs girilen yer var ya oradan seç bunu.
Sonra bu Parkur_PC yi nasıl çağırırsın onu söyleyeyim. Unrealde garip olaylar var. Mesela normalde CustomPlayerStateye erişmek istersen. Cast edersen ve object kısmına get player state yazarsan sadece 0 indexli oyuncuyu alır. Bunun olmaması için normal PlayerStateyi çağırıp onu kendi Custom PlayerStatene Cast etmen gerekir.
Örnek verecek olursak şöyle.
Ekli dosyayı görüntüle 501
Şimdi PlayerState yazan node var ya, işte o Unrealin Default PlayerState değeri. Diğeri ise bizim oluşturduğumuz. Eğer bunu Defaulttan çekmezsen oraya GetPlayerState koyarsan Indexi 0 olan oyuncuyu dikkate alır. Fakat biz hepsine özel olarak işlem uygulamak istiyoruz. Bu yüzden normal PlayerStateyi alıp kendi Custom Player Statene Convert edip Castlemen lazım.
PlayerController de böyle. Eğer GetPlayerController yaparsan Indexi 0 olanı çekecek.
Ama PlayerControllerin böyle bir özelliği yok. Fakat PlayerStateyi böyle çağırıp
Ekli dosyayı görüntüle 502
Böyle yaparsan o zaman her oyuncunun kendi PlayerState -> (bizim customplayerstate ile) bilgisinden PlayerController çekmiş olacaksın. İşlemi bu şekilde yaptığında bir sorun kalmadığını göreceksin.
Bu arada oyuncularla ilgili bir işlem yaptığında GameMode sadece sunucu tarafında çalışacağı için, tüm oyuncuları sunucu oyuncusuna göre şekillendiriyor. Mesela ben her oyuncuya özel bir işlem yapamıyorum burada. Her oyuncuyu kendi mezarına ışınlamak için bir kod yazmıştım fakat sunucu hangi mezarı kayıt ettiyse hepsi ona ışınlanıyordu.
İşlemleri PlayerController veya PlayerState üzerinden yapmaya çalış.
Son olarak Her katılan oyuncunun PlayerState değerine müdahale edebilirsin. Ve PlayerControllerle ilgilenmene gerek kalmaz. Şöyle:
Ekli dosyayı görüntüle 503
MaxPlayers Arrayına New Playersten gelen oyuncuları ekledim ve onları Grave_PS yani Grave_PlayerState Custom PlayerState değerimi onların içerisinden çağırdım. Ama önce fark ettiysen Default PlayerState değerini çekip onu convertledim. Böylelikle her katılan PlayerControlleri biri diziye almış ve hepsinin playerstate değerlerini CustomPlayerStateme convertleyip işlem gerçekleştirebiliyorum.
Bu işlemle daha az önce uğraştım beni de uğraştırdı biraz. Forumdan bir arkadaşın isteği üzerine, her oyuncunun öldüğünde kendi mezarına ışınlanacağı bir sistem yaptım. Her oyuncuya bir ID numarası verdim ve her mezara bir ID numarası verdim eğer oyuncu öldüyse ve numarası eşleşiyorsa ilgili mezara gidiyor. Video aşağıda.
drive.google.com