Search the Community

Showing results for tags 'WotLK'.

More search options

  • Search By Tags

    Type tags separated by commas.
  • Search By Author

Content Type


  • Important
    • Announcements
    • Getting Started
  • Modding
    • Modeling
    • Level Design
    • Interface
    • Serverside
    • Noggit
    • Miscellaneous
    • Retro-Porting
    • Useful Services
  • Projects
    • Recruitment
    • Paid Work
    • Showcase
    • Machinima
  • Community
    • General
    • Random
    • Gallery
    • Releases
    • The Graveyard


  • Tools
    • Uncategorized
    • Map Editing
    • Model Editing
    • DBC & DB2 Editing
    • Serverside
    • CASC & MPQ
  • Resources
    • Graphics
    • Uncategorized
    • Models
    • Maps
    • Client Patches
  • 010 Editor Scripts and Templates


  • Projects
  • Machinima
  • Software Development


  • Beginner
    • Русский
    • Deutsch
  • Modeling
    • Česky
    • Français
  • Level Design
  • Interface
  • Serverside
  • Miscellaneous
    • Česky
    • Français
  • Retro-Porting
  • Machinima


  • Tutorials
  • Timelapse
  • Miscellaneous

Find results in...

Find results that contain...

Date Created

  • Start


Last Updated

  • Start


Filter by number of...


  • Start






Found 87 results

  1. Greetings welcome to my store ! In this topic you can buy my 3D models that are compatible with World of Warcraft 3.3.5 --- all files contains only Model itself you will have to add it to the DBC by yourself To buy the model click on PayPal button it will redirect you to CheckOut Site where you can buy the model after payment is done you will be redirected to Download site First item is... Sylvanas Windrunner model from Heroes of the Storm ported to WoW there is also thw wing added to only one side due it being a request for the commision that his was years ago Price 10$ If you have any problems with buying stuff contanct me via PM or DM on my discord "A2#6767"
  2. Version 2.0


    All the patches will be done as non-encrypted soon! This file contains HD characters and NPC models and textures for WotLK. The archive contains 4 patches: patch-w.mpq contains: NPC models Animations BakedNPCTextures patch-x.mpq contains: Character models Animations patch-enUS-w.mpq and patch-enUS-x.mpq contain: DBCs If you have questions/requests feel free to ask it in the comments or by PM, I will answer it as soon as possible. P.S. The previous versions of files by @Roarl were deleted, because of the wrong and non-existed links. All thanks should be given to him.
  3. Welcome to this quick guide. ** DISCLAIMER ** This will NOT downport character models Since many of you have been PMing me desperately asking : "How do you downport this shit man??" Here you go. Enjoy. Tools needed: CascExplorer Adspartan's Multiconverter BfA Listfile (put this in your CascExplorer folder) Thanks to Wungasaurus for the correct listfile ------------------------------------------------------- Enjoy your new models, homeboy
  4. Version 1.0.0


    Put together this HD Race Icon package a while ago. Thought I'd share it for anyone who was interested. Just updates the Race Icons with some HD faces. Drop this pack in to the /Data
  5. Version 1.6


    There are two versions of WoW 335 executable here: WoWGen12.exe which - contains all features listed down below INCLUDING the hacky ones such as multi jump + ADDED NEW SCRIPT EDITS WoWGen11_WithoutHack.exe - contains all features listed down below EXCLUDING the hacky ones such as multi jump and EXCLUDING SCRIPT EDITS List of Features - Removed MD5 / SIG - Game version changed to my name initials and discord tag (A.S.E A2#6767) Release date to Dec 14 1337 for fun The real version of this file is still 3.3.5 - Druid on level 101+ get NO error when opening Base Stats - Every level 101+ can sit on barb Chair without Error - Does not Create CACHE file -Added LUA UNLOCKER you dont need to Manuly Unlock LUA functions via any 3rd party program this Exe has most of them unlocked by itself so far unlocked are (AcceptBattlefieldPort, SetCurrentTitle, UninviteUnit, ReloadUI, FocusUnit, ClearFocus, ... , InteractUnit, CastSpellByName, CastSpellByID, Movement functions ... , CancelLogout AttackTarget (error is still printed)) - Local Data Load directly from the folder no need to place them into the MPQ eg - M:\Client335\Data\DBFilesClient\ItemDisplayInfo.dbc is a viable path for wow.exe to read it in case wow.exe is in Client335 - Does not uses scan.dll to detect Cheat Engine at all - When you zoom close to your character it wont get transparent ========= ADDED IN SCRIPT ========= - Maximum Jump height - Maximum Climb Angle - Increased Far Clip ========= HACKY FEATURES========= - Allows Air Jumps at all time - You understand to every lang - /follow works simply on everysingle target no matter what target Due to popular demand im going to list of some Offsets for the edits I have done so you can do edits on your own or remove some unwanted functions List of functions that Warden scans for
  6. New 52809 spells fully implemented their visualization nonexistent mechanics replaced by similar The whole process took a little more than 100-110 hours Download:
  7. Version 1.0.0


    Hiya, Today I would like to share with you my mount patch containing at this point 45 mounts going from Cata to Legion retro-ported to Wrath of the lich king. I work on this patch from time to time so be sure to keep an eye out for newer versions. Happy Modding. Poisonleaf
  8. TEXTURE ANIMATION: THE TUTORIAL Hello everyone. In this tutorial I will explain how texture animations work. It's based in WotLK but it's exactly the same for Cata and beyond. We will add a basic texture animation to this test model: (you can download it in the Tools section) This method is quite useful to simulate waterfalls, energy beams, fire and much more. If you want to add an advanced opacity mask, check my other tutorial. TOOLS -PyModelEditor. -My test model. Take in mind that it can be done in 010editor as well, but it's a little more complex. Once you know how texture animations work with PyModelEditor, feel free to explore it a little further creating multiple animation layers with different renderflags or adding them with 010editor. THE TUTORIAL Run PyModelEditor and open the test model (TexAnimPlaneTest.m2). 1- Go to GlobalSequences. 2- Write "1500" (without the quotation marks) and click on "OK". This is the ammount of time our animation will take. 1500 milliseconds is 1,5 seconds. The more milliseconds, the slower the animation will be. 3- Go to Edit UV Animations. 4- Click on "Add" to create a new texture animation. 5- Once the new texture animation is created, go to "Edit Translation". 6- A new window will open. Go to "Add AnimSub". 7- Change the Interpolation to "Linear". 8- Apply the global sequence you just created. 9- Paste this line: 0:{ 0.0 , 0.0 , 0.0 } 1500:{ 0.0 , 1.0 , 0.0 } Now, click on Ok on all the windows you have open to apply the changes. 10- Go to Edit Materials. 11- Select the material of the mesh you want to add the texture animation (in this case, the test model only has one) and assign the texture animation you just created. You can now save your model. If you test the model in-game, you will notice that the texture animation works fine, but there is some kind of dragging bug and it doesn't loop correctly: This happens when the texture is not tiled. To tile the texture, open the model with PyModelEditor, go to Edit Textures and check both "X-Wrap" and "Y-Wrap": This should fix the problem! (you can also do it in 010editor by changing the TextureFlag to "3"). TL;DR VIDEO UNDERSTANDING THE ANIMATION SEQUENCE Now that you managed to make your own texture animation, you may be wondering how to reverse the animation, or move it sidewards instead of upwards. The key is in the animation line we added in PyModelEditor: As you can see, each line has 4 segments: time frame, horizontal movement, vertical movement and an unused stack of data that we will never touch. In frame 0, your texture stays on its default pose (0, 0, 0), but in frame 1500 it moves vertically (0, 1, 0) and goes back to where it started (it loops). "1.0" is the ammount of times the texture loops. If you change it to "0.5", the texture will start moving but will return to its defult state when it has traveled half the texture. If you replace "1.0" with "-1.0", the texture will go downwards instead of upwards. So, basically, "1500:{ 0.0 , 1.0 , 0.0 }" means that in 1.5 seconds your texture will loop vertically once. Another example: "3000:{ 0.0 , -1.0 , 0.0 }" means that in 3 seconds the texture will loop vertically once (but downwards). If you put "1.0" in the horizontal segment instead of the vertical segment, you'll see something like this: And if you want it to move to the corners, you simply need to put "1.0" (or -1.0 if you want it to go to the opposite direction) in both the horizontal and the vertical segment: CONCLUSION Texture animation is quite easy once you know how the numbers work. You just need some practice and experimentation to master it. If your model has many .skin files, PyModelEditor won't manage the texture animations so well. The best tool for those cases is 010editor. I recommend you to start with small models first. This tutorial was requested many times. Hope you find it useful.
  9. Please help with retroporting items from the set I can easily retroport the helmet and shoulder's because they have m2, anim and BLP files, and are not tied to the geogrid of the character model. What do I need to do in order to transfer the rest of the items from the set that are tied to the character's geogrid? Do I have to combine item and character models from WOTLK in Blender?
  10. I've found SkillRaceClassInfo.dbc manages what skills a race/class will have. I'm adding cataclysm class options to WotLK. Unfortunately, some race/class options, such as Human and Undead Hunters, do not start with the necessary weapon skills for their class (in this case, guns.) How would I go about adding the gun skill to human/undead hunters when their characters are created? I've checked but it's not exactly helpful, nor does it actually explain what any of the database actually does.
  11. Total Roleplay 3 is an addon used by roleplayers to create profiles for their characters, which the earliest version of is for 8.1.0. I'm looking for someone able to backport TRP3 for the 3.3.5 client for use on private servers. Although Total Roleplay 1 exists for WotLK clients, its usability and power are severely less than their modern counterparts.
  12. I'm working on a 3.3.5 Server/Client and am looking to create a custom login screen for my project. I intend to have an animated 3D login screen depicting Goldshire, with the Elwynn Forest music accompanying it, with animated characters in the scene (Guards, for example.) I've seen other servers have done such things, such as the EpsilonWoW server, and was hoping someone might be able to help/guide me through the process of creating a custom login screen, as someone who has no experience with doing so.
  13. My intention is retroporting and fusionate the new Orgrimmar to the map 3.3.5. I was following, this guide, but the only thing I got is this error when i tried to enter. Also i tried save, copy and paste the adts from phillips patches with the last version of Noggit (3.2614), but also got me problems, this time whit the ground... My question is... im doing somthing wrong? or this is the best that can be? I have to paint the new Orgimmar myself? is any even posible? Sry my english by the way
  14. Greetings, i use Leeviathan's WOD character model patch, and it's awesome to have retail characters to 3.3.5 but, for some reason, the weapons of the female blood elf are reduced compared to Retail, and i need to increase the size of the weapons, if anyone can put on the comments how i can do this, i will be eternally grateful
  15. Version


    ADTConverter [Deprecated] Convert your ADTs from Wotlk(3.3.5) to WoD(6.x.x)/Legion(7.x.x) The ADTConverter is deprecated and no longer supported Requirements The converter requires NET Framework 4.0 How to use Put your Wotlk ADTs in the data Folder Start the ConvertADTs.cmd Issues Please post your Issues here Thanks PTNGee for the "PTNG_ADT_Converter"
  16. Greetings, For the past few days i've been experimenting with adding custom damage schools and resistances to the game on top of what is already there. So far i've edited the following files... Core> Creature.cpp Core> CharacterDatabase.cpp Core> ItemTemplate.cpp Core> ItemTemplate.h Core> Player.cpp Core> Unit.cpp Core> Unit.h Core> ObjectMgr.cpp Core> SharedDefines.h Core> UpdateFieldFlags.cpp Core> ThreatManager.cpp DB> Characters.character_stats DB> World.creature_template DB> World.item_template DBC> Resistances.dbc Interface/FrameXML> Constants.lua Interface/FrameXML> GlobalStrings.lua ... and the core will build with 0 errors, however there are multiple problems in-game so I must be missing something. Current issues: 1. Characters are broken in many ways. Items don't show in bags or the character frame, NPCs are invisible/phased out, and the drunk effect is constantly at 100% (probably an error in characterdatabase.cpp, but I have yet to find where) CharacterDatabase.cpp Changes on 537-538 2. The core reads the item_template incorrectly, seems to look for values in their original fields. ObjectMgr.cpp Changes on 2457, 2551-2606 ItemTemplate.h Changes on 654-656 If anyone wants to offer help or insights, it would be appreciated. I'll continue hitting the code with a wrench and updating when progress is made. Once this has been solved I plan to make a tutorial out of it. Update 1: Custom elemental damage now shows properly on spell and weapon tooltips in-game. Loading an item tooltip with custom resistances crashes the game. Update 2: Looks like despite editing ObjectMgr.cpp, the core won't read the item_template table properly. It seems to look for values in their original fields, which breaks all the rows that come after the newly added ones. Added to current issues.
  17. Hi there, I am the admin of a couple of WoW servers and we are looking for experient model editors and importers. Work is basically two-fold: 1. Fix some previously imported mounts and one NPC 2. Add about 25 or so new mounts and pets, plus about 25 transmog items. This will be a paid gig so serious and professional replies only, please. Feel free to get in touch with me directly via Discord: Janitor#2871 Thanks a lot, Janitor
  18. Version 1.0.0


    Basically, multitexturing combines the alpha channel of two different textures, creating more variety in the particles and making it more realistic. It was introduced in Cataclysm but widely used since WoD for fire effects. Usually, the textures used for particles in WoD are: World\Expansion05\Doodads\IronHorde\FIRE_2X2_SHARP_MOD4X.BLP World\Expansion05\Doodads\IronHorde\Fire_Bright_Mod2x_A.BLP I tried to emulate this multitexturing effect in WotLK by combining both textures with Photoshop and increasing the rows and columns to give it more variety (since we can't animate the particle texture in Wotlk, each block has a different texture position). The result is quite decent. I would say it's 80% accurate because some features, like combining blend and additive blendingtypes on the same particle are not available in WotLK. I made two texture versions: one with 16 blocks and another with 64 (more realistic). There is also a test model included. External link:
  19. Version 11


    There was a report about this supposedly containing malware, though my PC is clean, the pack is clean, and the reporting person's antimalware was behaving in a very odd and jumpy manner overall. Note that this pack contains couple of apps which are pretty much straight up hacks and many apps from "unknown publishers", there's also file downloading launcher and whatnot - it is susceptible material to being marked by antimalware. It should be clean. But it's up to you whether you trust me on that. As a rule of thumb, please, check README.txt file in any directory where such file is before using that part to ensure you know all the important info. Contents: AmarothTools AmarothsLauncherRelease - a fairly primitive launcher based on reading config files and downloading/uploading changelog, patches and addons from FTP. AmarothsToolkit - old version of my toolkit, later I decided to split the project into the following tools. ClientItem - a pair of tools fo syncing item_template <-> Item.dbc. GobGenerator - generates gobjects in gameobject_template out of models provided in GameObjectDisplayInfo.dbc ListfileCreation - do not use unless you know what are you doing. NPCGenerator - for Creature displayID WMV > DBC > DB pipeline. WMOListFile - for obtaining a full list of files used by ADTs, M2/MDX and WMO in the folders under this. Note that its code sucks and is not 100% perfect. CASC CascView - 32 and 64bit versions of CascView, required for obtaining Blizzard files for conversion into WotLK. Listfile - listfiles for extracting files with CascView. DBC LightMapper - can be used for a great visualisation of lights on a map. WoWSpellEditor_1.8.8 - haven't gotten to actually testing this tool yet, but definitely worth sharing. WDBX Editor - for DBC editing, DBC <-> CSV conversions etc. EnGBBlizzlikeDBCs - just blizzlike DBCs, can be useful as a backup. Map AdtAdder - a small tool for mass copy-pasting ADT for inicial filling of a new map/newly expanded map, don't forget to run offsetfix afterwards as well. ADTGrids - some helpers you can use, reflecting basic grids on ADTs. FuTa - a tool for importing and exporting alpha maps (painting textures on ADTs with Photoshop). GroundEffects - tools for applying, removing or changing ground effects on ADT. GruulMeWDT - my preferred way of editing (editing, not creating!) WDT files. NoggitQt_3_2771 - an up to date test version of map editor. NoggitSDL_3_1408 - this is old SDL version of Noggit. It is non-public release, newer than SDL 1.4, fairly stable, may be able to open something Qt cannot. Rius Zone Masher - I do not really remember why I have not ever been using this tool for creation of new maps - I just know I have not been using this tool :D. Sharing it regardless. Models anim porter - I do not even remember what this is for, do not know wthere it is up to date, nor whether it is still useful at all. M2ModRedux 4.6.1 - same like anim porter. MDLVIS 1.40 - same like anim porter. MDX - same like anim porter. MultiConverter_3.3.0 - Officially Legion > WotLK converter, but seems to do alright with BFA as well. Scripts - a mix of random stuff, same like anim porter. OBJtoM2 could be useful if you for any reasons cannot use WoW Blender Studio. Leaving it here for the time being. WoW Blender Studio - still under development, but should make all the other stuff in Models section outdated and redundant. MPQ FuckItUp.exe - removes (listfile) from MPQ, making files more difficult to extract, and thus edit or steal. MPQEditor.exe - v3.2.0.535 is a very old version, but I found it to be very reliable. I had issues with up to date versions, and rather reverted back instead of risking having files corrupted. Other 010 - scripts and templates for 010 Editor. Mordred_LoginScreen - what I have used to make my own custom login screens. PuTTy_0.73 - for managing the server WMT335a - camera hack, light testing. WMV - couple of versions of WoW Model Viewer. HxDsetup.exe - HxD can be used as an alternative hex editor, unlikely to be useful to any 010 Editor owner. xyz-hack.exe - useful for precise gobject spawning. This is a hack, please, do not abuse. Textures BLPConverterGUI - enables mass PNG <-> BLP converting. BLPPhotoshopPlugin_1.0 - Photoshop BLP file support. README.txt - version, release date, links… Wow.exe - removed MD5 check, enabling UI edits within patches etc. Share this with your players, especially if you want to customize anything in your UI, including the login screen. If you are following my english YT channel, this is a toolpack I will be using there. Overview video: My Eng YT channel HERE
  20. Sharing this here as well (copy/paste from Modcraft) Hi guys! Took me some time to post this because I couldn't find any fan for my laptop.... But I did some days ago so... Here you go! As I said before, I acknowledge this is not much. But I just wanna play my part in Modcraft as best as I can even if it doesn't mean a lot. First you will need the tables and rows which the script uses : SQL File Then the Creature Script : StockExchange.cpp /* 1.0.0 StockExchange NPC Script Description ----------- The script uses data from DB to define 5 different stocks (Name, Worth (in gold coins), Scale (scale of the stock's variations), OwnedRatio(so that players can't acquire more than its worth)). Players can buy and sell shares of those stocks, provided they have bought a licence first. Thanks to Rochet2 for the nice menu look and for helping me clean this script up! */ #include "ScriptPCH.h" #include "Config.h" #include "ScriptedCreature.h" #include "Language.h" #include "time.h" #define STOCKNUMBER 5 #define GOLDTOCOPPER 10000 namespace { class CS_StockExchange : public CreatureScript { public: CS_StockExchange() : CreatureScript("Creature_StockExchange") { } uint32 stock = 0; void OnPlayerTextEmote(Player* player, uint32 textEmote, uint32 emoteNum, ObjectGuid guid) override { } bool OnGossipHello(Player* plr, Creature* creature) override //MAIN MENU { //StockUpdate every 2 minutes QueryResult result = WorldDatabase.PQuery("SELECT `UpdateTime` FROM `stocks` WHERE iD = 0"); if (!result) return false; Field* field = result->Fetch(); uint32 stockPrevTime = field[0].GetUInt32(); uint32 realCurrTime = getMSTime(); uint32 stockDiff = getMSTimeDiff(stockPrevTime, realCurrTime); if (stockDiff >= 120000) { uint32 timeMult; timeMult = stockDiff / 120000; if (StockUpdate(timeMult)) TC_LOG_INFO("server.worldserver", "Stocks have been updated (%u)", realCurrTime); else { TC_LOG_INFO("server.worldserver", "Error while updating stocks..."); } stockPrevTime = realCurrTime; WorldDatabase.PExecute("UPDATE `stocks` SET `UpdateTime` = %u WHERE `iD` = 0", getMSTime()); } WorldSession* session = plr->GetSession(); QueryResult licencetest = CharacterDatabase.PQuery("SELECT `1`, `2`, `3`, `4`, `5` FROM `character_stockdata` WHERE iD = %u", plr->GetGUIDLow()); plr->ADD_GOSSIP_ITEM(GOSSIP_ICON_MONEY_BAG, "|TInterface/ICONS/INV_Scroll_08:30:30:-18:0|tWhat are the current exchange rates?", GOSSIP_SENDER_MAIN, 2); plr->ADD_GOSSIP_ITEM(GOSSIP_ICON_MONEY_BAG, "|TInterface/ICONS/INV_Misc_Book_11:30:30:-18:0|tHow many unsold shares are there left?", GOSSIP_SENDER_MAIN, 1); if (!licencetest) { plr->ADD_GOSSIP_ITEM_EXTENDED(GOSSIP_ICON_MONEY_BAG, "|TInterface/ICONS/INV_MISC_NOTE_02:30:30:-18:0|tI'd like to acquire a trade licence.", GOSSIP_SENDER_MAIN, 12, "This will cost you", 400000, false); } else //Player can invest if he has a licence { plr->ADD_GOSSIP_ITEM(GOSSIP_ICON_MONEY_BAG, "|TInterface/ICONS/INV_Misc_Coin_02:30:30:-18:0|tI'd like to manage my portfolio.", GOSSIP_SENDER_MAIN, 3); } plr->ADD_GOSSIP_ITEM(GOSSIP_ICON_MONEY_BAG, "|TInterface/ICONS/Ability_Spy:30:30:-18:0|tIt was a pleasure to make business with you.", GOSSIP_SENDER_MAIN, 4); plr->SEND_GOSSIP_MENU(DEFAULT_GOSSIP_MESSAGE, creature->GetGUID()); return true; } bool OnGossipSelect(Player* plr, Creature* creature, uint32 sender, uint32 uiAction) override { int32 amount = 0; plr->PlayerTalkClass->ClearMenus(); WorldSession* session = plr->GetSession(); std::ostringstream message; float ownedratio[5]; int worth[5]; for (int iter = 1; iter < 6; iter++) { QueryResult result = WorldDatabase.PQuery("SELECT `OwnedRatio`,`Worth` FROM `stocks` WHERE iD = %u", iter); if (!result) return false; Field* field = result->Fetch(); ownedratio[iter-1]= field[0].GetFloat(); worth[iter-1] = field[1].GetInt32(); } switch (uiAction) { case 1: //REMAINING SHARES message << "REMAINING SHARES (in gold coins)$BRavenholdt Manor : " << worth[0] * (1 - ownedratio[0]) << "$BBloodsail : " << worth[1] * (1 - ownedratio[1]) << "$BSteamwheedle Cartel : " << worth[2] * (1 - ownedratio[2]) << "$BTheramore Silk Traders : " << worth[3] * (1 - ownedratio[3]) << "$BEldoar'norore : " << worth[4] * (1 - ownedratio[4]); creature->Whisper(message.str(), LANG_UNIVERSAL, plr); plr->PlayerTalkClass->SendCloseGossip(); OnGossipHello(plr, creature); break; case 2: //CURRENT EXCHANGE RATES message << "CURRENT EXCHANGE RATES (in gold coins)$BRavenholdt Manor : " << worth[0] << "$BBloodsail : " << worth[1] << "$BSteamwheedle Cartel : " << worth[2] << "$BTheramore Silk Traders : " << worth[3] << "$BEldoar'norore : " << worth[4]; creature->Whisper(message.str(), LANG_UNIVERSAL, plr); plr->PlayerTalkClass->SendCloseGossip(); OnGossipHello(plr, creature); break; case 3: //MANAGE PORTFOLIO MENU (5-10) plr->ADD_GOSSIP_ITEM(GOSSIP_ICON_MONEY_BAG, "|TInterface/ICONS/INV_Helmet_30:30:30:-18:0|tRavenholdt Manor", GOSSIP_SENDER_MAIN, 5); plr->ADD_GOSSIP_ITEM(GOSSIP_ICON_MONEY_BAG, "|TInterface/ICONS/INV_Helmet_66:30:30:-18:0|tBloodsail", GOSSIP_SENDER_MAIN, 6); plr->ADD_GOSSIP_ITEM(GOSSIP_ICON_MONEY_BAG, "|TInterface/ICONS/INV_Misc_Bomb_03:30:30:-18:0|tSteamwheedle Cartel", GOSSIP_SENDER_MAIN, 7); plr->ADD_GOSSIP_ITEM(GOSSIP_ICON_MONEY_BAG, "|TInterface/ICONS/INV_Chest_Cloth_56:30:30:-18:0|tTheramore Silk Traders", GOSSIP_SENDER_MAIN, 8); plr->ADD_GOSSIP_ITEM(GOSSIP_ICON_MONEY_BAG, "|TInterface/ICONS/INV_Misc_FireDancer_01:30:30:-18:0|tEldoar'norore", GOSSIP_SENDER_MAIN, 9); plr->ADD_GOSSIP_ITEM(GOSSIP_ICON_MONEY_BAG, "|TInterface/ICONS/Ability_Spy:30:30:-18:0|tBack", GOSSIP_SENDER_MAIN, 10); plr->SEND_GOSSIP_MENU(50002, creature->GetGUID()); break; case 4: //CLOSE GOSSIP plr->PlayerTalkClass->SendCloseGossip(); break; case 5: //MANAGE RAVENHOLDT STOCK stock = 1; plr->ADD_GOSSIP_ITEM_EXTENDED(GOSSIP_ICON_MONEY_BAG, "|TInterface/ICONS/INV_Letter_03:30:30:-18:0|tBuy shares", stock, 0, "How much gold would you like to invest?", 0, true); plr->ADD_GOSSIP_ITEM(GOSSIP_ICON_MONEY_BAG, "|TInterface/ICONS/INV_Misc_Coin_16:30:30:-18:0|tSell all shares", stock, 11); plr->ADD_GOSSIP_ITEM(GOSSIP_ICON_MONEY_BAG, "|TInterface/ICONS/Ability_Spy:30:30:-18:0|tBack...", GOSSIP_SENDER_MAIN, 3); plr->SEND_GOSSIP_MENU(50002, creature->GetGUID()); return true; break; case 6: //MANAGE BLOODSAIL STOCK stock = 2; plr->ADD_GOSSIP_ITEM_EXTENDED(GOSSIP_ICON_MONEY_BAG, "|TInterface/ICONS/INV_Letter_03:30:30:-18:0|tBuy shares", stock, 0, "How much gold would you like to invest?", 0, true); plr->ADD_GOSSIP_ITEM(GOSSIP_ICON_MONEY_BAG, "|TInterface/ICONS/INV_Misc_Coin_16:30:30:-18:0|tSell all shares", stock, 11); plr->ADD_GOSSIP_ITEM(GOSSIP_ICON_MONEY_BAG, "|TInterface/ICONS/Ability_Spy:30:30:-18:0|tBack...", GOSSIP_SENDER_MAIN, 3); plr->SEND_GOSSIP_MENU(50002, creature->GetGUID()); break; case 7: //MANAGE GOBLIN STOCK stock = 3; plr->ADD_GOSSIP_ITEM_EXTENDED(GOSSIP_ICON_MONEY_BAG, "|TInterface/ICONS/INV_Letter_03:30:30:-18:0|tBuy shares", stock, 0, "How much gold would you like to invest?", 0, true); plr->ADD_GOSSIP_ITEM(GOSSIP_ICON_MONEY_BAG, "|TInterface/ICONS/INV_Misc_Coin_16:30:30:-18:0|tSell all shares", stock, 11); plr->ADD_GOSSIP_ITEM(GOSSIP_ICON_MONEY_BAG, "|TInterface/ICONS/Ability_Spy:30:30:-18:0|tBack...", GOSSIP_SENDER_MAIN, 3); plr->SEND_GOSSIP_MENU(50002, creature->GetGUID()); break; case 8: //MANAGE SILKTRADERS STOCK stock = 4; plr->ADD_GOSSIP_ITEM_EXTENDED(GOSSIP_ICON_MONEY_BAG, "|TInterface/ICONS/INV_Letter_03:30:30:-18:0|tBuy shares", stock, 0, "How much gold would you like to invest?", 0, true); plr->ADD_GOSSIP_ITEM(GOSSIP_ICON_MONEY_BAG, "|TInterface/ICONS/INV_Misc_Coin_16:30:30:-18:0|tSell all shares", stock, 11); plr->ADD_GOSSIP_ITEM(GOSSIP_ICON_MONEY_BAG, "|TInterface/ICONS/Ability_Spy:30:30:-18:0|tBack...", GOSSIP_SENDER_MAIN, 3); plr->SEND_GOSSIP_MENU(50002, creature->GetGUID()); break; case 9: //MANAGE ELDOAR'NORORE STOCK stock = 5; plr->ADD_GOSSIP_ITEM_EXTENDED(GOSSIP_ICON_MONEY_BAG, "|TInterface/ICONS/INV_Letter_03:30:30:-18:0|tBuy shares", stock, 0, "How much gold would you like to invest?", 0, true); plr->ADD_GOSSIP_ITEM(GOSSIP_ICON_MONEY_BAG, "|TInterface/ICONS/INV_Misc_Coin_16:30:30:-18:0|tSell all shares", stock, 11); plr->ADD_GOSSIP_ITEM(GOSSIP_ICON_MONEY_BAG, "|TInterface/ICONS/Ability_Spy:30:30:-18:0|tBack...", GOSSIP_SENDER_MAIN, 3); plr->SEND_GOSSIP_MENU(50002, creature->GetGUID()); return true; break; case 11: //TRANSACTION = SELL if (!SellStock(plr, stock, creature)) plr->GetSession()->SendNotification("Error while selling shares... Please contact the administrator."); else { } plr->PlayerTalkClass->SendCloseGossip(); OnGossipHello(plr, creature); break; case 12: //CREATE PLAYER LICENCE ( = ROW IN CHARACTER_STOCKDATA ) if (plr->GetMoney() >= 40*GOLDTOCOPPER) { if (CreateLicence(plr)) { amount = 40*GOLDTOCOPPER; plr->ModifyMoney(-amount); message << "Your licence has been acquired successfully, " << plr->GetName() << "!"; creature->Say(message.str(), LANG_UNIVERSAL, plr); } else plr->GetSession()->SendNotification("Error while registering your licence. Please contact the administrator."); } else { message << "I am afraid you do not have these 40 gold coins, " << plr->GetName() << "..."; creature->Say(message.str().c_str(), LANG_UNIVERSAL, plr); } plr->PlayerTalkClass->SendCloseGossip(); OnGossipHello(plr, creature); break; default: OnGossipHello(plr, creature); break; } return true; } bool OnGossipSelectCode(Player* plr, Creature* creature, uint32 stock, uint32 uiAction, const char* code) override { plr->PlayerTalkClass->ClearMenus(); std::ostringstream message; int32 amount = 0; std::string investment = code; static const char* allowedcharacters = "1234567890"; if (!investment.length() || investment.find_first_not_of(allowedcharacters) != std::string::npos) //If investment was specified incorrectly { plr->GetSession()->SendNotification("Your investment bust be declared using figures.(0123456789)"); } else //If investment was specified properly { //Statements uint32 investmentI = uint32(atol(code)); if (investmentI*GOLDTOCOPPER <= plr->GetMoney()) { QueryResult result1 = WorldDatabase.PQuery("SELECT `OwnedRatio`,`Worth` FROM `stocks` WHERE iD = %u", stock); if (!result1) return false; Field* field = result1->Fetch(); float ownedratio = field[0].GetFloat(); int worth = field[1].GetInt32(); QueryResult result2 = CharacterDatabase.PQuery("SELECT `%u` FROM `character_stockdata` WHERE iD = %u", stock, plr->GetGUIDLow()); if (!result2) return false; field = result2->Fetch(); float initialratio = field[0].GetFloat(); float ratio = static_cast<float>(investmentI) / worth; if (ratio <= (1-ownedratio)) //If enough stocks left { int amount = investmentI*GOLDTOCOPPER; plr->ModifyMoney(-amount); // substract it from player money CharacterDatabase.PExecute("UPDATE `character_stockdata` SET `%u` = %f WHERE `iD` = %u", stock, initialratio + ratio, plr->GetGUIDLow()); WorldDatabase.PExecute("UPDATE `stocks` SET `OwnedRatio` = %f WHERE `iD` = %u", ownedratio + ratio, stock); } else { plr->GetSession()->SendNotification("There are not so many shares for you to acquire, check the remaining shares before trying to invest."); } } else { message << "You do not have so much money, " << plr->GetName() << "."; creature->Say(message.str().c_str(), LANG_UNIVERSAL, plr); } } plr->PlayerTalkClass->SendCloseGossip(); OnGossipHello(plr, creature); return true; } private : bool SendMoneyByMail(ObjectGuid player, uint64 money, int32 stock) { MailSender sender(MAIL_CREATURE, 50038, MAIL_STATIONERY_DEFAULT); std::string stockName; switch (stock) { case 1: stockName = "Ravenholdt Manor"; break; case 2: stockName = "Bloodsail"; break; case 3: stockName = "Steamwheedle Cartel"; break; case 4: stockName = "Theramore Silk Traders"; break; case 5: stockName = "Eldoar'norore"; break; default: return false; } std::ostringstream text; text << "You have requested the General Exchange Hall to sell your shares of the " << stockName << " stock. This has yielded some " << money/GOLDTOCOPPER << " gold coins from which I have deducted " << money/10/GOLDTOCOPPER << " in the sake of various sale and accountancy costs. Enclosed to this letter are " << 9* money/10/GOLDTOCOPPER << " gold coins which come down to you."; MailDraft draft("Share Sale", text.str().c_str()); draft.AddMoney(money * 9 / 10); SQLTransaction letter = CharacterDatabase.BeginTransaction(); draft.SendMailTo(letter, MailReceiver(NULL, player.GetCounter()), sender); CharacterDatabase.CommitTransaction(letter); return true; } bool SellStock(Player* plr, int32 stock, Creature* creature) /*SELL ALL THE SHARES OF THE SPECIFIED STOCK */ { QueryResult result2 = WorldDatabase.PQuery("SELECT `OwnedRatio`,`Worth` FROM `stocks` WHERE iD = %u", stock); if (!result2) return false; QueryResult result1 = CharacterDatabase.PQuery("SELECT `1`, `2`, `3`, `4`, `5` FROM `character_stockdata` WHERE iD = %u", plr->GetGUIDLow()); if (!result1) return false; Field* field = result1->Fetch(); float ratio = field[stock - 1].GetFloat(); if (ratio == 0) { plr->GetSession()->SendNotification("You don't own any share of this stock..."); } else //ONLY IF PLAYER OWNS SOMETHING { Field* field = result2->Fetch(); float newownedratio = field[0].GetFloat()-ratio; int worth = field[1].GetInt32(); if (!SendMoneyByMail(plr->GetGUID(), worth*GOLDTOCOPPER*ratio, stock)) return false; std::ostringstream text; text << "I shall make the arragement for the sale, " << plr->GetName() << ", you will receive your money by mail soon enough."; creature->Say(text.str().c_str(), LANG_UNIVERSAL); CharacterDatabase.PExecute("UPDATE `character_stockdata` SET `%u` = 0 WHERE `iD` = %u", stock, plr->GetGUIDLow()); WorldDatabase.PExecute("UPDATE `stocks` SET `OwnedRatio` = %f WHERE `iD` = %u", newownedratio, stock); } return true; } bool CreateLicence(Player* plr) { SQLTransaction trans = CharacterDatabase.BeginTransaction(); trans->PAppend("REPLACE INTO `character_stockdata` (`iD`, `1`, `2`, `3`, `4`, `5`) VALUES (%u, 0, 0, 0, 0, 0)", plr->GetGUIDLow()); CharacterDatabase.CommitTransaction(trans); return true; } bool StockUpdate(int timeMult) { int32 stockWorth[STOCKNUMBER], newStockWorth[STOCKNUMBER]; int32 stockScale[STOCKNUMBER]; float stockOwnedRatio[STOCKNUMBER]; srand(time(NULL)); // Load stock values from DB for (int itr = 0; itr < STOCKNUMBER; itr++) { QueryResult result = WorldDatabase.PQuery("SELECT `Scale`,`OwnedRatio`,`Worth` FROM `stocks` WHERE iD = %u", itr + 1); if (!result) return false; Field* field = result->Fetch(); stockScale[itr] = field[0].GetInt32(); stockOwnedRatio[itr] = field[1].GetFloat(); stockWorth[itr] = field[2].GetInt32(); } // Dicethrows and Upload values to DB for (int itr = 0; itr < STOCKNUMBER; itr++) { char sign; if (stockWorth[itr] + stockScale[itr]*timeMult > 200000) //Don't go over 200.000 gold coins sign = -1; else if (stockWorth[itr] - stockScale[itr]*timeMult < 0) //Nor below 0 sign = 1; else { int dice = (rand() % 101) + floor(10 * stockOwnedRatio[itr]) - 55; sign = dice / abs(dice); } newStockWorth[itr] = stockWorth[itr] + sign*stockScale[itr]*timeMult; WorldDatabase.PExecute("UPDATE `stocks` SET `worth` = %u WHERE `iD` = %u", newStockWorth[itr], itr + 1); } return true; } }; } void AddSC_Stock() { new CS_StockExchange(); } I know this code ain't perfect but I'm still open for suggestions and critics. Have a nice day.
  21. Hello guys! Im looking some guy which know work in 010Editor and he will be so kind to make some Tutorial HOW TO -> fix creatures from Cata/Wotlk/Legion.............. I mean fix Flying (Swinging wings) Just simply change this swiming animation to flying animation. It would be really nice, because im looking for it for so long, can't find nowhere any clue & nobody can help me with this. So if it will be possible, please just left reply in here or contact me on: or im on discord as well : GoldenQo #5577 Thanks! Your GoldenQo
  22. Version 1.0.0


    I made this script to convert multiple models from Legion to Wrath of the Lich King or Warlords of Draenor. Requires 010 editor. The first script removes the unnecessary information before the M2 header and changes its version from 274 to 272 to make it work in WoD. The second one does the same but also runs Philip's converter on the M2 files to make them work in Wotlk. How it works: -Put the models you want to covert inside the folder called "Models". -Run "Legion M2 to Wod/Wotlk.bat" and wait This script can also read all the subfolders inside "models" and convert every M2 inside of them. EXTERNAL LINK: Legion to Wotlk Legion to WoD To make this script work there must be an entry for 010 editor in environment variables (this allows windows to launch 010 editor through the cmd window, otherwise it won't work): -Right click on My computer -> properties -> advanced system settings -> environment variables -> Path -Click edit -Add your 010 editor directory to the list separated from the rest of the entries by a ";" (Example: ;C:\Program Files (x86)\010 Editor) (Detailed guide on this video)
  23. Version 3.0


    This mod adds bloodier combat effects to the game and includes some blood splats similar to those removed during the classic beta. Download: WotLK - Cata (Old version) V2.0: -Fixed crashes. V3.0: -Violence level is now always 2 and cannot be disabled or changed. -Added purple blood (id 5). IMPORTANT: to make it work correctly go to video settings and turn "projected textures" on. Also, set the "Particle Density" to High and set the Texture Filtering to High to avoid visual glitches. If you are using V2, make sure your violence level is set to 2. In-game, type: /console violenceLevel 2 Known bugs: -If you zoom in to first person view, you won't be able to see the blood splats from your character. -If a character morphs into another model, all the blood splats from that character will disappear. -The blood splats change color if your character changes color (curses, venom, etc.). -The blood splats scale changes if the scale of your character changes. -Blood effects do not show if you one-hit kill the target. It's hardcoded into the client and can't be changed as far as I know (happens with the default blood as well). -It's not possible to use this mod in MoP since the game cleans all blood splats each time your character is hit or dies. Note: The splats on the ground disappear after 45 seconds. You can change it by editing the particle lifespan in 010editor. If you think there are too many blood splats to the point they overlap or affects the performance, just change the default particle emissionrate (12) to 7 or less with 010editor. Blood color is set in CreatureModelData.dbc, column 6 (1 = red, 2 = green, 3 = black, 4 = blue, 5 = purple).
  24. Hi, I got the legion creature models from I think Laviathan. But I dont want the mounts, only the creatures. Is there a way to keep the old models for mounts but upgrade the creatures to the new ones? Thanks in advance. If someone can do the job I will be happy to pay I got paypal, or i can do bank transfer.
  25. Version v1


    This script for 010editor converts Wrath of the Lich King .M2 and .SKIN files to Cataclysm, Mists of Pandaria and Warlords of Draenor. Supports: -Cameras. -Particles. -Animation flags. -Projected shadows. -Transparency flags. -Blend mode overrides. Also includes: -Batch file converter. -Shadow remover script. -Sequence flag remover script. -Skin template for 010editor with shadow batches added. DOWNLOAD Some notes and technical information: -make sure you are working on "OVR" mode before running the script. Projected shadows As you may know, projected shadows are stored inside the .skin file since Cataclysm. This script creates shadows for all texture units, including those with additive materials. If you want to remove the shadows from a specific geoset, just open the skin file with 010editor, run the skin template included inside the tools folder and delete the texture batch corresponing to that mesh. If you want to remove ALL shadows from a model, just use the "Cataclysm Shadow Remover" included in the tools folder (it's useful for stuff like fire or lights, that are not supposed to cast a shadow). As you can see, the glow, which is a billboarded square with addivite renderflag, is casting a shadow and the game can't handle shadows with additive materials. To remove it I selected its shadow batch, deleted it and reduced the shadow batch count by 1 in 010editor. More info in this video: Flying mount animations In WotLK, mounts use swimming animations for flying. Since Cataclysm, however, there are separate ids for swimming and flying since flying mounts can now be used as ground mounts and therefore swim. But, if a mount model doesn't have fly animations, the game will use its swimming animations. That's why this script doesn't duplicate them. It's not necessary. WotLK flying mounts should still work perfectly in Cata, MoP and WoD. Reflections This script doesn't convert reflections since there is no exact way to know when a texture unit is used for a reflection, glow, etc. So you must do it by hand. Just open your skin file, convert it to Cata+, go to the texunit with the reflection and change its shader to "144". Here is an example using "Creature\Murloc\": You can change the "texunit" and "texunit2" fields to "0" but it's optional since those fields are unused since Cataclysm, but just in case. Animation sequence flags Sequence flags are 128 digits bigger since Cataclysm. Without these flags some animation frames loop when they shouldn't and sequences don't blend correctly. This script fixes that problem and gives smoothness to the animations. If you want to remove the extra flags for some reason, just run the "Cataclysm Sequence Flag Remover" script included in the tools folder