Hoş Geldin, Ziyaretçi!

Forum içeriğine ve tüm hizmetlerimize erişim sağlamak için foruma kayıt olmalı ya da giriş yapmalısınız. Foruma üye olmak tamamen ücretsizdir.

dsgn kguard
ROLLET
vsupload kguardedgeakademi
cleopatra
ecr-online rebels reklam

vSRO Paylaşım vSRO | [MaxiGuard] Achievement Sistemi Aktif Etme ve Achievement Ekleme (Ödüllü,Ödülsüz)

AleriyaSama

VArcane Family , Team , Company
.
Katılım
12 Ocak 2019
Mesajlar
2,962
Çözümler
16
Alınan Beğeni
3,001
Ödül Puanları
113
Konum
Turkey
Herkese iyi forumlar...

Bu paylaşım konusu altında sizlere MaxiGuard'ın bir özelliği olan Achievement sistemini nasıl aktif edebiliriz ve nasıl Achievement ekleyebiliriz ayrıca bu Achievemente nasıl ödül vesaire ekleyebiliriz onu anlatacağım..

Paylaşım Adı:​
MaxiGuard Achievement Sistemi​
Paylaşım İçeriği:​
Prosedür​

Bilgilendirme;

Achievement sisteminin aktif olması için panelden şu ayarları aktif etmeniz gerekiyor;

Ekli dosyayı görüntüle 16995

Soldaki sekmeler kısmından; Oyun İçi Ayarlar -> Diğer Ayarlar -> Pencereler sekmesine tıklayın.

-----------------------------------------------------------------------------------------------------------------

Ekli dosyayı görüntüle 16996

Aşağıya doğru kaydırdıktan sonra karşımıza çıkan bu ayarları aktif ediyoruz.

-------------------------------------------------------------------------------------------------------------------


Konu Anlatımı(Sadece Tag İçin);

Öncellikle MaxiGuard_User veritabanında bulunan _RefAchievements tablosunu açıyoruz;


Ekli dosyayı görüntüle 16999
Name sütunu: Achievement'imizin ismini yazıyoruz.

Requirement sütunu: Achievement için oyun içinde görünmesini istediğimiz koşulu yazıyoruz.

Reward sütunu: Oyun içinde görünmesini istediğimiz ödülü yazıyoruz.

RequirementMax sütunu: Oyun içinde Achievement penceresini açtığımızda Progress yazan bar ve Achievement'in tamamlanmasını sağlayan belirlediğimiz koşulun Maximum ne kadar olması gerektiğini belirtiyoruz.

NoTagReward sütunu: Achievement tamamlandığında Tag ödülü vermek istemiyorsanız True, vermek istiyorsanız False olarak belirtiyoruz.

----------------------------------------------------------------------------------------------------------

Gerekli koşulu sağladığında Achievement'i yükseltmek için gerekli prosedürü açıyoruz;

(Ben unique öldürme başarımı yapmak istediğim için _UniqueKilled_EDIT prosedüründe işlem yaptım)

Ekli dosyayı görüntüle 17001

Kırmızı: Bu kısımda @Rarity adında bir değişken türü atıyoruz çünkü; Madness gibi bir event'e sahipseniz içeride kesilen unique'nin sayılmasını istemezsiniz veya Dungeon'a sahipseniz içeride kesilen unique'nin sayılmasını istemezsiniz. Genelde event unique'leri veya dungeon unique'lerinin Rarity'si 8 olur çünkü spawn olduklarında eğer Rarity 8 ise gameserver oyun içine notice göndermez..

Yeşil: Bu kısımda @Rarity değişkenine bir değer atıyoruz. (oyun içinde bir unique öldürüldüğünde @UniqueCodename değişkenine atanan değer ile _RefObjCommon'da bir arama yaptırıyoruz ve çıkan sonucun Rarity'sini kontrol ettiriyoruz.)

Pembe: Bu kısımda bir IF ekleyerek, oyun içinde bir unique öldürüldüğünde ve bu prosedür çağrıldığında öldürülen Unique'nin Rarity'si 3 ise Mavi kısmı çalıştırmasını sağlıyoruz.

Mavi: Bu kısımda eğer Pembe kısımdaki koşul sağlanıyorsa MaxiGuard'daki bir prosedürü çağırmasını sağlıyoruz.
@KillerCharID = Unique öldürüldüğünde _UniqueKilled_EDIT prosedürü uniqueyi öldüren karakterin ID'si ile birlikte çağrılır.

'Unique Slayer' = _RefAchievements tablosunda Name sütununa girdiğimiz veridir.
1 = Achievementin kaç puan yükseleceği değerdir.

Sarı: Bu kısmı göstermemin sebebi _UniqueKilled_EDIT diğer prosedürlerinde mantığını anlayabilmeniz ve MaxiGuard'ın oyun içi dinamikliği ile çağrılan prosedürlerde AS'tan önceki değişken türlerini kullanma imkanınızın olduğunu göstermek.



Prosedür kısmını hallettikten sonra oyun içinden bir görüntü göstermek gerekirse;


-----------------------------------------------------------------------------------------------------------------------------------------------------------------

Konu Anlatımı (Ödül İçin);

SQL:
İçeriği görebilmek için Uye olmanız gerekiyor.

Ne ödül vermek istiyorsanız ilgili bölümleri güncelleyin ve sorguyu çalıştırın (Execute).

--------------------------------------------------------------------------------------------


Ekli dosyayı görüntüle 17003


Kırmızı kısıma dokunmayın!

Yeşil kısımdakini MaxiGuard_User -> Programability -> _UpdateCharAchievement prosedürüne kırmızı alanın hemen altına ekleyin.

SQL:
İçeriği görebilmek için Uye olmanız gerekiyor.

Prosedür kısmını hallettikten sonra oyun içinden bir görüntü göstermek gerekirse;




ÖNEMLİ NOT; Daha öncesinde MaxiGuard ile ilgili paylaşımları önceki anlatım konularında söylediğim gibi, oluşturduğumuz MaxiGuard_Features veritabanında gerçekleştireceğim eğer sizde bu veritabanı yoksa aşağıdaki SQL kodunu çalıştırın.

SQL:
İçeriği görebilmek için Uye olmanız gerekiyor.


ÖNEMLİ NOT2; _UpdateCharAchievement prosedürü eğer guard restartlanırsa eski haline döneceği için ister her restarttan sonra o prosedüre ekleyin (zaten oyun açıldıktan sonra guarda restart atmanızı gerektiren durum çok fazla olmayacak hatta hiç olmayacak) istersenizde _AchievementsStatus tablosuna bir Trigger ekleyin..
SQL:
İçeriği görebilmek için Uye olmanız gerekiyor.
Hacımmm eline koluna sağlık community'e sunduğun katkılar çok değerli teşekkür ederim herkes adına :)
 

Hades

Developer
.
Katılım
30 Tem 2019
Mesajlar
522
Çözümler
21
Alınan Beğeni
921
Ödül Puanları
93
Konum
Kahramanmaraş
Hacımmm eline koluna sağlık community'e sunduğun katkılar çok değerli teşekkür ederim herkes adına :)
Bu paylaşım ağını bize sunduğunuz için asıl ben teşekkür ederim ❤️
Valla eline emeğine sağlık forumda gördüğüm en eğitici konulardan biri
Teşekkür ederim, elimden geldiğince bilgilerimi ve öğrendiğim yeni şeyleri forumdaki arkadaşlarımıza aktarmaya çalışıyorum ❤️
Eline sağlık kardeşim
Teşekkür ederim ❤️
 

sarkolata

.
Developer
Katılım
2 Tem 2019
Mesajlar
490
Çözümler
7
Alınan Beğeni
792
Ödül Puanları
93
Konum
Los Angeles, CA
Güzel anlatım, elinize sağlık. ♥️

Ancak guard restart işlemi ara ara gerçekleşebilecek bir şey. Bu sebeple _UpdateCharAchievement prosedürünü doğrudan düzenlemenizi önermem, her restartta uğraştırır.

Bu durumda triggerdan da daha basit bir yöntem var.
Aslında yaptığınız yönteme çok benziyor, sadece ters yoldan.

1- Kendi prosedürünüzü oluşturun. Mesela _UpdateCharAchievement_Hades.
2- Bu kendi oluşturduğunuz prosedürün içinde orjinal _UpdateCharAchievement prosedürünü çağırın.
3- UniqueKilled_EDIT gibi achievement algılayıp arttıracağınız yerlerde orjinal proc yerine direk _UpdateCharAchievement_Hades prosedürünü çağırın. Böylece orjinal kod çalışır ve sizin yazdığınız ek kodlar da silinmez.
 

Hades

Developer
.
Katılım
30 Tem 2019
Mesajlar
522
Çözümler
21
Alınan Beğeni
921
Ödül Puanları
93
Konum
Kahramanmaraş
Güzel anlatım, elinize sağlık. ♥️

Ancak guard restart işlemi ara ara gerçekleşebilecek bir şey. Bu sebeple _UpdateCharAchievement prosedürünü doğrudan düzenlemenizi önermem, her restartta uğraştırır.

Bu durumda triggerdan da daha basit bir yöntem var.
Aslında yaptığınız yönteme çok benziyor, sadece ters yoldan.

1- Kendi prosedürünüzü oluşturun. Mesela _UpdateCharAchievement_Hades.
2- Bu kendi oluşturduğunuz prosedürün içinde orjinal _UpdateCharAchievement prosedürünü çağırın.
3- UniqueKilled_EDIT gibi achievement algılayıp arttıracağınız yerlerde orjinal proc yerine direk _UpdateCharAchievement_Hades prosedürünü çağırın. Böylece orjinal kod çalışır ve sizin yazdığınız ek kodlar da silinmez.
Çok teşekkürler bu öneriniz oldukça muazzam hemen konuyu düzenliyorum ❤️

#Konu Güncellendi..
 

MarsEDIT

Premium
.
Katılım
14 May 2019
Mesajlar
916
Çözümler
3
Alınan Beğeni
1,092
Ödül Puanları
93
Konum
Kahramanmaraş
@sarkolata @Hades bu görev sistemi normalde tek seferlik ya..
bunu sınırsız yapma gibi bir imkan varmı..
ben görev tamamlandıktan sonra karakterden görevi sildim yinede yenilenmedi orası buna bir çözüm varmı ?
 
AdBlock Detected

Anlıyoruz, reklamlar can sıkıcı!

Elbette, reklam engelleme yazılımı reklamları engellemede harika bir iş çıkarır, ancak aynı zamanda web sitemizin faydalı özelliklerini de engeller. En iyi site deneyimi için lütfen AdBlocker'ınızı devre dışı bırakın.

AdBlock'u Devre Dışı Bıraktım.