No PvP Zone

Moin

Ich habe ein PvP Server a 150 Usern, nun will ich ein PT machen nur soll dort PvP

deakiviert sein… Wie ist das möglich?

Und ist es möglich ein ObjeKt so zu Scripten wen man durch läuft das man automatisch

an ein Ort teleportiert wird? Also wie beim Dark Portal zur Scherbenwelt.

MFG

mach einfach pvp wachen wie in beutebucht rein, die aber denn halt unsichtbar sein können und die angreifer mit 1 schlag killen ^^ nach dem motto: wer nicht hören will muss fühlen

gute idee =) Wie mach ich das die unsichtbar sind?

Schau hier mal rein /emoticons/default_smile.png

http://www.trinitycore.org/w/Creature_addon_tc2#auras

Jenachdem wo du deinen PT hinsetzt könntest du mit nem kleinen Hack Sanctuary erzwingen…

Das geht genau dann, wenn du ne eigene Zone oder Area hast.

In IsSanctuary() und co. kann man dann einfach ne Überprüfung der jeweiligen ID durchführen und ggf. true zurückliefern.

Zu dem Portkrams:

  • Unsichtbaren Trigger-NPC (creature_template.flags_extra /emoticons/default_wink.png) erstellen

  • MoveInLineOfSight-Hook

  • IsWithinDistInMap(obj, dist) anwenden um sicherzustellen, dass der Spieler nah genug ist, um geportet zu werden.

Wenn der Mittelpunkt des Objektes stark von der gewünschten Portposition abweicht, kannst du ein 2tes Objekt erstellen, von dem aus der ganze Kram überprüft wird

Thx =)

Nun ja mein haupt Problem besteht nun darin das ich PvP im PT verhindern will. Mein Pt befindet sich in:

Nordend → Eiskrone → Etwas NO° von Jotunheim

Wie mach ich jetzt das da einfach das Aktivieren von PvP nicht möglich ist? Das Problem ist einfach das Alli

und Horde in einem PT sind und die sich nicht schlagen dürfen =)

/push

K.A. welchen Ort du genau meinst…

Schau dir halt die AreaID an (bsp.: .gps → Karte: 571 (Nordend) Zone: 210 (Eiskrone) Gebiet: 4517 (Der Tränenbruch) Phase: 4294967295)

Wenn du ne richtige Sanctuary Area raus machen willst, dann kannst du das nur bezogen auf die ganze Area… Also mal mit .gps nen bissl rumlaufen und gucken wo du noch die selbe ID hast. Das wäre dann der Bereich, in dem du PvP komplett deaktivieren kannst.

Ansonsten bliebe nur die Möglichkeit unsichtbare Wachen zu erstellen oder durch Hacks in Funktionen wie Player::DealDamage (nur ne Vermutung) und bspw. den LoS-Checks von Spells einzufügen. Da könnte man die Spielerkoordinaten überprüfen und ggf. dem PT zuordnen und dementsprechen die Aktion verweigern…

x > ptminx && x < ptmaxx && y > ptminy && y < ptmaxy o.ä.

If(plr->GetZone() == PT)

plr->SetAura(plrflags, sancturary)

soetwas müsste es geben.

das ganze kannste per getzone oder wie schon oben gesagt als npc script machen mit iswithindistmap

DbcStructure.h


// helpers

    bool IsSanctuary() const

    {

        if (mapid == 609)

            return true;

        return (flags & AREA_FLAG_SANCTUARY);

    }

Da einfach ne abfrage für entweder die zone oder die ganze map reinmachen → return true und du hast ne perfekte sanctuary zone /emoticons/default_wink.png

In etwa so


switch (mapid)

{

   case 609:

   case 123:

   case 124:

        return true;

}

Wenn dus halt nur für ne zone machen willst einfach


// helpers

    bool IsSanctuary() const

    {

        if (mapid == 609)

            return true;

        if (zone = 123/*Zoneid*/)

            return true;

        return (flags & AREA_FLAG_SANCTUARY);

    }