Modcraft - The community dedicated to quality WoW modding!
Wrath of the Lich King Modding => Resources and Tools => Topic started by: Valkryst 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 (https://mega.co.nz/#!fY1T3QxB!-96vxQRsYpzL1_CRJZp-UQkqgune2j43LGKipxxQIOI).
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.
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 ;
USE `characters`;
ALTER TABLE `bugreport` ADD COLUMN `status` TINYINT NOT NULL DEFAULT 0 AFTER `id`;
Step #2
Download the bug tracker from here (http://valkryst.com/shared_files/WoW_Bug_Tracker_jar.7z) and ensure that you have the latest version of Java (https://java.com/en/download/).
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.
(https://i.imgur.com/cKlNcya.png)
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.
(https://i.imgur.com/vqn5uEy.png)
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.
(https://i.imgur.com/LQgA8uV.png)
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.
(https://i.imgur.com/NSGClZf.png)
In the main section of the screen you'll find the bug report.
(https://i.imgur.com/krdtmZ5.png)
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
serverAddress=example.com
port=3306
databaseName=characters
username=root
language=English
serverAddress=127.0.0.1
port=3306
databaseName=serverA_characters
username=root
language=French
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 (http://www.yhool.gg) ~ 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 (http://valkryst.com/blog/).
-
I'm glad to see people still have some neat ideas like you. It looks great.
Keep up the good work and thanks for sharing it.
-
I'm glad to see people still have some neat ideas like you. It looks great.
Keep up the good work and thanks for sharing it.
Thanks!
Version 1.1 has been released. You can redownload it from the link in the post above.
This version includes Russian as a supported language along with a handful of minor code tweaks.
-
German (Needs review/rewrite from native speaker.)
I can translate it to german if you want. Send me a PM. :)
-
Hello, I'm getting this error.
{2015/juil./27-15:06:31}--LogType|ERROR: Packet for query is too large (4739923 > 1048576). You can change this value on the server by setting the max_allowed_packet' variable.
com.mysql.jdbc.PacketTooBigException: Packet for query is too large (4739923 > 1048576). You can change this value on the server by setting the max_allowed_packet' variable.
at com.mysql.jdbc.MysqlIO.readPacket(MysqlIO.java:569)
at com.mysql.jdbc.MysqlIO.doHandshake(MysqlIO.java:1013)
at com.mysql.jdbc.ConnectionImpl.coreConnect(ConnectionImpl.java:2239)
at com.mysql.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:2270)
at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2069)
at com.mysql.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:794)
at com.mysql.jdbc.JDBC4Connection.<init>(JDBC4Connection.java:44)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
at java.lang.reflect.Constructor.newInstance(Unknown Source)
at com.mysql.jdbc.Util.handleNewInstance(Util.java:389)
at com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:399)
at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:325)
at java.sql.DriverManager.getConnection(Unknown Source)
at java.sql.DriverManager.getConnection(Unknown Source)
at services.DataManager.<init>(DataManager.java:38)
at services.DataManagerBugReport.<init>(DataManagerBugReport.java:28)
at gui.ConnectionScreen.lambda$new$8(ConnectionScreen.java:122)
at gui.ConnectionScreen$$Lambda$19/110718392.actionPerformed(Unknown Source)
at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source)
at java.awt.AWTEventMulticaster.mouseReleased(Unknown Source)
at java.awt.AWTEventMulticaster.mouseReleased(Unknown Source)
at java.awt.Component.processMouseEvent(Unknown Source)
at javax.swing.JComponent.processMouseEvent(Unknown Source)
at java.awt.Component.processEvent(Unknown Source)
at java.awt.Container.processEvent(Unknown Source)
at java.awt.Component.dispatchEventImpl(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Window.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
at java.awt.EventQueue.access$500(Unknown Source)
at java.awt.EventQueue$3.run(Unknown Source)
at java.awt.EventQueue$3.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue$4.run(Unknown Source)
at java.awt.EventQueue$4.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)
I have already updated my my.cnf and restarted mysql but I still have this error :)
-
So you've done exactly what this post (http://stackoverflow.com/a/21236613/4879962) on StackOverflow says when changing the my.cnf?
If that doesn't work, then try this other temporary solution (http://stackoverflow.com/a/8062996/4879962) and see if it works. You'll need to log into MySQL and execute the query mentioned there.
Past that there's not much I can say. You might have better luck posting on StackOverflow, /r/mysql (https://www.reddit.com/r/mysql/), or /r/linux4noobs (https://www.reddit.com/r/linux4noobs) since someone on any of those may know more about resolving the issue then I do.
-
Version 1.2 has been released. You can redownload it from the link in the OP above.
This version includes German as a supported language along with a handful of minor code tweaks.
-
It dose not save anything in database...