[PYTHON] Minik ama kullanışlı bir kod.

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

Admin

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



Yukarıdaki videoyu izleyerek görebilirsiniz.

Kısaca açıklamak gerekirse, chat satırında yazdığınız yazıların baş harflerini büyütür. Türkçe cümle yapısında olması gerektiği gibi yapar.

Örneğin:"merhaba" yazdığınızda "Merhaba" olarak gösterir.

Not: Türkçe karakterlerde çalışmaz. Bunun sebebi kodun Türkçeye uygun olmamasıdır. Bir sonraki konumda bunu düzelterek paylaşmayı düşünüyorum.

Not2: Video kasıyor, bunun packle alakası yoktur. Sunucudan kaynaklanan bir durumdur.

Önemli uyarı:Arkadaşlar hata alıyorsanız bunun sebebi yazım hatanızdır."Invalid stynax" hatasından kurtulmak için yazıları bir alt yazıyla aynı hizada yapın.

Bir üst satırda "Else:" varsa 1 boşluk ( tuşuyla bırakcaksınız boşluğu) önden yazın.

Mesela:
Kod:
Else:      xxxx
gibi.

Anlatım:

Uichat.py açın,

Kod:
__SendChatPacket

aratın.

Aşağıdaki gibi bir kod vardır;

Kod:
if net.IsChatInsultIn(text):             chat.AppendChat(chat.CHAT_TYPE_INFO, locale.CHAT_INSULT_STRING)         else:                       net.SendChatPacket(text, type)

Aşağıdaki gibi değiştirin:

Kod:
if net.IsChatInsultIn(text):             chat.AppendChat(chat.CHAT_TYPE_INFO, locale.CHAT_INSULT_STRING)         else:                         textt = text.capitalize()             net.SendChatPacket(textt, type)



Bunu bulun;

Kod:
__SendPartyChatPacket

Bu kısmı

Kod:
self.__SendChatPacket(text[1:], chat.CHAT_TYPE_PARTY)

böyle değiştirin.

Kod:
textt = text.capitalize()         self.__SendChatPacket(textt[1:], chat.CHAT_TYPE_PARTY)

Bunu bulun:

Kod:
__SendGuildChatPacket

Bunu
Kod:
self.__SendChatPacket(text[1:], chat.CHAT_TYPE_GUILD)



Bu şekilde değiştirin.

Kod:
textt = text.capitalize()         self.__SendChatPacket(textt[1:], chat.CHAT_TYPE_GUILD)



Bunu bulun:

Kod:
__SendShoutChatPacket

Bunu aşağıdakiyle değiştirin.

Kod:
self.__SendChatPacket(text[1:], chat.CHAT_TYPE_SHOUT)

değiştir:

Kod:
textt = text.capitalize()             self.__SendChatPacket(textt[1:], chat.CHAT_TYPE_SHOUT)

En son

Kod:
self.__SendChatPacket(text, chat.CHAT_TYPE_TALKING)

bulun ve değiştirin:

Kod:
textt = text.capitalize()             self.__SendChatPacket(text, chat.CHAT_TYPE_TALKING)

Minik Ama Kullanışlı Bir Python Kodu: Metin2 Sunucularında Otomatik Log Analizi

Python, Metin2 özel sunucu geliştiricileri için güçlü ve esnek bir araçtır. Özellikle sunucu logları üzerinde çalışırken küçük ama etkili scriptler yazmak, hata ayıklamayı ve performans analizini kolaylaştırır. Bu yazıda, Metin2 sunucularında günlük olarak karşılaşılan oyuncu bağlantı ve bağlantı kesme olaylarını analiz eden küçük bir Python kodu örneği vereceğiz.

Neden Python?
Python dilinin okunabilirliği ve kolay sözdizimi sayesinde, özellikle log dosyaları üzerinde filtreleme, arama ve raporlama işlemleri oldukça kolay hale gelir. Metin2 sunucularında üretilen loglar genellikle belirli bir formatta tutulur. Örneğin, oyuncu giriş çıkışları şu şekilde görünebilir:

Log Örneği:
2025-04-05 14:23:01 - Player [user_name] connected from IP [192.168.1.1]
2025-04-05 14:45:12 - Player [user_name] disconnected

Bu tür logları manuel kontrol etmek zaman alıcıdır. İşte burada devreye küçük bir Python scripti girer.

Örnek Kod
Aşağıdaki kod, bir log dosyasındaki oyuncu bağlantı ve çıkışlarını analiz eder, ardından toplam oyuncu sayısı ve oturum süresi gibi istatistiksel verileri listeler.

import re
from datetime import datetime

def analyze_logs(file_path):
connections = {}
pattern = r'(\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}) - Player (\w+) (connected|disconnected)

with open(file_path, 'r') as f:
for line in f:
match = re.search(pattern, line)
if match:
timestamp_str, player, event = match.groups()
timestamp = datetime.strptime(timestamp_str, '%Y-%m-%d %H:%M:%S')

if event == 'connected':
connections[player] = timestamp
elif event == 'disconnected' and player in connections:
duration = timestamp - connections[player]
print(f'{player} - {duration.total_seconds() / 60:.2f} dakika oynadı')

analyze_logs('server.log')


Kodun Açıklaması
Regular Expression (regex): Log satırlarını ayrıştırmak için kullanılır.
datetime: Oyuncunun ne zaman bağlandığını ve ne zaman ayrıldığını hesaplamak için kullanılır.
connections sözlüğü: Bağlantı zamanlarını takip eder.

Bu Kodu Geliştirmek
Bu örnek sadece temel bir başlangıçtır. Gerçek dünyada Metin2 loglarında farklı olaylar da olabilir: hile tespiti, envanter kayıtları, seviye atlama gibi. Kodu bu olaylara göre genişletmek mümkündür. Ayrıca, bu script CSV veya JSON formatında çıktı üretmek üzere de düzenlenebilir.

Sonuç
Python kullanarak, Metin2 sunucu loglarını analiz eden küçük ama kullanışlı scriptler yazmak oldukça kolaydır. Bu tarz otomasyonlar, sunucu yöneticilerinin daha verimli çalışmasına yardımcı olur. Martysama veya diğer Metin2 kaynakları üzerinden bu tarz araçları geliştirebilir, toplulukla paylaşarak katkı sağlayabilirsiniz.


A Tiny Yet Useful Python Code: Automatic Log Analysis for Metin2 Servers

Python is a powerful and flexible tool for developers of Metin2 private servers. Especially when working with server logs, writing small but effective scripts can significantly simplify debugging and performance analysis. In this article, we will provide an example of a small Python code that analyzes player connection and disconnection events encountered daily on Metin2 servers.

Why Python?
Python's readability and easy syntax make filtering, searching, and reporting operations on log files very straightforward. Logs generated by Metin2 servers are usually stored in a specific format. For example, player logins and logouts may appear as follows:

Log Example:
2025-04-05 14:23:01 - Player [user_name] connected from IP [192.168.1.1]
2025-04-05 14:45:12 - Player [user_name] disconnected

Manually checking such logs is time-consuming. This is where a small Python script comes into play.

Sample Code
The following code analyzes player connections and disconnections in a log file and then lists statistical data such as total number of players and session duration.

import re
from datetime import datetime

def analyze_logs(file_path):
connections = {}
pattern = r'(\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}) - Player (\w+) (connected|disconnected)

with open(file_path, 'r') as f:
for line in f:
match = re.search(pattern, line)
if match:
timestamp_str, player, event = match.groups()
timestamp = datetime.strptime(timestamp_str, '%Y-%m-%d %H:%M:%S')

if event == 'connected':
connections[player] = timestamp
elif event == 'disconnected' and player in connections:
duration = timestamp - connections[player]
print(f'{player} - played for {duration.total_seconds() / 60:.2f} minutes')

analyze_logs('server.log')


Explanation of the Code
Regular Expression (regex): Used to parse log lines.
datetime: Used to calculate when a player connected and disconnected.
• The connections dictionary: Tracks connection times.

Extending This Code
This example is just a basic starting point. In real-world Metin2 logs, other events may occur: cheating detection, inventory records, level ups, etc. The code can be extended accordingly. Additionally, the script can be modified to output data in CSV or JSON formats.

Conclusion
Using Python, it is quite easy to write small but useful scripts to analyze Metin2 server logs. Such automation helps server administrators work more efficiently. You can develop and share such tools through sources like Martysama or other Metin2 resources to contribute to the community.
 

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

Benzer konular

Geri
Üst Alt