From 51cb9651e358b78abb4fbe6124fa6036ae0c5a7a Mon Sep 17 00:00:00 2001
From: MobiusDev <8391001+MobiusDevelopment@users.noreply.github.com>
Date: Sun, 30 Aug 2015 17:39:57 +0000
Subject: [PATCH] Database Installer.
---
trunk/.settings/org.eclipse.jdt.core.prefs | 11 -
trunk/build.xml | 34 ++-
trunk/dist/db_installer/images/help.png | Bin 0 -> 786 bytes
trunk/dist/db_installer/images/l2j.png | Bin 0 -> 446 bytes
.../sql/game/account_gsdata.sql | 1 +
.../sql/game/account_premium.sql | 0
.../sql/game/airships.sql | 1 +
.../sql/game/announcements.sql | 1 +
.../sql/game}/auction.sql | 1 +
.../sql/game/auction_bid.sql | 1 +
.../sql/game/auction_watch.sql | 1 +
.../sql/game/bbs_favorite.sql | 1 +
.../sql/game/bot_reported_char_data.sql | 1 +
.../sql/game/buylists.sql | 1 +
.../sql/game/castle.sql | 1 +
.../sql/game/castle_doorupgrade.sql | 1 +
.../sql/game/castle_functions.sql | 1 +
.../sql/game/castle_manor_procure.sql | 1 +
.../sql/game/castle_manor_production.sql | 1 +
.../sql/game/castle_siege_guards.sql | 0
.../sql/game/castle_trapupgrade.sql | 1 +
.../sql/game/character_contacts.sql | 1 +
.../sql/game/character_friends.sql | 1 +
.../sql/game/character_hennas.sql | 1 +
.../sql/game/character_instance_time.sql | 1 +
.../sql/game/character_item_reuse_save.sql | 1 +
.../sql/game/character_macroses.sql | 1 +
.../sql/game/character_mentees.sql | 1 +
.../sql/game/character_offline_trade.sql | 1 +
.../game/character_offline_trade_items.sql | 1 +
.../sql/game/character_pet_skills_save.sql | 1 +
.../sql/game/character_premium_items.sql | 1 +
.../sql/game/character_quest_global_data.sql | 1 +
.../sql/game/character_quests.sql | 1 +
.../sql/game/character_recipebook.sql | 1 +
.../sql/game/character_recipeshoplist.sql | 1 +
.../sql/game/character_reco_bonus.sql | 1 +
.../sql/game/character_shortcuts.sql | 1 +
.../sql/game/character_skills.sql | 1 +
.../sql/game/character_skills_save.sql | 1 +
.../sql/game/character_subclasses.sql | 1 +
.../sql/game/character_summon_skills_save.sql | 1 +
.../sql/game/character_summons.sql | 1 +
.../sql/game/character_tpbookmark.sql | 1 +
.../sql/game/character_ui_actions.sql | 1 +
.../sql/game/character_ui_categories.sql | 1 +
.../sql/game/character_variables.sql | 1 +
.../sql/game/characters.sql | 1 +
.../sql/game/clan_data.sql | 1 +
.../sql/game/clan_notices.sql | 1 +
.../sql/game/clan_privs.sql | 1 +
.../sql/game/clan_skills.sql | 1 +
.../sql/game/clan_subpledges.sql | 1 +
.../sql/game/clan_wars.sql | 1 +
.../sql/game/clanentry.sql | 3 +
.../sql/game/clanhall.sql | 1 +
.../sql/game/clanhall_functions.sql | 1 +
.../sql/game/clanhall_siege_attackers.sql | 1 +
.../sql/game/clanhall_siege_guards.sql | 0
.../sql/game/classic}/auction.sql | 1 +
.../sql/game}/classic/castle.sql | 1 +
.../sql/game}/classic/clanhall.sql | 1 +
.../sql/game}/classic/grandboss_data.sql | 1 +
.../sql/game}/classic/pets_skills.sql | 0
.../sql/game}/classic/raidboss_spawnlist.sql | 0
.../sql/game}/classic/random_spawn.sql | 0
.../sql/game}/classic/random_spawn_loc.sql | 0
.../sql/game}/classic/spawnlist.sql | 0
.../sql/game/commission_items.sql | 1 +
.../sql/game/crests.sql | 1 +
.../sql/game/cursed_weapons.sql | 1 +
.../sql/game/custom_npc_buffer.sql | 1 +
.../sql/game/custom_spawnlist.sql | 1 +
.../sql/game/custom_teleport.sql | 1 +
.../sql/game/fishing_championship.sql | 0
.../{tools => db_installer}/sql/game/fort.sql | 1 +
.../sql/game/fort_doorupgrade.sql | 1 +
.../sql/game/fort_functions.sql | 1 +
.../sql/game/fort_siege_guards.sql | 0
.../sql/game/fort_spawnlist.sql | 0
.../sql/game/fortsiege_clans.sql | 1 +
.../sql/game/forums.sql | 1 +
.../sql/game/four_sepulchers_spawnlist.sql | 0
.../sql/game/games.sql | 1 +
.../sql/game/global_tasks.sql | 1 +
.../sql/game/global_variables.sql | 1 +
.../sql/game/grandboss_data.sql | 1 +
.../sql/game/grandboss_list.sql | 1 +
.../sql/game/herb_droplist_groups.sql | 0
.../sql/game/heroes.sql | 1 +
.../sql/game/heroes_diary.sql | 1 +
.../sql/game/item_attributes.sql | 1 +
.../sql/game/item_auction.sql | 1 +
.../sql/game/item_auction_bid.sql | 1 +
.../sql/game/item_elementals.sql | 1 +
.../sql/game/item_variables.sql | 1 +
.../sql/game/items.sql | 1 +
.../sql/game/itemsonground.sql | 1 +
.../sql/game/locations.sql | 0
.../sql/game/merchant_lease.sql | 1 +
.../sql/game/messages.sql | 1 +
.../sql/game/mods_wedding.sql | 1 +
.../sql/game/npc_buffer.sql | 0
.../sql/game/olympiad_data.sql | 1 +
.../sql/game/olympiad_fights.sql | 1 +
.../sql/game/olympiad_nobles.sql | 1 +
.../sql/game/olympiad_nobles_eom.sql | 1 +
.../sql/game/petition_feedback.sql | 1 +
.../{tools => db_installer}/sql/game/pets.sql | 1 +
.../sql/game/pets_skills.sql | 0
.../sql/game/posts.sql | 1 +
.../sql/game/punishments.sql | 1 +
.../sql/game/quest_global_data.sql | 1 +
.../sql/game/raidboss_spawnlist.sql | 1 +
.../sql/game/rainbowsprings_attacker_list.sql | 1 +
.../sql/game/random_spawn.sql | 0
.../sql/game/random_spawn_loc.sql | 0
.../sql/game/siegable_clanhall.sql | 1 +
.../game/siegable_hall_flagwar_attackers.sql | 1 +
...iegable_hall_flagwar_attackers_members.sql | 1 +
.../sql/game/siege_clans.sql | 1 +
.../sql/game/spawnlist.sql | 0
.../sql/game/teleport.sql | 0
.../sql/game/topic.sql | 1 +
.../sql/login/account_data.sql | 1 +
.../sql/login/accounts.sql | 1 +
.../sql/login/accounts_ipauth.sql | 1 +
.../sql/login/gameservers.sql | 1 +
trunk/dist/tools/database_installer.bat | 93 ------
trunk/dist/tools/database_installer.sh | 270 ------------------
trunk/dist/tools/mysql.exe | Bin 1622016 -> 0 bytes
trunk/dist/tools/mysqldump.exe | Bin 1187840 -> 0 bytes
.../tools/dbinstaller/AbstractDBLauncher.java | 44 +++
.../tools/dbinstaller/DBOutputInterface.java | 43 +++
.../tools/dbinstaller/LauncherGS.java | 63 ++++
.../tools/dbinstaller/LauncherLS.java | 63 ++++
.../l2jserver/tools/dbinstaller/RunTasks.java | 83 ++++++
.../console/DBInstallerConsole.java | 171 +++++++++++
.../tools/dbinstaller/gui/DBConfigGUI.java | 175 ++++++++++++
.../tools/dbinstaller/gui/DBInstallerGUI.java | 122 ++++++++
.../tools/dbinstaller/images/ImagesTable.java | 45 +++
.../util/CloseShieldedInputStream.java | 148 ++++++++++
.../dbinstaller/util/FileWriterStdout.java | 49 ++++
.../dbinstaller/util/mysql/DBDumper.java | 216 ++++++++++++++
.../dbinstaller/util/mysql/MySqlConnect.java | 114 ++++++++
.../util/mysql/ScriptExecutor.java | 136 +++++++++
.../util/swing/SpringUtilities.java | 226 +++++++++++++++
147 files changed, 1837 insertions(+), 375 deletions(-)
create mode 100644 trunk/dist/db_installer/images/help.png
create mode 100644 trunk/dist/db_installer/images/l2j.png
rename trunk/dist/{tools => db_installer}/sql/game/account_gsdata.sql (83%)
rename trunk/dist/{tools => db_installer}/sql/game/account_premium.sql (100%)
rename trunk/dist/{tools => db_installer}/sql/game/airships.sql (85%)
rename trunk/dist/{tools => db_installer}/sql/game/announcements.sql (90%)
rename trunk/dist/{tools/sql/classic => db_installer/sql/game}/auction.sql (93%)
rename trunk/dist/{tools => db_installer}/sql/game/auction_bid.sql (89%)
rename trunk/dist/{tools => db_installer}/sql/game/auction_watch.sql (82%)
rename trunk/dist/{tools => db_installer}/sql/game/bbs_favorite.sql (90%)
rename trunk/dist/{tools => db_installer}/sql/game/bot_reported_char_data.sql (83%)
rename trunk/dist/{tools => db_installer}/sql/game/buylists.sql (89%)
rename trunk/dist/{tools => db_installer}/sql/game/castle.sql (94%)
rename trunk/dist/{tools => db_installer}/sql/game/castle_doorupgrade.sql (84%)
rename trunk/dist/{tools => db_installer}/sql/game/castle_functions.sql (88%)
rename trunk/dist/{tools => db_installer}/sql/game/castle_manor_procure.sql (90%)
rename trunk/dist/{tools => db_installer}/sql/game/castle_manor_production.sql (88%)
rename trunk/dist/{tools => db_installer}/sql/game/castle_siege_guards.sql (100%)
rename trunk/dist/{tools => db_installer}/sql/game/castle_trapupgrade.sql (85%)
rename trunk/dist/{tools => db_installer}/sql/game/character_contacts.sql (81%)
rename trunk/dist/{tools => db_installer}/sql/game/character_friends.sql (84%)
rename trunk/dist/{tools => db_installer}/sql/game/character_hennas.sql (84%)
rename trunk/dist/{tools => db_installer}/sql/game/character_instance_time.sql (83%)
rename trunk/dist/{tools => db_installer}/sql/game/character_item_reuse_save.sql (85%)
rename trunk/dist/{tools => db_installer}/sql/game/character_macroses.sql (85%)
rename trunk/dist/{tools => db_installer}/sql/game/character_mentees.sql (76%)
rename trunk/dist/{tools => db_installer}/sql/game/character_offline_trade.sql (83%)
rename trunk/dist/{tools => db_installer}/sql/game/character_offline_trade_items.sql (85%)
rename trunk/dist/{tools => db_installer}/sql/game/character_pet_skills_save.sql (87%)
rename trunk/dist/{tools => db_installer}/sql/game/character_premium_items.sql (85%)
rename trunk/dist/{tools => db_installer}/sql/game/character_quest_global_data.sql (80%)
rename trunk/dist/{tools => db_installer}/sql/game/character_quests.sql (87%)
rename trunk/dist/{tools => db_installer}/sql/game/character_recipebook.sql (84%)
rename trunk/dist/{tools => db_installer}/sql/game/character_recipeshoplist.sql (85%)
rename trunk/dist/{tools => db_installer}/sql/game/character_reco_bonus.sql (86%)
rename trunk/dist/{tools => db_installer}/sql/game/character_shortcuts.sql (90%)
rename trunk/dist/{tools => db_installer}/sql/game/character_skills.sql (88%)
rename trunk/dist/{tools => db_installer}/sql/game/character_skills_save.sql (92%)
rename trunk/dist/{tools => db_installer}/sql/game/character_subclasses.sql (89%)
rename trunk/dist/{tools => db_installer}/sql/game/character_summon_skills_save.sql (89%)
rename trunk/dist/{tools => db_installer}/sql/game/character_summons.sql (88%)
rename trunk/dist/{tools => db_installer}/sql/game/character_tpbookmark.sql (85%)
rename trunk/dist/{tools => db_installer}/sql/game/character_ui_actions.sql (87%)
rename trunk/dist/{tools => db_installer}/sql/game/character_ui_categories.sql (83%)
rename trunk/dist/{tools => db_installer}/sql/game/character_variables.sql (78%)
rename trunk/dist/{tools => db_installer}/sql/game/characters.sql (96%)
rename trunk/dist/{tools => db_installer}/sql/game/clan_data.sql (94%)
rename trunk/dist/{tools => db_installer}/sql/game/clan_notices.sql (84%)
rename trunk/dist/{tools => db_installer}/sql/game/clan_privs.sql (85%)
rename trunk/dist/{tools => db_installer}/sql/game/clan_skills.sql (88%)
rename trunk/dist/{tools => db_installer}/sql/game/clan_subpledges.sql (86%)
rename trunk/dist/{tools => db_installer}/sql/game/clan_wars.sql (88%)
rename trunk/dist/{tools => db_installer}/sql/game/clanentry.sql (86%)
rename trunk/dist/{tools => db_installer}/sql/game/clanhall.sql (98%)
rename trunk/dist/{tools => db_installer}/sql/game/clanhall_functions.sql (87%)
rename trunk/dist/{tools => db_installer}/sql/game/clanhall_siege_attackers.sql (77%)
rename trunk/dist/{tools => db_installer}/sql/game/clanhall_siege_guards.sql (100%)
rename trunk/dist/{tools/sql/game => db_installer/sql/game/classic}/auction.sql (93%)
rename trunk/dist/{tools/sql => db_installer/sql/game}/classic/castle.sql (95%)
rename trunk/dist/{tools/sql => db_installer/sql/game}/classic/clanhall.sql (98%)
rename trunk/dist/{tools/sql => db_installer/sql/game}/classic/grandboss_data.sql (94%)
rename trunk/dist/{tools/sql => db_installer/sql/game}/classic/pets_skills.sql (100%)
rename trunk/dist/{tools/sql => db_installer/sql/game}/classic/raidboss_spawnlist.sql (100%)
rename trunk/dist/{tools/sql => db_installer/sql/game}/classic/random_spawn.sql (100%)
rename trunk/dist/{tools/sql => db_installer/sql/game}/classic/random_spawn_loc.sql (100%)
rename trunk/dist/{tools/sql => db_installer/sql/game}/classic/spawnlist.sql (100%)
rename trunk/dist/{tools => db_installer}/sql/game/commission_items.sql (87%)
rename trunk/dist/{tools => db_installer}/sql/game/crests.sql (85%)
rename trunk/dist/{tools => db_installer}/sql/game/cursed_weapons.sql (87%)
rename trunk/dist/{tools => db_installer}/sql/game/custom_npc_buffer.sql (94%)
rename trunk/dist/{tools => db_installer}/sql/game/custom_spawnlist.sql (92%)
rename trunk/dist/{tools => db_installer}/sql/game/custom_teleport.sql (89%)
rename trunk/dist/{tools => db_installer}/sql/game/fishing_championship.sql (100%)
rename trunk/dist/{tools => db_installer}/sql/game/fort.sql (94%)
rename trunk/dist/{tools => db_installer}/sql/game/fort_doorupgrade.sql (85%)
rename trunk/dist/{tools => db_installer}/sql/game/fort_functions.sql (88%)
rename trunk/dist/{tools => db_installer}/sql/game/fort_siege_guards.sql (100%)
rename trunk/dist/{tools => db_installer}/sql/game/fort_spawnlist.sql (100%)
rename trunk/dist/{tools => db_installer}/sql/game/fortsiege_clans.sql (81%)
rename trunk/dist/{tools => db_installer}/sql/game/forums.sql (92%)
rename trunk/dist/{tools => db_installer}/sql/game/four_sepulchers_spawnlist.sql (100%)
rename trunk/dist/{tools => db_installer}/sql/game/games.sql (91%)
rename trunk/dist/{tools => db_installer}/sql/game/global_tasks.sql (90%)
rename trunk/dist/{tools => db_installer}/sql/game/global_variables.sql (79%)
rename trunk/dist/{tools => db_installer}/sql/game/grandboss_data.sql (96%)
rename trunk/dist/{tools => db_installer}/sql/game/grandboss_list.sql (81%)
rename trunk/dist/{tools => db_installer}/sql/game/herb_droplist_groups.sql (100%)
rename trunk/dist/{tools => db_installer}/sql/game/heroes.sql (90%)
rename trunk/dist/{tools => db_installer}/sql/game/heroes_diary.sql (87%)
rename trunk/dist/{tools => db_installer}/sql/game/item_attributes.sql (81%)
rename trunk/dist/{tools => db_installer}/sql/game/item_auction.sql (88%)
rename trunk/dist/{tools => db_installer}/sql/game/item_auction_bid.sql (82%)
rename trunk/dist/{tools => db_installer}/sql/game/item_elementals.sql (84%)
rename trunk/dist/{tools => db_installer}/sql/game/item_variables.sql (80%)
rename trunk/dist/{tools => db_installer}/sql/game/items.sql (94%)
rename trunk/dist/{tools => db_installer}/sql/game/itemsonground.sql (89%)
rename trunk/dist/{tools => db_installer}/sql/game/locations.sql (100%)
rename trunk/dist/{tools => db_installer}/sql/game/merchant_lease.sql (86%)
rename trunk/dist/{tools => db_installer}/sql/game/messages.sql (94%)
rename trunk/dist/{tools => db_installer}/sql/game/mods_wedding.sql (89%)
rename trunk/dist/{tools => db_installer}/sql/game/npc_buffer.sql (100%)
rename trunk/dist/{tools => db_installer}/sql/game/olympiad_data.sql (90%)
rename trunk/dist/{tools => db_installer}/sql/game/olympiad_fights.sql (91%)
rename trunk/dist/{tools => db_installer}/sql/game/olympiad_nobles.sql (93%)
rename trunk/dist/{tools => db_installer}/sql/game/olympiad_nobles_eom.sql (90%)
rename trunk/dist/{tools => db_installer}/sql/game/petition_feedback.sql (84%)
rename trunk/dist/{tools => db_installer}/sql/game/pets.sql (92%)
rename trunk/dist/{tools => db_installer}/sql/game/pets_skills.sql (100%)
rename trunk/dist/{tools => db_installer}/sql/game/posts.sql (91%)
rename trunk/dist/{tools => db_installer}/sql/game/punishments.sql (90%)
rename trunk/dist/{tools => db_installer}/sql/game/quest_global_data.sql (91%)
rename trunk/dist/{tools => db_installer}/sql/game/raidboss_spawnlist.sql (98%)
rename trunk/dist/{tools => db_installer}/sql/game/rainbowsprings_attacker_list.sql (77%)
rename trunk/dist/{tools => db_installer}/sql/game/random_spawn.sql (100%)
rename trunk/dist/{tools => db_installer}/sql/game/random_spawn_loc.sql (100%)
rename trunk/dist/{tools => db_installer}/sql/game/siegable_clanhall.sql (95%)
rename trunk/dist/{tools => db_installer}/sql/game/siegable_hall_flagwar_attackers.sql (85%)
rename trunk/dist/{tools => db_installer}/sql/game/siegable_hall_flagwar_attackers_members.sql (83%)
rename trunk/dist/{tools => db_installer}/sql/game/siege_clans.sql (86%)
rename trunk/dist/{tools => db_installer}/sql/game/spawnlist.sql (100%)
rename trunk/dist/{tools => db_installer}/sql/game/teleport.sql (100%)
rename trunk/dist/{tools => db_installer}/sql/game/topic.sql (92%)
rename trunk/dist/{tools => db_installer}/sql/login/account_data.sql (84%)
rename trunk/dist/{tools => db_installer}/sql/login/accounts.sql (92%)
rename trunk/dist/{tools => db_installer}/sql/login/accounts_ipauth.sql (81%)
rename trunk/dist/{tools => db_installer}/sql/login/gameservers.sql (87%)
delete mode 100644 trunk/dist/tools/database_installer.bat
delete mode 100644 trunk/dist/tools/database_installer.sh
delete mode 100644 trunk/dist/tools/mysql.exe
delete mode 100644 trunk/dist/tools/mysqldump.exe
create mode 100644 trunk/java/com/l2jserver/tools/dbinstaller/AbstractDBLauncher.java
create mode 100644 trunk/java/com/l2jserver/tools/dbinstaller/DBOutputInterface.java
create mode 100644 trunk/java/com/l2jserver/tools/dbinstaller/LauncherGS.java
create mode 100644 trunk/java/com/l2jserver/tools/dbinstaller/LauncherLS.java
create mode 100644 trunk/java/com/l2jserver/tools/dbinstaller/RunTasks.java
create mode 100644 trunk/java/com/l2jserver/tools/dbinstaller/console/DBInstallerConsole.java
create mode 100644 trunk/java/com/l2jserver/tools/dbinstaller/gui/DBConfigGUI.java
create mode 100644 trunk/java/com/l2jserver/tools/dbinstaller/gui/DBInstallerGUI.java
create mode 100644 trunk/java/com/l2jserver/tools/dbinstaller/images/ImagesTable.java
create mode 100644 trunk/java/com/l2jserver/tools/dbinstaller/util/CloseShieldedInputStream.java
create mode 100644 trunk/java/com/l2jserver/tools/dbinstaller/util/FileWriterStdout.java
create mode 100644 trunk/java/com/l2jserver/tools/dbinstaller/util/mysql/DBDumper.java
create mode 100644 trunk/java/com/l2jserver/tools/dbinstaller/util/mysql/MySqlConnect.java
create mode 100644 trunk/java/com/l2jserver/tools/dbinstaller/util/mysql/ScriptExecutor.java
create mode 100644 trunk/java/com/l2jserver/tools/dbinstaller/util/swing/SpringUtilities.java
diff --git a/trunk/.settings/org.eclipse.jdt.core.prefs b/trunk/.settings/org.eclipse.jdt.core.prefs
index de0a433b36..7b961756cb 100644
--- a/trunk/.settings/org.eclipse.jdt.core.prefs
+++ b/trunk/.settings/org.eclipse.jdt.core.prefs
@@ -15,17 +15,8 @@ org.eclipse.jdt.core.compiler.annotation.nonnull=org.eclipse.jdt.annotation.NonN
org.eclipse.jdt.core.compiler.annotation.nonnullbydefault=org.eclipse.jdt.annotation.NonNullByDefault
org.eclipse.jdt.core.compiler.annotation.nullable=org.eclipse.jdt.annotation.Nullable
org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled
-org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
-org.eclipse.jdt.core.compiler.codegen.methodParameters=do not generate
-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
-org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
-org.eclipse.jdt.core.compiler.compliance=1.8
-org.eclipse.jdt.core.compiler.debug.lineNumber=generate
-org.eclipse.jdt.core.compiler.debug.localVariable=generate
-org.eclipse.jdt.core.compiler.debug.sourceFile=generate
org.eclipse.jdt.core.compiler.doc.comment.support=enabled
org.eclipse.jdt.core.compiler.problem.annotationSuperInterface=warning
-org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
org.eclipse.jdt.core.compiler.problem.autoboxing=ignore
org.eclipse.jdt.core.compiler.problem.comparingIdentical=warning
org.eclipse.jdt.core.compiler.problem.deadCode=warning
@@ -34,7 +25,6 @@ org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=disabled
org.eclipse.jdt.core.compiler.problem.discouragedReference=warning
org.eclipse.jdt.core.compiler.problem.emptyStatement=warning
-org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
org.eclipse.jdt.core.compiler.problem.explicitlyClosedAutoCloseable=ignore
org.eclipse.jdt.core.compiler.problem.fallthroughCase=ignore
org.eclipse.jdt.core.compiler.problem.fatalOptionalError=disabled
@@ -121,7 +111,6 @@ org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=warning
org.eclipse.jdt.core.compiler.problem.unusedTypeParameter=ignore
org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
-org.eclipse.jdt.core.compiler.source=1.8
org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=0
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation=0
diff --git a/trunk/build.xml b/trunk/build.xml
index 1e0f85ec08..c5cedd0f52 100644
--- a/trunk/build.xml
+++ b/trunk/build.xml
@@ -28,7 +28,7 @@
-
+
@@ -110,6 +110,38 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/trunk/dist/db_installer/images/help.png b/trunk/dist/db_installer/images/help.png
new file mode 100644
index 0000000000000000000000000000000000000000..5c870176d4dea68aab9e51166cc3d7a582f326d6
GIT binary patch
literal 786
zcmV+t1MU2YP)$XgYMs^AIOw1Qr{*Wn)N-{9ma}x2(<~`9Go1=*>YR!KZvrBS
zCd!u}@M0og%Ev@_;Z?Kk>Wwv=%h_57zmt2<_1msz_niYE=YRNPpd%02TK9oK1z
z>ooPno}v^sikz_|1XHFx_L%~;ljh7i(jiay5F0x*+(9aXXFCl?AdQj5XlQ65%sEv+
ztfe?|YcjPN*@yYtE~ImQh{l|#A6Z8iu>pf43Rj52CzU_dMQm|S2xR62YjQOn+z8WH
zaK=!}ggOZi{4pB7SQ=xC0n|vXP_Bkx_a)FeNd}w8U97BNbSWxa^QW-li9BZ#M1!_xE*?wzt^GcoeoL*JGLSe_+l-JT2#2tz!z&^
z_s5anq&^nBklIMwRvcoP3%qs%%Ea?1c{_*V*Xj&~uLu-2Dp1fUN4<0zMo$EH>*U83
zm_9;Vt%-bE{_J_!If!1y=c+`QVZ>0_BPy
z+%^pgnv`f8H)Z%0&Tp8&u*MCIC4igNW5MeWM_DHpDNi)Zxz|9XboOnitwFq$ETN=X
zj-tkCJnz**Y4k#6_Ty^B=hWo~L!47r`HoP=x&3T1)JLr2t2+#fH31dO1Kg=kC>5Q3yqSpqgfIvf9hjlah#g^*U%(#|BTNh1aeF>1g{
zA!#(;y?5`G?7j0^oVZDJMJ*&xb7jUm)PpdKZAf
zmp!87NDhEYpp>Nc!0hui-rQIq+CDSg4c^^cz=8LjPKpmAmSqVv0HpIFujc2GJNqF3
zP-O+UnA?1rd;wy=D1g*Kzvz#AuVBdhY9i#KXL2RN1mR)z#!Y9
zJ$VLX!&p~C?BzMKG(uMNj*0Jl&3HU@j@l~}#;J}J$ci2z7_ll#Fdqtj@L;?R!0pew
zL)&t@g%kn!R#r4}Y>6On#4jr_g2-JBcryJtRs)G^@VghIg$+GnG
o2K|O$MqeTVW^hk`(e!`kI~cCB=}h`YUH||907*qoM6N<$f{y9MS^xk5
literal 0
HcmV?d00001
diff --git a/trunk/dist/tools/sql/game/account_gsdata.sql b/trunk/dist/db_installer/sql/game/account_gsdata.sql
similarity index 83%
rename from trunk/dist/tools/sql/game/account_gsdata.sql
rename to trunk/dist/db_installer/sql/game/account_gsdata.sql
index a5b1895e7a..f1feb947f5 100644
--- a/trunk/dist/tools/sql/game/account_gsdata.sql
+++ b/trunk/dist/db_installer/sql/game/account_gsdata.sql
@@ -1,3 +1,4 @@
+DROP TABLE IF EXISTS `account_gsdata`;
CREATE TABLE IF NOT EXISTS `account_gsdata` (
`account_name` VARCHAR(45) NOT NULL DEFAULT '',
`var` VARCHAR(255) NOT NULL DEFAULT '',
diff --git a/trunk/dist/tools/sql/game/account_premium.sql b/trunk/dist/db_installer/sql/game/account_premium.sql
similarity index 100%
rename from trunk/dist/tools/sql/game/account_premium.sql
rename to trunk/dist/db_installer/sql/game/account_premium.sql
diff --git a/trunk/dist/tools/sql/game/airships.sql b/trunk/dist/db_installer/sql/game/airships.sql
similarity index 85%
rename from trunk/dist/tools/sql/game/airships.sql
rename to trunk/dist/db_installer/sql/game/airships.sql
index 44d7d54284..f52d650a54 100644
--- a/trunk/dist/tools/sql/game/airships.sql
+++ b/trunk/dist/db_installer/sql/game/airships.sql
@@ -1,3 +1,4 @@
+DROP TABLE IF EXISTS `airships`;
CREATE TABLE IF NOT EXISTS `airships` (
`owner_id` INT, -- object id of the player or clan, owner of this airship
`fuel` decimal(5,0) NOT NULL DEFAULT 600,
diff --git a/trunk/dist/tools/sql/game/announcements.sql b/trunk/dist/db_installer/sql/game/announcements.sql
similarity index 90%
rename from trunk/dist/tools/sql/game/announcements.sql
rename to trunk/dist/db_installer/sql/game/announcements.sql
index f87fd4772a..abbd92b886 100644
--- a/trunk/dist/tools/sql/game/announcements.sql
+++ b/trunk/dist/db_installer/sql/game/announcements.sql
@@ -1,3 +1,4 @@
+DROP TABLE IF EXISTS `announcements`;
CREATE TABLE IF NOT EXISTS `announcements` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`type` int(11) NOT NULL,
diff --git a/trunk/dist/tools/sql/classic/auction.sql b/trunk/dist/db_installer/sql/game/auction.sql
similarity index 93%
rename from trunk/dist/tools/sql/classic/auction.sql
rename to trunk/dist/db_installer/sql/game/auction.sql
index 0b6c2751d2..cb1a05ab68 100644
--- a/trunk/dist/tools/sql/classic/auction.sql
+++ b/trunk/dist/db_installer/sql/game/auction.sql
@@ -1,3 +1,4 @@
+DROP TABLE IF EXISTS `auction`;
CREATE TABLE IF NOT EXISTS `auction` (
`id` int(11) NOT NULL DEFAULT '0',
`sellerId` int(11) NOT NULL DEFAULT '0',
diff --git a/trunk/dist/tools/sql/game/auction_bid.sql b/trunk/dist/db_installer/sql/game/auction_bid.sql
similarity index 89%
rename from trunk/dist/tools/sql/game/auction_bid.sql
rename to trunk/dist/db_installer/sql/game/auction_bid.sql
index 828a1a9ba4..c084d3e3af 100644
--- a/trunk/dist/tools/sql/game/auction_bid.sql
+++ b/trunk/dist/db_installer/sql/game/auction_bid.sql
@@ -1,3 +1,4 @@
+DROP TABLE IF EXISTS `auction_bid`;
CREATE TABLE IF NOT EXISTS `auction_bid` (
`id` INT NOT NULL DEFAULT 0,
`auctionId` INT NOT NULL DEFAULT 0,
diff --git a/trunk/dist/tools/sql/game/auction_watch.sql b/trunk/dist/db_installer/sql/game/auction_watch.sql
similarity index 82%
rename from trunk/dist/tools/sql/game/auction_watch.sql
rename to trunk/dist/db_installer/sql/game/auction_watch.sql
index 57619ccaf3..fce297db3c 100644
--- a/trunk/dist/tools/sql/game/auction_watch.sql
+++ b/trunk/dist/db_installer/sql/game/auction_watch.sql
@@ -1,3 +1,4 @@
+DROP TABLE IF EXISTS `auction_watch`;
CREATE TABLE IF NOT EXISTS `auction_watch` (
`charObjId` INT NOT NULL DEFAULT 0,
`auctionId` INT NOT NULL DEFAULT 0,
diff --git a/trunk/dist/tools/sql/game/bbs_favorite.sql b/trunk/dist/db_installer/sql/game/bbs_favorite.sql
similarity index 90%
rename from trunk/dist/tools/sql/game/bbs_favorite.sql
rename to trunk/dist/db_installer/sql/game/bbs_favorite.sql
index ac3e587a2d..8e6fe0d258 100644
--- a/trunk/dist/tools/sql/game/bbs_favorite.sql
+++ b/trunk/dist/db_installer/sql/game/bbs_favorite.sql
@@ -1,3 +1,4 @@
+DROP TABLE IF EXISTS `bbs_favorites`;
CREATE TABLE IF NOT EXISTS `bbs_favorites` (
`favId` INT UNSIGNED NOT NULL AUTO_INCREMENT,
`playerId` INT UNSIGNED NOT NULL,
diff --git a/trunk/dist/tools/sql/game/bot_reported_char_data.sql b/trunk/dist/db_installer/sql/game/bot_reported_char_data.sql
similarity index 83%
rename from trunk/dist/tools/sql/game/bot_reported_char_data.sql
rename to trunk/dist/db_installer/sql/game/bot_reported_char_data.sql
index f6db4d65cc..8632e578ec 100644
--- a/trunk/dist/tools/sql/game/bot_reported_char_data.sql
+++ b/trunk/dist/db_installer/sql/game/bot_reported_char_data.sql
@@ -1,3 +1,4 @@
+DROP TABLE IF EXISTS `bot_reported_char_data`;
CREATE TABLE IF NOT EXISTS `bot_reported_char_data` (
`botId` INT UNSIGNED NOT NULL DEFAULT 0,
`reporterId` INT UNSIGNED NOT NULL DEFAULT 0,
diff --git a/trunk/dist/tools/sql/game/buylists.sql b/trunk/dist/db_installer/sql/game/buylists.sql
similarity index 89%
rename from trunk/dist/tools/sql/game/buylists.sql
rename to trunk/dist/db_installer/sql/game/buylists.sql
index af679454ca..b95ce7278a 100644
--- a/trunk/dist/tools/sql/game/buylists.sql
+++ b/trunk/dist/db_installer/sql/game/buylists.sql
@@ -1,3 +1,4 @@
+DROP TABLE IF EXISTS `buylists`;
CREATE TABLE IF NOT EXISTS `buylists` (
`buylist_id` INT UNSIGNED,
`item_id` INT UNSIGNED,
diff --git a/trunk/dist/tools/sql/game/castle.sql b/trunk/dist/db_installer/sql/game/castle.sql
similarity index 94%
rename from trunk/dist/tools/sql/game/castle.sql
rename to trunk/dist/db_installer/sql/game/castle.sql
index 755d660e00..2389565b6c 100644
--- a/trunk/dist/tools/sql/game/castle.sql
+++ b/trunk/dist/db_installer/sql/game/castle.sql
@@ -1,3 +1,4 @@
+DROP TABLE IF EXISTS `castle`;
CREATE TABLE IF NOT EXISTS `castle` (
`id` INT NOT NULL DEFAULT 0,
`name` varchar(25) NOT NULL,
diff --git a/trunk/dist/tools/sql/game/castle_doorupgrade.sql b/trunk/dist/db_installer/sql/game/castle_doorupgrade.sql
similarity index 84%
rename from trunk/dist/tools/sql/game/castle_doorupgrade.sql
rename to trunk/dist/db_installer/sql/game/castle_doorupgrade.sql
index 0c3dd7feeb..282ac7a260 100644
--- a/trunk/dist/tools/sql/game/castle_doorupgrade.sql
+++ b/trunk/dist/db_installer/sql/game/castle_doorupgrade.sql
@@ -1,3 +1,4 @@
+DROP TABLE IF EXISTS `castle_doorupgrade`;
CREATE TABLE IF NOT EXISTS `castle_doorupgrade` (
`doorId` int(8) unsigned NOT NULL DEFAULT '0',
`ratio` tinyint(3) unsigned NOT NULL DEFAULT '0',
diff --git a/trunk/dist/tools/sql/game/castle_functions.sql b/trunk/dist/db_installer/sql/game/castle_functions.sql
similarity index 88%
rename from trunk/dist/tools/sql/game/castle_functions.sql
rename to trunk/dist/db_installer/sql/game/castle_functions.sql
index 9d2e56eb18..99f38f78bc 100644
--- a/trunk/dist/tools/sql/game/castle_functions.sql
+++ b/trunk/dist/db_installer/sql/game/castle_functions.sql
@@ -1,3 +1,4 @@
+DROP TABLE IF EXISTS `castle_functions`;
CREATE TABLE IF NOT EXISTS `castle_functions` (
`castle_id` int(2) NOT NULL DEFAULT '0',
`type` int(1) NOT NULL DEFAULT '0',
diff --git a/trunk/dist/tools/sql/game/castle_manor_procure.sql b/trunk/dist/db_installer/sql/game/castle_manor_procure.sql
similarity index 90%
rename from trunk/dist/tools/sql/game/castle_manor_procure.sql
rename to trunk/dist/db_installer/sql/game/castle_manor_procure.sql
index f158bf03a5..506aac1c9f 100644
--- a/trunk/dist/tools/sql/game/castle_manor_procure.sql
+++ b/trunk/dist/db_installer/sql/game/castle_manor_procure.sql
@@ -1,3 +1,4 @@
+DROP TABLE IF EXISTS `castle_manor_procure`;
CREATE TABLE IF NOT EXISTS `castle_manor_procure` (
`castle_id` TINYINT(3) UNSIGNED NOT NULL DEFAULT '0',
`crop_id` INT(11) UNSIGNED NOT NULL DEFAULT '0',
diff --git a/trunk/dist/tools/sql/game/castle_manor_production.sql b/trunk/dist/db_installer/sql/game/castle_manor_production.sql
similarity index 88%
rename from trunk/dist/tools/sql/game/castle_manor_production.sql
rename to trunk/dist/db_installer/sql/game/castle_manor_production.sql
index 7ccdbf827c..0235dee668 100644
--- a/trunk/dist/tools/sql/game/castle_manor_production.sql
+++ b/trunk/dist/db_installer/sql/game/castle_manor_production.sql
@@ -1,3 +1,4 @@
+DROP TABLE IF EXISTS `castle_manor_production`;
CREATE TABLE IF NOT EXISTS `castle_manor_production` (
`castle_id` TINYINT(3) UNSIGNED NOT NULL DEFAULT '0',
`seed_id` INT(11) UNSIGNED NOT NULL DEFAULT '0',
diff --git a/trunk/dist/tools/sql/game/castle_siege_guards.sql b/trunk/dist/db_installer/sql/game/castle_siege_guards.sql
similarity index 100%
rename from trunk/dist/tools/sql/game/castle_siege_guards.sql
rename to trunk/dist/db_installer/sql/game/castle_siege_guards.sql
diff --git a/trunk/dist/tools/sql/game/castle_trapupgrade.sql b/trunk/dist/db_installer/sql/game/castle_trapupgrade.sql
similarity index 85%
rename from trunk/dist/tools/sql/game/castle_trapupgrade.sql
rename to trunk/dist/db_installer/sql/game/castle_trapupgrade.sql
index 9ae87a50c9..9724333a61 100644
--- a/trunk/dist/tools/sql/game/castle_trapupgrade.sql
+++ b/trunk/dist/db_installer/sql/game/castle_trapupgrade.sql
@@ -1,3 +1,4 @@
+DROP TABLE IF EXISTS `castle_trapupgrade`;
CREATE TABLE IF NOT EXISTS `castle_trapupgrade` (
`castleId` tinyint(3) unsigned NOT NULL DEFAULT '0',
`towerIndex` tinyint(3) unsigned NOT NULL DEFAULT '0',
diff --git a/trunk/dist/tools/sql/game/character_contacts.sql b/trunk/dist/db_installer/sql/game/character_contacts.sql
similarity index 81%
rename from trunk/dist/tools/sql/game/character_contacts.sql
rename to trunk/dist/db_installer/sql/game/character_contacts.sql
index a03a989924..d29d284c07 100644
--- a/trunk/dist/tools/sql/game/character_contacts.sql
+++ b/trunk/dist/db_installer/sql/game/character_contacts.sql
@@ -1,3 +1,4 @@
+DROP TABLE IF EXISTS `character_contacts`;
CREATE TABLE IF NOT EXISTS `character_contacts` (
charId INT UNSIGNED NOT NULL DEFAULT 0,
contactId INT UNSIGNED NOT NULL DEFAULT 0,
diff --git a/trunk/dist/tools/sql/game/character_friends.sql b/trunk/dist/db_installer/sql/game/character_friends.sql
similarity index 84%
rename from trunk/dist/tools/sql/game/character_friends.sql
rename to trunk/dist/db_installer/sql/game/character_friends.sql
index d79f6bc720..40e33838e7 100644
--- a/trunk/dist/tools/sql/game/character_friends.sql
+++ b/trunk/dist/db_installer/sql/game/character_friends.sql
@@ -1,3 +1,4 @@
+DROP TABLE IF EXISTS `character_friends`;
CREATE TABLE IF NOT EXISTS `character_friends` (
`charId` INT UNSIGNED NOT NULL DEFAULT 0,
`friendId` INT UNSIGNED NOT NULL DEFAULT 0,
diff --git a/trunk/dist/tools/sql/game/character_hennas.sql b/trunk/dist/db_installer/sql/game/character_hennas.sql
similarity index 84%
rename from trunk/dist/tools/sql/game/character_hennas.sql
rename to trunk/dist/db_installer/sql/game/character_hennas.sql
index 71babee3e7..0a2ccc9297 100644
--- a/trunk/dist/tools/sql/game/character_hennas.sql
+++ b/trunk/dist/db_installer/sql/game/character_hennas.sql
@@ -1,3 +1,4 @@
+DROP TABLE IF EXISTS `character_hennas`;
CREATE TABLE IF NOT EXISTS `character_hennas` (
`charId` INT UNSIGNED NOT NULL DEFAULT 0,
`symbol_id` INT,
diff --git a/trunk/dist/tools/sql/game/character_instance_time.sql b/trunk/dist/db_installer/sql/game/character_instance_time.sql
similarity index 83%
rename from trunk/dist/tools/sql/game/character_instance_time.sql
rename to trunk/dist/db_installer/sql/game/character_instance_time.sql
index 85a10e27d2..fffd5672bc 100644
--- a/trunk/dist/tools/sql/game/character_instance_time.sql
+++ b/trunk/dist/db_installer/sql/game/character_instance_time.sql
@@ -1,3 +1,4 @@
+DROP TABLE IF EXISTS `character_instance_time`;
CREATE TABLE IF NOT EXISTS `character_instance_time` (
`charId` INT UNSIGNED NOT NULL DEFAULT '0',
`instanceId` int(3) NOT NULL DEFAULT '0',
diff --git a/trunk/dist/tools/sql/game/character_item_reuse_save.sql b/trunk/dist/db_installer/sql/game/character_item_reuse_save.sql
similarity index 85%
rename from trunk/dist/tools/sql/game/character_item_reuse_save.sql
rename to trunk/dist/db_installer/sql/game/character_item_reuse_save.sql
index eae3364bb9..2a2afb4dd0 100644
--- a/trunk/dist/tools/sql/game/character_item_reuse_save.sql
+++ b/trunk/dist/db_installer/sql/game/character_item_reuse_save.sql
@@ -1,3 +1,4 @@
+DROP TABLE IF EXISTS `character_item_reuse_save`;
CREATE TABLE IF NOT EXISTS `character_item_reuse_save` (
`charId` INT NOT NULL DEFAULT 0,
`itemId` INT NOT NULL DEFAULT 0,
diff --git a/trunk/dist/tools/sql/game/character_macroses.sql b/trunk/dist/db_installer/sql/game/character_macroses.sql
similarity index 85%
rename from trunk/dist/tools/sql/game/character_macroses.sql
rename to trunk/dist/db_installer/sql/game/character_macroses.sql
index 0dd982ecfa..ad9c508e72 100644
--- a/trunk/dist/tools/sql/game/character_macroses.sql
+++ b/trunk/dist/db_installer/sql/game/character_macroses.sql
@@ -1,3 +1,4 @@
+DROP TABLE IF EXISTS `character_macroses`;
CREATE TABLE IF NOT EXISTS `character_macroses` (
`charId` INT UNSIGNED NOT NULL DEFAULT 0,
`id` INT NOT NULL DEFAULT 0,
diff --git a/trunk/dist/tools/sql/game/character_mentees.sql b/trunk/dist/db_installer/sql/game/character_mentees.sql
similarity index 76%
rename from trunk/dist/tools/sql/game/character_mentees.sql
rename to trunk/dist/db_installer/sql/game/character_mentees.sql
index ad94c0984a..8bb93f27a3 100644
--- a/trunk/dist/tools/sql/game/character_mentees.sql
+++ b/trunk/dist/db_installer/sql/game/character_mentees.sql
@@ -1,3 +1,4 @@
+DROP TABLE IF EXISTS `character_mentees`;
CREATE TABLE IF NOT EXISTS `character_mentees` (
`charId` int(10) unsigned NOT NULL DEFAULT '0',
`mentorId` int(10) unsigned NOT NULL DEFAULT '0'
diff --git a/trunk/dist/tools/sql/game/character_offline_trade.sql b/trunk/dist/db_installer/sql/game/character_offline_trade.sql
similarity index 83%
rename from trunk/dist/tools/sql/game/character_offline_trade.sql
rename to trunk/dist/db_installer/sql/game/character_offline_trade.sql
index 35ac445a98..4f40b27c23 100644
--- a/trunk/dist/tools/sql/game/character_offline_trade.sql
+++ b/trunk/dist/db_installer/sql/game/character_offline_trade.sql
@@ -1,3 +1,4 @@
+DROP TABLE IF EXISTS `character_offline_trade`;
CREATE TABLE IF NOT EXISTS `character_offline_trade` (
`charId` int(10) unsigned NOT NULL,
`time` bigint(13) unsigned NOT NULL DEFAULT '0',
diff --git a/trunk/dist/tools/sql/game/character_offline_trade_items.sql b/trunk/dist/db_installer/sql/game/character_offline_trade_items.sql
similarity index 85%
rename from trunk/dist/tools/sql/game/character_offline_trade_items.sql
rename to trunk/dist/db_installer/sql/game/character_offline_trade_items.sql
index c25e3ebb99..4ffc434d56 100644
--- a/trunk/dist/tools/sql/game/character_offline_trade_items.sql
+++ b/trunk/dist/db_installer/sql/game/character_offline_trade_items.sql
@@ -1,3 +1,4 @@
+DROP TABLE IF EXISTS `character_offline_trade_items`;
CREATE TABLE IF NOT EXISTS `character_offline_trade_items` (
`charId` int(10) unsigned NOT NULL,
`item` int(10) unsigned NOT NULL DEFAULT '0', -- itemId(for buy) & ObjectId(for sell)
diff --git a/trunk/dist/tools/sql/game/character_pet_skills_save.sql b/trunk/dist/db_installer/sql/game/character_pet_skills_save.sql
similarity index 87%
rename from trunk/dist/tools/sql/game/character_pet_skills_save.sql
rename to trunk/dist/db_installer/sql/game/character_pet_skills_save.sql
index fe0e74836f..e88b3a61c3 100644
--- a/trunk/dist/tools/sql/game/character_pet_skills_save.sql
+++ b/trunk/dist/db_installer/sql/game/character_pet_skills_save.sql
@@ -1,3 +1,4 @@
+DROP TABLE IF EXISTS `character_pet_skills_save`;
CREATE TABLE IF NOT EXISTS `character_pet_skills_save` (
`petObjItemId` INT NOT NULL DEFAULT 0,
`skill_id` INT NOT NULL DEFAULT 0,
diff --git a/trunk/dist/tools/sql/game/character_premium_items.sql b/trunk/dist/db_installer/sql/game/character_premium_items.sql
similarity index 85%
rename from trunk/dist/tools/sql/game/character_premium_items.sql
rename to trunk/dist/db_installer/sql/game/character_premium_items.sql
index 10871c4355..de92ffc0c5 100644
--- a/trunk/dist/tools/sql/game/character_premium_items.sql
+++ b/trunk/dist/db_installer/sql/game/character_premium_items.sql
@@ -1,3 +1,4 @@
+DROP TABLE IF EXISTS `character_premium_items`;
CREATE TABLE IF NOT EXISTS `character_premium_items` (
`charId` int(11) NOT NULL,
`itemNum` int(11) NOT NULL,
diff --git a/trunk/dist/tools/sql/game/character_quest_global_data.sql b/trunk/dist/db_installer/sql/game/character_quest_global_data.sql
similarity index 80%
rename from trunk/dist/tools/sql/game/character_quest_global_data.sql
rename to trunk/dist/db_installer/sql/game/character_quest_global_data.sql
index e5f42c5970..54db700b4d 100644
--- a/trunk/dist/tools/sql/game/character_quest_global_data.sql
+++ b/trunk/dist/db_installer/sql/game/character_quest_global_data.sql
@@ -1,3 +1,4 @@
+DROP TABLE IF EXISTS `character_quest_global_data`;
CREATE TABLE IF NOT EXISTS `character_quest_global_data` (
`charId` INT UNSIGNED NOT NULL DEFAULT 0,
`var` VARCHAR(20) NOT NULL DEFAULT '',
diff --git a/trunk/dist/tools/sql/game/character_quests.sql b/trunk/dist/db_installer/sql/game/character_quests.sql
similarity index 87%
rename from trunk/dist/tools/sql/game/character_quests.sql
rename to trunk/dist/db_installer/sql/game/character_quests.sql
index a6425cb284..19dc8ebae2 100644
--- a/trunk/dist/tools/sql/game/character_quests.sql
+++ b/trunk/dist/db_installer/sql/game/character_quests.sql
@@ -1,3 +1,4 @@
+DROP TABLE IF EXISTS `character_quests`;
CREATE TABLE IF NOT EXISTS `character_quests` (
`charId` INT UNSIGNED NOT NULL DEFAULT 0,
`name` VARCHAR(60) NOT NULL DEFAULT '',
diff --git a/trunk/dist/tools/sql/game/character_recipebook.sql b/trunk/dist/db_installer/sql/game/character_recipebook.sql
similarity index 84%
rename from trunk/dist/tools/sql/game/character_recipebook.sql
rename to trunk/dist/db_installer/sql/game/character_recipebook.sql
index f1cbac43d5..391441d601 100644
--- a/trunk/dist/tools/sql/game/character_recipebook.sql
+++ b/trunk/dist/db_installer/sql/game/character_recipebook.sql
@@ -1,3 +1,4 @@
+DROP TABLE IF EXISTS `character_recipebook`;
CREATE TABLE IF NOT EXISTS `character_recipebook` (
`charId` INT UNSIGNED NOT NULL DEFAULT 0,
`id` decimal(11) NOT NULL DEFAULT 0,
diff --git a/trunk/dist/tools/sql/game/character_recipeshoplist.sql b/trunk/dist/db_installer/sql/game/character_recipeshoplist.sql
similarity index 85%
rename from trunk/dist/tools/sql/game/character_recipeshoplist.sql
rename to trunk/dist/db_installer/sql/game/character_recipeshoplist.sql
index ca911240a1..f578195e5f 100644
--- a/trunk/dist/tools/sql/game/character_recipeshoplist.sql
+++ b/trunk/dist/db_installer/sql/game/character_recipeshoplist.sql
@@ -1,3 +1,4 @@
+DROP TABLE IF EXISTS `character_recipeshoplist`;
CREATE TABLE IF NOT EXISTS `character_recipeshoplist` (
`charId` int(10) unsigned NOT NULL DEFAULT 0,
`recipeId` int(11) UNSIGNED NOT NULL DEFAULT 0,
diff --git a/trunk/dist/tools/sql/game/character_reco_bonus.sql b/trunk/dist/db_installer/sql/game/character_reco_bonus.sql
similarity index 86%
rename from trunk/dist/tools/sql/game/character_reco_bonus.sql
rename to trunk/dist/db_installer/sql/game/character_reco_bonus.sql
index 6ab766918e..58e5b8b1c0 100644
--- a/trunk/dist/tools/sql/game/character_reco_bonus.sql
+++ b/trunk/dist/db_installer/sql/game/character_reco_bonus.sql
@@ -1,3 +1,4 @@
+DROP TABLE IF EXISTS `character_reco_bonus`;
CREATE TABLE IF NOT EXISTS `character_reco_bonus` (
`charId` int(10) unsigned NOT NULL,
`rec_have` tinyint(3) unsigned NOT NULL DEFAULT '0',
diff --git a/trunk/dist/tools/sql/game/character_shortcuts.sql b/trunk/dist/db_installer/sql/game/character_shortcuts.sql
similarity index 90%
rename from trunk/dist/tools/sql/game/character_shortcuts.sql
rename to trunk/dist/db_installer/sql/game/character_shortcuts.sql
index e42b2e4bd6..4200257284 100644
--- a/trunk/dist/tools/sql/game/character_shortcuts.sql
+++ b/trunk/dist/db_installer/sql/game/character_shortcuts.sql
@@ -1,3 +1,4 @@
+DROP TABLE IF EXISTS `character_shortcuts`;
CREATE TABLE IF NOT EXISTS `character_shortcuts` (
`charId` INT UNSIGNED NOT NULL DEFAULT 0,
`slot` decimal(3) NOT NULL DEFAULT 0,
diff --git a/trunk/dist/tools/sql/game/character_skills.sql b/trunk/dist/db_installer/sql/game/character_skills.sql
similarity index 88%
rename from trunk/dist/tools/sql/game/character_skills.sql
rename to trunk/dist/db_installer/sql/game/character_skills.sql
index c7532d9971..c7a74baa51 100644
--- a/trunk/dist/tools/sql/game/character_skills.sql
+++ b/trunk/dist/db_installer/sql/game/character_skills.sql
@@ -1,3 +1,4 @@
+DROP TABLE IF EXISTS `character_skills`;
CREATE TABLE IF NOT EXISTS `character_skills` (
`charId` INT UNSIGNED NOT NULL DEFAULT 0,
`skill_id` INT NOT NULL DEFAULT 0,
diff --git a/trunk/dist/tools/sql/game/character_skills_save.sql b/trunk/dist/db_installer/sql/game/character_skills_save.sql
similarity index 92%
rename from trunk/dist/tools/sql/game/character_skills_save.sql
rename to trunk/dist/db_installer/sql/game/character_skills_save.sql
index 7b1692ecf7..8fa3eb3879 100644
--- a/trunk/dist/tools/sql/game/character_skills_save.sql
+++ b/trunk/dist/db_installer/sql/game/character_skills_save.sql
@@ -1,3 +1,4 @@
+DROP TABLE IF EXISTS `character_skills_save`;
CREATE TABLE IF NOT EXISTS `character_skills_save` (
`charId` INT NOT NULL DEFAULT 0,
`skill_id` INT NOT NULL DEFAULT 0,
diff --git a/trunk/dist/tools/sql/game/character_subclasses.sql b/trunk/dist/db_installer/sql/game/character_subclasses.sql
similarity index 89%
rename from trunk/dist/tools/sql/game/character_subclasses.sql
rename to trunk/dist/db_installer/sql/game/character_subclasses.sql
index ea34bfbd73..4d01414226 100644
--- a/trunk/dist/tools/sql/game/character_subclasses.sql
+++ b/trunk/dist/db_installer/sql/game/character_subclasses.sql
@@ -1,3 +1,4 @@
+DROP TABLE IF EXISTS `character_subclasses`;
CREATE TABLE IF NOT EXISTS `character_subclasses` (
`charId` INT UNSIGNED NOT NULL DEFAULT 0,
`class_id` int(2) NOT NULL DEFAULT 0,
diff --git a/trunk/dist/tools/sql/game/character_summon_skills_save.sql b/trunk/dist/db_installer/sql/game/character_summon_skills_save.sql
similarity index 89%
rename from trunk/dist/tools/sql/game/character_summon_skills_save.sql
rename to trunk/dist/db_installer/sql/game/character_summon_skills_save.sql
index 715957428c..a08932a5da 100644
--- a/trunk/dist/tools/sql/game/character_summon_skills_save.sql
+++ b/trunk/dist/db_installer/sql/game/character_summon_skills_save.sql
@@ -1,3 +1,4 @@
+DROP TABLE IF EXISTS `character_summon_skills_save`;
CREATE TABLE IF NOT EXISTS `character_summon_skills_save` (
`ownerId` INT NOT NULL DEFAULT 0,
`ownerClassIndex` INT(1) NOT NULL DEFAULT 0,
diff --git a/trunk/dist/tools/sql/game/character_summons.sql b/trunk/dist/db_installer/sql/game/character_summons.sql
similarity index 88%
rename from trunk/dist/tools/sql/game/character_summons.sql
rename to trunk/dist/db_installer/sql/game/character_summons.sql
index 1f0b693009..2d6ef32e0d 100644
--- a/trunk/dist/tools/sql/game/character_summons.sql
+++ b/trunk/dist/db_installer/sql/game/character_summons.sql
@@ -1,3 +1,4 @@
+DROP TABLE IF EXISTS `character_summons`;
CREATE TABLE IF NOT EXISTS `character_summons` (
`ownerId` int(10) unsigned NOT NULL,
`summonId` int(10) unsigned NOT NULL,
diff --git a/trunk/dist/tools/sql/game/character_tpbookmark.sql b/trunk/dist/db_installer/sql/game/character_tpbookmark.sql
similarity index 85%
rename from trunk/dist/tools/sql/game/character_tpbookmark.sql
rename to trunk/dist/db_installer/sql/game/character_tpbookmark.sql
index 51dd922dcd..fe691ea5ef 100644
--- a/trunk/dist/tools/sql/game/character_tpbookmark.sql
+++ b/trunk/dist/db_installer/sql/game/character_tpbookmark.sql
@@ -1,3 +1,4 @@
+DROP TABLE IF EXISTS `character_tpbookmark`;
CREATE TABLE IF NOT EXISTS `character_tpbookmark` (
`charId` int(20) NOT NULL,
`Id` int(20) NOT NULL,
diff --git a/trunk/dist/tools/sql/game/character_ui_actions.sql b/trunk/dist/db_installer/sql/game/character_ui_actions.sql
similarity index 87%
rename from trunk/dist/tools/sql/game/character_ui_actions.sql
rename to trunk/dist/db_installer/sql/game/character_ui_actions.sql
index d1e2205f29..454499ba97 100644
--- a/trunk/dist/tools/sql/game/character_ui_actions.sql
+++ b/trunk/dist/db_installer/sql/game/character_ui_actions.sql
@@ -1,3 +1,4 @@
+DROP TABLE IF EXISTS `character_ui_actions`;
CREATE TABLE IF NOT EXISTS `character_ui_actions` (
`charId` int(10) unsigned NOT NULL DEFAULT '0',
`cat` tinyint(4) NOT NULL,
diff --git a/trunk/dist/tools/sql/game/character_ui_categories.sql b/trunk/dist/db_installer/sql/game/character_ui_categories.sql
similarity index 83%
rename from trunk/dist/tools/sql/game/character_ui_categories.sql
rename to trunk/dist/db_installer/sql/game/character_ui_categories.sql
index 86a2368a21..87e28d9b03 100644
--- a/trunk/dist/tools/sql/game/character_ui_categories.sql
+++ b/trunk/dist/db_installer/sql/game/character_ui_categories.sql
@@ -1,3 +1,4 @@
+DROP TABLE IF EXISTS `character_ui_categories`;
CREATE TABLE IF NOT EXISTS `character_ui_categories` (
`charId` int(10) unsigned NOT NULL DEFAULT '0',
`catId` tinyint(4) NOT NULL,
diff --git a/trunk/dist/tools/sql/game/character_variables.sql b/trunk/dist/db_installer/sql/game/character_variables.sql
similarity index 78%
rename from trunk/dist/tools/sql/game/character_variables.sql
rename to trunk/dist/db_installer/sql/game/character_variables.sql
index a112b3d34f..40603ac06b 100644
--- a/trunk/dist/tools/sql/game/character_variables.sql
+++ b/trunk/dist/db_installer/sql/game/character_variables.sql
@@ -1,3 +1,4 @@
+DROP TABLE IF EXISTS `character_variables`;
CREATE TABLE IF NOT EXISTS `character_variables` (
`charId` int(10) UNSIGNED NOT NULL,
`var` varchar(255) NOT NULL,
diff --git a/trunk/dist/tools/sql/game/characters.sql b/trunk/dist/db_installer/sql/game/characters.sql
similarity index 96%
rename from trunk/dist/tools/sql/game/characters.sql
rename to trunk/dist/db_installer/sql/game/characters.sql
index ba889fdfc3..b0e5629fdd 100644
--- a/trunk/dist/tools/sql/game/characters.sql
+++ b/trunk/dist/db_installer/sql/game/characters.sql
@@ -1,3 +1,4 @@
+DROP TABLE IF EXISTS `characters`;
CREATE TABLE IF NOT EXISTS `characters` (
`account_name` VARCHAR(45) DEFAULT NULL,
`charId` INT UNSIGNED NOT NULL DEFAULT 0,
diff --git a/trunk/dist/tools/sql/game/clan_data.sql b/trunk/dist/db_installer/sql/game/clan_data.sql
similarity index 94%
rename from trunk/dist/tools/sql/game/clan_data.sql
rename to trunk/dist/db_installer/sql/game/clan_data.sql
index 46d79ee1ae..fabffaa056 100644
--- a/trunk/dist/tools/sql/game/clan_data.sql
+++ b/trunk/dist/db_installer/sql/game/clan_data.sql
@@ -1,3 +1,4 @@
+DROP TABLE IF EXISTS `clan_data`;
CREATE TABLE IF NOT EXISTS `clan_data` (
`clan_id` INT NOT NULL DEFAULT 0,
`clan_name` varchar(45) ,
diff --git a/trunk/dist/tools/sql/game/clan_notices.sql b/trunk/dist/db_installer/sql/game/clan_notices.sql
similarity index 84%
rename from trunk/dist/tools/sql/game/clan_notices.sql
rename to trunk/dist/db_installer/sql/game/clan_notices.sql
index 83cd47fdd3..0b5cfecf6c 100644
--- a/trunk/dist/tools/sql/game/clan_notices.sql
+++ b/trunk/dist/db_installer/sql/game/clan_notices.sql
@@ -1,3 +1,4 @@
+DROP TABLE IF EXISTS `clan_notices`;
CREATE TABLE IF NOT EXISTS `clan_notices` (
`clan_id` INT NOT NULL DEFAULT 0,
`enabled` enum('true','false') DEFAULT 'false' NOT NULL,
diff --git a/trunk/dist/tools/sql/game/clan_privs.sql b/trunk/dist/db_installer/sql/game/clan_privs.sql
similarity index 85%
rename from trunk/dist/tools/sql/game/clan_privs.sql
rename to trunk/dist/db_installer/sql/game/clan_privs.sql
index 8904833cd4..0c21cb33e8 100644
--- a/trunk/dist/tools/sql/game/clan_privs.sql
+++ b/trunk/dist/db_installer/sql/game/clan_privs.sql
@@ -1,3 +1,4 @@
+DROP TABLE IF EXISTS `clan_privs`;
CREATE TABLE IF NOT EXISTS `clan_privs` (
`clan_id` INT NOT NULL DEFAULT 0,
`rank` INT NOT NULL DEFAULT 0,
diff --git a/trunk/dist/tools/sql/game/clan_skills.sql b/trunk/dist/db_installer/sql/game/clan_skills.sql
similarity index 88%
rename from trunk/dist/tools/sql/game/clan_skills.sql
rename to trunk/dist/db_installer/sql/game/clan_skills.sql
index 6652823b59..c17980216e 100644
--- a/trunk/dist/tools/sql/game/clan_skills.sql
+++ b/trunk/dist/db_installer/sql/game/clan_skills.sql
@@ -1,3 +1,4 @@
+DROP TABLE IF EXISTS `clan_skills`;
CREATE TABLE IF NOT EXISTS `clan_skills` (
`clan_id` int(11) NOT NULL DEFAULT 0,
`skill_id` int(11) NOT NULL DEFAULT 0,
diff --git a/trunk/dist/tools/sql/game/clan_subpledges.sql b/trunk/dist/db_installer/sql/game/clan_subpledges.sql
similarity index 86%
rename from trunk/dist/tools/sql/game/clan_subpledges.sql
rename to trunk/dist/db_installer/sql/game/clan_subpledges.sql
index 8af49cc45f..90b017e627 100644
--- a/trunk/dist/tools/sql/game/clan_subpledges.sql
+++ b/trunk/dist/db_installer/sql/game/clan_subpledges.sql
@@ -1,3 +1,4 @@
+DROP TABLE IF EXISTS `clan_subpledges`;
CREATE TABLE IF NOT EXISTS `clan_subpledges` (
`clan_id` INT NOT NULL DEFAULT '0',
`sub_pledge_id` INT NOT NULL DEFAULT '0',
diff --git a/trunk/dist/tools/sql/game/clan_wars.sql b/trunk/dist/db_installer/sql/game/clan_wars.sql
similarity index 88%
rename from trunk/dist/tools/sql/game/clan_wars.sql
rename to trunk/dist/db_installer/sql/game/clan_wars.sql
index 62cc814101..d3acd91109 100644
--- a/trunk/dist/tools/sql/game/clan_wars.sql
+++ b/trunk/dist/db_installer/sql/game/clan_wars.sql
@@ -1,3 +1,4 @@
+DROP TABLE IF EXISTS `clan_wars`;
CREATE TABLE IF NOT EXISTS `clan_wars` (
`clan1` varchar(35) NOT NULL DEFAULT '',
`clan2` varchar(35) NOT NULL DEFAULT '',
diff --git a/trunk/dist/tools/sql/game/clanentry.sql b/trunk/dist/db_installer/sql/game/clanentry.sql
similarity index 86%
rename from trunk/dist/tools/sql/game/clanentry.sql
rename to trunk/dist/db_installer/sql/game/clanentry.sql
index 803b25fa5c..ec86a23b79 100644
--- a/trunk/dist/tools/sql/game/clanentry.sql
+++ b/trunk/dist/db_installer/sql/game/clanentry.sql
@@ -1,3 +1,4 @@
+DROP TABLE IF EXISTS `pledge_applicant`;
CREATE TABLE IF NOT EXISTS `pledge_applicant` (
`charId` int(10) NOT NULL,
`clanId` int(10) NOT NULL,
@@ -6,6 +7,7 @@ CREATE TABLE IF NOT EXISTS `pledge_applicant` (
PRIMARY KEY (`charId`,`clanId`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
+DROP TABLE IF EXISTS `pledge_recruit`;
CREATE TABLE IF NOT EXISTS `pledge_recruit` (
`clan_id` int(10) NOT NULL,
`karma` tinyint(1) NOT NULL,
@@ -14,6 +16,7 @@ CREATE TABLE IF NOT EXISTS `pledge_recruit` (
PRIMARY KEY (`clan_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
+DROP TABLE IF EXISTS `pledge_waiting_list`;
CREATE TABLE IF NOT EXISTS `pledge_waiting_list` (
`char_id` int(10) NOT NULL,
`karma` tinyint(1) NOT NULL,
diff --git a/trunk/dist/tools/sql/game/clanhall.sql b/trunk/dist/db_installer/sql/game/clanhall.sql
similarity index 98%
rename from trunk/dist/tools/sql/game/clanhall.sql
rename to trunk/dist/db_installer/sql/game/clanhall.sql
index a3b640d8ec..1d9624195a 100644
--- a/trunk/dist/tools/sql/game/clanhall.sql
+++ b/trunk/dist/db_installer/sql/game/clanhall.sql
@@ -1,3 +1,4 @@
+DROP TABLE IF EXISTS `clanhall`;
CREATE TABLE IF NOT EXISTS `clanhall` (
`id` int(11) NOT NULL DEFAULT '0',
`name` varchar(40) NOT NULL DEFAULT '',
diff --git a/trunk/dist/tools/sql/game/clanhall_functions.sql b/trunk/dist/db_installer/sql/game/clanhall_functions.sql
similarity index 87%
rename from trunk/dist/tools/sql/game/clanhall_functions.sql
rename to trunk/dist/db_installer/sql/game/clanhall_functions.sql
index ea33f9734a..e6ef2558b8 100644
--- a/trunk/dist/tools/sql/game/clanhall_functions.sql
+++ b/trunk/dist/db_installer/sql/game/clanhall_functions.sql
@@ -1,3 +1,4 @@
+DROP TABLE IF EXISTS `clanhall_functions`;
CREATE TABLE IF NOT EXISTS `clanhall_functions` (
`hall_id` int(2) NOT NULL DEFAULT '0',
`type` int(1) NOT NULL DEFAULT '0',
diff --git a/trunk/dist/tools/sql/game/clanhall_siege_attackers.sql b/trunk/dist/db_installer/sql/game/clanhall_siege_attackers.sql
similarity index 77%
rename from trunk/dist/tools/sql/game/clanhall_siege_attackers.sql
rename to trunk/dist/db_installer/sql/game/clanhall_siege_attackers.sql
index 1c601f0ded..e10faf0217 100644
--- a/trunk/dist/tools/sql/game/clanhall_siege_attackers.sql
+++ b/trunk/dist/db_installer/sql/game/clanhall_siege_attackers.sql
@@ -1,3 +1,4 @@
+DROP TABLE IF EXISTS `clanhall_siege_attackers`;
CREATE TABLE IF NOT EXISTS `clanhall_siege_attackers` (
`clanhall_id` int(3) NOT NULL DEFAULT '0',
`attacker_id` int(10) NOT NULL DEFAULT '0'
diff --git a/trunk/dist/tools/sql/game/clanhall_siege_guards.sql b/trunk/dist/db_installer/sql/game/clanhall_siege_guards.sql
similarity index 100%
rename from trunk/dist/tools/sql/game/clanhall_siege_guards.sql
rename to trunk/dist/db_installer/sql/game/clanhall_siege_guards.sql
diff --git a/trunk/dist/tools/sql/game/auction.sql b/trunk/dist/db_installer/sql/game/classic/auction.sql
similarity index 93%
rename from trunk/dist/tools/sql/game/auction.sql
rename to trunk/dist/db_installer/sql/game/classic/auction.sql
index 0b6c2751d2..cb1a05ab68 100644
--- a/trunk/dist/tools/sql/game/auction.sql
+++ b/trunk/dist/db_installer/sql/game/classic/auction.sql
@@ -1,3 +1,4 @@
+DROP TABLE IF EXISTS `auction`;
CREATE TABLE IF NOT EXISTS `auction` (
`id` int(11) NOT NULL DEFAULT '0',
`sellerId` int(11) NOT NULL DEFAULT '0',
diff --git a/trunk/dist/tools/sql/classic/castle.sql b/trunk/dist/db_installer/sql/game/classic/castle.sql
similarity index 95%
rename from trunk/dist/tools/sql/classic/castle.sql
rename to trunk/dist/db_installer/sql/game/classic/castle.sql
index a39c403b4f..d0a51537a9 100644
--- a/trunk/dist/tools/sql/classic/castle.sql
+++ b/trunk/dist/db_installer/sql/game/classic/castle.sql
@@ -1,3 +1,4 @@
+DROP TABLE IF EXISTS `castle`;
CREATE TABLE IF NOT EXISTS `castle` (
`id` INT NOT NULL DEFAULT 0,
`name` varchar(25) NOT NULL,
diff --git a/trunk/dist/tools/sql/classic/clanhall.sql b/trunk/dist/db_installer/sql/game/classic/clanhall.sql
similarity index 98%
rename from trunk/dist/tools/sql/classic/clanhall.sql
rename to trunk/dist/db_installer/sql/game/classic/clanhall.sql
index 7b9dd11119..065779a109 100644
--- a/trunk/dist/tools/sql/classic/clanhall.sql
+++ b/trunk/dist/db_installer/sql/game/classic/clanhall.sql
@@ -1,3 +1,4 @@
+DROP TABLE IF EXISTS `clanhall`;
CREATE TABLE IF NOT EXISTS `clanhall` (
`id` int(11) NOT NULL DEFAULT '0',
`name` varchar(40) NOT NULL DEFAULT '',
diff --git a/trunk/dist/tools/sql/classic/grandboss_data.sql b/trunk/dist/db_installer/sql/game/classic/grandboss_data.sql
similarity index 94%
rename from trunk/dist/tools/sql/classic/grandboss_data.sql
rename to trunk/dist/db_installer/sql/game/classic/grandboss_data.sql
index 12e8a243bf..615ef1c57c 100644
--- a/trunk/dist/tools/sql/classic/grandboss_data.sql
+++ b/trunk/dist/db_installer/sql/game/classic/grandboss_data.sql
@@ -1,3 +1,4 @@
+DROP TABLE IF EXISTS `grandboss_data`;
CREATE TABLE IF NOT EXISTS `grandboss_data` (
`boss_id` smallint(5) unsigned NOT NULL,
`loc_x` mediumint(6) NOT NULL,
diff --git a/trunk/dist/tools/sql/classic/pets_skills.sql b/trunk/dist/db_installer/sql/game/classic/pets_skills.sql
similarity index 100%
rename from trunk/dist/tools/sql/classic/pets_skills.sql
rename to trunk/dist/db_installer/sql/game/classic/pets_skills.sql
diff --git a/trunk/dist/tools/sql/classic/raidboss_spawnlist.sql b/trunk/dist/db_installer/sql/game/classic/raidboss_spawnlist.sql
similarity index 100%
rename from trunk/dist/tools/sql/classic/raidboss_spawnlist.sql
rename to trunk/dist/db_installer/sql/game/classic/raidboss_spawnlist.sql
diff --git a/trunk/dist/tools/sql/classic/random_spawn.sql b/trunk/dist/db_installer/sql/game/classic/random_spawn.sql
similarity index 100%
rename from trunk/dist/tools/sql/classic/random_spawn.sql
rename to trunk/dist/db_installer/sql/game/classic/random_spawn.sql
diff --git a/trunk/dist/tools/sql/classic/random_spawn_loc.sql b/trunk/dist/db_installer/sql/game/classic/random_spawn_loc.sql
similarity index 100%
rename from trunk/dist/tools/sql/classic/random_spawn_loc.sql
rename to trunk/dist/db_installer/sql/game/classic/random_spawn_loc.sql
diff --git a/trunk/dist/tools/sql/classic/spawnlist.sql b/trunk/dist/db_installer/sql/game/classic/spawnlist.sql
similarity index 100%
rename from trunk/dist/tools/sql/classic/spawnlist.sql
rename to trunk/dist/db_installer/sql/game/classic/spawnlist.sql
diff --git a/trunk/dist/tools/sql/game/commission_items.sql b/trunk/dist/db_installer/sql/game/commission_items.sql
similarity index 87%
rename from trunk/dist/tools/sql/game/commission_items.sql
rename to trunk/dist/db_installer/sql/game/commission_items.sql
index 191d8e3377..fbee838447 100644
--- a/trunk/dist/tools/sql/game/commission_items.sql
+++ b/trunk/dist/db_installer/sql/game/commission_items.sql
@@ -1,3 +1,4 @@
+DROP TABLE IF EXISTS `commission_items`;
CREATE TABLE IF NOT EXISTS `commission_items` (
`commission_id` BIGINT NOT NULL AUTO_INCREMENT,
`item_object_id` INT NOT NULL,
diff --git a/trunk/dist/tools/sql/game/crests.sql b/trunk/dist/db_installer/sql/game/crests.sql
similarity index 85%
rename from trunk/dist/tools/sql/game/crests.sql
rename to trunk/dist/db_installer/sql/game/crests.sql
index 57970ad700..621f887b9b 100644
--- a/trunk/dist/tools/sql/game/crests.sql
+++ b/trunk/dist/db_installer/sql/game/crests.sql
@@ -1,3 +1,4 @@
+DROP TABLE IF EXISTS `crests`;
CREATE TABLE IF NOT EXISTS `crests` (
`crest_id` INT,
`data` VARBINARY(2176) NOT NULL,
diff --git a/trunk/dist/tools/sql/game/cursed_weapons.sql b/trunk/dist/db_installer/sql/game/cursed_weapons.sql
similarity index 87%
rename from trunk/dist/tools/sql/game/cursed_weapons.sql
rename to trunk/dist/db_installer/sql/game/cursed_weapons.sql
index 440c20ceb0..177d415ab6 100644
--- a/trunk/dist/tools/sql/game/cursed_weapons.sql
+++ b/trunk/dist/db_installer/sql/game/cursed_weapons.sql
@@ -1,3 +1,4 @@
+DROP TABLE IF EXISTS `cursed_weapons`;
CREATE TABLE IF NOT EXISTS `cursed_weapons` (
`itemId` INT,
`charId` INT UNSIGNED NOT NULL DEFAULT 0,
diff --git a/trunk/dist/tools/sql/game/custom_npc_buffer.sql b/trunk/dist/db_installer/sql/game/custom_npc_buffer.sql
similarity index 94%
rename from trunk/dist/tools/sql/game/custom_npc_buffer.sql
rename to trunk/dist/db_installer/sql/game/custom_npc_buffer.sql
index ae988339ee..5f9a6729da 100644
--- a/trunk/dist/tools/sql/game/custom_npc_buffer.sql
+++ b/trunk/dist/db_installer/sql/game/custom_npc_buffer.sql
@@ -1,3 +1,4 @@
+DROP TABLE IF EXISTS `custom_npc_buffer`;
CREATE TABLE IF NOT EXISTS `custom_npc_buffer` (
`npc_id` mediumint(7) NOT NULL,
`skill_id` int(6) NOT NULL,
diff --git a/trunk/dist/tools/sql/game/custom_spawnlist.sql b/trunk/dist/db_installer/sql/game/custom_spawnlist.sql
similarity index 92%
rename from trunk/dist/tools/sql/game/custom_spawnlist.sql
rename to trunk/dist/db_installer/sql/game/custom_spawnlist.sql
index 56c764614c..9a782d8873 100644
--- a/trunk/dist/tools/sql/game/custom_spawnlist.sql
+++ b/trunk/dist/db_installer/sql/game/custom_spawnlist.sql
@@ -1,3 +1,4 @@
+DROP TABLE IF EXISTS `custom_spawnlist`;
CREATE TABLE IF NOT EXISTS `custom_spawnlist` (
`location` varchar(40) NOT NULL DEFAULT '',
`count` tinyint(1) unsigned NOT NULL DEFAULT '0',
diff --git a/trunk/dist/tools/sql/game/custom_teleport.sql b/trunk/dist/db_installer/sql/game/custom_teleport.sql
similarity index 89%
rename from trunk/dist/tools/sql/game/custom_teleport.sql
rename to trunk/dist/db_installer/sql/game/custom_teleport.sql
index 1ed18ba227..d073e804aa 100644
--- a/trunk/dist/tools/sql/game/custom_teleport.sql
+++ b/trunk/dist/db_installer/sql/game/custom_teleport.sql
@@ -1,3 +1,4 @@
+DROP TABLE IF EXISTS `custom_teleport`;
CREATE TABLE IF NOT EXISTS `custom_teleport` (
`Description` varchar(75) DEFAULT NULL,
`id` mediumint(7) unsigned NOT NULL DEFAULT '0',
diff --git a/trunk/dist/tools/sql/game/fishing_championship.sql b/trunk/dist/db_installer/sql/game/fishing_championship.sql
similarity index 100%
rename from trunk/dist/tools/sql/game/fishing_championship.sql
rename to trunk/dist/db_installer/sql/game/fishing_championship.sql
diff --git a/trunk/dist/tools/sql/game/fort.sql b/trunk/dist/db_installer/sql/game/fort.sql
similarity index 94%
rename from trunk/dist/tools/sql/game/fort.sql
rename to trunk/dist/db_installer/sql/game/fort.sql
index 584733bd5f..6d7c25b71e 100644
--- a/trunk/dist/tools/sql/game/fort.sql
+++ b/trunk/dist/db_installer/sql/game/fort.sql
@@ -1,3 +1,4 @@
+DROP TABLE IF EXISTS `fort`;
CREATE TABLE IF NOT EXISTS `fort` (
`id` int(11) NOT NULL DEFAULT 0,
`name` varchar(25) NOT NULL,
diff --git a/trunk/dist/tools/sql/game/fort_doorupgrade.sql b/trunk/dist/db_installer/sql/game/fort_doorupgrade.sql
similarity index 85%
rename from trunk/dist/tools/sql/game/fort_doorupgrade.sql
rename to trunk/dist/db_installer/sql/game/fort_doorupgrade.sql
index e4c87934f3..2b55ee02d6 100644
--- a/trunk/dist/tools/sql/game/fort_doorupgrade.sql
+++ b/trunk/dist/db_installer/sql/game/fort_doorupgrade.sql
@@ -1,3 +1,4 @@
+DROP TABLE IF EXISTS `fort_doorupgrade`;
CREATE TABLE IF NOT EXISTS `fort_doorupgrade` (
`doorId` int(11) NOT NULL DEFAULT '0',
`fortId` int(11) NOT NULL,
diff --git a/trunk/dist/tools/sql/game/fort_functions.sql b/trunk/dist/db_installer/sql/game/fort_functions.sql
similarity index 88%
rename from trunk/dist/tools/sql/game/fort_functions.sql
rename to trunk/dist/db_installer/sql/game/fort_functions.sql
index a21ab5953e..09dc7431cb 100644
--- a/trunk/dist/tools/sql/game/fort_functions.sql
+++ b/trunk/dist/db_installer/sql/game/fort_functions.sql
@@ -1,3 +1,4 @@
+DROP TABLE IF EXISTS `fort_functions`;
CREATE TABLE IF NOT EXISTS `fort_functions` (
`fort_id` int(2) NOT NULL DEFAULT '0',
`type` int(1) NOT NULL DEFAULT '0',
diff --git a/trunk/dist/tools/sql/game/fort_siege_guards.sql b/trunk/dist/db_installer/sql/game/fort_siege_guards.sql
similarity index 100%
rename from trunk/dist/tools/sql/game/fort_siege_guards.sql
rename to trunk/dist/db_installer/sql/game/fort_siege_guards.sql
diff --git a/trunk/dist/tools/sql/game/fort_spawnlist.sql b/trunk/dist/db_installer/sql/game/fort_spawnlist.sql
similarity index 100%
rename from trunk/dist/tools/sql/game/fort_spawnlist.sql
rename to trunk/dist/db_installer/sql/game/fort_spawnlist.sql
diff --git a/trunk/dist/tools/sql/game/fortsiege_clans.sql b/trunk/dist/db_installer/sql/game/fortsiege_clans.sql
similarity index 81%
rename from trunk/dist/tools/sql/game/fortsiege_clans.sql
rename to trunk/dist/db_installer/sql/game/fortsiege_clans.sql
index 2fd0083c9d..49f5479f28 100644
--- a/trunk/dist/tools/sql/game/fortsiege_clans.sql
+++ b/trunk/dist/db_installer/sql/game/fortsiege_clans.sql
@@ -1,3 +1,4 @@
+DROP TABLE IF EXISTS `fortsiege_clans`;
CREATE TABLE IF NOT EXISTS `fortsiege_clans` (
`fort_id` int(1) NOT NULL DEFAULT '0',
`clan_id` int(11) NOT NULL DEFAULT '0',
diff --git a/trunk/dist/tools/sql/game/forums.sql b/trunk/dist/db_installer/sql/game/forums.sql
similarity index 92%
rename from trunk/dist/tools/sql/game/forums.sql
rename to trunk/dist/db_installer/sql/game/forums.sql
index 99025ffad2..c3597f089d 100644
--- a/trunk/dist/tools/sql/game/forums.sql
+++ b/trunk/dist/db_installer/sql/game/forums.sql
@@ -1,3 +1,4 @@
+DROP TABLE IF EXISTS `forums`;
CREATE TABLE IF NOT EXISTS `forums` (
`forum_id` int(8) NOT NULL DEFAULT '0',
`forum_name` varchar(255) NOT NULL DEFAULT '',
diff --git a/trunk/dist/tools/sql/game/four_sepulchers_spawnlist.sql b/trunk/dist/db_installer/sql/game/four_sepulchers_spawnlist.sql
similarity index 100%
rename from trunk/dist/tools/sql/game/four_sepulchers_spawnlist.sql
rename to trunk/dist/db_installer/sql/game/four_sepulchers_spawnlist.sql
diff --git a/trunk/dist/tools/sql/game/games.sql b/trunk/dist/db_installer/sql/game/games.sql
similarity index 91%
rename from trunk/dist/tools/sql/game/games.sql
rename to trunk/dist/db_installer/sql/game/games.sql
index 413e7a6774..3c99af696f 100644
--- a/trunk/dist/tools/sql/game/games.sql
+++ b/trunk/dist/db_installer/sql/game/games.sql
@@ -1,3 +1,4 @@
+DROP TABLE IF EXISTS `games`;
CREATE TABLE IF NOT EXISTS `games` (
`id` INT NOT NULL DEFAULT 0,
`idnr` INT NOT NULL DEFAULT 0,
diff --git a/trunk/dist/tools/sql/game/global_tasks.sql b/trunk/dist/db_installer/sql/game/global_tasks.sql
similarity index 90%
rename from trunk/dist/tools/sql/game/global_tasks.sql
rename to trunk/dist/db_installer/sql/game/global_tasks.sql
index 6208a5908d..ede80d7004 100644
--- a/trunk/dist/tools/sql/game/global_tasks.sql
+++ b/trunk/dist/db_installer/sql/game/global_tasks.sql
@@ -1,3 +1,4 @@
+DROP TABLE IF EXISTS `global_tasks`;
CREATE TABLE IF NOT EXISTS `global_tasks` (
`id` int(11) NOT NULL auto_increment,
`task` varchar(50) NOT NULL DEFAULT '',
diff --git a/trunk/dist/tools/sql/game/global_variables.sql b/trunk/dist/db_installer/sql/game/global_variables.sql
similarity index 79%
rename from trunk/dist/tools/sql/game/global_variables.sql
rename to trunk/dist/db_installer/sql/game/global_variables.sql
index d348724f7c..ff529c8ffe 100644
--- a/trunk/dist/tools/sql/game/global_variables.sql
+++ b/trunk/dist/db_installer/sql/game/global_variables.sql
@@ -1,3 +1,4 @@
+DROP TABLE IF EXISTS `global_variables`;
CREATE TABLE IF NOT EXISTS `global_variables` (
`var` VARCHAR(20) NOT NULL DEFAULT '',
`value` VARCHAR(255) ,
diff --git a/trunk/dist/tools/sql/game/grandboss_data.sql b/trunk/dist/db_installer/sql/game/grandboss_data.sql
similarity index 96%
rename from trunk/dist/tools/sql/game/grandboss_data.sql
rename to trunk/dist/db_installer/sql/game/grandboss_data.sql
index 3ce29d7693..8c7c31adab 100644
--- a/trunk/dist/tools/sql/game/grandboss_data.sql
+++ b/trunk/dist/db_installer/sql/game/grandboss_data.sql
@@ -1,3 +1,4 @@
+DROP TABLE IF EXISTS `grandboss_data`;
CREATE TABLE IF NOT EXISTS `grandboss_data` (
`boss_id` smallint(5) unsigned NOT NULL,
`loc_x` mediumint(6) NOT NULL,
diff --git a/trunk/dist/tools/sql/game/grandboss_list.sql b/trunk/dist/db_installer/sql/game/grandboss_list.sql
similarity index 81%
rename from trunk/dist/tools/sql/game/grandboss_list.sql
rename to trunk/dist/db_installer/sql/game/grandboss_list.sql
index 1d7c16d247..e3860ccc3a 100644
--- a/trunk/dist/tools/sql/game/grandboss_list.sql
+++ b/trunk/dist/db_installer/sql/game/grandboss_list.sql
@@ -1,3 +1,4 @@
+DROP TABLE IF EXISTS `grandboss_list`;
CREATE TABLE IF NOT EXISTS `grandboss_list` (
`player_id` decimal(11,0) NOT NULL,
`zone` decimal(11,0) NOT NULL,
diff --git a/trunk/dist/tools/sql/game/herb_droplist_groups.sql b/trunk/dist/db_installer/sql/game/herb_droplist_groups.sql
similarity index 100%
rename from trunk/dist/tools/sql/game/herb_droplist_groups.sql
rename to trunk/dist/db_installer/sql/game/herb_droplist_groups.sql
diff --git a/trunk/dist/tools/sql/game/heroes.sql b/trunk/dist/db_installer/sql/game/heroes.sql
similarity index 90%
rename from trunk/dist/tools/sql/game/heroes.sql
rename to trunk/dist/db_installer/sql/game/heroes.sql
index 09054d0b09..8b60cfb980 100644
--- a/trunk/dist/tools/sql/game/heroes.sql
+++ b/trunk/dist/db_installer/sql/game/heroes.sql
@@ -1,3 +1,4 @@
+DROP TABLE IF EXISTS `heroes`;
CREATE TABLE IF NOT EXISTS `heroes` (
`charId` INT UNSIGNED NOT NULL DEFAULT 0,
`class_id` decimal(3,0) NOT NULL DEFAULT 0,
diff --git a/trunk/dist/tools/sql/game/heroes_diary.sql b/trunk/dist/db_installer/sql/game/heroes_diary.sql
similarity index 87%
rename from trunk/dist/tools/sql/game/heroes_diary.sql
rename to trunk/dist/db_installer/sql/game/heroes_diary.sql
index f6fbd86c7f..3d932332df 100644
--- a/trunk/dist/tools/sql/game/heroes_diary.sql
+++ b/trunk/dist/db_installer/sql/game/heroes_diary.sql
@@ -1,3 +1,4 @@
+DROP TABLE IF EXISTS `heroes_diary`;
CREATE TABLE IF NOT EXISTS `heroes_diary` (
`charId` int(10) unsigned NOT NULL,
`time` bigint(13) unsigned NOT NULL DEFAULT '0',
diff --git a/trunk/dist/tools/sql/game/item_attributes.sql b/trunk/dist/db_installer/sql/game/item_attributes.sql
similarity index 81%
rename from trunk/dist/tools/sql/game/item_attributes.sql
rename to trunk/dist/db_installer/sql/game/item_attributes.sql
index 66d8e12c38..9f07c65a60 100644
--- a/trunk/dist/tools/sql/game/item_attributes.sql
+++ b/trunk/dist/db_installer/sql/game/item_attributes.sql
@@ -1,3 +1,4 @@
+DROP TABLE IF EXISTS `item_attributes`;
CREATE TABLE IF NOT EXISTS `item_attributes` (
`itemId` int(11) NOT NULL DEFAULT 0,
`augAttributes` int(11) NOT NULL DEFAULT -1,
diff --git a/trunk/dist/tools/sql/game/item_auction.sql b/trunk/dist/db_installer/sql/game/item_auction.sql
similarity index 88%
rename from trunk/dist/tools/sql/game/item_auction.sql
rename to trunk/dist/db_installer/sql/game/item_auction.sql
index 6b9b7e0d0c..813d1705fd 100644
--- a/trunk/dist/tools/sql/game/item_auction.sql
+++ b/trunk/dist/db_installer/sql/game/item_auction.sql
@@ -1,3 +1,4 @@
+DROP TABLE IF EXISTS `item_auction`;
CREATE TABLE IF NOT EXISTS `item_auction` (
`auctionId` int(11) NOT NULL,
`instanceId` int(11) NOT NULL,
diff --git a/trunk/dist/tools/sql/game/item_auction_bid.sql b/trunk/dist/db_installer/sql/game/item_auction_bid.sql
similarity index 82%
rename from trunk/dist/tools/sql/game/item_auction_bid.sql
rename to trunk/dist/db_installer/sql/game/item_auction_bid.sql
index 6e90338353..5832690f2e 100644
--- a/trunk/dist/tools/sql/game/item_auction_bid.sql
+++ b/trunk/dist/db_installer/sql/game/item_auction_bid.sql
@@ -1,3 +1,4 @@
+DROP TABLE IF EXISTS `item_auction_bid`;
CREATE TABLE IF NOT EXISTS `item_auction_bid` (
`auctionId` int(11) NOT NULL,
`playerObjId` int(11) NOT NULL,
diff --git a/trunk/dist/tools/sql/game/item_elementals.sql b/trunk/dist/db_installer/sql/game/item_elementals.sql
similarity index 84%
rename from trunk/dist/tools/sql/game/item_elementals.sql
rename to trunk/dist/db_installer/sql/game/item_elementals.sql
index ff156d9f1f..5e6085fdd7 100644
--- a/trunk/dist/tools/sql/game/item_elementals.sql
+++ b/trunk/dist/db_installer/sql/game/item_elementals.sql
@@ -1,3 +1,4 @@
+DROP TABLE IF EXISTS `item_elementals`;
CREATE TABLE IF NOT EXISTS `item_elementals` (
`itemId` int(11) NOT NULL DEFAULT 0,
`elemType` tinyint(1) NOT NULL DEFAULT -1,
diff --git a/trunk/dist/tools/sql/game/item_variables.sql b/trunk/dist/db_installer/sql/game/item_variables.sql
similarity index 80%
rename from trunk/dist/tools/sql/game/item_variables.sql
rename to trunk/dist/db_installer/sql/game/item_variables.sql
index 79b8068815..e4aa2b3270 100644
--- a/trunk/dist/tools/sql/game/item_variables.sql
+++ b/trunk/dist/db_installer/sql/game/item_variables.sql
@@ -1,3 +1,4 @@
+DROP TABLE IF EXISTS `item_variables`;
CREATE TABLE IF NOT EXISTS `item_variables` (
`id` int(10) UNSIGNED NOT NULL,
`var` varchar(255) NOT NULL,
diff --git a/trunk/dist/tools/sql/game/items.sql b/trunk/dist/db_installer/sql/game/items.sql
similarity index 94%
rename from trunk/dist/tools/sql/game/items.sql
rename to trunk/dist/db_installer/sql/game/items.sql
index 45ad0ecf48..aba2fb15ed 100644
--- a/trunk/dist/tools/sql/game/items.sql
+++ b/trunk/dist/db_installer/sql/game/items.sql
@@ -1,3 +1,4 @@
+DROP TABLE IF EXISTS `items`;
CREATE TABLE IF NOT EXISTS `items` (
`owner_id` INT, -- object id of the player or clan,owner of this item
`object_id` INT NOT NULL DEFAULT 0, -- object id of the item
diff --git a/trunk/dist/tools/sql/game/itemsonground.sql b/trunk/dist/db_installer/sql/game/itemsonground.sql
similarity index 89%
rename from trunk/dist/tools/sql/game/itemsonground.sql
rename to trunk/dist/db_installer/sql/game/itemsonground.sql
index b780f3906b..1e385e6ad7 100644
--- a/trunk/dist/tools/sql/game/itemsonground.sql
+++ b/trunk/dist/db_installer/sql/game/itemsonground.sql
@@ -1,3 +1,4 @@
+DROP TABLE IF EXISTS `itemsonground`;
CREATE TABLE IF NOT EXISTS `itemsonground` (
`object_id` int(11) NOT NULL DEFAULT '0',
`item_id` int(11) DEFAULT NULL,
diff --git a/trunk/dist/tools/sql/game/locations.sql b/trunk/dist/db_installer/sql/game/locations.sql
similarity index 100%
rename from trunk/dist/tools/sql/game/locations.sql
rename to trunk/dist/db_installer/sql/game/locations.sql
diff --git a/trunk/dist/tools/sql/game/merchant_lease.sql b/trunk/dist/db_installer/sql/game/merchant_lease.sql
similarity index 86%
rename from trunk/dist/tools/sql/game/merchant_lease.sql
rename to trunk/dist/db_installer/sql/game/merchant_lease.sql
index caa27dea46..e86517f8f3 100644
--- a/trunk/dist/tools/sql/game/merchant_lease.sql
+++ b/trunk/dist/db_installer/sql/game/merchant_lease.sql
@@ -1,3 +1,4 @@
+DROP TABLE IF EXISTS `merchant_lease`;
CREATE TABLE IF NOT EXISTS `merchant_lease` (
`merchant_id` int(11) NOT NULL DEFAULT 0,
`player_id` int(11) NOT NULL DEFAULT 0,
diff --git a/trunk/dist/tools/sql/game/messages.sql b/trunk/dist/db_installer/sql/game/messages.sql
similarity index 94%
rename from trunk/dist/tools/sql/game/messages.sql
rename to trunk/dist/db_installer/sql/game/messages.sql
index 59294466ec..b80a0585e1 100644
--- a/trunk/dist/tools/sql/game/messages.sql
+++ b/trunk/dist/db_installer/sql/game/messages.sql
@@ -1,3 +1,4 @@
+DROP TABLE IF EXISTS `messages`;
CREATE TABLE IF NOT EXISTS `messages` (
`messageId` INT NOT NULL DEFAULT 0,
`senderId` INT NOT NULL DEFAULT 0,
diff --git a/trunk/dist/tools/sql/game/mods_wedding.sql b/trunk/dist/db_installer/sql/game/mods_wedding.sql
similarity index 89%
rename from trunk/dist/tools/sql/game/mods_wedding.sql
rename to trunk/dist/db_installer/sql/game/mods_wedding.sql
index a73878bdc0..a20736aaf0 100644
--- a/trunk/dist/tools/sql/game/mods_wedding.sql
+++ b/trunk/dist/db_installer/sql/game/mods_wedding.sql
@@ -1,3 +1,4 @@
+DROP TABLE IF EXISTS `mods_wedding`;
CREATE TABLE IF NOT EXISTS `mods_wedding` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`player1Id` int(11) NOT NULL DEFAULT '0',
diff --git a/trunk/dist/tools/sql/game/npc_buffer.sql b/trunk/dist/db_installer/sql/game/npc_buffer.sql
similarity index 100%
rename from trunk/dist/tools/sql/game/npc_buffer.sql
rename to trunk/dist/db_installer/sql/game/npc_buffer.sql
diff --git a/trunk/dist/tools/sql/game/olympiad_data.sql b/trunk/dist/db_installer/sql/game/olympiad_data.sql
similarity index 90%
rename from trunk/dist/tools/sql/game/olympiad_data.sql
rename to trunk/dist/db_installer/sql/game/olympiad_data.sql
index 35ac5fad9a..730b26c786 100644
--- a/trunk/dist/tools/sql/game/olympiad_data.sql
+++ b/trunk/dist/db_installer/sql/game/olympiad_data.sql
@@ -1,3 +1,4 @@
+DROP TABLE IF EXISTS `olympiad_data`;
CREATE TABLE IF NOT EXISTS `olympiad_data` (
`id` TINYINT UNSIGNED NOT NULL DEFAULT 0,
`current_cycle` MEDIUMINT UNSIGNED NOT NULL DEFAULT 1,
diff --git a/trunk/dist/tools/sql/game/olympiad_fights.sql b/trunk/dist/db_installer/sql/game/olympiad_fights.sql
similarity index 91%
rename from trunk/dist/tools/sql/game/olympiad_fights.sql
rename to trunk/dist/db_installer/sql/game/olympiad_fights.sql
index fba150333e..b835c29e6b 100644
--- a/trunk/dist/tools/sql/game/olympiad_fights.sql
+++ b/trunk/dist/db_installer/sql/game/olympiad_fights.sql
@@ -1,3 +1,4 @@
+DROP TABLE IF EXISTS `olympiad_fights`;
CREATE TABLE IF NOT EXISTS `olympiad_fights` (
`charOneId` int(10) unsigned NOT NULL,
`charTwoId` int(10) unsigned NOT NULL,
diff --git a/trunk/dist/tools/sql/game/olympiad_nobles.sql b/trunk/dist/db_installer/sql/game/olympiad_nobles.sql
similarity index 93%
rename from trunk/dist/tools/sql/game/olympiad_nobles.sql
rename to trunk/dist/db_installer/sql/game/olympiad_nobles.sql
index d7ac04ecba..1adbe23982 100644
--- a/trunk/dist/tools/sql/game/olympiad_nobles.sql
+++ b/trunk/dist/db_installer/sql/game/olympiad_nobles.sql
@@ -1,3 +1,4 @@
+DROP TABLE IF EXISTS `olympiad_nobles`;
CREATE TABLE IF NOT EXISTS `olympiad_nobles` (
`charId` int(10) unsigned NOT NULL DEFAULT 0,
`class_id` tinyint(3) unsigned NOT NULL DEFAULT 0,
diff --git a/trunk/dist/tools/sql/game/olympiad_nobles_eom.sql b/trunk/dist/db_installer/sql/game/olympiad_nobles_eom.sql
similarity index 90%
rename from trunk/dist/tools/sql/game/olympiad_nobles_eom.sql
rename to trunk/dist/db_installer/sql/game/olympiad_nobles_eom.sql
index 881f0dd9f1..9ca5120c36 100644
--- a/trunk/dist/tools/sql/game/olympiad_nobles_eom.sql
+++ b/trunk/dist/db_installer/sql/game/olympiad_nobles_eom.sql
@@ -1,3 +1,4 @@
+DROP TABLE IF EXISTS `olympiad_nobles_eom`;
CREATE TABLE IF NOT EXISTS `olympiad_nobles_eom` (
`charId` int(10) unsigned NOT NULL DEFAULT 0,
`class_id` tinyint(3) unsigned NOT NULL DEFAULT 0,
diff --git a/trunk/dist/tools/sql/game/petition_feedback.sql b/trunk/dist/db_installer/sql/game/petition_feedback.sql
similarity index 84%
rename from trunk/dist/tools/sql/game/petition_feedback.sql
rename to trunk/dist/db_installer/sql/game/petition_feedback.sql
index ed9025ead4..664d2a1b88 100644
--- a/trunk/dist/tools/sql/game/petition_feedback.sql
+++ b/trunk/dist/db_installer/sql/game/petition_feedback.sql
@@ -1,3 +1,4 @@
+DROP TABLE IF EXISTS `petition_feedback`;
CREATE TABLE IF NOT EXISTS `petition_feedback` (
`charName` VARCHAR(35) NOT NULL,
`gmName` VARCHAR(35) NOT NULL,
diff --git a/trunk/dist/tools/sql/game/pets.sql b/trunk/dist/db_installer/sql/game/pets.sql
similarity index 92%
rename from trunk/dist/tools/sql/game/pets.sql
rename to trunk/dist/db_installer/sql/game/pets.sql
index 77b30ca930..6f18180f81 100644
--- a/trunk/dist/tools/sql/game/pets.sql
+++ b/trunk/dist/db_installer/sql/game/pets.sql
@@ -1,3 +1,4 @@
+DROP TABLE IF EXISTS `pets`;
CREATE TABLE IF NOT EXISTS `pets` (
`item_obj_id` int(10) unsigned NOT NULL,
`name` varchar(16),
diff --git a/trunk/dist/tools/sql/game/pets_skills.sql b/trunk/dist/db_installer/sql/game/pets_skills.sql
similarity index 100%
rename from trunk/dist/tools/sql/game/pets_skills.sql
rename to trunk/dist/db_installer/sql/game/pets_skills.sql
diff --git a/trunk/dist/tools/sql/game/posts.sql b/trunk/dist/db_installer/sql/game/posts.sql
similarity index 91%
rename from trunk/dist/tools/sql/game/posts.sql
rename to trunk/dist/db_installer/sql/game/posts.sql
index be34a9b0f1..076536d120 100644
--- a/trunk/dist/tools/sql/game/posts.sql
+++ b/trunk/dist/db_installer/sql/game/posts.sql
@@ -1,3 +1,4 @@
+DROP TABLE IF EXISTS `posts`;
CREATE TABLE IF NOT EXISTS `posts` (
`post_id` int(8) NOT NULL DEFAULT '0',
`post_owner_name` varchar(255) NOT NULL DEFAULT '',
diff --git a/trunk/dist/tools/sql/game/punishments.sql b/trunk/dist/db_installer/sql/game/punishments.sql
similarity index 90%
rename from trunk/dist/tools/sql/game/punishments.sql
rename to trunk/dist/db_installer/sql/game/punishments.sql
index 0656a628b9..e7019913b3 100644
--- a/trunk/dist/tools/sql/game/punishments.sql
+++ b/trunk/dist/db_installer/sql/game/punishments.sql
@@ -1,3 +1,4 @@
+DROP TABLE IF EXISTS `punishments`;
CREATE TABLE IF NOT EXISTS `punishments` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`key` varchar(255) NOT NULL,
diff --git a/trunk/dist/tools/sql/game/quest_global_data.sql b/trunk/dist/db_installer/sql/game/quest_global_data.sql
similarity index 91%
rename from trunk/dist/tools/sql/game/quest_global_data.sql
rename to trunk/dist/db_installer/sql/game/quest_global_data.sql
index 0281297cc5..02235a5d1c 100644
--- a/trunk/dist/tools/sql/game/quest_global_data.sql
+++ b/trunk/dist/db_installer/sql/game/quest_global_data.sql
@@ -3,6 +3,7 @@
-- against it, primarily for aesthetic purposes, cleaningness of code, expectability, and
-- to keep char-related data purely as char-related data, global purely as global.
+DROP TABLE IF EXISTS `quest_global_data`;
CREATE TABLE IF NOT EXISTS `quest_global_data` (
`quest_name` VARCHAR(40) NOT NULL DEFAULT '',
`var` VARCHAR(20) NOT NULL DEFAULT '',
diff --git a/trunk/dist/tools/sql/game/raidboss_spawnlist.sql b/trunk/dist/db_installer/sql/game/raidboss_spawnlist.sql
similarity index 98%
rename from trunk/dist/tools/sql/game/raidboss_spawnlist.sql
rename to trunk/dist/db_installer/sql/game/raidboss_spawnlist.sql
index 802478459d..26d1f3d50c 100644
--- a/trunk/dist/tools/sql/game/raidboss_spawnlist.sql
+++ b/trunk/dist/db_installer/sql/game/raidboss_spawnlist.sql
@@ -1,3 +1,4 @@
+DROP TABLE IF EXISTS `raidboss_spawnlist`;
CREATE TABLE IF NOT EXISTS `raidboss_spawnlist` (
`boss_id` smallint(5) unsigned NOT NULL,
`amount` tinyint(1) unsigned NOT NULL DEFAULT '1',
diff --git a/trunk/dist/tools/sql/game/rainbowsprings_attacker_list.sql b/trunk/dist/db_installer/sql/game/rainbowsprings_attacker_list.sql
similarity index 77%
rename from trunk/dist/tools/sql/game/rainbowsprings_attacker_list.sql
rename to trunk/dist/db_installer/sql/game/rainbowsprings_attacker_list.sql
index 872c3b96df..9c19d6ac3e 100644
--- a/trunk/dist/tools/sql/game/rainbowsprings_attacker_list.sql
+++ b/trunk/dist/db_installer/sql/game/rainbowsprings_attacker_list.sql
@@ -1,3 +1,4 @@
+DROP TABLE IF EXISTS `rainbowsprings_attacker_list`;
CREATE TABLE IF NOT EXISTS `rainbowsprings_attacker_list` (
`clanId` int(10) DEFAULT NULL,
`war_decrees_count` double(20,0) DEFAULT NULL,
diff --git a/trunk/dist/tools/sql/game/random_spawn.sql b/trunk/dist/db_installer/sql/game/random_spawn.sql
similarity index 100%
rename from trunk/dist/tools/sql/game/random_spawn.sql
rename to trunk/dist/db_installer/sql/game/random_spawn.sql
diff --git a/trunk/dist/tools/sql/game/random_spawn_loc.sql b/trunk/dist/db_installer/sql/game/random_spawn_loc.sql
similarity index 100%
rename from trunk/dist/tools/sql/game/random_spawn_loc.sql
rename to trunk/dist/db_installer/sql/game/random_spawn_loc.sql
diff --git a/trunk/dist/tools/sql/game/siegable_clanhall.sql b/trunk/dist/db_installer/sql/game/siegable_clanhall.sql
similarity index 95%
rename from trunk/dist/tools/sql/game/siegable_clanhall.sql
rename to trunk/dist/db_installer/sql/game/siegable_clanhall.sql
index bceef77d79..3c4806019b 100644
--- a/trunk/dist/tools/sql/game/siegable_clanhall.sql
+++ b/trunk/dist/db_installer/sql/game/siegable_clanhall.sql
@@ -6,6 +6,7 @@
-- mm = Minutes of the day when siege must start
-- Example for a siege each 7 days which starts at 12 o clock: 7;0;0;12;00
+DROP TABLE IF EXISTS `siegable_clanhall`;
CREATE TABLE IF NOT EXISTS `siegable_clanhall` (
`clanHallId` int(10) NOT NULL DEFAULT '0',
`name` varchar(45) DEFAULT NULL,
diff --git a/trunk/dist/tools/sql/game/siegable_hall_flagwar_attackers.sql b/trunk/dist/db_installer/sql/game/siegable_hall_flagwar_attackers.sql
similarity index 85%
rename from trunk/dist/tools/sql/game/siegable_hall_flagwar_attackers.sql
rename to trunk/dist/db_installer/sql/game/siegable_hall_flagwar_attackers.sql
index e32f053b90..ce20145c42 100644
--- a/trunk/dist/tools/sql/game/siegable_hall_flagwar_attackers.sql
+++ b/trunk/dist/db_installer/sql/game/siegable_hall_flagwar_attackers.sql
@@ -1,3 +1,4 @@
+DROP TABLE IF EXISTS `siegable_hall_flagwar_attackers`;
CREATE TABLE IF NOT EXISTS `siegable_hall_flagwar_attackers` (
`hall_id` tinyint(2) unsigned NOT NULL DEFAULT '0',
`flag` int(10) unsigned NOT NULL DEFAULT '0',
diff --git a/trunk/dist/tools/sql/game/siegable_hall_flagwar_attackers_members.sql b/trunk/dist/db_installer/sql/game/siegable_hall_flagwar_attackers_members.sql
similarity index 83%
rename from trunk/dist/tools/sql/game/siegable_hall_flagwar_attackers_members.sql
rename to trunk/dist/db_installer/sql/game/siegable_hall_flagwar_attackers_members.sql
index 1439bfc65b..4d363b1754 100644
--- a/trunk/dist/tools/sql/game/siegable_hall_flagwar_attackers_members.sql
+++ b/trunk/dist/db_installer/sql/game/siegable_hall_flagwar_attackers_members.sql
@@ -1,3 +1,4 @@
+DROP TABLE IF EXISTS `siegable_hall_flagwar_attackers_members`;
CREATE TABLE IF NOT EXISTS `siegable_hall_flagwar_attackers_members` (
`hall_id` tinyint(2) unsigned NOT NULL DEFAULT '0',
`clan_id` int(10) unsigned NOT NULL DEFAULT '0',
diff --git a/trunk/dist/tools/sql/game/siege_clans.sql b/trunk/dist/db_installer/sql/game/siege_clans.sql
similarity index 86%
rename from trunk/dist/tools/sql/game/siege_clans.sql
rename to trunk/dist/db_installer/sql/game/siege_clans.sql
index 10430ad219..810005dae7 100644
--- a/trunk/dist/tools/sql/game/siege_clans.sql
+++ b/trunk/dist/db_installer/sql/game/siege_clans.sql
@@ -1,3 +1,4 @@
+DROP TABLE IF EXISTS `siege_clans`;
CREATE TABLE IF NOT EXISTS `siege_clans` (
`castle_id` int(1) NOT NULL DEFAULT 0,
`clan_id` int(11) NOT NULL DEFAULT 0,
diff --git a/trunk/dist/tools/sql/game/spawnlist.sql b/trunk/dist/db_installer/sql/game/spawnlist.sql
similarity index 100%
rename from trunk/dist/tools/sql/game/spawnlist.sql
rename to trunk/dist/db_installer/sql/game/spawnlist.sql
diff --git a/trunk/dist/tools/sql/game/teleport.sql b/trunk/dist/db_installer/sql/game/teleport.sql
similarity index 100%
rename from trunk/dist/tools/sql/game/teleport.sql
rename to trunk/dist/db_installer/sql/game/teleport.sql
diff --git a/trunk/dist/tools/sql/game/topic.sql b/trunk/dist/db_installer/sql/game/topic.sql
similarity index 92%
rename from trunk/dist/tools/sql/game/topic.sql
rename to trunk/dist/db_installer/sql/game/topic.sql
index c0cd2af820..ebe5be412c 100644
--- a/trunk/dist/tools/sql/game/topic.sql
+++ b/trunk/dist/db_installer/sql/game/topic.sql
@@ -1,3 +1,4 @@
+DROP TABLE IF EXISTS `topic`;
CREATE TABLE IF NOT EXISTS `topic` (
`topic_id` int(8) NOT NULL DEFAULT '0',
`topic_forum_id` int(8) NOT NULL DEFAULT '0',
diff --git a/trunk/dist/tools/sql/login/account_data.sql b/trunk/dist/db_installer/sql/login/account_data.sql
similarity index 84%
rename from trunk/dist/tools/sql/login/account_data.sql
rename to trunk/dist/db_installer/sql/login/account_data.sql
index d090180a2c..4fcb334775 100644
--- a/trunk/dist/tools/sql/login/account_data.sql
+++ b/trunk/dist/db_installer/sql/login/account_data.sql
@@ -1,3 +1,4 @@
+DROP TABLE IF EXISTS `account_data`;
CREATE TABLE IF NOT EXISTS `account_data` (
`account_name` VARCHAR(45) NOT NULL DEFAULT '',
`var` VARCHAR(20) NOT NULL DEFAULT '',
diff --git a/trunk/dist/tools/sql/login/accounts.sql b/trunk/dist/db_installer/sql/login/accounts.sql
similarity index 92%
rename from trunk/dist/tools/sql/login/accounts.sql
rename to trunk/dist/db_installer/sql/login/accounts.sql
index a7ee2a763d..6a65467e95 100644
--- a/trunk/dist/tools/sql/login/accounts.sql
+++ b/trunk/dist/db_installer/sql/login/accounts.sql
@@ -1,3 +1,4 @@
+DROP TABLE IF EXISTS `accounts`;
CREATE TABLE IF NOT EXISTS `accounts` (
`login` VARCHAR(45) NOT NULL default '',
`password` VARCHAR(45),
diff --git a/trunk/dist/tools/sql/login/accounts_ipauth.sql b/trunk/dist/db_installer/sql/login/accounts_ipauth.sql
similarity index 81%
rename from trunk/dist/tools/sql/login/accounts_ipauth.sql
rename to trunk/dist/db_installer/sql/login/accounts_ipauth.sql
index a6c92e29e9..38b7ded763 100644
--- a/trunk/dist/tools/sql/login/accounts_ipauth.sql
+++ b/trunk/dist/db_installer/sql/login/accounts_ipauth.sql
@@ -1,3 +1,4 @@
+DROP TABLE IF EXISTS `accounts_ipauth`;
CREATE TABLE IF NOT EXISTS `accounts_ipauth` (
`login` varchar(45) NOT NULL,
`ip` char(15) NOT NULL,
diff --git a/trunk/dist/tools/sql/login/gameservers.sql b/trunk/dist/db_installer/sql/login/gameservers.sql
similarity index 87%
rename from trunk/dist/tools/sql/login/gameservers.sql
rename to trunk/dist/db_installer/sql/login/gameservers.sql
index 3632f20ba2..f35d6dffd1 100644
--- a/trunk/dist/tools/sql/login/gameservers.sql
+++ b/trunk/dist/db_installer/sql/login/gameservers.sql
@@ -1,3 +1,4 @@
+DROP TABLE IF EXISTS `gameservers`;
CREATE TABLE IF NOT EXISTS `gameservers` (
`server_id` int(11) NOT NULL DEFAULT '0',
`hexid` varchar(50) NOT NULL DEFAULT '',
diff --git a/trunk/dist/tools/database_installer.bat b/trunk/dist/tools/database_installer.bat
deleted file mode 100644
index a115d30ef5..0000000000
--- a/trunk/dist/tools/database_installer.bat
+++ /dev/null
@@ -1,93 +0,0 @@
-@Echo off
-TITLE Mobius Project - Database Installer
-cls
-echo This script will help you install the server database.
-echo To continue, press the space bar to exit Ctrl + C
-pause > nul
-echo ======================================================================
-echo Checks environment ...
-mysql --help >nul 2>nul
-if errorlevel 1 goto nomysql
-echo - MySQL... ok
-echo ======================================================================
-echo Database installer is ready.
-echo Please perform the initial configuration
-echo ======================================================================
-set DO_INSTALL=Y
-set /P DO_INSTALL=Install the login server [Y/n]
-if "%DO_INSTALL%"=="N" goto installgame
-if "%DO_INSTALL%"=="n" goto installgame
-set INSTALL_MODE=login
-:prepare
-set DB_HOST=localhost
-set DB_USER=root
-set DB_PASSWORD=
-set DB_NAME=lineage2
-:step2
-
-set /P DB_HOST=The database server [%DB_HOST%]:
-
-set /P DB_USER=User DB [%DB_USER%]:
-
-set /P DB_PASSWORD=The %DB_USER% user password:
-
-set /P DB_NAME=DB name [%DB_NAME%]:
-SET MYSQL_PARAM=-u %DB_USER% -h %DB_HOST%
-if NOT "%DB_PASSWORD%"=="" SET MYSQL_PARAM=%MYSQL_PARAM% --password=%DB_PASSWORD%
-echo exit | mysql %MYSQL_PARAM% >nul 2>nul
-if errorlevel 1 goto dberror
-echo exit | mysql %MYSQL_PARAM% %DB_NAME% >nul 2>nul
-if errorlevel 1 goto dbnotexists
-goto install
-:dbnotexists
-echo The database %DB_NAME% does not exist!
-set ANSWER=Y
-set /P ANSWER=Create it [Y/n]?
-if "%ANSWER%"=="y" goto createdb
-if "%ANSWER%"=="Y" goto createdb
-goto step2
-:createdb
-echo create database %DB_NAME% charset=utf8; | mysql %MYSQL_PARAM%
-if errorlevel 1 goto dberror
-goto install
-:dberror
-echo ! Can not connect to the database. Check the connection settings!
-goto step2
-
-:install
-cls
-echo ======================================================================
-echo Check the input parameters
-echo - The server will be installed in %INSTALL_DIR%
-echo - The database server %DB_HOST%
-echo - Database Name %DB_NAME%
-set ANSWER=Y
-set /P ANSWER=All settings are correct [Y/n]?
-if "%ANSWER%"=="n" goto step1
-if "%ANSWER%"=="N" goto step1
-echo - Installing the database, wait...
-for %%i in (sql\%INSTALL_MODE%\*.sql) do mysql %MYSQL_PARAM% %DB_NAME% < %%i
-if "%INSTALL_MODE%"=="login" goto installgame
-goto end
-:installgame
-cls
-set DO_INSTALL=Y
-set /P DO_INSTALL=Install game server [Y/n]
-if "%DO_INSTALL%"=="N" goto end
-if "%DO_INSTALL%"=="n" goto end
-set INSTALL_MODE=game
-goto prepare
-:nomysql
-cls
-echo ! Utility mysql available
-echo Make sure that mysql.exe in the environment variable
-echo or the current directory with the script installation
-goto end
-:end
-cls
-echo ======================================================================
-echo ======================================================================
-echo Installation is complete...
-echo ======================================================================
-echo ======================================================================
-pause > nul
\ No newline at end of file
diff --git a/trunk/dist/tools/database_installer.sh b/trunk/dist/tools/database_installer.sh
deleted file mode 100644
index 11c7ff7258..0000000000
--- a/trunk/dist/tools/database_installer.sh
+++ /dev/null
@@ -1,270 +0,0 @@
-#!/bin/bash
-trap finish 2
-
-configure() {
-echo "#############################################"
-echo "# You entered script configuration area #"
-echo "# No change will be performed in your DB #"
-echo "# I will just ask you some questions about #"
-echo "# your hosts and DB. #"
-echo "#############################################"
-MYSQLDUMPPATH=`which -a mysqldump 2>/dev/null`
-MYSQLPATH=`which -a mysql 2>/dev/null`
-if [ $? -ne 0 ]; then
-echo "We were unable to find MySQL binaries on your path"
-while :
- do
- echo -ne "\nPlease enter MySQL binaries directory (no trailing slash): "
- read MYSQLBINPATH
- if [ -e "$MYSQLBINPATH" ] && [ -d "$MYSQLBINPATH" ] && \
- [ -e "$MYSQLBINPATH/mysqldump" ] && [ -e "$MYSQLBINPATH/mysql" ]; then
- MYSQLDUMPPATH="$MYSQLBINPATH/mysqldump"
- MYSQLPATH="$MYSQLBINPATH/mysql"
- break
- else
- echo "The data you entered is invalid. Please verify and try again."
- exit 1
- fi
- done
-fi
-#LS
-echo -ne "\nPlease enter MySQL Login Server hostname (default localhost): "
-read LSDBHOST
-if [ -z "$LSDBHOST" ]; then
- LSDBHOST="localhost"
-fi
-echo -ne "\nPlease enter MySQL Login Server database name (default lineage2): "
-read LSDB
-if [ -z "$LSDB" ]; then
- LSDB="lineage2"
-fi
-echo -ne "\nPlease enter MySQL Login Server user (default root): "
-read LSUSER
-if [ -z "$LSUSER" ]; then
- LSUSER="root"
-fi
-echo -ne "\nPlease enter MySQL Login Server $LSUSER's password (won't be displayed) :"
-stty -echo
-read LSPASS
-stty echo
-echo ""
-if [ -z "$LSPASS" ]; then
- echo "Hum.. I'll let it be but don't be stupid and avoid empty passwords"
-elif [ "$LSUSER" == "$LSPASS" ]; then
- echo "You're not too brilliant choosing passwords huh?"
-fi
-#GS
-echo -ne "\nPlease enter MySQL Game Server hostname (default $LSDBHOST): "
-read GSDBHOST
-if [ -z "$GSDBHOST" ]; then
- GSDBHOST="localhost"
-fi
-echo -ne "\nPlease enter MySQL Game Server database name (default l2jgs): "
-read GSDB
-if [ -z "$GSDB" ]; then
- GSDB="lineage2"
-fi
-echo -ne "\nPlease enter MySQL Game Server user (default $LSUSER): "
-read GSUSER
-if [ -z "$GSUSER" ]; then
- GSUSER="root"
-fi
-echo -ne "\nPlease enter MySQL Game Server $GSUSER's password (won't be displayed): "
-stty -echo
-read GSPASS
-stty echo
-echo ""
-if [ -z "$GSPASS" ]; then
- echo "Hum.. I'll let it be but don't be stupid and avoid empty passwords"
-elif [ "$GSUSER" == "$GSPASS" ]; then
- echo "You're not too brilliant choosing passwords huh?"
-fi
-save_config $1
-}
-
-save_config() {
-if [ -n "$1" ]; then
-CONF="$1"
-else
-CONF="database_installer.rc"
-fi
-echo ""
-echo "With these data I can generate a configuration file which can be read"
-echo "on future updates. WARNING: this file will contain clear text passwords!"
-echo -ne "Shall I generate config file $CONF? (Y/n):"
-read SAVE
-if [ "$SAVE" == "y" -o "$SAVE" == "Y" -o "$SAVE" == "" ];then
-cat <$CONF
-#Configuration settings for L2J-Datapack database installer script
-MYSQLDUMPPATH=$MYSQLDUMPPATH
-MYSQLPATH=$MYSQLPATH
-LSDBHOST=$LSDBHOST
-LSDB=$LSDB
-LSUSER=$LSUSER
-LSPASS=$LSPASS
-GSDBHOST=$GSDBHOST
-GSDB=$GSDB
-GSUSER=$GSUSER
-GSPASS=$GSPASS
-EOF
-chmod 600 $CONF
-echo "Configuration saved as $CONF"
-echo "Permissions changed to 600 (rw- --- ---)"
-elif [ "$SAVE" != "n" -a "$SAVE" != "N" ]; then
- save_config
-fi
-}
-
-load_config() {
-if [ -n "$1" ]; then
-CONF="$1"
-else
-CONF="database_installer.rc"
-fi
-if [ -e "$CONF" ] && [ -f "$CONF" ]; then
-. $CONF
-else
-echo "Settings file not found: $CONF"
-echo "You can specify an alternate settings filename:"
-echo $0 config_filename
-echo ""
-echo "If file doesn't exist it can be created"
-echo "If nothing is specified script will try to work with ./database_installer.rc"
-echo ""
-configure $CONF
-fi
-}
-
-asklogin(){
-clear
-echo "#############################################"
-echo "# WARNING: This section of the script CAN #"
-echo "# destroy your characters and accounts #"
-echo "# information. Read questions carefully #"
-echo "# before you reply. #"
-echo "#############################################"
-echo ""
-echo "Choose full (f) if you don't have and 'accounts' table or would"
-echo "prefer to erase the existing accounts information."
-echo "Choose skip (s) to skip loginserver DB installation and go to"
-echo "gameserver DB installation/upgrade."
-echo -ne "LOGINSERVER DB install type: (f) full, (s) skip or (q) quit? "
-read LOGINPROMPT
-case "$LOGINPROMPT" in
- "f"|"F") logininstall; loginupgrade;;
- "s"|"S") gsbackup;;
- "q"|"Q") finish;;
- *) asklogin;;
-esac
-}
-
-logininstall(){
-echo "Deleting loginserver tables for new content."
-$MYL < ls_cleanup.sql
-}
-
-loginupgrade(){
-clear
-echo "Installling new loginserver content."
-for login in $(ls ./sql/login/*.sql);do
- echo "Installing loginserver table : $login"
- $MYL < $login
-done
-gsbackup
-}
-
-gsbackup(){
-while :
- do
- echo ""
- echo -ne "Do you want to make a backup copy of your GSDB? (y/n): "
- read LSB
- if [ "$LSB" == "Y" -o "$LSB" == "y" ]; then
- echo "Making a backup of the original gameserver database."
- $MYSQLDUMPPATH --add-drop-table -h $GSDBHOST -u $GSUSER --password=$GSPASS $GSDB > gs_backup.sql
- if [ $? -ne 0 ];then
- clear
- echo ""
- echo "There was a problem accesing your GS database, either it wasnt created or authentication data is incorrect."
- exit 1
- fi
- break
- elif [ "$LSB" == "n" -o "$LSB" == "N" ]; then
- break
- fi
- done
- asktype
-}
-
-lsbackup(){
-while :
- do
- clear
- echo ""
- echo -ne "Do you want to make a backup copy of your LSDB? (y/n): "
- read LSB
- if [ "$LSB" == "Y" -o "$LSB" == "y" ]; then
- echo "Making a backup of the original loginserver database."
- $MYSQLDUMPPATH --add-drop-table -h $LSDBHOST -u $LSUSER --password=$LSPASS $LSDB > ls_backup.sql
- if [ $? -ne 0 ];then
- clear
- echo ""
- echo "There was a problem accesing your LS database, either it wasnt created or authentication data is incorrect."
- exit 1
- fi
- break
- elif [ "$LSB" == "n" -o "$LSB" == "N" ]; then
- break
- fi
- done
-}
-
-asktype(){
-echo ""
-echo ""
-echo "WARNING: A full install (f) will destroy all existing character data."
-echo -ne "GAMESERVER DB install type: (f) full install, (u) upgrade or (q) quit? "
-read INSTALLTYPE
-case "$INSTALLTYPE" in
- "f"|"F") fullinstall; upgradeinstall I;;
- "u"|"U") upgradeinstall U;;
- "q"|"Q") finish;;
- *) asktype;;
-esac
-}
-
-fullinstall(){
-clear
-echo "Deleting all gameserver tables for new content."
-$MYG < gs_cleanup.sql
-}
-
-upgradeinstall(){
-clear
-if [ "$1" == "I" ]; then
-echo "Installling new gameserver content."
-else
-echo "Upgrading gameserver content"
-fi
-
-for gs in $(ls ./sql/game/*.sql);do
- echo "Installing GameServer table : $gs"
- $MYG < $gs
-done
-
-finish
-}
-
-finish(){
-clear
-echo "Script execution finished."
-echo ""
-exit 0
-}
-
-clear
-load_config $1
-MYL="$MYSQLPATH -h $LSDBHOST -u $LSUSER --password=$LSPASS -D $LSDB"
-MYG="$MYSQLPATH -h $GSDBHOST -u $GSUSER --password=$GSPASS -D $GSDB"
-lsbackup
-asklogin
\ No newline at end of file
diff --git a/trunk/dist/tools/mysql.exe b/trunk/dist/tools/mysql.exe
deleted file mode 100644
index 717eeea34c9930caa2637e7a8bc2a59183078e90..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001
literal 1622016
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