Çözüldü Sayısal değeri noktalama olarak verme (Quest)

  • Konuyu açan Konuyu açan SinopLu57
  • Açılış Tarihi Açılış Tarihi
  • Yanıt Yanıt 4
  • Gösterim Gösterim 109
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.
Durum
İçerik kilitlendiği için mesaj gönderimine kapatıldı.

SinopLu57

Üye
Üye
Mesaj
76
Çözümler
2
Beğeni
64
Puan
699
Ticaret Puanı
0
Selam dostlar

damador isimli üyenin paylaşmış olduğu at görevi questinde düzenlemeler yapıyordum ve kafama takılan birşey oldu onu sormak istedim.

Paylaşılan kodun ufak bir kısmını buraya bırakıyorum

Python:
Genişlet Daralt Kopyala
quest horse_upgrades begin
    state start begin
        when 20349.chat." Atımı Geliştirmek İstiyorum. " begin
            local currentLevel = horse.get_level()
            local baseMoney = 1000000 -- İlk seviye için istenen minimum para miktarı
            local increasePerLevel = 1000000 -- Seviye başına istenen para miktarındaki artış miktarı
            local itemID = 50050 -- İlk seviye için istenen item ID'si
            local itemRequired = 1 + currentLevel -- Seviye başına istenen item miktarı
            local requiredMoney = baseMoney + increasePerLevel * currentLevel -- Seviyeye göre istenen para miktarını hesapla
            say_title("Seyis:")
            say("")
            say_reward("Atının mevcut seviyesi: " .. currentLevel)
            say("")
            if currentLevel == 30 then
                say_reward("Atınız maksimum seviyeye ulaşmış.")
                return
            end

9. satırdaki yang kodu dümdüz sayısal veriyor ben bunu 1.000, 10.000, 100.000, 1.000.000 şeklinde noktalama yaparak çekmesini istiyorum bu şekilde olması için nasıl bir düzenleme yapmam gerekiyor bilgisi olan arkadaşlar var ise yardımcı olabilir mi?

Düzenleme: Ek olarak şöyle birşey yazdırabilirmiyiz
Örnek;
Yang Miktarı: 50m 250k 100y
Noktalama yerine istenilen paranın yazı ile karşılığını ekrana yazdırabilirmiyiz.
 
Son düzenleme:
Çözüm
Kodu queste ekledim yada eklediğimi düşünüyorum, function kullanımlarını bilmediğim için mantıkla harekeket ederek ekledim ve hata aldım.

Quest Kodları::
Genişlet Daralt Kopyala
quest at_gelistirme begin
    state start begin
        when 20349.chat." Atımı Geliştirmek İstiyorum. " begin
            function format_number(number)
                local formatted = tostring(number)
                while true do
                    formatted, k = string.gsub(formatted, "^(-?%d+)(%d%d%d)", '%1.%2')
                    if k == 0 then
                        break
                    end
                end
                return formatted
            end
            local currentLevel = horse.get_level()
            local baseMoney = 1000000 -- İlk seviye için istenen...
Denemedim ama önceki yazdığım bir questte bu kısım çalışıyordu sanırım bir dene olmazsa bir daha bakalım,

Lua (Quest):
Genişlet Daralt Kopyala
function format_number(number)
    local formatted = tostring(number)
    while true do 
        formatted, k = string.gsub(formatted, "^(-?%d+)(%d%d%d)", '%1.%2')
        if k == 0 then
            break
        end
    end
    return formatted
end

Lua (Quest):
Genişlet Daralt Kopyala
            local requiredMoney = baseMoney + increasePerLevel * currentLevel -- Seviyeye göre istenen para miktarını hesapla
            
            -- Noktalama kısmı burası
            local formattedMoney = format_number(requiredMoney)
            
            say_title("Seyis:")
            say("")
            say_reward("Atının mevcut seviyesi: " .. currentLevel)
            say("")
            say_reward("Gereken yang miktarı: " .. formattedMoney)
            say("")
            if currentLevel == 30 then
                say_reward("Atınız maksimum seviyeye ulaşmış.")
 
Kodu queste ekledim yada eklediğimi düşünüyorum, function kullanımlarını bilmediğim için mantıkla harekeket ederek ekledim ve hata aldım.

Quest Kodları::
Genişlet Daralt Kopyala
quest at_gelistirme begin
    state start begin
        when 20349.chat." Atımı Geliştirmek İstiyorum. " begin
            function format_number(number)
                local formatted = tostring(number)
                while true do
                    formatted, k = string.gsub(formatted, "^(-?%d+)(%d%d%d)", '%1.%2')
                    if k == 0 then
                        break
                    end
                end
                return formatted
            end
            local currentLevel = horse.get_level()
            local baseMoney = 1000000 -- İlk seviye için istenen minimum para miktarı
            local increasePerLevel = 1000000 -- Seviye başına istenen para miktarındaki artış miktarı
            local itemID = 50050 -- İlk seviye için istenen item ID'si
            local itemRequired = 1 + currentLevel -- Seviye başına istenen item miktarı
            local requiredMoney = baseMoney + increasePerLevel * currentLevel -- Seviyeye göre istenen para miktarını hesapla
            local formattedMoney = format_number(requiredMoney)
            say_title("Seyis:")
            say("")
            say_reward("Atının mevcut seviyesi: " .. currentLevel)
            say("")
            if currentLevel == 30 then
                say_reward("Atınız maksimum seviyeye ulaşmış.")
                return
            end
            say_reward("Atını geliştirmek mi istiyorsun? ")
            say("")
            say_reward("Yang Miktarı: " .. requiredMoney)
            if currentLevel > 0 then
                say_reward("At Madalyonu: x" .. itemRequired)
            else
                say_reward("Geliştirmek için gereken At madalyonu: 1 adet")
            end
            say("")
            say_reward("Bu malzemelere sahip isen atını geliştirebilirim. ")
            say("")
            say_reward("Kabul Ediyor musun? ")
            say("")
            local answer = select("Evet", "Hayır")
            if answer == 1 then
                if currentLevel < 30 then
                    if pc.get_money() >= requiredMoney then
                        if pc.count_item(itemID) >= itemRequired then
                            pc.changemoney(-requiredMoney)
                            pc.removeitem(itemID, itemRequired) -- Itemi kaldır
                            horse.advance()
                            currentLevel = horse.get_level() -- Atın yeni seviyesini güncelle
                            say_title("Seyis:")
                            say_reward("Tebrikler! Atınız başarıyla geliştirildi.")
                            say_reward("Atınızın yeni seviyesi: " .. currentLevel)
                        else
                            say_title("Seyis:")
                            say_reward("Üzgünüm, yeterli miktarda At madalyonu yok.")
                            say_reward("Atını geliştirmek için gereken At madalyonunu topladıktan sonra geri gelin.")
                        end
                    else
                        say_title("Seyis:")
                        say("Üzgünüm, yeterli Yang yok.")
                        say("Atını geliştirmek için gereken Yangı topladıktan sonra geri gelin.")
                    end
                else
                    say_title("Seyis:")
                    say("Üzgünüm, atınızın maksimum seviyeye ulaşmış.")
                end
            else
                say_title("Seyis:")
                say("Anladım, belki daha sonra.")
            end
        end
    end
end

Putty üzerinden questi okuttuktan sonra aldığım mesaj görüntüsü:

123.webp


Sonuç ya kod çalışmıyor ya ben beceremedim :)
 
Kodu queste ekledim yada eklediğimi düşünüyorum, function kullanımlarını bilmediğim için mantıkla harekeket ederek ekledim ve hata aldım.

Quest Kodları::
Genişlet Daralt Kopyala
quest at_gelistirme begin
    state start begin
        when 20349.chat." Atımı Geliştirmek İstiyorum. " begin
            function format_number(number)
                local formatted = tostring(number)
                while true do
                    formatted, k = string.gsub(formatted, "^(-?%d+)(%d%d%d)", '%1.%2')
                    if k == 0 then
                        break
                    end
                end
                return formatted
            end
            local currentLevel = horse.get_level()
            local baseMoney = 1000000 -- İlk seviye için istenen minimum para miktarı
            local increasePerLevel = 1000000 -- Seviye başına istenen para miktarındaki artış miktarı
            local itemID = 50050 -- İlk seviye için istenen item ID'si
            local itemRequired = 1 + currentLevel -- Seviye başına istenen item miktarı
            local requiredMoney = baseMoney + increasePerLevel * currentLevel -- Seviyeye göre istenen para miktarını hesapla
            local formattedMoney = format_number(requiredMoney)
            say_title("Seyis:")
            say("")
            say_reward("Atının mevcut seviyesi: " .. currentLevel)
            say("")
            if currentLevel == 30 then
                say_reward("Atınız maksimum seviyeye ulaşmış.")
                return
            end
            say_reward("Atını geliştirmek mi istiyorsun? ")
            say("")
            say_reward("Yang Miktarı: " .. requiredMoney)
            if currentLevel > 0 then
                say_reward("At Madalyonu: x" .. itemRequired)
            else
                say_reward("Geliştirmek için gereken At madalyonu: 1 adet")
            end
            say("")
            say_reward("Bu malzemelere sahip isen atını geliştirebilirim. ")
            say("")
            say_reward("Kabul Ediyor musun? ")
            say("")
            local answer = select("Evet", "Hayır")
            if answer == 1 then
                if currentLevel < 30 then
                    if pc.get_money() >= requiredMoney then
                        if pc.count_item(itemID) >= itemRequired then
                            pc.changemoney(-requiredMoney)
                            pc.removeitem(itemID, itemRequired) -- Itemi kaldır
                            horse.advance()
                            currentLevel = horse.get_level() -- Atın yeni seviyesini güncelle
                            say_title("Seyis:")
                            say_reward("Tebrikler! Atınız başarıyla geliştirildi.")
                            say_reward("Atınızın yeni seviyesi: " .. currentLevel)
                        else
                            say_title("Seyis:")
                            say_reward("Üzgünüm, yeterli miktarda At madalyonu yok.")
                            say_reward("Atını geliştirmek için gereken At madalyonunu topladıktan sonra geri gelin.")
                        end
                    else
                        say_title("Seyis:")
                        say("Üzgünüm, yeterli Yang yok.")
                        say("Atını geliştirmek için gereken Yangı topladıktan sonra geri gelin.")
                    end
                else
                    say_title("Seyis:")
                    say("Üzgünüm, atınızın maksimum seviyeye ulaşmış.")
                end
            else
                say_title("Seyis:")
                say("Anladım, belki daha sonra.")
            end
        end
    end
end

Putty üzerinden questi okuttuktan sonra aldığım mesaj görüntüsü:

18554 eklentisini görüntüle

Sonuç ya kod çalışmıyor ya ben beceremedim :)
fonksiyonu questlib.lua ya ekle

quest_functions'a ekle
kod:
Genişlet Daralt Kopyala
format_number

quest içerisinde sadece bu kısmı güncelle
Kod:
Genişlet Daralt Kopyala
say_reward("Geliştirmek için gereken Yang miktarı: " .. format_number(requiredMoney))
 
Çözüm
fonksiyonu questlib.lua ya ekle

quest_functions'a ekle
kod:
Genişlet Daralt Kopyala
format_number

quest içerisinde sadece bu kısmı güncelle
Kod:
Genişlet Daralt Kopyala
say_reward("Geliştirmek için gereken Yang miktarı: " .. format_number(requiredMoney))
1724754232092.webp

Teşekkür ederim, sayende fonksiyonları nasıl ekleyip nasıl kullanacağımı öğrenmiş oldum :coffee:
 
Durum
İçerik kilitlendiği için mesaj gönderimine kapatıldı.
Üst