[Noob Friendly] Creating a Sanctuary or Free For All Zone
I realise this has been posted before, But the guide I found only explains the pvp flags, and I heard some people not knowing wtf to do so I guess I'll make a slightly more detailed guide.
Download DBC Editor: [Only registered and activated users can see links. ]
Now find the zone you want to edit, Two ways for this:
a. Go ingame and type .gps:
Look at the Zone ID, If the number is not 0, Remember it.
If it is 0, remember the AREA ID.
For example I will take The Veiled Sea in Silithus
Zone ID: 1377, Area 2477, So I'll remember the Zone ID, 1377
Open up the DBC editor, Click File > Open
Go to your server's folder/dbc (Example \Arcemu\dbc\), Look for the file Areatable.dbc and open it with the DBC editor.
b. The second method is to now go to Field 11 and look for the name of the zone you want to edit.
If you used the first method, Then go find the ID in field 0 or ID.
If you have found the zone go to Field 4 of the zone and replace the current number with the one of your choice:
19496 - Sanctuary (No duels allowed) 19456 - Sanctuary (Duels allowed) 17536 - Free for All (Used in places such as gurubashi arena)
64 - Normal zone.
If you have set everything the way you like, You can now save, But be careful because this program is a piece of shit sometimes, Click on a different zone or row and then press save, Otherwis it won't for some reason.
When you have saved you can also rename the zone by changing Field 11.
Note, This is only serverside, Players will not be able to see this unless they have a patch with this file in.
The changes apply after a server restart
Additional steps:
If you have a client side server or would like to see the zone beign actually sanctuary or free for all ingame, and see the zone name ingame, Then you have to follow these steps.
Download MPQ editor: [Only registered and activated users can see links. ]
Extract it and open it, and click File > New MPQ Archive.
Enter the name of the patch.
This should always be "patch-X.MPQ"
The X can be replaced by another letter, Just make sure it's in caps or it won't read. And the p from patch cannot be in caps. (Heard some people having trouble with this aswell)
When you have created the new MPQ create a folder named DBFilesClient.
And put the Areatable.dbc in that folder inside the MPQ.
Now close the program, You will find the MPQ in the same folder as the MPQ editor.
Move this file to your World of Warcraft/Data folder, Restart wow, Restart your server, and done!
I hope that was clear enough :P
Last edited by Nightfoxx; 07-02-2009 at 11:56 AM.
Reason: Miss spell
Donate to remove ads, get your "DONATOR title, and get access to the MMOwned community's elite Shoutbawx.
#include "StdAfx.h"
#include "Setup.h"
void PvPDisableAtMall(PlayerPointer Plr, uint32 Type, uint32 Lang, const char * Message, const char * Misc)
{
/*
Comment One or The Other - One can set the map ID or One Can set the Zone ID - Example
if (Plr->GetMapId() == 44) = Turns Off PvP Flag when The Enter Map ID 44 ( Unused Monestary Instance )
if (Plr->GetZoneId() == 394) = Turns Off PvP on Zone ID 394 ( Some Random Town Area in Grizzly Hills )
Now that you see how to do this, you can also Add more zones to your "Disabled Areas" that you wish PvP
to Disable on entry to save players from being ganked when exiting BG's or coming from other contested areas
In the Future I may write this one out so that it disables pvp on entry of every new map, its really
annoying when you enter an instance and certain things don't work because you are flagged for pvp
Adding This to every map or zone possible with GM Checks can also be a good way to shut off pvp flags
for Game Masters ^QQ^
NOTE: PvP Can Still Be Enabled once you are in the map or zone, this only turns off your pvp flag
On Map or Zone Entry
TO DO: Figure out a constant call to have the script check every second if players are flagged and to disable
*/
/* EXAMPLE FOR ADDED MAPS / ZONES */
/*
// Random Map and Zone ID's used for Examples
if (Plr->GetGetMapId() == 44)
{
if (Plr->GetMapId() == 571)
{
if (Plr->GetZoneId() == 396)
{
if (Plr->GetZoneId() == 1457)
{
*/
//if (Plr->GetMapId() == 169)
if (Plr->GetZoneId() == 394)
{
if (Plr->IsPvPFlagged())
{
Plr->StopPvPTimer();
Plr->RemovePvPFlag();
/*
This Message is sent to the player on map / zone entry
*/
sChatHandler.SystemMessage(Plr->GetSession(), "PvP is Disabled Here");
/*
This Message Is sent to the Console Like So-
"Server: Kalan Has Entered A Non PVP Area"
*/
char msg[256];
sprintf(msg, "%s", Plr->GetName());
sprintf(msg, "%s Has Entered A Non PVP Area", msg);
Log.Notice("Server", msg);
}
}
}
void SetupPvPDisableAtMall(ScriptMgr * mgr)
{
mgr->register_hook(SERVER_HOOK_EVENT_ON_ENTER_WORLD, (void*)&PvPDisableAtMall);
}
Not Mine I found it but its pretty easy to understand and somewhat easier then editiny mpqs credits go to tekkeryole on ac web for this