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