mavzermete 1
mavzermete
Bvural41 1
Bvural41
noisiv 1
noisiv
Manwe Work 1
Manwe Work
Hikaye Ekle

Altın Konu Anka2 Project SF | 2025

4.97 yıldız(lar) 36 Değerlendirme Değerlendirenler

HERAKLES Otomatik Avlı kalıcı sunucu. 19 Haziran'da açılıyor. Atius & Wizard güvencesiyle hemen kayıt ol, ön kayıt ödülleri aktif. HEMEN TIKLA!

Etkinlik Takvimi Bozuk diyen 1 kaç arkadaşım olmuştu kontrol edildi çalışıyor, >player>event tablosu üzerinden düzenleme yapabilirsiniz.
1765493635889.png

1765493603759.png
 
Sunucu'da Ek olarak kendim düzenleme yaptım

Metin ve Boss x2 Kullanmak İstiyen kişiler için çok güzel olur. Kod Başlangıç ve Bitişini Vurguladım düzenleyip kullanabilirsiniz.[CODE title="service.h"]#define ENABLE_DROP_MULT_EVENTS // 2x BOSS VE METİN EVENTİNİ AKTİF EDER.[/CODE]

Event aç: /e boss_event 1
Çarpan: /e boss_event_mult 2 veya /e boss_event_mult 3
Kapat: /e boss_event 0

Event aç: /e metin_event 1
Çarpan: /e metin_event_mult 2 veya /e metin_event_mult 3
Kapat: /e metin_event 0


[CODE title="item_manager.cpp"]
CreateQuestDropItem(pkChr, pkKiller, vec_item, iDeltaPercent, iRandRange);
#ifdef ENABLE_DRO#ifd#ifdeffTS
// Hem Boss Event hem Super Metin Event için tek yerden drop x2/x3
auto GetEventMult = [&]() -> int
{
int mult = 1;

// Metin (STONE)
if (pkChr->IsStone() && quest::CQuestManager::Instance().GetEventFlag("metin_event") > 0)
{
int m = quest::CQuestManager::Instance().GetEventFlag("metin_event_mult");
if (m != 2 && m != 3) m = 2;
if (m > mult) mult = m;
}

// Boss (STONE değil)
if (!pkChr->IsStone() && quest::CQuestManager::Instance().GetEventFlag("boss_event") > 0)
{
int m = quest::CQuestManager::Instance().GetEventFlag("boss_event_mult");
if (m != 2 && m != 3) m = 2;

// Boss tespiti (sende MOB_RANK_KING yoksa kaldır)
const bool isBoss = (bRank == MOB_RANK_BOSS || bRank == MOB_RANK_KING);
if (isBoss && m > mult) mult = m;
}

return mult;
};

const int mult = GetEventMult();
if (mult > 1)
{
const size_t originalSize = vec_item.size();

for (size_t i = 0; i < originalSize; ++i)
{
LPITEM src = vec_item;
if (!src) continue;

// Stacklenebilir -> count çarp
if (src->IsStackable())
{
long newCount = src->GetCount() * mult;
#ifdef ITEM_MAX_COUNT#ifd#ifdeff if (newCo#ifdefITEM_MAX_COUNT) newCount = ITEM_MAX_COUNT;
#endif
#end#endiffount(newCount)#endifendifount(newCountue;
}

// Stacklenemez -> (mult-1) kopya üret (efsunu/socketi kopyala)
for (int k = 1; k < mult; ++k)
{
LPITEM extra = CreateItem(src->GetVnum(), src->GetCount(), 0, true);
if (!extra) continue;

for (int s = 0; s < ITEM_SOCKET_MAX_NUM; ++s)
extra->SetSocket(s, src->GetSocket(s));

for (int a = 0; a < ITEM_ATTRIBUTE_MAX_NUM; ++a)
{
const TPlayerItemAttribute& attr = src->GetAttribute(a);
extra->SetForceAttribute(a, attr.bType, attr.sValue);
}

vec_item.push_back(extra);
}
}
}
#endif


for (iter#end#endiffem) it = vec_item.begin(); it != vec_item.end(); ++it)
{
LPITEM item = *it;
DBManager::instance().SendMoneyLog(MONEY_LOG_DROP, item->GetVnum(), item->GetCount());
}

return vec_item.size();
}[/CODE]
 
Son düzenleme:
[CODE title="Yeni Oyuncu Girişinde verilen itemler "Açıklamasıyla""Açıklamasıyla""]quest welcome begin
state start begin
when login begin
-- ## GENEL BAŞLANGIÇ EŞYALARI ##
-- Bu kısım karakter sınıfı ne olursa olsun herkese verilir.
pc.give_item2(52034, 1) -- Binek veya özel eşya (1 adet)
pc.give_item2(53007, 1) -- Pet veya yardımcı nesne
pc.give_item2(39120, 1) -- Kostüm veya özel sandık
pc.give_item2(72726, 1) -- Elmas (Genelde oto pot vb.)
pc.give_item2(72730, 1) -- Elmas (Diğer oto pot vb.)
pc.give_item2(70038, 1) -- Cesaret Pelerini (Sınırsız olabilir)
pc.give_item2(27102, 50) -- Yeşil İksir (50 adet)
pc.give_item2(27105, 50) -- Mor İksir (50 adet)
pc.give_item2(71027, 30) -- Ejderha Tanrı Yaşam (30 adet)
pc.give_item2(71028, 30) -- Ejderha Tanrı Saldırı (30 adet)
pc.give_item2(71029, 30) -- Ejderha Tanrı Zeka (30 adet)
pc.give_item2(71030, 30) -- Ejderha Tanrı Savunma (30 adet)
pc.give_item2(71044, 30) -- Kritik İsabet (30 adet)
pc.give_item2(71045, 30) -- Delici İsabet (30 adet)

-- ## CİNSİYET KONTROLÜ ##
-- pc.get_sex() == 0 -> ERKEK
-- pc.get_sex() == 1 -> KADIN
if pc.get_sex() == 0 then
pc.give_item2(41003, 1) -- Erkek Kostümü/Zırhı
pc.give_item2(45005, 1) -- Erkek Saç Stili/Başlığı
elseif pc.get_sex() == 1 then
pc.give_item2(41004, 1) -- Kadın Kostümü/Zırhı
pc.give_item2(45006, 1) -- Kadın Saç Stili/Başlığı
end

-- ## KARAKTER SINIFI KONTROLÜ ##
-- 0: Savaşçı, 1: Ninja, 2: Sura, 3: Şaman
if pc.get_job() == 0 then
-- SAVAŞÇI İÇİN EŞYALAR
pc.give_item2(19, 1) -- Kılıç+9
pc.give_item2(3009, 1) -- Çiftel+9

-- Zırh (Efsunlu ve Taşlı):
-- {11209, 1} -> Keşiş Plaka+9 (1 adet)
-- {28442} -> Korunma Taşı (Taş Slotu)
-- {1,2000, 9,20...} -> Efsunlar (1: HP, Değer: 2000 vb.)
pc.make_item0({11209, 1}, {28442}, {1,2000,9,20,53,50,23,10}, 0)

-- Kask (Efsunlu):
pc.make_item0({12209, 1}, {}, {18,20,19,20,20,20,10,30,12,8}, 0)

elseif pc.get_job() == 1 then
-- NİNJA İÇİN EŞYALAR
pc.give_item2(1009, 1) -- Hançer+9
pc.give_item2(2009, 1) -- Yay+9
pc.give_item2(8009, 1) -- Ok

-- Kask (Efsunlu):
pc.make_item0({12349, 1}, {}, {18,20,19,20,20,20,10,30,12,8}, 0)

-- Zırh (Efsunlu ve Taşlı):
pc.make_item0({11409, 1}, {28442}, {1,2000,9,20,53,50,23,10}, 0)

elseif pc.get_job() == 2 then
-- SURA İÇİN EŞYALAR
pc.give_item2(19, 1) -- Kılıç+9

-- Zırh (Efsunlu ve Taşlı):
pc.make_item0({11609, 1}, {28442}, {1,2000,9,20,53,50,23,10}, 0)

-- Kask (Efsunlu):
pc.make_item0({12489, 1}, {}, {18,20,19,20,20,20,10,30,12,8}, 0)

elseif pc.get_job() == 3 then
-- ŞAMAN İÇİN EŞYALAR
pc.give_item2(7009, 1) -- Yelpaze+9

-- Zırh (Efsunlu ve Taşlı):
pc.make_item0({11809, 1}, {28442}, {1,2000,9,20,53,50,23,10}, 0)

-- Kask (Efsunlu):
pc.make_item0({12629, 1}, {}, {18,20,19,20,20,20,10,30,12,8}, 0)
end

-- ## ORTAK TAKILAR (Efsunlu Veriliyor) ##
-- Kalkan (Efsunlu):
pc.make_item0({13009, 1}, {}, {5,12,43,20,18,20,19,20,48,1}, 0)

-- Bilezik (Efsunlu):
pc.make_item0({14009, 1}, {}, {1,2000,16,10,18,20,19,20,21,20}, 0)

-- Kolye (Efsunlu):
pc.make_item0({16009, 1}, {}, {1,2000,43,20,15,10,16,10,10,30}, 0)

-- Ayakkabı (Efsunlu):
pc.make_item0({15009, 1}, {}, {1,2000,15,10,43,20,13,8,7,8}, 0)

-- Küpe (Efsunlu):
pc.make_item0({17009, 1}, {}, {8,20,41,8,18,20,19,20,21,20}, 0)

-- ## BİTİŞ İŞLEMLERİ ##
-- Oyuna girdiğine dair alttan duyuru geçer (613 kodu locale_string'den çeker).
notice_all(613, pc.get_name())

-- Durumu "__COMPLETE__" yapar. Böylece oyuncu ışınlandığında veya tekrar girdiğinde bu eşyaları bir daha ALMAZ.
set_state("__COMPLETE__")
end
end

state __COMPLETE__ begin
-- Bu state boştur, quest buraya geçtiğinde artık yukarıdaki "start" çalışmaz.
end
end[/CODE]
Level nasıl veriyoruz hocam
 
Arkadaşlar sürekli özel mesaj atıp "güncelleme ne zaman" diye sormayın cevap vermiyorum.
Konuda belirtim sistemsel olarak toplu güncelleme yapıyorum oyundaki var olan tüm sistemler değişti ve değişmeye devam ediyor.
Real işimden dolayı fazla bir zamanım olmadığı için var olan zamanıda bu dosyalar üzerinde değerlendiriyorum.
Az sabır 30 'dan fazla sistem değiştim :)
 

Şu an konuyu görüntüleyenler (Toplam : 4, Üye: 1, Misafir: 3)

Geri
Üst