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 39

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




<blockquote data-attributes="" data-quote="" data-source="" class="bbCodeBlock bbCodeBlock--expandable bbCodeBlock--quote js-expandWatch">
Kod:
enum DamageFlag { DAMAGE_NORMAL= (1 &lt;&lt; 0), DAMAGE_POISON= (1 &lt;&lt; 1), DAMAGE_DODGE= (1 &lt;&lt; 2), DAMAGE_BLOCK= (1 &lt;&lt; 3), DAMAGE_PENETRATE= (1 &lt;&lt; 4), DAMAGE_CRITICAL = (1 &lt;&lt; 5), };
Aratın:
bool CHARACTER::Damage(LPCHARACTER pAttacker, int dam, EDamageType type)

Üstüne ekleyin:
Kod:
enum DamageFlag { DAMAGE_NORMAL= (1 &lt;&lt; 0), DAMAGE_POISON= (1 &lt;&lt; 1), DAMAGE_DODGE= (1 &lt;&lt; 2), DAMAGE_BLOCK= (1 &lt;&lt; 3), DAMAGE_PENETRATE= (1 &lt;&lt; 4), DAMAGE_CRITICAL = (1 &lt;&lt; 5), };
Aratın:
Kod:
if (type != DAMAGE_TYPE_NORMAL &amp;&amp; type != DAMAGE_TYPE_NORMAL_RANGE) { if (IsAffectFlag(AFF_TERROR)) { int pct = GetSkillPower(SKILL_TERROR) / 400; if (number(1, 100) &lt;= pct) return false; } }
Değiştirin:
Kod:
if (IsAffectFlag(AFF_TERROR)) { if (type != DAMAGE_TYPE_NORMAL &amp;&amp; type != DAMAGE_TYPE_NORMAL_RANGE) { int iTerrorPCT = GetSkillPower(SKILL_TERROR) / 3.3; if (number(1, 100) &lt;= iTerrorPCT) { SendDamagePacket(pAttacker, 0, DAMAGE_BLOCK); return false; } } }
Hata 1: pct değikeni aynı fonksiyonda 3 ayrı hesaplama için kullanılıyor, yanlış hesaplama yapması mümkün
Hata 2: GetSkillPower(SKILL_TERROR)' ün verdiği değerler;
M1: 50
G1: 82
P: 125
şeklinde. orjinal kısımda bu değerleri 400'e bölüyor!? ve en yüksek seviye dehşet için 125 / 400 den 0.3125 gibi komik bir rakam çıkıyor ve sistem yuvarladığında 1 bile etmiyor direk bu kısmı pas geçiyor. düzenlemesi için 3.3 olarak değiştirildi bu şekilde tam olarak skilldesc de yansıttığı oranda uyguluyor
Hata 3: Block paketi eklenmemiş eğer oran tutturulursa pas geçer, şuan block paketi eklendiğinden oran tutturulursa miss olarak gözükür
Questler İçin Zaman Fonksiyonu Nedir?

Metin2 özel sunucularında geliştirme yaparken quest (görev) sistemleri, oyuncuların oyun içinde belirli işlemleri gerçekleştirmesini sağlar. Questler, oyun içi etkinlikleri yönlendiren güçlü araçlardır. Bu sistemlerde zamanla sınırlı görevler oluşturmak, özellikle PvP sunucularında oyun deneyimini artırabilir. Questler için zaman fonksiyonu, belirli bir görevin sadece belirli bir süre boyunca aktif kalmasını sağlar veya oyuncuya belirli aralıklarla görev verilmesini sağlar.

Zaman Fonksiyonunun Kullanımı

Zaman fonksiyonları, genellikle Python dili kullanılarak yazılmış quest dosyalarında tanımlanır. Bu fonksiyonlar sayesinde bir quest'in başlatılması, süresinin dolması veya tekrar kullanılabilir hale gelmesi gibi işlemler kontrol edilebilir. Örneğin, bir oyuncunun her gün saat 18:00'de bir ödül alabilmesi için quest sistemi kullanılırken, bu quest'in sadece belirli bir süre aktif olması sağlanabilir.

Python GUI ve Zamanla Entegrasyon

Metin2 özel sunucularında geliştirilen questler genellikle Python tabanlıdır. Py Root klasöründe yer alan quest dosyalarında zamanla ilgili kontroller, Python komutları yardımıyla yapılır. Python GUI ile geliştirilen arayüzler sayesinde bu sistemler daha kullanıcı dostu hale getirilebilir. Zamanla ilgili veriler DB (veritabanı) üzerinde de tutulabilir. Böylece sunucu yeniden başlatıldığında bile quest durumları korunabilir.

Zaman Tabanlı Görevlerin Avantajları

Zamanla sınırlı görevler, oyuncuların oyun içi aktivitelerini daha dengeli bir şekilde sürdürmelerini sağlar. Günlük görevler, haftalık etkinlikler veya sezonluk ödüller gibi sistemlerle oyuncuları aktif tutmak mümkündür. Ayrıca PvP sunucularında bu tür görevler, oyuncuların belirli zaman dilimlerinde oynamasını teşvik edebilir.

Quest Sistemlerinde Zaman Kontrolü Nasıl Yapılır?

Python ile yazılmış quest dosyalarında zaman kontrolü için 'time.time()' veya 'datetime.now()' gibi fonksiyonlar kullanılabilir. Bu fonksiyonlar yardımıyla geçen süreye göre questler başlatılabilir veya iptal edilebilir. Örnek olarak bir oyuncunun belirli bir görevi 30 dakika içinde tamamlaması istenebilir. Eğer bu süre dolarsa görev başarısız sayılabilir.

Sunucu Tarafında Zaman Fonksiyonları

Metin2 özel sunucularında zamanla ilgili işlemler sadece quest tarafında değil, aynı zamanda Auth ve Game Server üzerinde de yapılabilir. Bu işlemler C++ tabanlı sistemlerle daha hızlı ve güvenli bir şekilde yönetilebilir. Özellikle büyük PvP sunucularında, zamanla çalışan sistemlerin kararlı ve sorunsuz çalışması gerekir.

Geliştiriciler İçin Tavsiyeler

Questlerde zaman fonksiyonlarını kullanırken dikkat edilmesi gereken bazı önemli noktalar vardır. Öncelikle zaman hesaplamalarının doğru yapılması gerekir. Ayrıca sunucu saatine göre mi yoksa oyuncunun yerel saatine göre mi işlem yapılacak, bu konu da önemlidir. Hatalı zaman ayarları, oyuncuların görevleri geç ya da erken tamamlamasına neden olabilir.

Metin2 geliştirme dünyasında, doğru zamanlama ile çalışan quest sistemleri, oyuncu sadakati ve oyun içi aktiviteyi artırmada kritik rol oynar.


What is Time Function for Quests?

When developing on Metin2 private servers, quest systems allow players to perform certain actions within the game. Quests are powerful tools that direct in-game activities. Creating time-limited quests can enhance the gaming experience, especially on PvP servers. The time function for quests ensures that a specific quest remains active only for a limited duration or becomes available again after a certain interval.

Using Time Functions

Time functions are typically defined in quest files written in Python. These functions help control the start, expiration, or reusability of a quest. For instance, a player may be allowed to receive a reward every day at 6 PM, and the quest can be configured to remain active only for a specific period.

Python GUI and Time Integration

Quests developed on Metin2 private servers are generally based on Python. In the quest files located under the Py Root folder, time-related controls are handled using Python commands. Interfaces developed with Python GUI can make these systems more user-friendly. Time-based data can also be stored in the database (DB), ensuring that quest states are preserved even after server restarts.

Advantages of Time-Based Quests

Time-limited quests encourage players to maintain balanced in-game activity. Systems such as daily quests, weekly events, or seasonal rewards keep players engaged. Additionally, on PvP servers, these types of quests can incentivize players to play during specific time frames.

How to Implement Time Control in Quest Systems?

In Python-written quest files, time control can be achieved using functions like 'time.time()' or 'datetime.now()'. These functions allow starting or canceling quests based on elapsed time. For example, a player might be required to complete a specific quest within 30 minutes; if the time expires, the quest could fail.

Time Functions on Server-Side

Time-related operations on Metin2 private servers are not only handled by quests but also managed through the Auth and Game Server. These operations can be efficiently controlled using C++-based systems, which offer faster and more reliable performance. Especially on large-scale PvP servers, time-dependent systems must operate stably and without errors.

Recommendations for Developers

There are several important points to consider when implementing time functions in quests. First, time calculations must be accurate. Additionally, it's crucial to decide whether the server time or the player's local time will be used. Incorrect time settings can cause players to complete quests too early or too late.

In the world of Metin2 development, well-timed quest systems play a critical role in increasing player retention and in-game activity.
 

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

Benzer konular

Geri
Üst Alt