Boss Kill Log

isthambul1453

Üye
Üye
Mesaj
103
Beğeni
79
Puan
351
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

Geri
Üst