melankolıa18 1
melankolıa18
romegames 1
romegames
Krutzo 1
Krutzo
shrpnl 1
shrpnl
Best Studio 1
Best Studio
D 1
delimuratt
Hikaye Ekle
Reklam vermek için turkmmo@gmail.com

en basit yoldan kill efekt duel efekt

  • Konuyu başlatan Konuyu başlatan apikomt2
  • Başlangıç tarihi Başlangıç tarihi
  • Cevaplar Cevaplar 6
  • Görüntüleme Görüntüleme 676
Durum
Üzgünüz bu konu cevaplar için kapatılmıştır...

apikomt2

Level 6
Uzman
Katılım
11 May 2023
Konular
270
Mesajlar
1,141
Çözüm
2
Online süresi
1mo 25d
Reaksiyon Skoru
744
Altın Konu
1
Başarım Puanı
199
MmoLira
1,170
DevLira
381
Ticaret - 0%
0   0   0

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!

bu konu ve bu konunun birleştirlmiş ve basitleştirilmiş hali.


Bu yolla birçok efekti çağırabilirsiniz.
mesela yürürken bile efekt yapabilirsiniz.

Sistem şöyle işler
Ws yollarken 2 tarafa efekt.
ws başlarken 2 tarafa efekt.
ws bitiminde 2 tarafa efekt.

diğer konulardan farkı kolay yoldan yapılması ve ölen oyuncuyada ölüm efekti eklenmesi

d:/ymir work/effect/etc/pvp/

bu bölüme atılacak dosyalar.

Kod:
Pvpp .cpp
like

void CPVPManager::Insert(LPCHARACTER pkChr, LPCHARACTER pkVictim)
{
    if (pkChr->IsDead() || pkVictim->IsDead())
        return;

    CPVP kPVP(pkChr->GetPlayerID(), pkVictim->GetPlayerID());

    CPVP * pkPVP;

    if ((pkPVP = Find(kPVP.m_dwCRC)))
    {
        if (pkPVP->Agree(pkChr->GetPlayerID()))
        {
            pkVictim->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("%s님과의 대결 시작!"), pkChr->GetName());
            pkChr->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("%s님과의 대결 시작!"), pkVictim->GetName());
// #ifdef ENABLE_PVP_EFFECT_SYSTEM


//ekleeee
//1. oyuncu ws başlama efekti
            pkVictim->SpecificEffectPacket("d:/ymir work/effect/etc/pvp/go.mse");
        //    2. oyuncu ws başlama efekti
            pkChr->SpecificEffectPacket("d:/ymir work/effect/etc/pvp/go.mse");
         
         
//ekleeee
         
// #endif
        }
        return;
    }

    pkPVP = M2_NEW CPVP(kPVP);

    pkPVP->SetVID(pkChr->GetPlayerID(), pkChr->GetVID());
    pkPVP->SetVID(pkVictim->GetPlayerID(), pkVictim->GetVID());

    m_map_pkPVP.emplace(pkPVP->m_dwCRC, pkPVP);

    m_map_pkPVPSetByID[pkChr->GetPlayerID()].emplace(pkPVP);
    m_map_pkPVPSetByID[pkVictim->GetPlayerID()].emplace(pkPVP);

    pkPVP->Packet();

    char msg[CHAT_MAX_LEN + 1];
    snprintf(msg, sizeof(msg), LC_TEXT("%s님이 대결신청을 했습니다. 승낙하려면 대결동의를 하세요."), pkChr->GetName());

    pkVictim->ChatPacket(CHAT_TYPE_INFO, msg);
    pkChr->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("%s에게 대결신청을 했습니다."), pkVictim->GetName());
// #ifdef ENABLE_PVP_EFFECT_SYSTEM

//ekleeee

// 1. oyuncu ws yollama efekt
    pkChr->SpecificEffectPacket("d:/ymir work/effect/etc/pvp/pvp_open1.mse");
    //2. oyuncu ws başlama efekt
    pkVictim->SpecificEffectPacket("d:/ymir work/effect/etc/pvp/pvp_open2.mse");
    //ekleeee
// #endif
    // NOTIFY_PVP_MESSAGE
    LPDESC pkVictimDesc = pkVictim->GetDesc();
    if (pkVictimDesc)
    {
        TPacketGCWhisper pack;

        int len = MIN(CHAT_MAX_LEN, strlen(msg) + 1);

        pack.bHeader = HEADER_GC_WHISPER;
        pack.wSize = sizeof(TPacketGCWhisper) + len;
        pack.bType = WHISPER_TYPE_SYSTEM;
        strlcpy(pack.szNameFrom, pkChr->GetName(), sizeof(pack.szNameFrom));

        TEMP_BUFFER buf;

        buf.write(&pack, sizeof(TPacketGCWhisper));
        buf.write(msg, len);

        pkVictimDesc->Packet(buf.read_peek(), buf.size());
    }
    // END_OF_NOTIFY_PVP_MESSAGE
}



Like


bool CPVPManager::Dead(LPCHARACTER pkChr, DWORD dwKillerPID)
{
    CPVPSetMap::iterator it = m_map_pkPVPSetByID.find(pkChr->GetPlayerID());

    if (it == m_map_pkPVPSetByID.end())
        return false;

    bool found = false;

    sys_log(1, "PVPManager::Dead %d", pkChr->GetPlayerID());
    TR1_NS::unordered_set<CPVP*>::iterator it2 = it->second.begin();

    while (it2 != it->second.end())
    {
        CPVP * pkPVP = *it2++;

        DWORD dwCompanionPID;

        if (pkPVP->m_players[0].dwPID == pkChr->GetPlayerID())
            dwCompanionPID = pkPVP->m_players[1].dwPID;
        else
            dwCompanionPID = pkPVP->m_players[0].dwPID;

        if (dwCompanionPID == dwKillerPID)
        {
            if (pkPVP->IsFight())
            {
                pkPVP->SetLastFightTime();
                pkPVP->Win(dwKillerPID);
// #ifdef ENABLE_PVP_EFFECT_SYSTEM

//ekleeee

                LPCHARACTER pkPVPChar = CHARACTER_MANAGER::instance().FindByPID(dwKillerPID);
                if (pkPVPChar)
                    //kazanan oyuncu efekt
                    pkPVPChar->SpecificEffectPacket("d:/ymir work/effect/etc/pvp/pvp_victory.mse");
                    //olen oyuncu efekt.
                    pkChr->SpecificEffectPacket("d:/ymir work/effect/etc/pvp/pvp_olen.mse");
                    //olum efekti
                    pkChr->SpecificEffectPacket("d:/ymir work/effect/etc/pvp/soul.mse");
                 
//ekleeee
                 
// #endif

                found = true;
                break;
            }
            else if (get_dword_time() - pkPVP->GetLastFightTime() <= 15000)
            {
                found = true;
                break;
            }
        }
    }

    return found;
}




Günün sözü 2

"Evet, bir zerre, bir yıldız kadar harika işler görebilir."
(Allah’ın kudretiyle küçük şeylerin bile büyük işler başarabildiğini ifade eder.)
 

Ekli dosyalar

  • pvp.zip
    pvp.zip
    315 KB · Görüntüleme: 0
Son düzenleme:

En Çok Reaksiyon Alan Mesajlar

Paylaşım için teşekkürler.

Lütfen 24 saat içerisinde görsel ekleyiniz
 
Paylaşım için teşekkürler
 
bu konu ve bu konunun birleştirlmiş ve basitleştirilmiş hali.


Bu yolla birçok efekti çağırabilirsiniz.
mesela yürürken bile efekt yapabilirsiniz.

Sistem şöyle işler
Ws yollarken 2 tarafa efekt.
ws başlarken 2 tarafa efekt.
ws bitiminde 2 tarafa efekt.

diğer konulardan farkı kolay yoldan yapılması ve ölen oyuncuyada ölüm efekti eklenmesi

d:/ymir work/effect/etc/pvp/

bu bölüme atılacak dosyalar.

Kod:
Pvpp .cpp
like

void CPVPManager::Insert(LPCHARACTER pkChr, LPCHARACTER pkVictim)
{
    if (pkChr->IsDead() || pkVictim->IsDead())
        return;

    CPVP kPVP(pkChr->GetPlayerID(), pkVictim->GetPlayerID());

    CPVP * pkPVP;

    if ((pkPVP = Find(kPVP.m_dwCRC)))
    {
        if (pkPVP->Agree(pkChr->GetPlayerID()))
        {
            pkVictim->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("%s님과의 대결 시작!"), pkChr->GetName());
            pkChr->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("%s님과의 대결 시작!"), pkVictim->GetName());
// #ifdef ENABLE_PVP_EFFECT_SYSTEM


//ekleeee
//1. oyuncu ws başlama efekti
            pkVictim->SpecificEffectPacket("d:/ymir work/effect/etc/pvp/go.mse");
        //    2. oyuncu ws başlama efekti
            pkChr->SpecificEffectPacket("d:/ymir work/effect/etc/pvp/go.mse");
        
        
//ekleeee
        
// #endif
        }
        return;
    }

    pkPVP = M2_NEW CPVP(kPVP);

    pkPVP->SetVID(pkChr->GetPlayerID(), pkChr->GetVID());
    pkPVP->SetVID(pkVictim->GetPlayerID(), pkVictim->GetVID());

    m_map_pkPVP.emplace(pkPVP->m_dwCRC, pkPVP);

    m_map_pkPVPSetByID[pkChr->GetPlayerID()].emplace(pkPVP);
    m_map_pkPVPSetByID[pkVictim->GetPlayerID()].emplace(pkPVP);

    pkPVP->Packet();

    char msg[CHAT_MAX_LEN + 1];
    snprintf(msg, sizeof(msg), LC_TEXT("%s님이 대결신청을 했습니다. 승낙하려면 대결동의를 하세요."), pkChr->GetName());

    pkVictim->ChatPacket(CHAT_TYPE_INFO, msg);
    pkChr->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("%s에게 대결신청을 했습니다."), pkVictim->GetName());
// #ifdef ENABLE_PVP_EFFECT_SYSTEM

//ekleeee

// 1. oyuncu ws yollama efekt
    pkChr->SpecificEffectPacket("d:/ymir work/effect/etc/pvp/pvp_open1.mse");
    //2. oyuncu ws başlama efekt
    pkVictim->SpecificEffectPacket("d:/ymir work/effect/etc/pvp/pvp_open2.mse");
    //ekleeee
// #endif
    // NOTIFY_PVP_MESSAGE
    LPDESC pkVictimDesc = pkVictim->GetDesc();
    if (pkVictimDesc)
    {
        TPacketGCWhisper pack;

        int len = MIN(CHAT_MAX_LEN, strlen(msg) + 1);

        pack.bHeader = HEADER_GC_WHISPER;
        pack.wSize = sizeof(TPacketGCWhisper) + len;
        pack.bType = WHISPER_TYPE_SYSTEM;
        strlcpy(pack.szNameFrom, pkChr->GetName(), sizeof(pack.szNameFrom));

        TEMP_BUFFER buf;

        buf.write(&pack, sizeof(TPacketGCWhisper));
        buf.write(msg, len);

        pkVictimDesc->Packet(buf.read_peek(), buf.size());
    }
    // END_OF_NOTIFY_PVP_MESSAGE
}



Like


bool CPVPManager::Dead(LPCHARACTER pkChr, DWORD dwKillerPID)
{
    CPVPSetMap::iterator it = m_map_pkPVPSetByID.find(pkChr->GetPlayerID());

    if (it == m_map_pkPVPSetByID.end())
        return false;

    bool found = false;

    sys_log(1, "PVPManager::Dead %d", pkChr->GetPlayerID());
    TR1_NS::unordered_set<CPVP*>::iterator it2 = it->second.begin();

    while (it2 != it->second.end())
    {
        CPVP * pkPVP = *it2++;

        DWORD dwCompanionPID;

        if (pkPVP->m_players[0].dwPID == pkChr->GetPlayerID())
            dwCompanionPID = pkPVP->m_players[1].dwPID;
        else
            dwCompanionPID = pkPVP->m_players[0].dwPID;

        if (dwCompanionPID == dwKillerPID)
        {
            if (pkPVP->IsFight())
            {
                pkPVP->SetLastFightTime();
                pkPVP->Win(dwKillerPID);
// #ifdef ENABLE_PVP_EFFECT_SYSTEM

//ekleeee

                LPCHARACTER pkPVPChar = CHARACTER_MANAGER::instance().FindByPID(dwKillerPID);
                if (pkPVPChar)
                    //kazanan oyuncu efekt
                    pkPVPChar->SpecificEffectPacket("d:/ymir work/effect/etc/pvp/pvp_victory.mse");
                    //olen oyuncu efekt.
                    pkChr->SpecificEffectPacket("d:/ymir work/effect/etc/pvp/pvp_olen.mse");
                    //olum efekti
                    pkChr->SpecificEffectPacket("d:/ymir work/effect/etc/pvp/soul.mse");
                
//ekleeee
                
// #endif

                found = true;
                break;
            }
            else if (get_dword_time() - pkPVP->GetLastFightTime() <= 15000)
            {
                found = true;
                break;
            }
        }
    }

    return found;
}




Günün sözü 2

"Evet, bir zerre, bir yıldız kadar harika işler görebilir."
(Allah’ın kudretiyle küçük şeylerin bile büyük işler başarabildiğini ifade eder.)

Paylaşım için 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