[C++] Birkaç Yeni quest_functions

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

Admin

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

Birkaç gündür kill komutu arıyordum, yabancı bir forumda derdime derman buldum bunun yanında iş yapabilecek birkaç fonksiyon daha buldum sizlere sunmak istedim. Neyse çok uzattım anlatıma geçelim;

1.Aşama:

game/src içinde questlua_pc.cpp açılır ;

Arat:
Kod:
int pc_get_name(lua_State* L)

Üstüne boşluk bırakarak ekle:

Kod:
// New Functions by ummeh122     int pc_get_ip(lua_State* L)     {         LPCHARACTER ch = CQuestManager::instance().GetCurrentCharacterPtr();         lua_pushstring(L, ch->GetDesc()->GetHostName());         return 1;     }     int pc_kill(lua_State* L)     {         LPCHARACTER ch = CQuestManager::instance().GetCurrentCharacterPtr();         ch->Dead();         return 0;     }     int pc_set_coins(lua_State * L)     {         if (!lua_isnumber(L, 1))         {             sys_err("invalid argument");             return 0;         }         LPCHARACTER ch = CQuestManager::instance().GetCurrentCharacterPtr();         long val = (long)lua_tonumber(L, 1);         SQLMsg *msg;         msg = DBManager::instance().DirectQuery("UPDATE account.account SET coins = coins + '%ld' WHERE id = '%d'", val, ch->GetAID());              if (msg->uiSQLErrno != 0)         {             sys_err("pc_update_coins query failed");             return 0;         }     }     int pc_get_empire_name(lua_State* L)     {         LPCHARACTER ch = CQuestManager::instance().GetCurrentCharacterPtr();         const char* tabelle[3] = {"Shinsoo","Chunjo","Jinno"};         int empireave = ch->GetEmpire()-1;         lua_pushstring(L, tabelle[empireave]);         return 1;     }     // New Functions by ummeh122 end

Aynı yerde arat:
Kod:
{ "getname",        pc_get_name        },             { "get_name",        pc_get_name        },

Altına ekle:

Kod:
// New Functions by ummeh122             { "get_ip",                pc_get_ip            },             { "kill",                pc_kill                },             { "set_coins",            pc_set_coins        },             { "get_empire_name",    pc_get_empire_name    },             // New Functions by ummeh122 end

2.Aşama:

game/src/quest içerisindeki quest_functions ve filezillada quest klasöründeki quest_functions da uygun bir yere ekle:
Kod:
pc.get_ip pc.kill pc.set_coins pc.get_empire_name

Örnek Kullanım;
Kod:
pc.kill() pc.set_coins("50")

Günlük EP ödül verimlerinde çok verimli olabilecek bir komut olduğunu düşünüyorum.

Fonksiyonların içerdiği komutlar;


Eğer daha önceden paylaşılmışsa kapatılabilir ben aradım bulamadım forumda.
Bir Teşekkür yeterli iyi kullanımlar :)

Metin2 Lobby olarak, Metin2 özel sunucu geliştirme konusunda aktif olan geliştiriciler için sürekli yeni içerikler ve güncellemeler sunuyoruz. Bu yazıda, C++ tabanlı quest_functions dosyasına birkaç yeni fonksiyon eklemeyi ele alacağız. Bu fonksiyonlar sayesinde, özel görev sistemlerinizde daha fazla esneklik elde edebilir, oyuncular için daha zengin deneyimler yaratabilirsiniz.

Yeni Quest Fonksiyonları Nedir?
Metin2 özel sunucularda görev (quest) sistemi, oyuncuların oyun içinde belirli eylemleri gerçekleştirmesini ve ödüller kazanmasını sağlayan temel mekanizmalardan biridir. quest_functions dosyası, bu görevlerde kullanılabilen özel fonksiyonları tanımlar. Bu dosyaya yeni fonksiyonlar eklemek, geliştiricilerin kendi sistemlerini özelleştirmesine olanak tanır.

Fonksiyon 1: pc.get_level_up_point()
Bu fonksiyon, oyuncunun mevcut seviye atlama puanını döndürür. Örneğin, oyuncu bir görevde belirli bir seviye atlama puanına sahip olup olmadığını kontrol etmek isteyebilir. Bu, gelişmiş görev sistemlerinde kullanışlıdır.

Kullanımı:
local level_up_points = pc.get_level_up_point()

Fonksiyon 2: pc.add_item_to_inventory(item_vnum, count)
Bu fonksiyon, oyuncunun envanterine belirtilen eşyayı ve miktarını ekler. Oyuncuya görev ödülü olarak eşya vermek veya özel sistemlerde envanter yönetimi yapmak için idealdir.

Kullanımı:
pc.add_item_to_inventory(71037, 1) -- 71037 numaralı eşyadan 1 adet verir

Fonksiyon 3: pc.has_skill(skill_vnum)
Oyuncunun belirli bir beceriye sahip olup olmadığını kontrol eder. Bu fonksiyon, görevlerde sınıf bazlı özel eylemleri tetiklemek için kullanılabilir.

Kullanımı:
if pc.has_skill(120) then
-- Beceriye sahipse yapılacak işlemler burada tanımlanır

Fonksiyon 4: npc.get_mob_count_in_map(map_index)
Belirtilen haritada bulunan belirli bir canavar türünün sayısını döndürür. Bu, görevlerde belirli bir haritada düşman yoksa veya sınırlı sayıdaysa görev akışı başlatmak için kullanılabilir.

Kullanımı:
local mob_count = npc.get_mob_count_in_map(1)

Neden Yeni Fonksiyonlar Eklenmeli?
Geliştiricilerin ihtiyaçlarına göre özel sistemler geliştirmesi için quest_functions dosyasını genişletmek oldukça faydalıdır. Oyun içi etkileşimleri artırmak, özel PvP sistemleri kurmak ya da envanter yönetimi gibi detaylı kontroller sağlamak için bu fonksiyonlar büyük kolaylık sağlar.

Metin2 Lobby, Metin2 özel sunucu geliştiricileri için sürekli yenilikler sunmaya devam ediyor. Daha fazla kaynak kod, sistem açıklaması ve gelişmiş rehberler için sitemizi takip etmeyi unutmayın.


Metin2 Lobby provides continuous updates and new content for active developers in the field of Metin2 private server development. In this article, we will focus on adding several new functions to the C++-based quest_functions file. These functions allow you to gain more flexibility in your custom quest systems and create richer experiences for players.

What Are New Quest Functions?
The quest system in Metin2 private servers is one of the fundamental mechanisms that allows players to perform certain actions in-game and earn rewards. The quest_functions file defines custom functions that can be used within these quests. Adding new functions to this file enables developers to customize their own systems.

Function 1: pc.get_level_up_point()
This function returns the player's current level-up points. For example, a player may want to check if they have a specific amount of level-up points during a quest. This is useful in advanced quest systems.

Usage:
local level_up_points = pc.get_level_up_point()

Function 2: pc.add_item_to_inventory(item_vnum, count)
This function adds the specified item and quantity to the player's inventory. It is ideal for awarding items as quest rewards or managing inventories in special systems.

Usage:
pc.add_item_to_inventory(71037, 1) -- Adds 1 item with ID 71037

Function 3: pc.has_skill(skill_vnum)
Checks whether the player has a specific skill. This function can be used in quests to trigger class-based special actions.

Usage:
if pc.has_skill(120) then
-- Actions to be performed if the skill exists are defined here

Function 4: npc.get_mob_count_in_map(map_index)
Returns the number of a specific monster type present in the given map. This can be used in quests to initiate flows when there are no monsters or only limited numbers in a specific map.

Why Should New Functions Be Added?
Extending the quest_functions file according to developer needs is highly beneficial. It allows increasing in-game interactions, setting up custom PvP systems, or managing inventories with detailed controls.

Metin2 Lobby continues to provide constant innovations for Metin2 private server developers. Do not forget to follow our site for more source codes, system explanations, and advanced guides.
 

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

Benzer konular

Geri
Üst Alt