(Python) Burada & Şehirde Yeniden Başla Süresini Gösterme

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

Admin

Metin2Lobby
Yönetici
Founder
Katılım
6 Mayıs 2022
Mesajlar
52,647
Ticaret : 1 / 0 / 0
rMCE1Jh.png

Süreler sadece görüntüdür.
Kodlar locale olarak verilmiştir, localeInfo kullananlar değiştirsinler.Az karakterli kodlar tab ayarsız eklenmiştir..
Root locale.py & localeInfo.py aratılır
Kod:
def GetAuxiliaryWordType(text):

Kod:
def SehirTime(time):     d, s = divmod(time, 60)     ss, d = divmod(d, 60)     return "%02d:%02d" % (d, s) def BuradaTime(time):     d, s2 = divmod(time, 10)     ss2, d = divmod(d, 10)     return "%d" % (s2)
uirestart.py importların altına eklenir
Kod:
import time import locale
Aratılır
Kod:
self.restartTownButton=self.GetChild("restart_town_button")
Altına eklenir
Kod:
self.sehirde_time = self.GetChild("sehirde_time") self.burada_time = self.GetChild("burada_time")
Aratılır
Kod:
def OpenDialog(self):
self.Show() Üstüne eklenir
Kod:
self.sehirtime = app.GetGlobalTimeStamp() + 180 self.buradatime = app.GetGlobalTimeStamp() + 10

Kod:
def Sehirstime(self, time):         left = time - app.GetGlobalTimeStamp()         if left < 0:             left = 0         self.sehirde_time.SetText("%s" % locale.SehirTime(left))     def Buradastime(self, time):         left = time - app.GetGlobalTimeStamp()         if left < 0:             left = 0         self.burada_time.SetText("%s" % locale.BuradaTime(left))     def OnUpdate(self):         self.Sehirstime(int(self.sehirtime))         self.Buradastime(int(self.buradatime))
#####
uiscript restartdialog.py aratılır
Kod:
restart_town_button

Kod:
{                     "name" : "sehirde_time",                     "type" : "text",                                       "x" : 155,                     "y" : 53,                                       "text" : "",                 },                 {                     "name" : "burada_time",                     "type" : "text",                                       "x" : 165,                     "y" : 23,                                       "text" : "10",                 },


Kod:
self.sehirtime = app.GetGlobalTimeStamp() + 180
Sehirde başlama süresi > 3 dakika
Kod:
self.buradatime = app.GetGlobalTimeStamp() + 10
Burada başlama süresi > 10 saniye





Metin2 Lobby'da Python Kullanarak Burada & Şehirde Yeniden Başla Süresini Gösterme

Metin2 özel sunucularında kullanıcı deneyimini artırmak için birçok sistem geliştirilebilir. Bu sistemlerden biri de oyuncuların öldükten sonra nerede yeniden doğacaklarını ve bu süreyi belirlemektir. Bu yazıda Python dilini kullanarak Burada & Şehirde Yeniden Başla süresini nasıl göstereceğimizi ele alacağız.

Burada & Şehirde Yeniden Başla Nedir?
Metin2 oyununda bir karakter öldüğünde iki temel seçenek vardır: Burada Yeniden Başlama veya Şehirde Yeniden Başlama. Burada yeniden başlamak, öldüğünüz yerde doğmanızı sağlar ancak ceza olarak bir süre hareket edemezsiniz. Şehirde yeniden başlatmak ise doğrudan bir şehirde doğmanıza izin verir ama aynı şekilde bir bekleme süresi olabilir. Bu süreyi kullanıcıya göstermek, onların daha bilinçli kararlar almasını sağlar.

Python ile Uygulama Yapısı
Python, özellikle GUI (grafiksel arayüz) işlemleri için idealdir. Metin2 özel sunucularında genellikle PyRoot ve UIScript kullanılır. Bu yapı sayesinde Python ile kullanıcı arayüzüne özel sistemler entegre edilebilir. Burada & Şehirde Yeniden Başla süresini göstermek için bir GUI penceresi oluşturabiliriz.

Örnek Kod Yapısı
import ui, net, app, chr, player, wndMgr
class RespawnTimerWindow(ui.Window):
def __init__(self):
ui.Window.__init__(self)
self.__CreateDialog()

def __CreateDialog(self):
self.respawnLabel = ui.TextLine()
self.respawnLabel.SetText('Yeniden baslama suresi: 0 sn')
self.respawnLabel.SetPosition(10, 10)
self.respawnLabel.Show()

def UpdateRespawnTime(self, remaining_time):
self.respawnLabel.SetText(f'Yeniden baslama suresi: {remaining_time} sn')

window = RespawnTimerWindow()
window.Show()

Not: Yukarıdaki örnek kod, temel bir Python GUI penceresi oluşturma mantığı üzerine kurulmuştur. Gerçek Metin2 ortamında çalışması için UIScript ve PyRoot yapılarına göre uyarlanması gerekir.

Sürenin Sunucu Tarafından Gönderilmesi
Oyuncu öldüğünde sunucu tarafında bir sayaç başlatılır. Bu sayaç, istemciye geri sayım süresini gönderir. Python tarafında bu veri alındığında GUI üzerinde dinamik olarak güncellenir. Bu işlem genellikle paket üzerinden yapılır. Örneğin, özel bir opcode tanımlanarak respawn süresi gönderilir.

Avantajları
Bu tür bir sistem, oyuncuların ne zaman doğacaklarını bilmesini sağlar. Özellikle PVP sunucularında bu bilgi stratejik açıdan önemlidir. Oyuncu, düşmanlarının ne zaman tekrar savaşa katılacağını tahmin edebilir. Ayrıca, kullanıcı dostu bir arayüz sunarak oyuncu sadakatini artırır.

Sonuç
Python ile Metin2 özel sunucularında Burada & Şehirde Yeniden Başla süresini göstermek, hem teknik hem de oyun deneyimi açısından faydalıdır. Doğru uygulandığında kullanıcı dostu bir sistem haline gelir ve sunucunuzun kalitesini artırır.


Displaying Here & City Respawn Timer with Python at Metin2 Lobby

In Metin2 private servers, various systems can be developed to enhance user experience. One of these systems is determining where players will respawn after death and showing the respawn timer. In this article, we will discuss how to display the 'Here & City Respawn Timer' using Python.

What is Here & City Respawn?
In the Metin2 game, when a character dies, there are two main options: Respawn Here or Respawn in City. Respawning here allows you to return to your death location but includes a penalty period where you cannot move. Respawning in the city teleports you directly to a city, but may also involve a waiting period. Displaying this timer to the user allows them to make more informed decisions.

Application Structure with Python
Python is ideal especially for GUI (graphical interface) operations. In Metin2 private servers, PyRoot and UIScript are commonly used. This structure enables integrating custom systems into the user interface using Python. We can create a GUI window to display the Here & City Respawn timer.

Sample Code Structure
import ui, net, app, chr, player, wndMgr
class RespawnTimerWindow(ui.Window):
def __init__(self):
ui.Window.__init__(self)
self.__CreateDialog()

def __CreateDialog(self):
self.respawnLabel = ui.TextLine()
self.respawnLabel.SetText('Respawn time: 0 sec')
self.respawnLabel.SetPosition(10, 10)
self.respawnLabel.Show()

def UpdateRespawnTime(self, remaining_time):
self.respawnLabel.SetText(f'Respawn time: {remaining_time} sec')

window = RespawnTimerWindow()
window.Show()

Note: The above sample code is based on creating a basic Python GUI window. It must be adapted according to UIScript and PyRoot structures to work in an actual Metin2 environment.

Sending Timer from Server
When a player dies, a countdown begins on the server side. This timer is sent to the client which updates the GUI dynamically. This is usually done via packet communication. For example, a custom opcode can be defined to send the respawn time.

Benefits
Such a system allows players to know when they will respawn. Especially in PVP servers, this information is strategically important. Players can predict when their enemies will return to battle. Additionally, it increases player loyalty by providing a user-friendly interface.

Conclusion
Displaying the Here & City Respawn Timer with Python in Metin2 private servers is beneficial both technically and in terms of gameplay. When implemented correctly, it becomes a user-friendly system that enhances the quality of your server.
 

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

Benzer konular

Geri
Üst Alt