kralhakan2009 1
kralhakan2009
Vahsi Uzman 1
Vahsi Uzman
farkmt2official 1
farkmt2official
Bvural41 1
Bvural41
noisiv 1
noisiv
Manwe Work 1
Manwe Work
Hikaye Ekle

GM Hesaptan Oyuncuyu Kilitleme

5.00 yıldız(lar) 1 Değerlendirme Değerlendirenler

Ayyıldız2 | 2008 TR Yapısı • 1-99 Orta Emek Destan • Oto Avsız • 10 Temmuz 21:00 HEMEN TIKLA!




C++:
GameLib/ActorInstance.cpp

Açılır,

// Arat
BOOL CActorInstance::IsDead()
{
    return m_isRealDead;
}
//  Altına ekle
#ifdef ENABLE_GM_LOCK_PLAYER
BOOL CActorInstance::IsLocked()
{
    return m_isLocked;
}
#endif
// Arat:
void CActorInstance::Stun()
{
    m_isStun = TRUE;
}
// Altına ekle
#ifdef ENABLE_GM_LOCK_PLAYER
void CActorInstance::LockPlayer(BYTE state)
{
    m_isLocked = state;
}
#endif
// Arat
    m_isResistFallen = FALSE;
// Altına ekle
#ifdef ENABLE_GM_LOCK_PLAYER
    m_isLocked = FALSE;
#endif

C++:
GameLib/ActorInstanceBattle.cpp

// bunun içinde
bool CActorInstance::CanAct()
// bul
    if (IsSleep())
        return false;
// altına ekle
#ifdef ENABLE_GM_LOCK_PLAYER
    if (IsLocked())
        return false;
#endif

C++:
GameLib/ActorInstance.h

// Arat
        BOOL        IsDead();
// altına ekle
#ifdef ENABLE_GM_LOCK_PLAYER
        BOOL        IsLocked();
        void        LockPlayer(BYTE state);
#endif
// Arat
        BOOL                        m_isRealDead;
// altına ekle
#ifdef ENABLE_GM_LOCK_PLAYER
        BOOL                        m_isLocked;
#endif

C++:
UserInterface/Locale_inc.h

// ekle

#define ENABLE_GM_LOCK_PLAYER                        // Lock Player Move by GM

C++:
UserInterface/InstanceBase.cpp

// Arat
BOOL CInstanceBase::IsSleep()
{
    return m_GraphicThingInstance.IsSleep();
}
// Altına ekle
#ifdef ENABLE_GM_LOCK_PLAYER
BOOL CInstanceBase::IsLocked()
{
    return m_GraphicThingInstance.IsLocked();
}
#endif

C++:
UserInterface/InstanceBaseBattle.cpp

// bunun içinde
bool CInstanceBase::NEW_UseSkill(UINT uSkill, UINT uMot, UINT uMotLoopCount, bool isMovingSkill)
// bul
    if (IsStun())
        return false;
// Altına ekle
#ifdef ENABLE_GM_LOCK_PLAYER
    if (IsLocked())
        return false;
#endif
// Bunun içinde
void CInstanceBase::NEW_Attack(float fDirRot)
// bul
    if (IsUsingSkill())
        return;
// Altına ekle
#ifdef ENABLE_GM_LOCK_PLAYER
    if (IsLocked())
        return;
#endif
// Dosyanın sonuna ekle
#ifdef ENABLE_GM_LOCK_PLAYER
void CInstanceBase::SetLockPlayer(BYTE state)
{
    m_GraphicThingInstance.LockPlayer(state);
    SetLoopMotion(CRaceMotionData::NAME_WAIT);
}
#endif

C++:
UserInterface/InstanceBase.h

// Arat
        void                    Die();
// Altına ekle
#ifdef ENABLE_GM_LOCK_PLAYER
        void                    SetLockPlayer(BYTE status);
#endif
// Arat
        BOOL                    IsSleep();
// Altına ekle
#ifdef ENABLE_GM_LOCK_PLAYER
        BOOL                    IsLocked();
#endif

C++:
UserInterface/Packet.h

// Arat
    HEADER_GC_MAIN_CHARACTER4_BGM_VOL            = 138,
// Altına ekle
#ifdef ENABLE_GM_LOCK_PLAYER
    HEADER_GC_LOCK_PLAYER                        = 139,
#endif
// Dosya sonundaki bu kodun
#pragma pack(pop)
// üstüne ekle
#ifdef ENABLE_GM_LOCK_PLAYER
typedef struct SPacketGCLockPlayer
{
    BYTE    bHeader;
    BYTE    status;
    DWORD    vid;
} TPacketGCLockPlayer;
#endif

C++:
UserInterface/PythonNetworkStream.cpp

// Arat
            Set(HEADER_GC_ACCE,    CNetworkPacketHeaderMap::TPacketType(sizeof(TPacketGCAcce), DYNAMIC_SIZE_PACKET));
// Altına ekle
#ifdef ENABLE_GM_LOCK_PLAYER
            Set(HEADER_GC_LOCK_PLAYER, CNetworkPacketHeaderMap::TPacketType(sizeof(TPacketGCLockPlayer), STATIC_SIZE_PACKET));
#endif

C++:
UserInterface/PythonNetworkStream.h

// Arat
        bool RecvFishing();
// Altına ekle
#ifdef ENABLE_GM_LOCK_PLAYER
        bool RecvLockPlayer();
#endif

C++:
UserInterface/PythonPlayerInputMouse.cpp

// Bunun içinde
void CPythonPlayer::NEW_SetMouseSmartState(int eMBS, bool isAuto)
// bul
    if (pkInstMain->IsSleep())
    {
        return;
    }
// Altına ekle
#ifdef ENABLE_GM_LOCK_PLAYER
    if (pkInstMain->IsLocked())
        return;
#endif

C++:
UserInterface/PythonNetworkStreamPhaseGame.cpp

// Arat
            default:
                ret = RecvDefaultPacket(header);
                break;
        }
    }
    if (!ret)
        RecvErrorPacket(header);
// Üstüne ekle
#ifdef ENABLE_GM_LOCK_PLAYER
            case HEADER_GC_LOCK_PLAYER:
                ret = RecvLockPlayer();
                break;
#endif
// Dosyanın sonuna ekle
#ifdef ENABLE_GM_LOCK_PLAYER
bool CPythonNetworkStream::RecvLockPlayer()
{
    TPacketGCLockPlayer packet;
    if (!Recv(sizeof(packet), &packet))
        return false;
    CPythonCharacterManager& rkChrMgr = CPythonCharacterManager::Instance();
    CInstanceBase* pkInstSel = rkChrMgr.GetInstancePtr(packet.vid);
    if (pkInstSel)
    {
        pkInstSel->SetLockPlayer(packet.status);
    }
    return true;
}
#endif

C++:
common/service.h

// ekle

#define ENABLE_GM_LOCK_PLAYER                    // Lock Player Move by GM

C++:
game/cmd.cpp

// Arat
struct command_info cmd_info[] =
// Üstüne ekle
#ifdef ENABLE_GM_LOCK_PLAYER
ACMD(do_lock_player);
#endif
// Arat
    { "\n",                        NULL,                        0,                POS_DEAD,        GM_IMPLEMENTOR    }
// Üstüne ekle
#ifdef ENABLE_GM_LOCK_PLAYER
    { "lock_player",            do_lock_player,                0,                POS_DEAD,        GM_IMPLEMENTOR },
#endif

C++:
game/char.h

// dosya sonuna ekle
BEFORE:
};
ESex GET_SEX(LPCHARACTER ch);
this:
#ifdef ENABLE_GM_LOCK_PLAYER
    public:
        bool    isLocked() const;
        void    LockPlayer(BYTE status);
    protected:
        BOOL    m_isLocked;
#endif

C++:
game/cmd_general.cpp

// Bunun içinde
ACMD(do_user_horse_ride):
// bul
    if (ch->IsDead() || ch->IsStun())
// bununla değiştir
    if (ch->IsDead() || ch->IsStun()
#ifdef ENABLE_GM_LOCK_PLAYER
         || ch->isLocked()
#endif
        )
// Bunun içinde
ACMD(do_ride):
// bul
    if (ch->IsDead() || ch->IsStun())
// bunun ile değiştir
    if (ch->IsDead() || ch->IsStun()
#ifdef ENABLE_GM_LOCK_PLAYER
        || ch->isLocked()
#endif
        )

C++:
game/cmd_gm.cpp

// Dosya sonuna ekle
#ifdef ENABLE_GM_LOCK_PLAYER
ACMD(do_lock_player)
{
    char arg1[256];
    one_argument(argument, arg1, sizeof(arg1));
    const char* name = arg1;
    if (!*arg1)
    {
        ch->ChatPacket(CHAT_TYPE_INFO, "Invalid argument.");
        return;
    }
    LPCHARACTER sas = CHARACTER_MANAGER::instance().FindPC(name);
    if (!sas)
    {
        ch->ChatPacket(CHAT_TYPE_INFO, "Der Spieler ist nicht Online");
        return;
    }
    if (!sas->IsPC())
        return;
    DWORD vid = sas->GetVID();
    LPCHARACTER tch = CHARACTER_MANAGER::instance().Find(vid);
    const char* spieler = sas->GetName();
    if (!tch)
    {
        ch->ChatPacket(CHAT_TYPE_INFO, "<Sytem> Der Spieler existiert nicht!");
        return;
    }
    if (!tch->IsPC())
        return;
    BYTE status;
    if (tch->isLocked())
        status = 0;
    else
        status = 1;
    if (status == 1)
        tch->ChatPacket(CHAT_TYPE_INFO, "You have been locked by a GM");
    else
        tch->ChatPacket(CHAT_TYPE_INFO, "You have benn unlocked by a GM");
    tch->ChatPacket(CHAT_TYPE_INFO, "You was stucked by a GM.");
    tch->LockPlayer(status);
    TPacketGCLockPlayer packet;
    packet.bHeader = HEADER_GC_LOCK_PLAYER;
    packet.status = status;
    packet.vid = vid;
    tch->GetDesc()->Packet(&packet, sizeof(packet));
    if (status == 1)
        ch->ChatPacket(CHAT_TYPE_INFO, "Locked %s(%d)", spieler, vid);
    else
        ch->ChatPacket(CHAT_TYPE_INFO, "Unlocked %s(%d)", spieler, vid);
}
#endif

C++:
game/packet.h

// Arat
    HEADER_GC_MAIN_CHARACTER4_BGM_VOL            = 138,
// altına ekle
#ifdef ENABLE_GM_LOCK_PLAYER
    HEADER_GC_LOCK_PLAYER                        = 139,
#endif
// Dosya sonundaki bu kodun
#pragma pack()
// üstüne ekle
#ifdef ENABLE_GM_LOCK_PLAYER
typedef struct SPacketGCLockPlayer
{
    BYTE    bHeader;
    BYTE    status;
    DWORD    vid;
} TPacketGCLockPlayer;
#endif

C++:
game/char.cpp

// Arat
void CHARACTER::Initialize()
{
    CEntity::Initialize(ENTITY_CHARACTER);
// Altına ekle
#ifdef ENABLE_GM_LOCK_PLAYER
    m_isLocked = FALSE;
#endif
// Bunun içinde
    bool CHARACTER::CanMove() const
// bul
    if (GetMyShop())
        return false;
// Altına ekle
#ifdef ENABLE_GM_LOCK_PLAYER
    if (isLocked())
        return false;
#endif
// Dosya sonuna ekle
#ifdef ENABLE_GM_LOCK_PLAYER
bool CHARACTER::isLocked() const
{
    return m_isLocked;
}
void CHARACTER::LockPlayer(BYTE status)
{
    m_isLocked = status;
}
#endif
 
Başarılı, py taraflı yaparak fısıldamanın yanına bi yere eklenirse daha kullanışlı olur. Ki buna benzer bi sistem var gibi hatırlıyorum ama çıkaramadım 🤨
 

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

Geri
Üst