Questler için zaman fonksiyonu

  • Konbuyu başlatan Konbuyu başlatan Admin
  • Başlangıç tarihi Başlangıç tarihi
  • Cevaplar Cevaplar 0
  • Görüntüleme Görüntüleme 100

Admin

Metin2Lobby
Yönetici
Founder
Katılım
6 Mayıs 2022
Mesajlar
52,647
Ticaret : 1 / 0 / 0
pasha37 nin konusudur isteyen daha rahat ulaşsın diye açıyorum

Questlerde kullanabileceğiniz o anı alan yada aradaki farkı alan zaman fonksiyonları



get_current_time_ms()


- Milisaniye cinsinden zaman oluşturur
- local zaman1 = get_current_time_ms()


get_current_time_s()


- Saniye cinsinden zaman oluşturur
- local zaman1 = get_current_time_s()


check_time(time1, time2)


- 2 zaman arasındaki farkı verir
- local zaman1 = get_current_time_ms()
- ... fonksiyonlar ...
- local zaman2 = get_current_time_ms()
- local gecen_zaman = check_time(zaman1, zaman2)

*questlua_global.cpp
Arat:
Kod:
int _left_image(lua_State* L)     {         if (lua_isstring(L, -1))         {             string s = lua_tostring(L,-1);             CQuestManager::Instance().AddScript("[LEFTIMAGE src;"+s+"]");         }         return 0;     }
Altına ekle:
Kod:
int _get_current_time_ms(lua_State* L)     {         lua_pushnumber(L, (int)get_dword_time());         return 1;     }     int _get_current_time_s(lua_State* L)     {         int result = (get_dword_time() / 1000) + 0.5;         lua_pushnumber(L, (int)result);         return 1;     }     int _check_time(lua_State* L)     {         if (!lua_isnumber(L, 1) || !lua_isnumber(L, 2))             lua_pushnumber(L, 0);         int timex = lua_tonumber(L, 1);         int timey = lua_tonumber(L, 2);         int result = MIN(0, (timey - timex));         lua_pushnumber(L, (int)result);         return 1;     }
Arat:
Kod:
{    "number",                    _number                       },
Altına ekle:
Kod:
{    "get_current_time_ms",            _get_current_time_ms            }, {    "get_current_time_s",            _get_current_time_s                }, {    "check_time",                    _check_time                        },

Questler İçin Zaman Fonksiyonu

Metin2 özel sunucularında gelişmiş quest sistemleri oluştururken zaman tabanlı eylemler oldukça önemlidir. Özellikle PvP odaklı sistemlerde, belirli zaman dilimlerinde etkinleşen veya devre dışı kalan.questlar, sunucu deneyimini ciddi anlamda zenginleştirir. Bu yazıda, Questler için zaman fonksiyonu nasıl yazılır ve uygulanır, onu detaylıca ele alacağız.

Zaman Fonksiyonları Nedir?

Zaman fonksiyonları, bir questin belirli saatler arasında çalışmasını, belirli aralıklarla tekrar edilmesini ya da belli zamanlarda tetiklenmesini sağlayan gelişmiş programlama yapılmasını sağlar. Bu fonksiyonlar genellikle Python veya Lua dillerinde yazılmıştır ve Metin2 server src üzerinde çalıştırılır. Bu sayede, oyuncuların belirli zamanlarda özel etkinliklere katılması sağlanabilir.

Zaman Fonksiyonlarının Kullanım Alanları

- PvP turnuvalarının belirli saatlerde başlatılması
- Günlük görevlerin belirli zamanlarda sıfırlanması
- Özel etkinliklerin saatlik ya da günlük olarak tekrarlanması
- Sunucuda zaman bazlı sistemlerin çalışması (örn. hava durumu, event süreleri)

Python ile Basit Bir Zaman Fonksiyonu Örneği

Quest dosyası içinde, aşağıdaki gibi bir zaman kontrolü tanımlanabilir:

Kod:
[B]if[/B] pc.get_time() [B]in range[/B](18*3600, 22*3600):[BR][/BR]    chat('Bu quest sadece 18:00 ile 22:00 arasında aktiftir.')[BR][/BR]    [B]return[/B]


Bu örnekte, quest sadece 18:00 ila 22:00 saatleri arasında çalışır. Burada pc.get_time() fonksiyonu, sunucunun mevcut zamanını saniye cinsinden verir.

Gelişmiş Zaman Tabanlı Quest Sistemleri

Daha karmaşık sistemlerde, py root üzerinde özel zamanlayıcılar oluşturulabilir. Örneğin, bir PvP etkinliği için her gün saat 20:00'da otomatik olarak başlayan bir sistem yazılabilir. Bunun için bir timer fonksiyonu tanımlamak gerekir:

Kod:
[B]def[/B] start_pvp_event():[BR][/BR]    [B]if[/B] pc.get_time() % 86400 == 72000:  [I]# 20:00 (saat 72000 saniye)[/I][BR][/BR]        server_command('pvp_start')


Zaman Kontrolünü Doğru Yapmak

Sunucu saat dilimi doğru ayarlanmalıdır. Aksi takdirde, zaman tabanlı questler yanlış çalışabilir. Game server programming sırasında, saat senkronizasyonu önemlidir. Bu nedenle, sunucu saati ile oyuncu saatlerinin uyumlu olması sağlanmalıdır.

Zaman Fonksiyonlarında Dikkat Edilmesi Gerekenler

- Questlerde zaman kontrolü yapılırken saniye baz alınmalıdır.
- Saat farkları göz önünde bulundurulmalıdır.
- Timer sistemleri çok yoğun olursa sunucu performansını düşürebilir.

Sonuç

Questler için zaman fonksiyonu, Metin2 özel sunucularında dinamik ve etkileşimli sistemler kurmaya olanak tanır. Doğru kullanıldığında, oyuncuların ilgisini çekecek, sürdürülebilir ve eğlenceli oyun deneyimleri yaratılabilir. Metin2 development sürecinde zaman kontrolleri, özellikle PvP sistemlerinde büyük rol oynar.


Time Function for Quests

In Metin2 private servers, advanced quest systems often require time-based triggers. Especially in PvP-oriented environments, quests that activate or deactivate at certain times significantly enhance the gaming experience. In this article, we will examine how to create and implement a time function for quests.

What Are Time Functions?

Time functions allow quests to operate within specific hours, repeat at certain intervals, or trigger at designated times. These functions are typically written in Python or Lua and run on Metin2 server src. This allows players to participate in special events at predetermined times.

Use Cases of Time Functions

- Starting PvP tournaments at specific times
- Resetting daily quests at fixed hours
- Recurring events on hourly or daily basis
- Time-based systems like weather or event timers

Simple Time Function Example in Python

Within the quest file, you can define a time check like below:

Kod:
[B]if[/B] pc.get_time() [B]in range[/B](18*3600, 22*3600):[BR][/BR]    chat('This quest is active only between 18:00 and 22:00.')[BR][/BR]    [B]return[/B]


Here, the quest operates only between 18:00 and 22:00. The function pc.get_time() returns the current server time in seconds.

Advanced Time-Based Quest Systems

More complex systems may involve custom timers created in py root. For instance, a PvP event that starts automatically every day at 20:00 can be coded using a timer function:

Kod:
[B]def[/B] start_pvp_event():[BR][/BR]    [B]if[/B] pc.get_time() % 86400 == 72000:  [I]# 20:00 (72000 seconds)[/I][BR][/BR]        server_command('pvp_start')


Proper Time Checks

Server timezone must be correctly set; otherwise, time-based quests may malfunction. During game server programming, time synchronization is crucial. Therefore, aligning server time with player time zones is essential.

Considerations for Time Functions

- Use seconds as base when checking time in quests.
- Account for time zone differences.
- Heavy use of timer systems may reduce server performance.

Conclusion

Using a time function for quests enables dynamic and interactive gameplay in Metin2 private servers. When applied correctly, it creates engaging and sustainable gaming experiences. In Metin2 development, time controls play a significant role, especially in PvP systems.
 

Şuan Bu Konuyu Görüntüleyen Kullanıcılar (Toplam : 0, Üye : 0, Misafir : 0)

Benzer konular

Geri
Üst Alt