This is a read only copy without any forum functionality of the old Modcraft forum.
If there is anything that you would like to have removed, message me on Discord via Kaev#5208.
Big thanks to Alastor for making this copy!

Show Posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.


Topics - Valkryst

Pages: [1] 2
1
Resources and Tools / [TOOL] Valkryst's DressNPCs Handler
« on: July 30, 2015, 01:47:08 am »
Hey,

After a few days spent working on this program for use by my server's development team, I've got it to the point where I'm ready to release it. All of the features that I've planned to add to the program are currently working, as far as I've tested.

If you have any problems during the setup, have suggestions for the program, find a bug, etc... then just comment below.

Rough Description



This tool allows for easy insertion and updating of both the creature_template_outfits table used by Rochet2's DressNPCs core modification which enables the creation of custom NPCs and the creature_equip_template table.

The program allows for a quick workflow to insert, or update, as many NPCs as you desire. An earlier method, found here, also works, but it's much slower compared to using this program.

How to Setup



Luckily there is very little, if any, setup required to get this program running. The three requirements are as follows.

Requirements



  • You must have Java 8 installed to launch the program.
  • You must have access to an account with nearly full permissions to the creature_template_outfits and creature_equip_template tables of the world database.
  • You must have Rochet2's DressNPCs core modification compiled into your core and setup on your database..

You can download the tool from here and I highly recommend. My blog currently only covers the old method of creating the DressNPCs using a stored procedure/query, but you can follow that tutorial and just enter the values into the program instead of the SQL query. Your server does not require the stored procedure linked in that tutorial.

The Interface



Because the program is still being worked on and fixed up here-and-there, the interface may undergo some changes as development progresses. At the moment it contains all initially conceived features.

The images below may appear quite small. If you wish to view them in their full resolution, then simply right-click on the image and select Open image in new tab. This may only apply to users with the Chrome browser.

In the image below you can see the initial interface of the DressNPCs Screen.



The File dropdown menu allows you to save, or load, the currently entered data. You also have the option of loading data from the database with the Import option. Please be warned that you cannot save your data unless it contains no errors. This was an intentional feature and is not a bug.



The Function dropdown menu allows you to switch to the second part of the DressNPCs Handler tool which allows you to create or update equipment sets for any NPCs that you create. I won't go into detail on how equipment sets work, but you can learn more here.



In the Weapon Handler Screen you can edit up to four equipment sets at once. For more information on how this and the rest of the program works, please read the readme file included with the program.



The Function dropdown menu allows you to switch back to the DressNPCs Screen.



The Settings File



Within the settings file you'll find the saved server address, MySQL port, characters database name, MySQL username, and the interface language. All of these values can be manually edited and it's perfectly fine to just delete the settings file and select everything again through the interface when you launch the program.

The only value in the settings which cannot be changed through the GUI after selecting it is the language. If you wish to change the GUI language, then you'll need to either delete the settings file and launch the program to select it again or change it in the settings file.

Supported Languages



If you wish to contribute a translation in your native language, then please contact me on Skype for the latest files to be translated. It will take at-least an hour of your time to translate everything required.

  • English
  • German

Examples of  Three Settings Files



Code: [Select]
serverAddress=example.com
port=3306
databaseName=characters
username=root
language=English

Code: [Select]
serverAddress=127.0.0.1
port=3306
databaseName=serverA_characters
username=root
language=English

Code: [Select]
serverAddress=123.456.78.9
port=1704
databaseName=characters
username=trinity
language=German

Misc Information



The program should support any version that Rochet2's DressNPCs core modification, but I have only ever tested it on 3.3.5a and I'm not even sure if he has added support for other core versions.

The current program version is 1.3.

Credits



  • Renan ~ Helped to test an earlier version of the program and made a few suggestions on how to better the interface design.
  • Kaev ~ Supplied the German translation for the program.

--------------------------------------------------------

If you want to stay up-to-date with my latest tutorials or if you just want an easier way to view all of my tutorials and releases in one place then take a look at my blog.

2
Resources and Tools / [TOOL] Valkryst's Bug Report Manager
« on: July 11, 2015, 10:32:07 pm »
Hey,

After a few days spent working on this hopefully useful program, I've got it to the point where I'm ready to release it as a working beta. All of the features that I've planned to add to the program are currently working, as far as I've tested, and anything else that's left to be done is mostly behind the scenes other than getting translations for the program done-up.

If you have any problems during the setup, have suggestions for the program, find a bug, etc... then just comment below.

Rough Description



This tool allows for easy management and sorting of any and all bug reports for the server it's used with. Not only does this program deal with bug reports, as the name states, but it deals with any and all feedback given by your players as they play through the content on your server and submit either bug reports or feedback on their play experience.

The addon is quick to install, database easy to prepare, and program simple to use.


The following video is from an early stage of development, but it demonstrates how the reports/feedback are sent in and pulled into the tool.

[media:2juu4cm7]https://www.youtube.com/watch?v=K0sVIW1166w[/media:2juu4cm7]

How to Setup



To set up the bug reporting and tracking system, there are three requirements and three steps. These are all very simple and can be done for any server/account that meets the requirements.

Requirements



  • Your server must be running on TrinityCore.
  • You must have access to an account with permission to use stored procedures on the characters database.
  • Your players must be given a small patch file containing the Blizzard Feedback addon. You can download it here.

Step #1



Execute the following SQL on the characters database. This will create the stored procedures used by the program and add another field to the bugreports table that allows for the unread, read, etc... statuses to be tracked.

Code: [Select]
USE `characters`;

DELIMITER //

DROP PROCEDURE IF EXISTS getAllRawBugReports;

CREATE PROCEDURE getAllRawBugReports()
BEGIN
SELECT * FROM `bugreport`;
END//

DROP PROCEDURE IF EXISTS setButReportStatus;

CREATE PROCEDURE setButReportStatus(`varBugReportId` INT, `varBugReportStatus` INT)
BEGIN
UPDATE `bugreport` SET `status` = `varBugReportStatus` WHERE `id` = `varBugReportId`;
END//

DROP PROCEDURE IF EXISTS deleteBugReport;

CREATE PROCEDURE deleteBugReport(`varBugReportId` INT)
BEGIN
DELETE FROM `bugreport` WHERE id = `varBugReportId`;
END//

DELIMITER ;

Code: [Select]
USE `characters`;

ALTER TABLE `bugreport` ADD COLUMN `status` TINYINT NOT NULL DEFAULT 0 AFTER `id`;

Step #2



Download the bug tracker from here and ensure that you have the latest version of Java.

Step #3



Log into World of Warcraft, submit a random report using the addon, then launch the Bug Tracker and see if the report shows up. If the report does show up, then everything should be working as intended.

If you ever see a file named ]error_log.txt[/i], I would appreciate it if you could describe what you did to bug our or crash the program and if you could paste the error log in the comments below for me to take a look at.

The Interface



Because the program is still being worked on and fixed up here-and-there, the interface may undergo some changes as development progresses. At the moment it contains all initially conceived features.

The images below may appear quite small. If you wish to view them in their full resolution, then simply right-click on the image and select Open image in new tab. This may only apply to users with the Chrome browser.

In the image below you can see the initial interface.



The combobox in the top-left of the screen allows you to select a bug report by its ID number as retrieved from the database.



The radio buttons along the center of the menu bar allow you to sort the reports in the previously mentioned combobox by a number of different categories.



At the end of the menu bar you'll find a second combo box with a selection for each of the different sorting categories. When you have a report open, select a sorting category, and then submit your change, both the database and the program will be updated to reflect the change.



In the main section of the screen you'll find the bug report.




The Settings File



Within the settings file you'll find the saved server address, MySQL port, characters database name, MySQL username, and the interface language. All of these values can be manually edited and it's perfectly fine to just delete the settings file and select everything again through the interface when you launch the program.

The only value in the settings which cannot be changed through the GUI after selecting it is the language. If you wish to change the GUI language, then you'll need to either delete the settings file and launch the program to select it again or change it in the settings file.

Supported Languages



If you wish to contribute a translation in your native language, then please contact me on Skype for the latest files to be translated. It will take at-least an hour of your time to translate everything required.

  • English
  • French
  • German
  • Spanish
  • Russian

Examples of  Three Settings Files



Code: [Select]
serverAddress=example.com
port=3306
databaseName=characters
username=root
language=English

Code: [Select]
serverAddress=127.0.0.1
port=3306
databaseName=serverA_characters
username=root
language=French

Code: [Select]
serverAddress=123.456.78.9
port=1704
databaseName=characters
username=trinity
language=Spanish

Misc Information



The program currently only supports 3.3.5a TrinityCore, but it can easily be made to support other versions and cores. If anyone possesses the Blizzard Feedback addon from the PTR for whichever version they're playing on, then please contact me and we can hopefully get other versions supported.

The current program version is 1.2.

Credits



  • StoneHarry ~ Supplied the feedback addon.
  • Barbz ~ Supplied the French translation for the program.
  • V. Castonguay ~ Reviewed the French translation and helped make a handful of edits.
  • MountianLion ~ Supplied the Spanish translation for the program.
  • Skarn ~ Supplied the Russian translation for the program.
  • Kaev ~ Supplied the German translation for the program.

--------------------------------------------------------

If you want to stay up-to-date with my latest tutorials or if you just want an easier way to view all of my tutorials and releases in one place then take a look at my blog.

3
Level Design / [QUESTION] Error Extracting Maps
« on: June 24, 2015, 10:41:54 pm »
Hey,

I've been trying to fix this issue for the past two hours now, but I'm having no luck figuring out the cause or the solution to it. I'm using the latest version of Eluna with modified extractors following the advice from here.

The error I'm receiving when running the mapextractor is as follows.

Code: [Select]
Error loading WorldMapsAzerothAzeroth.wdt
-----------------------------------

I've tried the following "solutions" along with a few I can't recall.
  • Reediting the extractors following the advice linked above.
  • Recompiling the extractors.
  • Repacking the the edited map files from Noggit with various settings and attempting to extract them.
  • Sleuthing through parts of the mapextractor source to find the cause of the error, but I only managed to find which area was printing the error. I couldn't find anything specific about what causes the error.
  • Tried using the mapextractor from here.

Any ideas for what to try or solutions would help at this point, thanks in advance.

4
Tutorials / [Linux] How to Setup Automated Backups with BTSync
« on: April 27, 2015, 02:14:26 am »
Before I type the rest, I will admit that I'm far from an expert on Linux or bash. I did a lot of googling and had a bit of help from a friend of mine to figure out how to use BTSync and set it up properly.

Before you continue reading, please download a current version of BTSync to use on your home computer from here and download this very specific version to use on your server. The rest of this post will explain how to set up BTSync on your server and a few tips on using it as well as situations where it can be used. If you wish to learn how to backup your server databases, please refer to this tutorial.

--------------------------------------------------------------------------

For those of you who know a bit about Linux, you can just skim most of this tutorial and alter the setup steps to fit your needs. For everyone else, just log into your server using PuTTY or a similar program and just copy the commands into the terminal as you see them.

Code: [Select]
# The following commands create a new user and let you choose the password for
# the account. You will be able to log into this user through PuTTY just as you
# do with your root account, but it won't be able to do as much as the root
# account can.
useradd btsync
passwd btsync

# The following commands create a new home directory for BTSync and set
# ownership of the folder and everything within it to the new btsync account.
cd /home/
mkdir btsync_home
chown -R btsync:btsync /home/btsync_home/
cd btsync_home/

# Now you will need to either use FileZilla or a similar program to transfer
# whichever copy of BTSync fits your Linux distribution into the new
# /home/btsync_home/ folder. Make sure that you've extracted everything.
# As a safe measure, just re-run the following command to ensure that btsync
# has ownership of all the new files.
chown -R btsync:btsync /home/btsync_home/

# Now log out of the root account and log into the btsync account using the
# username btsync and whatever password that you gave the account.

# After extracting the btsync files into /home/btsync_home/ run the following
# commands to generate a config file and secret key. You will need the secret
# key later on, so copy it down.
./btsync --dump-sample-config > sync.conf
./btsync --generate-secret
mkdir .sync

Now that the btsync user and basic setup are all done, you will need to edit the newly generated config file for btsync to run correctly. The config file can look pretty confusing, so I've provided a sample config along with notes on what to edit below.

Code: [Select]
{
  "device_name": "Valkryst's Server",
  "listening_port" : 0,                       // 0 - randomize port

/* storage_path dir contains auxilliary app files
   if no storage_path field: .sync dir created in the directory
   where binary is located.
   otherwise user-defined directory will be used
*/
  "storage_path" : "/home/btsync_home/.sync",

// uncomment next line if you want to set location of pid file
// "pid_file" : "/var/run/btsync/btsync.pid",


  "check_for_updates" : true,
  "use_upnp" : true,                              // use UPnP for port mapping


/* limits in kB/s
   0 - no limit
*/
  "download_limit" : 0,
  "upload_limit" : 0,

/* remove "listen" field to disable WebUI
   remove "login" and "password" fields to disable credentials check
*/
  "webui" :
  {
/* directory_root path defines where the WebUI Folder browser starts
   (linux only)
*/
// "directory_root" : "/home/user/MySharedFolders/",

    "listen" : "0.0.0.0:8888",
    "login" : "btsync",
    "password" : "btsyncAccountPassword"
  }

/* !!! if you set shared folders in config file WebUI will be DISABLED !!!
   shared directories specified in config file
   override the folders previously added from WebUI.
*/
/*
  ,
  "shared_folders" :
  [
    {
//  use --generate-secret in command line to create new secret
      "secret" : "ValkrystSecretKey",                   // * required field
      "dir" : "/home/btsync_home/", // * required field

//  use relay server when direct connection fails
      "use_relay_server" : true,
      "use_tracker" : true,
      "use_dht" : false,
      "search_lan" : true,
//  enable SyncArchive to store files deleted on remote devices
      "use_sync_trash" : true,
//  restore modified files to original version, ONLY for Read-Only folders
//    "overwrite_changes" : false,
//  specify hosts to attempt connection without additional search
      "known_hosts" :
      [
        "192.168.1.2:44444"
      ]
    }
  ]
*/

// Advanced preferences can be added to config file.
// Info is available in BitTorrent Sync User Guide.

}

In the config you'll need to edit the following fields:

  • device_name - You can put whatever you want here. I usually just enter something similar to Valkryst's Server.
  • check_for_updates - Set this to false because, if you update, a lot of things can go wrong and most of this setup is known to break.
  • login - Set this to btsync.
  • password - Set this to whatever password you gave the btsync account.
  • secret - Set this to whatever the generated secret key you received earlier is.
  • dir - Set this to /home/btsync_home/.

Now that the config has been properly setup, you just need to create a start and stop script to start and stop BTSync. Whenever you alter the config in the future, the changes will not take affect until you restart BTSync.

Code: [Select]
# Install nano to edit the script with. You can use vim or another similar
# program if you wish.
sudo apt-get install nano -y

# Enter the directory for BTSync
cd /home/btsync_home/

# Enter the following to begin editing the first script.
nano Start.sh

# Type in the following two lines exactly as they appear and then press CTRL+X
# then press Y and then ENTER to save the file.
#!/bin/bash
./btsync --config sync.conf

# Enter the following to begin editing the second script.
nano Stop.sh

# Type in the following two lines exactly as they appear and then press CTRL+X
# then press Y and then ENTER to save the file.
#!/bin/bash
pkill btsync

# Now that both scripts have been made, enter the following commands to allow
# both scripts to be run.
chmod +x Start.sh
chmod +x Stop.sh

# To start BTSync just enter the BTSync directory and type...
./Start.sh

# To stop BTSync just enter the BTSync directory and type...
./Stop.sh
You can now log into BTSync by either going to www.example.com:8888 or myServerIP:8888 in any web browser. You can log in with the btsync username and password.

Tips & Tricks:


  • When backing up a file or directory, you will need to give the BTSync account ownership or shared ownership through a user group of the file or folder.
  • On your home computer you can set BTSync to save all received files for a specific folder into your Dropbox or Google Drive folders. This will ensure that your data always has a tertiary backup with a trusted host encase of backup. Although I would recommend running a script that compresses and encrypts your data if you do this just encase.
  • On your server you can set Google Drive or Dropbox to use the same folder, and maybe folders, as BTSync to the same effect as the previous point.
  • In many cases, where storage is limited, you will want to remove all revision backups that BTSync automatically keeps. To do this, just log into the web interface, go into the Property Options for whichever folder you want to edit, and deselect Store deleted files in SyncArchive.
  • To add a folder on the web interface, select Add Folder, click the Generate Secret button, then select the folder, and click the Add button. Please remember that BTSync cannot access folders that it doesn't have permission to.
  • To get the keys used to share a folder on the server with any other running BTSync program, go onto the web interface, select the Sharing Options for whichever folder you want, and then just select whichever key and option you want.

5
Resources and Tools / [RELEASE] Everything from my server.
« on: April 25, 2015, 09:31:26 pm »


Hey,

Over the past year both the team and I had been working on a hopefully unique RP server. We were quite close to pushing out a playable first zone as a proof-of-concept through an open test, but due to some host issues we've lost the database along with all of the daily backups.

Before I continue, I will warn you to stay away from Uniwebhosting due to their scammy business practices. They offer great servers for a fraction of the usual price as a deal and then revoke access to the servers after a period of time. This has happened to many users over the years and it will happen again. Most recently they forgot to pay the bill for all of their servers and caused all of their customers to lose access and data. You can look more into them if you want, but just take my warning into consideration.

In the files below you can find an MPQ containing an edited Tirisfal, Western Lordaeron, partially edited Eastern Lordaeron, and nearly complete Alterac. You will also find a large number of buildings with retextured roofs to fit a number of areas such as Dalaran, Kul Tiras, the Scarlets, etc... along with a number of new banners, texture swapped ships, objects, etc... to use.

Some of the other miscellaneous files include all of the Lua scripts for the server along with a new guild system and mostly-working quest system that were being developed for the server. Although you won't be able to use the guild system without manually creating the two tables required as they were erased along with our DB backups. If you wish to use the system, just PM me and I'll provide information on how to set it up. The same goes for the quest system.

There are also various files containing development guidelines, information on various parts of the server, quests, some of the NPC SQL files, etc...

If you wish to use any of the files contained within the files below, then just make sure to add in credits to the following people. I may be forgetting a few people, but the majority are as follows.

Arathonz, Dizzyeye, MountianLion, Stian Skuland, Stoneharry, Westorz, Crow, Domminust, Miles Koblin, Roban van Turnhout, Gurluas, Swiftie, Zikmo, Rochet2, Milly, Temptation_Town, Sheep, and me.

Server Documents & Scripts - Download
Server MPQ Files (Raw) - Download
Server MPQ Files (Packed, includes maps) - Download
Server Screenshots - Download

[media:2fmoecbo]https://www.youtube.com/watch?v=0Kxes3KN5rE[/media:2fmoecbo]
[media:2fmoecbo]https://www.youtube.com/watch?v=mq6ISII4ZDA[/media:2fmoecbo]

Edit:

I've typed up my final development log for the server. It tells a rough story about how the server went down, what I've learned over the past year, and my thoughts on a few things. If you want to read it.

6
Noggit / [CRASH] Crash When Selecting a Specific Object
« on: January 14, 2015, 06:43:56 pm »
Hey,

A friend of mine is doing a bit of worldbuilding for me and he just showed me an odd error where Noggit3 crashes when selecting a specific tree.

The log file is as follows.

Code: [Select]
17 - (Noggit.cpp:444): Noggit Studio - 3.166
18 - (Noggit.cpp:250): Using config file.
18 - (Noggit.cpp:453): Game path: C:UsersUser-01DesktopWoW
18 - (Noggit.cpp:457): Project path: C:UsersUser-01DesktopServerNog3work
19 - (Noggit.cpp:295): Locale: enUS
446 - (MPQ.cpp:47): [Debug] Opened archive C:UsersUser-01DesktopWoWData/common.MPQ
671 - (MPQ.cpp:47): [Debug] Opened archive C:UsersUser-01DesktopWoWData/common-2.MPQ
731 - (MPQ.cpp:47): [Debug] Opened archive C:UsersUser-01DesktopWoWData/expansion.MPQ
815 - (MPQ.cpp:47): [Debug] Opened archive C:UsersUser-01DesktopWoWData/lichking.MPQ
1000 - (MPQ.cpp:47): [Debug] Opened archive C:UsersUser-01DesktopWoWData/patch.MPQ
1058 - (MPQ.cpp:47): [Debug] Opened archive C:UsersUser-01DesktopWoWData/patch-2.MPQ
1099 - (MPQ.cpp:47): [Debug] Opened archive C:UsersUser-01DesktopWoWData/patch-3.MPQ
1100 - (MPQ.cpp:47): [Debug] Opened archive C:UsersUser-01DesktopWoWData/patch-4.MPQ
1100 - (MPQ.cpp:47): [Debug] Opened archive C:UsersUser-01DesktopWoWData/patch-5.MPQ
1143 - (MPQ.cpp:47): [Debug] Opened archive C:UsersUser-01DesktopWoWData/enUS/locale-enUS.MPQ
1145 - (MPQ.cpp:47): [Debug] Opened archive C:UsersUser-01DesktopWoWData/enUS/expansion-locale-enUS.MPQ
1146 - (MPQ.cpp:47): [Debug] Opened archive C:UsersUser-01DesktopWoWData/enUS/lichking-locale-enUS.MPQ
1172 - (MPQ.cpp:47): [Debug] Opened archive C:UsersUser-01DesktopWoWData/enUS/patch-enUS.MPQ
1183 - (MPQ.cpp:47): [Debug] Opened archive C:UsersUser-01DesktopWoWData/enUS/patch-enUS-2.MPQ
1188 - (MPQ.cpp:47): [Debug] Opened archive C:UsersUser-01DesktopWoWData/enUS/patch-enUS-3.MPQ
1212 - (DBCFile.cpp:22): [Debug] Opening DBC "DBFilesClientAreaTable.dbc"
2119 - (DBCFile.cpp:22): [Debug] Opening DBC "DBFilesClientMap.dbc"
2220 - (MPQ.cpp:89): [Debug] Completed listfile loading.
2220 - (DBCFile.cpp:22): [Debug] Opening DBC "DBFilesClientLoadingScreens.dbc"
2220 - (DBCFile.cpp:22): [Debug] Opening DBC "DBFilesClientLight.dbc"
2220 - (DBCFile.cpp:22): [Debug] Opening DBC "DBFilesClientLightParams.dbc"
2220 - (DBCFile.cpp:22): [Debug] Opening DBC "DBFilesClientLightSkybox.dbc"
2221 - (DBCFile.cpp:22): [Debug] Opening DBC "DBFilesClientLightIntBand.dbc"
2231 - (DBCFile.cpp:22): [Debug] Opening DBC "DBFilesClientLightFloatBand.dbc"
2232 - (DBCFile.cpp:22): [Debug] Opening DBC "DBFilesClientGroundEffectDoodad.dbc"
2245 - (DBCFile.cpp:22): [Debug] Opening DBC "DBFilesClientGroundEffectTexture.dbc"
2245 - (DBCFile.cpp:22): [Debug] Opening DBC "DBFilesClientLiquidType.dbc"
2531 - (Video.cpp:202): [Debug] GL: Version: 4.3.0
2532 - (Video.cpp:203): [Debug] GL: Vendor: NVIDIA Corporation
2532 - (Video.cpp:204): [Debug] GL: Renderer: GeForce GTX 650 Ti BOOST/PCIe/SSE2
2564 - (Noggit.cpp:477): [Debug] Creating Menu
2592 - (World.cpp:157): World 451: development has no WDT file!
2606 - (World.cpp:157): World 582: Transport176244 has no WDT file!
2606 - (World.cpp:157): World 584: Transport176231 has no WDT file!
2606 - (World.cpp:157): World 586: Transport181645 has no WDT file!
2606 - (World.cpp:157): World 587: Transport177233 has no WDT file!
2606 - (World.cpp:157): World 588: Transport176310 has no WDT file!
2606 - (World.cpp:157): World 589: Transport175080 has no WDT file!
2606 - (World.cpp:157): World 590: Transport176495 has no WDT file!
2607 - (World.cpp:157): World 591: Transport164871 has no WDT file!
2607 - (World.cpp:157): World 592: Transport186238 has no WDT file!
2607 - (World.cpp:157): World 593: Transport20808 has no WDT file!
2607 - (World.cpp:157): World 594: Transport187038 has no WDT file!
2607 - (World.cpp:157): World 596: Transport187263 has no WDT file!
2613 - (World.cpp:157): World 610: Transport_Tirisfal _Vengeance_Landing has no WDT file!
2613 - (World.cpp:157): World 612: Transport_Menethil_Valgarde has no WDT file!
2613 - (World.cpp:157): World 613: Transport_Orgrimmar_Warsong_Hold has no WDT file!
2613 - (World.cpp:157): World 614: Transport_Stormwind_Valiance_Keep has no WDT file!
2614 - (World.cpp:157): World 620: Transport_Moa'ki_Unu'pe has no WDT file!
2614 - (World.cpp:157): World 621: Transport_Moa'ki_Kamagua has no WDT file!
2614 - (World.cpp:157): World 622: Transport192241 has no WDT file!
2614 - (World.cpp:157): World 623: Transport192242 has no WDT file!
2616 - (World.cpp:157): World 641: Transport_AllianceAirshipBG has no WDT file!
2617 - (World.cpp:157): World 642: Transport_HordeAirshipBG has no WDT file!
2617 - (World.cpp:157): World 647: Transport_Orgrimmar_to_Thunderbluff has no WDT file!
2620 - (World.cpp:157): World 672: Transport197347 has no WDT file!
2620 - (World.cpp:157): World 673: Transport197348 has no WDT file!
2620 - (World.cpp:157): World 712: Transport197349 has no WDT file!
2620 - (World.cpp:157): World 713: Transport197350 has no WDT file!
2620 - (World.cpp:157): World 718: Transport201834 has no WDT file!
2864 - (Noggit.cpp:480): [Debug] Entering Main Loop
4344 - (World.cpp:243): [Debug] Loading world "Azeroth".
5602 - (Model.cpp:88): [Debug] Unloading model "interfacegluesmodelsui_deathknightui_deathknight.m2".
5622 - (MapTile.cpp:53): Opening tile 33, 26 ("WorldMapsAzerothAzeroth_33_26.adt") from disk.
5836 - (MapTile.cpp:300): [Debug] Done loading tile 33,26.
5840 - (MapTile.cpp:53): Opening tile 34, 26 ("WorldMapsAzerothAzeroth_34_26.adt") from disk.
6429 - (MapTile.cpp:300): [Debug] Done loading tile 34,26.
6434 - (MapTile.cpp:53): Opening tile 35, 26 ("WorldMapsAzerothAzeroth_35_26.adt") from disk.
6513 - (MapTile.cpp:300): [Debug] Done loading tile 35,26.
6517 - (MapTile.cpp:53): Opening tile 36, 26 ("WorldMapsAzerothAzeroth_36_26.adt") from disk.
6764 - (MapTile.cpp:300): [Debug] Done loading tile 36,26.
6769 - (MapTile.cpp:53): Opening tile 33, 27 ("WorldMapsAzerothAzeroth_33_27.adt") from disk.
6852 - (MapTile.cpp:300): [Debug] Done loading tile 33,27.
6856 - (MapTile.cpp:53): Opening tile 34, 27 ("WorldMapsAzerothAzeroth_34_27.adt") from disk.
6923 - (MapTile.cpp:300): [Debug] Done loading tile 34,27.
6929 - (MapTile.cpp:53): Opening tile 35, 27 ("WorldMapsAzerothAzeroth_35_27.adt") from disk.
7044 - (MapTile.cpp:300): [Debug] Done loading tile 35,27.
7048 - (MapTile.cpp:53): Opening tile 36, 27 ("WorldMapsAzerothAzeroth_36_27.adt") from disk.
7186 - (MapTile.cpp:300): [Debug] Done loading tile 36,27.
7191 - (MapTile.cpp:53): Opening tile 33, 28 ("WorldMapsAzerothAzeroth_33_28.adt") from disk.
7333 - (MapTile.cpp:300): [Debug] Done loading tile 33,28.
7337 - (MapTile.cpp:53): Opening tile 34, 28 ("WorldMapsAzerothAzeroth_34_28.adt") from disk.
7467 - (MapTile.cpp:300): [Debug] Done loading tile 34,28.
7471 - (MapTile.cpp:53): Opening tile 35, 28 ("WorldMapsAzerothAzeroth_35_28.adt") from disk.
7602 - (MapTile.cpp:300): [Debug] Done loading tile 35,28.
7607 - (MapTile.cpp:53): Opening tile 36, 28 ("WorldMapsAzerothAzeroth_36_28.adt") from disk.
7769 - (MapTile.cpp:300): [Debug] Done loading tile 36,28.
7771 - (MapTile.cpp:53): Opening tile 33, 29 ("WorldMapsAzerothAzeroth_33_29.adt") from disk.
7842 - (MapTile.cpp:300): [Debug] Done loading tile 33,29.
7846 - (MapTile.cpp:53): Opening tile 34, 29 ("WorldMapsAzerothAzeroth_34_29.adt") from disk.
8133 - (MapTile.cpp:300): [Debug] Done loading tile 34,29.
8136 - (MapTile.cpp:53): Opening tile 35, 29 ("WorldMapsAzerothAzeroth_35_29.adt") from disk.
8252 - (MapTile.cpp:300): [Debug] Done loading tile 35,29.
8254 - (MapTile.cpp:53): Opening tile 36, 29 ("WorldMapsAzerothAzeroth_36_29.adt") from disk.
8357 - (MapTile.cpp:300): [Debug] Done loading tile 36,29.
8359 - (Video.cpp:280): [Error] OpenGL: (at Model::draw:: after the draw list): GL_INVALID_VALUE
15705 - (MapTile.cpp:53): Opening tile 33, 25 ("WorldMapsAzerothAzeroth_33_25.adt") from disk.
15741 - (MapTile.cpp:300): [Debug] Done loading tile 33,25.
15746 - (MapTile.cpp:53): Opening tile 34, 25 ("WorldMapsAzerothAzeroth_34_25.adt") from disk.
15778 - (MapTile.cpp:300): [Debug] Done loading tile 34,25.
15782 - (MapTile.cpp:53): Opening tile 35, 25 ("WorldMapsAzerothAzeroth_35_25.adt") from disk.
15827 - (MapTile.cpp:300): [Debug] Done loading tile 35,25.
15829 - (MapTile.cpp:53): Opening tile 36, 25 ("WorldMapsAzerothAzeroth_36_25.adt") from disk.
15853 - (MapTile.cpp:300): [Debug] Done loading tile 36,25.
19028 - (errorHandling.h:64): [Error] There was an exception of type "SIGSEGV"
"Invalid storage access; most frequently caused by attempting to store some value in an object pointed to by a bad pointer. (Segment violation.)".
Please excuse the inconvenience. You may want to report this error including the log to the developers.

19029 - (StackWalker.cpp:1133): [Error] OS-Version: 6.1.7601 (Service Pack 1) 0x300-0x1
19112 - (StackWalker.cpp:1133): [Error] 014BFA3C (noggit): (filename not available): (function-name not available)
19112 - (StackWalker.cpp:1133): [Error] 0146009C (noggit): (filename not available): (function-name not available)
19112 - (StackWalker.cpp:1133): [Error] 014D3978 (noggit): (filename not available): (function-name not available)
19112 - (StackWalker.cpp:1133): [Error] 7613338A (kernel32): (filename not available): BaseThreadInitThunk
19112 - (StackWalker.cpp:1133): [Error] 77539F72 (ntdll): (filename not available): RtlInitializeExceptionChain
19112 - (StackWalker.cpp:1133): [Error] 77539F45 (ntdll): (filename not available): RtlInitializeExceptionChain

7
Modelling and Animation / [REQUEST] Circular Area Lighting
« on: January 11, 2015, 10:53:11 pm »
Hey,

I've been looking to add some nice touches to an area I'm working on, but I can't seem to find an object that projects a circular area of light. As an example of what i mean, equip any of the lantern items or torches and both the area around and your character will be lit-up.
I know that this is possible for objects as well as there are a handful of objects that I've seen which emit a circular area of light.

Does anyone know of an object that is just a circular area/orb of lighting or could someone direct me as to how to create one?

Thanks for any help.

8
Tutorials / [TUTORIAL] How to Fix the Red Question Mark Error on Custom
« on: September 06, 2014, 01:09:40 am »
Although this issue has been discovered, discussed, and solved, there seems to only be one tutorial which that detailed a permanent fix to the old red question mark bug on custom items. This tutorial will pretty-much be a rewrite of that tutorial, but I'll be, hopefully, describing the process a bit more clearly. This bug is always present and causes all custom items to appear with a red question mark icon instead of their proper icon and stops the player from being able to properly use the item in most cases.

In this tutorial I will be explaining, step-by-step, how to grab the necessary data from your database and add it into the Item.dbc file. This tutorial assumes that you know enough to pack the finished DBC file into an MPQ, but if you don't know how to do it then you can refer to this tutorial. It also assumes that you know enough SQL to be able to edit the provided queries to select your custom items. The final thing that this tutorial assumes is that you use HeidiSQL*and know how to use it.

--------------------------------------------------------

The first step to fixing the red question mark bug is to open up HeidiSQL, log into your server's MySQL and select the world database. Now run a query similar to the ones provided below. Your query needs to select the same fields, in the same order, as I have done.
Code: [Select]
SELECT entry, class, subclass, SoundOverrideSubclass, Material, displayid, InventoryType, sheath FROM item_template WHERE entry BETWEEN 80000 AND 100000;After the query finishes running and all of the result data is shown, click on one of the rows and press CTRL + A. Now that all of the rows are selected, right-click on any of the rows and select Export grid rows, then make sure your options are as follows.

  • Output target - Copy to clipboard
       
  • Output format - Delimited text
       
  • Row selection - Complete
       
  • Options - Uncheck the "Include column names" box.
       
  • Options - Set "Field separator" to be a comma.
       
  • Options - Set the "Encloser" to nothing. Just leave the field blank.
       
  • Options - Set the "Line terminator" to "rn", without the quotation marks.
       
  • Options - Set the "NULL value" to "N", without the quotation marks.

When you've finished setting the correct options, click the OK button. Now, place your Item.dbc file into /Tools/DBCUtil/ and double-click on DBCUtil.exe. This will convert the Item.dbc file into CSV format and output a file named Item.dbc.csv, this is the file that we will be editing. Proceed to the /Tools/CSVed/ folder and double-click CSVed.exe. After the program opens, press CTRL + O, and open the Item.dbc.csv file. When the file opens, scroll to the bottom, right-click on the last record, and select Paste Record(s) below Cursor Pos, and then press CTRL + S and exit the program. The final step, as I am omitting the MPQ portion of the tutorial as previously stated, is to go into /Tools/DBCUtil/, delete Item.dbc, and drag Item.dbc.csv onto DBCUtil.exe to convert it back into a new Item.dbc file with all of your changes.

--------------------------------------------------------

If you want to stay up-to-date with my latest tutorials or if you just want an easier way to view all of my tutorials and releases in one place then take a look at my blog.

9
Tutorials / [TUTORIAL] Creating a Server-Status String for your Webpage
« on: September 04, 2014, 07:05:36 pm »
Although this is quite simple, I felt that I should release it for those who may not have the time required to be able to setup something like this. I cannot fully support any questions regarding php as I only know enough to get by, but I can answer most questions regarding HTML and CSS and some Bash questions. If anyone notices an error in this guide or even some piece of code that can be optimized/changed, just comment and I'll do my best to keep this thread updated. Special thanks to my friend Tiq for helping me with all of the, admittedly, stupid errors and bugs that I encountered.

  • Just in case anyone wants to know what I'm running:
       
  • Windows 8, x64 -- Home
       
  • Debian 7 x32 -- Server
       
  • TrinityCore -- Latest version as of 18/August/2014
       
  • WoTLK 3.3.5a
As this guide is quite a bit more advanced than the simple DBC editing guides I've written before, I'm going to assume that anyone reading this has at least a basic knowledge of HTML, CSS, Bash, Linux have a web server up and running with php, are running MySQL for your servers database, and have a webpage already ready for the code I'm going to supply you with. I will not be going too in-depth with this guide as it only requires a few simple steps.

-----------------------------------------------------------------------------------------

The first thing you should do is navigate to, or create, a folder where you'll be storing both the script to gather the information required and the PHP file generated by the script. In this case I'll be using /path/to/valks/files/. Wherever you see /path/to/valks/files/, you'll need to replace it with the path to the directory you're using. I suggest saving the script file as UpdateStatistics.sh. The generated PHP file will be named currentStatistics.php.
Code: [Select]
#!/bin/bash

# Set the MySQL login info for ease of use:
mysqlUsername="putMySQLUsernameHere";
mysqlPassword="putMySQLPasswordHere";

# Get the total number of, currently online, players and then get the total number of players.
onlinePlayers=$(mysql --user=$mysqlUsername --password=$mysqlPassword --database=auth --skip-column-names --execute="SELECT COUNT(online) FROM account WHERE online = 1;");

totalPlayers=$(mysql --user=$mysqlUsername --password=$mysqlPassword --database=auth --skip-column-names --execute="SELECT COUNT(id) FROM account;");

# Get the unix time of when the server was last launched, and then get how many seconds the server
# has been online for, and then get the current unix time.
starttime=$(mysql --user=$mysqlUsername --password=$mysqlPassword --database=auth --skip-column-names --execute="SELECT MAX(starttime) FROM uptime;");

uptime=$(mysql --user=$mysqlUsername --password=$mysqlPassword --database=auth --skip-column-names --execute="SELECT uptime FROM uptime WHERE starttime = (SELECT MAX(starttime) FROM auth.uptime);");

currentUnixTime=$(date +%s);

##############################################################################33

# Create a string for the current number of online players.
stringA="There are currently $onlinePlayers / $totalPlayers players online.";

# Calculate the last time when the server was online based on starttime + uptime.
# Then subtract that from the current time and then decide whether or not to say
# if the server is online.
tempInt=$((starttime + uptime));
tempInt=$((currentUnixTime - tempInt));
tempInt=$((tempInt / 60));

# If the server was online less than 1 minutes ago then say that it's online.
# The uptime field of the uptime table updates every 10 minutes normally, but
# you can change that in worldserver.conf. Mine is set to update every minute.
stringB="Server Status: <span style="color: ";

if [ $tempInt -gt 2 ]
then
stringB+="#FF0000">Offline</span>"; # The hex value is for the color to display the word "Offline" as.
else
stringB+="#00FF00">Online</span>"; # The hex value is for the color to display the word "Online" as.
fi

# Construct the final String to be displayed on the webpage.
stringC="<p style="color:#FFCC00;text-align:center">$stringA || $stringB</p>";

# Output the constructed HTML into the specified php file.
echo "$stringC" > /path/to/valks/files/currentStatistics.php


After you've finished creating your UpdateStatistics.sh file, you'll need to do chmod a+x UpdateStatistics.sh to give it the necessary permissions to run. Now type crontab -e and enter the following line at the bottom of the file and save, but remember to change the path to point to your UpdateStatistics.sh file. The cronjob line below will run once per-minute, but you can change that to your liking.
Code: [Select]
* * * * * /path/to/valks/files/UpdateStatistics.sh
The next step is to get the generated string to appear on your webpage. Just enter the following line into your PHP webpage wherever you want the string to show up. If you have any issues with it not showing up then try removing the first slash at the beginning of the path.
Code: [Select]
&lt;?php include("/path/to/valks/files/currentStatistics.php"); ?&gt;Now for the final step. Open up your worldserver.conf file and set UpdateTimeInterval to 1. This will make sure that the script always has the latest data as-of a minute ago.
Code: [Select]
#
#    UpdateUptimeInterval
#        Description: Update realm uptime period (in minutes).
#        Default:     10 - (10 minutes)
#                     1+

UpdateUptimeInterval=1


After you've finished everything above, you should have a string that looks something like the following picture. If you wish to edit the colors of the text then just edit the hex color-values in the Bash script.

-----------------------------------------------------------------------------------------

After you've finished everything above, you should have a string that looks something like the following picture. If you wish to edit the colors of the text then just edit the hex color-values in the Bash script.



-----------------------------------------------------------------------------------------

If you want to stay up-to-date with my latest tutorials or if you just want an easier way to view all of my tutorials and releases in one place then take a look at my blog.

10
Tutorials / [Trinity - SAI] How to Use Game Events with SAI
« on: September 02, 2014, 10:50:05 pm »
Before I start typing out this guide, I will admit that I'm no expert on SAI and that some of this information may be incorrect. If you know of any additional information, notice an error, etc.. just comment and I'll do my best to keep this post updated.In this tutorial I will assume that you know enough to be able to insert a new record(row) into a database table and how to edit that row. If anything seems unclear or incorrect, just post below and I'll look into it.

There are a few things that you’ll need before creating and editing your smart scripts. I've seen a handful of different programs for editing smart scripts, but only one of them seems to be updated and does everything that I require. So, before you continue reading, please download this; this is the SAI editor which I've found to work best.

Just in case anyone wants to know what I’m running:
  • Windows 8, x64 — Home
       
  • Debian 7 x32 — Server
       
  • TrinityCore — Latest version as of 18/August/2014
       
  • WoTLK 3.3.5a

-----------------------------------------------------------------------------------------------

Creating the Event:

Assuming that you've opened up whichever program you prefer to use when editing your database, open the game_events table of the world database and insert a new record. When filling out the record you can refer to the bullet points below for a brief description of each of the fields. When filling out the start_time and end_time you can't use zero for the month or day, it needs to be at least the first day of the first month.
  • entry - A unique ID for the record.
       
  • start_time - The date and time when the event will first run. The event will always run continuously from start_time to end_time.
       
  • end_time - The date and time when the event will stop running. The event will never run after this date/time is reached.
       
  • occurrence - How often the event will occur, in minutes. If this is set to, for example, 6 then the event will run every 6 minutes.
       
  • length - How long the event will run for, in minutes. As far as I know, this doesn't really matter for SAI so set this to 1.
       
  • holiday - The ID of a Holiday from the Holiday.dbc file. This is sent to the client to update the in-game calendar.*As far as I know, this doesn't really matter for SAI so set this to 0.
       
  • description - A*description of the event.
       
  • world_event - I'm not entirely sure*how this is used, but it doesn't matter for SAI as far as my tests have shown. Set this to 0.

Example of a completed record:
Code: [Select]
INSERT INTO `game_event` VALUES (1, '2014-01-01 00:00:00', '2020-01-01 00:00:00', 2, 1, 0, 'Pastor Moore - Speech', 0, 0);
-----------------------------------------------------------------------------------------------

Creating the Script:

After creating the record in game_event you'll need to open up the SAI-Editor to create the SAI script. Before we continue I'll mention my preferred settings:
Quote
Valkryst's SAI-Editor Preferences:
  • Lock smart_scripts.id -- CHECKED
       
  • List actionlists too -- CHECKED
       
  • Use phase colors -- CHECKED
       
  • Show basic information -- CHECKED
       
  • Allow changing static info -- UN-CHECKED
       
  • Use permanent tooltips -- CHECKED

Now that you have successfully created a record in the game_event table for the event, you're ready to setup a script that runs off of the event. You'll first need to open SAI-Editor and, in the field labeled Entry or guid:, type the entry ID of whichever NPC you want to test and then press ENTER. An error box should pop-up, but you only need to click OK. Now click the New line button, set the Event drop-down menu to EVENT_GAME_EVENT_START, set the Action drop-down menu to ACTION_PLAY_EMOTE, and set the Target drop-down menu to TARGET_SELF. On the right-hand side of the screen you'll see a section three tabs which we will now fill-out. In the Eventtab set the Event field to whatever the entry of your event is and in the Action tab set the Emote Id field to 11 so that the NPC will play the laugh emote when the event occurs. Now click the Generate comments button and then the Generate SQL button and then execute the script.

Anytime you create a script you'll need to restart worldserverbefore you can go in-game and test the script. If you're updating an existing script then you can use the .reload smart_scripts command, but I personally restart no-matter what just to be on the safe side. After worldserver is restarted you'll need to go in-game, spawn the NPC you're testing, and type .event start eventID. If you've done everything correctly, then the NPC should laugh after you run the command.

-----------------------------------------------------------------------------------------------

Before I end this tutorial I feel it best to mention that any complex questions you have should be asked in this thread on the official Trinity forums. I also suggest that you always use this page as a reference when creating any and all of your SAI scripts.

-----------------------------------------------------------------------------------------------

If you want to stay up-to-date with my latest tutorials or if you just want an easier way to view all of my tutorials and releases in one place then take a look at my blog.

11
Tutorials / [Trinity - SQL/DB] How to Create a Vendor
« on: September 02, 2014, 10:48:17 pm »
Before you decide to make a vendor there are a few important things that you need to figure out. These important bits of information include:
  • What items will the vendor sell.
       
  • Are any of the items rare or available in limited quantity?
       
  • If any of the items are rare or available in limited quantity, how often should the vendor restock those items?
       
  • In what order should the items be displayed in the vendor panel?
       
  • Are any of the items being sold custom?

Although these are all quite obvious, the last point did manage to throw me for a loop momentarily. If you're using custom items and you've edited the item.dbc file, placed it within an MPQ in your data folder, and they still show up as red question marks in the vendor panel; then you need to upload the item.dbc file into /bin/data/dbc/ on your server and restart worldserver.

Just in case anyone wants to know what I’m running:
  • Windows 8, x64 — Home
       
  • Debian 7 x32 — Server
       
  • TrinityCore — Latest version as of 18/August/2014
       
  • WoTLK 3.3.5a

-----------------------------------------------------------------------------------------------

Assuming that you already have both the NPC you'll be using as a vendor and the items that the vendor will be selling created and ready-to-use, we can begin.

You will first need to run SELECT * FROM creature_template WHERE entry=vendorNPCEntryID; on your database to view the data for the vendor NPC. Now that the record for the vendor NPC is up, you only need to edit the npcflag field and set it to 128. The NPC will now be recognized as a vendor. Now use the following query to add an item to the vendor NPC's vendor panel.
Code: [Select]
/* To insert a single item into the vendor's vendor panel use this query.*/
INSERT INTO npc_vendor (entry, slot, item, maxcount, incrtime, ExtendedCost) VALUES (0, 0, 0, 0, 0);
Code: [Select]
/* To insert multiple items at once, just chain the values together as seen below. This example allows for two items to be added to the vendor's vendor panel. */
INSERT INTO npc_vendor (entry, slot, item, maxcount, incrtime, ExtendedCost) VALUES (0, 0, 0, 0, 0, 0, 0), (0, 0, 0, 0, 0, 0);
Now that you've created a vendor NPC and populated it's vendor panel with items to sell, you'll need to restart worldserver then you're ready to go!

-----------------------------------------------------------------------------------------------

Field Explanations:
  • entry - The entry ID of the vendor NPC. This is under the entry field of the creature_template table.
       
  • slot - The position in the vendor panel where this item will be located. As you can see in the image below, the slots are numbered left-to-right and top-to-bottom. This pattern repeats over all pages, but the numbers will continue incrementing.

       
  • item - The entry ID of the item being sold. This is under the entry field of the item_template table.
       
  • maxcount - The maximum number of items carried by the vendor at any time. If you want the vendor to carry an unlimited number of the item then set this to 0 else set it to any positive number. In the image below the maxcount value is circled.

       
  • incrtime - The time, in seconds (not milliseconds!), between restocks. As an example of how this is used... If maxcount is set to 4, incrtime set to 30, and the BuyCount field on the item in the item_template table is set to 2 then the vendor restocks 2 of the item every 30 seconds up to a total of 4 items.
       
  • ExtendedCost - The value here corresponds to the ID in ItemExtendedCost.dbc and that ID controls the item's non monetary price, be it honor points, arena points, different types of badges or any combination of the above. (Taken from the TrinityCore documentation)

-----------------------------------------------------------------------------------------------

If you want to stay up-to-date with my latest tutorials or if you just want an easier way to view all of my tutorials and releases in one place then take a look at my blog.

12
Miscellaneous / [QUESTION] Can this be done to the Weather?
« on: September 02, 2014, 06:28:59 am »
Hey,

After working all day with Milly I've finally managed to get a very nice looking night time for an area. Although I've nearly perfected the look, there is one terrible bug. Whenever a weather event begins where it starts raining, snowing, etc... the light, sky, and everything I've set changes from a nice night time look to a bright daytime look.

What I'm wondering is if there is a way to change the look of the weather, have the weather take the look of the light and all that which is already set, or somehow set the weather to only work during daytime.

Any information is appreciated, thanks.

--------------------------------------------------------------

This is being done on WotLK 3.3.5a, Trinity Core.

13
Miscellaneous / [QUESTION] How is an zone/subzone defined?
« on: August 30, 2014, 12:34:18 am »
Hey,

I've been meaning to find this out for some time now, but I haven't gotten around to it until now. Does anyone happen to know where the area of a zone/subzone is defined? I assume that one of the DBC files has a set of coordinates that define the perimeter of a zone/subzone, but I haven't found one yet.

I'd like to be able to define my own zones/subzones along with removing existing zones/subzones.

14
Level Design / [BUG] NPCs Fall Through Buildings
« on: July 07, 2014, 04:01:23 am »
Hey,

My friend has been doing a lot of worldeditng for a server we're working on and I only recently began to populate the areas he's creating. After a bit of work and then a few hours of trial-and-error to solve this bug I've come up with nothing.

I have two NPCs in two separate buildings that are set on way-points to walk around the buildings. When they walk in certain areas they simply fall through the building and start walking on the ground beneath it.

-----------------------------------------------------------------------------------------------------------------------------------

I've tried using varying coordinates on each way-point node. I've tried using Z coordinates that were way above  floor-level in the buildings as well. I've tried pretty much everything I can think of using way-points basically.

I've tried the above with and without mmaps. I thought they would solve this issue,but they sadly didn't.

I've tested everything in two different edited areas in two different buildings with two different NPCs.

-----------------------------------------------------------------------------------------------------------------------------------

I'm using the latest version of Trinity as of the 16th of last month. The mmaps were compiled on Windows 8.1 x64 (I doubt that changes anything) and the server is running on Debian 7 x32.

If you need any more information just say so. I have no clue what to type.

-----------------------------------------------------------------------------------------------------------------------------------

If anyone has some ideas, solutions, suggestions, etc... I'm all ears. Thanks for any replies and sorry if this is in the wrong section, but I have only ever seen this issue with worldedited buildings.

15
Tutorials / [DBC][Trinity] Changing the Starting Equipment
« on: July 04, 2014, 07:44:57 am »
Before I start typing out this guide, I will admit that I'm no expert on DBC editing and that some of this information may be incorrect. If you know of any additional information, notice an error, etc.. just comment and I'll do my best to keep this thread updated.

There are a few things that you'll need before editing a DBC file. I've seen many different programs, and even more people recommending each program over every other program, but the vast majority either didn't work or corrupted the DBC files. I'll only be recommending the programs that work for me. So, before you continue reading, please download this; it contains everything that I use. These programs will only work on Windows.

Just in case anyone wants to know what I'm running:

  • Windows 8, x64 -- Home
  • Debian 7 x32 -- Server
  • TrinityCore -- Latest version as of 15/June/2014
  • WoTLK 3.3.5a

Assuming that you've followed my instructions to download the toolsthat we'll be using in this tutorial, lets begin!

Quote
Tip:
When editing any files that can be packed into an MPQ file, you can just go into your /Data/enUS/ folder and create a new folder, lets call it patch-enUS-n.mpq, and place all of the files that you would place into the MPQ file in there. This is extremely useful if you don't want to keep on creating a new MPQ file every time you go to test new edits. When you release the edits you should place them into an MPQ file as it hides everything from the average user.

Credits to MyLilSuccy for this information.

If you already know how to edit DBC files, which I'm going to assume that most of the people reading this don't, then you can skip to the end of this post and check out my notes on the DBC files. Although I would recommend doing a quick read-through of the tutorial. :)

The rest of this will be a simple explanation of how to alter the Male Human Warrior's starting gear. Although this example is fairly specific, it does cover everything you'll need to edit any race, class, and gender combination.

-----------------------------------------------------------------------------------------------------------------------------------

Now that you've downloaded the tools and have a folder of clean, unedited, DBC files to work with and revert to in-case of any unforeseen errors, lets begin!

Go to the folder containing your DBC files, copy the CharStartOutfit.dbc file into the /Tools/DBCUtil/ folder, and then double-click on DBCUtil.exe. Now go to the /Tools/CSVed/ folder, double-click on CSVed.exe, select File then Open... and select /Tools/DBCUtil/CharStartOutfit.dbc.csv. To edit a record in CSVed you simply need to double-click on the row and then click the Apply Changes button in the bottom-left corner of the edit form window. Before we go any further I must mention that the CharStartOutfit.dbc file is an utter mess and because of this I will be writing the rest of this tutorial in the belief that you are changing all of the starting outfits for all of the races and their class/gender combinations. The first thing that you should do in CSVed is to select all of the records, then right-click on a record, and delete all of them. This will allow you to create a simple, easy to read, and easy to edit file to replace the mess that Blizzard has left us with.

I will be using some customized gear as this tutorial was written as I was editing the starting gear on my server. To avoid any confusion and to allow you to easily follow this tutorial, here are the queries for the items we will be using:

View query here: http://pastebin.com/quwVRbsJ

I haven't tested this query as it's a direct export from the database on my server, but it should work and if it doesn't just tell me.

Now that you've got the three items we'll be using imported into your database and you have an empty CharStartOutfit.dbc file open in CSVed we can begin inputting our data. The first things we need to enter is a unique row ID in the first column, race ID in the second column, class ID in the third, gender ID in the fourth, and to leave the fifth column as zero. If you're looking for the race and class IDs you can find them near the end of this post. In this case we will be entering 1, 1, 1, 0, and 0 in each of the first five columns. These numbers mean that this record is the first record which represents a Human Warrior who is Male.

For the next three columns we will input 800001, 800003, and 800002. These are the entry IDs of the chestpiece, pants, and boots of the set our Male Human Warrior will start with. These IDs can be in any order, just write down which order you put them in for future reference. Columns nine to twenty-nine will all have -1 as their value as we aren't going to allow the Male Human Warrior to start with anything other than a chestpiece, pants, and boots.

Columns thirty to thirty-two will define which pieces of gear will show up on the character creation screen. Because of this you do not need to list the display ID of every single item the character starts with. Because the Male Human Warrior will start with a chestpiece, pants, and boots we will be listing all three display IDs. I've prepared four different queries for you to use with your database to find the display IDs of whichever items you're using. Pick one of them and where it says to put numbers just input the correct numbers and run the query.

View query here: http://pastebin.com/zkG5DRwe

Because we're using the custom items I've supplied we will enter 52958, 14450, and 9929 in each of the columns from thirty to thirty-two. The rest of the display ID columns from thirty-three to fifty-three will contain -1 as we have no other display IDs to enter. The final numbers to enter are 4, 7, and 8 in columns fifty-four to fifty-six. These three numbers say that the items in columns six to eight and the display IDs in columns thirty to thirty-two represent a chestpiece, pants, and boots. You can find more information on these values near the end of this post.

Now that you've finished setting up the Male Human Warrior you can click File and then Save. Now go into /Tools/DBCUtil/, delete CharStartOutfit.dbc if it still exists, and then drag CharStartOutfit.dbc.csv onto DBCUtil.exe to create the new CharStartOutfit.dbc. This file needs to be copied into your /Server/bin/data/dbc/ folder as well as added to a .MPQ file that all of your users should be given. If you require instruction on how to create a new MPQ file you can refer to this tutorial.

Your server doesn't need to be restarted after adding the CharStartOutfit.dbc to the /Server/bin/data/dbc/ folder, but your client will need to be restarted after placing the MPQ file into your /WoW/Data/ folder as far as I know.

Below are a few images to show the finished product of all this work:







-----------------------------------------------------------------------------------------------------------------------------------

CharStartOutfit.dbc Column Information:
  • Column 1 - This is a unique ID of the row.
  • Column 2 - This is the Race ID.
  • Column 3 - This is the Class ID.
  • Column 4 - This represents either Male (0) or Female (1).
  • Column 5 - Unknown. Leave this as 0.
  • Columns 6 to 29 - The entry IDs of the items this race/class/gender combination will start with.
  • Columns 30 to 53 - The display IDs of the items this race/class/gender combination will start with. This is only used on the character creation screen so you only need to enter the display IDs of the armor/weapons.
  • Columns 54 to 77 - The InventoryType of each item.

When entering in the display IDs and InventoryTypes of each item you must write them in the exact same order as the items appear in columns 6 to 29.

InventoryTypes:
  • NonEquip = 0
  • Head = 1
  • Neck = 2
  • Shoulders = 3
  • Body = 4
  • Chest = 5
  • Waist = 6
  • Legs = 7
  • Feet = 8
  • Wrists = 9
  • Hands = 10
  • Finger = 11
  • Trinket = 12
  • Weapon = 13
  • Shield = 14
  • Ranged = 15
  • Cloak = 16
  • TwoHandedWeapon = 17
  • Bag = 18
  • Tabard = 19
  • Robe = 20
  • MainHandWeapon = 21
  • OffHandWeapon = 22
  • Holdable = 23
  • Ammo = 24
  • Thrown = 25
  • RangedRight = 26
  • Quiver = 27
  • Relic = 28


Class IDs:
  • Warrior = 1
  • Paladin = 2
  • Hunter = 3
  • Rogue = 4
  • Priest =5
  • Deathknight = 6
  • Shaman = 7
  • Mage = 8
  • Warlock = 9
  • Druid = 11

Race IDs:
  • Human = 1
  • Dwarf = 2
  • Night Elf = 3
  • Undead = 4
  • Tauren = 5
  • Gnome = 6
  • Troll =7
  • Blood Elf =8
  • Draenei =10
  • Orc = 11

-----------------------------------------------------------------------------------------------------------------------------------

If you want to stay up-to-date with my latest tutorials or if you just want an easier way to view all of my tutorials and releases in one place then take a look at my blog.

Pages: [1] 2