Database browser for the WoW Alpha Core project

Overview

Database browser for the WoW Alpha Core project

This is intended for browsing the database used in: https://github.com/The-Alpha-Project/alpha-core/

  • On the main menu click on one of the main parts of the database to browse.
  • Then you can enter a filter (search) selection by entering some text. This is treated as a regular expression.
  • Alternatively, you can enter a database ID (number) directly to go to that item. For example, 4949 to view Thrall.
  • You can further filter on numeric fields (eg. items above a certain level)

A public implementation of this code is at: https://wow-refugee.com/alpha/

If that goes down, see below for how to install it yourself.


Filtering

The main tables can be filtered by text or numeric comparisons, reducing the number of rows returned to those that match the filter.

Text filter

The "Filter" box can be used to filter on text. This is used to search descriptions, names, and so on. It is not used to search numeric fields. You can enter:

  • Nothing. If the filter is left blank, all rows will be returned, subject to the secondary filter described below.

  • A number. This will be used to go straight to that database record by key. For example, enter "257" to see the quest "A Hunter's Boast". This is useful for situations where you know the database key (from looking at another table) and simply want to look it up.

  • A regular expression.

    • This will search text fields for a match on the regular expression.
    • For tables with multiple text fields (like quests) a match on any of them will suffice.
    • The website Regular Expressions 101 can be used to experiment with regular expressions.
    • Do not worry too much about the details of regular expressions. Simple text just matches itself, for example enter "Dark Threat" to match any quest with that in its title or description.
    • If you happen to want to search for a pure number, like all quests with "10" in the description, put it in brackets, eg. "(10)" to stop the browser from trying to look up record key 10.
    • Searches are not case-sensitive.

Numeric comparison filter (secondary filter)

In addition to searching for text, you can narrow down results by using the secondary filter "Also match:" beneath the filter box. This lets you choose any field from that database table, and compare it to a number.

You select the fieldname from a drop-down list, for example: "Effect_1". Then choose a comparison (eg. equal, not equal, greater) and then enter a number which is the comparison value. So, you might have: "if Effect_1 equal 36" (learn spell).

The field you choose is added as a right-hand column to the columns displayed, so you can see what its value was. This is more useful for comparisons like "greater than".

In fact, you could choose to use this to simply view some column, like "min_level" to simply see what it is. To do this just enter a comparison that will always be true. One such comparison is "masked by all bits: 0".

The "masked by" comparisons need a bit of explanation.

  • Masked by any bit: This matches if any bit in the selected field matches one of the mask bits. That is: (field & mask) != 0. So, for example for spells "Targets" "masked by any bit" 0x4010 would return any spells that target "Game Object Item" (0x4000) or "Item" (0x10).

  • Not masked by any bit: This is the inverse of the above. Thus it matches if none of the mask bits match. That is: (field & mask) == 0.

  • Masked by all bits: This matches if all the bits in the selected field matches all of the mask bits. That is: (field & mask) == mask

  • Not masked by all bits: This is the inverse of the above. Thus it matches if (field & mask) != mask

The number to compare to can be entered in:

  • Decimal, eg. 666
  • Floating-point, eg. 12.34
  • Hex, eg. 0xBADBAD
  • Binary, eg. 0b010011

To avoid the effect of the secondary filter just leave the "comparison value" box empty.

Warning: Comparing floating-point values (eg. map coordinates) for equality may fail due to implementation issues in the SQL server. Comparing floating-point numbers to be exactly equal to each other is notoriously difficult.


Proximity search

From the main menu you can find a link to do "Spawn point proximity search". This lets you enter in (or paste in) any coordinates the game world (including the map number) and it will calculate which NPCs spawn within a certain distance of that location (default is 100 yards).

For example, Mankrik is at "-520.983 -2641.41 95.8708 1". Just copy those coordinates (inside the quotes) and paste as the source location, then click "Search". At present I find 24 matches within 100 yards of Mankrik.

This could be useful for:

  • Checking nearby NPCs are where they should be.
  • Finding NPCs that are improperly spawned inside walls, under the ground, etc.
  • Finding NPCs that should not be there (in an otherwise uninhabited zone).

How to install on your own server

TLDR:

  • Grab this code
  • Grab the databases from https://github.com/The-Alpha-Project/alpha-core/tree/master/etc/databases/ and install them
  • Rename the file "wow_alpha_config.php.dist" as "wow_alpha_config.php"
  • In that file, put in your details (database username, password, host address)
  • Make a soft link pointing the web server to "query_wow_alpha.php" (ie. link that to "index.php")
  • Done!

  1. Put all the files into a folder on your server, somewhere inside the document root. Personally I put them in:

    /var/www/html/alpha
    

    ... where /var/www/html/ is the web server document root.

    The "icons" and "creatures" folders would remain sub-folders of that main folder.

    More specifically, to get started the first time:

    cd /var/www/html    # for example, whereever your server document root is
    git clone https://github.com/X-Genesis-Qhulut/alpha.git
    cd alpha
    
  2. The main file to run is: query_wow_alpha.php

  3. Make a soft link so that it is the default file to be executed:

    ln -s query_wow_alpha.php index.php
    
  4. Create two databases to hold the database information from the databases which you download from the Alpha Project GitHub pages:

    In other words, using the mysql client:

    create database alpha_world
    create database alpha_dbc
    
  5. Download the files from The-Alpha-Project on GitHub if you haven't already:

    git clone https://github.com/The-Alpha-Project/alpha-core.git
    cd alpha-core
    
  6. Import the databases from the SQL files in the links above into the appropriate databases, eg. Start MySQL client and then:

    First time, make the databases so you can "use" them:

    create database alpha_world;
    create database alpha_dbc;
    

    Then:

    use alpha_world;
    source etc/databases/world/world.sql
    source etc/databases/world/updates/updates.sql
    
    use alpha_dbc;
    source etc/databases/dbc/dbc.sql
    source etc/databases/dbc/updates/updates.sql
    

    These instructions assume that you have downloaded the alpha-core project from GitHub and are in the "alpha-core" directory.

  7. Rename the file wow_alpha_config.php.dist to be wow_alpha_config.php, ie.

    mv wow_alpha_config.php.dist wow_alpha_config.php
    
  8. Edit the file wow_alpha_config.php to suit your setup. The default is:

    
    

    You need to put in that file the username and password for your MySQL account on the server. Also the server address of your MySQL server. Also alter the table names "alpha_dbc" and "alpha_world" to suit the tables you created above. For example my server provider forces me to use different database names than the ones I showed above.

    The constant EXECUTIONDIR should be the name of the directory containing the files from this project, relative to the Apache document root.

    If you are using MySQL then LOWER_CASE_SQL_TABLES should be true. If you are using MariaDB then LOWER_CASE_SQL_TABLES should be false.

It should now be ready to run. Try connecting to index.php (or query_wow_alpha.php) in your web browser and you should see the main menu.


How to apply updates

To update the database browser, just connect to the appropriate directory on your web server (eg. /var/www/html/alpha) and do:

git pull

To update the database contents themselves, if they are changed by The-Alpha-Project, connect to whereever you placed the The-Alpha-Project files and do a "git pull". Then repeat step 6 above to replace the databases with the updated ones.


Disclaimer

The data shown is not the actual data used by Blizzard. It has been deduced by observing the game by many people, over time. People have noted spawn points, loot drops, and other behaviour, and then created a database which is supposedly similar to the one used by Blizzard. However there may well be discrepancies.

You might also like...
Bulit PHP Twitter Clone IN OOP style and using MYSQL Database.
Bulit PHP Twitter Clone IN OOP style and using MYSQL Database.

Bulit PHP Twitter Clone IN OOP style and using MYSQL Database. AJAX and Jquery for requests without reloading like Follow/unfollow, like, Search users, Show popups like comment , User lists, etc.

Bulk name lookup for database relations

Tatter\Roster Bulk name lookup for database relations in CodeIgniter 4 Quick Start Install with Composer: composer require tatter/roster Create a Ro

Open Source Voucher Management System is a web application for manage voucher. used PHP with Laravel Framework and use MySQL for Database.
Open Source Voucher Management System is a web application for manage voucher. used PHP with Laravel Framework and use MySQL for Database.

Voucher Management System is a web application for manage voucher. You can create and manage your voucher. Voucher Management System is used PHP with Laravel Framework and use MySQL for Database.

Vote based Question & Answer site built using Laravel 5.4, material design, x-editable and jQuery Upvote with email and database notifications.
Vote based Question & Answer site built using Laravel 5.4, material design, x-editable and jQuery Upvote with email and database notifications.

About Vote based Question & Answer site built using Laravel 5.4, material design, x-editable, jQuery Upvote and email/database notifications. Register

Download Porn Adult XXX Videos Online Ready Site No Installation No Database Required

Download Porn Adult XXX Videos Online Ready Site No Installation No Database Required PHP / HTML How to USE Search Videos from any of the Supported Si

Vote based Question & Answer site built using Laravel 5.4, material design, x-editable and jQuery Upvote with email and database notifications.
Vote based Question & Answer site built using Laravel 5.4, material design, x-editable and jQuery Upvote with email and database notifications.

About Vote based Question & Answer site built using Laravel 5.4, material design, x-editable, jQuery Upvote and email/database notifications. Register

Simplified database records management.
Simplified database records management.

Simplified database records management. Inspector will let you take care of CRUD without taking over your frontend. Example $inspector = new \InvoiceN

Database version control, made easy!

Database version control, made easy! dbv.php is a database version control web application featuring schema management, revision scripts, and more! Ch

Created simple login system and chat type website using mysql database along with php and html , css and javascript.

Created simple login system and chat type website using mysql database along with php and html , css and javascript.

Owner
null
VMControl - Control your VirtualBox VMs from a web browser

VMControl - Control your VirtualBox VMs from a web browser Requirements Microsoft Windows XP or newer Oracle VM VirtualBox VBoxManage (included in Vir

null 1 Nov 6, 2021
Roundcube Webmail is a browser-based multilingual IMAP client with an application-like user interface.

Roundcube Webmail roundcube.net ATTENTION This is just a snapshot from the GIT repository and is NOT A STABLE version of Roundcube. It's not recommend

Roundcube Webmail Project 4.7k Dec 28, 2022
Browser Administration for Linux-Based Audio/Video-Player like ODROID or Raspberry Pi

Browser Administration for Linux-Based Audio/Video-Player like ODROID or Raspberry Pi.

Max2Play 41 Apr 23, 2022
The spatial web mapping framework and core-module

Mapbender module This is the Mapbender module, the main-component of the Mapbender application. This module works like a library and can not run for i

Mapbender Development Team 74 Dec 25, 2022
Core code of NumberNine CMS

Introduction NumberNine is a CMS for building websites and web applications with Symfony. While generic enough to meet standard websites requirements,

NumberNine CMS 15 Oct 28, 2022
Learning Management System made in vanilla PHP to learn core concepts and usage of some basic utils

Learning Management System Learning Management System made in vanilla PHP to learn core concepts and usage of some basic utils. Report Bug · Request F

TitansLab 1 Mar 30, 2022
QuidPHP/Core is a PHP library that provides an extendable platform to create dynamic applications

QuidPHP/Core About QuidPHP/Core is a PHP library that provides an extendable platform to create dynamic applications. It is part of the QuidPHP packag

QuidPHP 4 Jul 2, 2022
mini Project in Laravel and vue js. Real World Laravel 8x + vue js Dashboard.Task management and project management system

mini Project in Laravel and vue js. Real World Laravel 8x + vue js Dashboard.Task management and project management system. Dashboard features such as: Complete Dashboard, Custom Authentication, Email Verification, custom-login-register-forgot password (without jetstream).

Hasmukh Dharajiya 2 Sep 20, 2022
DooTask is a lightweight open source online project task management tool that provides various document collaboration tools, online mind mapping, online flowcharting, project management, task distribution, instant IM, file management and other tools.

DooTask is a lightweight open source online project task management tool that provides various document collaboration tools, online mind mapping, online flowcharting, project management, task distribution, instant IM, file management and other tools.

kuaifan 3k Jan 5, 2023
Database management in a single PHP file

Adminer - Database management in a single PHP file Adminer Editor - Data manipulation for end-users https://www.adminer.org/ Supports: MySQL, MariaDB

Jakub Vrána 5.5k Jan 8, 2023