Jump to content

lecails

Members
  • Posts

    177
  • Joined

  • Last visited

    Never
  • Donations

    0.00 GBP 

Posts posted by lecails

  1. I see this patch there is a long time (by laise) for multipet support but need more improvement, seek in the forum. There is not a tutorial as the mangos installation, because every spell are different, we can't make a general turorial, you can just learn the base of coding in mangos and understand how its working.

    He hasn't replied in 3 months, so I assume he is a master of spells by now.

    Yes I think too ^^

  2. --[[ Demon Cave Boss Scripts version 0.2
    by Korn
    ]]
    
    -- functions
    
    function Tallulah_OnCombat(Unit, Event)
    
           Unit:SendChatMessage(14, 0, "Welcome to hell!!")
    
           Unit:SendChatMessage(42, 0, "Boss fight started!!")
    
           Unit:RegisterEvent("Tallulah_Phase1", 1000, 0)
    
    end
    
    function Tallulah_Phase1(Unit, Event) -- Phase 1
    
            if ( Unit:GetHealthPct() <= 99  ) then
    
            Unit:RemoveEvents()
    
            Unit:SendChatMessage(42, 0, "Phase 1 Started")
    
            Unit:SendChatMessage(14, 0, "I have never beaten!!")
    
            Unit:RegisterEvent("Tallulah_Brood_Affliction_Bronze", 60000, 1)
    
            Unit:RegisterEvent("Tallulah_Flame_Breath", 30000, 0)
    
            Unit:RegisterEvent("Tallulah_Phase2", 1000, 0)
    
    end
    end
    
    function Tallulah_Phase2(Unit, Event) -- Phase 2
    
            if ( Unit:GetHealthPct() <= 80 ) then
    
            Unit:RemoveEvents()
    
            Unit:SetModel(31165)
    
            Unit:SetScale(1.0)
    
            Unit:SendChatMessage(42, 0, "Phase 2 Started")
    
            Unit:SendChatMessage(14, 0, "You think you know me!")
    
            Unit:RegisterEvent("Tallulah_Brood_Affliction_Bronze", 60000, 1)    
    
            Unit:RegisterEvent("Tallulah_Flame_Breath", 30000, 0)
    
            Unit:RegisterEvent("Tallulah_Necrotic_Plague", 45000, 0)
    
            Unit:RegisterEvent("Tallulah_Phase3", 1000, 0)
    
    end
    end
    
    function Tallulah_Phase3(Unit, Event)    -- Phase 3     
    
            if (Unit:GetHealthPct() <= 50 ) then
    
            Unit:RemoveEvents()
    
            Unit:SetModel(31165)
    
            Unit:SetScale(1.0)
    
            Unit:SendChatMessage(42, 0, "Phase 3 Started")
    
            Unit:SendChatMessage(14, 0, "Now I achieved full power!!")
    
            Unit:RegisterEvent("Tallulah_Brood_Affliction_Bronze", 60000, 1)
    
            Unit:RegisterEvent("Tallulah_Flame_Breath", 30000, 0)
    
            Unit:RegisterEvent("Tallulah_Necrotic_Plague", 45000, 0)
    
            Unit:RegisterEvent("Tallulah_Spirit_Burst", 20000, 0)
    
            Unit:RegisterEvent("Tallulah_Soul_Shriek", 40000, 0)
    
            Unit:RegisterEvent("Tallulah_Phase4", 1000, 0)
    
    end
    end
    
    function Tallulah_Phase4(Unit, Event)    -- Phase 4     
    
            if (Unit:GetHealthPct() <= 05 ) then
    
            Unit:RemoveEvents()
    
            Unit:SetModel(31165)
    
            Unit:SetScale(1.0)
    
            Unit:SendChatMessage(42, 0, "Phase 4 Started")
    
            Unit:SendChatMessage(14, 0, "Now fulfill a destiny!!")
    
            Unit:RegisterEvent("Tallulah_Hodir's_Fury", 1000, 0)
    
            Unit:RegisterEvent("Tallulah_Hodir's_Fury", 1000, 0)
    
            Unit:RegisterEvent("Tallulah_Sindragosa's_Fury", 1000, 0)
    
            Unit:RegisterEvent("Tallulah_Fury_of_Frostmourne", 1000, 0)
    
            Unit:RegisterEvent("Tallulah_Shadow_Nova", 1000, 0)
    
    end
    end
    
    --[[ Spells
    
    Tallulah_Brood_Affliction_Bronze
    Tallulah_Flame_Breath
    Tallulah_Necrotic_Plague
    Tallulah_Spirit_Burst
    Tallulah_Soul_Shriek
    Tallulah_Hodir's_Fury
    Tallulah_Hodir's_Fury
    Tallulah_Sindragosa's_Fury
    Tallulah_Fury_of_Frostmourne
    Tallulah_Shadow_Nova
    ]]
    
    
    function Tallulah_Brood_Affliction_Bronze(Unit, Event)
    Unit:CastSpell(23170)
    end
    
    function Tallulah_Flame_Breath(Unit, Event)
    Unit:CastSpell(74527)
    end
    
    function Tallulah_Necrotic_Plague(Unit, Event)
    Unit:CastSpell(73787)
    end
    
    function Tallulah_Spirit_Burst(Unit, Event)
    Unit:CastSpellOnTarget(73808)
    end
    
    function Tallulah_Soul_Shriek(Unit, Event)
    Unit:CastSpellOnTarget(73802)
    end
    
    function Tallulah_Hodir's_Fury(Unit, Event)
    Unit:CastSpellOnTarget(62533)
    end
    
    function Tallulah_Hodir's_Fury(Unit, Event)
    Unit:CastSpellOnTarget(62297)
    end
    
    function Tallulah_Sindragosa's_Fury(Unit, Event)
    Unit:CastSpellOnTarget(70598)
    end
    
    function Tallulah_Fury_of_Frostmourne(Unit, Event)
    Unit:CastSpellOnTarget(72350)
    end
    
    function Tallulah_Shadow_Nova(Unit, Event)
    Unit:CastSpellOnTarget(45332)
    end
    
    function Tallulah_OnLeaveCombat(Unit, Event)
    Unit:RemoveEvents()
    Unit:SetScale(1)
    Unit:SetModel(31165)
    end
    
    function Tallulah_OnKilledTarget(Unit, Event)
    Unit:SendChatMessage(14, 0, "Fucking losers!! You wanted to beat me!! Hahahaha!!")
    end
    
    function Tallulah_OnDied(Unit, Event)
    Unit:RemoveEvents()
    Unit:SendChatMessage(14, 0, "Not ... Not my dark powers have left me ....")
    end
    
    RegisterUnitEvent(331994, 1, "Tallulah_OnCombat")
    RegisterUnitEvent(331994, 2, "Tallulah_OnLeaveCombat")
    RegisterUnitEvent(331994, 3, "Tallulah_OnKilledTarget")
    RegisterUnitEvent(331994, 4, "Tallulah_OnDied")

    See how ACID work on the ScriptDev2 forum.
  3. I see this patch there is a long time (by laise) for multipet support but need more improvement, seek in the forum. There is not a tutorial as the mangos installation, because every spell are different, we can't make a general turorial, you can just learn the base of coding in mangos and understand how its working.

  4. I want to know how i can make a check if players are multiboxing i need this to prevent a reward-system in my custom script.

    thx in advance

    I see how players play with multiboxing and generarly username of characters have similarity, so the best way for me, its the combo of Ip check and username similarity check.

    Im also thinking about position, you can make a position check for really remove multiboxing.

  5. I wrote a little patch now the Question is this the right way to insert this to code ?

    commit 898f02a4744b29c770f1d89256b04c46b82257c8
    Author: tim4 <123 @test.de>
    Date:   Wed Jan 12 08:10:55 2011 +0100
    
       Timed LVL up Patch
       Signed-off-by: tim4 <123 @test.de>
    
    diff --git a/src/game/Language.h b/src/game/Language.h
    index eeba52b..b957d55 100644
    --- a/src/game/Language.h
    +++ b/src/game/Language.h
    @@ -909,8 +909,9 @@ enum MangosStrings
        //                                    10000-10999
    
        // Use for custom patches             11000-11999
    +    LANG_LP_RUPT_MESSAGE                = 11100,//WLK RP LUPT system v0.3M - message
    
    -    // NOT RESERVED IDS                   12000-1999999999
    +    // NOT RESERVED IDS                   12000-1999999999
        // `db_script_string` table index     2000000000-2000009999 (MIN_DB_SCRIPT_STRING_ID-MAX_DB_SCRIPT_STRING_ID)
        // For other tables maybe             2000010000-2147483647 (max index)
    };
    diff --git a/src/game/ObjectAccessor.cpp b/src/game/ObjectAccessor.cpp
    index a37b6fc..2ffefb3 100644
    --- a/src/game/ObjectAccessor.cpp
    +++ b/src/game/ObjectAccessor.cpp
    @@ -35,6 +35,7 @@
    #include "Opcodes.h"
    #include "ObjectGuid.h"
    #include "World.h"
    +#include "Language.h" // WLK RP LUPT system v0.3 - MaNGOS
    
    #include <cmath>
    
    @@ -102,8 +103,7 @@ ObjectAccessor::FindPlayerByName(const char *name)
        return NULL;
    }
    
    -void
    -ObjectAccessor::SaveAllPlayers()
    +void ObjectAccessor::SaveAllPlayers()
    {
        HashMapHolder<Player>::ReadGuard g(HashMapHolder<Player>::GetLock());
        HashMapHolder<Player>::MapType& m = sObjectAccessor.GetPlayers();
    @@ -111,6 +111,72 @@ ObjectAccessor::SaveAllPlayers()
            itr->second->SaveToDB();
    }
    
    +void ObjectAccessor::PlayerLevelByTime() // WLK RP LUPT system v0.3M 
    +{ 
    +    uint8 confMaxLevel = sWorld.getConfig(CONFIG_UINT32_MAX_PLAYER_LEVEL); 
    +    uint8 confAgeForLevel = sWorld.getConfig(CONFIG_UINT32_RP_LUPT_AGE_FOR_LEVEL); 
    +    bool  confMsgEnabled = sWorld.getConfig(CONFIG_BOOL_RP_LUPT_MSG_ENABLED); 
    + 
    +    HashMapHolder<Player>::ReadGuard g(HashMapHolder<Player>::GetLock()); 
    +    HashMapHolder<Player>::MapType& m = sObjectAccessor.GetPlayers(); 
    +    for (HashMapHolder<Player>::MapType::iterator iter = m.begin(); iter != m.end(); ++iter) 
    +    { 
    +     // If player is online & has played time 
    +        if (iter->second->IsInWorld() && iter->second->GetLevelPlayedTime() >= confAgeForLevel) 
    +        { 
    +         // If player isn't in AFK mode & isn't in combat & is alive & has lower level than max level 
    +            if(!iter->second->isAFK() && !iter->second->isInCombat() && iter->second->isAlive() && 
    +                iter->second->getLevel() < confMaxLevel) 
    +            { 
    +                uint8 level = iter->second->getLevel() + 1; 
    + 
    +                iter->second->GiveLevel(level);             // Give new level 
    +                iter->second->InitTalentForLevel();         // Init talents for new level 
    +                iter->second->SetUInt32Value(PLAYER_XP, 0); // Reset XP bar 
    +                iter->second->SaveToDB(true);               // Save player to DB (now works properly) 
    + 
    +             // RP LUPT system v0.3 - system messages 
    +                if(confMsgEnabled) 
    +                { 
    +                    std::stringstream ss; 
    +                    uint32 bytes = 0; 
    +                    bytes |= uint8(level);                          // level 
    +                    bytes |= uint8(iter->second->getRace())  <<  8; // race 
    +                    bytes |= uint8(iter->second->getClass()) << 16; // class 
    + 
    +                    if(!sWorld.GetLuptMessagesData(bytes)) 
    +                    { 
    +                        bytes = 0;                  // reset byte value 
    +                        bytes |= uint8(level);      // level 
    +                        bytes |= uint8(-1) <<  8;   // all races 
    +                        bytes |= uint8(-1) << 16;   // all classes 
    +                        if(!sWorld.GetLuptMessagesData(bytes)) 
    +                            return; 
    +                    } 
    + 
    +                    ss << iter->second->GetName() << ": " << sWorld.GetLuptMessagesData(bytes)->msgText; 
    + 
    +                    switch(sWorld.GetLuptMessagesData(bytes)->msgType) 
    +                    { 
    +                    case 1: 
    +                        sWorld.SendWorldText(LANG_LP_RUPT_MESSAGE, ss.str().c_str()); 
    +                        break; 
    +                    case 2: 
    +                        sWorld.SendServerMessage(SERVER_MSG_CUSTOM, ss.str().c_str(), NULL); 
    +                        break; 
    +                    case 3: 
    +                        sWorld.SendWorldText(LANG_LP_RUPT_MESSAGE, ss.str().c_str()); 
    +                        sWorld.SendServerMessage(SERVER_MSG_CUSTOM, ss.str().c_str(), NULL); 
    +                        break; 
    +                    default: 
    +                        break; 
    +                    } 
    +                } 
    +            } 
    +        } 
    +    } 
    +}
    +
    void ObjectAccessor::KickPlayer(ObjectGuid guid)
    {
        if (Player* p = HashMapHolder<Player>::Find(guid))
    diff --git a/src/game/ObjectAccessor.h b/src/game/ObjectAccessor.h
    index 5307b70..66802a9 100644
    --- a/src/game/ObjectAccessor.h
    +++ b/src/game/ObjectAccessor.h
    @@ -119,7 +119,8 @@ class MANGOS_DLL_DECL ObjectAccessor : public MaNGOS::Singleton<ObjectAccessor,
            }
    
            void SaveAllPlayers();
    -
    +        void PlayerLevelByTime(); // WLK RP LUPT system v0.3M
    +        
            // Pet access
            static Pet* FindPet(ObjectGuid guid);               // if need pet at specific map better use Map::GetPet
    
    diff --git a/src/game/Player.cpp b/src/game/Player.cpp
    index a23d4b1..93f5e94 100644
    --- a/src/game/Player.cpp
    +++ b/src/game/Player.cpp
    @@ -17451,13 +17451,21 @@ bool Player::_LoadHomeBind(QueryResult *result)
    /***                   SAVE SYSTEM                     ***/
    /*********************************************************/
    
    -void Player::SaveToDB()
    -{
    -    // we should assure this: ASSERT((m_nextSave != sWorld.getConfig(CONFIG_UINT32_INTERVAL_SAVE)));
    -    // delay auto save at any saves (manual, in code, or autosave)
    -    m_nextSave = sWorld.getConfig(CONFIG_UINT32_INTERVAL_SAVE);
    -
    -    //lets allow only players in world to be saved
    +void Player::SaveToDB(bool rp_lupt) 
    +{ 
    +     // we should assure this: ASSERT((m_nextSave != sWorld.getConfig(CONFIG_UINT32_INTERVAL_SAVE))); 
    +     // delay auto save at any saves (manual, in code, or autosave) 
    + 
    +    if(!rp_lupt) // WLK RP LUPT system - Autosave system FIX 
    +    { 
    +        m_nextSave = sWorld.getConfig(CONFIG_UINT32_INTERVAL_SAVE); 
    +    } 
    +   else // WLK log report if player saved by RP LUPT system 
    +    { 
    +        sLog.outString("RP LUPT: ACC:%u GUID:%u Name:%s has reached level %u and was stored to DB.", 
    +            GetSession()->GetAccountId(), GetGUIDLow(), m_name.c_str(), getLevel()); 
    +    }
    +    //lets allow only players in world to be saved
        if(IsBeingTeleportedFar())
        {
            ScheduleDelayedOperation(DELAYED_SAVE_PLAYER);
    diff --git a/src/game/Player.h b/src/game/Player.h
    index 78edcb2..c29013a 100644
    --- a/src/game/Player.h
    +++ b/src/game/Player.h
    @@ -1558,8 +1558,8 @@ class MANGOS_DLL_SPEC Player : public Unit
            /***                   SAVE SYSTEM                     ***/
            /*********************************************************/
    
    -        void SaveToDB();
    -        void SaveInventoryAndGoldToDB();                    // fast save function for item/money cheating preventing
    +        void SaveToDB(bool rp_lupt = false);                // WLK RP LUPT system v0.3M - Autosave system FIX
    +        void SaveInventoryAndGoldToDB();                    // fast save function for item/money cheating preventing
            void SaveGoldToDB();
            void SaveDataFieldToDB();
            static bool SaveValuesArrayInDB(Tokens const& data,uint64 guid);
    diff --git a/src/game/World.cpp b/src/game/World.cpp
    index f6fb0fb..5b82003 100644
    --- a/src/game/World.cpp
    +++ b/src/game/World.cpp
    @@ -66,6 +66,7 @@
    #include "AuctionHouseBot/AuctionHouseBot.h"
    #include "CharacterDatabaseCleaner.h"
    #include "Language.h"
    +#include "ProgressBar.h" // WLK RP LUPT system v0.3M
    
    INSTANTIATE_SINGLETON_1( World );
    
    @@ -178,10 +179,21 @@ Player* World::FindPlayerInZone(uint32 zone)
                // Used by the weather system. We return the player to broadcast the change weather message to him and all players in the zone.
                return player;
            }
    +
        }
        return NULL;
    }
    
    +void World::SetRpLuptTableName(const std::string& rpluptTable) // WLK RP LUPT system v0.3M - Sets a name of the message table 
    +{ 
    +    m_rpluptTable = rpluptTable; 
    +} 
    + 
    +const char* World::GetRpLuptTableName() const // WLK RP LUPT system v0.3M - Returns a name of the message table 
    +{ 
    +    return m_rpluptTable.c_str(); 
    +}
    +
    /// Find a session by its id
    WorldSession* World::FindSession(uint32 id) const
    {
    @@ -917,6 +929,12 @@ void World::LoadConfigSettings(bool reload)
        sLog.outString( "WORLD: VMap support included. LineOfSight:%i, getHeight:%i, indoorCheck:%i",
            enableLOS, enableHeight, getConfig(CONFIG_BOOL_VMAP_INDOOR_CHECK) ? 1 : 0);
        sLog.outString( "WORLD: VMap data directory is: %svmaps",m_dataPath.c_str());
    +        // WLK RP LUPT config 
    +    setConfig(CONFIG_BOOL_RP_LUPT, "RP_LUPT.On", false);                            // v0.3M 
    +    setConfig(CONFIG_UINT32_RP_LUPT_CHECK_INTERVAL, "RP_LUPT.CheckInterval", 60);   // v0.3M 
    +    setConfig(CONFIG_UINT32_RP_LUPT_AGE_FOR_LEVEL, "RP_LUPT.AgeForLevel", 3600);    // v0.3M 
    +    setConfig(CONFIG_BOOL_RP_LUPT_MSG_ENABLED, "RP_LUPT.MessagesOn", false);        // v0.3M 
    +    SetRpLuptTableName(sConfig.GetStringDefault("RP_LUPT.MessageDbTable", ""));     // v0.3M
    
        // Darkrulerz' Customs
        setConfig(CONFIG_UINT32_BASE_PET_SCALE            , "Custom.PetScale"            , 1);
    @@ -1295,6 +1313,10 @@ void World::SetInitialWorldSettings()
        sLog.outString( "Returning old mails..." );
        sObjectMgr.ReturnOrDeleteOldMails(false);
    
    +        ///- WLK RP LUPT system v0.3M - Load system messages 
    +    sLog.outString("Loading RP LUPT System Messages..."); 
    +    LoadLuptMessages();
    +
        ///- Load and initialize scripts
        sLog.outString( "Loading Scripts..." );
        sLog.outString();
    @@ -1363,6 +1385,7 @@ void World::SetInitialWorldSettings()
        m_timers[WUPDATE_EXT_MAIL].SetInterval(m_configUint32Values[CONFIG_UINT32_EXTERNAL_MAIL_INTERVAL] * MINUTE * IN_MILLISECONDS); // External mail
        m_timers[WUPDATE_DELETECHARS].SetInterval(DAY*IN_MILLISECONDS); // check for chars to delete every day
        m_timers[WUPDATE_AUTOBROADCAST].SetInterval(abtimer);
    +    m_timers[WUPDATE_RP_LUPT].SetInterval(getConfig(CONFIG_UINT32_RP_LUPT_CHECK_INTERVAL)*IN_MILLISECONDS); // WLK RP LUPT v0.3M
    
        // for AhBot
        m_timers[WUPDATE_AHBOT].SetInterval(20*IN_MILLISECONDS); // every 20 sec
    @@ -1481,6 +1504,40 @@ void World::DetectDBCLang()
        sLog.outString();
    }
    
    +void World::LoadLuptMessages() // WLK RP LUPT system v0.3M - Loads system messages 
    +{ 
    +    uint32 count = 0; 
    +    //                                                    0     1     2      3        4 
    +    QueryResult *result = WorldDatabase.PQuery("SELECT level, type, race, class, message FROM %s", sWorld.GetRpLuptTableName()); 
    + 
    +    if(result) 
    +    { 
    +        barGoLink bar(result->GetRowCount()); 
    +        do 
    +        { 
    +            bar.step(); 
    +            Field *fields = result->Fetch(); 
    +            uint32 bytes = 0; 
    +            bytes |= fields[0].GetUInt8();          // level 
    +            bytes |= fields[2].GetUInt8() << 8;     // race 
    +            bytes |= fields[3].GetUInt8() << 16;    // class 
    +            LuptMessagesData lmd; 
    +            lmd.msgType = fields[1].GetUInt8();     // Message type 
    +            lmd.msgText = fields[4].GetCppString(); // Message text 
    +            mLuptMessagesData[bytes] = lmd; 
    +            count++; 
    +        } while (result->NextRow()); 
    +    } 
    +    else 
    +    { 
    +        barGoLink bar(1); 
    +        bar.step(); 
    +    } 
    +    sLog.outString(">> Loaded %u RP LUPT system messages", count); 
    +    sLog.outString(); 
    +    return; 
    +}
    +
    /// Update the World !
    void World::Update(uint32 diff)
    {
    @@ -1622,6 +1679,15 @@ void World::Update(uint32 diff)
                SendBroadcast();
            }
        }
    +        ///- WLK RP LUPT v0.3M - fce call 
    +    if (sWorld.getConfig(CONFIG_BOOL_RP_LUPT)) 
    +    { 
    +        if (m_timers[WUPDATE_RP_LUPT].Passed()) 
    +        { 
    +            m_timers[WUPDATE_RP_LUPT].Reset(); 
    +           sObjectAccessor.PlayerLevelByTime(); 
    +        } 
    +    }
    
        ///- Process External Mail Queue when necessary
        if(m_configBoolValues[CONFIG_BOOL_EXTERNAL_MAIL_ENABLED] && m_timers[WUPDATE_EXT_MAIL].Passed())
    diff --git a/src/game/World.h b/src/game/World.h
    index 2d42f8f..61ab772 100644
    --- a/src/game/World.h
    +++ b/src/game/World.h
    @@ -51,7 +51,8 @@ enum ServerMessageType
        SERVER_MSG_RESTART_TIME       = 2,
        SERVER_MSG_STRING             = 3,
        SERVER_MSG_SHUTDOWN_CANCELLED = 4,
    -    SERVER_MSG_RESTART_CANCELLED  = 5
    +    SERVER_MSG_RESTART_CANCELLED  = 5,
    +    SERVER_MSG_CUSTOM            = 6
    };
    
    enum ShutdownMask
    @@ -81,7 +82,9 @@ enum WorldTimers
        WUPDATE_AUTOBROADCAST = 8,
        WUPDATE_EXT_MAIL    = 9,
        WUPDATE_AHBOT       = 10,
    -    WUPDATE_COUNT       = 11
    +    WUPDATE_RP_LUPT     = 11, // WLK RP LUPT v0.3M 
    +    WUPDATE_COUNT       = 12
    +
    };
    
    /// Configuration elements
    @@ -194,7 +197,10 @@ enum eConfigUInt32Values
        CONFIG_UINT32_BASE_PET_SCALE,
        // External Mail
        CONFIG_UINT32_EXTERNAL_MAIL_INTERVAL,
    -    CONFIG_UINT32_VALUE_COUNT
    +    CONFIG_UINT32_RP_LUPT_CHECK_INTERVAL,      // WLK RP LUPT v0.3M 
    +    CONFIG_UINT32_RP_LUPT_AGE_FOR_LEVEL,       // WLK RP LUPT v0.3M 
    +    CONFIG_UINT32_RP_LUPT_MSG_TYPE,            // WLK RP LUPT v0.3M 
    +    CONFIG_UINT32_VALUE_COUNT 
    };
    
    /// Configuration elements
    @@ -353,7 +359,9 @@ enum eConfigBoolValues
        CONFIG_BOOL_ENABLE_DODGE_CAP,
        /// Darkrulerz' Customs
    
    -    CONFIG_BOOL_VALUE_COUNT
    +   CONFIG_BOOL_RP_LUPT,             // WLK RP LUPT v0.3M 
    +   CONFIG_BOOL_RP_LUPT_MSG_ENABLED, // WLK RP LUPT v0.3M 
    +   CONFIG_BOOL_VALUE_COUNT 
    };
    
    /// Can be used in SMSG_AUTH_RESPONSE packet
    @@ -501,6 +509,31 @@ class World
            /// Get the current Message of the Day
            const char* GetMotd() const { return m_motd.c_str(); }
    
    +                /// WLK RP LUPT system v0.3M - Sets a name of the message table 
    +        void World::SetRpLuptTableName(const std::string& rpluptTable); 
    +        /// WLK RP LUPT system v0.3M - Returns a name of the message table 
    +        const char* World::GetRpLuptTableName() const; 
    + 
    +        // WLK RP LUPT system v0.3M - Loads system messages 
    +        void LoadLuptMessages(); 
    +        struct LuptMessagesData 
    +        { 
    +           uint8       msgType; 
    +            std::string msgText; 
    +        }; 
    +        typedef UNORDERED_MAP<uint32, LuptMessagesData> LuptMessagesDataMap; 
    +    private: 
    +        std::string m_rpluptTable; 
    +        LuptMessagesDataMap mLuptMessagesData; 
    +    public: 
    +        LuptMessagesData const* GetLuptMessagesData( uint32 bytes ) const 
    +        { 
    +            LuptMessagesDataMap::const_iterator itr = mLuptMessagesData.find( bytes ); 
    +           if( itr != mLuptMessagesData.end() ) 
    +                return &itr->second; 
    +            return NULL; 
    +        } // WLK end
    +
            LocaleConstant GetDefaultDbcLocale() const { return m_defaultDbcLocale; }
    
            /// Get the path where data (dbc, maps) are stored on disk
    

    Yes its a right way if you dont conflict whith other feature and if you put each part of code in the good file .
  6. So, Modmanager has its own function and mod use this function for work ? And Modmanager udapted his code when mangos updated but the function of Modmanager is always called whith the same way so mod working at all the time.Great idea,you can make a library so as ScriptDev2 For more mobilty.

    So your project is a centralization of work on xMods update instead of update each feature.But I think its very complex, because each feature is pretty different so its great for small feature whith small code :D .

  7. Tried in hellfire peninsula and work great but I have problem with handling zones/areas and without idea of code structure etc...

    http://pastie.org/1618482

    I do not known if i am in the right way but i need learn more about sd2 and existing scripts

    I saw your replies about working outdoor pvp and i'am happy to be less lost :D I'm excited to see how this works

    Yes you are in the right way whith SD2 structure just some useless function like player enter zone, you need begin to write reset{} function which it initialize and load creature gameobject etc..

    reset(){         m_uiHordeCounter = 0;
           m_uiAllyCounter  = 0;
    }

    uint64 GetData64(uint32 uiData)

    {

    switch(uiData)

    {

    case DATA_HORDE_COUNTER: return m_uiHordeCounter;

    case DATA_ALLY_COUNTER: return m_uiAllyCounter;

    }

    return 0;

    }

    void Load(const char* in)

    {

    if (!in)

    {

    OUT_LOAD_INST_DATA_FAIL;

    return;

    }

    OUT_LOAD_INST_DATA(in);

    std::istringstream loadStream(in);

    loadStream >> m_uiHordeCounter >> m_uiAllyCounter;

    OUT_LOAD_INST_DATA_COMPLETE;

    }

    This function are useless because the maps its non instabnceable

    All OutdoorPvp script will be load when player enter in the specific map and not in the specific area.But I m thinking about a sort of gate which whith it , we will can make each script by zone.

    So an Outdoor Pvp basic script which is called when the player enter map and Outdoor Pvp basic script check whith Update(){} what is the player zone and call specific OutdoorPvp script if player is in the Outdoor Pvp zone.

  8. Thanks for your help!

    I have a new question^^

    I am ready to download my database as indicated in your installation guide.

    Download newest UDB database and the latest UDB update packs

    Update your World of Warcraft client to the supported version

    EXTRACTING FILES FROM YOUR CLIENT

    Copy C:\\Mangos\\contrib\\extractor\\ad.exe in your C:\\World of Warcraft

    Run Ad.exe from your C:\\World of Warcraft

    In which file should I download my database please?

    In the folder that you want because the database file its for the sql database, you need a database system like mysql for import the sql file downloaded.

  9. oki, I try to update code to the latest revision but its not possible whithout add more hack, some function in objet accessor were removed and use map function now, so I begin start convert OutdoorPvp to ScriptDev2, I thinks its the best choice for the last mangos revision, its now support this so why wait more time ? :D

  10. In reference to this MaNGOS One commit https://github.com/mangos/one/commit/8cd46197e1efbb34fc1a5be27a7cdace3f57de98, discussed in the thread about Outdoor PvP for MaNGOS One...

    Will this patch also be implemented in MaNGOS or has similar functionality already been established? I glanced through the history for MaNGOS master and did not notice any similar code recently committed.

    Assuming it has or will be implemented for 3.3.5, am I correct in reading this as meaning Outdoor PvP can now be supported by the core and only requires SD2 scripting?

    If the Outdoor pvp can be scripted by SD2 then somebody should make a basic example for it, because I really don't understand how could be implement four distinct outdoor pvp scripts on the same instanced world map (Hellfire, Zanga, Terokar, Nargrand).

    There must be a way to separate the zones, and to implement a script for each zone.

    You say right, zone its not implemented just map but its always possible to implement outdoorpvp in SD2, principe of each zone is the same capture point .

  11. Yes, its stored in the DDR server :D, when the player enter in the game, the speed rate its initialized and its will changed over time.

    Would I sound stupid to ask what DDR server is? I really need a lot of studying...... :(

    See here for more explication and if you have some other question, we are here :D .

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. Privacy Policy Terms of Use