[Patch] Bypass race restictions for quests using RBAC.

I am going through the entire world with one character, found that I couldn’t get all the quests because of my race. Made a quick patch using RBAC to allow any character to bypass the race restrictions. The SQL’s as they stand will only allow GM level 3 to bypass by default, but I assume there is some way through the GM interface to set this RBAC control on other characters, I just have not gotten that far into understanding the RBAC system yet. To me the RBAC system as it stands is far from 5th normal form, but I shouldn’t complain too much. It works and might be slightly convoluted, but it does get the job done. I really like the way it is going, if not the form it is taking. Thanks guys!

The patch is pretty simple, it just changes the check for race. The SQL’s are also pretty short, they just add in the links for RBAC_PERM_SKIP_CHECK_QUESTRACE

My recommendation to the core programmers is to come out with a way that others can submit RBAC additions that wont crowd over others, even if it is not “blizzlike”. I didn’t go through and look and see how many RBAC additions could be added without changing it’s type so I don’t know if that is feasible.

I think this may be useful as I run a small server and I don’t expect everyone to have 8 different characters to go through every quest.

Also, I didn’t double check all this as I normally do so if I left out any SQL statements let me know. Flame away! /emoticons/default_smile.png

Changed the SQL file so it has the statement I missed.RBAC_SkipRaceCheck-Publish.diffRBAC_SkipRaceCheck-AUTH_DB.SQL


To be honest and fair here ? I like that idea. I really like it. It helps bugfixing as we do not have the racial limits with it.

Imho it must be pushed into core, maybe it can be changed also to allow bypass class restrictions.

Maybe adding one debug text for gms to show gms that they got a quest of a different class/race can be interesting idea.

The only really caveat I have found here is that the client does not show the quest symbols !? when you use the patch. If you click the quest giver it will allow you to take the quest, but the local MPQ’s must contain quest data. No way to change that except the dreaded “c” word… thats right client patch… What, Me? No… I didn’t say anything…

Just in spending a few minutes thinking about it, it would be cool to instead make the NPC’s shout out the quest… “Hey, you… I know your not an dwarf but I do need something done…” Might get players to pay attention to what NPC’s are actually saying.

Nope, you probably just forgot to add the RBAC check to the SMSG_QUESTGIVER_STATUS opcode.

Ok, I’ll check that out. Thanks for the input.

Oh, BTW I missed one SQL statement:

INSERT INTO rbac_role_permissions (roleId, permissionId) VALUES (40, 49);

See… I knew I missed some SQL statement.

I added it into the SQL file at post 1.

Btw. can anyone explain me usefulness of rbac?

You don’t think they use SatisfyQuestRace() in the iteration? I have been going through the code and cant quite figure out where the list of quests is compiled. Anyone know off-hand?

We had that discussion often enough.

Not necessary. There is no further reference to the race requirement aside of SatisfyQuestRace().

Indeed you are all correct, SatisfyQuestRace() is the only place where the RBAC check should be, however, it is odd that this is not working for some quests.

It can be done by conditions.

If you want to change every quest by hand ? Surely. However, I assume that several quests are already limited by conditions - that would explain why it doesn’t “simply” show up.

I modded it a little. It makes sense to have the system tell you if you are in range of a quest person that is a racist. So… you now get a note. Have fun!

You might as well consider if you’d prefer a “normal” question mark by sending the notification opcode.

Sounds like a great idea. I am still learning the code though… Any help with a direction for that would be great. Thanks!

Can you update this code to head and make a pull request for it? imho it can have a lot of use for gms to debug quests.