Guild Based System Patch[TrinityCore 3.3.5a]

Indította Pemi, 2011 június 14, 10:28:29 DÉLELŐTT

Előző téma - Következő téma

Pemi


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
Pemi

Bluerák


MacBook Pro 13' 2.26 GHZ, 4 GB RAM - White
iPhone 4S 16GB - Black
iPad 3 - Black

NEW PC:
Asus EAH6670 (1GB 128 bit)
AMD FX AM3+ (4x3.8GHZ)
ASRock 970 EXTREME3
8GB RAM

Bluerák


MacBook Pro 13' 2.26 GHZ, 4 GB RAM - White
iPhone 4S 16GB - Black
iPad 3 - Black

NEW PC:
Asus EAH6670 (1GB 128 bit)
AMD FX AM3+ (4x3.8GHZ)
ASRock 970 EXTREME3
8GB RAM

Skyne

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 :)

ident

Ez nagyon jó ötlet, hasonlít picit a Lineage2-es raid pontos rendszerre. Gratula!
Fhatys, a sors által kirótt, elkerülhetetlen feladat szava.
http://eu.battle.net/wow/en/character/arathor/Ident/advanced

Pemi

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!)
Pemi

Powered by EzPortal