Jump to content

[dev] Dalaran Arena (dalaran sewers)


Guest KAPATEJIb

Recommended Posts

Hello, today i was tried to port dalaran servers implementation from Trinity Core 2 to Mangos. Original authors of the code are Spp and mateo0169

I have some problems that i can't fix by self, i hope someone will connect to my work and we finally implement this arena for Mangos :)

Download original _UNCLEANED_ version (in this version i just put in comments all not generic code)

Here you can download working version of the patch

Core part

DB part

TODO:

add the waterfalls and make them work

correct timers and angle/speed of pushing out the spawning sewers

move knockback function to player.cpp/h

Link to comment
Share on other sites

  • Replies 50
  • Created
  • Last Reply

Top Posters In This Topic

actually I think the original author is Spp & mateo0169...

http://www.trinitycore.org/forum/showpost.php?p=38001&postcount=18

anyway, it would be great if GO collision was implemented as well.

ok, n0n4m3 is just commiter of this patch.

maybe some1 have any idea how to implement the waterfalls? maybe implement this as event like events in Alterac Valley?

anyway the main problem occurs at arena start - players should be pushed from the tube... players can use this "not implemented feature" as exploit because they can just stay in the start tube and use ranged spells/healing in this safe place

Link to comment
Share on other sites

And the arena of Orgrimmar is not script in Trinity ?

i was already tried, but being scared how it works without LOS for gameobjects, because you can attack other team before arena start through pillars, this a exploit for ranged classes. And second problem in the elevator - he always move (no difference if you set state 0 or 1, elevator always start to move at spawn), i can't make him to stay in one place at arena start :/ pillars also won't open with correct SQL data and code for door open. I think it's impossible to implement Orgrimmar arena for now.

yes i can share my work for orgrimmar arena

code for orgrimmar arena + dalaran arena(from first post) http://paste2.org/p/594907

incompleted (because i didn't try to add other objects to this arena) db data http://paste2.org/p/594925

use on your own risk! because orgrimmar arena is really unplayable

Link to comment
Share on other sites

with this commit http://github.com/mangos/mangos/commit/b9712d36d2c285be14cf7bb9bd5cc1f4c9c58cf3 error on linux

../../../src/game/BattleGround.h:302: error: Б─≤BattleGroundBracketIdБ─≥ does not name a type
../../../src/game/BattleGround.h:574: error: Б─≤BattleGroundBracketIdБ─≥ does not name a type
../../../src/game/ObjectMgr.h: In member function Б─≤uint32 ObjectMgr::GetSeatFlags(uint32)Б─≥:
../../../src/game/ObjectMgr.h:897: warning: converting to non-pointer type Б─≤uint32Б─≥ from NULL
make[3]: *** [battleGroundDS.o] Error 1
make[3]: Leaving directory `/opt/mangos/objdir/src/game'
make[2]: *** [all-recursive] Error 1
make[2]: Leaving directory `/opt/mangos/objdir/src'
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory `/opt/mangos/objdir'
make: *** [all] Error 2

Link to comment
Share on other sites

Dalaran Serwers: My patch was for 3.1.3. Some info was taken from Mateo. Was just for testing and i've never included it in trinitycore because of people not being pushed out the spawning sewers. Waterfall doesn't make u lose LoS and was lacking some off data to make knock people.

About Ring of Valor: i've coded that arena in trinitycore, but has the LoS pillar problem. The problem with elevators is a problem with dynamic GO's, it's solved in trinitycore (By Opterman and me). Opterman told me he was going to send a patch to mangos.

- Have to update RoV to 3.2.2 as it was coded for 3.1.3 and has some changes (areatrigger codes + remove fire events)

Link to comment
Share on other sites

a idea for Dalaran Serwers:

to push the player out of the spawning sewers: add a non-visible npc what cast an spell like Typhoon (only without dmg)

to solve the LOS of the waterfall may this quote help you:

You can do what I've done in Kil'jaeden

Spawn a dummy mob(no movement) at the GO's pos, set displayid to 11686, faction 35, UNIT_FLAG_NOT_SELECTABLE, so you can use the dummy mob to do the LoS check or anything else.

(http://www.scriptdev2.com/showpost.php?p=29797&postcount=21)

sorry for my bad english

Link to comment
Share on other sites

No, that's not fixed with that. This is the fix from trinitycore ( http://pastebin.ca/1755903 ) u should port this to mangos to make it work.

diff --git a/src/game/GameObject.cpp b/src/game/GameObject.cpp
index 9ba5cbd..ade0c19 100644
--- a/src/game/GameObject.cpp
+++ b/src/game/GameObject.cpp
@@ -159,6 +159,13 @@ bool GameObject::Create(uint32 guidlow, uint32 name_id, Map *map, uint32 phaseMa
        ((InstanceMap*)map)->GetInstanceData()->OnObjectCreate(this);
    }

+    if (goinfo->type == GAMEOBJECT_TYPE_TRANSPORT)
+    {
+        SetUInt32Value(GAMEOBJECT_LEVEL, goinfo->transport.pause);
+        if (goinfo->transport.startOpen)
+            SetGoState(GO_STATE_ACTIVE);
+    }
+
    return true;
}

@@ -685,6 +692,15 @@ bool GameObject::IsTransport() const
    return gInfo->type == GAMEOBJECT_TYPE_TRANSPORT || gInfo->type == GAMEOBJECT_TYPE_MO_TRANSPORT;
}

+// is Dynamic transport = non-stop Transport
+bool GameObject::IsDynTransport() const
+{
+    // If something is marked as a transport, don't transmit an out of range packet for it.
+    GameObjectInfo const * gInfo = GetGOInfo();
+    if(!gInfo) return false;
+    return gInfo->type == GAMEOBJECT_TYPE_MO_TRANSPORT || (gInfo->type == GAMEOBJECT_TYPE_TRANSPORT && !gInfo->transport.pause);
+}
+
Unit* GameObject::GetOwner() const
{
    return ObjectAccessor::GetUnit(*this, GetOwnerGUID());
diff --git a/src/game/GameObject.h b/src/game/GameObject.h
index d92da00..5c9204b 100644
--- a/src/game/GameObject.h
+++ b/src/game/GameObject.h
@@ -575,6 +575,7 @@ class MANGOS_DLL_SPEC GameObject : public WorldObject
        GameObjectInfo const* GetGOInfo() const;

        bool IsTransport() const;
+        bool IsDynTransport() const;

        uint32 GetDBTableGUIDLow() const { return m_DBTableGuid; }

diff --git a/src/game/Object.cpp b/src/game/Object.cpp
index f5c84d2..120a233 100644
--- a/src/game/Object.cpp
+++ b/src/game/Object.cpp
@@ -604,7 +604,7 @@ void Object::BuildValuesUpdate(uint8 updatetype, ByteBuffer * data, UpdateMask *
    bool IsPerCasterAuraState = false;
    if (updatetype == UPDATETYPE_CREATE_OBJECT || updatetype == UPDATETYPE_CREATE_OBJECT2)
    {
-        if (isType(TYPEMASK_GAMEOBJECT) && !((GameObject*)this)->IsTransport())
+        if (isType(TYPEMASK_GAMEOBJECT) && !((GameObject*)this)->IsDynTransport())
        {
            if ( ((GameObject*)this)->ActivateToQuest(target) || target->isGameMaster())
                IsActivateToQuest = true;

Link to comment
Share on other sites

Mangos 9255 :

CXX BattleGroundDS.o

In file included from ../../../src/game/BattleGroundDS.cpp:19:

../../../src/game/BattleGround.h:300: error: ‘BattleGroundBracketId’ does not name a type

../../../src/game/BattleGround.h:572: error: ‘BattleGroundBracketId’ does not name a type

make[3]: *** [battleGroundDS.o] Ошибка 1

make[3]: Leaving directory `/home/mangos/source/source/objdir/src/game'

make[2]: *** [all-recursive] Ошибка 1

make[2]: Leaving directory `/home/mangos/source/source/objdir/src'

make[1]: *** [all-recursive] Ошибка 1

make[1]: Leaving directory `/home/mangos/source/source/objdir'

make: *** [all] Ошибка 2

Link to comment
Share on other sites

×
×
  • 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