Search the Community

Showing results for tags 'wotlk'.



More search options

  • Search By Tags

    Type tags separated by commas.
  • Search By Author

Content Type


Forums

  • 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

Categories

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

Categories

  • Projects
  • Machinima
  • Software Development

Categories

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

Categories

  • Tutorials
  • Timelapse
  • Miscellaneous

Find results in...

Find results that contain...


Date Created

  • Start

    End


Last Updated

  • Start

    End


Filter by number of...

Joined

  • Start

    End


Group


Discord


Twitter


Skype

Found 107 results

  1. Commissions closed. I don't believe they will be ever opened again. What is this about Hello there little whelps, there are apparently quite a lot of people who are willing to pay for maps, but they want to have real finished map, they don't want to just hear some empty promises. I am willing to sell some maps I have already finished before (unless they were already bought by someone), and I'm also accepting commissions - you can hire me to make some project for you. A few general rules follow though: Comissions will be sold to only one person, and whoever next would like to buy them would need to have a permission of the one for whom the map was originally designed/sold. Thats in general possible when projects don't cross their interrests for some reason (different language, game style...). Map costs (very) roughly around 750 CZK (czech crowns) per ADT of ground (bottom of seas around isles don't count or are way cheaper). Google your currency to CZK conversion rate. 750 CZK is about 28.75€ or 32.75 USD now. Payments are to be sent on my Paypal account. Currency used there is up to you, I will have to make conversion to CZKs anyway, so it doesn't matter what kind of currency you send. Currency conversion fee is my problem and I won't add it to your payment. I will send you map after receiving payment, not sooner, and when its done. We can discuss sending WIP version for part of final payment though (usually % of price based of approximated % of work progress already done), if you need it for developing server side stuff. My newest maps can't be opened in Noggit, they cause crashes. Its a protection against leechers. I can tell you how to get rid of it ofc, so you'll be able to edit my maps after buying them, if you want to. I won't share that knowledge here though. Patches will contain needed DBCs, WDT, ADTs and all retro-ported or custom textures and models used. I will do all client side work - Noggit, light settings, ground effects, water and so on. I can also create custom M2/WMO models, if really needed. I work only on WotLK. At least for now. However, you can (hopefully) upconvert my maps to newer client versions, I suppose, but I can't provide you any assistance with this. I won't generate server-side maps for you, but I can help you with that by guiding you. Maps which are not done as commissions for someone are free to be bought by anyone, unless someone gives me offer to pay something I would call a really good price. In such case we might discuss closing sale of that map. Please, no strict deadlines. I am sometimes a busy person and sometimes I just don't want to work in Noggit. Its a very bad idea to try to force me to work in such times, results tend to be just way worse than they would have been otherwise. If we agree on any sort of deadline, I will try to make map on time ofc, just keep on mind that all kind of things can happen. Apart of deadlines you may want to try to put on my head, I ALWAYS keep my word and don't just break deals, at least as long as you keep your part of any deals we make. If I say I won't sell your map to anyone else, I won't, and I will help you as much as possible with protection against possible patch stealers (just remember - there is nothing like an absolutely impenetrable security measure). I always send my maps ASAP after payment is received. You can count on me when it comes to such things, and I think I am a person known around well enough to be considered trustworthy. I will make the very basic minimap and world map working for you if you want me to, but I preffer to not draw anything. I am just a beginner when it comes to painting maps or any 2D hand-painted stuff in general. But I can do it. I can create custom 3D models for you, both WMOs and M2s. But for now no animations/particle effcts/lights (so no creatures as well). And I am not importing stuff from different games, only creating new, custom stuff - stationary doodads and items or buildings. You can actually hire me just to make models for you, no problem with that, and I am also learning to hand-paint custom texture now as well. If you are not 100% sure wheter you will be able to pay me, please, don't waste my time. I've always got different things to do, so make 100% sure you are able to keep your side of agreement. If I get sense that you are just wasting my time, I will cut you off. No weeboo projects. I am not a fan of anime. If you are interrested, contact me via PM here or via Skype striker159753. Some previous projects to show off My personal project from 2014-2015. I've been modding WoW since summer 2011 - there were multiple projects before this one, but I don't think they are worth mentioning in comparision with this and the following ones. Arathor RP still exists, but has moved to Mythia map (below). Following map was already sold.: My current personal project (although no longer owned/led by me, I have retired), opened in 2016. Still running. Some parts of map were not done by me though (most of those people tend to not like :P). As this map was finished by some of my former collegues, I will never offer this map for sale, unless they give me a permission.: Both of following videos are from Erutia project. The first is a full making of video (well, not really full, that would be either too long or too fast to watch, but I've put parts of every step of progress there), the second is a trailer (with some speed spawning stuff included as well).: Comissions I've already finished, they are not for sale anymore.: WMOs I'm creating and releasing for free use.:
  2. Version 2.0

    6,684 downloads

    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. 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.
  4. Version 2

    245 downloads

    Hello there little whelps, I used to use patch made by one guy from Ownedcore which included all M2s and WMOs existing in WoW turned into spawnable gameobjects. That means that you can simply search for model name in game and you will always find gob you can spawn. Its just great thing for gob spammers, I know, but problem is that patch from Ownedcore is just horrible in my opinion. It contains a LOT of completely unneeded objects and displayIDs and also is full of displayIDs with messed up bounding boxes (all copied from one blizzlike one), which leads into gobs lootable from 50yd distances an another funny results. So I made my own patch. Here is MPQ patch, DBC file and SQL dump (for TrinityCore2 revisions after WDBVerified column was renamed to VerifiedBuild). I tryed to make this completely noob-friendly so if you want to use this patch, you don't need to know anything about MPQ patches or DBC files, you just need to know the very basics of running TrinityCore2 server. READ README file. You will find how-to guide there. All gobs with custom displayIDs have [AmPatch] placed behind their postfixes and have entrys 410000 and higher. Their displayIDs are 10000 and higher, meaning that every gob has displayID=entry-400000. Good for searching for displayIDs. Version 1 - light pack This version contains all M2s and WMOs from World and Spell folders as spawnable gameobjects. Others were excluded, because majority of them just can't be used as gobs (they have no hardcoded textures for example - they are white completely ingame). Version 2 - full pack This pack contains really ALL M2s, even character, item, creature... And its needless to say that most of such things are completely useless as gobs. But someone still may preffer this version. If you want to create your own gob patch, you may use my tool I've released. It doesn't give you possibility to filter which gobs you can use, but it works. You will want to use this tool if you are retro-porting models or creating custom ones (in general, if you want to have gobs made of models which are not in blizzlike WotLK client).
  5. Version 1.6

    1,834 downloads

    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. Hiho :3 The last few days i worked on two libraries which will (hopefully) result in some really nice modding tools. Huge thanks to Cromon and schlumpf who answered my questions! AdtLib335 This library can read and save your adt files for WoW 3.3.5. Current status: Reading is working and i tested it on many adt files. Saving is not yet implemented and will come later. WdtLib335 This library can read and save your wdt files for WoW 3.3.5. Current status: Reading is working and i tested it on many wdt files. Saving is not yet implemented and will come later. I also uploaded a minimal demo application. I actually wanted to write a newer Fileinfo/Loadinfo tool, but i'm way too lazy for that. If you can find any bugs, please report them! You can find the libraries in this repository: https://github.com/Kaev/WoW335Tools They're written in VB.Net, you can easily implement them in your .Net applications. Have a nice day!
  7. Hi! I really don't like to write the same code several times, so i created some templates for me which i want to share with you today. The templates are made for TrinityCore 3.3.5, but could also work on newer versions, if they didn't change the scripting hooks. But i never tested anything besides 3.3.5. CreatureScript Gossip-Template ScriptedAI-Template Quest-Template GameObjectScript Gossip-Template GameObjectAI-Template Quest-Template ItemScript ItemScript-Template PlayerScript OnPVPKill-Template OnLevelChanged-Template Tell me if you have any template wishes or found any bugs. ~Kaev