Jump to content
  • Announcements

    • Xmat

      Pravidlo pro postování v TTT

      Do sekce Tipy, triky, tutoriály nepatří žádné dotazy.   Postujte sem vaše návody, tipy a různé další věci jež uznáte za vhodné sdělit zdejšímu osazenstvu, ale veškeré dotazy směřujte do sekce Všeobecná diskuse.
    • Replik

      Seznam návodů a důležitých témat v této sekci

      Pro lepší přehlednost jsem vytvořil tento seznam, který vás, méně zkušené, lépe provede touto sekcí. Věřím, že zde najdete, co hledáte. Vypsané jsou návody, které jsou oficiálně uznané jako návody. Běžné diskuze, které neposkytují postupy a rady zvěřejněny nejsou.   Instalace vlastního MaNGOS Serveru Díky těmto návodům budete (měli by jste být) schopni vytvořit a následně spustit váš vlastní server. Nastavení je pro verze s i bez datadisku.   Instalace MaNGOS Serveru (bez datadisku TBC) - Autor Benny Instalace MaNGOS Serveru (s datadiskem TBC) - Autor Malfik Instalace MaNGOS Serveru v prostředí Linux - Autor charlie Instalace MaNGOS Serveru v prostředí Linux - Autor kupkoid   Chyby a jejich řešení při přihlašování k serveru - Autor Cybe   Zálohování uživatelských dat   Dávkový soubor (BAT soubor) pro vytvoření SQL záloh - Autor Replik   Kompilování - tvoření vlastních release (revizí)   Tvorba kompilací pro Win32 (MangoScript) - Autor bLuma   Ostatní - těžko zařaditelné, ale neznamená to, že nejsou dobré   VIP Systém - Autor charlie Tvorba Webových stránek pro MaNGOS - Autor zahuba Tvorba teleportačních NPC (MangoScript) - Autor Replik Registrační web (původně předělaná SPORA) Funkční pro Antrix i MaNGOS - Autor Replik Nastavení a spuštění Minimanager pro MaNGOS - Autor BlackMartin Nastavení MaNGOS Website - Autor Artorius   Samozřejmě jsou zde i jiné návody, ale tyto jsou nejvíce používané, proto věřím, že vám budou nápomocné. Tuto sekci budeme upravovat podle potřeby. Pokud by jste něco nenašli nebo si nevěděli rady, hledejte na fóru a teprve potom založte vlastní topik. Pokud nějaký autor vytvoří kvalitní návod a chtěl by ho zveřejnit i v tomto seznamu, doporučuji, aby mi napsal zprávu skrze PM.   Díky a přeji hezký den na WoWResource   Replik
    • Aristo

      Příspěvky tam, kde nemají co dělat

      Dodržujte zákaz přispívání do topiků s repaky pokud si to zakladatelé nepřejí!! Opakované psaní příspěvků bude trestáno warnem.
    • Aristo

      Používání spoilerů

      Poslední dobou má většina uživatelů fora zvláštní nutkání postovat extrémně dlouhé texty nebo kódy, které zabírají v nejedenom případu i 80% obsahu celé stránky a hodně tak zvedají nepřehlednost v topiku. Chtěl bych všechny uživatele požádat, aby při postování citací, jakýchkoliv kódů, errorů, atp... delších než 30 řádků používali funkci spoileru.   Funkci vyvoláte příkazem [spoiler] text [/spoiler]   Ukázka:  
Sign in to follow this  
Wolf Officious

[Patch] RP LevelUp by PlayedTime (RP-LUPT) 4TC

Recommended Posts

Čo keby si to urobil cez broadcast.. ale pre všetkých.. Napísalo by [meno postavy] level sa zdvihol na 5. Alebo proste niečo také.. To už hádam vymyslíš

Share this post


Link to post
Share on other sites

já bych to zase udělal ve formě stringu :) (takový to "not enough mana" atp.. tak tam přidat novej string na tohle)

  • Upvote 1

Share this post


Link to post
Share on other sites

wo - whisper? Máš pointer na hráče, hráč může spawnnout na 100 ms neviditelný npc - neviditelný npc whispne a pak se smaže.

Share this post


Link to post
Share on other sites

Takže. K tomu stárnutí. Nebyl to moc dobrej nápad. Zbytečně jsem nad tím ztratil čaš. Něuvědomil jsem si, že staty pro levely se vlastně dají upravit v databázi, žejo. :D Tabulka `player_levelstats` a `player_classlevelstats`.. Bude to daleko jednodušší, takže na stárnutí asi kašlu, ale dalo by se udělat spoustu jiných věcí. :)

 

EDIT: Udělám raději ten výpis textů z DB do chatu hráče při zvýšení levelu. To asi bude užitečnější. Nejdřív upravím na verzi 0.2b (coming soon) :)

 

BUMP! :diablo::D

 

--################

--## Verze 0.2b ##

--################

  • změna názvů definic konfigurovatelných hodnot (World.h)
  • změna položek konfiguračního souboru (World.cpp, worldserver.conf)
  • časovač prověřování PlayedTime hráčů se nyní v konfiguračním souboru nastavuje V SEKUDÁCH (World.cpp)
  • oprava kolizí se systémem automatického ukládání hráčů (Player.h, Player.cpp, ObjectAccessor.cpp)
  • výpis do logu - "RP LUPT: ACC:X GUID:X jméno:Abcdefgh dosáhl levelu X a byl uložen do DB." (Player.cpp)

Přidal jsem screen :D ..to jen tak na ukázku výpisu do logu :D

 

 

 

 

No tak zase player_classlevelstars má 800 záznamů a tabulka player_levelstats 4960... :whistling::nw2_guitar:

 

 

Share this post


Link to post
Share on other sites

:pokey: prej: Upadlo ti mejdlo! :lol:

To je dobrý ho zvednout. :D

 

Čo keby si to urobil cez broadcast.. ale pre všetkých.. Napísalo by [meno postavy] level sa zdvihol na 5. Alebo proste niečo také.. To už hádam vymyslíš

V object accessoru nemám chat handler. Chci to udělat s minimem úprav.

 

já bych to zase udělal ve formě stringu :) (takový to "not enough mana" atp.. tak tam přidat novej string na tohle)

Ok.

 

wo - whisper? Máš pointer na hráče, hráč může spawnnout na 100 ms neviditelný npc - neviditelný npc whispne a pak se smaže.

To je zbytečně složitý.

 

No tak zase player_classlevelstars má 800 záznamů a tabulka player_levelstats 4960... :whistling::nw2_guitar:

player_classlevelstars neznam. :D Hele, kdo chce mít pecku, musí si to umět upravit. Jde udělat celkem jednoduchej SQL script, kterej ti to upraví najednou. Stárnutí prostě nebude, když si to může každej (kdo umí SQL) vyřešit v DB.

 

EDIT: true wins

Edited by Wolf Officious
  • Upvote 1

Share this post


Link to post
Share on other sites

Jasně, až budu chtít dělat zbytečný věci, tak se ti ozvu. :lol: Nebudu přeci spawnovat něco, co je k ničemu. Tohle není podělanej script, to je třeba si uvědomit. Nechci nic obejít nějakou "náhradní" metodou. Když už to dělám, udělám to pořádně. Vím že existuje způsob, jak handlovat zprávu přímo, tak proč spawnovat creaturu a nutit core aby dělalo naprosto zbytečný věci? Chce to čas, už asi vím jak na to.

 

EDIT1: typo

EDIT2: Už to mám hotový a ani to nebolelo.

EDIT3: Provádím debug a píšu loader (přetažení dat z DB do paměti při startu core). Půjde zvolit pro každou rasu/povolání/level jiná zpráva. No uvidíte.


 

BUMP! :beach::drunk:

 

--###############

--## Verze 0.3 ##

--###############

  • opět úprava definic
  • pročištění a sjednocení kódu se stylem zápisu TC
  • přidán systém výpisu zpráv (provizorní/testovací metoda)
  • nastavitelný název tabulky zpráv
  • loading zpráv z tabulky v DB do systémové paměti při startu core
  • funkce v Object Accessoru prodělala hodně změn
  • upraven ENG výpis do logu core + ostatní typo

EDIT: Všiměte si, že nyní verze označují také kódová jména.

Edited by Wolf Officious
  • Upvote 2
  • Downvote 1

Share this post


Link to post
Share on other sites

Třída stringstream umožnuje automaticky konvertovat čísla na řetězce. Ve tvém případě tedy stačí "ss << level". Itoa je řešení v jazyce C.

Edited by bLuma
  • Upvote 1

Share this post


Link to post
Share on other sites

Třídy string i stringstream umožnují automaticky konvertovat čísla na řetězce. Ve tvém případě tedy stačí "ss << level". Itoa je řešení v jazyce C.

Přijde mi to sice postavený na hlavu, ale funguje to. :) Díky za tip.

 

EDIT1: (16.11.2010) Všechno se dá vylepšit, jen se musí vědět jak. Proto bych byl rád za uvádění důvodů alespoň u záporných reputací. Děkuji. :)

 

919_ws_r_un_27.png

 

EDIT2: (24.11.2010) Úspěšně upraveno pro MaNGOS, (zatím) nejnovější revizi. Později to postnu do extra tématu (pro přehlednost a možné odlišnosti / vývoj). Zatím testuju, ladím a probíhá debug. Kompilace úspěšná.

 

(typo)

Edited by Wolf Officious
  • Upvote 1

Share this post


Link to post
Share on other sites

hurá je to pro mangos určitě využiju a SPORTYho si nevsimej trosku to nema v hlave vporadku :rolleyes:

Share this post


Link to post
Share on other sites

OK. Verzi pro MaNGOS najdeš zde: http://www.wowresource.eu/index.php?showtopic=20812 :)

 

EDIT: bLumo, tak to nakonec nefungovalo. Sice kompilace proběhla bez chyb, ale stejně se to tam nevypisovalo. Místo hodnoty tam byl otazník. Viz. screen:

 

853_WoWScrnShot_112410_181048.jpg

 

Tak jsem to nakonec z patche vypustil. Kdo to tam bude chtít, může si to připsat do zpráv přímo v SQL. :)

Napadlo mě ještě rozšířit výpis zpráv. Ale "o tom po tom". :D

Edited by Wolf Officious
  • Upvote 1

Share this post


Link to post
Share on other sites

Všimnul jsem si chyby při kompilování na linuxu (Ubuntu), která končí failem při make.

 

 

[ 13%] Building CXX object src/server/game/CMakeFiles/game_pch_dephelp.dir/game_pch_dephelp.cxx.o
In file included from /trinity/src/server/game/Server/WorldSession.h:32,
                from /trinity/src/server/game/Server/Protocol/Opcodes.h:34,
                from /trinity/src/server/game/Entities/Unit/Unit.h:26,
                from /trinity/src/server/game/Entities/Player/Player.h:26,
                from /trinity/src/server/game/Globals/ObjectAccessor.h:33,
                from /trinity/src/server/game/PrecompiledHeaders/gamePCH.h:9,
                from /trinity/build/src/server/game/game_pch_dephelp.cxx:1:
/trinity/src/server/game/World/World.h:587: error: extra qualification ‘World::’ on member ‘SetRpLuptTableName’
/trinity/src/server/game/World/World.h:589: error: extra qualification ‘World::’ on member ‘GetRpLuptTableName’
make[2]: *** [src/server/game/CMakeFiles/game_pch_dephelp.dir/game_pch_dephelp.cxx.o] Error 1
make[1]: *** [src/server/game/CMakeFiles/game_pch_dephelp.dir/all] Error 2
make: *** [all] Error 2

 

 

Řešení: v JIŽ UPRAVENÉM souboru src/server/game/World/World.h najděte řádky:

        /// WLK RP LUPT system v0.3 - Sets a name of the message table
       void World::SetRpLuptTableName(const std::string& rpluptTable);
       /// WLK RP LUPT system v0.3 - Returns a name of the message table
       const char* World::GetRpLuptTableName() const;

a nahraďte je následujícími:

        /// WLK RP LUPT system v0.3 - Sets a name of the message table
       void SetRpLuptTableName(const std::string& rpluptTable);
       /// WLK RP LUPT system v0.3 - Returns a name of the message table
       const char* GetRpLuptTableName() const;

(v podstatě jen smažete World:: )

 

Zbytek kompilace už by měl proběhnout bez chyb (které by mohli souviset s aplikací tohoto patche).

 

EDIT: Jen doplním malou poznámku... První post už byl upraven tak, aby to bylo v pořádku. :)

Edited by Wolf Officious
  • Upvote 1

Share this post


Link to post
Share on other sites

Mohl bych poprosit o Update na nejnovější verzi?:)

Share this post


Link to post
Share on other sites

Přepis pro: TrinityCore 10866

 

##################################################

#### RP LevelUp by PlayedTime (RP-LUPT) PATCH ####

##################################################

 

Patche vždy provádím ručně, proto i tento rozepíšu krok za krokem.

 

(POZNÁMKA: Když je před řádkou znaménko "+", označuje to, že tuhle řádku je třeba přidat.

############ Ovšem bez toho + na začátku. Když je na záčátku "-" (mínus), řádek smažte.

 

RP-LUPT PATCH:

 

 

1. SQL side

-- A: WORLD databáze (trinity_string pro výpis zpráv):

INSERT INTO `trinity_string` (`entry`, `content_default`, `content_loc1`, `content_loc2`, `content_loc3`, `content_loc4`, `content_loc5`, `content_loc6`, `content_loc7`, `content_loc8`) 
VALUES('11100','|cffffff00[|c00077766RP_LUPT|cffffff00] |cFFF222FF%s|r',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);

 

-- B: WORLD databáze (vytvoření tabulky rp_lupt pro zprávy):

CREATE TABLE `rp_lupt` (
 `level` int(8) NOT NULL DEFAULT '1',
 `type` int(8) NOT NULL DEFAULT '1',
 `race` int(8) NOT NULL DEFAULT '-1',
 `class` int(8) NOT NULL DEFAULT '-1',
 `message` text,
 PRIMARY KEY (`level`,`type`,`race`,`class`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;

 

2. CORE side - SOUBOR src/server/game/Miscellaneous/Language.h

-- A: NAJDI TEXT LANG_INVALID_REALMID

     LANG_INVALID_REALMID                = 11001,
+    LANG_LP_RUPT_MESSAGE                = 11100,//WLK RP LUPT system v0.3 - message

 

 

3. CORE side - SOUBOR src/server/game/World/World.h

-- A: NAJDI TEXT WUPDATE_COUNT

-    WUPDATE_COUNT
+    WUPDATE_RP_LUPT,        // WLK RP LUPT v0.4
+    WUPDATE_COUNT

-- B: NAJDI ŘÁDEK BOOL_CONFIG_VALUE_COUNT

-    BOOL_CONFIG_VALUE_COUNT
+    CONFIG_RP_LUPT,             // WLK RP LUPT v0.4
+    CONFIG_RP_LUPT_MSG_ENABLED, // WLK RP LUPT v0.4
+    BOOL_CONFIG_VALUE_COUNT

-- C: NAJDI ŘÁDEK INT_CONFIG_VALUE_COUNT

-    INT_CONFIG_VALUE_COUNT
+    CONFIG_RP_LUPT_CHECK_INTERVAL,      // WLK RP LUPT v0.4
+    CONFIG_RP_LUPT_AGE_FOR_LEVEL,       // WLK RP LUPT v0.4
+    CONFIG_RP_LUPT_MSG_TYPE,            // WLK RP LUPT v0.4
+    INT_CONFIG_VALUE_COUNT

-- D: NAJDI ŘÁDEK const char* GetMotd() const;

+
+        /// WLK RP LUPT system v0.4 - Sets a name of the message table
+        void SetRpLuptTableName(const std::string& rpluptTable);    // after NIX comp. repair
+        /// WLK RP LUPT system v0.4 - Returns a name of the message table
+        const char* GetRpLuptTableName() const;                     // after NIX comp. repair

-- E: NAJDI ŘÁDEK void LoadAutobroadcasts();

+
+        // WLK RP LUPT system v0.4 - 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

 

 

4. CORE side - SOUBOR src/server/game/World/World.cpp

-- A: ZA FUNKCI const char* World::GetMotd() const VLOŽ NÁSLEDUJÍCÍ 2 FUNKCE:

void World::SetRpLuptTableName(const std::string& rpluptTable) // WLK RP LUPT system v0.4 - Sets a name of the message table
{
   m_rpluptTable = rpluptTable;
}

const char* World::GetRpLuptTableName() const // WLK RP LUPT system v0.4 - Returns a name of the message table
{
   return m_rpluptTable.c_str();
}

-- B: NAJDI ŘÁDEK m_int_configs[CONFIG_AUTOBROADCAST_INTERVAL] = sConfig->GetIntDefault("AutoBroadcast.Timer", 60000);

+
+    // WLK RP LUPT config v0.4
+    m_bool_configs[CONFIG_RP_LUPT] = sConfig->GetBoolDefault("RP_LUPT.On", false);
+    m_int_configs[CONFIG_RP_LUPT_CHECK_INTERVAL] = sConfig->GetIntDefault("RP_LUPT.CheckInterval", 60);
+    m_int_configs[CONFIG_RP_LUPT_AGE_FOR_LEVEL] = sConfig->GetIntDefault("RP_LUPT.AgeForLevel", 3600);
+    m_bool_configs[CONFIG_RP_LUPT_MSG_ENABLED] = sConfig->GetBoolDefault("RP_LUPT.MessagesOn", false);
+    SetRpLuptTableName(sConfig->GetStringDefault("RP_LUPT.MessageDbTable", "")); // WLK RP LUPT config END

-- C: NAJDI ŘÁDEK LoadAutobroadcasts();

+
+    ///- WLK RP LUPT system v0.4 - Load system messages
+    sLog->outString("Loading RP LUPT System Messages...");
+    LoadLuptMessages();

-- D: NAJDI ŘÁDEK m_timers[WUPDATE_DELETECHARS].SetInterval(DAY*IN_MILLISECONDS); // check for chars to delete every day

+
+    m_timers[WUPDATE_RP_LUPT].SetInterval(getIntConfig(CONFIG_RP_LUPT_CHECK_INTERVAL)*IN_MILLISECONDS); // WLK RP LUPT v0.4
+

-- E: ZA FUNKCI void World::LoadAutobroadcasts() VLOŽ NÁSLEDUJÍCÍ FUNKCI:

void World::LoadLuptMessages() // WLK RP LUPT system v0.4 - 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)
   {
       do
       {
           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].GetString();    // Message text
           mLuptMessagesData[bytes] = lmd;
           count++;
       } while (result->NextRow());
   }

   sLog->outString(">> Loaded %u RP LUPT system messages", count);
   sLog->outString();
   return;
}

-- F: NAJDI ŘÁDKY:

    ///- Process Game events when necessary
   if (m_timers[WUPDATE_EVENTS].Passed())
   {
       m_timers[WUPDATE_EVENTS].Reset();                   // to give time for Update() to be processed
       uint32 nextGameEvent = sGameEventMgr->Update();
       m_timers[WUPDATE_EVENTS].SetInterval(nextGameEvent);
       m_timers[WUPDATE_EVENTS].Reset();
   }

-- ..A HNED ZA NĚ PŘIDEJ NÁSLEDUJÍCÍ:

+
+    ///- WLK RP LUPT system v0.4 - fce call
+    if (sWorld->getBoolConfig(CONFIG_RP_LUPT))
+    {
+        if (m_timers[WUPDATE_RP_LUPT].Passed())
+        {
+            m_timers[WUPDATE_RP_LUPT].Reset();
+            sObjectAccessor->PlayerLevelByTime();
+        }
+    }

 

 

5. CORE side - SOUBOR src/server/game/Globals/ObjectAccessor.h - NAJDI TEXT void SaveAllPlayers();

+        void PlayerLevelByTime(); // WLK RP LUPT system v0.4

 

 

6. CORE side - SOUBOR src/server/game/Globals/ObjectAccessor.cpp

-- ZA FUNKCI void ObjectAccessor::SaveAllPlayers() VLOŽ NÁSLEDUJÍCÍ FUNKCI:

void ObjectAccessor::PlayerLevelByTime() // WLK RP LUPT system v0.4
{
   uint8 confMaxLevel = sWorld->getIntConfig(CONFIG_MAX_PLAYER_LEVEL);
   uint8 confAgeForLevel = sWorld->getIntConfig(CONFIG_RP_LUPT_AGE_FOR_LEVEL);
   bool  confMsgEnabled = sWorld->getBoolConfig(CONFIG_RP_LUPT_MSG_ENABLED);

   ACE_GUARD(LockType, g, *HashMapHolder<Player>::GetLock());
   HashMapHolder<Player>::MapType& m = HashMapHolder<Player>::GetContainer();
   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.4 - 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_STRING, ss.str().c_str(), NULL);
                       break;
                   case 3:
                       sWorld->SendWorldText(LANG_LP_RUPT_MESSAGE, ss.str().c_str());
                       sWorld->SendServerMessage(SERVER_MSG_STRING, ss.str().c_str(), NULL);
                       break;
                   default:
                       break;
                   }
               }
           }
       }
   }
}

 

 

7. CORE side - SOUBOR src/server/game/Entities/Player/Player.h

        /*********************************************************/
       /***                   SAVE SYSTEM                     ***/
       /*********************************************************/

-        void SaveToDB();
+        void SaveToDB(bool rp_lupt = false); // WLK RP LUPT system v0.4 - Autosave system FIX

 

 

8. CORE side - SOUBOR src/server/game/Entities/Player/Player.cpp

/*********************************************************/
/***                   SAVE SYSTEM                     ***/
/*********************************************************/

-void Player::SaveToDB()
+void Player::SaveToDB(bool rp_lupt) // WLK RP LUPT system v0.4 - Autosave system FIX
{
    // delay auto save at any saves (manual, in code, or autosave)
-    m_nextSave = sWorld->getIntConfig(CONFIG_INTERVAL_SAVE);
+    if(!rp_lupt) // WLK RP LUPT system - Autosave system FIX
+    {
+        m_nextSave = sWorld->getIntConfig(CONFIG_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());
+    }

 

 

9. WORLD CONFIG side - KONFIGURAČNÍ SOUBOR worldserver.conf NA KONEC SOUBORU PŘIDEJTE:

###############################################################################
# RP LEVEL UP BY PLAYED TIME SYSTEM (RP-LUPT) v0.2b
# Copyright (C) 2010 Wolf Officious
# 
#   RP_LUPT.On
#        Enable RP Level Up by Played Time (RP-LUPT) system
#        Default: 0 - off
#                 1 - on
#
#   RP_LUPT.CheckInterval
#        Player level time checking interval (in seconds)
#        Default: 60 (1 minute)
#
#   RP_LUPT.AgeForLevel
#        The required play time (in seconds) on current level of character to be
#        able to reach level up
#        Default: 3600 (1 hour)
# 
#   RP_LUPT.MessagesOn
#        Enable messages
#        Default: 0 - off
#                 1 - on
#
#   RP_LUPT.MessageDbTable
#        Name of table contains messages sended after LUPTing
#        Default: "rp_lupt"
#
###############################################################################

RP_LUPT.On = 1
RP_LUPT.CheckInterval = 60
RP_LUPT.AgeForLevel = 3600
RP_LUPT.MessagesOn = 1
RP_LUPT.MessageDbTable = "rp_lupt"

 

 

CZ Vysvětlení konfigurace: :)

RP_LUPT.On               // Povolení RP LUPT systému: 1 = zapnuto, 0 = vypnuto
RP_LUPT.CheckInterval    // Časová prodleva mezi zjišťováním odehraného času hráčů V SEKUNDÁCH (výchozí hodnota: 60 ( 1 minuta ))
RP_LUPT.AgeForLevel      // Odehraný čas, potřebný ke zvýšení levelu V SEKUNDÁCH (výchozí hodnota: 3600 ( = 1 hodina ))
RP_LUPT.MessagesOn       // Povolení zasílání zpráv:  1 = zapnuto, 0 = vypnuto (i když je vypnuto, stále se nahrávají do paměti!)
RP_LUPT.MessageDbTable   // Název tabulky v databázi WORLDu, ve které se nacházejí zprávy vypisované do chatu pro LUPTingu.

 

Některé řádky obsahují poznámku // WLK .. . Ve zdrojáku dělám dohledatelné značky, aby hned bez složitého zkoumání bylo jasné, co k čemu patří.

 

Když neumíte patchnout core, nepište sem! Najděte si návod zde na fóru, nebo použijte google.

(Vyjímkou je, pokud vám to opravdu nejde a zdá se vám, že je chyba ve mě.)

Žádám diskuzi JEN k tématu, zkušennosti, názory a nápady na zlepšení. Děkuji. :diablo:

  • Upvote 3

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

Sign in to follow this  

×