Yardım EP Kuponu Syserr

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

Kaiser

Admin
Admin
Geliştirici
Yardımsever Üye
Mesaj
3.958
Çözümler
381
Beğeni
4.014
Puan
1.849
Ticaret Puanı
0
Arkadaşlar serverımda ep kuponlarını bir türlü çalıştıramadım. Şu an bir quest ile çalıştırmayı denedim, oyun içinde başarıyla aktarıldı yazıyor fakat ne envanterde ne de navicatta ep görünmüyor.

CH1 Syserr:

Kod:
Genişlet Daralt Kopyala
SYSERR: Jun  8 13:46:04.373562 :: pid_init:
Start of pid: 3415

SYSERR: Jun  8 13:47:04.564811 :: LoadSkillMotion: Motion: Skill exist but no motion data for index 0 mob 3596 skill 20
SYSERR: Jun  8 13:47:04.587098 :: LoadSkillMotion: Motion: Skill exist but no motion data for index 1 mob 3596 skill 25
SYSERR: Jun  8 13:47:07.648617 :: heart_idle: losing 60 seconds. (lag occured)
SYSERR: Jun  8 13:47:46.827520 :: RunState: LUA_ERROR: ...ale/turkey/quest/object/state/charge_cash_by_voucher:11: attempt to concatenate global `account' (a table value)
SYSERR: Jun  8 13:47:46.827578 :: WriteRunningStateToSyserr: LUA_ERROR: quest charge_cash_by_voucher.start click

Syserr de belirtilen quest dosyasının içeriği:

Lua (Quest):
Genişlet Daralt Kopyala
charge_cash_by_voucher={["start"]=0,charge= function (amount,charge_type)if charge_type == nil then
charge_type = "coins"
end
if 0 < amount then
local item_id = item . get_id ( )
char_log ( item_id , "CHARGE_CASH_BY_VOUCHER" , amount )
syschat ( string . format ( gameforge . charge_cash_by_voucher . _010_syschat , amount ) )
local flag_name = "total_" .. charge_type
pc . setqf ( flag_name , pc . getqf ( flag_name ) + amount )
item . remove ( )
mysql_query ( "UPDATE account.account SET coins=coins+'" .. count .. "' WHERE id='" .. account .. "'" )
end
return false
end }
 
Disleksi olmadığım halde kodları okuyamadım.
quest/charge_cash_by_voucher.lua içindeki tüm kodları ekler misiniz? :)
 
Tabi buyrun:

Lua (Quest):
Genişlet Daralt Kopyala
quest charge_cash_by_voucher begin
    state start begin
        function charge(amount, charge_type)
            if charge_type == nil then
                charge_type = "coins"
            end

            if 0 < amount then
                -- syntax : pc.charge_cash(amount, charge_type)
                -- warning:     1. 'charge_type' : "coins"(default) | "mileage"
                --            2. 'amount' must be positive number.
                local result = pc.charge_cash(amount, charge_type)

                if true == result then
                    local item_id = item.get_id()
                    char_log(item_id, "CHARGE_CASH_BY_VOUCHER", amount)
                    syschat(string.format(gameforge.charge_cash_by_voucher._010_syschat, amount))

                    local flag_name = "total_" .. charge_type
                    pc.setqf(flag_name, pc.getqf(flag_name) + amount)

                    item.remove()
                end
            end

            return false
        end
  
        when 80014.use or 80015.use or 80016.use or 80017.use begin
            local amount = item.get_value(0)

            charge_cash_by_voucher.charge(amount, "coins")
        end
    end
end
 
En son bir moderatör tarafından düzenlenmiş:
Yalnız derlenmiş quest ile bu quest arasında kod farkı var. Bu verdiğiniz quest orijinal. Bende bunu kullanıyorum.
./qc charge_cash_by_voucher.lua ile bu questi build ettiriniz.
 
Dediğinizi yaptım ch1 syserr gitti.
Db syserr de şu yazıyor:

Kod:
Genişlet Daralt Kopyala
SYSERR: Jun  8 15:14:21.852775 :: pid_init:
Start of pid: 3398

SYSERR: Jun  8 15:16:31.392903 :: ChargeCash: Request Charge (type : 0, amount : 50, aid : 9103)

Ama hala envantere ve veritabanına ep eklenmiyor. Account tablosunda coins sütunu 0, envanter de aynı şekilde.
 
Arat
Lua (Quest):
Genişlet Daralt Kopyala
pc.setqf(flag_name, pc.getqf(flag_name) + amount)

Altına ekle;
Lua (Quest):
Genişlet Daralt Kopyala
mysql_query ( "UPDATE account.account SET coins=coins+'" .. amount.. "' WHERE id='" .. pc.get_account_id().. "'" )
 
Oyun içinde başarıyla aktarıldı yazıyor yine, fakat hala yukarıda bahsettiğim gibi aktarılmıyor hiç bir yere.
Quest fonksiyonlarının çalışmama sorunu diye bir şey gördüm, onun da çözümü daha önceden uygulanmış zaten filesa. Niye olmuyor anlamadım
 
Sorunu çözdüm.
db/src/ClientManager.cpp içindeki

C++:
Genişlet Daralt Kopyala
sprintf(szQuery, "update account set `cash` = `cash` + %d where id = %d limit 1", packet->dwAmount, packet->dwAID);

cash leri coins olarak değiştirdim. Şu an tek sorun envanterdeki EP miktarı, karakter atınca güncelleniyor. Bunu anlık olarak yapabilir miyim?
 
uiinventory.py den yapılıyor sanırım. SHOP_SISTEM'den sonrasını ben ekledim, ep'e ait. Fakat coins=player.GetElk bölümünü en üstteki money'den aldım denemek için, ama yanlış olduğundan oyun içinde yine anlık olarak yenilenmiyor. Ep sistemi bir farklı eklenmiş files'a, orjinal COINS_SYSTEM olarak eklenmemiş.
coins=GetElk kısmını nasıl ep'e yönelik tanımlayabilirim acaba? Nerdeki değişkeni almam gerekiyor

C++:
Genişlet Daralt Kopyala
def RefreshStatus(self):
        money = player.GetElk()
        self.wndMoney.SetText(localeInfo.NumberToMoneyString2(money))
        if app.ENABLE_CHEQUE_SYSTEM:
            cheque = player.GetWon()
            self.wndCheque.SetText(localeInfo.NumberToMoneyString2(cheque))
            if app.ENABLE_SHOP_SISTEM:
                coins = player.GetElk()
                self.wndMds.SetText(localeInfo.NumberToMoneyString2(coins))
 
Yok bunlar değil. Oyunda itemshop için eklenen ep ve em değerleri oyun içine hafızada bile tutulmuyor. Çünkü ep ve em'leri web paneldeki itemshoptan kullanıyoruz. Yang ve Won'da olduğu gibi kaynak kodlarında düzenlemeler yapacak ep bilgisinin çağrılmasını sağlayabilirsiniz.

Adım adım şurayı şu şekilde değiştir diyemem çünkü daha önce yapmadığım bir şey var. Fakat oyuncu oyuna girerken bilgileri veritabanında alınır. Bu bilgileri alırken ep bilgisinide alıp hafızaya almak gerekiyor. Daha sonra bu veriyi game'ye göndermek gerekiyor. Kısacası biraz uğraştırıcı.

Bunun basit bi yolu daha vardı ama seneler önce Casro2 için uğraşırken yabancı bi forumda ep bilgisini direk alabilmek için bi düzenleme görmüştüm. Eğer bulabilirsem buraya linkini eklerim.
 
Üşenmesem bunla ilgili bi sistem yazıp paylaşabilirim. Ama siz uğraşın yinede oyunun mevcut kodlarına bakarak yapabilirsiniz.
 
Uğraşıyorum ancak dediğim gibi ekli olan EP sistemin official şekilde yüklenmemiş. Anlatımların çoğunu uygulayamıyorum dosya içeriğini bendekiyle karşılaştırdığımda xxx.cpp dosyalarının 1-2 tanesinde ep ile ilgili olması gereken kodlar yok. Son olarak mysql_query online serverlarda sunucuyu aşırı yoruyormuş, en sağlıklı biçimde EP sistemini nasıl ve nerden yükleyebilirim acaba? Eğer bir öneriniz var ise bendeki sistemi pasifleştirip onu sıfırdan yükleyeceğim.
 
Oyun içi EP'i niçin kullanacağınıza bağlı olan bir durum. Mesela yang gibi anlık ticarette kullanılacaksa won ve yang mantığında gitmek mantıklı. Ama sadece gözükmesini istiyorsanız mevcut sistem yeterli olabilir.

Zaten eğitim serisinin 6. ünitesinde itemshop sistemini kaynak kod destekli hale getirmeyi planlarken bu ep olayını da yazmayı düşünüyorum. Ama bunun için daha aylar var :)
 
Aslında oyun içi ticarette vs. EP düşünmüyorum. Sadece gösterme görevi olsa kafi. Ama bu seferde anlık görüntüleme eksikliği oluyor.
Linkleri görebilmek için giriş yap veya kayıt ol.
şu sistemi daha önce denediniz mi acaba? Eğer onayınızdan geçerse bunu kurmayı düşünüyorum, yoksa elimdekini hiç bozmayacağım farklı bir yoldan halletmeye çalışacağım artık.
 
Üst