Boss Kill Log

isthambul1453

Yasaklanmış Üye
Cezalı
Mesaj
354
Çözümler
3
Beğeni
255
Puan
764
Ticaret Puanı
0
game/src/log.h

void DragonSlayLog(DWORD dwGuildID, DWORD dwDragonVnum, DWORD dwStartTime, DWORD dwEndTime);

altına ekle

void BossKillLog(DWORD dwPID, DWORD dwBossVnum, DWORD dwWeaponVnum, DWORD dwChannel, DWORD dwMapIndex);

log.cpp ye ekle

void LogManager::BossKillLog(DWORD dwPID, DWORD dwBossVnum, DWORD dwWeaponVnum, DWORD dwChannel, DWORD dwMapIndex)
{
Query("INSERT INTO boss_kill_log (pid, boss_vnum, weapon_vnum, channel, map_index, time) VALUES(%u, %u, %u, %u, %u, NOW())",
dwPID, dwBossVnum, dwWeaponVnum, dwChannel, dwMapIndex);
}

char_battle.cpp aç ve bul

if (GetMobRank() >= MOB_RANK_BOSS && pkKiller && pkKiller->IsPC())
{
char buf[51];
snprintf(buf, sizeof(buf), "%d %ld", g_bChannel, pkKiller->GetMapIndex());
if (IsStone())
LogManager::instance().CharLog(pkKiller, GetRaceNum(), "STONE_KILL", buf);
else
LogManager::instance().CharLog(pkKiller, GetRaceNum(), "BOSS_KILL", buf);
}

değiştir

if (GetMobRank() >= MOB_RANK_BOSS && pkKiller && pkKiller->IsPC())
{
char buf[51];
snprintf(buf, sizeof(buf), "%d %ld", g_bChannel, pkKiller->GetMapIndex());
if (IsStone())
LogManager::instance().CharLog(pkKiller, GetRaceNum(), "STONE_KILL", buf);
else
LogManager::instance().CharLog(pkKiller, GetRaceNum(), "BOSS_KILL", buf);
LPITEM pkWeapon = pkKiller->GetWear(WEAR_WEAPON);
DWORD weaponVnum = pkWeapon ? pkWeapon->GetVnum() : 0;
LogManager::instance().BossKillLog(pkKiller->GetPlayerID(), GetRaceNum(), weaponVnum, g_bChannel, pkKiller->GetMapIndex());

}

Bir oyuncu bir boss öldürdüğünde, oyuncu kimliğini, boss vnum'unu ve kullandığı silah vnum'unu kaydeder

sql

SQL:
Genişlet Daralt Kopyala
CREATE TABLE boss_kill_log (
    id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
    pid INT NOT NULL,
    boss_vnum INT NOT NULL,
    weapon_vnum INT NOT NULL,
    channel INT NOT NULL,
    map_index INT NOT NULL,
    time DATETIME NOT NULL
);
 
Versiyon 2

char_battle.cpp aç arat

C++:
Genişlet Daralt Kopyala
    if (GetMobRank() >= MOB_RANK_BOSS && pkKiller && pkKiller->IsPC())
    {
        char buf[51];
        snprintf(buf, sizeof(buf), "%d %ld", g_bChannel, pkKiller->GetMapIndex());
        if (IsStone())
            LogManager::instance().CharLog(pkKiller, GetRaceNum(), "STONE_KILL", buf);
        else
            LogManager::instance().CharLog(pkKiller, GetRaceNum(), "BOSS_KILL", buf);
    }

değiştir

Kod:
Genişlet Daralt Kopyala
    if (GetMobRank() >= MOB_RANK_BOSS && pkKiller && pkKiller->IsPC())
    {
        char buf[51];
        snprintf(buf, sizeof(buf), "%d %ld", g_bChannel, pkKiller->GetMapIndex());
        if (IsStone())
            LogManager::instance().CharLog(pkKiller, GetRaceNum(), "STONE_KILL", buf);
        else
            LogManager::instance().CharLog(pkKiller, GetRaceNum(), "BOSS_KILL", buf);
        LPITEM pkWeapon = pkKiller->GetWear(WEAR_WEAPON);
        char hint[32];
        snprintf(hint, sizeof(hint), "%u", GetRaceNum());
        if (pkWeapon)
            LogManager::instance().ItemLog(pkKiller, pkWeapon, "BOSS_KILL_ITEM", hint);
        else
            LogManager::instance().ItemLog(pkKiller, 0, 0, "BOSS_KILL_ITEM", hint);
    }

Yeni bir günlük girişi türü `BOSS_KILL_ITEM` eklendi. Öldürmeleri şu şekilde görüntüleyebilirsiniz (ekte anlatılmıştır):
 

Dosya Eklentileri

Uyarı: Bu konu açıldığından bu yana baya zaman geçmiş.
Muhtemelen daha fazla tartışma gerekli değildir ki bu durumda yeni bir konu başlatmayı öneririz. Eğer yine de cevabınızın gerekli olduğunu düşünüyorsanız buna rağmen cevap verebilirsiniz.
Geri
Üst