Jump to content

antz

Community Manager
  • Posts

    2819
  • Joined

  • Last visited

  • Days Won

    96
  • Donations

    0.00 GBP 

Everything posted by antz

  1. Changed Status to Unconfirmed Changed Assigned to Talendrys Changed Implemented Version to 22.1 Changed Milestone to 24 Changed Priority to New / Assign Priority
  2. Changed Status to Not a bug Changed Priority to Low Changed Category to Item
  3. Perhaps even try the same with normal gear rather than customized gear
  4. @Akar - I'm a windows dev by trade, so this was written in C# However, since 90% of the work is done via SQL, it might be able to be ported to Linux
  5. Since Mangos was first devised, the knowledge behind the packets sending information to and from the server has always been kept under wraps. - Anyone asking about information was normally told to 'go look in the code for details' I have long hated this so called cloak and dagger ideal as it harms the community greatly when people who have that information move on. I have therefore decided to create a Central Packet Knowledge System which covers all the versions of Wow. On that end I have set up a central Database, along with a small application to assist in populating this DB. The eventual goal is to extract all the relevant information back out and populate the Wiki with the information. The project is only in it's alpha stage, so any help testing or entering information would be greatly appreciated. Please contact @antz for a copy of the App plus log in credentials. This is main log in screen. A blank search is automatically done for you, the selected core is Classic by default. Click on a packet entry opens up the Edit Packet Screen This contains various information about the packet as well as the packet field definitions. Double-clicking on a field will open the field definition screen. This screen allows you to enter as much field information is you can, optionally you can also adjust which core this field is valid for (out of a maximum of the cores using this packet). This allows for different fields / field order based on the core it's used for. You can also use searches to filter the main list of packets.
  6. For many many years, the Localisation effort for MaNGOS has been almost non-existent outside of the actual core changes to allow localised text to appear. This caused the translation effort to be organised and managed by small groups outside of mangos and over time these projects lost interest and died. In late 2016 we decided to try and change that !! We created a dedicated Github Organisation and Repositories to hold all the localised data, including preparation and installation scripts. This organisation is located HERE Following on from this, @antz has created a tool 'Mangos Online Translation Editor' or MOTE which massively simplifies the translation effort: More information on MOTE can be found HERE If you can help us which translations into the following languages: Korean, French, German, Chinese, Taiwanese, Spanish, Spanish (South American), Russian and Italian We would love your help, as would the MaNGOs community !!
  7. What is MOTE ? Mangos Online Translation Editor or MOTE for short is a word based translation editor for MaNGOS, it aims to massive simplify the Adding / Editing of Translations for all the MaNGOS tables. Why is it MOTE different to other translation projects ? - It has been designed to be multi-core compatible, therefore sharing the translations of matching text between the cores. - By being word based, rather than entry based, the translation of a word needs only be done once and it becomes available anywhere the English word is used. - A simple user interface makes changing text very easy. The Initial login screen: (guest as the username and password will grant you read only access) The default main screen: Searching for bread* with German translations: Green means it has a translation, Red means is doesn't Clicking on an entry highlights it, and also updates the 'context bar' below the search results The 0123 shows which core it's for. in this example there are two entries, one which is present in all 4, and the other only present in M1,2,3 Double-clicking on an entry opens the translation edit screen: Double-clicking on an entry in the 'context bar' opens a screen to show how it's used: Clicking on either of the EDIT buttons will open the translation edit screen. If you would like to help contribute to the localisation effort, please contact @antz and he will provide you with the app and login credentials.
  8. For most Third Party utilities and Applications there is normally some sort of Account management functionality required. The way MaNGOS handles this is fairly simple and painless The account information is held in the account table of the realm Database The `sha_pass_hash` field is nothing else but the SHA1 hash of "USERNAME:PASSWORD", the upper-case username, a ":" and the upper-case password. As the password-field contains the username, you cant just change the username in the `account` table, you always have to change the password-hash too but don't worry, it sounds harder then it is - Luckily mysql provides all we need. Change password: SQL: UPDATE `account` SET `sha_pass_hash` = SHA1(CONCAT(UPPER(`usernameabc`),':',UPPER('passwordxyz'))), `v`='', `s`='' WHERE `id` = x; Where 'usernameabc' is the username, 'passwordxyz' is the password and 'x' is the account id of the existing entry. Change username: SQL: UPDATE `account` SET `username` = 'usernameabc', `sha_pass_hash` = SHA1(CONCAT(UPPER('usernameabc'),':',UPPER('passwordxyz'))), `v`='', `s`='' WHERE `id` = x; Where 'usernameabc' is the username, 'passwordxyz' is the password and 'x' is the account id of the existing entry. Create new account: SQL: INSERT INTO `account` (`username`,`sha_pass_hash`) VALUES ('usernameabc', SHA1(CONCAT(UPPER('usernameabc'),':',UPPER('passwordxyz')))); Where 'usernameabc' is the username, 'passwordxyz' is the password. Listing all characters belonging to an account: SQL: SELECT character0.characters.* FROM realmd.account LEFT JOIN character0.characters ON realmd.account.id = character0.characters.account WHERE username='player' Where character0 is your characters DB, realmd is your realm DB. player is the name of the account you want to find the characters for.
  9. antz

    Adding Waypoints

    @Olion Thanks for the input, I will add them in
  10. The following wdb-files have content labelling: creaturecache gameobjectcache‎ itemcache itemnamecache itemtextcache‎ npccache pagetextcache‎ questcache `creaturecache` wdb This wdb contains some information of seen creatures. Structure Name Type entry UInteger name Sitring subbame String IconName String type_flags UInteger type UInteger family UInteger rank UInteger KillCredit1 UInteger KillCredit2 UInteger modelid_1 UInteger modelid_2 UInteger modelid_3 UInteger modelid_4 UInteger unk16/HealthModifier float unk17/PowerModifier float RacialLeader TINYINT questItem1 UInteger questItem3 UInteger questItem3 UInteger questItem4 UInteger questItem5 UInteger questItem6 UInteger MovementId UInteger
  11. HOW TO CREATE WAYPOINTS - get things moving A short Introduction how a path is handled PREREQUISITES For every movement of a creature in the wow - world a definition has to be made. (Except the case a hungry one is looking at you for breakfast) The involved objects are: a db table called creature_movement, one with the little strange name db_script_string, one creature you want to teach a way and - last but not least you in the game with GM rights activated. A SQL interface to the database is also needed - equal which you prefer. The Information created in this process later can be <recycled> and used in scripts - eg some escorts type follower or the same way some boss scripts. In any case we recommend to finish the waypoints first and to deal with scripts later. BASICS - what do I need to know The route is stored in creature_movement in the following way : id = the guid of the mob and point = an autoincrement counter starting at 1. According to this waypoints always are just pointing to a single creature and - changing single waypoints later is a mess. Mostly the starting point of the route is the spawn poin. Leaving this way maybe possible but not effective. In all cases memorize the spawnpoint cause here your route starts. Also be aware of programming waypoints needs some time and maybe a lot of running work too.... STEP 1 - cleaning up First find your npc. You need the id and the guid of him. .go creature <guid> may be helpful. .npc info (target the npc first) gives the needed numbers. If youre replacing an old way perhaps save it now. Looking at the waypoints is simply done with SELECT * FROM creature_movement WHERE id = <guid> To erase former informations in the database you simply use DELETE FROM creature_movement WHERE id = <guid> Now your npc has no waypoints. STEP 2 - The running job Do the following : select your npc switch off his need to visit waypoints UPDATE `creature` SET `MovementType`=1 WHERE `guid`= <guid> LIMIT 1; select the npc then type .npc follow EXCURSION - server manners If that looks strange - lets look at the sense behind. When you visiting the wow world just a part of it is transferred to the client and also in the core just the parts are loaded where some player action occurs. The same way not used areas are taken out of memory on client and server side. You can imagine that a circle-like area around your character. When programming long ways you could get error messages cause some parts of your way are unloaded. Cause you have to select the npc to set his ways and if you are going too far away it is automatically deselected. OK now position yourself at the first spot and type with npc selected .wp add <guid> Congrats - The first waypoint has just been made. Between 2 waypoints the npc always takes a straight line - so to make realistic curves you have to do this by setting more waypoints to simulate it. Follow your path and set your waypoints - and dont forget less is more every waypoint is server workload so just make the neccesary. The npc is going through the waypoint list till the end. When hes at the end restarting again with the first waypoint. That means you must set the way more or less in a circle to return to starting point - else you will see a lost creature hopping through the fields searching for the first entry with odd behavior. Step 3 - Nothing without verification Switch on waypoints for your companion UPDATE `creature` SET `MovementType`=2 WHERE `guid`= <guid> LIMIT 1; if the mob is doing nothing try typing .reload all Now the creature should start moving and following your route. Watch one "round" to see if it all works correctly. Step 4 - EXTRAS - cream on top To make additional actions for your (now running) creature you have to access a single waypoint to tell him an action. If you look into your waypoints select * from creature_movement where id = <guid> You see the following data fields : 5 textid, emote, spell, waittime and a script_id. And a - empty - wpguid. EXCURSION - searching for guids To put something into a waypoint you have to identify it. That's not that easy when you made 30 or 40. Normally waypoints just exist in the database. To work with them visually, the first step is to spawn them - yes - spawn ! Normally a waypoint has no guid. .wp show <guid_of_your_npc> The core generates guids for every waypoint you use atm. To optionally control it - on the right side of table select * from creature_movement where id = <guid> Making long distance ways it can happen that not all wps are generated - then simply walk to the other part and use the command again. Now you're able to identify every single waypoint by his guid in the database. VERY IMPORTANT - clean up when your finished. Every spawned waypoint uses a guid - like you created a lot of mobs. When your finished type .wp show off - to delete the waypoint dummies STEP 5 - WAIT - for what ? is at it says ... just standing there around doing nothing simply set the wait time - be aware that this are milliseconds ... one minute = 60000 STEP 6 - TEXT - Adding Speech There are textid1 to textid5 to be used from 1 up. if more than one is used randomly one will be chosen. To make this far from easy - there is no text field. Its a reference into db_script_string. And to make it just more complicated entries must be between 2000000000 and 2000010000 !!! so you have to add your text into that table and afterwards you can tell the waypoints. just use content_default for your messages - the other fields are for translations into different languages STEP 7 - EMOTES - clapping npcs Simply store an emote number here reference you'll find in the dbc emote tables STEP 8 - SPELLS AND SCRIPTS This is going too far for a introduction. You may find Information about possible spells and scripting at other tutorials. ADDENDUM - THE MESSY THING To change a single waypoint entry is a challange. Ok - a position change can be easy done by .npc move When its spawned. But inserting a new point .. you first have to create that point. Than you must free the sequence number he should use - they are a unique key so no equals allowed in the database - by rising all upper waypoints one step up and after that you can give the new one the insertion number. Works with 5 waypoints but is a challange for a long route. The other way round - to swap the gps coordinates - is also not an easy task. So take care that the basic waypoints are all correct and working. In case of error often it will be faster to rebuild the path from scratch than playing around.
  12. @krill reported the following issue: Ac-web.org/forums/showthread.php?228498-Exlpoits-injector-Attacks-on-The-Server This applies for mangos to all mangos based cores are vulnerable. In short, group invite packet is corrupted because hacker sends an invite with null guid. According to video on thread, crash happens after player logs out (which is called via hack)
  13. @Elowan - Please see my blog post at: Click 'Read More'
  14. @bdebaere@Necrovoice - Any chance you guys could check that this also works on Mangos One ?
  15. I did a clean test of this and it loaded cleanly, I also took MadMax's database dump and loaded it onto my server and it still loaded cleanly. This does kind of indicate that it's not the database at fault, but rather the set up of the server itself ! - Investigations are ongoing
  16. I did a clean test of this and it loaded cleanly, I also took MadMax's database dump and loaded it onto my server and it still loaded cleanly. This does kind of indicate that it's not the database at fault, but rather the set up of the server itself ! - Investigations are ongoing
  17. I did a clean test of this and it loaded cleanly, I also took MadMax's database dump and loaded it onto my server and it still loaded cleanly. This does kind of indicate that it's not the database at fault, but rather the set up of the server itself ! - Investigations are ongoing
  18. I did a clean test of this and it loaded cleanly, I also took MadMax's database dump and loaded it onto my server and it still loaded cleanly. This does kind of indicate that it's not the database at fault, but rather the set up of the server itself ! - Investigations are ongoing
  19. I did a clean test of this and it loaded cleanly, I also took MadMax's database dump and loaded it onto my server and it still loaded cleanly. This does kind of indicate that it's not the database at fault, but rather the set up of the server itself ! - Investigations are ongoing
  20. I did a clean test of this and it loaded cleanly, I also took MadMax's database dump and loaded it onto my server and it still loaded cleanly. This does kind of indicate that it's not the database at fault, but rather the set up of the server itself ! - Investigations are ongoing
  21. I did a clean test of this and it loaded cleanly, I also took MadMax's database dump and loaded it onto my server and it still loaded cleanly. This does kind of indicate that it's not the database at fault, but rather the set up of the server itself ! - Investigations are ongoing
  22. I did a clean test of this and it loaded cleanly, I also took MadMax's database dump and loaded it onto my server and it still loaded cleanly. This does kind of indicate that it's not the database at fault, but rather the set up of the server itself ! - Investigations are ongoing
  23. I did a clean test of this and it loaded cleanly, I also took MadMax's database dump and loaded it onto my server and it still loaded cleanly. This does kind of indicate that it's not the database at fault, but rather the set up of the server itself ! - Investigations are ongoing
  24. I did a clean test of this and it loaded cleanly, I also took MadMax's database dump and loaded it onto my server and it still loaded cleanly. This does kind of indicate that it's not the database at fault, but rather the set up of the server itself ! - Investigations are ongoing
×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. Privacy Policy Terms of Use