Çözüldü Oyun içi ban quest

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ı.

maxbro

[GM]MaxBro
MT Üye
Mesaj
512
Çözümler
19
Beğeni
357
Puan
819
Ticaret Puanı
0
Merhaba arkadaşlar. ChatGPT den yardım alarak güzel bir ban questi yazdım. Kodlarda sorun yok diye düşünüyorum. Fakat ben oyun içinde oyuncu nickini girdiğim zaman aşağıdaki hatayı alıyorum. Bu hatayı nasıl çözebiliriz. Quest kodlarını aşağıya bırakıyorum. Sizde sorunsuz çalışabilir. Herkese iyi forumlar.

Freebsd 13, mysql56 kullanıyorum.

aldığım hata:
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)


gm_ban.lua:
quest gm_ban begin
    state start begin
        when letter with pc.is_gm() begin
        send_letter("GM: Ban ")
        end
        when button or info begin
       
            say("Ban atılacak hesap ismini giriniz. ")
            local ban_isim = input()
            local ban_check = mysql_query("SELECT status FROM account.account WHERE id = (SELECT account_id FROM player.player WHERE name = '"..ban_isim.."') LIMIT 1")
            if ban_check == "BLOCK" then
            say("Hesap Zaten Banlanmış. ")
            else
            mysql_query("UPDATE account SET status = 'BLOCK' WHERE id = (SELECT account_id FROM player.player WHERE name = '"..ban_isim.."') LIMIT 1")
            say("Oyuncuyu başarıyla banladınız.")
            notice_all("|cffffcc00 >>BAN DUYURU<< |cffffffff Oyuncu |cffADFF2F ''"..ban_isim.."'' banlandı. ")
            command("dc "..ban_isim)
            send_letter("GM: Ban ")
            return
            end
           
           
        end
    end
end

Ek olarak kullandığım mysql_query kodlarını da aşağıya bırakıyorum.
mysql_query:
mysql_query = function(query)
    math.randomseed(os.time())
    local fi,t,out = 'mysql_data_'..math.random(10^9)+math.random(2^4,2^10),{},{}
    os.execute('mysql --login-path=local -e'..string.format('%q',query)..' > '..fi)
    for av in io.open(fi,'r'):lines() do table.insert(t,split(av,'\t')) end; os.remove(fi);
    for i = 2, table.getn(t) do
        table.foreach(t,function(a,b)
        out[i-1]               = out[i-1] or {}
        out[i-1][a]            = tonumber(b) or b or 'NULL'
        out[t[1][a]]           = out[t[1][a]] or {}
        out[t[1][a]][i-1]      = tonumber(b) or b or 'NULL'
        end)
    end
    out.__lines = t[1]
    return out
end
 
Linkleri görebilmek için giriş yap veya kayıt ol.


mysql_direct_query fonksiyonunu ekleyip dener misin? bunu kullanmak daha sağlıklı olacaktır. örnek kullanım da içinde var.

ayrıyeten oyuncunun banlı olup olmadığını kontrol etmene bence gerek yok. update et geç gereksiz sorgu çalıştırmış oluyorsun.
 
Çözüm
Linkleri görebilmek için giriş yap veya kayıt ol.


mysql_direct_query fonksiyonunu ekleyip dener misin? bunu kullanmak daha sağlıklı olacaktır. örnek kullanım da içinde var.

ayrıyeten oyuncunun banlı olup olmadığını kontrol etmene bence gerek yok. update et geç gereksiz sorgu çalıştırmış oluyorsun.
Teşekkürler. Linkteki işlemleri uygulayıp build aldım. query sorunsuz çalışıyor fakat quest tam çalışmadı. Geri kalan kısım düzenlenecek.
 
Durum
İçerik kilitlendiği için mesaj gönderimine kapatıldı.
Geri
Üst