- Mesaj
- 5
- Beğeni
- 12
- Puan
- 40
- Ticaret Puanı
- 0
Selamlar herkese,
Sistemi aslında geçen sene forumda @Kaptan Yosun hocamızın açtığı Hava Kılıcı İçin Alevli Savrulma İzi konusunda görmüştüm. Kendisine öncelikle bu güzel paylaşım için teşekkür ederim.
Ben bu yapıyı geçen sene kendi serverimde kullanırken biraz daha geliştirdim, sadece Hava Kılıcı ile sınırlı bırakmayıp genel bir düz vuruş sistemi haline getirdim. Sura ve Savaşçı için elektrik aurasını, Ninja için çift bıçağa oturan özel boyutlu efektleri ve oyuncuların dilediğinde açıp kapatabilmesi için Oyun Seçenekleri (Aç/Kapat) ayarını ekledim. Oyuncularımdan vuruş hissiyatı konusunda çok olumlu geri dönüşler almıştım.
Hem konuyu güncellemek hem de arayan arkadaşlar için derli toplu bir kaynak olması adına sistemin bu halini paylaşıyorum.
Kodları olabildiğince temiz ve #define kontrollü hazırladım, adımları takip ederek sorunsuzca ekleyebilirsiniz. Geri bildirimlerinizi bekliyorum
1. Client Source
UserInterface/Locale_inc.h açılır ve uygun bir yere eklenir:
UserInterface/InstanceBase.h açılır:
Aratılır:
Altına eklenir:
UserInterface/InstanceBaseEffect.cpp açılır:
UserInterface/PythonCharacterManagerModule.cpp açılır:
Aratılır:
Altına eklenir:
UserInterface/PythonApplicationModule.cpp açılır:
En alta (`}` öncesine) eklenir:
UserInterface/PythonSystem.h açılır:
Aratılır:
Altına eklenir:
Tekrar aratılır:
Altına eklenir:
UserInterface/PythonSystem.cpp açılır:
UserInterface/PythonSystemModule.cpp açılır:
2. Pack (root)
root/playersettingmodule.py açılır:
Aratılır:
Değiştirilir:
Tekrar aratılır:
Altına eklenir:
root/uigameoption.py açılır:
Aratılır (`__Initialize` içinde):
Altına eklenir:
Tekrar aratılır (`__Load_BindObject` içinde):
Altına eklenir:
Tekrar aratılır (`__Load` içinde):
Altına eklenir:
Tekrar aratılır:
Altına eklenir:
root/uiscript/gameoptiondialog.py açılır:
Dosyanın en altına eklenir:
3. Pack (effect)
Aşağıdaki efekt ve görsel dosyaları ilgili klasörlere atılır:
Özel Görsel (.tga / .dds) Değiştirme Notu:
flame_custom_weapon.mse açılır ve aratılır:
4. Bonus: Elektrik Efektini Kırmızı - Mavi (İki Renkli) Yapma
Elektrik efektinin (
1. Group Particle (Orta Gövde - Mor Geçiş):
2. Group Particle (Kılıç/Bıçak Ucu - Neon Mavi):
3. Group Particle (Kabza / Dip Kısım - Alev Kırmızısı):
Sistemi aslında geçen sene forumda @Kaptan Yosun hocamızın açtığı Hava Kılıcı İçin Alevli Savrulma İzi konusunda görmüştüm. Kendisine öncelikle bu güzel paylaşım için teşekkür ederim.
Ben bu yapıyı geçen sene kendi serverimde kullanırken biraz daha geliştirdim, sadece Hava Kılıcı ile sınırlı bırakmayıp genel bir düz vuruş sistemi haline getirdim. Sura ve Savaşçı için elektrik aurasını, Ninja için çift bıçağa oturan özel boyutlu efektleri ve oyuncuların dilediğinde açıp kapatabilmesi için Oyun Seçenekleri (Aç/Kapat) ayarını ekledim. Oyuncularımdan vuruş hissiyatı konusunda çok olumlu geri dönüşler almıştım.
Hem konuyu güncellemek hem de arayan arkadaşlar için derli toplu bir kaynak olması adına sistemin bu halini paylaşıyorum.
Kodları olabildiğince temiz ve #define kontrollü hazırladım, adımları takip ederek sorunsuzca ekleyebilirsiniz. Geri bildirimlerinizi bekliyorum

1. Client Source
UserInterface/Locale_inc.h açılır ve uygun bir yere eklenir:
C++:
#define ENABLE_AUTO_ATTACK_EFFECT
#ifdef ENABLE_AUTO_ATTACK_EFFECT
// #define ENABLE_AUTO_ATTACK_EFFECT_WARRIOR_ELECTRIC // Aktif edilirse Savasci da elektrik efekti kullanir (Kapaliysa ates efekti)
#define ENABLE_AUTO_ATTACK_EFFECT_ASSASSIN_ELECTRIC // Aktif edilirse Ninja duz vuruslarinda elektrik efekti cikar
#endif
UserInterface/InstanceBase.h açılır:
Aratılır:
C++:
EFFECT_ELECTRIC_ATTACK,
EFFECT_ELECTRIC_HIT,
EFFECT_ELECTRIC_ATTACH,
Altına eklenir:
C++:
#ifdef ENABLE_AUTO_ATTACK_EFFECT_ASSASSIN_ELECTRIC
EFFECT_ELECTRIC_DAGGER,
#endif
UserInterface/InstanceBaseEffect.cpp açılır:
Burayı görüntülemek için üye girişi yapmalı veya kayıt olmalısınız.
UserInterface/PythonCharacterManagerModule.cpp açılır:
Aratılır:
C++:
PyModule_AddIntConstant(poModule, "EFFECT_ELECTRIC_ATTACH", CInstanceBase::EFFECT_ELECTRIC_ATTACH);
Altına eklenir:
C++:
#ifdef ENABLE_AUTO_ATTACK_EFFECT_ASSASSIN_ELECTRIC
PyModule_AddIntConstant(poModule, "EFFECT_ELECTRIC_DAGGER", CInstanceBase::EFFECT_ELECTRIC_DAGGER);
#endif
UserInterface/PythonApplicationModule.cpp açılır:
En alta (`}` öncesine) eklenir:
C++:
#ifdef ENABLE_AUTO_ATTACK_EFFECT
PyModule_AddIntConstant(poModule, "ENABLE_AUTO_ATTACK_EFFECT", 1);
#else
PyModule_AddIntConstant(poModule, "ENABLE_AUTO_ATTACK_EFFECT", 0);
#endif
UserInterface/PythonSystem.h açılır:
Aratılır:
C++:
bool bShowSalesText;
Altına eklenir:
C++:
#ifdef ENABLE_AUTO_ATTACK_EFFECT
bool bAutoAttackEffect;
#endif
Tekrar aratılır:
C++:
void SetShowSalesTextFlag(int iFlag);
Altına eklenir:
C++:
#ifdef ENABLE_AUTO_ATTACK_EFFECT
void SetAutoAttackEffect(bool enabled);
bool GetAutoAttackEffect() const;
#endif
UserInterface/PythonSystem.cpp açılır:
Burayı görüntülemek için üye girişi yapmalı veya kayıt olmalısınız.
UserInterface/PythonSystemModule.cpp açılır:
Burayı görüntülemek için üye girişi yapmalı veya kayıt olmalısınız.
2. Pack (root)
root/playersettingmodule.py açılır:
Aratılır:
Python:
chrmgr.RegisterEffect(chrmgr.EFFECT_FLAME_ATTACK, "equip_right_hand", "d:/ymir work/effect/hit/blow_flame/flame_3_weapon.mse")
Değiştirilir:
Python:
if app.ENABLE_AUTO_ATTACK_EFFECT:
chrmgr.RegisterEffect(chrmgr.EFFECT_FLAME_ATTACK, "equip_right_hand", "d:/ymir work/effect/hit/blow_flame/flame_custom_weapon.mse")
else:
chrmgr.RegisterEffect(chrmgr.EFFECT_FLAME_ATTACK, "equip_right_hand", "d:/ymir work/effect/hit/blow_flame/flame_3_weapon.mse")
Tekrar aratılır:
Python:
chrmgr.RegisterEffect(chrmgr.EFFECT_ELECTRIC_ATTACH, "", "d:/ymir work/effect/hit/blow_electric/light_1_body.mse")
Altına eklenir:
Python:
if app.ENABLE_AUTO_ATTACK_EFFECT and hasattr(chrmgr, "EFFECT_ELECTRIC_DAGGER"):
chrmgr.RegisterEffect(chrmgr.EFFECT_ELECTRIC_DAGGER, "PART_WEAPON", "d:/ymir work/effect/hit/blow_electric/light_1_dagger.mse")
root/uigameoption.py açılır:
Aratılır (`__Initialize` içinde):
Python:
self.showsalesTextButtonList = []
Altına eklenir:
Python:
if app.ENABLE_AUTO_ATTACK_EFFECT:
self.autoAttackEffectButtonList = []
Tekrar aratılır (`__Load_BindObject` içinde):
Python:
self.showsalesTextButtonList.append(GetObject("salestext_off_button"))
Altına eklenir:
Python:
if app.ENABLE_AUTO_ATTACK_EFFECT:
self.autoAttackEffectButtonList.append(GetObject("auto_attack_effect_off"))
self.autoAttackEffectButtonList.append(GetObject("auto_attack_effect_on"))
Tekrar aratılır (`__Load` içinde):
Python:
self.showsalesTextButtonList[1].SAFE_SetEvent(self.__OnClickSalesTextOffButton)
Altına eklenir:
Python:
if app.ENABLE_AUTO_ATTACK_EFFECT:
self.autoAttackEffectButtonList[0].SAFE_SetEvent(self.__OnClickAutoAttackEffectOff)
self.autoAttackEffectButtonList[1].SAFE_SetEvent(self.__OnClickAutoAttackEffectOn)
self.RefreshAutoAttackEffect()
Tekrar aratılır:
Python:
def __OnClickSalesTextOffButton(self):
systemSetting.SetShowSalesTextFlag(False)
self.RefreshShowSalesText()
Altına eklenir:
Python:
if app.ENABLE_AUTO_ATTACK_EFFECT:
def __SetAutoAttackEffect(self, enabled):
systemSetting.SetAutoAttackEffect(enabled)
self.RefreshAutoAttackEffect()
systemSetting.SaveConfig()
def __OnClickAutoAttackEffectOn(self):
self.__SetAutoAttackEffect(1)
def __OnClickAutoAttackEffectOff(self):
self.__SetAutoAttackEffect(0)
def RefreshAutoAttackEffect(self):
if systemSetting.GetAutoAttackEffect():
self.autoAttackEffectButtonList[0].SetUp()
self.autoAttackEffectButtonList[1].Down()
else:
self.autoAttackEffectButtonList[0].Down()
self.autoAttackEffectButtonList[1].SetUp()
root/uiscript/gameoptiondialog.py açılır:
Dosyanın en altına eklenir:
Python:
if app.ENABLE_AUTO_ATTACK_EFFECT:
window["height"] = 25*14+8
board = window["children"][0]
board["height"] = 25*14+8
board["children"] += (
{
"name" : "auto_attack_effect_label", "type" : "text",
"x" : LINE_LABEL_X, "y" : 315+2,
"text" : getattr(uiScriptLocale, "OPTION_AUTO_ATTACK_EFFECT", "Saldiri Efekti"),
},
{
"name" : "auto_attack_effect_on", "type" : "radio_button",
"x" : LINE_DATA_X, "y" : 315, "text" : "Acik",
"default_image" : ROOT_PATH + "middle_button_01.sub",
"over_image" : ROOT_PATH + "middle_button_02.sub",
"down_image" : ROOT_PATH + "middle_button_03.sub",
},
{
"name" : "auto_attack_effect_off", "type" : "radio_button",
"x" : LINE_DATA_X+MIDDLE_BUTTON_WIDTH, "y" : 315, "text" : "Kapali",
"default_image" : ROOT_PATH + "middle_button_01.sub",
"over_image" : ROOT_PATH + "middle_button_02.sub",
"down_image" : ROOT_PATH + "middle_button_03.sub",
},
)
3. Pack (effect)
Aşağıdaki efekt ve görsel dosyaları ilgili klasörlere atılır:
d:/ymir work/effect/hit/blow_flame/flame_custom_weapon.msed:/ymir work/effect/hit/blow_flame/lunar_weapon_flame.tgad:/ymir work/effect/hit/blow_electric/light_1_weapon.msed:/ymir work/effect/hit/blow_electric/light_1_dagger.mse
Özel Görsel (.tga / .dds) Değiştirme Notu:
flame_custom_weapon.mse dosyası, kendi özel alev görselini d:/ymir work/effect/hit/blow_flame/ klasörü içerisindeki lunar_weapon_flame.tga dosyasından çeker. Dilerseniz kendi .tga veya .dds efekt görselinizi aynı klasöre atıp flame_custom_weapon.mse içerisindeki şu kısımdan çağırabilirsiniz:flame_custom_weapon.mse açılır ve aratılır:
Kod:
List TextureFiles
{
"lunar_weapon_flame.tga"
}
"lunar_weapon_flame.tga" yerine kendi görselinizin adı yazılır.4. Bonus: Elektrik Efektini Kırmızı - Mavi (İki Renkli) Yapma
Elektrik efektinin (
light_1_dagger.mse veya light_1_weapon.mse) kılıç/hançer üzerinde Kırmızı - Mor - Mavi geçişli görünmesi için .mse dosyasındaki 3 partikül grubunun renk kodlarını şu şekilde değiştirebilirsiniz:1. Group Particle (Orta Gövde - Mor Geçiş):
Kod:
List TimeEventColorRed
{
0.000000 0.850000
}
List TimeEventColorGreen
{
0.000000 0.200000
}
List TimeEventColorBlue
{
0.000000 0.950000
}
2. Group Particle (Kılıç/Bıçak Ucu - Neon Mavi):
Kod:
List TimeEventColorRed
{
0.000000 0.100000
}
List TimeEventColorGreen
{
0.000000 0.800000
}
List TimeEventColorBlue
{
0.000000 1.000000
}
3. Group Particle (Kabza / Dip Kısım - Alev Kırmızısı):
Kod:
List TimeEventColorRed
{
0.000000 1.000000
}
List TimeEventColorGreen
{
0.000000 0.150000
}
List TimeEventColorBlue
{
0.000000 0.150000
}