[Solved] Door won't open

For any problems with Dawn of Light website or game server, please direct questions and problems here.

Moderator: Support Team

[Solved] Door won't open

Postby bluraven » Sat May 29, 2010 7:24 pm

I'm pretty much finished with my newest artifact encounter (Bruiser) but before I put it on storm for the players to enjoy there is one minor issue I need help with:

I can't seem to get the main door to the Bruiser artifact encounter building to open. When I left click the door it gives me the debug message:

[DEBUG] DoorID:84011001 state:1 zone:84 fixture:110 fixturePiece:1 Type:0

And when I looked it up in the door table in the database, it does have an entry for it and the info in the DB for the door seems correct, yet I still can't open the door.
I deleted the database entry for this door and then it prompted me to add the door to the database, which I did, but still it won't open.

The door opens just fine on live. Here is the human readable version of the packet sent for opening the door on live:
00:06:04.590 S=>C 0x99 set door open state (doorId:0x0501E7F9 openState:1 soundId:0 unk1:0xFF (zone:84 fixture:110 fixturePeace:1))
I checked and 0501E7F9 translates to 84011001 (the correct ID). Does openstate:1 mean open or closed? Maybe the server thinks the door is already open and stuck that way but the client see's it as closed?
Any help would be appreciated. I don't want all my hard work on this encounter to be foiled by a non working door to get inside :(
Image
bluraven
Support Team
 
Posts: 1484
Joined: Mon Mar 19, 2007 8:18 am
Location: Las Vegas, NV

Re: Door won't open

Postby Tolakram » Sat May 29, 2010 9:27 pm

Two things.

First disable my auto-noise patch in the door handler packet. This may be interfering with this door, and if it is then it should be yanked. Frankly it should be removed regardless, and I should update the DB if I want doors to make a default noise. This is in the core code.

Second, door state may mean open and closed, so you might try reversing the handler and seeing if it works. Storm has custom door handlers in the Storm/Handlers directory ... StormRegionAndArenaDoorHandler. If you're using this code make sure something done in there isn't mucking with your door.
- Mark
User avatar
Tolakram
Storm / Storm-D2 Admin
 
Posts: 9189
Joined: Tue Jun 13, 2006 1:49 am
Location: Kentucky, USA

Re: Door won't open

Postby bluraven » Sat May 29, 2010 10:42 pm

I commented out the auto-noise thing and no change. It probably wouldn't make a difference for that anyway though as you exclude doors that are in TOA zones already from that. I looked through the StormRegionAndArenaDoorHandler and nothing stood out to me that would cause any trouble there but then again I'm not really sure what I'm looking for lol. It seemed to only have special cases for doors that were in instanced or in a StormArena, which this door is neither. Something I noticed though too is that when I click the building that the door is part of, it thinks it's like a keep or something because it says:

"Unknown is under neutral ownership." and "This structure is level 1".
Does that mean anything? Does it think it's a keep? Would that matter?

I'm not sure I understand how to reverse the handler as you suggested. I'm looking at this:
Code: Select all
public virtual void SendDoorState(IDoor door)
{
using (var pak = new GSTCPPacketOut(GetPacketCode(ePackets.DoorState)))
{
ushort zone = (ushort)(door.DoorID / 1000000);
Zone doorZone = WorldMgr.GetZone(zone);
int doorType = door.DoorID / 100000000;
uint flag = door.Flag;

//// by default give all unflagged above ground non keep doors a default sound (excluding ToA zones)
//if (flag == 0 && doorType != 7 && doorZone != null && !doorZone.IsDungeon && doorZone.ZoneRegion.Expansion != (int)eExpansion.ToA)
//{
// flag = 1;
//}

pak.WriteInt((uint)door.DoorID);
pak.WriteByte((byte)(door.State == eDoorState.Open ? 0x01 : 0x00));
pak.WriteByte((byte)flag);
pak.WriteByte(0xFF);
pak.WriteByte(0x0);
SendTCP(pak);
}
}
So your saying to change this:
pak.WriteByte((byte)(door.State == eDoorState.Open ? 0x01 : 0x00));
To something like:
pak.WriteByte((byte)(door.State == eDoorState.Open ? 0x00 : 0x00));
or:
pak.WriteByte((byte)(door.State == eDoorState.Open ? 0x01 : 0x01));
or am I not understanding correctly?
edit: oh wait! I get it, you mean to do this:
pak.WriteByte((byte)(door.State == eDoorState.Open ? 0x00 : 0x01));
I'm trying that right now.
edit: Ok I just tried reversing it to 00 : 01 and it had no effect either. :(

What should I check/change next?
Image
bluraven
Support Team
 
Posts: 1484
Joined: Mon Mar 19, 2007 8:18 am
Location: Las Vegas, NV

Re: Door won't open

Postby bluraven » Sat May 29, 2010 11:05 pm

Very Interesting... I logged the packets from DOL on my test server of me trying to open the problematic door:

00:00:50.545 S<=C 0xAF cmd (sid:0x0001 unk1:0x0000 unk2:0x00F3 unk3:0x9100 "&say I'm trying to open the door now." flag:0x27)
00:00:50.560 S=>C 0xAF msg (sid:0x0001 0x01 unk1:0xFFFF unk2:0x00 unk3:0x0000, chat: "You say, "I'm trying to open the door now."")
00:00:51.855 S<=C 0xA9 player position update v190f (sessionId:0x0001 status:0x00 speed:0 heading:0x0C0F(0x0) currentZone(141): (59755 13881 10831) flyFlags:0x00 speedZ:0 flags:0x80 health:100% unk2:0x0000 unk190_1:0x00 unk190_2:0x00 02A6AD00 00000000 0091C3A0 00000000 49036390 48FD2D60 46293EE6 00000000 (,OnGround,Torch))
00:00:52.323 S<=C 0xA3 ping reply (timeStamp:0x21318342 unk1:0x0000 unk2:0x1800 unk3:0x00000000 upTime:15:28:09.2994000)
00:00:52.339 S=>C 0x29 ping reply (timeStamp:0x21318342 sequence:0x0037 unk1:0x00000000 unk2:0x0000 unk3:0x00000000)
00:00:52.682 S<=C 0x99 open door request (doorId:0x0501E7F9 openState:1 unk1:0xFF unk2:0xFFFF (zone:84 fixture:110 fixturePeace:1))
00:00:52.729 S=>C 0xAF msg (sid:0x0001 0x00 unk1:0xFFFF unk2:0x00 unk3:0x0000: "[DEBUG] DoorID:84011001 state:1 zone:84 fixture:110 fixturePiece:1 Type:0)")
00:00:54.024 S<=C 0xBA player short state v190c (sessionId:0x0001 heading:0x0C0F flags:0x80 health:100% unk1:0x00 innerCounter:0x04 bSlot:0x00 state:0 unk2:0xCB07 (,Torch))
00:00:56.161 S<=C 0xA9 player position update v190f (sessionId:0x0001 status:0x00 speed:0 heading:0x0C0F(0x0) currentZone(141): (59755 13881 10831) flyFlags:0x00 speedZ:0 flags:0x80 health:100% unk2:0x0000 unk190_1:0x00 unk190_2:0x00 00000000 00000000 767C3658 0091C300 00000000 49036390 48FD2D60 46293EE6 (,OnGround,Torch))
00:00:56.332 S<=C 0xA3 ping reply (timeStamp:0x2132205F unk1:0x0001 unk2:0x1800 unk3:0x00000001 upTime:15:28:13.3215000)
00:00:56.348 S=>C 0x29 ping reply (timeStamp:0x2132205F sequence:0x003B unk1:0x00000000 unk2:0x0000 unk3:0x00000000)
00:00:57.502 S<=C 0xAF cmd (sid:0x0001 unk1:0x0000 unk2:0x00F3 unk3:0x9100 "&say it didn't open." flag:0x00)
00:00:57.502 S=>C 0xAF msg (sid:0x0001 0x01 unk1:0xFFFF unk2:0x00 unk3:0x0000, chat: "You say, "it didn't open."")

It looks like there is a request to open the door:
00:00:52.682 S<=C 0x99 open door request (doorId:0x0501E7F9 openState:1 unk1:0xFF unk2:0xFFFF (zone:84 fixture:110 fixturePeace:1))

But there never any response from the server to the client to open the door, this packet is not being sent at all for some reason, and it is supposed to be:
00:06:04.590 S=>C 0x99 set door open state (doorId:0x0501E7F9 openState:1 soundId:0 unk1:0xFF (zone:84 fixture:110 fixturePeace:1))
and that is not being sent from DOL to my client at all, so I guess I need to understand why is it not sending that response to have the door open at all?
It's not handling the open door request like it's supposed to for this door, it just ignores the request it appears :evil:
Image
bluraven
Support Team
 
Posts: 1484
Joined: Mon Mar 19, 2007 8:18 am
Location: Las Vegas, NV

Re: Door won't open

Postby Tolakram » Sat May 29, 2010 11:18 pm

It has a legal (as far as we're concerned) door type? Off the top of my head, if the client didn't send back anything then now what? The server must have needed to send something special that we did not.
- Mark
User avatar
Tolakram
Storm / Storm-D2 Admin
 
Posts: 9189
Joined: Tue Jun 13, 2006 1:49 am
Location: Kentucky, USA

Re: Door won't open

Postby bluraven » Sat May 29, 2010 11:31 pm

The client is sending the proper request. The server just isn't sending any response to it. How would I check that the door type is a legal type?
Image
bluraven
Support Team
 
Posts: 1484
Joined: Mon Mar 19, 2007 8:18 am
Location: Las Vegas, NV

Re: Door won't open

Postby Tolakram » Sun May 30, 2010 12:12 am

Well now that's a good question. :) We're running to the limit of my door knowledge, which isn't much. If you look at the door code it can tell the difference between keep doors and other doors. Perhaps there is another door type that needs to be handled in yet another fashion?
- Mark
User avatar
Tolakram
Storm / Storm-D2 Admin
 
Posts: 9189
Joined: Tue Jun 13, 2006 1:49 am
Location: Kentucky, USA

Re: Door won't open

Postby bluraven » Sun May 30, 2010 12:36 am

This is reallly strange now. I logged on to crazys server and had him test this door on his. It wasn't in his database and when he interacted with it, it spawned a loot bag on the ground and the door swung open. He added the door to the database at that point and then the door broke. We tried this on another nearby door in the zone and same thing, worked at first and then it broke after adding it.
Image
bluraven
Support Team
 
Posts: 1484
Joined: Mon Mar 19, 2007 8:18 am
Location: Las Vegas, NV

Re: Door won't open

Postby Tolakram » Sun May 30, 2010 12:39 am

Ah HA.

The loot bag is my sound code, that's why it needs to be removed or fixed to make sure the player is not in ToA. It has this odd side effect of showing loot bags if the door is not in the db. I'd love to know what feature that is related too. :)

Because the door was not in the db the door code executed the generic open anything in range code.

Here's the code that's executed when the door is not in the DB.
Code: Select all
//else basic quick hack
GameDoor door = new GameDoor();
door.DoorID = m_doorId;
door.X = player.X;
door.Y = player.Y;
door.Z = player.Z;
door.Realm = eRealm.Door;
door.CurrentRegion = player.CurrentRegion;
door.Open();
- Mark
User avatar
Tolakram
Storm / Storm-D2 Admin
 
Posts: 9189
Joined: Tue Jun 13, 2006 1:49 am
Location: Kentucky, USA

Re: Door won't open

Postby bluraven » Sun May 30, 2010 1:28 am

Isn't what I found your door sound code? I thought I found that and commented it out and it didn't change anything. Where is that code? I was looking in packetlib168 the send door update part.
Image
bluraven
Support Team
 
Posts: 1484
Joined: Mon Mar 19, 2007 8:18 am
Location: Las Vegas, NV

Re: Door won't open

Postby Tolakram » Sun May 30, 2010 2:03 am

Yea. So you get the bag without the sound? That's interesting. I wonder if it's something new with one of the recent versions. We noticed it a few months ago ... maybe with 1.98 or 1.99.
- Mark
User avatar
Tolakram
Storm / Storm-D2 Admin
 
Posts: 9189
Joined: Tue Jun 13, 2006 1:49 am
Location: Kentucky, USA

Re: Door won't open

Postby bluraven » Sun May 30, 2010 2:44 am

Actually no, when we saw the bag that was on crazys server which still had that sound code. I'll try removing the sound code and removing the door from the db, maybe I'll get a different result.
Image
bluraven
Support Team
 
Posts: 1484
Joined: Mon Mar 19, 2007 8:18 am
Location: Las Vegas, NV

Re: Door won't open

Postby bluraven » Sun May 30, 2010 5:05 am

Still no luck but I think I'm getting closer to pinning down this problem somewhat.
I've tried starting the server with absolutely nothing in the scripts folder and still no luck, so it's nothing related to storm or a server script.
Here is the place I think the problem is: GameServer/packets/client/168/DoorRequestHandler.cs
Because if I bypass all the logic in there and tell it to just open the damn door as soon as it receives a request from the client, sure enough my problem door swings wide open:
Code: Select all
public static int DoorIDhandler;
/// <summary>
/// door index which is unique
/// </summary>
public int HandlePacket(GameClient client, GSPacketIn packet)
{
int DoorID = (int)packet.ReadInt();
DoorIDhandler = DoorID;
byte doorState = (byte)packet.ReadByte();
int doorType = DoorID / 100000000;
if (client.Account.PrivLevel > 1)
{
GameDoor door = new GameDoor();
door.DoorID = DoorID;
door.X = client.Player.X;
door.Y = client.Player.Y;
door.Z = client.Player.Z;
door.Realm = eRealm.Door;
door.CurrentRegion = client.Player.CurrentRegion;
door.Open();
The doortype for this door is 0. I don't know if that's the problem or not. All the doortype is is the door ID divided by 100000000.
int doorType = DoorID / 100000000;
For my problem door that equates to zero somehow, when I calculate the doorID (84011001) and divide it by 100000000, I get 84 so I don't know how it's zero, but I digress.
I saw in the handler where it wants to get the players target as a GameDoor and you cannot actually target this door, so I'm thinking that might have something to do with the problem too.

This crap is driving me absolutely batty and I don't think I'm skilled enough at this to figure it out. I know there are probably more pressing matters but would someone with a bit more skill be willing to take a look? I've at least narrowed down where the problem is I think.
Here is the full DoorRequestHandler code:
Code: Select all
/*
* DAWN OF LIGHT - The first free open source DAoC server emulator
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 2
* of the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*
*/
using System;
using System.Collections.Generic;
using DOL.Database;
using DOL.Language;
using DOL.GS.Keeps;

namespace DOL.GS.PacketHandler.Client.v168
{
[PacketHandler(PacketHandlerType.TCP, 0x31 ^ 168, "Handles open/close door requests!")]
public class DoorRequestHandler : IPacketHandler
{

public static int DoorIDhandler;
/// <summary>
/// door index which is unique
/// </summary>
public int HandlePacket(GameClient client, GSPacketIn packet)
{
int DoorID = (int)packet.ReadInt();
DoorIDhandler = DoorID;
byte doorState = (byte)packet.ReadByte();
int doorType = DoorID / 100000000;
if (client.Account.PrivLevel > 1)
{

if (doorType == 7)
{
int ownerKeepId = (DoorID / 100000) % 1000;
int towerNum = (DoorID / 10000) % 10;
int keepID = ownerKeepId + towerNum * 256;
int componentID = (DoorID / 100) % 100;
int doorIndex = DoorID % 10;
client.Out.SendDebugMessage("Keep Door ID: {0} state:{1} (Owner Keep: {6} KeepID:{2} ComponentID:{3} DoorIndex:{4} TowerNumber:{5})", DoorID, doorState, keepID, componentID, doorIndex, towerNum, ownerKeepId);
}
else if (doorType == 9)
{
int doorIndex = DoorID - doorType * 10000000;
client.Out.SendDebugMessage("House DoorID:{0} state:{1} (doorType:{2} doorIndex:{3})", DoorID, doorState, doorType, doorIndex);
}
else
{
int zoneDoor = (int)(DoorID / 1000000);
int fixture = (int)(DoorID - zoneDoor * 1000000);
int fixturePiece = fixture;
fixture /= 100;
fixturePiece = fixturePiece - fixture * 100;
client.Out.SendDebugMessage("DoorID:{0} state:{1} zone:{2} fixture:{3} fixturePiece:{4} Type:{5})", DoorID, doorState, zoneDoor, fixture, fixturePiece, doorType);
}
}

GameDoor target = client.Player.TargetObject as GameDoor;

if( target != null && !client.Player.IsWithinRadius( target, 500 ) )
{
client.Player.Out.SendMessage("You are too far to open this door", eChatType.CT_Important, eChatLoc.CL_SystemWindow);
return 0;
}

DBDoor DOOR = GameServer.Database.SelectObject<DBDoor>("InternalID = '" + DoorID + "'");

if (DOOR != null)
{
if( doorType == 7 || doorType == 9 )
{
new ChangeDoorAction(client.Player, DoorID, doorState).Start(1);
return 1;
}

if (client.Account.PrivLevel == 1 )
{
if (DOOR.Locked == 0)
{
if (DOOR.Health == 0)
{
new ChangeDoorAction(client.Player, DoorID, doorState).Start(1);
return 1;
}
if (GameServer.Instance.Configuration.ServerType == eGameServerType.GST_PvP)
{
if( DOOR.Realm != 0)
{
new ChangeDoorAction(client.Player, DoorID, doorState).Start(1);
return 1;
}
}
if( GameServer.Instance.Configuration.ServerType == eGameServerType.GST_Normal )
{
if( (eRealm)client.Player.Realm == (eRealm)DOOR.Realm || DOOR.Realm == 6 )
{
new ChangeDoorAction(client.Player, DoorID, doorState).Start(1);
return 1;
}
}
}
}
if( client.Account.PrivLevel > 1 )
{
new ChangeDoorAction(client.Player, DoorID, doorState).Start(1);
return 1;
}
}

if (DOOR == null)
{
if (doorType != 9 && client.Account.PrivLevel > 1 && client.Player.CurrentRegion.IsInstance == false)
{
if (client.Player.TempProperties.getProperty(DoorMgr.WANT_TO_ADD_DOORS, false))
{
client.Player.Out.SendCustomDialog("This door is not in the database. Place yourself nearest to this door and click Accept to add it.", new CustomDialogResponse(AddingDoor));
}
else
{
client.Player.Out.SendMessage("This door is not in the database. Use '/door show' to enable the add door dialog when targeting doors.", eChatType.CT_Important, eChatLoc.CL_SystemWindow);
}
}

new ChangeDoorAction(client.Player, DoorID, doorState).Start(1);
return 1;
}
return 0;
}

public void AddingDoor ( GamePlayer player, byte response )
{
if( response != 0x01 )
return;

int doorType = DoorIDhandler / 100000000;
if( doorType == 7 )
{
PositionMgr.CreateDoor(DoorIDhandler, player);
}
else
{
DBDoor door = new DBDoor( );
door.ObjectId = null;
door.InternalID = DoorIDhandler;
door.Name = "door";
door.Type = DoorIDhandler / 100000000;
door.Level = 20;
door.Realm = 6;
door.MaxHealth = 2545;
door.Health = 2545;
door.Locked = 0;
door.X = player.X;
door.Y = player.Y;
door.Z = player.Z;
door.Heading = player.Heading;
GameServer.Database.AddObject(door);

player.Out.SendMessage("Added door " + DoorIDhandler + " to the database!", eChatType.CT_Important, eChatLoc.CL_SystemWindow);
DoorMgr.Init( );
}
}


/// <summary>
/// Handles the door state change actions
/// </summary>
protected class ChangeDoorAction : RegionAction
{
/// <summary>
/// The target door Id
/// </summary>
protected readonly int m_doorId;
/// <summary>
/// The door state
/// </summary>
protected readonly int m_doorState;

/// <summary>
/// Constructs a new ChangeDoorAction
/// </summary>
/// <param name="actionSource">The action source</param>
/// <param name="doorId">The target door Id</param>
/// <param name="doorState">The door state</param>
public ChangeDoorAction(GamePlayer actionSource, int doorId, int doorState)
: base(actionSource)
{
m_doorId = doorId;
m_doorState = doorState;
}

/// <summary>
/// Called on every timer tick
/// </summary>
protected override void OnTick()
{
GamePlayer player = (GamePlayer)m_actionSource;
List<IDoor> doorList = DoorMgr.getDoorByID(m_doorId);

if (doorList.Count > 0)
{
bool success = false;
foreach (IDoor mydoor in doorList)
{
if (success)
break;
if (mydoor is GameKeepDoor)
{
GameKeepDoor door = mydoor as GameKeepDoor;
//portal keeps left click = right click
if (door.Component.Keep is GameKeepTower && door.Component.Keep.KeepComponents.Count > 1)
door.Interact(player);
success = true;
}
else
{
if (player.IsWithinRadius(mydoor, GS.ServerProperties.Properties.WORLD_PICKUP_DISTANCE * 2))
{
if (m_doorState == 0x01)
mydoor.Open();
else
mydoor.Close();
success = true;
}
}
}

if (!success)
player.Out.SendMessage(LanguageMgr.GetTranslation(player.Client, "DoorRequestHandler.OnTick.TooFarAway", doorList[0].Name), eChatType.CT_System, eChatLoc.CL_SystemWindow);
}
else
{

//new frontiers we don't want this, i.e. relic gates etc
if (player.CurrentRegionID == 163 && player.Client.Account.PrivLevel == 1)
return;
/*
//create a bug report
BugReport report = new BugReport();
report.DateSubmitted = DateTime.Now;
report.ID = GameServer.Database.GetObjectCount<BugReport>() + 1;
report.Message = "There is a missing door at location Region: " + player.CurrentRegionID + " X:" + player.X + " Y: " + player.Y + " Z: " + player.Z;
report.Submitter = player.Name;
GameServer.Database.AddObject(report);
*/

//else basic quick hack
GameDoor door = new GameDoor();
door.DoorID = m_doorId;
door.X = player.X;
door.Y = player.Y;
door.Z = player.Z;
door.Realm = eRealm.Door;
door.CurrentRegion = player.CurrentRegion;
door.Open();
}
}
}
}
}
Let me know if you need me to do any other testing but as much as this is driving me crazy I think I'm just going to have to put an NPC that will port players in and out of the broken door. I don't know what else to do here, I'm at my wits end. :confused: For the love of Odin, please help :D
Image
bluraven
Support Team
 
Posts: 1484
Joined: Mon Mar 19, 2007 8:18 am
Location: Las Vegas, NV

Re: Door won't open

Postby baradien » Sun May 30, 2010 9:25 am

if a door doesn't open it's sometimes it responds late. like ya do 5 times on door. he won't do a thing but the 6th time he opened but very fast. but funny thing when opening a door ya see a bag ^^ i know for what that bag is.
like creating a new keep the first 2 door of a lvl 10 keep for example has first no hp cuz it's like a basic door. when ya open mostly the first door the 2nd door won't respond untill the first door is closed.

that's i can say about this a bit.
baradien
Server Team
 
Posts: 950
Joined: Wed Jan 23, 2008 3:17 pm
Location: Belguim

Re: Door won't open

Postby Tolakram » Sun May 30, 2010 9:48 am

I suspect the problem is in the door handler after it grabs the door from the db. Non targetable is not an issue, though we should do a check for distance even if the door is not targetable, that's another bug.

Code: Select all
DBDoor DOOR = GameServer.Database.SelectObject<DBDoor>("InternalID = '" + DoorID + "'");

if (DOOR != null)
{
if( doorType == 7 || doorType == 9 )
{
new ChangeDoorAction(client.Player, DoorID, doorState).Start(1);
return 1;
}

if (client.Account.PrivLevel == 1 )
{
if (DOOR.Locked == 0)
{
if (DOOR.Health == 0)
{
new ChangeDoorAction(client.Player, DoorID, doorState).Start(1);
return 1;
}
if (GameServer.Instance.Configuration.ServerType == eGameServerType.GST_PvP)
{
if( DOOR.Realm != 0)
{
new ChangeDoorAction(client.Player, DoorID, doorState).Start(1);
return 1;
}
}
if( GameServer.Instance.Configuration.ServerType == eGameServerType.GST_Normal )
{
if( (eRealm)client.Player.Realm == (eRealm)DOOR.Realm || DOOR.Realm == 6 )
{
new ChangeDoorAction(client.Player, DoorID, doorState).Start(1);
return 1;
}
}
}
}
if( client.Account.PrivLevel > 1 )
{
new ChangeDoorAction(client.Player, DoorID, doorState).Start(1);
return 1;
}
}
First off, if you're a GM you'll always execute the open door no matter what code. if not then it has t be a known door type of the correct realm, otherwise it does nothing. I'm putting some additional debug info in the storm door handler that might help. It will tell you what was found in the DB and if the door operation was handled.

In addition, do you know if this door is locked? Since it's an encounter you may need to handle the door in a unique fashion, making sure it's unlocked when the encounter is done.
- Mark
User avatar
Tolakram
Storm / Storm-D2 Admin
 
Posts: 9189
Joined: Tue Jun 13, 2006 1:49 am
Location: Kentucky, USA


Return to “%s” Support

Who is online

Users browsing this forum: No registered users and 0 guests