· 6 years ago · May 10, 2019, 02:22 AM
1###############################
2# RUN THE FOLLOWING ONCE ONLY #
3###############################
4
5ALTER TABLE characters.item_instance ADD COLUMN cloned_item_id INT NULL;
6ALTER TABLE characters.item_loot ADD COLUMN cloned_item_id INT NULL;
7
8##########################################
9# DELETE THESE LINES AND THE LINES ABOVE #
10##########################################
11
12########################
13# EDIT THESE VARIABLES #
14########################
15
16SET @existing_char_name = 'Dw';
17SET @cloned_char_name = 'Dwclone';
18SET @existing_account_name = 'dwdwdw';
19SET @cloned_account_name = 'dwdwdw';
20
21###############################
22# DO NOT EDIT BELOW THIS LINE #
23###############################
24
25SET @existing_char_guid = (
26 SELECT guid FROM characters.characters WHERE name = @existing_char_name
27);
28
29SET @existing_account_id = (
30 SELECT id FROM realmd.account WHERE username = @existing_account_name
31);
32SET @cloned_account_id = (
33 SELECT id FROM realmd.account WHERE username = @cloned_account_name
34);
35
36# Character Setup
37
38DROP TEMPORARY TABLE IF EXISTS characters.tmp;
39CREATE TEMPORARY TABLE characters.tmp
40 SELECT * FROM characters.characters WHERE name = @existing_char_name;
41ALTER TABLE characters.tmp DROP COLUMN guid;
42UPDATE characters.tmp SET name = @cloned_char_name, account = @cloned_account_id;
43INSERT INTO characters.characters
44 SELECT (
45 SELECT max(guid) + 1 as guid
46 FROM characters.characters
47 ) as guid, characters.tmp.* FROM characters.tmp;
48DROP TEMPORARY TABLE characters.tmp;
49
50SET @cloned_char_guid = (
51 SELECT guid FROM characters.characters WHERE name = @cloned_char_name
52);
53
54# Item Setup
55ALTER TABLE characters.item_instance
56 MODIFY COLUMN guid INT UNIQUE
57 auto_increment;
58DROP TEMPORARY TABLE IF EXISTS characters.tmp;
59CREATE TEMPORARY TABLE characters.tmp
60 SELECT * FROM characters.item_instance
61 WHERE owner_guid = @existing_char_guid;
62UPDATE characters.tmp SET owner_guid = @cloned_char_guid;
63UPDATE characters.tmp SET cloned_item_id = guid;
64ALTER TABLE characters.tmp DROP guid;
65INSERT INTO characters.item_instance
66 SELECT 0, characters.tmp.* FROM characters.tmp;
67DROP TEMPORARY TABLE characters.tmp;
68ALTER TABLE characters.item_instance
69 MODIFY COLUMN guid INT UNIQUE;
70
71# Item Setup
72ALTER TABLE characters.item_loot
73 MODIFY COLUMN guid INT UNIQUE
74 auto_increment;
75DROP TEMPORARY TABLE IF EXISTS characters.tmp;
76CREATE TEMPORARY TABLE characters.tmp
77 SELECT * FROM characters.item_loot
78 WHERE owner_guid = @existing_char_guid;
79UPDATE characters.tmp SET owner_guid = @cloned_char_guid;
80UPDATE characters.tmp SET cloned_item_id = guid;
81ALTER TABLE characters.tmp DROP guid;
82INSERT INTO characters.item_loot
83 SELECT 0, characters.tmp.* FROM characters.tmp;
84DROP TEMPORARY TABLE characters.tmp;
85ALTER TABLE characters.item_instance
86 MODIFY COLUMN guid INT UNIQUE;
87
88# Action Setup
89DROP TEMPORARY TABLE IF EXISTS characters.tmp;
90CREATE TEMPORARY TABLE characters.tmp
91 SELECT * FROM characters.character_action
92 WHERE guid = @existing_char_guid;
93UPDATE characters.tmp SET guid = @cloned_char_guid;
94INSERT INTO characters.character_action SELECT * FROM characters.tmp;
95DROP TEMPORARY TABLE characters.tmp;
96
97# Aura Setup
98DROP TEMPORARY TABLE IF EXISTS characters.tmp;
99CREATE TEMPORARY TABLE characters.tmp
100 SELECT * FROM characters.character_aura WHERE guid = @existing_char_guid;
101UPDATE characters.tmp SET guid = @cloned_char_guid;
102INSERT INTO characters.character_aura SELECT * FROM characters.tmp;
103DROP TEMPORARY TABLE characters.tmp;
104
105# BG Data Setup
106DROP TEMPORARY TABLE IF EXISTS characters.tmp;
107CREATE TEMPORARY TABLE characters.tmp
108 SELECT * FROM characters.character_battleground_data
109 WHERE guid = @existing_char_guid;
110UPDATE characters.tmp SET guid = @cloned_char_guid;
111INSERT INTO characters.character_battleground_data
112 SELECT * FROM characters.tmp;
113DROP TEMPORARY TABLE characters.tmp;
114
115# BG Queue Setup
116DROP TEMPORARY TABLE IF EXISTS characters.tmp;
117CREATE TEMPORARY TABLE characters.tmp
118 SELECT * FROM characters.character_bgqueue
119 WHERE PlayerGUID = @existing_char_guid;
120UPDATE characters.tmp SET PlayerGUID = @cloned_char_guid;
121INSERT INTO characters.character_bgqueue
122 SELECT * FROM characters.tmp;
123DROP TEMPORARY TABLE characters.tmp;
124
125# Deleted Items Setup
126DROP TEMPORARY TABLE IF EXISTS characters.tmp;
127CREATE TEMPORARY TABLE characters.tmp
128 SELECT * FROM characters.character_deleted_items
129 WHERE player_guid = @existing_char_guid;
130UPDATE characters.tmp SET player_guid = @cloned_char_guid;
131INSERT INTO characters.character_deleted_items
132 SELECT * FROM characters.tmp;
133DROP TEMPORARY TABLE characters.tmp;
134
135# Forgotten Skills Setup
136DROP TEMPORARY TABLE IF EXISTS characters.tmp;
137CREATE TEMPORARY TABLE characters.tmp
138 SELECT * FROM characters.character_forgotten_skills
139 WHERE guid = @existing_char_guid;
140UPDATE characters.tmp SET guid = @cloned_char_guid;
141INSERT INTO characters.character_forgotten_skills
142 SELECT * FROM characters.tmp;
143DROP TEMPORARY TABLE characters.tmp;
144
145# Character Gifts
146DROP TEMPORARY TABLE IF EXISTS characters.tmp;
147CREATE TEMPORARY TABLE characters.tmp
148 SELECT * FROM characters.character_gifts
149 WHERE guid = @existing_char_guid;
150UPDATE characters.tmp SET guid = @cloned_char_guid;
151INSERT INTO characters.character_gifts
152 SELECT * FROM characters.tmp;
153DROP TEMPORARY TABLE characters.tmp;
154
155# Homebind Gifts
156DROP TEMPORARY TABLE IF EXISTS characters.tmp;
157CREATE TEMPORARY TABLE characters.tmp
158 SELECT * FROM characters.character_homebind
159 WHERE guid = @existing_char_guid;
160UPDATE characters.tmp SET guid = @cloned_char_guid;
161INSERT INTO characters.character_homebind
162 SELECT * FROM characters.tmp;
163DROP TEMPORARY TABLE characters.tmp;
164
165# Honor CP
166DROP TEMPORARY TABLE IF EXISTS characters.tmp;
167CREATE TEMPORARY TABLE characters.tmp
168 SELECT * FROM characters.character_honor_cp
169 WHERE guid = @existing_char_guid;
170UPDATE characters.tmp SET guid = @cloned_char_guid;
171INSERT INTO characters.character_honor_cp
172 SELECT * FROM characters.tmp;
173DROP TEMPORARY TABLE characters.tmp;
174
175# Instance
176DROP TEMPORARY TABLE IF EXISTS characters.tmp;
177CREATE TEMPORARY TABLE characters.tmp
178 SELECT * FROM characters.character_instance
179 WHERE guid = @existing_char_guid;
180UPDATE characters.tmp SET guid = @cloned_char_guid;
181INSERT INTO characters.character_instance
182 SELECT * FROM characters.tmp;
183DROP TEMPORARY TABLE characters.tmp;
184
185# Inventory - COME BACK
186DROP TEMPORARY TABLE IF EXISTS characters.tmp;
187CREATE TEMPORARY TABLE characters.tmp
188 SELECT * FROM characters.character_inventory
189 WHERE guid = @existing_char_guid;
190UPDATE characters.tmp SET guid = @cloned_char_guid;
191UPDATE characters.tmp SET item = (
192 SELECT guid FROM characters.item_instance WHERE cloned_item_id = item
193);
194INSERT INTO characters.character_inventory
195 SELECT * FROM characters.tmp;
196DROP TEMPORARY TABLE characters.tmp;
197
198# Pet
199DROP TEMPORARY TABLE IF EXISTS characters.tmp;
200CREATE TEMPORARY TABLE characters.tmp
201 SELECT * FROM characters.character_pet
202 WHERE owner = @existing_char_guid;
203UPDATE characters.tmp SET owner = @cloned_char_guid;
204INSERT INTO characters.character_pet
205 SELECT * FROM characters.tmp;
206DROP TEMPORARY TABLE characters.tmp;
207
208# Quest Status
209DROP TEMPORARY TABLE IF EXISTS characters.tmp;
210CREATE TEMPORARY TABLE characters.tmp
211 SELECT * FROM characters.character_queststatus
212 WHERE guid = @existing_char_guid;
213UPDATE characters.tmp SET guid = @cloned_char_guid;
214INSERT INTO characters.character_queststatus
215 SELECT * FROM characters.tmp;
216DROP TEMPORARY TABLE characters.tmp;
217
218# Rep
219DROP TEMPORARY TABLE IF EXISTS characters.tmp;
220CREATE TEMPORARY TABLE characters.tmp
221 SELECT * FROM characters.character_reputation
222 WHERE guid = @existing_char_guid;
223UPDATE characters.tmp SET guid = @cloned_char_guid;
224INSERT INTO characters.character_reputation
225 SELECT * FROM characters.tmp;
226DROP TEMPORARY TABLE characters.tmp;
227
228# Skills
229DROP TEMPORARY TABLE IF EXISTS characters.tmp;
230CREATE TEMPORARY TABLE characters.tmp
231 SELECT * FROM characters.character_skills
232 WHERE guid = @existing_char_guid;
233UPDATE characters.tmp SET guid = @cloned_char_guid;
234INSERT INTO characters.character_skills
235 SELECT * FROM characters.tmp;
236DROP TEMPORARY TABLE characters.tmp;
237
238# Social
239DROP TEMPORARY TABLE IF EXISTS characters.tmp;
240CREATE TEMPORARY TABLE characters.tmp
241 SELECT * FROM characters.character_social
242 WHERE guid = @existing_char_guid;
243UPDATE characters.tmp SET guid = @cloned_char_guid;
244INSERT INTO characters.character_social
245 SELECT * FROM characters.tmp;
246DROP TEMPORARY TABLE characters.tmp;
247
248#Spell
249DROP TEMPORARY TABLE IF EXISTS characters.tmp;
250CREATE TEMPORARY TABLE characters.tmp
251 SELECT * FROM characters.character_spell
252 WHERE guid = @existing_char_guid;
253UPDATE characters.tmp SET guid = @cloned_char_guid;
254INSERT INTO characters.character_spell
255 SELECT * FROM characters.tmp;
256DROP TEMPORARY TABLE characters.tmp;
257
258#Spell Cooldown
259DROP TEMPORARY TABLE IF EXISTS characters.tmp;
260CREATE TEMPORARY TABLE characters.tmp
261 SELECT * FROM characters.character_spell_cooldown
262 WHERE guid = @existing_char_guid;
263UPDATE characters.tmp SET guid = @cloned_char_guid;
264INSERT INTO characters.character_spell_cooldown
265 SELECT * FROM characters.tmp;
266DROP TEMPORARY TABLE characters.tmp;
267
268# Stats
269DROP TEMPORARY TABLE IF EXISTS characters.tmp;
270CREATE TEMPORARY TABLE characters.tmp
271 SELECT * FROM characters.character_stats
272 WHERE guid = @existing_char_guid;
273UPDATE characters.tmp SET guid = @cloned_char_guid;
274INSERT INTO characters.character_stats
275 SELECT * FROM characters.tmp;
276DROP TEMPORARY TABLE characters.tmp;
277
278# Ticket
279DROP TEMPORARY TABLE IF EXISTS characters.tmp;
280CREATE TEMPORARY TABLE characters.tmp
281 SELECT * FROM characters.character_ticket
282 WHERE guid = @existing_char_guid;
283UPDATE characters.tmp SET guid = @cloned_char_guid;
284INSERT INTO characters.character_ticket
285 SELECT * FROM characters.tmp;
286DROP TEMPORARY TABLE characters.tmp;