Çözüldü Defined&İnclude Olayları ile ilgili bir sorun.

Bu konu çözüme ulaştırılmıştır. Çözüm için konuya yazılan tüm yorumları okumayı unutmayın. Eğer konudaki yorumlar sorununuzu çözmediyse yeni bir konu açabilirsiniz.

karew1

MT Üye
MT Üye
Mesaj
150
Çözümler
1
Beğeni
91
Puan
689
Merhabalar,

Biliyorsunuz bu işlerde yeni sayılırım beynimi yakan bir sorun var kimine göre kolay kimine göre zor bana göre beyin yaktı :)

" Efekt verme sistemi " eklemeye çalışıyorum...
kodları aynı şekilde düzgün dikkat ederek ekledim fakat sanırım define&İnclude işlemlerini yapmadım/yapamadım...

Tam olarak nasıl yapılır tanımlanır mı? eklenir mi? hiç bilmiyorum. { Zerre kadar Fikrim yok :disney-is-frozen18: }

Yani işin kısası bu define/İnclude işlemleri nedir ? ne işe yarar ? nasıl yazılır ? nereye tanımlanır ? hiç bir bilgim yok :(

Bu arada Sistemi konuya dahil ediyorum.

Aldığım hataya geçelim :

Client Debug syserr:
playerSettingModule.py(line:1420) LoadGameData
playerSettingModule.py(line:400) __LoadGameEffect

LoadGameData - exceptions.NameError:global name 'AFFECT_YELLOW' is not defined

0903 01:15:21890 :: ============================================================================================================
0903 01:15:21890 :: Abort!!!!


0903 01:15:21893 ::  !!! Failed to load game data : STEP [40]
0903 01:15:21968 :: granny_shared_vbs:
0903 01:15:21969 ::     0: 40
0903 01:15:21971 ::     1: 20
0903 01:15:21973 ::     2: 20
0903 01:15:21974 ::     3: 40
0903 01:15:21975 ::     4: 3
0903 01:15:21976 ::     5: 20
0903 01:15:21977 ::     6: 0
0903 01:15:21978 ::     7: 0
0903 01:15:21978 ::     8: 0

Anlıyorum " LoadGameData - exceptions.NameError:global name 'AFFECT_YELLOW' is not defined " Arkadaşım sen AFFECT_YELLOW'u define olarak eklememişsin diyor fakat nereye nasıl ekleyeceğim bilmediğim için birde size sorayım dedim :)

Eklediğim bölümler :

root/playersettingmodule.py:
    ## 34 Polymoph
    chrmgr.RegisterEffect(chrmgr.EFFECT_AFFECT+35, "", "d:/ymir work/effect/etc/guild_war_flag/flag_red.mse")
    chrmgr.RegisterEffect(chrmgr.EFFECT_AFFECT+36, "", "d:/ymir work/effect/etc/guild_war_flag/flag_blue.mse")
    chrmgr.RegisterEffect(chrmgr.EFFECT_AFFECT+37, "", "d:/ymir work/effect/etc/guild_war_flag/flag_yellow.mse")

    chrmgr.RegisterEffect(chrmgr.EFFECT_AFFECT + [AFFECT_YELLOW], "Bip01", "D:/ymir work/pc/common/effect/armor/umutk_parlama_col_efekti_sari.mse")
    chrmgr.RegisterEffect(chrmgr.EFFECT_AFFECT + [AFFECT_BROWN], "Bip01", "D:/ymir work/pc/common/effect/armor/umutk_parlama_col_efekti_kahverengi.mse")
    chrmgr.RegisterEffect(chrmgr.EFFECT_AFFECT + [AFFECT_GREY], "Bip01", "D:/ymir work/pc/common/effect/armor/umutk_parlama_col_efekti_gri.mse")
    chrmgr.RegisterEffect(chrmgr.EFFECT_AFFECT + [AFFECT_ORANGE], "Bip01", "D:/ymir work/pc/common/effect/armor/umutk_parlama_col_efekti_turuncu.mse")
    chrmgr.RegisterEffect(chrmgr.EFFECT_AFFECT + [AFFECT_PINK], "Bip01", "D:/ymir work/pc/common/effect/armor/umutk_parlama_col_efekti_pembe.mse")
    chrmgr.RegisterEffect(chrmgr.EFFECT_AFFECT + [AFFECT_PURPLE], "Bip01", "D:/ymir work/pc/common/effect/armor/umutk_parlama_col_efekti_mor.mse")
    chrmgr.RegisterEffect(chrmgr.EFFECT_AFFECT + [AFFECT_TURQUOISE], "Bip01", "D:/ymir work/pc/common/effect/armor/umutk_parlama_col_efekti_turkuaz.mse")
    chrmgr.RegisterEffect(chrmgr.EFFECT_AFFECT + [AFFECT_BLUE], "Bip01", "D:/ymir work/pc/common/effect/armor/umutk_parlama_col_efekti_mavi.mse")
    chrmgr.RegisterEffect(chrmgr.EFFECT_AFFECT + [AFFECT_RED], "Bip01", "D:/ymir work/pc/common/effect/armor/umutk_parlama_col_efekti_kirmizi.mse")

    chrmgr.RegisterEffect(chrmgr.EFFECT_REFINED+1, "PART_WEAPON", "D:/ymir work/pc/common/effect/sword/sword_7.mse")
    chrmgr.RegisterEffect(chrmgr.EFFECT_REFINED+2, "PART_WEAPON", "D:/ymir work/pc/common/effect/sword/sword_8.mse")
    chrmgr.RegisterEffect(chrmgr.EFFECT_REFINED+3, "PART_WEAPON", "D:/ymir work/pc/common/effect/sword/sword_9.mse")

Dosya içerisinde sıralamaya göre xx [ chrmgr.RegisterEffect(chrmgr.EFFECT_AFFECT + [xx], "Bip01", "D:/ymir work/pc/common/effect/armor/umutk_parlama_col_efekti_sari.mse") ] değerlerini düzenle demiş benim InstanceBase.h'de böyle :

InstanceBase.h:
            AFFECT_YELLOW,//xx
            AFFECT_BROWN,//xx
            AFFECT_GREY,//xx
            AFFECT_ORANGE,//xx
            AFFECT_PINK,//xx
            AFFECT_PURPLE,//xx
            AFFECT_TURQUOISE,//xx
            AFFECT_BLUE,//xx
            AFFECT_RED,//xx

bende buna dayanarak sıralamayı yukarıdaki gibi yaptım.
Ek olarak playersettingmodule.py import'larına " import uiinventory " ekledim.
( yinede bilginiz olsun tek buralar ile oynadım. )

Yardımlarınızı esirgemezseniz sevinirim. Özellikle @Whistle @Trashy @Yenicerii , Şimdiden teşekkürler...
Sonuçta Bilmemek Değil. Öğrenmemek Ayıptır :)


Saygılarımla.
 

Dosya Eklentileri

  • Efekt Verme Sistemi.rar
    158 KB · Gösterim: 23
Büyük ihtimalle eklerken bir şeyi eksik yapmış olabilirsiniz. Anlatımları dikkatlice uygulayın. Bir kac hafta önce aynı sistemi başka biri sorunsuzca syserr almadan kurmuştu.
Ayrıca define ve include konusuna yabancı olduğunuzu dusunerekten şunu belirtmek isterim, game src üzerinde değişiklik yaptığınızda build etmeniz gerekir.
 
Client kaynak kodlarında python’da kullanmak için fonksiyonlar ve defineler bulunuyor.
Define anlamı sabit demektir. İnsanoğlu sayıları aklında tutmaktan zorlanır bu yüzden daha akılda kalıcı olması için isimlendiririz.
Tabii ki tek faydası bu değil. Tek bir yerde tanımlı olduğu için değeri değiştirdiğiniz anda sabiti kullandığınız her yerde de otomatik olarak değişir.

İmport kısmına gelirsek. Başka bir dosyadaki kodları kullanmak için import ederiz.

Syserr hatasına göre AFFECT_YELLOW python modülü tanımlanmamış. Sonu module.cpp olarak biten dosyalarda tanımlanır. Yeni tanımladığınız sabitleri pythonda kullanmak için bu dosyada da tanımlamalısınız. :)
 
Önceki mesajıma ek olarak;
PythonCharacterManagerModule.cpp'de aratın;
C++:
PyModule_AddIntConstant(poModule, "EFFECT_AFFECT",                CInstanceBase::EFFECT_AFFECT);

Bu örnekte olduğu gibi yeni eklediğiniz sabitleri tanımlamanız gerekecek.
 
Büyük ihtimalle eklerken bir şeyi eksik yapmış olabilirsiniz. Anlatımları dikkatlice uygulayın. Bir kac hafta önce aynı sistemi başka biri sorunsuzca syserr almadan kurmuştu.
Ayrıca define ve include konusuna yabancı olduğunuzu dusunerekten şunu belirtmek isterim, game src üzerinde değişiklik yaptığınızda build etmeniz gerekir.

Teşekkürler. Aslında src build işlemlerinide yaptım :(


Client kaynak kodlarında python’da kullanmak için fonksiyonlar ve defineler bulunuyor.
Define anlamı sabit demektir. İnsanoğlu sayıları aklında tutmaktan zorlanır bu yüzden daha akılda kalıcı olması için isimlendiririz.
Tabii ki tek faydası bu değil. Tek bir yerde tanımlı olduğu için değeri değiştirdiğiniz anda sabiti kullandığınız her yerde de otomatik olarak değişir.

İmport kısmına gelirsek. Başka bir dosyadaki kodları kullanmak için import ederiz.

Syserr hatasına göre AFFECT_YELLOW python modülü tanımlanmamış. Sonu module.cpp olarak biten dosyalarda tanımlanır. Yeni tanımladığınız sabitleri pythonda kullanmak için bu dosyada da tanımlamalısınız. :)

Yanıtınız için teşekkürler.
1- yeni eklediğim bir sabiti nereye tanımlayacağımı nasıl anlarım ?
2. Misal PythonCharacterModule.cpp diyelim. Buraya sabiti tanımlarken en başa #define AFFECT_YELLOW şeklinde mi yazmalıyım yoksa ek bir kod mu yazacağım ?

Hem ben hem bakan bilmeyenler öğrensin :)
 
Pythonda ki import ile aynı görevi görüyor. C dillerinde #include ile alınıyor. O dosyadaki kodlara (fonksiyonlar vs) erişmek için.
:disney-is-frozen5:
 
Harika bir iş oldu valla :)

Aslında bahsettiğimiz kodların hepsini eklemiştim fakat Python dosyalarında yani root dosyalarımda " AFFECT_YELLOW " gibi sabitledim client/src deki int değerlerini almamışım :) kendi kendime denedim ve başardım buda bana büyük bir deneyim kattı :)

Yardımcı olan herkese teşekkürler :)

Sistemin videosu :



Çözüldü. Konu kilit pls :)
 
Son düzenleme:
Bu seferde dosya gözükmüyor diyor. Mesajınızı düzenleyerek güncel linki ekleyebilirsiniz. :D
 
En temizi. :) Eklediğiniz için teşekkürler. Her şey mükemmel olduğuna göre konuyu kilitleyebilirim.
 
Geri
Üst