Merhabalar, aynı konuyu sphereserver forumlarına açmama rağmen yardım eden olmadı kaç gündür, umarım burada aradığım cevapları bulabilirim.
1. Sphere durability'i nasıl hesaplıyor? Yani bir eşyanın hitpointsini neye göre düşürüyor ve bunun formülü var mı?(varsa ona müdahale edebiliyor muyum?)
2. Sphere (mesela) silahın durability'ini verdiği hasarla nasıl etkileştiriyor? Yani silahın hasarını durability'e göre nasıl düşürüyor?
3. Default combat hesaplaması ile OSI hesaplaması arasındaki farklar nedir?(Bonuslar hariç, ama ben yine de bir değişiklik seziyorum)
4. Karşımdaki oyuncuya/npc'ye verdiğim gerçek hasarı nasıl bulacağım? Silah hasarını bulmayı başardım fakat vurduğum yaratığa verdiğim hasarı yansıtmıyor(OSI combat hesaplamasını kullanıyorum, hatta uostratics'de vereceğim hasarı hesaplamama rağmen yine de verdiğim hasar tutmuyor)
5. Karşımdakine verdiğim hasar ile onun armoru arasındaki bağlantı nedir? Yani armor nasıl bir formülle alınan hasarı düşürüyor?
6. Eşyaların durability'ini % olarak göstermeye çalışıyorum, aşağıda kullandığım kod çalışıyor ancak çok fazla ondalık karakter var float ile işlem yaptığım için(%100.000000 gibi gösteriyor mesela). Kullandığım koda alternatif bir çözüm önerebilir misiniz?
Eğer bunu oyundaki bütün durability sahibi olan eşyalara uygulamak istersem, eşyaların TYPEDEF'lerini override etmeliyim(şu an kullandığım kod t_weapon_sword'ü override ediyor mesela) yoksa tavsiye edebileceğiniz daha iyi bir yöntem var mı?
7. Eşyaların aldığı (about to fall apart) veya (badly damaged) suffixleri nasıl kapatabilirim? sphere_msgs'dan buldum bunları, o bölümleri yazı yazmak yerine boş bıraksam mantıklı bir yöntem olur mu ?
8. Son olarak biraz alakasız olacak ama, oyundaki default sysmessage'ların ve eşyalara tıklandığında çıkan yazı renklerini nasıl değiştirebilirim?(tek tek override yapman gerekicek demeyin )
Kusura bakmayın biraz uzun oldu ama... Şimdiden teşekkür ederim.
@Remedy merhaba. Türkün Türkten başka dostu yoktur Elimden geldiğince yardımcı olmaya çalışayım size.
1. Hitpoints çok fazla komplike bir olay olmamakla birlikte, silahın dayanıklığını gösterir. R/W yazılabilir ve okunabilir özelliktedir. Hitpoints, eşya kullanıldıkça azalır. Hitpoints in hasara katkı sağladığını düşünmüyorum. Şayet sağlıyorsa
verdiğim rakamlardan yola çıkarak bulabilirsin.
Hitpoints genel bilgi.
ON=@Create
HITPOINTS=50
şeklinde eklenir.
50 hitpoints i olan bir silah varsayalım. 50/50 bunun more1 yani hitpoints i gösteren karşılığı tam olarak 3276850 dır.
3276850 / 50 = 65537
65537 çarpan rakamdır ve her hitpoints çarpı 65537 şeklinde more1 e yansır. Hitpoints i ilk baştan 50 olarak bir silahın sırasıyla, kullanıldıkça hitpoints i düşmesi şu şekilde olur.
Yukarıda da dediğim gibi silahın hasarıyla alakasının olmadığını düşündüğümü söylemiştim. Ama şimdi ki ARMOR örneğinde, bu tezim biraz çürüyor gibi. Çünkü hitpoints tamamen ARMOR a etki ediyor.
50/50 Hitpoints e sahip bir armor parçası için örnekleme.
2. Birinci sorun ile hemen hemen aynı olmakla birlikte, silah hasarının artırılması dendiğinde aklıma gelen şey, MOREY değeri ile oynamak oldu. Yani magical silah mantığı...
3. Default combat sistemi, silahların verdiği ilk hasar iledir. Diğer combat sistemlerinin tamamı, dam_ etiketi ile oynanarak yapılmıştır. dam_god, dam_poison, dam_physical (bknz sphere_defs)
4. Karşındakine verdiğin hasar ile vurduğun arasındaki farkı anlaman güzel. Bunları ayırt etmekte fazla zorluk yaşamayacaksın fakat bilmeyenlere yinede bir not geçeyim.
Vuruş genel bilgi.
Elinizde +15 katana ve gm sw ile 50 vuruş gösterebilir fakat karşınızdaki ARMOR u bu oranı düşürür. Kaç vurduğunuzu göstermenin en net yolu, ON=@Hit triggeri yerine ON=@GetHit triggeri altından çalışmaktır.
Yani hasarı alan kişi üzerinden gösterirseniz, basit bir <hix>-vurulan değer=kalan hits şeklinde, kaç vurduğunuzu göstertebilirsiniz.
5. Armor faktörü biraz komplikedir. Heleki işin içine kalkan girince işler hepten karışır. Fazla üzerinde durmamanızı tavsiye ederim. Fakat elimde size yardımcı olabilecek şöyle bir liste var.
Armor hesaplama.
10 percent from ARMOR_HEAD
5 percent from ARMOR_NECK
10 percent from ARMOR_BACK
30 percent from ARMOR_CHEST
10 percent from ARMOR_ARMS
10 percent from ARMOR_HANDS
20 percent from ARMOR_LEGS
5 percent from ARMOR_FEET
6. Aramayı düzgün yapabilirsen UO-DEV de bahsettiğin % eski-yeni oranını gösterme scriptini bulabilirsin.
Eğer bunu oyundaki bütün durability sahibi olan eşyalara uygulamak istersem, eşyaların TYPEDEF'lerini override etmeliyim(şu an kullandığım kod t_weapon_sword'ü override ediyor mesela) yoksa tavsiye edebileceğiniz daha iyi bir yöntem var mı?
Bu kısmı anlamadım.
7. Bu mesajları nerde alıyosun? ItemID yaptıktan sonramı? Eğer öyleyse, boş bırakmak olabilir. Sıkıntı olmaz. Mesajları değiştirebilirsin de. Veyahut ItemID ON=@Start - ON=@Success arasında skill i baştan yazabilirsin.
8. Yapılan suggestion üzerine bu özellik son release edilen sürüme eklendi. (bknz sphere_msgs)
[DEFNAME messages_settings]
// Default color & font for SysMessage
SMSG_DEF_COLOR 946
SMSG_DEF_FONT 3
// Default color & font for Message/Say
MSG_DEF_COLOR 0
MSG_DEF_FONT 3
// Default color & font for Messages when player click an item
IMSG_DEF_COLOR 0
IMSG_DEF_FONT 3
Öncelikle cevabın için çok teşekkür ederim Mac-Fusion. Sırasıyla başlıyorum:
1. Verdiğin bilgi yararlı oldu. Fakat yine sorumun tam cevaplamıyor. Öğrenmek istediğim durability'si 50/50 olan bir katananın vurdukça nasıl hasar aldığını (49a 48e) indiğini öğrenmek istedim. Yani senin verdiğin örnekte 65.5 vuruşta bir mi hasar alıyor?
2. Client 6.0.14.3de test ediyorum. Bu client'de status bar'da DAMAGE bölümü var ya, hani eline silah aldığında artıyor, elinde silah yokken 0-1 şeklinde gösteriyor. Şimdi ben bir katana aldığımda elime katananın durability'si 47/47 iken damage 11/14 oluyor. fakat bunu durability'i 20ye düşürdüğümde ve çıkartıp taktığımda hasar 11-6'ya düşüyor. Durability 1 iken hasar 11-1 oluyor. Burada merak ettiğim konu durability formül olarak silahın hasarını nasıl düşürüyor olduğu.
3. Peki şu an OSI combat sistemini mi kullanmamı önerirsiniz yoksa defaultu mu? Bir de şu an eşya olarak zırhlarda TAG0.ResPhysical TAG0.ResCold şeklinde taglar var. Bu tarz armorları giyince status bardaki Physical res. ve Cold res. bölümleri de bu armorun verdiği değer kadar artıyor. Bu değerler şu an aktif mi? Yani ben bir oyuncuya flame strike atsam ve oyuncunun fire res. değeri 50 olsa, attığım flame strike 50 hasar verecekken 25 hasar mı veriyor?
4. Cevap çok yararlı oldu.
5. O hesaplamaları zaten biliyorum. Oradaki mesele eğer taktığın armor mesela ARMOR_CHEST bölümüne denk geliyorsa o armora scriptten verdiğin ARMOR değerinin %30unu alıyor. Yani; diyelim ki i_super_tunic diye bir eşya yaptık ve ARMOR değerini 100 yaptık. Bu durumda üzerimize taktığımızda (30/100)*100= 30 armor veriyor olacak. Benim burada öğrenmek istediğim ben bir katanayla karşımdakine saldırdığımda, karşımdakinde hiç ARMOR yokken 20 vuracaksam karşımdaki 100 armora sahipken ona vurduğum hasarın nasıl hesaplanıyor olması.
Bunu bulmuştum zaten sphereserver'da açtığım konunun hepsini Türkçe'ye çevirip yazdığımdan unutmuşum burada, teşekkürler.
6. Soruda anlayamadığınız kısmı açıklamam gerekirse, şimdi ben oyunda bir eşyaya tıklandığında üzerinde mesela şöyle gözükmesini istiyorum:
[%100 yeni]
Katana
Bunu sağlamanın bir yolunu buldum, mesela [TYPEDEF t_weapon_sword]'ün @Click eventine formülümü yazdığımda haliyle türü t_weapon_sword olan bütün eşyalarda istediğim oluyor. Ancak oyunca bir sürü eşya var ve bu eşyalarda da göstermem için benim yöntemimle tek tek [TYPEDEF t_weapon_Axe] [TYPEDEF t_weapon_kryss] [TYPEDEF t_armor] vs.vs. şeklinde tüm TYPEDEFlerin @Click'ine override etmem gerekicek. Öğrenmek istediğim şey bunun daha kolay bir yolu olup olmadığıydı.
7. bir eşyaya(katanaya mesela) .xhits 0 yaptığımda ve eşyaya tıkladığımda şöyle bir yazı çıkıyor a katana(about to fall apart). buradaki about to fall apart yazısı suffix olarak geçiyor. bu Suffixleri nereden kaldırabilirim bunu sormuştum. Aynı şekilde mesela bir vanq katana çıkardığım zaman ve tıkladığımda a +15 Katana of Vanquishing yazısı çıkıyor. Ben mesela bu "of Vanquishing" suffixini ya da "+15" prefixini nasıl kaldırabilirim.
8. Evet şimdi farkettim. Fakat bu sürüm daha test aşamasında(0.56c) ve sürekli güncelleniyor. Benim kullandığım 0.56b nightly sürümüne bu sphere_msgs'i yapıştırsam sorun çıkar mı ki?
1. Silah kullanıldıkça eskiyor. Mantık bu. Ama 1 vuruşta, ama 10 vuruşta eskiyor. Bu değişir. 65537 bu rakamı bununla karıştırma.
2. Şöyle bir mantık yürüttüm şuan. Bir silah yapıyoruz ve dam 5,6 değeri veriyoruz ve silaha hitpoints veriyoruz. Olay şöyle oluyor. Hitpoints 50 verirsek bu da 3276850 oluyor.
Toparlarsak 50 = 3276850 = 5,6(dam)
Oran orantıyla hitpoints düştükçe 5,6(dam) da düşecektir. Bu şekilde hesaplama yapabilirsin.
3. Normal combat iyidir. Bizim çevremizde UO oynayanlara Fiziksel Defans, Cold Defans, Fire Defans yemez. Ağır gelir.
4. İşini görmen güzel.
5. Armor hesaplamalarına girme demiştim Yani şöyle de bir durum var. Oyundan .detail 1 yazarsanız kimin neresine vurduğunuz yazar sol altta. Hits your left arm gibisinden. Onlarda işin içine katılıyorsa ohoooo.
6. Mantıklı olan sadece silah ve armorlarda göstermek. Fakat tüm eşyalarda göstermek istiyorsan da On=@ItemClick ile genelleyebilirsin.
7. Kaldırılmıyor. Bende şöyle yapmışım
name +3 bardiche
name +6 katana
Hepsine tek tek name atamışım.
8. Sorun çıkmak çünkü çalışmaz. Yeni sürüm ile geldi o özellik yani sphereserv.exe de bulunuyor. Sadece sphere_msgs ile kurtulamazsın. Exe yi de alman gerek. Exe yi alırsan işler karışır. Yeni sürüm ile yoluna devam et.