Latest Commits

I wouldn't recommend using it on anything that's got an outside connection, but it's surely a good script, instead of using a program / tool, this is way easier to set up for some people.
If you have such an SQL file, it's too bad, it will execute it, can't do anything about it, but as i said in the main post, use the updates that comes along with the world table when compiling your TrinityCore. It's an easier way to execute all of the files, in one single go.
- Sorry for late reply, didn't see you commenting.

That is very very nvm EXTREMELY insecure to use in a public website. You must check the contents of the file and split and prepare the queries before execution. what if in one of the files I have a query, TRUNCATE TABLE `whatever`; or DROP DATABASE; ?

This tutorial was written in hopes of getting you, the newest member of our community, on the right track.
This tutorial holds only the basic knowledge related to wow emulation, and is in no way intended for veteran members of the community.
In this tutorial we'll briefly go over:
- Databases, what they are and what they are used for.
- DBC files, what they are and what they are used for. (Includes info on client sided modifications)
- Source code, what it is and what it can be used for. (Includes info on compiling the source)
- The differences and benefits between compiling your own source and using a repack.
- Databases.
- In order to explain the difference between repacks and compiled sources, we will have to explain what databases and dbc files are first.
- Database editing can be done both on repacks and compiled servers.
- Databases are storage units, which are used for storing data ranging from, items, creatures and quests, to stuff like, characters, character achievements, character inventories, active quests, accounts and so on.
- When you start up your worldserver executable, it reads and collects all of the data from these tables, and "places" them into C++ containers.
- This data can easily be modified using any database editing tool. The preferred tool of the community is HeidiSQL. This tool will allow you to connect to your database, and view and edit all of the information stored inside of it.
- For example you can edit item/creature appearances, their stats, their names, their size etc.
- Client sided, all of this information is stored in the cache folder, so upon making any changes, you will have to, a) restart the world server, or, if possible, reload the table you were working in with the .reload *table_name* command, b) restart your game, and delete your cache folder.
- DBC Files.
- DBC files are in a sense similar to the database, they are also used as storage units, but unlike the database, these files store client sided data, while the database holds all server data. Everything you see in game, from spell names, their visuals, item displays, creature displays etc. is handled using DBC files.
- As well as the database data, the data stored in the DBC files can also be manipulated. You can create custom spells, you can change the textures of some displays, insert custom objects from other games, retro port data from Legion to Woltk, and much more.
- The main difference between editing DBC files and editing Database data, is that, in order to see the actual changes ingame, you will have to create a custom .MPQ Patch containing all of your modified DBC Files (or the additional .blp, .m2, .skin or other files you added) and place it in your clients data folder. Here is a short tutorial on how to create a custom MPQ file.
- This example tutorial will be using the client sided implementation of custom items as an example, but the part of the tutorial which requires the creation of the custom patch, and placing DBC files into it, applies to almost all if not all DBC related edits.
Make a table in the database which will hold all item.dbc data
CREATE TABLE `patch_table` (
`ID` MEDIUMINT(8) UNSIGNED NOT NULL DEFAULT '0',
`ClassID` TINYINT(3) UNSIGNED NOT NULL DEFAULT '0',
`SubclassID` TINYINT(3) UNSIGNED NOT NULL DEFAULT '0',
`Sound_Override_Subclassid` TINYINT(3) NOT NULL DEFAULT '-1',
`Material` TINYINT(4) NOT NULL DEFAULT '0',
`DisplayInfoID` MEDIUMINT(8) UNSIGNED NOT NULL DEFAULT '0',
`InventoryType` TINYINT(3) UNSIGNED NOT NULL DEFAULT '0',
`SheatheType` TINYINT(3) UNSIGNED NOT NULL DEFAULT '0',
PRIMARY KEY (`ID`),
INDEX `items_index` (`ClassID`)
)
COMMENT='Item System'
COLLATE='utf8_general_ci'
ENGINE=MyISAM
ROW_FORMAT=FIXED
;
Run this query
INSERT INTO patch_table SELECT entry, class, subclass, SoundOverrideSubclass, Material, displayid, InventoryType, sheath FROM item_template[/CODE]
After that use the build in option found in WDBXEditor to import all of the data from the newly created patch_table after that save the dbc changes.
(This is the fasted method I've discovered. It should take around half a minute to do everything)
Now that you have your dbc file set up, it's time to create a custom mpq patch containing the dbc file.
In order to do that you will need an MPQ editor, which you can grab here Ladik's MPQ Editor
Run the program and select the option to create a new mpq file. Then, create a new folder called "DBFilesClient" and place your newly created dbc file inside of it, like so:
Please ignore the other .dbc files and the two folders located inside my patch, those are not needed.
After that you can save your patch, place it in your data folder, delete your cache folder and re-run the game. Once in game you should be able to use spells with your weapons, and they should no longer appear as question marks in your inventory.
- Source code and compiling.
- Quite possibly the "scariest" part of emulation, and the part at which most members get stuck at and give up.
- Although it might be easier to pick up a repack, compiling the source brings a variety of benefits.
- The trinitycore source is written in C++, which is by most, considered one of the hardest languages to master. Although the language itself is hard to learn, if you only plan on doing minor edits in the source, you're not expected to fully comprehend it.
- Most of the Classes, methods and variables inside the trinity source are really well named, and in most cases their name perfectly describes their purpose. For example,
Player::CanEquipItem(uint8 slot, uint16 &dest, Item* pItem, bool swap, bool not_loading) const[/CODE]
is a method which checks if the player can, equip an item. If you use common knowledge, you'll be able to find and edit whichever function you want in a breeze.
- Compiling the source is an extremely easy process, once you're given the right documentation.
- The trinitycore wiki page has compiling tutorials for both Linux and Windows, and the tutorials are always kept up to date. So instead of writing a tutorial here, I'll post the links to the Linux and Windows requirements.
- Eluna - is a lua engine implementation for MaNGOS and TrinityCore based cores.
This engine allows one to write scripts using the Lua scripting language.
Lua is more flexible than the default database scripting systems and easier to use than C++.
Lua allows for fast paced development - scripts can be reloaded without recompiling or restarting.
- Compiling your own source vs Using a Repack.
- While it may seem easier to pick up a repack, compiling your own source brings a vast amount of benefits.
- For example, if you're going for a custom/fun WoW experience, without the source, you'll only rely on the database and the dbc files for customization. While that may be enough for some project, having the source on the side is always a benefit. You can add custom scripts like Rochet's Transmogrification which allows you to change the appearance of your armor, or you can add some source modifications like Rochet's Item Gossip Script which allows you to trigger gossip windows using an item instead of a creature, or trigger a player gossip window when a certain event occurs (a gossip window popup when the player kills a creature, or something similar). This can be used for creating Teleportation Stones, fun creature killstreak systems and a lot more.
- Even if you're going for a blizzlike experience, having your own source will allow you to script bosses, modify pathfinding, write spell scripts etc. you wont be just relying on SmartAI and dbc fixes to achieve this.
Linux
Windows
Server Setup
Database Installation
- List of useful community guides. The list will be updated as more tutorials get released.

Video
Main SQL Queries:
Here's the Add Script:
SET @StartEntry := [COLOR="#00FF00"]STARTENTRY[/COLOR];
SET @EndEntry := [COLOR="#00FF00"]ENDENTRY[/COLOR];
SET @AddPCT := [COLOR="#00FF00"]160[/COLOR];
-- DO NOT TOUCH!
SET @NewPCT = 1 + @AddPCT/100;
UPDATE item_template SET stat_value1 = stat_value1*@NewPCT WHERE entry BETWEEN @StartEntry AND @EndEntry;
UPDATE item_template SET stat_value2 = stat_value2*@NewPCT WHERE entry BETWEEN @StartEntry AND @EndEntry;
UPDATE item_template SET stat_value3 = stat_value3*@NewPCT WHERE entry BETWEEN @StartEntry AND @EndEntry;
UPDATE item_template SET stat_value4 = stat_value4*@NewPCT WHERE entry BETWEEN @StartEntry AND @EndEntry;
UPDATE item_template SET stat_value5 = stat_value5*@NewPCT WHERE entry BETWEEN @StartEntry AND @EndEntry;
UPDATE item_template SET stat_value6 = stat_value6*@NewPCT WHERE entry BETWEEN @StartEntry AND @EndEntry;
UPDATE item_template SET stat_value7 = stat_value7*@NewPCT WHERE entry BETWEEN @StartEntry AND @EndEntry;
UPDATE item_template SET stat_value8 = stat_value8*@NewPCT WHERE entry BETWEEN @StartEntry AND @EndEntry;
UPDATE item_template SET stat_value9 = stat_value9*@NewPCT WHERE entry BETWEEN @StartEntry AND @EndEntry;
UPDATE item_template SET stat_value10 = stat_value10*@NewPCT WHERE entry BETWEEN @StartEntry AND @EndEntry;
SET @StartEntry := [COLOR="#00FF00"]STARTENTRY[/COLOR];
SET @EndEntry := [COLOR="#00FF00"]ENDENTRY[/COLOR];
SET @RemPCT := [COLOR="#00FF00"]55[/COLOR];
-- DO NOT TOUCH!
SET @NewPCT = 1 - @RemPCT/100;
UPDATE item_template SET stat_value1 = stat_value1*@NewPCT WHERE entry BETWEEN @StartEntry AND @EndEntry;
UPDATE item_template SET stat_value2 = stat_value2*@NewPCT WHERE entry BETWEEN @StartEntry AND @EndEntry;
UPDATE item_template SET stat_value3 = stat_value3*@NewPCT WHERE entry BETWEEN @StartEntry AND @EndEntry;
UPDATE item_template SET stat_value4 = stat_value4*@NewPCT WHERE entry BETWEEN @StartEntry AND @EndEntry;
UPDATE item_template SET stat_value5 = stat_value5*@NewPCT WHERE entry BETWEEN @StartEntry AND @EndEntry;
UPDATE item_template SET stat_value6 = stat_value6*@NewPCT WHERE entry BETWEEN @StartEntry AND @EndEntry;
UPDATE item_template SET stat_value7 = stat_value7*@NewPCT WHERE entry BETWEEN @StartEntry AND @EndEntry;
UPDATE item_template SET stat_value8 = stat_value8*@NewPCT WHERE entry BETWEEN @StartEntry AND @EndEntry;
UPDATE item_template SET stat_value9 = stat_value9*@NewPCT WHERE entry BETWEEN @StartEntry AND @EndEntry;
UPDATE item_template SET stat_value10 = stat_value10*@NewPCT WHERE entry BETWEEN @StartEntry AND @EndEntry;
And that's the remove one.
Additional SQL Queries:
Get Items by Item Set ID:
SELECT * FROM item_template WHERE itemset = [COLOR="#00FF00"]XXX[/COLOR];
Get Items Where Entry >= value:
SELECT * from item_template WHERE entry >= [COLOR="#00FF00"]XXXXX[/COLOR] ORDER BY entry DESC;
PS: Lag is from shitty StreamLabs OBS!

Hello ! Today we will learn how to create an NPC from nothing !
Summary
Required tools
NPC dressing
CreatureDisplayInfo editing
CreatureDisplayInfoExtra editing
Patch creation
DB addition
Looks like it's time to gear up !
- Software like Photoshop or Gimp. Personally I use Photoshop because of this : BLP Plugin
- Wow Model Viewer or something similar
- BLP Converter (useless if you use the Photoshop's plugin)
- My DbcEditor
- MPQ Editor
- Your 3.3.5 client !
Looks like it's time to dress up !
I only mentionned one tool which can dress up our future NPC, so, let's go to Wow Model Viewer !
First, we have to select the race of our NPC, I'll choose... Human male !
You can select this in the menu on the left, in the character part.
Now, here's the interesting part.
Quick explanation :
The menu in the top right corner defines the look of your npc, face type, hair color...
ATTENTION ! In CreatureDisplayInfoExtra, hair color and hair style are inversed !
Below this menu, it's seems to be obvious, you can set your Npc's stuff.
Below again, Oppa tabard style ! 8-)
I let you prepare your NPC, I'll create mine and after, we compare who made the most beautiful !
Time's up !
Here's mine :
Ok I used WoD stuff, I cheated... a bit
Now, you can screen the whole right menu, that way you will not forget the character's characteristics !
Sometimes you can see two numbers to the right of the object name, they are important, the first is the itemID, the second his DisplayID, keep them two !
Our NPC is created, now we need to extract its texture.
In my WMV version I do this :
Once exported, a single file will interest us : body.tga
Open it with Photoshop or your software, and you'll see this :
You're free to customize the face, adding scars or whatever !
If you don't use the BLP plugin, save this file as png, and slide it on your BLP Converter.
We have finished the texture !
"But, Hyakki-master ! And weapons ?!"
Creature_equip_template, world database !
Your turn CreatureDisplayInfo !
Open this DBC with the software provided by this tutorial (MyDBCEditor)
You'll see lines. Lines everywhere !
Scroll to the last line, right click and select "Insert line...", your ID MUST be unique ! I'll choose 70010.
Quick explanation 2 :
First column : unique ID
Second column : Model ID that is registered in CreatureModelData.dbc (for a human male it's 49, a human female 50...)
Third column : Dunno, let zero.
Fourth column : ExtraDisplay : We'll see it in CreatureDisplayInfoExtra.dbc, it must be unique too.
Fifth column : Let 1.
Sixth colum : Creature opacity. 255 means your npc is opaque, 0 means... yes it's transparent.
Seventh and Eighth column : "Extra texture", when you npc isn't a character but a creature, these colums set their skin.
The next columm : Contains an ID or 0, the ID corresponds to sound ID in NPCSounds.dbc.
Last column : Let zero.
Here's the look of my NPC column :
You must to put this DBC in your MPQ patch and in serverside.
Next !
Braces yourselves CreatureDisplayInfoExtra is coming !
This is where it all take shape.
Documentation time !
1 : ID, that one you choosed in the fourth column in CreatureDisplayInfo.
2 : Character's race, 1 for human... IDs are situated in ChrRaces.
3 : Gender. 0 for male (It is also the degree of intelligence of the person who wrote this guide) and 1 for female.
4, 5, 6, 7 & 8 : SkinColor, FaceType, HairStyle, HairColor, BeardStyle. (Don't forget, in WMV, hair style & hair color are inversed)
9 : Head DisplayID (that one you choosed in WMV, if not, set to 0).
10 : Shoulders DisplayID (that one you choosed in WMV, if not, set to 0).
11 : Shirt DisplayId (that one you choosed in WMV, if not, set to 0).
12 : Chest DisplayID (that one you choosed in WMV, if not, set to 0).
13 : Belt DisplayID (that one you choosed in WMV, if not, set to 0).
14 : Legs DisplayID (that one you choosed in WMV, if not, set to 0).
15 : Boots DisplayID (that one you choosed in WMV, if not, set to 0).
16 : Bracers DisplayID (that one you choosed in WMV, if not, set to 0).
17 : Gloves DisplayID (that one you choosed in WMV, if not, set to 0).
18 : Tabard DisplayID (that one you choosed in WMV, if not, set to 0).
19 : Cape DisplayID (that one you choosed in WMV, if not, set to 0).
20 : 0.
21 : Your texture name, in my case, it'll be admerin.blp
Fill your DBC line with your items's DisplayID that you choosed for your NPC. Be careful, sometines the first digit is valid, sometines it's the second.
Here's mine :
Save it ! Upload it to your server, put it into your Patch !
But... Where in my patch ?!
I assume you know how to create a MPQ patch. So, open your MPQ with MPQ Editor !
If they don't exist, create two folders at the root of the patch. Call them :
DBFilesClient
Textures
You can put your two DBCs in DBFilesclient
Now, go in Textures, create a folder called BakedNpcTextures and put your .blp in there.
Your patch is ready.
Last step !
Creature_model_info
Serverside part !
In your world Database, find this table and open it !
Quick explanation... Oh no, copy/paste the content of an other line.
EXCEPT ONE THING !
Your ID must be the same as the one in CreatureDisplayInfo, in my case : 70010.
This digit is the DisplayID that you MUST use for your creature.
Once your line is written and your NPC created...
This tutorial is finished ! Don't hesitate to show your NPCs here !
Original Guide Credits - Oldaron @ Model-Changing

I speak Spanish, I will not play games because they are in English? I will not read articles because they are in English?
Has no sense...
Anyway, there you have the information, if you want to take it, go ahead.

Hey, Lordcraft Users!
I'd like to welcome you to the first of a series of Java tutorials hand written by yours truly. They are going to be a Lordcraft exclusive and hopefully, everyone will find them useful. Going through these tutorials, I'll be assuming each and every one of you is brand new to both programming and Java. If you are already well versed in either of these subjects, feel free to wait around for the next bit of tutorials.
------- *** -------
Chapter I: Preparing Your System
In order to get started with Java programming, you need a few tools installed on your system. Depending on your operating system, you may install things a little bit different then I am. I am using a Windows based laptop, so I'll be showing how a Windows user will setup their system. However, if you use a Mac or run Linux, comment below and I'll help you install everything.
Programs:
JDK - JDK 8 and JDK 9
IDE - NetBeans or IntelliJ or Eclipse
I listed five programs above that you guys may be interested in. Right now, you probably have no idea what a JDK or IDE is, and that's okay. We'll go over that. For now, I recommend you download JDK 8 and Netbeans. I'll be using Netbeans in all of my tutorials since my university requires my program of study to use it for the Java language. Plus, it's super easy to use.
Installing the JDK
Step 1: Go to the downloads page and download JDK 8u152. (Don't forget to accept the License Agreement and pick the correct download for your system)!
Step 2: Run the downloaded JDK application. Depending on your operating system, the way you'll do this may vary. Windows users will run the .exe file, Linux kernals will run it from the console (most distributions will run the tar.gz version), and Mac users will run the .dmg file.
Links: Windows or Linux or Mac
Step 3: Run through the installer, it's pretty easy. Just pressing "next" will be enough.
Step 4: Congratulations! You've installed the required JDK application!
Installing the IDE
Step 1: Go to the downloads page and download Java SE
Step 2: Run the Netbeans installer, depending on your operating system, the installed product will be different. You'll run it the same way you ran your JDK installer.
Step 3: Accept the licensing agreement, pick your installation path, and check for updates (this will save you time later on). After that, let the installer do it's job.
Step 4: Congratulations! You installed the required IDE! Now we can start programming... Almost.
------- *** -------
Chapter II: What Is a JDK and IDE?
So now you're probably wondering what a JDK and IDE and why we need them. In short, a JDK (Java development kit) is a subset of a SDK (software development kit). The JDK offers a variety of tools for developing, debugging, and monitoring java applications. Essentially, it's the core behind the Java language. Without a JDK, you can't have your Java code.
But what about an IDE? If the JDK gives us the ability to develop Java code, why do we need this? Well, an IDE (integrated development environment) is a program that allows you to easily make project files, test your source code, read error text, catch errors in code before runtime, and hosts a debugger. Not only that, but an IDE offers a quick and responsive function that builds your sourcecode into computer-readable binary, which then turns into an executable code.
There's a lot more information about both the JDK and IDE, but all you really need to know is that a Java IDE requires an updated JDK in order to properly integrate Java code into programs.
------- *** -------
If you have any questions, leave a comment or contact me on Discord!

trust me this **** saved my life usually i had to write hundred of lines of codes but now i've learned my lesson :)) hopefuly this will be helpful for somebody else because as of now i could only find huge ass overwrites of the class and most of them were for Wordpress pretty hard to reintegrate on a fresh built website

Hello everyone,
This is not much of a tutorial, it is more some kind of script that I made in CSS. I have made this because, it is sometimes very useful to use. Normally I used only the classes I needed at that moment, but this will save me alot of time.
In this topic I will explain a few things for those who are new to CSS or do not understand what I'm doing here:
How to add this CSS in a <link> tag in the HTML.
What do the classes mean in the CSS.
How to add this CSS in a <link> tag in the HTML:
This is very easy to do, probably the easiest part beside saving the file itself. If you have the file saved as "spacings.css" in your CSS folder then the link will look like this:
<link rel="stylesheet" href="css/spacings.css">
This line of code is suppose to go between the <head> </head> tags.
What do the classes mean in the CSS:
If you are new to CSS, there are a couple things you should know. There are classes such as mt, mb, pt and pb and some sizing classes such as lg, md, sm and xs. Those will be explained below:
mt: Margin Top
mb: Margin Bottom
pt: Padding Top
pb: Padding Bottom
I also added some responsive classes:
lg: Large
md: Medium
sm: Small
xs: Extra Small
Download:
Save this file into your CSS folder, scroll through the document to see all the classes you can use. https://pastebin.com/0W9fAr0b
Kind regards,
Dion.

Hi All,
Here I'm trying to draw on a html5 canvas as well as upload some images and drag them within the same canvas. The problem is I can not drag every uploaded image, at the moment I can only drag the last one rest become part of background image. I know I need to instantiate each image but It doesn't seem to work. Can anyone point me to right direction please.
I didn't find the right solution from the internet.
References:
https://forums.digitalpoint.com/threads/how-to-drag-an-image-within-canvas-as-well-as-draw-on-the-same-canvas.2796494/
teaser trailer