Yardım GreatShop Edit Mod Hatası

Konu sahibi bu konuda soru soruyor. Sorusu ile ilgili bilgisi olanların yanıtlamasını bekliyor.

brave

Üye
Üye
Mesaj
115
Çözümler
5
Beğeni
25
Puan
479
Ticaret Puanı
0
Great Shop'ta edit modunu cmd_general.cpp'de düzenledim. Fakat şöyle sorunlar mevcut:

1. Pazarı kurduktan sonra düzenleme penceresini açtığımda pazardaki itemler gözükmüyor. Fakat düzenleme penceresi ile item ekleyebiliyorum ve eklediğim itemler gözüküyor.

2. İtem kaldıramıyorum. Kaldırdığım şu syserr'i veriyor.
Kod:
0827 18:48:07158 :: Traceback (most recent call last):

0827 18:48:07158 ::   File "ui.py", line 1573, in CallEvent

0827 18:48:07158 ::   File "uinewshop.py", line 823, in <lambda>

0827 18:48:07158 ::   File "uinewshop.py", line 829, in AcceptRemoveItem

0827 18:48:07158 :: KeyError
0827 18:48:07158 :: :
0827 18:48:07158 :: 'id'
0827 18:48:07158 ::



Bu konu hakkında yardımcı olabilir misiniz?


829. satır:
Python:
net.SendChatPacket("/update_shop_item remove|"+str(self.id)+"|"+str(self.items[int(slot)]["id"]))

satırdaki def'in tam hali:
Python:
    def AcceptRemoveItem(self,slot):
        if int(slot) in self.items.keys():
            snd.PlaySound("sound/ui/drop.wav")
            net.SendChatPacket("/update_shop_item remove|"+str(self.id)+"|"+str(self.items[int(slot)]["id"]))
            #self.ItemSlot.DeactivateSlot(int(slot))
            del self.items[int(slot)]
        self.Refresh()
    
        self.__OnClosePopupDialog()
 
En son bir moderatör tarafından düzenlenmiş:
Dostum ilk olarak biraz Türkçe'ni düzeltmeni öneririm. Düzenlediğim dediğin yerleri eski haline getirirsen bir şey kalmaz. Senin düzenledim demen muhtemelen kafana göre düzenlemekten geçiyor. Bir bilgi sahibi olmadan yada az veya çok yorumlayamadan kafana göre düzenlemeye çalışmamanı öneririm.
 
Dostum ilk olarak biraz Türkçe'ni düzeltmeni öneririm. Düzenlediğim dediğin yerleri eski haline getirirsen bir şey kalmaz. Senin düzenledim demen muhtemelen kafana göre düzenlemekten geçiyor. Bir bilgi sahibi olmadan yada az veya çok yorumlayamadan kafana göre düzenlemeye çalışmamanı öneririm.

Elimdeki dosyaların eski halini ve yapılan değişiklikleri bilmeden bu yorumu yapmanız evet sizi çok bilgili yapıyor. Oturup sıfırdan bir şey yazmadım cmd_general'de veyahut kafama göre bir şeyi değiştirdim demedim sadece düzenledim dedim. ve gayet Türkçe'ye uygun olarak yazdım yukarıda. Sadece "koyup" yerine "koyum" yazmışım yanlışlıkla. Takıldığın yer orası ise orayıda düzenledim şimdi.

Eski halinde ACMD(do_shop_update) içindekiler kopyalanıp ACMD(do_shop_update_item) içine yazılmıştı. Bunun yerine Turkmmo'da Great Shop Final dosyaları adlı konudaki ACMD(do_shop_update_item) içeriğini aldım ve bendekiyle değiştirdim.

Bakın tekrar yazıyorum DEĞİŞTİRDİM.
Düzenlemek nedir ne değildir öncelikle bunu araştırın. Eğer Türkçe sorunu olan sizseniz farklı dil ile iletişimde kurabiliriz:
 
Elimdeki dosyaların eski halini ve yapılan değişiklikleri bilmeden bu yorumu yapmanız evet sizi çok bilgili yapıyor. Oturup sıfırdan bir şey yazmadım cmd_general'de veyahut kafama göre bir şeyi değiştirdim demedim sadece düzenledim dedim. ve gayet Türkçe'ye uygun olarak yazdım yukarıda. Sadece "koyup" yerine "koyum" yazmışım yanlışlıkla. Takıldığın yer orası ise orayıda düzenledim şimdi.

Eski halinde ACMD(do_shop_update) içindekiler kopyalanıp ACMD(do_shop_update_item) içine yazılmıştı. Bunun yerine Turkmmo'da Great Shop Final dosyaları adlı konudaki ACMD(do_shop_update_item) içeriğini aldım ve bendekiyle değiştirdim.

Bakın tekrar yazıyorum DEĞİŞTİRDİM.
Düzenlemek nedir ne değildir öncelikle bunu araştırın. Eğer Türkçe sorunu olan sizseniz farklı dil ile iletişimde kurabiliriz:

Ben bilgiliyim demiyorum ama sen öyle algılamak istiyorsan algılayabilirsin.

"1- Pazara item koyup pazarı açtıktan sonra edit penceresini açtıgımda pazardaki itemler pencerede gözükmüyor. Ama edit penceresi ile item ekleyebiliyorum sonradan. Ve sonradan eklediğim item gözüküyor."

Başlı başına Türkçe özürlülüğü içeriyor.

Bir yardım da almak istiyorsan o syserr'lerin hepsini koymanda fayda var. Yarım Türkçe bilgin gibi yarım konu açma.

C++:
net.SendChatPacket("/update_shop_item remove|"+str(self.id)+"|"+str(self.items[int(slot)]["id"]))

Bu kısmı da şu şekilde düzelt;

C++:
net.SendChatPacket("/update_shop_item remove|"+str(self.id)+"|"+str(self.items[int(slot)][id]))
 
self.items[int(slot)] içeriği boş geldiği için key hatası verebilir. Dizi içerisinde id yok diyor. Gelen verileri kontrol etmeniz gerekiyor.
Birde konuda cmd_general.cpp'yi düzenledim demişsiniz. Eğer düzenlemelerden sonra bu sorun oluştuysa eski haline geri getirebilirsiniz.

1. sorun ile ilgili bende soru sormak istiyorum.
İtemler gözükmüyor demişsiniz ancak pazardaki itemler bir şekilde mevcut. Mevcut olan item yuvasına yeni bir tane eklenebilir mu? Teorik olarak eklenmemesi lazım. Eğer eklenmiyorsa sorun dediğim gibi gelen veriden kaynaklı olabilir.
 
Ben bilgiliyim demiyorum ama sen öyle algılamak istiyorsan algılayabilirsin.

"1- Pazara item koyup pazarı açtıktan sonra edit penceresini açtıgımda pazardaki itemler pencerede gözükmüyor. Ama edit penceresi ile item ekleyebiliyorum sonradan. Ve sonradan eklediğim item gözüküyor."

Başlı başına Türkçe özürlülüğü içeriyor.

Bir yardım da almak istiyorsan o syserr'lerin hepsini koymanda fayda var. Yarım Türkçe bilgin gibi yarım konu açma.

C++:
net.SendChatPacket("/update_shop_item remove|"+str(self.id)+"|"+str(self.items[int(slot)]["id"]))

Bu kısmı da şu şekilde düzelt;

C++:
net.SendChatPacket("/update_shop_item remove|"+str(self.id)+"|"+str(self.items[int(slot)][id]))

Öncelikle seni tanımam etmem. Bilgin ne düzeyde bilmiyorum. Sana bilgilisin demiyorum bilgisizsin de demiyorum. Aynı şekilde kendime de bilgiliyim demiyorum. Sadece bir konuda hata aldım ve yardım konusu açtım forumun amacı bu değil midir sayın @Whistle ?

Yukarıda bazı hafif yazım hataları yapmış olabilirim. Yazdığım hiçbir kelime büyük bir anlam kaybına sebebiyet vermiyor. Bazı durumlarda ek bilgi için bazı yerler anlaşılmıyorsa daha açıklayıcı bir cümle isteyebilirsin. Kimse burada TDK'nin dil kurallarına birebir uymuyor. Yabancı forumlarda yabancı dillerde de aynısı mevcut. Emin olun oturup açtığınız önceki konulara ve mesajlara baksam çok rahat sizin yazım hatalarınızı da bulurum. Eğer yardımcı olmak istiyorsan memnuniyet duyar teşekkür ederim fakat sırf mesaj yazmak için mesaj yazmayın.

Konuyu tam anlamadan içeriğini bilmeden yorum yapıyorsun sadece. ACMD içeriğinde ne değiştirdiğimi sormadan laf ettiğin gibi bu sefer neden tüm syserrları koymadın demişsin. Eğer yukarıdaki syserrdan başka syserr olsaydı koyardım zaten. Ama ne yazık ki yok.

Bu arada önerinizi denedim bu sefer bunu aldım.:

0827 22:47:55227 :: KeyError
0827 22:47:55227 :: :
0827 22:47:55227 :: <built-in function id>
0827 22:47:55227 ::


self.items[int(slot)] içeriği boş geldiği için key hatası verebilir. Dizi içerisinde id yok diyor. Gelen verileri kontrol etmeniz gerekiyor.
Birde konuda cmd_general.cpp'yi düzenledim demişsiniz. Eğer düzenlemelerden sonra bu sorun oluştuysa eski haline geri getirebilirsiniz.

1. sorun ile ilgili bende soru sormak istiyorum.
İtemler gözükmüyor demişsiniz ancak pazardaki itemler bir şekilde mevcut. Mevcut olan item yuvasına yeni bir tane eklenebilir mu? Teorik olarak eklenmemesi lazım. Eğer eklenmiyorsa sorun dediğim gibi gelen veriden kaynaklı olabilir.

Filesi alt yapıdan beri ben geliştirmiyorum. Offlineshop daha öncesinde de vardı ben eklemedim yani. Ekleyen kişi sanırım edit kısmını kapatmak için ACMD(do_shop_update) içinde yazanları kopyalayıp ACMD(do_shop_update_item) içine yapıştırmış. Bu yüzden çalışmıyordu.

Pazarı açtığımda sorunsuz bir şekilde açılıyor. Pazarlara bakarken itemler gözüküyor. Ama "edit" sekmesinden baktığımda pazarı açarken konulan itemler orada gözükmüyor. Onları dahil etmiyor yani garip bir şekilde. "Edit" sekmesinden sorunsuz bir şekilde sonradan item ekleyebiliyorum. Sonradan eklediklerim gözüküyor. Ama item kaldıramıyorum.
 
id adında yerel bir değişkenimiz olmadığı için mecbur 'id' olarak kullanmak zorunda kalıyoruz, hmm. Bu da yerleşik tanım hatası veriyor. Sadece kimlik bilgisini ilettiğimizde, anahtar değişken kimlikte hangi bilgi varsa o olmasını istediğimizi söylüyoruz ama yemiyor. Bizden bir dize istediği için tırnak işareti koymak şart. Muhtemelen sorunun hata verdiği yerde değil. O yüzden ondan önce ki call komutunun kod bloğunu atsan daha iyi olur.

Değiştirdiğin yeri de altta ki şekilde tekrar değiştirebilirsin.

C++:
net.SendChatPacket("/update_shop_item remove|"+str(self.id)+"|"+str(self.items[int(slot)]['id']))
 
cmd_general ve cmd.cpp dosyanı ekler misin?
 
İtem ekleme ile item kaldırmanın kodlarının hemen hemen aynı mantıkta çalışıyor olması gerekiyor. Biraz karşılaştırma yaparak ve mantık yürüterek eklerken neden key error 'id' vermeyip, çıkartırken neden verdiğine bakabilir misin?
 
Aynı şekilde kendime de bilgiliyim demiyorum. Sadece bir konuda hata aldım ve yardım konusu açtım forumun amacı bu değil midir sayın @Whistle ?
Açıkçası bende zar zor anlayabildim. Soru-cevap konularında mümkün olduğunca düzgün cümleler kurulmalı ki yardımcı olmak isteyen soruyu anlayıp yardım edebilsin... Konunuzu düzenlemiştim. Düzenleme bildirimi gelmiş olması lazım. Forumun amacı bildiklerimizi paylaşmak, yeni insanlar tanımak, yardımcı olmak, ortak amaç uğruna bir araya gelip bir şeyler ortaya çıkartmak vs.

Filesi alt yapıdan beri ben geliştirmiyorum. Offlineshop daha öncesinde de vardı ben eklemedim yani. Ekleyen kişi sanırım edit kısmını kapatmak için ACMD(do_shop_update) içinde yazanları kopyalayıp ACMD(do_shop_update_item) içine yapıştırmış. Bu yüzden çalışmıyordu.

Pazarı açtığımda sorunsuz bir şekilde açılıyor. Pazarlara bakarken itemler gözüküyor. Ama "edit" sekmesinden baktığımda pazarı açarken konulan itemler orada gözükmüyor. Onları dahil etmiyor yani garip bir şekilde. "Edit" sekmesinden sorunsuz bir şekilde sonradan item ekleyebiliyorum. Sonradan eklediklerim gözüküyor. Ama item kaldıramıyorum.
Kodları görmeden bir şey demek zor. Zaten @Trashy dosyaları ekleyin demiş. Syserr hatası ile ilgili zaten yorumumu yaptım. Veri gelmediği için bu sorun olabilir.
self.items bu değişkene verileri ekleyen python kodları nedir?
 
cmd_general ve cmd.cpp dosyanı ekler misin?
Açıkçası bende zar zor anlayabildim. Soru-cevap konularında mümkün olduğunca düzgün cümleler kurulmalı ki yardımcı olmak isteyen soruyu anlayıp yardım edebilsin... Konunuzu düzenlemiştim. Düzenleme bildirimi gelmiş olması lazım. Forumun amacı bildiklerimizi paylaşmak, yeni insanlar tanımak, yardımcı olmak, ortak amaç uğruna bir araya gelip bir şeyler ortaya çıkartmak vs.


Kodları görmeden bir şey demek zor. Zaten @Trashy dosyaları ekleyin demiş. Syserr hatası ile ilgili zaten yorumumu yaptım. Veri gelmediği için bu sorun olabilir.
self.items bu değişkene verileri ekleyen python kodları nedir?

uinewshop.py, cmd.cpp ve cmd_general.cpp ' mevcut içerisinde
 
Son düzenleme:
Python:
    def OnUpdate(self):
        if self.IsShow() and self.lastUpdate < app.GetGlobalTime():
            self.lastUpdate=app.GetGlobalTime()+1000
            if int(self.id)>0:              
                net.SendChatPacket("/update_shop_item edit_tick|"+self.id)

şu şekilde düzenleme yapıp dener misin? Birde bu yaptıklarını gm çar ile yapıyorsun sanırım yetkilerin hepsi GM_IMPLEMENTOR olarak ayarlı.
 
Python:
    def OnUpdate(self):
        if self.IsShow() and self.lastUpdate < app.GetGlobalTime():
            self.lastUpdate=app.GetGlobalTime()+1000
            if int(self.id)>0:             
                net.SendChatPacket("/update_shop_item edit_tick|"+self.id)

şu şekilde düzenleme yapıp dener misin? Birde bu yaptıklarını gm çar ile yapıyorsun sanırım yetkilerin hepsi GM_IMPLEMENTOR olarak ayarlı.

Bendeki OnUpdate ile aynıydı yinede denedim ama değişen bir şey olmadı.
Bu arada farklı bir filesten class ShopEditWindow(ui.ScriptWindow): alıp denedim yine aynı hata çıkıyor.
 
Bendeki OnUpdate ile aynıydı yinede denedim ama değişen bir şey olmadı.
Bu arada farklı bir filesten class ShopEditWindow(ui.ScriptWindow): alıp denedim yine aynı hata çıkıyor.
Bize yanlış dosyayı verdin o zaman çünkü attığın dosyada şu şekilde ayarlı
Python:
    def OnUpdate(self):
        if self.lastUpdate < app.GetGlobalTime():
            self.lastUpdate=app.GetGlobalTime()+10000
            if int(self.id)>0:
                net.SendChatPacket("/refresh_shop_items "+str(self.id))
 
Bize yanlış dosyayı verdin o zaman çünkü attığın dosyada şu şekilde ayarlı
Python:
    def OnUpdate(self):
        if self.lastUpdate < app.GetGlobalTime():
            self.lastUpdate=app.GetGlobalTime()+10000
            if int(self.id)>0:
                net.SendChatPacket("/refresh_shop_items "+str(self.id))

Özür dilerim tekrar kontrol ettim sendpacket kısmı farklıymış. Dün değişim yaparken onun farklı olduğunu görmemişim.
 
Geri
Üst