Advertisement
Rochet2

reguid, guid reformat, TC wotlk creature

Dec 14th, 2014
364
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
SQL 4.67 KB | None | 0 0
  1. -- Credits:
  2. -- Rochet2 ~creator
  3. -- LilleCarl ~base code
  4.  
  5. -- Start guid is 500000. Change it everywhere if need different.
  6.  
  7. -- This code attempts to rebase all creature guids so that instead of 234, 345, 567 hey will be 34, 35, 36
  8. -- Other tables using creature guids are taken into account as well.
  9.  
  10. -- NOTE: This code does not format characters DB tables! ~ You should probably try emptying them, like creature_respawn table.
  11.  
  12. -- Warning: Make a backup before trying. Conflicts may happen due to smart_scripts table complexity and assumptions.
  13. -- Changes to the DB structure can mess up parts of the scripts makeing only half of the code run leaving you with partially changed guids leading to errors.
  14. -- Use with caution if the guids you format have C++ scripts or are linked in tables like smart_scripts or waypoints etc.
  15. -- Free guids may collide as they are primary keys or unique and you may be reinserting them.
  16.  
  17. -- Does not create a perfect result and smart_scripts will have problems
  18.  
  19. SET @START_GUID := 500000; -- Change 500000 everywhere in code as well!
  20.  
  21. DROP TABLE IF EXISTS reorder;
  22. CREATE TABLE reorder (
  23.     `new` INT(11) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 'Global Unique Identifier',
  24.     `old` INT(11) UNSIGNED NOT NULL DEFAULT '0' COMMENT 'Global Unique Identifier',
  25.     PRIMARY KEY (`new`),
  26.     UNIQUE INDEX OLD (`old`)
  27. ) ENGINE=InnoDB AUTO_INCREMENT=500000 DEFAULT CHARSET=utf8;
  28.  
  29. INSERT INTO reorder (OLD) SELECT creature.guid FROM creature WHERE guid >= @START_GUID ORDER BY guid DESC;
  30.  
  31. DROP TABLE IF EXISTS reguid_temp_x;
  32. CREATE TABLE reguid_temp_x AS (SELECT * FROM creature);
  33. UPDATE reguid_temp_x u, reorder r SET u.guid = r.NEW WHERE r.OLD = u.guid;
  34. DELETE FROM creature;
  35. INSERT INTO creature SELECT * FROM reguid_temp_x;
  36. DROP TABLE IF EXISTS reguid_temp_x;
  37.  
  38. DROP TABLE IF EXISTS reguid_temp_x;
  39. CREATE TABLE reguid_temp_x AS (SELECT * FROM conditions);
  40. UPDATE reguid_temp_x u, reorder r SET u.SourceEntry = -r.NEW WHERE -r.OLD = u.SourceEntry AND u.ConditionTypeOrReference = 22 AND u.SourceEntry < 0;
  41. DELETE FROM conditions;
  42. INSERT INTO conditions SELECT * FROM reguid_temp_x;
  43. DROP TABLE IF EXISTS reguid_temp_x;
  44.  
  45. ALTER TABLE creature_addon DROP PRIMARY KEY;
  46. UPDATE creature_addon u, reorder r SET u.guid = r.NEW WHERE r.OLD = u.guid;
  47. ALTER TABLE creature_addon ADD PRIMARY KEY (guid);
  48.  
  49. UPDATE creature_formations u, reorder r SET u.leaderGUID = r.NEW WHERE r.OLD = u.leaderGUID;
  50.  
  51. ALTER TABLE creature_formations DROP PRIMARY KEY;
  52. UPDATE creature_formations u, reorder r SET u.memberGUID = r.NEW WHERE r.OLD = u.memberGUID;
  53. ALTER TABLE creature_formations ADD PRIMARY KEY (memberGUID);
  54.  
  55. ALTER TABLE game_event_creature DROP PRIMARY KEY;
  56. UPDATE game_event_creature u, reorder r SET u.guid = r.NEW WHERE r.OLD = u.guid;
  57. ALTER TABLE game_event_creature ADD PRIMARY KEY (eventEntry, guid);
  58.  
  59. ALTER TABLE game_event_model_equip DROP PRIMARY KEY;
  60. UPDATE game_event_model_equip u, reorder r SET u.guid = r.NEW WHERE r.OLD = u.guid;
  61. ALTER TABLE game_event_model_equip ADD PRIMARY KEY (guid);
  62.  
  63. ALTER TABLE game_event_npcflag DROP PRIMARY KEY;
  64. UPDATE game_event_npcflag u, reorder r SET u.guid = r.NEW WHERE r.OLD = u.guid;
  65. ALTER TABLE game_event_npcflag ADD PRIMARY KEY (eventEntry, guid);
  66.  
  67. ALTER TABLE game_event_npc_vendor DROP PRIMARY KEY;
  68. UPDATE game_event_npc_vendor u, reorder r SET u.guid = r.NEW WHERE r.OLD = u.guid;
  69. ALTER TABLE game_event_npc_vendor ADD PRIMARY KEY (guid, item);
  70.  
  71. ALTER TABLE linked_respawn DROP PRIMARY KEY;
  72. UPDATE linked_respawn u, reorder r SET u.guid = r.NEW WHERE r.OLD = u.guid AND u.linkType IN (0, 1);
  73. ALTER TABLE linked_respawn ADD PRIMARY KEY (guid, linkType);
  74.  
  75. UPDATE linked_respawn u, reorder r SET u.linkedGuid = r.NEW WHERE r.OLD = u.linkedGuid AND u.linkType IN (0, 3);
  76.  
  77. ALTER TABLE pool_creature DROP PRIMARY KEY;
  78. UPDATE pool_creature u, reorder r SET u.guid = r.NEW WHERE r.OLD = u.guid;
  79. ALTER TABLE pool_creature ADD PRIMARY KEY (guid);
  80.  
  81. ALTER TABLE vehicle_accessory DROP PRIMARY KEY;
  82. UPDATE vehicle_accessory u, reorder r SET u.guid = r.NEW WHERE r.OLD = u.guid;
  83. ALTER TABLE vehicle_accessory ADD PRIMARY KEY (guid, seat_id);
  84.  
  85. -- Not complete for timed action list~
  86. ALTER TABLE smart_scripts DROP PRIMARY KEY;
  87. UPDATE smart_scripts u, reorder r SET u.entryorguid = -r.NEW WHERE -r.OLD = u.entryorguid AND u.source_type = 0;
  88. ALTER TABLE smart_scripts ADD PRIMARY KEY (entryorguid, source_type, id, link);
  89.  
  90. UPDATE smart_scripts u, reorder r SET u.event_param1 = r.NEW WHERE r.OLD = u.event_param1 AND u.event_type IN(75, 76);
  91. UPDATE smart_scripts u, reorder r SET u.action_param1 = -r.NEW WHERE -r.OLD = u.action_param1 AND u.action_type IN(80);
  92. --
  93.  
  94. ALTER TABLE creature AUTO_INCREMENT=500000;
  95. -- DROP TABLE IF EXISTS reorder;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement