Hikayeler

Reklam vermek için turkmmo@gmail.com
Kaynak ikonu

## TR TİPİ ZAR ATMA SİSTEMİ ## GERİ DÖNÜŞ ŞEREFİNE ## 1

indirmek için izniniz yok

Metin2 EP, Valorant VP dahil tüm oyun ürünlerini en uygun fiyatlarla bulabilir, Item ve Karakterlerinizi hızlıca satabilirsiniz. HEMEN TIKLA!

Paylaşım için teşekkürler.
 
Teşekkürler.
 
Te
Merhaba arkadaşlar.
Dün paylaşılan filesten söktüğüm bu sistemi sizlerle paylaşmak istedim.
Bir teşekkürü çok görmeyip forumda paylaşım yapan kişileri daha fazla paylaşıma teşvik edebilirsiniz.

common\CommonDefines.h:
//müsait bir yere ekle;

#define ENABLE_DICE_SYSTEM

common\length.h:
//arat;

    CHAT_TYPE_MONARCH_NOTICE,

//altına ekle;

#ifdef ENABLE_DICE_SYSTEM
    CHAT_TYPE_DICE_INFO,
#endif

game\src\char_battle.cpp:
//arat;

            if (CBattleArena::instance().IsBattleArenaMap(pkAttacker->GetMapIndex()) == false)
            {
                item->SetOwnership(pkAttacker);
            }

//değiştir;

            if (CBattleArena::instance().IsBattleArenaMap(pkAttacker->GetMapIndex()) == false)
            {
#ifdef ENABLE_DICE_SYSTEM
                if (pkAttacker->GetParty())
                {
                    FPartyDropDiceRoll f(item, pkAttacker);
                    f.Process(this);
                }
                else
                    item->SetOwnership(pkAttacker);
#else
                item->SetOwnership(pkAttacker);
#endif
            }

//tekrar arat;

                    if (CBattleArena::instance().IsBattleArenaMap(ch->GetMapIndex()) == false)
                    {
                        item->SetOwnership(ch);
                    }

//değiştir;

                    if (CBattleArena::instance().IsBattleArenaMap(ch->GetMapIndex()) == false)
                    {
#ifdef ENABLE_DICE_SYSTEM
                        if (ch->GetParty())
                        {
                            FPartyDropDiceRoll f(item, ch);
                            f.Process(this);
                        }
                        else
                            item->SetOwnership(ch);
#else
                        item->SetOwnership(ch);
#endif
                    }

game\src\cmd_general.cpp:
//arat;

    if (ch->GetParty())
        ch->GetParty()->ChatPacketToAllMember(CHAT_TYPE_INFO, LC_TEXT("%s님이 주사위를 굴려 %d가 나왔습니다. (%d-%d)"), ch->GetName(), n, start, end);
    else
        ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("당신이 주사위를 굴려 %d가 나왔습니다. (%d-%d)"), n, start, end);

//değiştir;

#ifdef ENABLE_DICE_SYSTEM
    if (ch->GetParty())
        ch->GetParty()->ChatPacketToAllMember(CHAT_TYPE_DICE_INFO, LC_TEXT("%s님이 주사위를 굴려 %d가 나왔습니다. (%d-%d)"), ch->GetName(), n, start, end);
    else
        ch->ChatPacket(CHAT_TYPE_DICE_INFO, LC_TEXT("당신이 주사위를 굴려 %d가 나왔습니다. (%d-%d)"), n, start, end);
#else
    if (ch->GetParty())
        ch->GetParty()->ChatPacketToAllMember(CHAT_TYPE_INFO, LC_TEXT("%s님이 주사위를 굴려 %d가 나왔습니다. (%d-%d)"), ch->GetName(), n, start, end);
    else
        ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("당신이 주사위를 굴려 %d가 나왔습니다. (%d-%d)"), n, start, end);
#endif

game\src\party.h:
//arat;

inline int CParty::ComputePartyBonusDefenseGrade()

//fonksiyonun altına ekle;

#ifdef ENABLE_DICE_SYSTEM
#include "item.h"

struct FPartyDropDiceRoll
{
    const LPITEM m_itemDrop;
    LPCHARACTER m_itemOwner;
    int m_lastNumber;

    FPartyDropDiceRoll(const LPITEM itemDrop, LPCHARACTER itemOwner) : m_itemDrop(itemDrop), m_itemOwner(itemOwner), m_lastNumber(0)
    {
    };

    void Process(const LPCHARACTER mobVictim)
    {
        if ((!mobVictim || (mobVictim->GetMobRank() >= MOB_RANK_BOSS && mobVictim->GetMobRank() <= MOB_RANK_KING)) && m_itemOwner->GetParty() && m_itemOwner->GetParty()->GetNearMemberCount() > 1)
        {
            LPPARTY pParty = m_itemOwner->GetParty();
            pParty->ChatPacketToAllMember(CHAT_TYPE_DICE_INFO, LC_TEXT("*** Rolling for the following item: %16s ***"), m_itemDrop->GetName());

            pParty->ForEachNearMember(*this);
            if (m_itemOwner)
            {
                m_itemDrop->SetOwnership(m_itemOwner);
                pParty->ChatPacketToAllMember(CHAT_TYPE_DICE_INFO, LC_TEXT("*** Rolling of %s: %16s ***"), m_itemDrop->GetName(), m_itemOwner->GetName());
            }
        }
        else
            m_itemDrop->SetOwnership(m_itemOwner);
    }
    LPCHARACTER GetItemOwner()
    {
        return m_itemOwner;
    }
    const LPITEM GetItemDrop()
    {
        return m_itemDrop;
    }
    void operator () (LPCHARACTER ch)
    {
        if (!ch)
            return;

        LPPARTY pParty = ch->GetParty();
        if (!pParty)
            return;

        while (true)
        {
            int pickedNumber = number(10000, 99999);
            if (pickedNumber > m_lastNumber)
            {
                m_lastNumber = pickedNumber;
                m_itemOwner = ch;
            }
            else if (pickedNumber == m_lastNumber)
            {
                continue;
            }
            else // if (pickedNumber < m_lastNumber)
            {
            }
            pParty->ChatPacketToAllMember(CHAT_TYPE_DICE_INFO, LC_TEXT("*** -> %16s - Dice score: %05d ***"), ch->GetName(), pickedNumber);
            break;
        }
    }
};
#endif

game\src\questlua_game.cpp:
//include'lerin olduğu bölüme ekle;

#ifdef ENABLE_DICE_SYSTEM
#include "party.h"
#endif

//arat;

    ALUA(game_drop_item_with_ownership)

//fonksiyondan sonra ekle;

#ifdef ENABLE_DICE_SYSTEM
    ALUA(game_drop_item_with_ownership_and_dice)
    {
        LPITEM item = NULL;
        switch (lua_gettop(L))
        {
        case 1:
            item = ITEM_MANAGER::instance().CreateItem((DWORD)lua_tonumber(L, 1));
            break;
        case 2:
        case 3:
            item = ITEM_MANAGER::instance().CreateItem((DWORD)lua_tonumber(L, 1), (int)lua_tonumber(L, 2));
            break;
        default:
            return 0;
        }

        if (item == NULL)
        {
            return 0;
        }

        LPCHARACTER ch = CQuestManager::instance().GetCurrentCharacterPtr();
        if (ch->GetParty())
        {
            FPartyDropDiceRoll f(item, ch);
            f.Process(NULL);
        }

        if (lua_isnumber(L, 3))
        {
            int sec = (int)lua_tonumber(L, 3);
            if (sec <= 0)
            {
                item->SetOwnership(ch);
            }
            else
            {
                item->SetOwnership(ch, sec);
            }
        }
        else
            item->SetOwnership(ch);

        PIXEL_POSITION pos;
        pos.x = ch->GetX() + number(-200, 200);
        pos.y = ch->GetY() + number(-200, 200);

        item->AddToGround(ch->GetMapIndex(), pos);
        item->StartDestroyEvent();

        return 0;
    }
#endif

//tekrar arat;

            { "drop_item_with_ownership",    game_drop_item_with_ownership    },

//altına ekle;

#ifdef ENABLE_DICE_SYSTEM
            { "drop_item_with_ownership_and_dice",    game_drop_item_with_ownership_and_dice    },
#endif

game\src\questlua_pc.cpp:
//include'lerin olduğu bölüme ekle;

#ifdef ENABLE_DICE_SYSTEM
#include "party.h"
#endif

//arat;

    ALUA(pc_give_or_drop_item)

//fonksiyondan sonra ekle;

#ifdef ENABLE_DICE_SYSTEM
    ALUA(pc_give_or_drop_item_with_dice)
    {
        if (!lua_isstring(L, 1) && !lua_isnumber(L, 1))
        {
            sys_err("QUEST Make item call error : wrong argument");
            lua_pushnumber(L, 0);
            return 1;
        }

        DWORD dwVnum;

        if (lua_isnumber(L, 1))
        {
            dwVnum = (int)lua_tonumber(L, 1);
        }
        else if (!ITEM_MANAGER::instance().GetVnum(lua_tostring(L, 1), dwVnum))
        {
            sys_err("QUEST Make item call error : wrong item name : %s", lua_tostring(L, 1));
            lua_pushnumber(L, 0);

            return 1;
        }

        int icount = 1;
        if (lua_isnumber(L, 2) && lua_tonumber(L, 2) > 0)
        {
            icount = (int)rint(lua_tonumber(L, 2));
            if (icount <= 0)
            {
                sys_err("QUEST Make item call error : wrong item count : %g", lua_tonumber(L, 2));
                lua_pushnumber(L, 0);
                return 1;
            }
        }

        LPCHARACTER ch = CQuestManager::instance().GetCurrentCharacterPtr();
        LPITEM item = ITEM_MANAGER::instance().CreateItem(dwVnum, icount);
        if (ch->GetParty())
        {
            FPartyDropDiceRoll f(item, ch);
            f.Process(NULL);
            f.GetItemOwner()->AutoGiveItem(item);
        }
        else
            ch->AutoGiveItem(item);

        sys_log(0, "QUEST [REWARD] item %s to %s", lua_tostring(L, 1), ch->GetName());

        LogManager::instance().QuestRewardLog(CQuestManager::instance().GetCurrentPC()->GetCurrentQuestName().c_str(), ch->GetPlayerID(), ch->GetLevel(), dwVnum, icount);

        lua_pushnumber(L, (item) ? item->GetID() : 0);
        return 1;
    }
#endif

//tekrar arat;

            { "give_item2",        pc_give_or_drop_item    },

//altına ekle;

#ifdef ENABLE_DICE_SYSTEM
            { "give_item2_with_dice",    pc_give_or_drop_item_with_dice    },
#endif

UserInterface\Locale_inc.h:
//müsait bir yere ekle;

#define ENABLE_DICE_SYSTEM

UserInterface\Packet.h:
//arat;

    CHAT_TYPE_MONARCH_NOTICE,

//altına ekle;

#ifdef ENABLE_DICE_SYSTEM
    CHAT_TYPE_DICE_INFO,
#endif

UserInterface\PythonApplicationModule.cpp:
//arat;

#ifdef ENABLE_COSTUME_SYSTEM
    PyModule_AddIntConstant(poModule, "ENABLE_COSTUME_SYSTEM",    1);
#else
    PyModule_AddIntConstant(poModule, "ENABLE_COSTUME_SYSTEM",    0);
#endif

//altına ekle;

#ifdef ENABLE_DICE_SYSTEM
    PyModule_AddIntConstant(poModule, "ENABLE_DICE_SYSTEM",    1);
#else
    PyModule_AddIntConstant(poModule, "ENABLE_DICE_SYSTEM",    0);
#endif

UserInterface\PythonChat.cpp:
//arat;

    m_akD3DXClrChat[CHAT_TYPE_MONARCH_NOTICE]    = D3DXCOLOR(1.0f, 0.902f, 0.730f, 1.0f);

//altına ekle;

#ifdef ENABLE_DICE_SYSTEM
    m_akD3DXClrChat[CHAT_TYPE_DICE_INFO]    = D3DXCOLOR(0xFFcc00cc);
#endif

UserInterface\PythonChatModule.cpp:
//arat;

    PyModule_AddIntConstant(poModule, "CHAT_TYPE_MONARCH_NOTICE",    CHAT_TYPE_MONARCH_NOTICE);

//altına ekle;

#ifdef ENABLE_DICE_SYSTEM
    PyModule_AddIntConstant(poModule, "CHAT_TYPE_DICE_INFO",    CHAT_TYPE_DICE_INFO);
#endif

UserInterface\PythonNetworkStreamPhaseGame.cpp:
//arat;

        case CHAT_TYPE_BIG_NOTICE:

//altına ekle;

#ifdef ENABLE_DICE_SYSTEM
        case CHAT_TYPE_DICE_INFO:
#endif

root\uichat.py:
#arat;

            chat.CHAT_TYPE_WHISPER : colorInfo.CHAT_RGB_WHISPER,
        }

#altına ekle;

        if app.ENABLE_DICE_SYSTEM:
            CHAT_COLOR_DICT.update({chat.CHAT_TYPE_DICE_INFO : colorInfo.CHAT_RGB_DICE_INFO,})

#tekrar arat;

                        chat.CHAT_TYPE_NOTICE, ]

#altına ekle;

    if app.ENABLE_DICE_SYSTEM:
        CHAT_MODE_NAME.append(localeInfo.CHAT_DICE_INFO)
        CHAT_MODE_INDEX.append(chat.CHAT_TYPE_DICE_INFO)

quest_functions:
//arat;

game.drop_item_with_ownership

//altına ekle;

game.drop_item_with_ownership_and_dice

//tekrar arat;

pc.give_item2_select

//altına ekle;

pc.give_item2_with_dice

Ekte verdiğim dosyanın içindekileri locale_string.txt'nize geçirmeyi unutmayın.
İyi forumlar.

Kanıt;
Screenshot_1.png


Teşekkürler
 

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

Geri
Üst