Merhaba geçenlerde bir yerde gördüm forumda arkadaşın birisi belirli aralıklarla alttan online sayısı geçsin istiyordu
aklıma geldi yazayım dedim.
Görsel :
aklıma geldi yazayım dedim.
Görsel :
Quest içeriği :
Kod:
quest crGaming_blackforce begin state start begin function degerler(sorgu) if sorgu == 1 then return game.get_event_flag("kirmizi_bayrak_") elseif sorgu == 2 then return game.get_event_flag("sari_bayrak_") elseif sorgu == 3 then return game.get_event_flag("mavi_bayrak__") end end function global_getvarchar(name) local save_laenge = ""..name.."laenge" local laenge = game.get_event_flag(save_laenge) local save_name = 0 local var = "" local letter = 0 local getchar = 0 while laenge > getchar do getchar = getchar + 1 save_name = ""..name.."_char_"..getchar.."" letter = game.get_event_flag(save_name) if letter!=0 then letter = string.char(letter) else letter = "" end var = ""..var..""..letter.."" end return var end function global_setvarchar(name, var) local laenge = string.len (var) local setchar = 0 local save_name = 0 local letter = 0 while laenge > setchar do setchar = setchar + 1 letter = string.sub (var, setchar, setchar) letter = string.byte(letter) if letter==91 or letter==93 then letter=32 end save_name = ""..name.."_char_"..setchar.."" game.set_event_flag(save_name, letter) end local save_laenge=""..name.."laenge" game.set_event_flag(save_laenge, laenge) end function setvarchar(name, var) local laenge = string.len (var) local setchar = 0 local save_name = 0 local letter = 0 while laenge > setchar do setchar = setchar + 1 letter = string.sub (var, setchar, setchar) letter = string.byte(letter, 1) save_name = ""..name.."_char_"..setchar.."" pc.setqf(save_name, letter) end local save_laenge=""..name.."laenge" pc.setqf(save_laenge, laenge) end function getvarchar(name) local save_laenge = ""..name.."laenge" local laenge = pc.getqf(save_laenge) local save_name = 0 local var = "" local letter = 0 local getchar = 0 while laenge > getchar do getchar = getchar + 1 save_name = ""..name.."_char_"..getchar.."" letter = pc.getqf(save_name) if letter!=0 then letter = string.char(letter) else letter = "" end var = ""..var..""..letter.."" end return var end function delvarchar(name) local save_laenge = ""..name.."laenge" local laenge = pc.getqf(save_laenge) local getchar = 0 while laenge > getchar do getchar = getchar + 1 local save_name = ""..name.."_char_"..getchar.."" pc.delqf(save_name) end pc.delqf(save_laenge) end when login begin isim = pc.name crGaming_blackforce.global_setvarchar("oyuna_en_son_giren",isim) if pc.get_empire() == 1 then game.set_event_flag("kirmizi_bayrak_",crGaming_blackforce.degerler(1)+1) elseif pc.get_empire() == 2 then game.set_event_flag("sari_bayrak_",crGaming_blackforce.degerler(2)+1) elseif pc.get_empire() == 3 then game.set_event_flag("mavi_bayrak__",crGaming_blackforce.degerler(3)+1) end end when logout begin if pc.get_empire() == 1 then game.set_event_flag("kirmizi_bayrak_",crGaming_blackforce.degerler(1)-1) elseif pc.get_empire() == 2 then game.set_event_flag("sari_bayrak_",crGaming_blackforce.degerler(2)-1) elseif pc.get_empire() == 3 then game.set_event_flag("mavi_bayrak__",crGaming_blackforce.degerler(3)-1) end end function yetkililer() if pc.get_name() == "[STL][TEST]" or pc.get_name() == "[TEC]sd" then return true else return false end end when 20019.chat."Yönetim" with crGaming_blackforce.yetkililer() == true and pc.is_gm() begin say_title("Yönetim") say() say("Ne yapmak istiyorsunuz?") sec = select("Online duyurularını aç ","Duyuruları kapat","Online sayısını arttır","Pencereyi kapat") if sec == 1 then say_title("Yönetim") say() say("Duyurular açıldı.1 Saat ara ile geçecek.") server_loop_timer("duyuru_",60*60*1) return end if 2 == sec then say_title("Yönetim") say() say("Duyurular kapatıldı.") clear_server_timer("duyuru_") return end if 3 == sec then say_title("Yönetim") say() say("Ne yapmak istiyorsunuz?") sec2 = select("Kırmızı bayrak online arttır","Sarı bayrak online arttır","Mavi bayrak online arttır","Pencereyi kapat") if sec2 == 1 then say_title("Yönetim") say() say("Kırmızı bayrak online sayısı : "..crGaming_blackforce.degerler(1).."") say("Kaç eklensin?(Mevcut değerin üstüne kalıcı olarak eklenir)") yaz = input() say_title("Yönetim") say() say("Tamamlandı.") game.set_event_flag("kirmizi_bayrak_",crGaming_blackforce.degerler(1)+yaz) elseif sec2 == 2 then say_title("Yönetim") say() say("Sarı bayrak online sayısı : "..crGaming_blackforce.degerler(2).."") say("Kaç eklensin?(Mevcut değerin üstüne kalıcı olarak eklenir)") yaz2 = input() say_title("Yönetim") say() say("Tamamlandı.") game.set_event_flag("sari_bayrak_",crGaming_blackforce.degerler(2)+yaz2) elseif sec2 == 3 then say_title("Yönetim") say() say("Mavi bayrak online sayısı : "..crGaming_blackforce.degerler(3).."") say("Kaç eklensin?(Mevcut değerin üstüne kalıcı olarak eklenir)") yaz3 = input() say_title("Yönetim") say() say("Tamamlandı.") game.set_event_flag("mavi_bayrak__",crGaming_blackforce.degerler(3)+yaz3) end end end end state start begin when duyuru_.server_timer begin notice_all("<Boot> Bayraklar çevrimiçi sayısı : Kırmızı - "..crGaming_blackforce.degerler(1).." - Sarı "..crGaming_blackforce.degerler(2).." - Mavi "..crGaming_blackforce.degerler(3).."") notice_all("<Boot> Toplam - "..game.get_event_flag("mavi_bayrak__")+game.get_event_flag("kirmizi_bayrak_")+game.get_event_flag("sari_bayrak_").." - En son giren : "..crGaming_blackforce.global_getvarchar("oyuna_en_son_giren").."") end end end
Mavi, sarı, kırmızı olarak ayrı ayrı yazar sonunuda toplam oyuncu sayısını yazar.
Birde oyuna en son giren kişiyi notice olarak geçer.Mysql query kullanmaz.İsterseniz oyun içinden onlineyi arttırabilirsiniz.
İstek gelir ise ücretsiz quest yazabilirim, konu altına mesaj bırakın.
Metin2'de 1 Saatte Bir Çevrim içi Oyuncu Duyurusu Sistemi
Metin2 sunucularında aktif oyuncu sayısını ve çevrim içi olan oyuncuları duyurmak, hem oyuncu motivasyonunu artırır hem de sunucunun canlılığını gösterir. Bu yazıda, Lua dilinde yazılmış bir sistem üzerinden, her saat başı otomatik duyuru yapılmasını sağlayacağız. Bu sistem özellikle Metin2 Quest sistemlerine entegre edilebilir ve oyunculara anlık olarak sunucudaki aktiflik hakkında bilgi verebilir.
Sistem Gereksinimleri
Bu sistemin çalışması için aşağıdaki yapıların mevcut olması gerekir:
- Sunucu tarafında Lua script desteği
- Quest sistemine erişim
- Aktif oyuncu listesine erişim sağlayan fonksiyonlar
- Zamanlayıcı (timer) desteği
Temel Lua Kod Yapısı
Öncelikle, saatte bir çalışan bir zamanlayıcı (timer) tanımlamalıyız. Bu işlem için.quest dosyasında bir başlangıç yapısı oluşturabiliriz:
Kod:
quest online_announcement begin[BR][/BR] state start begin[BR][/BR] function announce_online_players()[BR][/BR] local player_count = get_server_player_count() -- Sunucudaki oyuncu sayısı[BR][/BR] notice_all('Sunucuda su an ' .. player_count .. ' oyuncu aktif.') -- Genel duyuru[BR][/BR] end[BR][/BR][BR][/BR] when login begin[BR][/BR] timer('announce_online_players', 3600) -- 3600 saniye = 1 saat[BR][/BR] end[BR][/BR][BR][/BR] when announce_online_players.timer begin[BR][/BR] announce_online_players() -- Fonksiyonu çağır[BR][/BR] end[BR][/BR] end[BR][/BR]end
Zamanlayıcı (Timer) Mekanizması
Timer fonksiyonu, belirtilen süre sonra tekrar çalışacak şekilde ayarlanabilir. Yukarıdaki örnekte, 3600 saniye yani 1 saat aralıklarla announce_online_players fonksiyonu çalıştırılır. Bu sayede her saat başı sunucuda kaç oyuncunun aktif olduğu duyurulur.
Gelişmiş Özellikler
Daha gelişmiş bir sistem için, oyuncuların isimlerini veya konumlarını da duyurabilirsiniz. Örneğin, belirli bir haritada bulunan oyuncuları listelemek gibi. Bunun için Metin2 API fonksiyonlarından yararlanmanız gerekir.
Hata Ayıklama (Debug)
Sistemde oluşabilecek hataları takip etmek için, loglama mekanizmaları eklemek önemlidir. Özellikle quest debug işlemleri sırasında, fonksiyonların doğru çalışıp çalışmadığını kontrol etmelisiniz.
Sonuç[/BR]
Bu şekilde, Metin2 sunucunuzda her saat başı otomatik duyuru yapan bir sistem kurmuş olursunuz. Bu sistem, Lua tabanlı quest dosyaları ile kolayca entegre edilebilir. Daha fazla özelleştirme için Metin2Lobby sitemizdeki diğer quest örneklerini inceleyebilirsiniz.
Online Player Announcement Every Hour in Metin2
Metin2 servers benefit from announcing active players to increase motivation and show server activity. In this article, we'll create a system using Lua that automatically announces the number of online players every hour. This system can be integrated into Metin2 Quest systems and provide real-time information about server activity to players.
System Requirements
The following components are required for this system to work:
- Lua scripting support on the server
- Access to the quest system
- Functions to retrieve the list of active players
- Timer support
Basic Lua Code Structure
First, we need to define a timer that runs once per hour. We can create a basic structure in the .quest file:
Kod:
quest online_announcement begin[BR][/BR] state start begin[BR][/BR] function announce_online_players()[BR][/BR] local player_count = get_server_player_count() -- Number of players on the server[BR][/BR] notice_all('There are currently ' .. player_count .. ' players online.') -- Global announcement[BR][/BR] end[BR][/BR][BR][/BR] when login begin[BR][/BR] timer('announce_online_players', 3600) -- 3600 seconds = 1 hour[BR][/BR] end[BR][/BR][BR][/BR] when announce_online_players.timer begin[BR][/BR] announce_online_players() -- Call the function[BR][/BR] end[BR][/BR] end[BR][/BR]end
Timer Mechanism
Timer functions can be set to repeat after a specific interval. In the example above, the announce_online_players function runs every 3600 seconds, i.e., every hour. This way, the number of active players is announced at the top of each hour.
Advanced Features
For a more advanced system, you can also announce the names or locations of players. For example, listing players in a specific map. You will need to use Metin2 API functions for this purpose.
Debugging
To track potential errors in the system, it's important to add logging mechanisms. Especially during quest debug processes, you should check whether the functions are working correctly.
Conclusion[/BR]
In this way, you can establish a system that automatically announces player numbers every hour on your Metin2 server. This system can be easily integrated with Lua-based quest files. For further customization, you can explore other quest examples available on our site Metin2Lobby.
