Cannn6161 1
Cannn6161
onur akbaş 1
onur akbaş
PrimeAC 1
PrimeAC
Mt2Hizmet 1
Mt2Hizmet
romegames 1
romegames
Fethi Polat 1
Fethi Polat
xranzei 1
xranzei
Bvural41 1
Bvural41
kralhakan2009 1
kralhakan2009
noisiv 1
noisiv
Manwe Work 1
Manwe Work
Vahsi Uzman 1
Vahsi Uzman
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!

En yüksek damageyi noticeliyor :) mesela 4.999 damage yapılmış birdaha 4.999 damage yapılınca yazmayacak ; 5.000 oldugunda yazıcak.

Benim ise dedigim 1k atar 1 item takar 2 k atar bi item daha takar 3 k atar dedigim olay bu yanlış anladın herhal
 
Benim ise dedigim 1k atar 1 item takar 2 k atar bi item daha takar 3 k atar dedigim olay bu yanlış anladın herhal
sığ tartışmalar senin yorumların arkadaşım ne menem bi yorum bunlar bırak sal az komedi
 
sığ tartışmalar senin yorumların arkadaşım ne menem bi yorum bunlar bırak sal az komedi
tumblr_n0g5tkjtxT1tqa9joo1_500.jpg
 
Sistem düşüncesi güzel olmuş fakat sürekli notice geçmesi server sağlığına zararlı olur adam yumruk atar düz vurur hava açar düz vurur item çıkarır düz vurur ve buda sürekli notice geçer böyle bir sıkıntı olmazmı?

Aynen böyle bir şey olacaktır. Eğer xx adlı oyuncu damage kırdıysa bir daha o gün içinde kırdığı damage notice olarak geçmesin bence
 
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
teşekkürler
 
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