Go Back   EQEmulator Home > EQEmulator Forums > Development > Development::Database/World Building

Development::Database/World Building World Building forum, dedicated to the EQEmu MySQL Database. Post partial/complete databases for spawns, items, etc.

Reply
 
Thread Tools Display Modes
  #1  
Old 07-01-2012, 05:27 PM
Curzon7
Fire Beetle
 
Join Date: Jun 2012
Posts: 10
Default Removing keys

Does anyone know an easy way to remove key access restrictions to zones/doors or to grant all access to a character/account?

Thanks
Reply With Quote
  #2  
Old 07-01-2012, 10:39 PM
sorvani
Dragon
 
Join Date: May 2010
Posts: 966
Default

keys (for doors) are zones are different things. if a "key" is for zone access, that may not be the only thing blocking entry to the zone.

you can write a SQL to add every key in the game to a player int he keyring table to handle the basic keyring issue.

but zone access is blocked completely differently in most places.
Reply With Quote
  #3  
Old 07-03-2012, 06:10 PM
Curzon7
Fire Beetle
 
Join Date: Jun 2012
Posts: 10
Default

Well, I tried many many things, and eventually managed to disable the access restriction related to a certain item.

The first thing I tried was adding all key item id's to the loot table of an easy to get to mob. This did not work, I couldn't get any of my changes to loot to work at all, I'm thinking there's some relationship between the client and the server with respect to loot drops, because this also caused alot of errors to start showing up on my error log for the server. So I abandoned that idea for now, though I plan to revisit it with maybe adding the items to a merchant for purchase.

The next thing I tried was changing the key item id in the doors table. I used a lodi shield id (as my character in the world at the locked door happened to have one on him). This did not work, although it did add the lodi shield to that character's keyring.

What finally worked was setting the key item id AND the picklock field to zero for the door. For zones it seemed to work the same way, though I have only tested it through kunark at this point. I suspect this won't work for the PoP flags and so forth, but maybe it will.

I don't really know what I'm doing, but I've found so many posts like this that were helpful to me so far that I figured I'd take the time to share.

What sorv suggested is probably better, but I don't know enough to write a SQL.
Reply With Quote
  #4  
Old 07-03-2012, 06:46 PM
Uleat's Avatar
Uleat
Developer
 
Join Date: Apr 2012
Location: North Carolina
Posts: 2,815
Default

If you don't have any 'C' programming experience, you can probably still follow what is going on in the code.

I'd recommend looking at the function 'Doors::HandleClick' in <eqemusource directory>\EQEmuServer\zone\doors.cpp.

This is where 'door checks' occur and will give you an idea of door opening/unlocking operations. With this,
you may be able to better anticipate database change requirements instead of randomly replacing values.


U
__________________
Uleat of Bertoxxulous

Compilin' Dirty
Reply With Quote
  #5  
Old 07-04-2012, 12:37 AM
blackdragonsdg
Dragon
 
Join Date: Dec 2008
Location: Tennessee
Posts: 654
Default

The following sql should aid you in your quest to rid yourself of door and zone restrictions.

Code:
-- Removes item requirements for all doors
update doors set keyitem = 0 where keyitem != 0;

-- Removes minimum level requirements for all zones
update zone set min_level = 0 where min_level != 0;

-- Removes status requirements for all zones
update zone set min_status = 0 where min_status != 0;

/* Removes flagging requirements from all zones */
update zone set flag_needed = '' where flag_needed != '';
It has already been said before but I am going to say it again this is not fool proof and you will still encounter restrictions because a lot of things are done using perl scripts. To fully remove all restrictions you will need to learn perl so that you can mod out the restrictions or you can simply delete the scripts. Deleting the scripts to remove a restriction could deprive you of content as alot of things are done in zone instances which are script created and controlled.

Last edited by blackdragonsdg; 07-04-2012 at 12:44 AM.. Reason: Forgot the flagging requirements
Reply With Quote
  #6  
Old 07-04-2012, 12:49 AM
sorvani
Dragon
 
Join Date: May 2010
Posts: 966
Default

not at home with my database handy, but you may also need to set lockpick =0 anywhere that it is not I think.
Reply With Quote
  #7  
Old 07-04-2012, 02:36 AM
Curzon7
Fire Beetle
 
Join Date: Jun 2012
Posts: 10
Default

Yea, it's definately more complicated than I first thought. By setting the keyitem and the lockpick field in the doors table to 0, and by going into the zones table and setting all the flag values to 0, testing through the end of luclin I have access to every zone, however, I can't get into all parts of every zone. There are two places in VT where I can't go, though I can get through to the end, just the first two mini bosses I can't get to.

I also can't stay in the emp room in ssra. I can get there, but then I get sent to the entrance right away. I tried resetting the safe spot in the zone file to emp's room, didn't work. I vaguely recall there is a check on the toon in that area to see if you have the ring on you, so you can't get corpse summoned up there to loot if you didn't ever do the key quest, so that's probably what's hitting me, which means it will probably be an issue in the planes, but I'll try that status field and see what i can figure out there.

I also can't get to seru. I used illusion to get to his area without the key, but there's some kind of invisible wall around him, I had to edit the character location table to get past it. May just be part of his encounter that I never dealt with before unrelated to the key issue.

I still think the best way is to add a vendor somewhere that sells the keys, so that's what I'll work on next.
Reply With Quote
  #8  
Old 07-04-2012, 04:11 AM
demonstar55
Demi-God
 
Join Date: Apr 2008
Location: MA
Posts: 1,164
Default

for emps room you should be able to remove the ssratemple/keycheck.pl file (this should be safe to remove).

For the rooms in VT maybe you missed a line or something? I didn't see any quest file (at least PEQ quest files) that would prevent you from opening them
Reply With Quote
  #9  
Old 07-04-2012, 12:08 PM
Curzon7
Fire Beetle
 
Join Date: Jun 2012
Posts: 10
Default

Quote:
Originally Posted by demonstar55 View Post
for emps room you should be able to remove the ssratemple/keycheck.pl file (this should be safe to remove).
I haven't gotten into the perl stuff at all, I'll see if I can find where that is, sounds about right though.
Reply With Quote
  #10  
Old 07-05-2012, 12:18 AM
sorvani
Dragon
 
Join Date: May 2010
Posts: 966
Default

Quote:
Originally Posted by Curzon7 View Post
I still think the best way is to add a vendor somewhere that sells the keys, so that's what I'll work on next.
More than one person has told you in this thread that keys are not everything involved in moving people around. A LOT of things are done in the quest scripts. Take time to actually learn and understand what you are talking about before popping off and saying "well you should just be able to do XXX."

You sound like someone with no understanding the first time you say it, but that is fine and we will help point you in the right direction. The second time you say it, you are just an idiot.
Reply With Quote
  #11  
Old 07-06-2012, 07:33 PM
Curzon7
Fire Beetle
 
Join Date: Jun 2012
Posts: 10
Default

Well not withstanding sorv setting my idiot field = 1 without realizing that maybe I just wasn't being very specific with my language, here's what I've figured out so far, should anyone else go down this path in the future.

There are alot of places that have a locked door, that is, a physical object within a single zone that an item or a lockpick can unlock. The majority of these can be defeated via an update to a variety of fields within the database. I did this, and it worked OK, but the better way to deal with this would be to add a vendor that sells keys for those doors. I've basically hosed my database at this point should I ever want the door functionality back in (I was warned not to probably for that reason). Likewise, the keyring for these items no longer updates when they are used on the door, so for the later stuff that uses a perl script I may need to manually update wherever the keyring info is stored or change the script or make sure I have the key on me depending on how the script is written (or dozens of other solutions, I'm sure). If you ever did want to defeat this standard type of door, it's probably a good idea to only implement it on doors that can be picked, so you don't break access to a zone altogether or an instance-launching script or something. I think one of the side effects of my meddling are that some doors have disappeared from the game entirely. I don't mind, as that's kind of what I was going for, but whatever.

I've figured out that there are multiple functions that can be in play, and they aren't necessarily related to each other. So for instance, in ssra, as has been said, you can remove the key restriction on the portal, but then there's a perl script that kicks you from the emp's room if you don't have the key. I've identified a few more places like that, where I believe having the key item on you would fix the issue, thus my statement that having a vendor sell the items would probably accomplish closer to what I'm trying to do than what I tried first.

Looking through some of the perl scripting, never having programmed in perl, it looks like the third case also exists, where the perl script is tracking other things, like whether you completed a quest to get the key. Upon completing the quest you get a "flag" and then the script causes whatever function to happen, having the key all by itself is not enough. Not being involved in eqemu for very long I hadn't realized the full extent of how these things were emulated. There are alot of things in EQ where if you somehow got the key, it didn't matter how you got it. So that's a difference (one of many) that I keep banging my head up against, kind of laugh at the assumption (false) I was making, and then go try another solution.

This perl script thing had been alluded to, and so I figured it would happen, but I was expecting it to come into play starting in PoP and I could wait to mess with it until then.

In any case, I do appreciate all the help and patience. As is true of all of us, and probably true of you, before I ever knew anything there was a time I didn't know it, and before that there was a time I didn't know I didn't know it. You may be blessed with never realizing that if you're always right, that just means nobody loves you enough to correct you when you're wrong. From sorv's perspective, I should've known better before trying, but from my perspective, I couldn't know till I tried.

The initial question I asked though, "Does anyone know an easy way to remove key access restrictions to zones/doors or to grant all access to a character/account?"

Aside from "No" I don't think there is a good answer. Whatever route you go down to fix it, it's going to be more complicated than you like and sorv won't like it in any case.

I've got frankenstein's server over here that's pretty much proof of concept that if you don't know what you're doing, you're probably better off playing on someone else's server.
Reply With Quote
  #12  
Old 07-06-2012, 08:24 PM
Caryatis
Dragon
 
Join Date: May 2009
Location: Milky Way
Posts: 541
Default

Yea it would be totally impossible to install the PEQ DB to a different DB, change your queries to selects and then wipe those doors from your DB and reinsert the fresh ones.

Quote:
I've figured out that there are multiple functions that can be in play
I know how you feel man! I figured out water was wet the other day... that was a real game changer.
Reply With Quote
  #13  
Old 07-07-2012, 02:55 AM
Curzon7
Fire Beetle
 
Join Date: Jun 2012
Posts: 10
Default

I didn't say it would be impossible, just that in my database I had broken it. You are correct that by overwriting certain sections of my database I could repair it, that's why I wasn't afraid to do it in the first place, and why I have no heartburn over it now, but whatever, I am slain by your voodoo troll powers...

I'm not finding where the water is wet though, maybe some kind of server variable on your...oh wait...I see what you did there...very clever, equating my lack of knowledge of specific ways the perl quest system is tied into various portions of the game to the way your mom gets surprised every morning in the shower....
Reply With Quote
Reply


Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump

   

All times are GMT -4. The time now is 02:05 PM.


 

Everquest is a registered trademark of Daybreak Game Company LLC.
EQEmulator is not associated or affiliated in any way with Daybreak Game Company LLC.
Except where otherwise noted, this site is licensed under a Creative Commons License.
       
Powered by vBulletin®, Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Template by Bluepearl Design and vBulletin Templates - Ver3.3