Sziasztok!
Egyetemi tanulmányaim során felszedett C/C++ tudás gyakorlása képpen belenyúltam fél évvel ezelőtt egy TrinityCore rev.-be(10793+, 3.3.5a). A diff közel 800 sor, gondoltam megosztom Veletek, hátha ad ötletet, vagy akár segít a megvalósításban. Sokhelyen láttam felesleges dolgokat, a kód nem tökéletes, de fordítható, és működő képes, tesztelve. A project egy új játék szemléletről szólt, egy guild alapú rendszerről. Minden guildnak van egy arena rate-hez hasonló pontja, a guildpont. Növelhető PvP-vel, instával, és csökken, ha új tag kerül a guildbe. Az ehhez szükséges parancsok hozzálettek adva mind a játékosok, mind a GM-ek számára. A vendorokba a kibővített additem parancsal beállítható, hogy melyik itemhez mennyi guildpont kell, az alatt pedig nem lesz látható a karakterek számára. Az adatbázist ennek megfelőlen bővíteni kell. A szükséges mezők: char/guild: pont; world/npc_vendor: pontkell
(A kódban szerepel néhány nem ehhez kapcsolódó változtatás, így alant összeírtam a lényeget!)Forrás: http://pastebin.com/CMNBGhFD
A módosítások:ArenaTeam.cpp:-Penalties increased (5v5: *5)
Battleground.cpp:-Remove ASSERT(m_Map) Crash
Chat.cpp:-Help modified to "parancsok"
-New command "guildpont"
-New command "maxszint"
Chat.h:-Added headers
Commands/Level0.cpp:-ShowHelpForCommand "segits"
-New function: "guildpont" -> CharDB Query "guildpont"
-New function: "maxszint" -> HandleCharacterLevel lv80
Commands/cs_npc:cpp:-New variables (pontkell)
-AddVendorItem new argument(pontkell)
-handler->PSendSysMessage new argument(pontkell)
Creature.h:-VendorItem argument: "pontkell" (guildpont)
-AddItem argument: "pontkell"
GameEventMgr.cpp:-AddVendorItem new argument
ObjectMgr.cpp:-Modded Vendor Items QueryResult (pontkell)
-vList.AddItem new argument(pontkell)
-ObjectMgr::AddVendorItem new argument(pontkell)
-SaveToDatabase vendor items new argument(pontkell)
Guild.cpp:-Set guildpont to DB
-OnGuildAddMember guildpont -300, if account = 5 SET level to 100
ScriptLoader.cpp:-Added headers
ScriptMgr.cpp:-OnPVPKill guildpont +1, if killer level-10 > killed level guildpont -10
ItemHandler.cpp:-Added include
-Added DB Query to show guildpont < pontkell //to hide items
CMakeLists.txt:-Added new files
/scripts/../ghostlands.cpp:-npc_blood_knight_dawnstar modded to HunterPetNPC
scripts/../stormwind_city.cpp:-Add buffer npc
-npc_archmage_malin can teleport,castspell and modify honorpont(SQL Query) now
BOSS modded to add guildpont on kill:-boss_amanitar.cpp
-boss_elder_nadox.cpp
-boss_herald_volazj.cpp
-boss_jedoga_shadowseeker.cpp
-boss_prince_taldaram.cpp
-boss_dred.cpp
-boss_novos.cpp
-boss_tharon_ja.cpp
-boss_trollgore.cpp
naajsz, végre valaki valami értelmessel állt elő :D, kicsit itt ott találni benne szépséghibákat, de apróságok, grat, széplett :)
Ez nagyon jó ötlet, hasonlít picit a Lineage2-es raid pontos rendszerre. Gratula!
Köszönöm, bár még van vele munka, ha valaki komolyan szeretné használni.
Viszont megkerestek, hogy hogyan lehetne beállítani minden mobra, hogy mennyi guildpontot adjon.
A dolog egyszerű:
/trinitycore/src/server/game/Entities/Player/Player.cpp:
void Player::GiveXP(..) függvény elejéhez tegyük hozzá ezt a pár sort:
QueryResult result = WorldDatabase.PQuery("SELECT KillCredit1 FROM creature_template WHERE entry='%d'", victim->ToCreature()->GetEntry());
if(result)
{
Field *fields = result->Fetch();
uint32 pontszam = fields[0].GetUInt32();
CharacterDatabase.PQuery("UPDATE guild SET pont = pont+%d WHERE guildid='%d'", pontszam, GetGuildId());
}
Így a creature_template táblában minden mobhoz megadhatjuk mennyi guildpontot adjon a KillCredit1 mezőben.
(Nem kell külön scriptelni a bossokat sem!)