sen272 1
sen272
Mt2Hizmet 1
Mt2Hizmet
C 1
chengdu
xranzei 1
xranzei
zendor2 1
zendor2
Bvural41 1
Bvural41
noisiv 1
noisiv
Manwe Work 1
Manwe Work
Almira2 1
Almira2
romegames 1
romegames
Hikaye Ekle
Reklam vermek için turkmmo@gmail.com

Damage Rekor Sistemi

  • Konuyu başlatan Konuyu başlatan Koray'
  • Başlangıç tarihi Başlangıç tarihi
  • Cevaplar Cevaplar 19
  • Görüntüleme Görüntüleme 5K
Durum
Üzgünüz bu konu cevaplar için kapatılmıştır...

ROHAN2 WORLD 1-120 TR TİPİ OFFICIAL YOHARA, BALATHOR VE AMON! 80. GÜNÜNDE! +10.000 ONLİNE! HİLE VE BOT %100 ENGELLİ HEMEN TIKLA!

3aa3020fc8.jpg


Yapılan en yüksek hasarı sisteme kaydeder ve yeni rekor kırıldıkça duyuru geçer isteğe göre ödül felanda ekleyebilirsiniz


*char.cpp
Arat:

Kod:
    // MINING
    m_pkMiningEvent = NULL;
    // END_OF_MINING

Üstüne ekle:
Kod:
    m_pkRecordControlEvent = NULL;



Arat:
Kod:
m_dwMountTime = 0;

Üstüne ekle:
Kod:
m_nGetDamageRecord = quest::CQuestManager::instance().GetEventFlag("damage_record");



Arat:
Kod:
    //DELAYED_WARP
    event_cancel(&m_pkWarpEvent);
    event_cancel(&m_pkCheckSpeedHackEvent);
    //END_DELAYED_WARP

Altına ekle:
Kod:
event_cancel(&m_pkRecordControlEvent);





Arat:
Kod:
int    CHARACTER::GetSkillPowerByLevel(int level, bool bMob) const
{
    return CTableBySkill::instance().GetSkillPowerByLevelFromType(GetJob(), GetSkillGroup(), MINMAX(0, level, SKILL_MAX_LEVEL), bMob);
}

Altına ekle:
Kod:
void CHARACTER::SetDamageRecord(int igetnewrecord){
    m_nGetDamageRecord = igetnewrecord;
}


void CHARACTER::CheckDamageRecord(){
    int igetnewrecord = quest::CQuestManager::instance().GetEventFlag("damage_record");
    if (igetnewrecord != GetDamageRecord())
        SetDamageRecord(igetnewrecord);
}


EVENTFUNC(record_check_event)
{
    char_event_info* info = dynamic_cast<char_event_info*>(event->info);
    if (info == NULL)
    {
        sys_err("record_check_event> <Factor> Null pointer");
        return 0;
    }


    LPCHARACTER    ch = info->ch;
    if (ch == NULL) { // <Factor>
        return 0;
    }


    ch->CheckDamageRecord();


    return PASSES_PER_SEC(10);
}


void CHARACTER::InitRecordControlEvent(){
    if (m_pkRecordControlEvent)
        return;


    char_event_info* info = AllocEventInfo<char_event_info>();


    info->ch = this;


    m_pkRecordControlEvent = event_create(record_check_event, info, PASSES_PER_SEC(10));
}


*char.h

Arat:
Kod:
        int                    m_iMaxAggro;
        // End of Battle

Altına ekle:
Kod:
        LPEVENT                m_pkRecordControlEvent;
        int                    m_nGetDamageRecord;
    public:
        void                InitRecordControlEvent();
        int                    GetDamageRecord() const        { return m_nGetDamageRecord; }
        void                SetDamageRecord(int igetnewrecord);
        void                CheckDamageRecord();


*char_battle.cpp

Arat:
Kod:
    if (GetHP() <= 0)
    {
        Stun();


        if (pAttacker && !pAttacker->IsNPC())
            m_dwKillerPID = pAttacker->GetPlayerID();
        else
            m_dwKillerPID = 0;
    }

Altına ekle:
Kod:
    if (pAttacker->IsPC()){
        int newdam = dam;
        if (newdam > GetDamageRecord()) {
            SetDamageRecord(newdam);
            quest::CQuestManager::instance().RequestSetEventFlag("damage_record", newdam);
            quest::CQuestManager::instance().RequestSetEventFlag("damage_record_own", pAttacker->GetPlayerID());




            char buf[250];
            snprintf(buf, sizeof(buf), "%s isimli oyuncu %d damage ile damage rekorunu kırdı !", pAttacker->GetName(), dam);
            SendNotice(buf);
        }
    }


*input_login.cpp

Arat:
Kod:
    if (g_noticeBattleZone)
    {
        if (FN_is_battle_zone(ch))
        {
            ch->ChatPacket(CHAT_TYPE_NOTICE, LC_TEXT("ÀÌ ¸Ê¿¡¼± °­Á¦ÀûÀÎ ´ëÀüÀÌ ÀÖÀ»¼ö µµ ÀÖ½À´Ï´Ù."));
            ch->ChatPacket(CHAT_TYPE_NOTICE, LC_TEXT("ÀÌ Á¶Ç׿¡ µ¿ÀÇÇÏÁö ¾ÊÀ»½Ã"));
            ch->ChatPacket(CHAT_TYPE_NOTICE, LC_TEXT("º»ÀÎÀÇ ÁÖ¼º ¹× ºÎ¼ºÀ¸·Î µ¹¾Æ°¡½Ã±â ¹Ù¶ø´Ï´Ù."));
        }
    }

Altına ekle:
Kod:
ch->InitRecordControlEvent();


*questlua_global.cpp

Arat:
Kod:
            {    "add_ox_quiz",                    _add_ox_quiz                    },
Üstüne ekle:
Kod:
            {    "reset_damage_record",            _reload_damage_record            },
            {    "get_damage_record",            _get_damage_record                },
            {    "get_damage_record_owner",        _get_damage_record_owner        },

Arat:
Kod:
    void RegisterGlobalFunctionTable(lua_State* L)
Üstüne ekle:
Kod:
    int _reload_damage_record(lua_State* L)
    {
        quest::CQuestManager::instance().SetEventFlag("damage_record", 0);
        SendNotice("Damage rekoru sifirlandi");


        return 1;
    }


    int _get_damage_record(lua_State* L)
    {
        int iDamageRecord = quest::CQuestManager::instance().GetEventFlag("damage_record");
        if (iDamageRecord)
            lua_pushnumber(L, iDamageRecord);
        else
            lua_pushnumber(L, 0);


        return 1;
    }


    int _get_damage_record_owner(lua_State* L)
    {
        int iDamageRecordOwnerPid = quest::CQuestManager::instance().GetEventFlag("damage_record_own");
        if (iDamageRecordOwnerPid){
            LPCHARACTER chRecordOwner = CHARACTER_MANAGER::instance().FindByPID(iDamageRecordOwnerPid);
            if (chRecordOwner){
                lua_pushstring(L, chRecordOwner->GetName());
            }
        }


        return 1;
    }


Basit bir kontrol paneli:
Kod:
--[[
Yeni quest fonksiyonlarını quest_functions dosyasına ekleyin:
get_damage_record
get_damage_record_owner
reset_damage_record
--]]
quest dmg_record begin
    state start begin
        when 20094.chat."Damage Rekor " with pc.is_gm() begin
            local s = select("Rekoru Sifirla", "Rekor sahibi", "Rekoru Oto Duyur", "Iptal")
            if s == 1 then
                reset_damage_record()
            elseif s == 2 then
                local record, owner = get_damage_record(), get_damage_record_owner()
                say_title("Damage Rekor bilgi")
                say("Damage rekoru:")
                say(record)
                say("Damage rekoru Sahibi:")
                say(owner)
            elseif s == 3 then
                local s_duyuru = select("Duyuruyu Ac", "Duyuruyu Kapat", "Iptal")
                if s_duyuru == 1 then
                    clear_server_timer("oto_duyuru_rekor")
                    server_loop_timer("oto_duyuru_rekor", 40)
                    syschat("Otomatik Duyuru kisa sure icinde baslatilacak")
                elseif s_duyuru == 2 then
                    clear_server_timer("oto_duyuru_rekor")
                    syschat("Otomatik Duyuru durduruldu")
                elseif s_duyuru == 3 then
                    return
                end
            elseif s == 4 then
                return
            end
        end


        when oto_duyuru_rekor.server_timer begin
            local time = os.date("%X")
            local splitData = dmg_record.split(time, ':')
            local newtime = tostring(splitData[1].. ":".. splitData[2])


            if newtime == "00:30" or newtime == "01:30" or newtime == "02:30" or newtime == "03:30" or newtime == "04:30" or newtime == "05:30" or newtime == "06:30" or newtime == "07:30" or newtime == "08:30" or newtime == "09:30" or newtime == "10:30" or newtime == "11:30" or newtime == "12:30" or newtime == "13:30" or newtime == "14:30" or newtime == "15:30" or newtime == "16:30" or newtime == "17:30" or newtime == "18:30" or newtime == "19:30" or newtime == "20:30" or newtime == "21:30" or newtime == "22:30" or newtime == "23:30" then
                local record, owner = get_damage_record(), get_damage_record_owner()
                notice_all("Guncel damage rekor sahibi: "..owner .." Rekoru: "..record)
            end
        end




        function split(command_, x)
            return dmg_record.split_(command_,x)
        end
        function split_(string_,delimiter)
            local result = { }
            local from  = 1
            local delim_from, delim_to = string.find( string_, delimiter, from  )
            while delim_from do
                table.insert( result, string.sub( string_, from , delim_from-1 ) )
                from  = delim_to + 1
                delim_from, delim_to = string.find( string_, delimiter, from  )
            end
            table.insert( result, string.sub( string_, from  ) )
            return result
        end
    end
end

Koray Abi Sorun Nerede En Son Atılan Damageyi Rekor Olarak Sayıyor Mesela ben 70 K vurdum 69 k Vurunca Gene Kırdı Diye Yazıyor 70 K YI Gecince Yazmasını İstiyorum Ben
21c268c060.jpg
 
return PASSES_PER_SEC(10);
m_pkRecordControlEvent = event_create(record_check_event, info, PASSES_PER_SEC(10));

Maks. damage oyunculara 10snde yansır 10 yazan yerleri 1 olarak değiştirip dene
 
return PASSES_PER_SEC(10);
m_pkRecordControlEvent = event_create(record_check_event, info, PASSES_PER_SEC(10));

Maks. damage oyunculara 10snde yansır 10 yazan yerleri 1 olarak değiştirip dene

Bu Sekildemi Abi Üsteki Secondla Alakalı Bişey Varmı ?
a446ff6e2d.png
 
teşekkür Faydalı
 
Editlendiğine göre kapatıldı
 
Durum
Üzgünüz bu konu cevaplar için kapatılmıştır...

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

Geri
Üst