From 572e2c0dcc4e124136f9ad4bc493184e917e8f63 Mon Sep 17 00:00:00 2001 From: ultramage Date: Fri, 2 Mar 2007 00:11:54 +0000 Subject: EOL-styled some more files git-svn-id: https://rathena.svn.sourceforge.net/svnroot/rathena/trunk@9947 54d463be-8e91-2dee-dedb-b68131a5f0ec --- eAthena-6.dsw | 178 +- lib/zlib-1.2.3 | Bin 58 -> 0 bytes .../eAAC_Scripts/DonationGirl/sql/donate.sql | 10 +- .../DonationGirl/sql/donate_item_db.sql | 26 +- npc/jobs/2-2/sage.txt | 8 +- npc/jobs/novice/supernovice.txt | 2 +- npc/sample/npc_test_setitemx.txt | 140 +- sql-files/convert_engine.sql | 44 +- sql-files/convert_passwords.sql | 6 +- sql-files/item_db2.sql | 84 +- sql-files/logs.sql | 224 +-- sql-files/mail.sql | 24 +- sql-files/main.sql | 1156 ++++++------ sql-files/oA2eA-rc5.sql | 408 ++-- sql-files/update_logs.sql | 26 +- sql-files/upgrade_0.5.2_database.sql | 2 +- sql-files/upgrade_0.5.2_main.sql | 124 +- sql-files/upgrade_1.0.0-rc1_main.sql | 6 +- sql-files/upgrade_1.0.0-rc2_database.sql | 8 +- sql-files/upgrade_1.0.0-rc5_database.sql | 8 +- sql-files/upgrade_svn1759.sql | 36 +- sql-files/upgrade_svn1863.sql | 14 +- sql-files/upgrade_svn2068.sql | 6 +- sql-files/upgrade_svn2252.sql | 28 +- sql-files/upgrade_svn2331.sql | 6 +- sql-files/upgrade_svn2574.sql | 4 +- sql-files/upgrade_svn3273.sql | 24 +- sql-files/upgrade_svn3746.sql | 2 +- sql-files/upgrade_svn4367.sql | 18 +- sql-files/upgrade_svn4941.sql | 10 +- sql-files/upgrade_svn5311.sql | 2 +- sql-files/upgrade_svn5322.sql | 2 +- sql-files/upgrade_svn5455.sql | 4 +- sql-files/upgrade_svn5607.sql | 2 +- sql-files/upgrade_svn5834.sql | 2 +- sql-files/upgrade_svn5902.sql | 28 +- sql-files/upgrade_svn6533.sql | 4 +- sql-files/upgrade_svn6868.sql | 2 +- sql-files/upgrade_svn7146.sql | 2 +- sql-files/upgrade_svn7580.sql | 4 +- sql-files/upgrade_svn7706.sql | 72 +- sql-files/upgrade_svn7768.sql | 14 +- sql-files/upgrade_svn8630.sql | 2 +- sql-files/upgrade_svn8675.sql | 2 +- sql-files/upgrade_svn8728.sql | 8 +- sql-files/upgrade_svn9050.sql | 12 +- sql-files/upgrade_svn9135.sql | 2 +- src/map/script.c | 1 + src/tool/grfio.c | 1964 ++++++++++---------- src/tool/grfio.h | 46 +- src/tool/mapcache.c | 404 ++-- src/zlib/zlib-1.2.3 | Bin 58 -> 0 bytes 52 files changed, 2606 insertions(+), 2605 deletions(-) diff --git a/eAthena-6.dsw b/eAthena-6.dsw index db1930d17..c28270df2 100644 --- a/eAthena-6.dsw +++ b/eAthena-6.dsw @@ -1,89 +1,89 @@ -Microsoft Developer Studio Workspace File, Format Version 6.00 -# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE! - -############################################################################### - -Project: "login_txt"=".\vcproj-6\login-server_txt.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "login_sql"=".\vcproj-6\login-server_sql.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "char_txt"=".\vcproj-6\char-server_txt.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "char_sql"=".\vcproj-6\char-server_sql.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "map_txt"=".\vcproj-6\map-server_txt.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "map_sql"=".\vcproj-6\map-server_sql.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Global: - -Package=<5> -{{{ -}}} - -Package=<3> -{{{ -}}} - -############################################################################### - +Microsoft Developer Studio Workspace File, Format Version 6.00 +# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE! + +############################################################################### + +Project: "login_txt"=".\vcproj-6\login-server_txt.dsp" - Package Owner=<4> + +Package=<5> +{{{ +}}} + +Package=<4> +{{{ +}}} + +############################################################################### + +Project: "login_sql"=".\vcproj-6\login-server_sql.dsp" - Package Owner=<4> + +Package=<5> +{{{ +}}} + +Package=<4> +{{{ +}}} + +############################################################################### + +Project: "char_txt"=".\vcproj-6\char-server_txt.dsp" - Package Owner=<4> + +Package=<5> +{{{ +}}} + +Package=<4> +{{{ +}}} + +############################################################################### + +Project: "char_sql"=".\vcproj-6\char-server_sql.dsp" - Package Owner=<4> + +Package=<5> +{{{ +}}} + +Package=<4> +{{{ +}}} + +############################################################################### + +Project: "map_txt"=".\vcproj-6\map-server_txt.dsp" - Package Owner=<4> + +Package=<5> +{{{ +}}} + +Package=<4> +{{{ +}}} + +############################################################################### + +Project: "map_sql"=".\vcproj-6\map-server_sql.dsp" - Package Owner=<4> + +Package=<5> +{{{ +}}} + +Package=<4> +{{{ +}}} + +############################################################################### + +Global: + +Package=<5> +{{{ +}}} + +Package=<3> +{{{ +}}} + +############################################################################### + diff --git a/lib/zlib-1.2.3 b/lib/zlib-1.2.3 index a6a9cc84d..e69de29bb 100644 Binary files a/lib/zlib-1.2.3 and b/lib/zlib-1.2.3 differ diff --git a/npc/custom/eAAC_Scripts/DonationGirl/sql/donate.sql b/npc/custom/eAAC_Scripts/DonationGirl/sql/donate.sql index 3b7eefbed..9315228a9 100644 --- a/npc/custom/eAAC_Scripts/DonationGirl/sql/donate.sql +++ b/npc/custom/eAAC_Scripts/DonationGirl/sql/donate.sql @@ -1,6 +1,6 @@ -CREATE TABLE `donate` ( - `account_id` int(11) unsigned NOT NULL, - `amount` float(5,2) unsigned NOT NULL, - `claimed` float(5,2) unsigned NOT NULL, - PRIMARY KEY (`account_id`,`amount`) +CREATE TABLE `donate` ( + `account_id` int(11) unsigned NOT NULL, + `amount` float(5,2) unsigned NOT NULL, + `claimed` float(5,2) unsigned NOT NULL, + PRIMARY KEY (`account_id`,`amount`) ) TYPE=MyISAM; \ No newline at end of file diff --git a/npc/custom/eAAC_Scripts/DonationGirl/sql/donate_item_db.sql b/npc/custom/eAAC_Scripts/DonationGirl/sql/donate_item_db.sql index 604373139..34519324b 100644 --- a/npc/custom/eAAC_Scripts/DonationGirl/sql/donate_item_db.sql +++ b/npc/custom/eAAC_Scripts/DonationGirl/sql/donate_item_db.sql @@ -1,14 +1,14 @@ -CREATE TABLE `donate_item_db` ( - `id` smallint(5) unsigned NOT NULL default '0', - `name` varchar(30) NOT NULL default '', - `price` float(5,2) unsigned NOT NULL, - PRIMARY KEY (`id`) -) TYPE=MyISAM; - -#(ID,'Name',Price); -REPLACE INTO `donate_item_db` VALUES (601,'Fly_Wing',0.06); -REPLACE INTO `donate_item_db` VALUES (602,'Butterfly_Wing',0.33); -REPLACE INTO `donate_item_db` VALUES (603,'Old_Blue_Box',10); -REPLACE INTO `donate_item_db` VALUES (604,'Dead_Branch',0.05); -REPLACE INTO `donate_item_db` VALUES (605,'Anodyne',2); +CREATE TABLE `donate_item_db` ( + `id` smallint(5) unsigned NOT NULL default '0', + `name` varchar(30) NOT NULL default '', + `price` float(5,2) unsigned NOT NULL, + PRIMARY KEY (`id`) +) TYPE=MyISAM; + +#(ID,'Name',Price); +REPLACE INTO `donate_item_db` VALUES (601,'Fly_Wing',0.06); +REPLACE INTO `donate_item_db` VALUES (602,'Butterfly_Wing',0.33); +REPLACE INTO `donate_item_db` VALUES (603,'Old_Blue_Box',10); +REPLACE INTO `donate_item_db` VALUES (604,'Dead_Branch',0.05); +REPLACE INTO `donate_item_db` VALUES (605,'Anodyne',2); REPLACE INTO `donate_item_db` VALUES (606,'Aloevera',2); \ No newline at end of file diff --git a/npc/jobs/2-2/sage.txt b/npc/jobs/2-2/sage.txt index cbb79973d..70d38bbc0 100644 --- a/npc/jobs/2-2/sage.txt +++ b/npc/jobs/2-2/sage.txt @@ -1558,15 +1558,15 @@ L_Menu1_2: L_Test1_14: mes "15. Which one isn't necessary to unlock the Blacksmith skill 'Maximize Power'?"; next; - menu "Hilt Bending",L_Test1_15,"Skin Tempering",-,"Hammer Fall",L_Test1_15,"Weapon Perfection",L_Test1_15; + menu "Hilt Binding",L_Test1_15,"Skin Tempering",-,"Hammer Fall",L_Test1_15,"Weapon Perfection",L_Test1_15; set @sage_test2,@sage_test2+5; L_Test1_15: - mes "16. What is the defense power and supplemental ability of a Ribbon?"; + mes "16. What is the defense power and supplemental ability of a Cute Ribbon?"; next; menu "0 / SP +20",L_Test1_16,"0 / SP +30",L_Test1_16,"1 / SP +20",-,"1 / SP +30",L_Test1_16; set @sage_test2,@sage_test2+5; L_Test1_16: - mes "17. Which class can't equip a Saint Robe?"; + mes "17. Which class can't equip a Saint's Robe?"; next; //Swordsmen can't equip it either as of this writing. menu "Swordsman",-,"Merchant",L_Test1_17,"Thief",-,"Acolyte",L_Test1_17; @@ -1584,7 +1584,7 @@ L_Menu1_2: L_Test1_19: mes "20. Which tree is said to be the world's root?"; next; - menu "Igg Drasil",-,"Idrasil",L_Menu2_3,"Master",L_Menu2_3,"Old Tree",L_Menu2_3; + menu "Yggdrasil",-,"Idrasil",L_Menu2_3,"Master",L_Menu2_3,"Old Tree",L_Menu2_3; set @sage_test2,@sage_test2+5; goto L_Menu2_3; //================================== diff --git a/npc/jobs/novice/supernovice.txt b/npc/jobs/novice/supernovice.txt index 4f94859bb..5212254b6 100644 --- a/npc/jobs/novice/supernovice.txt +++ b/npc/jobs/novice/supernovice.txt @@ -216,7 +216,7 @@ L_Otherjob: // -- Car Rental -- -aldebaran.gat,54,238,5 script Kafra 117,{ +aldebaran.gat,54,238,5 script Kafra::kaf_sn 117,{ if(BaseJob != Job_SuperNovice) goto L_Otherjob; if(checkcart() == 1) goto L_GotCart; mes "[Kafra]"; diff --git a/npc/sample/npc_test_setitemx.txt b/npc/sample/npc_test_setitemx.txt index 1e8d021e4..a13a3f836 100644 --- a/npc/sample/npc_test_setitemx.txt +++ b/npc/sample/npc_test_setitemx.txt @@ -1,70 +1,70 @@ -//by Lupus. -// SVN TRUNK 9940+ only - -//setiteminfo(itemID,n,Value), where n -// 0 value_buy; -// 1 value_sell; -// 2 type; -// 3 maxchance = Max drop chance of this item e.g. 1 = 0.01% , etc.. -// if = 0, then monsters don't drop it at all (rare or a quest item) -// if = 10000, then this item is sold in NPC shops only -// 4 sex; -// 5 equip; -// 6 weight; -// 7 atk; -// 8 def; -// 9 range; -// 10 slot; -// 11 look; -// 12 elv; -// 13 wlv; - -prontera.gat,164,161,5 script Lupus 1013,{ - menu "Make Knife[3] Edible",M_1, - "Make Apple Equippable",M_2, - "Edible Knife = Full SP",M_3, - "Knife = Weapon + 3 Notes",M_4; - close; - -M_1: - //WORKS! - mes "Ok. We Made Knife[3] Edible"; - setiteminfo(1201,2,0); //type = 0 : potion - setitemscript(1201,"{dispbottom \"* You used Knife[3]\";}"); - close; - -M_2: - //WORKS! - mes "Ok. We Made Apple Equippable"; - //item type -> headgear - setiteminfo(512,2,5); //type = 5 - //where to equip to - setiteminfo(512,5,512); //equip = 512 - //set as headgear location - setiteminfo(512,11,256); //loc = 256 - //set Headgear Sprite ID - setiteminfo(512,14,85); //view id = 85 - - setitemscript(512,"{dispbottom \"* Other item's changed\";}",0); - setitemscript(512,"{dispbottom \"* Equipped\";}",1); - setitemscript(512,"{dispbottom \"* Unequipped\";}",2); - close; - -M_3: - //WORKS! - mes "Ok. Now Edible Knife[3] restores your SP"; - setitemscript(1201,2,0); - setitemscript(1201,"{dispbottom \"* You ate Knife[3] + Full SP\"; percentheal 0,100;}"); - close; - -M_4: - //WORKS! - mes "Ok. We Made Knife... a weapon. But added 3 notes."; - setiteminfo(1201,2,4); //type = 4 : weapon again - setitemscript(1201,"{dispbottom \"* 1 Used\";}",0); - setitemscript(1201,"{dispbottom \"* 2 Equipped\";}",1); - setitemscript(1201,"{dispbottom \"* 3 Unequipped\";}",2); - close; - -} - +//by Lupus. +// SVN TRUNK 9940+ only + +//setiteminfo(itemID,n,Value), where n +// 0 value_buy; +// 1 value_sell; +// 2 type; +// 3 maxchance = Max drop chance of this item e.g. 1 = 0.01% , etc.. +// if = 0, then monsters don't drop it at all (rare or a quest item) +// if = 10000, then this item is sold in NPC shops only +// 4 sex; +// 5 equip; +// 6 weight; +// 7 atk; +// 8 def; +// 9 range; +// 10 slot; +// 11 look; +// 12 elv; +// 13 wlv; + +prontera.gat,164,161,5 script Lupus 1013,{ + menu "Make Knife[3] Edible",M_1, + "Make Apple Equippable",M_2, + "Edible Knife = Full SP",M_3, + "Knife = Weapon + 3 Notes",M_4; + close; + +M_1: + //WORKS! + mes "Ok. We Made Knife[3] Edible"; + setiteminfo(1201,2,0); //type = 0 : potion + setitemscript(1201,"{dispbottom \"* You used Knife[3]\";}"); + close; + +M_2: + //WORKS! + mes "Ok. We Made Apple Equippable"; + //item type -> headgear + setiteminfo(512,2,5); //type = 5 + //where to equip to + setiteminfo(512,5,512); //equip = 512 + //set as headgear location + setiteminfo(512,11,256); //loc = 256 + //set Headgear Sprite ID + setiteminfo(512,14,85); //view id = 85 + + setitemscript(512,"{dispbottom \"* Other item's changed\";}",0); + setitemscript(512,"{dispbottom \"* Equipped\";}",1); + setitemscript(512,"{dispbottom \"* Unequipped\";}",2); + close; + +M_3: + //WORKS! + mes "Ok. Now Edible Knife[3] restores your SP"; + setitemscript(1201,2,0); + setitemscript(1201,"{dispbottom \"* You ate Knife[3] + Full SP\"; percentheal 0,100;}"); + close; + +M_4: + //WORKS! + mes "Ok. We Made Knife... a weapon. But added 3 notes."; + setiteminfo(1201,2,4); //type = 4 : weapon again + setitemscript(1201,"{dispbottom \"* 1 Used\";}",0); + setitemscript(1201,"{dispbottom \"* 2 Equipped\";}",1); + setitemscript(1201,"{dispbottom \"* 3 Unequipped\";}",2); + close; + +} + diff --git a/sql-files/convert_engine.sql b/sql-files/convert_engine.sql index 98bdec409..9db50748e 100644 --- a/sql-files/convert_engine.sql +++ b/sql-files/convert_engine.sql @@ -1,22 +1,22 @@ --- --- eAthena Database Converter ( InnoDB -> MyISAM ) by Jaguar --- - -ALTER TABLE `sc_data` DROP FOREIGN KEY `scdata_ibfk_1`, DROP FOREIGN KEY `scdata_ibfk_2`; -ALTER TABLE `guild` DROP FOREIGN KEY `guild_ibfk_1`; -ALTER TABLE `guild_alliance` DROP FOREIGN KEY `guild_alliance_ibfk_1`, DROP FOREIGN KEY `guild_alliance_ibfk_2`; -ALTER TABLE `guild_expulsion` DROP FOREIGN KEY `guild_expulsion_ibfk_1`; -ALTER TABLE `guild_member` DROP FOREIGN KEY `guild_member_ibfk_1`, DROP FOREIGN KEY `guild_member_ibfk_2`; -ALTER TABLE `guild_position` DROP FOREIGN KEY `guild_position_ibfk_1`; -ALTER TABLE `guild_skill` DROP FOREIGN KEY `guild_skill_ibfk_1`; -ALTER TABLE `guild_storage` DROP FOREIGN KEY `guild_storage_ibfk_1`; -ALTER TABLE `sc_data` TYPE = MYISAM; -ALTER TABLE `login` TYPE = MYISAM; -ALTER TABLE `char` TYPE = MYISAM; -ALTER TABLE `guild` TYPE = MYISAM; -ALTER TABLE `guild_alliance` TYPE = MYISAM; -ALTER TABLE `guild_expulsion` TYPE = MYISAM; -ALTER TABLE `guild_member` TYPE = MYISAM; -ALTER TABLE `guild_position` TYPE = MYISAM; -ALTER TABLE `guild_skill` TYPE = MYISAM; -ALTER TABLE `guild_storage` TYPE = MYISAM; +-- +-- eAthena Database Converter ( InnoDB -> MyISAM ) by Jaguar +-- + +ALTER TABLE `sc_data` DROP FOREIGN KEY `scdata_ibfk_1`, DROP FOREIGN KEY `scdata_ibfk_2`; +ALTER TABLE `guild` DROP FOREIGN KEY `guild_ibfk_1`; +ALTER TABLE `guild_alliance` DROP FOREIGN KEY `guild_alliance_ibfk_1`, DROP FOREIGN KEY `guild_alliance_ibfk_2`; +ALTER TABLE `guild_expulsion` DROP FOREIGN KEY `guild_expulsion_ibfk_1`; +ALTER TABLE `guild_member` DROP FOREIGN KEY `guild_member_ibfk_1`, DROP FOREIGN KEY `guild_member_ibfk_2`; +ALTER TABLE `guild_position` DROP FOREIGN KEY `guild_position_ibfk_1`; +ALTER TABLE `guild_skill` DROP FOREIGN KEY `guild_skill_ibfk_1`; +ALTER TABLE `guild_storage` DROP FOREIGN KEY `guild_storage_ibfk_1`; +ALTER TABLE `sc_data` TYPE = MYISAM; +ALTER TABLE `login` TYPE = MYISAM; +ALTER TABLE `char` TYPE = MYISAM; +ALTER TABLE `guild` TYPE = MYISAM; +ALTER TABLE `guild_alliance` TYPE = MYISAM; +ALTER TABLE `guild_expulsion` TYPE = MYISAM; +ALTER TABLE `guild_member` TYPE = MYISAM; +ALTER TABLE `guild_position` TYPE = MYISAM; +ALTER TABLE `guild_skill` TYPE = MYISAM; +ALTER TABLE `guild_storage` TYPE = MYISAM; diff --git a/sql-files/convert_passwords.sql b/sql-files/convert_passwords.sql index 6d2521e56..86e4c5b08 100644 --- a/sql-files/convert_passwords.sql +++ b/sql-files/convert_passwords.sql @@ -1,3 +1,3 @@ -# Convert passwords to MD5 hashes - -UPDATE `login` SET `user_pass`=MD5(`user_pass`); +# Convert passwords to MD5 hashes + +UPDATE `login` SET `user_pass`=MD5(`user_pass`); diff --git a/sql-files/item_db2.sql b/sql-files/item_db2.sql index 8496bf0da..c7a15306b 100755 --- a/sql-files/item_db2.sql +++ b/sql-files/item_db2.sql @@ -1,42 +1,42 @@ -# -# Table structure for table `item_db2` -# - -DROP TABLE IF EXISTS `item_db2`; -CREATE TABLE `item_db2` ( - `id` smallint(5) unsigned NOT NULL default '0', - `name_english` varchar(50) NOT NULL default '', - `name_japanese` varchar(50) NOT NULL default '', - `type` tinyint(2) unsigned NOT NULL default '0', - `price_buy` mediumint(10) unsigned default NULL, - `price_sell` mediumint(10) unsigned default NULL, - `weight` smallint(5) unsigned NOT NULL default '0', - `attack` smallint(3) unsigned default NULL, - `defence` tinyint(3) unsigned default NULL, - `range` tinyint(2) unsigned default NULL, - `slots` tinyint(2) unsigned default NULL, - `equip_jobs` int(12) unsigned default NULL, - `equip_upper` tinyint(8) unsigned default NULL, - `equip_genders` tinyint(2) unsigned default NULL, - `equip_locations` smallint(4) unsigned default NULL, - `weapon_level` tinyint(2) unsigned default NULL, - `equip_level` tinyint(3) unsigned default NULL, - `refineable` tinyint(1) unsigned default NULL, - `view` smallint(3) unsigned default NULL, - `script` text, - `equip_script` text, - `unequip_script` text, - PRIMARY KEY (`id`) -) TYPE=MyISAM; - -# // Items Additional Database - Custom Items go here -# // -# // Structure of Database: -# // ID,Name,Name,Type,Price,Sell,Weight,ATK,DEF,Range,Slot,Job,Upper,Gender,Loc,wLV,eLV,Refineable,View,{ Script },{ OnEquip_Script },{ OnUnequip_Script } -# // -# // THQ Quest Items -# //============================================================= -# REPLACE INTO `item_db2` VALUES (7950,'THG_Membership','THG Membership',3,NULL,10,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL); -# REPLACE INTO `item_db2` VALUES (7951,'Token_Bag','Token Bag',3,NULL,10,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL); -# REPLACE INTO `item_db2` VALUES (1998,'Jeramiah\'s_Jur','Jeramiah\'s Jur',3,NULL,10,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL); -# REPLACE INTO `item_db2` VALUES (1999,'Zed\'s_Staff','Zed\'s Staff',3,NULL,10,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL); +# +# Table structure for table `item_db2` +# + +DROP TABLE IF EXISTS `item_db2`; +CREATE TABLE `item_db2` ( + `id` smallint(5) unsigned NOT NULL default '0', + `name_english` varchar(50) NOT NULL default '', + `name_japanese` varchar(50) NOT NULL default '', + `type` tinyint(2) unsigned NOT NULL default '0', + `price_buy` mediumint(10) unsigned default NULL, + `price_sell` mediumint(10) unsigned default NULL, + `weight` smallint(5) unsigned NOT NULL default '0', + `attack` smallint(3) unsigned default NULL, + `defence` tinyint(3) unsigned default NULL, + `range` tinyint(2) unsigned default NULL, + `slots` tinyint(2) unsigned default NULL, + `equip_jobs` int(12) unsigned default NULL, + `equip_upper` tinyint(8) unsigned default NULL, + `equip_genders` tinyint(2) unsigned default NULL, + `equip_locations` smallint(4) unsigned default NULL, + `weapon_level` tinyint(2) unsigned default NULL, + `equip_level` tinyint(3) unsigned default NULL, + `refineable` tinyint(1) unsigned default NULL, + `view` smallint(3) unsigned default NULL, + `script` text, + `equip_script` text, + `unequip_script` text, + PRIMARY KEY (`id`) +) TYPE=MyISAM; + +# // Items Additional Database - Custom Items go here +# // +# // Structure of Database: +# // ID,Name,Name,Type,Price,Sell,Weight,ATK,DEF,Range,Slot,Job,Upper,Gender,Loc,wLV,eLV,Refineable,View,{ Script },{ OnEquip_Script },{ OnUnequip_Script } +# // +# // THQ Quest Items +# //============================================================= +# REPLACE INTO `item_db2` VALUES (7950,'THG_Membership','THG Membership',3,NULL,10,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL); +# REPLACE INTO `item_db2` VALUES (7951,'Token_Bag','Token Bag',3,NULL,10,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL); +# REPLACE INTO `item_db2` VALUES (1998,'Jeramiah\'s_Jur','Jeramiah\'s Jur',3,NULL,10,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL); +# REPLACE INTO `item_db2` VALUES (1999,'Zed\'s_Staff','Zed\'s Staff',3,NULL,10,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL); diff --git a/sql-files/logs.sql b/sql-files/logs.sql index 7a27f8a6a..597e9e0ed 100644 --- a/sql-files/logs.sql +++ b/sql-files/logs.sql @@ -1,112 +1,112 @@ -#Pick_Log types (M)onsters Drop, (P)layers Drop/Take, Mobs Drop (L)oot Drop/Take, -# Players (T)rade Give/Take, Players (V)ending Sell/Take, (S)hop Sell/Take, (N)PC Give/Take, -# (C)onsumable Items, (A)dministrators Create/Delete - -#Database: log -#Table: picklog -CREATE TABLE `picklog` ( - `id` int(11) NOT NULL auto_increment, - `time` datetime NOT NULL default '0000-00-00 00:00:00', - `char_id` int(11) NOT NULL default '0', - `type` set('M','P','L','T','V','S','N','C','A') NOT NULL default 'P', - `nameid` int(11) NOT NULL default '0', - `amount` int(11) NOT NULL default '1', - `refine` tinyint(3) unsigned NOT NULL default '0', - `card0` int(11) NOT NULL default '0', - `card1` int(11) NOT NULL default '0', - `card2` int(11) NOT NULL default '0', - `card3` int(11) NOT NULL default '0', - `map` varchar(20) NOT NULL default 'prontera.gat', - PRIMARY KEY (`id`), - INDEX (`type`) -) TYPE=MyISAM AUTO_INCREMENT=1 ; - -#ZenyLog types (M)onsters,(T)rade,(V)ending Sell/Buy,(S)hop Sell/Buy,(N)PC Change amount,(A)dministrators -#Database: log -#Table: zenylog -CREATE TABLE `zenylog` ( - `id` int(11) NOT NULL auto_increment, - `time` datetime NOT NULL default '0000-00-00 00:00:00', - `char_id` int(11) NOT NULL default '0', - `src_id` int(11) NOT NULL default '0', - `type` set('M','T','V','S','N','A') NOT NULL default 'S', - `amount` int(11) NOT NULL default '0', - `map` varchar(20) NOT NULL default 'prontera.gat', - PRIMARY KEY (`id`), - INDEX (`type`) -) TYPE=MyISAM AUTO_INCREMENT=1 ; - -#Database: log -#Table: branchlog -CREATE TABLE `branchlog` ( - `branch_id` mediumint(9) unsigned NOT NULL auto_increment, - `branch_date` datetime NOT NULL default '0000-00-00 00:00:00', - `account_id` int(11) NOT NULL default '0', - `char_id` int(11) NOT NULL default '0', - `char_name` varchar(30) NOT NULL default '', - `map` varchar(20) NOT NULL default 'prontera.gat', - PRIMARY KEY (`branch_id`), - INDEX (`account_id`), - INDEX (`char_id`) -) TYPE=MyISAM AUTO_INCREMENT=1 ; - -#Database: log -#Table: mvplog -CREATE TABLE `mvplog` ( - `mvp_id` mediumint(9) unsigned NOT NULL auto_increment, - `mvp_date` datetime NOT NULL default '0000-00-00 00:00:00', - `kill_char_id` int(11) NOT NULL default '0', - `monster_id` smallint(6) NOT NULL default '0', - `prize` int(11) NOT NULL default '0', - `mvpexp` mediumint(9) NOT NULL default '0', - `map` varchar(20) NOT NULL default 'prontera.gat', - PRIMARY KEY (`mvp_id`) -) TYPE=MyISAM AUTO_INCREMENT=1 ; - -#Database: log -#Table: atcommandlog -CREATE TABLE `atcommandlog` ( - `atcommand_id` mediumint(9) unsigned NOT NULL auto_increment, - `atcommand_date` datetime NOT NULL default '0000-00-00 00:00:00', - `account_id` int(11) unsigned NOT NULL default '0', - `char_id` int(11) unsigned NOT NULL default '0', - `char_name` varchar(30) NOT NULL default '', - `map` varchar(20) NOT NULL default 'prontera.gat', - `command` varchar(50) NOT NULL default '', - PRIMARY KEY (`atcommand_id`), - INDEX (`account_id`), - INDEX (`char_id`) -) TYPE=MyISAM AUTO_INCREMENT=1 ; - -#Database: log -#Table: npclog -CREATE TABLE `npclog` ( - `npc_id` mediumint(9) unsigned NOT NULL auto_increment, - `npc_date` datetime NOT NULL default '0000-00-00 00:00:00', - `account_id` int(11) unsigned NOT NULL default '0', - `char_id` int(11) unsigned NOT NULL default '0', - `char_name` varchar(30) NOT NULL default '', - `map` varchar(20) NOT NULL default 'prontera.gat', - `mes` varchar(255) NOT NULL default '', - PRIMARY KEY (`npc_id`), - INDEX (`account_id`), - INDEX (`char_id`) -) TYPE=MyISAM AUTO_INCREMENT=1 ; - -#ChatLOG -CREATE TABLE `chatlog` ( - `id` bigint(20) NOT NULL auto_increment, - `time` datetime NOT NULL default '0000-00-00 00:00:00', - `type` set('W','P','G') NOT NULL default 'W', - `type_id` int(11) NOT NULL default '0', - `src_charid` int(11) NOT NULL default '0', - `src_accountid` int(11) NOT NULL default '0', - `src_map` varchar(17) NOT NULL default 'prontera.gat', - `src_map_x` smallint(4) NOT NULL default '0', - `src_map_y` smallint(4) NOT NULL default '0', - `dst_charname` varchar(25) NOT NULL default '', - `message` varchar(150) NOT NULL default '', - PRIMARY KEY (`id`), - INDEX (`src_accountid`), - INDEX (`src_charid`) -) TYPE=MyISAM AUTO_INCREMENT=1 ; +#Pick_Log types (M)onsters Drop, (P)layers Drop/Take, Mobs Drop (L)oot Drop/Take, +# Players (T)rade Give/Take, Players (V)ending Sell/Take, (S)hop Sell/Take, (N)PC Give/Take, +# (C)onsumable Items, (A)dministrators Create/Delete + +#Database: log +#Table: picklog +CREATE TABLE `picklog` ( + `id` int(11) NOT NULL auto_increment, + `time` datetime NOT NULL default '0000-00-00 00:00:00', + `char_id` int(11) NOT NULL default '0', + `type` set('M','P','L','T','V','S','N','C','A') NOT NULL default 'P', + `nameid` int(11) NOT NULL default '0', + `amount` int(11) NOT NULL default '1', + `refine` tinyint(3) unsigned NOT NULL default '0', + `card0` int(11) NOT NULL default '0', + `card1` int(11) NOT NULL default '0', + `card2` int(11) NOT NULL default '0', + `card3` int(11) NOT NULL default '0', + `map` varchar(20) NOT NULL default 'prontera.gat', + PRIMARY KEY (`id`), + INDEX (`type`) +) TYPE=MyISAM AUTO_INCREMENT=1 ; + +#ZenyLog types (M)onsters,(T)rade,(V)ending Sell/Buy,(S)hop Sell/Buy,(N)PC Change amount,(A)dministrators +#Database: log +#Table: zenylog +CREATE TABLE `zenylog` ( + `id` int(11) NOT NULL auto_increment, + `time` datetime NOT NULL default '0000-00-00 00:00:00', + `char_id` int(11) NOT NULL default '0', + `src_id` int(11) NOT NULL default '0', + `type` set('M','T','V','S','N','A') NOT NULL default 'S', + `amount` int(11) NOT NULL default '0', + `map` varchar(20) NOT NULL default 'prontera.gat', + PRIMARY KEY (`id`), + INDEX (`type`) +) TYPE=MyISAM AUTO_INCREMENT=1 ; + +#Database: log +#Table: branchlog +CREATE TABLE `branchlog` ( + `branch_id` mediumint(9) unsigned NOT NULL auto_increment, + `branch_date` datetime NOT NULL default '0000-00-00 00:00:00', + `account_id` int(11) NOT NULL default '0', + `char_id` int(11) NOT NULL default '0', + `char_name` varchar(30) NOT NULL default '', + `map` varchar(20) NOT NULL default 'prontera.gat', + PRIMARY KEY (`branch_id`), + INDEX (`account_id`), + INDEX (`char_id`) +) TYPE=MyISAM AUTO_INCREMENT=1 ; + +#Database: log +#Table: mvplog +CREATE TABLE `mvplog` ( + `mvp_id` mediumint(9) unsigned NOT NULL auto_increment, + `mvp_date` datetime NOT NULL default '0000-00-00 00:00:00', + `kill_char_id` int(11) NOT NULL default '0', + `monster_id` smallint(6) NOT NULL default '0', + `prize` int(11) NOT NULL default '0', + `mvpexp` mediumint(9) NOT NULL default '0', + `map` varchar(20) NOT NULL default 'prontera.gat', + PRIMARY KEY (`mvp_id`) +) TYPE=MyISAM AUTO_INCREMENT=1 ; + +#Database: log +#Table: atcommandlog +CREATE TABLE `atcommandlog` ( + `atcommand_id` mediumint(9) unsigned NOT NULL auto_increment, + `atcommand_date` datetime NOT NULL default '0000-00-00 00:00:00', + `account_id` int(11) unsigned NOT NULL default '0', + `char_id` int(11) unsigned NOT NULL default '0', + `char_name` varchar(30) NOT NULL default '', + `map` varchar(20) NOT NULL default 'prontera.gat', + `command` varchar(50) NOT NULL default '', + PRIMARY KEY (`atcommand_id`), + INDEX (`account_id`), + INDEX (`char_id`) +) TYPE=MyISAM AUTO_INCREMENT=1 ; + +#Database: log +#Table: npclog +CREATE TABLE `npclog` ( + `npc_id` mediumint(9) unsigned NOT NULL auto_increment, + `npc_date` datetime NOT NULL default '0000-00-00 00:00:00', + `account_id` int(11) unsigned NOT NULL default '0', + `char_id` int(11) unsigned NOT NULL default '0', + `char_name` varchar(30) NOT NULL default '', + `map` varchar(20) NOT NULL default 'prontera.gat', + `mes` varchar(255) NOT NULL default '', + PRIMARY KEY (`npc_id`), + INDEX (`account_id`), + INDEX (`char_id`) +) TYPE=MyISAM AUTO_INCREMENT=1 ; + +#ChatLOG +CREATE TABLE `chatlog` ( + `id` bigint(20) NOT NULL auto_increment, + `time` datetime NOT NULL default '0000-00-00 00:00:00', + `type` set('W','P','G') NOT NULL default 'W', + `type_id` int(11) NOT NULL default '0', + `src_charid` int(11) NOT NULL default '0', + `src_accountid` int(11) NOT NULL default '0', + `src_map` varchar(17) NOT NULL default 'prontera.gat', + `src_map_x` smallint(4) NOT NULL default '0', + `src_map_y` smallint(4) NOT NULL default '0', + `dst_charname` varchar(25) NOT NULL default '', + `message` varchar(150) NOT NULL default '', + PRIMARY KEY (`id`), + INDEX (`src_accountid`), + INDEX (`src_charid`) +) TYPE=MyISAM AUTO_INCREMENT=1 ; diff --git a/sql-files/mail.sql b/sql-files/mail.sql index 8ec74dcdd..62cc9d65d 100644 --- a/sql-files/mail.sql +++ b/sql-files/mail.sql @@ -1,12 +1,12 @@ -CREATE TABLE `mail` ( - `message_id` int(11) NOT NULL auto_increment, - `to_account_id` int(11) NOT NULL default '0', - `to_char_name` varchar(24) NOT NULL default '', - `from_account_id` int(11) NOT NULL default '0', - `from_char_name` varchar(24) NOT NULL default '', - `message` varchar(80) NOT NULL default '', - `read_flag` tinyint(1) NOT NULL default '0', - `priority` tinyint(1) NOT NULL default '0', - `check_flag` tinyint(1) NOT NULL default '0', - PRIMARY KEY (`message_id`) -) TYPE=MyISAM; +CREATE TABLE `mail` ( + `message_id` int(11) NOT NULL auto_increment, + `to_account_id` int(11) NOT NULL default '0', + `to_char_name` varchar(24) NOT NULL default '', + `from_account_id` int(11) NOT NULL default '0', + `from_char_name` varchar(24) NOT NULL default '', + `message` varchar(80) NOT NULL default '', + `read_flag` tinyint(1) NOT NULL default '0', + `priority` tinyint(1) NOT NULL default '0', + `check_flag` tinyint(1) NOT NULL default '0', + PRIMARY KEY (`message_id`) +) TYPE=MyISAM; diff --git a/sql-files/main.sql b/sql-files/main.sql index 155542119..c7c45d3c5 100644 --- a/sql-files/main.sql +++ b/sql-files/main.sql @@ -1,578 +1,578 @@ --- MySQL dump 9.11 --- Server version 4.0.24 - --- --- Table structure for table `cart_inventory` --- - -DROP TABLE IF EXISTS `cart_inventory`; -CREATE TABLE `cart_inventory` ( - `id` int(11) NOT NULL auto_increment, - `char_id` int(11) NOT NULL default '0', - `nameid` int(11) NOT NULL default '0', - `amount` int(11) NOT NULL default '0', - `equip` mediumint(8) unsigned NOT NULL default '0', - `identify` smallint(6) NOT NULL default '0', - `refine` tinyint(3) unsigned NOT NULL default '0', - `attribute` tinyint(4) NOT NULL default '0', - `card0` int(11) NOT NULL default '0', - `card1` int(11) NOT NULL default '0', - `card2` int(11) NOT NULL default '0', - `card3` int(11) NOT NULL default '0', - PRIMARY KEY (`id`), - KEY `char_id` (`char_id`) -) TYPE=MyISAM; - --- --- Table structure for table `char` --- - -DROP TABLE IF EXISTS `char`; -CREATE TABLE `char` ( - `char_id` int(11) unsigned NOT NULL auto_increment, - `account_id` int(11) unsigned NOT NULL default '0', - `char_num` tinyint(1) NOT NULL default '0', - `name` varchar(30) NOT NULL default '', - `class` smallint(6) unsigned NOT NULL default '0', - `base_level` smallint(6) unsigned NOT NULL default '1', - `job_level` smallint(6) unsigned NOT NULL default '1', - `base_exp` bigint(20) unsigned NOT NULL default '0', - `job_exp` bigint(20) unsigned NOT NULL default '0', - `zeny` int(11) unsigned NOT NULL default '0', - `str` smallint(4) unsigned NOT NULL default '0', - `agi` smallint(4) unsigned NOT NULL default '0', - `vit` smallint(4) unsigned NOT NULL default '0', - `int` smallint(4) unsigned NOT NULL default '0', - `dex` smallint(4) unsigned NOT NULL default '0', - `luk` smallint(4) unsigned NOT NULL default '0', - `max_hp` mediumint(8) unsigned NOT NULL default '0', - `hp` mediumint(8) unsigned NOT NULL default '0', - `max_sp` mediumint(6) unsigned NOT NULL default '0', - `sp` mediumint(6) unsigned NOT NULL default '0', - `status_point` smallint(4) unsigned NOT NULL default '0', - `skill_point` smallint(4) unsigned NOT NULL default '0', - `option` int(11) NOT NULL default '0', - `karma` tinyint(3) NOT NULL default '0', - `manner` tinyint(3) NOT NULL default '0', - `party_id` int(11) unsigned NOT NULL default '0', - `guild_id` int(11) unsigned NOT NULL default '0', - `pet_id` int(11) unsigned NOT NULL default '0', - `homun_id` int(11) unsigned NOT NULL default '0', - `hair` tinyint(4) unsigned NOT NULL default '0', - `hair_color` smallint(5) unsigned NOT NULL default '0', - `clothes_color` smallint(5) unsigned NOT NULL default '0', - `weapon` smallint(6) unsigned NOT NULL default '1', - `shield` smallint(6) unsigned NOT NULL default '0', - `head_top` smallint(6) unsigned NOT NULL default '0', - `head_mid` smallint(6) unsigned NOT NULL default '0', - `head_bottom` smallint(6) unsigned NOT NULL default '0', - `last_map` varchar(20) NOT NULL default 'prontera.gat', - `last_x` smallint(4) unsigned NOT NULL default '53', - `last_y` smallint(4) unsigned NOT NULL default '111', - `save_map` varchar(20) NOT NULL default 'prontera.gat', - `save_x` smallint(4) unsigned NOT NULL default '53', - `save_y` smallint(4) unsigned NOT NULL default '111', - `partner_id` int(11) unsigned NOT NULL default '0', - `online` tinyint(2) NOT NULL default '0', - `father` int(11) unsigned NOT NULL default '0', - `mother` int(11) unsigned NOT NULL default '0', - `child` int(11) unsigned NOT NULL default '0', - `fame` int(11) unsigned NOT NULL default '0', - PRIMARY KEY (`char_id`), - KEY `account_id` (`account_id`), - KEY `party_id` (`party_id`), - KEY `guild_id` (`guild_id`), - KEY `name` (`name`), - KEY `online` (`online`) -) TYPE=MyISAM AUTO_INCREMENT=150000; - --- --- Table structure for table `charlog` --- - -DROP TABLE IF EXISTS `charlog`; -CREATE TABLE `charlog` ( - `time` datetime NOT NULL default '0000-00-00 00:00:00', - `char_msg` varchar(255) NOT NULL default 'char select', - `account_id` int(11) NOT NULL default '0', - `char_num` tinyint(4) NOT NULL default '0', - `name` varchar(255) NOT NULL default '', - `str` int(11) unsigned NOT NULL default '0', - `agi` int(11) unsigned NOT NULL default '0', - `vit` int(11) unsigned NOT NULL default '0', - `int` int(11) unsigned NOT NULL default '0', - `dex` int(11) unsigned NOT NULL default '0', - `luk` int(11) unsigned NOT NULL default '0', - `hair` tinyint(4) NOT NULL default '0', - `hair_color` int(11) NOT NULL default '0' -) TYPE=MyISAM; - --- --- Table structure for table `friends` --- - -DROP TABLE IF EXISTS `friends`; -CREATE TABLE `friends` ( - `char_id` int(11) NOT NULL default '0', - `friend_account` int(11) NOT NULL default '0', - `friend_id` int(11) NOT NULL default '0', - KEY `char_id` (`char_id`) -) TYPE=MyISAM; - --- --- Table structure for table `global_reg_value` --- - -DROP TABLE IF EXISTS `global_reg_value`; -CREATE TABLE `global_reg_value` ( - `char_id` int(11) unsigned NOT NULL default '0', - `str` varchar(255) NOT NULL default '', - `value` varchar(255) NOT NULL default '0', - `type` int(11) NOT NULL default '3', - `account_id` int(11) unsigned NOT NULL default '0', - PRIMARY KEY (`char_id`,`str`,`account_id`), - KEY `account_id` (`account_id`), - KEY `char_id` (`char_id`) -) TYPE=MyISAM; - --- --- Table structure for table `guild` --- - -DROP TABLE IF EXISTS `guild`; -CREATE TABLE `guild` ( - `guild_id` int(11) unsigned NOT NULL auto_increment, - `name` varchar(24) NOT NULL default '', - `char_id` int(11) unsigned NOT NULL default '0', - `master` varchar(24) NOT NULL default '', - `guild_lv` tinyint(6) unsigned NOT NULL default '0', - `connect_member` tinyint(6) unsigned NOT NULL default '0', - `max_member` tinyint(6) unsigned NOT NULL default '0', - `average_lv` smallint(6) unsigned NOT NULL default '1', - `exp` int(11) unsigned NOT NULL default '0', - `next_exp` int(11) unsigned NOT NULL default '0', - `skill_point` tinyint(11) unsigned NOT NULL default '0', - `mes1` varchar(60) NOT NULL default '', - `mes2` varchar(120) NOT NULL default '', - `emblem_len` int(11) unsigned NOT NULL default '0', - `emblem_id` int(11) unsigned NOT NULL default '0', - `emblem_data` blob, - PRIMARY KEY (`guild_id`,`char_id`), - UNIQUE KEY `guild_id` (`guild_id`), - KEY `char_id` (`char_id`) -) TYPE=MyISAM; - --- --- Table structure for table `guild_alliance` --- - -DROP TABLE IF EXISTS `guild_alliance`; -CREATE TABLE `guild_alliance` ( - `guild_id` int(11) unsigned NOT NULL default '0', - `opposition` int(11) unsigned NOT NULL default '0', - `alliance_id` int(11) unsigned NOT NULL default '0', - `name` varchar(24) NOT NULL default '', - PRIMARY KEY (`guild_id`,`alliance_id`), - KEY `alliance_id` (`alliance_id`) -) TYPE=MyISAM; - --- --- Table structure for table `guild_castle` --- - -DROP TABLE IF EXISTS `guild_castle`; -CREATE TABLE `guild_castle` ( - `castle_id` int(11) unsigned NOT NULL default '0', - `guild_id` int(11) unsigned NOT NULL default '0', - `economy` int(11) unsigned NOT NULL default '0', - `defense` int(11) unsigned NOT NULL default '0', - `triggerE` int(11) unsigned NOT NULL default '0', - `triggerD` int(11) unsigned NOT NULL default '0', - `nextTime` int(11) unsigned NOT NULL default '0', - `payTime` int(11) unsigned NOT NULL default '0', - `createTime` int(11) unsigned NOT NULL default '0', - `visibleC` int(11) unsigned NOT NULL default '0', - `visibleG0` int(11) unsigned NOT NULL default '0', - `visibleG1` int(11) unsigned NOT NULL default '0', - `visibleG2` int(11) unsigned NOT NULL default '0', - `visibleG3` int(11) unsigned NOT NULL default '0', - `visibleG4` int(11) unsigned NOT NULL default '0', - `visibleG5` int(11) unsigned NOT NULL default '0', - `visibleG6` int(11) unsigned NOT NULL default '0', - `visibleG7` int(11) unsigned NOT NULL default '0', - `gHP0` int(11) unsigned NOT NULL default '0', - `ghP1` int(11) unsigned NOT NULL default '0', - `gHP2` int(11) unsigned NOT NULL default '0', - `gHP3` int(11) unsigned NOT NULL default '0', - `gHP4` int(11) unsigned NOT NULL default '0', - `gHP5` int(11) unsigned NOT NULL default '0', - `gHP6` int(11) unsigned NOT NULL default '0', - `gHP7` int(11) unsigned NOT NULL default '0', - PRIMARY KEY (`castle_id`), - KEY `guild_id` (`guild_id`) -) TYPE=MyISAM; - --- --- Table structure for table `guild_expulsion` --- - -DROP TABLE IF EXISTS `guild_expulsion`; -CREATE TABLE `guild_expulsion` ( - `guild_id` int(11) unsigned NOT NULL default '0', - `name` varchar(24) NOT NULL default '', - `mes` varchar(40) NOT NULL default '', - `acc` varchar(40) NOT NULL default '', - `account_id` int(11) unsigned NOT NULL default '0', - `rsv1` int(11) unsigned NOT NULL default '0', - `rsv2` int(11) unsigned NOT NULL default '0', - `rsv3` int(11) unsigned NOT NULL default '0', - PRIMARY KEY (`guild_id`,`name`) -) TYPE=MyISAM; - --- --- Table structure for table `guild_member` --- - -DROP TABLE IF EXISTS `guild_member`; -CREATE TABLE `guild_member` ( - `guild_id` int(11) unsigned NOT NULL default '0', - `account_id` int(11) unsigned NOT NULL default '0', - `char_id` int(11) unsigned NOT NULL default '0', - `hair` tinyint(6) unsigned NOT NULL default '0', - `hair_color` smallint(6) unsigned NOT NULL default '0', - `gender` tinyint(6) unsigned NOT NULL default '0', - `class` smallint(6) unsigned NOT NULL default '0', - `lv` smallint(6) unsigned NOT NULL default '0', - `exp` bigint(20) unsigned NOT NULL default '0', - `exp_payper` tinyint(11) unsigned NOT NULL default '0', - `online` tinyint(4) unsigned NOT NULL default '0', - `position` tinyint(6) unsigned NOT NULL default '0', - `rsv1` int(11) unsigned NOT NULL default '0', - `rsv2` int(11) unsigned NOT NULL default '0', - `name` varchar(24) NOT NULL default '', - PRIMARY KEY (`guild_id`,`char_id`), - KEY `char_id` (`char_id`) -) TYPE=MyISAM; - --- --- Table structure for table `guild_position` --- - -DROP TABLE IF EXISTS `guild_position`; -CREATE TABLE `guild_position` ( - `guild_id` int(9) unsigned NOT NULL default '0', - `position` tinyint(6) unsigned NOT NULL default '0', - `name` varchar(24) NOT NULL default '', - `mode` tinyint(11) unsigned NOT NULL default '0', - `exp_mode` tinyint(11) unsigned NOT NULL default '0', - PRIMARY KEY (`guild_id`,`position`), - KEY `guild_id` (`guild_id`) -) TYPE=MyISAM; - --- --- Table structure for table `guild_skill` --- - -DROP TABLE IF EXISTS `guild_skill`; -CREATE TABLE `guild_skill` ( - `guild_id` int(11) unsigned NOT NULL default '0', - `id` smallint(11) unsigned NOT NULL default '0', - `lv` tinyint(11) unsigned NOT NULL default '0', - PRIMARY KEY (`guild_id`,`id`) -) TYPE=MyISAM; - --- --- Table structure for table `guild_storage` --- - -DROP TABLE IF EXISTS `guild_storage`; -CREATE TABLE `guild_storage` ( - `id` int(10) unsigned NOT NULL auto_increment, - `guild_id` int(11) unsigned NOT NULL default '0', - `nameid` int(11) unsigned NOT NULL default '0', - `amount` int(11) unsigned NOT NULL default '0', - `equip` mediumint(8) unsigned NOT NULL default '0', - `identify` smallint(6) unsigned NOT NULL default '0', - `refine` tinyint(3) unsigned NOT NULL default '0', - `attribute` tinyint(4) unsigned NOT NULL default '0', - `card0` smallint(11) NOT NULL default '0', - `card1` smallint(11) NOT NULL default '0', - `card2` smallint(11) NOT NULL default '0', - `card3` smallint(11) NOT NULL default '0', - PRIMARY KEY (`id`), - KEY `guild_id` (`guild_id`) -) TYPE=MyISAM; - --- --- Table structure for table `homunculus` --- - -DROP TABLE IF EXISTS `homunculus`; -CREATE TABLE `homunculus` ( - `homun_id` int(11) NOT NULL auto_increment, - `char_id` int(11) NOT NULL, - `class` mediumint(9) unsigned NOT NULL default '0', - `name` varchar(24) NOT NULL default '', - `level` smallint(4) NOT NULL default '0', - `exp` int(12) NOT NULL default '0', - `intimacy` int(12) NOT NULL default '0', - `hunger` smallint(4) NOT NULL default '0', - `str` smallint(4) unsigned NOT NULL default '0', - `agi` smallint(4) unsigned NOT NULL default '0', - `vit` smallint(4) unsigned NOT NULL default '0', - `int` smallint(4) unsigned NOT NULL default '0', - `dex` smallint(4) unsigned NOT NULL default '0', - `luk` smallint(4) unsigned NOT NULL default '0', - `hp` int(12) NOT NULL default '1', - `max_hp` int(12) NOT NULL default '1', - `sp` int(12) NOT NULL default '1', - `max_sp` int(12) NOT NULL default '1', - `skill_point` smallint(4) unsigned NOT NULL default '0', - `alive` tinyint(2) NOT NULL default '1', - `rename_flag` tinyint(2) NOT NULL default '0', - `vaporize` tinyint(2) NOT NULL default '0', - PRIMARY KEY (`homun_id`) -) TYPE=MyISAM; - --- --- Table structure for table `interlog` --- - -DROP TABLE IF EXISTS `interlog`; -CREATE TABLE `interlog` ( - `time` datetime NOT NULL default '0000-00-00 00:00:00', - `log` varchar(255) NOT NULL default '' -) TYPE=MyISAM; - --- --- Table structure for table `inventory` --- - -DROP TABLE IF EXISTS `inventory`; -CREATE TABLE `inventory` ( - `id` int(11) unsigned NOT NULL auto_increment, - `char_id` int(11) unsigned NOT NULL default '0', - `nameid` int(11) unsigned NOT NULL default '0', - `amount` int(11) unsigned NOT NULL default '0', - `equip` mediumint(8) unsigned NOT NULL default '0', - `identify` smallint(6) NOT NULL default '0', - `refine` tinyint(3) unsigned NOT NULL default '0', - `attribute` tinyint(4) unsigned NOT NULL default '0', - `card0` smallint(11) NOT NULL default '0', - `card1` smallint(11) NOT NULL default '0', - `card2` smallint(11) NOT NULL default '0', - `card3` smallint(11) NOT NULL default '0', - PRIMARY KEY (`id`), - KEY `char_id` (`char_id`) -) TYPE=MyISAM; - --- --- Table structure for table `ipbanlist` --- - -DROP TABLE IF EXISTS `ipbanlist`; -CREATE TABLE `ipbanlist` ( - `list` varchar(255) NOT NULL default '', - `btime` datetime NOT NULL default '0000-00-00 00:00:00', - `rtime` datetime NOT NULL default '0000-00-00 00:00:00', - `reason` varchar(255) NOT NULL default '', - KEY (`list`) -) TYPE=MyISAM; - --- --- Table structure for table `login` --- - -DROP TABLE IF EXISTS `login`; -CREATE TABLE `login` ( - `account_id` int(11) unsigned NOT NULL auto_increment, - `userid` varchar(255) NOT NULL default '', - `user_pass` varchar(32) NOT NULL default '', - `lastlogin` datetime NOT NULL default '0000-00-00 00:00:00', - `sex` char(1) NOT NULL default 'M', - `logincount` mediumint(9) unsigned NOT NULL default '0', - `email` varchar(60) NOT NULL default '', - `level` tinyint(3) NOT NULL default '0', - `error_message` smallint(11) unsigned NOT NULL default '0', - `connect_until` int(11) unsigned NOT NULL default '0', - `last_ip` varchar(100) NOT NULL default '', - `memo` smallint(11) unsigned NOT NULL default '0', - `ban_until` int(11) unsigned NOT NULL default '0', - `state` int(11) unsigned NOT NULL default '0', - PRIMARY KEY (`account_id`), - KEY `name` (`userid`) -) TYPE=MyISAM AUTO_INCREMENT=2000000; - --- added standard accounts for servers, VERY INSECURE!!! --- inserted into the table called login which is above - -INSERT INTO `login` (`account_id`, `userid`, `user_pass`, `sex`, `email`) VALUES ('1', 's1', 'p1', 'S','athena@athena.com'); - --- --- Table structure for table `mapreg` --- - -DROP TABLE IF EXISTS `mapreg`; -CREATE TABLE `mapreg` ( - `varname` varchar(32) NOT NULL, - `index` int(11) unsigned NOT NULL default '0', - `value` varchar(255) NOT NULL, - KEY `varname` (`varname`), - KEY `index` (`index`) -) TYPE=MyISAM; - --- --- Table structure for table `sc_data` --- - -DROP TABLE IF EXISTS `sc_data`; -CREATE TABLE `sc_data` ( - `account_id` int(11) unsigned NOT NULL, - `char_id` int(11) unsigned NOT NULL, - `type` smallint(11) unsigned NOT NULL, - `tick` int(11) NOT NULL, - `val1` int(11) NOT NULL default '0', - `val2` int(11) NOT NULL default '0', - `val3` int(11) NOT NULL default '0', - `val4` int(11) NOT NULL default '0', - KEY (`account_id`), - KEY (`char_id`) -) TYPE=MyISAM; - --- --- Table structure for table `loginlog` --- - -DROP TABLE IF EXISTS `loginlog`; -CREATE TABLE `loginlog` ( - `time` datetime NOT NULL default '0000-00-00 00:00:00', - `ip` int(10) unsigned NOT NULL default '0', - `user` varchar(32) NOT NULL default '', - `rcode` tinyint(4) NOT NULL default '0', - `log` varchar(255) NOT NULL default '', - INDEX (`ip`) -) TYPE=MyISAM; - --- --- Table structure for table `memo` --- - -DROP TABLE IF EXISTS `memo`; -CREATE TABLE `memo` ( - `memo_id` int(11) unsigned NOT NULL auto_increment, - `char_id` int(11) unsigned NOT NULL default '0', - `map` varchar(255) NOT NULL default '', - `x` smallint(9) unsigned NOT NULL default '0', - `y` smallint(9) unsigned NOT NULL default '0', - PRIMARY KEY (`memo_id`), - KEY `char_id` (`char_id`) -) TYPE=MyISAM; - --- --- Table structure for table `party` --- - -DROP TABLE IF EXISTS `party`; -CREATE TABLE `party` ( - `party_id` int(11) unsigned NOT NULL auto_increment, - `name` char(100) NOT NULL default '', - `exp` tinyint(11) unsigned NOT NULL default '0', - `item` tinyint(11) unsigned NOT NULL default '0', - `leader_id` int(11) unsigned NOT NULL default '0', - `leader_char` int(11) unsigned NOT NULL default '0', - PRIMARY KEY (`party_id`) -) TYPE=MyISAM; - --- --- Table structure for table `pet` --- - -DROP TABLE IF EXISTS `pet`; -CREATE TABLE `pet` ( - `pet_id` int(11) unsigned NOT NULL auto_increment, - `class` mediumint(9) unsigned NOT NULL default '0', - `name` varchar(24) NOT NULL default '', - `account_id` int(11) unsigned NOT NULL default '0', - `char_id` int(11) unsigned NOT NULL default '0', - `level` smallint(4) unsigned NOT NULL default '0', - `egg_id` smallint(11) unsigned NOT NULL default '0', - `equip` mediumint(8) unsigned NOT NULL default '0', - `intimate` smallint(9) unsigned NOT NULL default '0', - `hungry` smallint(9) unsigned NOT NULL default '0', - `rename_flag` tinyint(4) unsigned NOT NULL default '0', - `incuvate` int(11) unsigned NOT NULL default '0', - PRIMARY KEY (`pet_id`) -) TYPE=MyISAM; - --- --- Table structure for table `ragsrvinfo` --- - -DROP TABLE IF EXISTS `ragsrvinfo`; -CREATE TABLE `ragsrvinfo` ( - `index` int(11) NOT NULL default '0', - `name` varchar(255) NOT NULL default '', - `exp` int(11) unsigned NOT NULL default '0', - `jexp` int(11) unsigned NOT NULL default '0', - `drop` int(11) unsigned NOT NULL default '0', - `motd` varchar(255) NOT NULL default '' -) TYPE=MyISAM; - --- --- Table structure for table `skill` --- - -DROP TABLE IF EXISTS `skill`; -CREATE TABLE `skill` ( - `char_id` int(11) unsigned NOT NULL default '0', - `id` smallint(11) unsigned NOT NULL default '0', - `lv` tinyint(4) unsigned NOT NULL default '0', - PRIMARY KEY (`char_id`,`id`), - KEY `char_id` (`char_id`) -) TYPE=MyISAM; - --- --- Table structure for table `skill_homunculus` --- - -DROP TABLE IF EXISTS `skill_homunculus`; -CREATE TABLE `skill_homunculus` ( - `homun_id` int(11) NOT NULL, - `id` int(11) NOT NULL, - `lv` smallint(6) NOT NULL, - PRIMARY KEY (`homun_id`,`id`), - KEY `homun_id` (`homun_id`) -) TYPE=MyISAM; - --- --- Table structure for table `sstatus` --- - -DROP TABLE IF EXISTS `sstatus`; -CREATE TABLE `sstatus` ( - `index` tinyint(4) unsigned NOT NULL default '0', - `name` varchar(255) NOT NULL default '', - `user` int(11) unsigned NOT NULL default '0' -) TYPE=MyISAM; - --- --- Table structure for table `storage` --- - -DROP TABLE IF EXISTS `storage`; -CREATE TABLE `storage` ( - `id` int(11) unsigned NOT NULL auto_increment, - `account_id` int(11) unsigned NOT NULL default '0', - `nameid` int(11) unsigned NOT NULL default '0', - `amount` smallint(11) unsigned NOT NULL default '0', - `equip` mediumint(8) unsigned NOT NULL default '0', - `identify` smallint(6) unsigned NOT NULL default '0', - `refine` tinyint(3) unsigned NOT NULL default '0', - `attribute` tinyint(4) unsigned NOT NULL default '0', - `card0` smallint(11) NOT NULL default '0', - `card1` smallint(11) NOT NULL default '0', - `card2` smallint(11) NOT NULL default '0', - `card3` smallint(11) NOT NULL default '0', - PRIMARY KEY (`id`), - KEY `account_id` (`account_id`) -) TYPE=MyISAM; +-- MySQL dump 9.11 +-- Server version 4.0.24 + +-- +-- Table structure for table `cart_inventory` +-- + +DROP TABLE IF EXISTS `cart_inventory`; +CREATE TABLE `cart_inventory` ( + `id` int(11) NOT NULL auto_increment, + `char_id` int(11) NOT NULL default '0', + `nameid` int(11) NOT NULL default '0', + `amount` int(11) NOT NULL default '0', + `equip` mediumint(8) unsigned NOT NULL default '0', + `identify` smallint(6) NOT NULL default '0', + `refine` tinyint(3) unsigned NOT NULL default '0', + `attribute` tinyint(4) NOT NULL default '0', + `card0` int(11) NOT NULL default '0', + `card1` int(11) NOT NULL default '0', + `card2` int(11) NOT NULL default '0', + `card3` int(11) NOT NULL default '0', + PRIMARY KEY (`id`), + KEY `char_id` (`char_id`) +) TYPE=MyISAM; + +-- +-- Table structure for table `char` +-- + +DROP TABLE IF EXISTS `char`; +CREATE TABLE `char` ( + `char_id` int(11) unsigned NOT NULL auto_increment, + `account_id` int(11) unsigned NOT NULL default '0', + `char_num` tinyint(1) NOT NULL default '0', + `name` varchar(30) NOT NULL default '', + `class` smallint(6) unsigned NOT NULL default '0', + `base_level` smallint(6) unsigned NOT NULL default '1', + `job_level` smallint(6) unsigned NOT NULL default '1', + `base_exp` bigint(20) unsigned NOT NULL default '0', + `job_exp` bigint(20) unsigned NOT NULL default '0', + `zeny` int(11) unsigned NOT NULL default '0', + `str` smallint(4) unsigned NOT NULL default '0', + `agi` smallint(4) unsigned NOT NULL default '0', + `vit` smallint(4) unsigned NOT NULL default '0', + `int` smallint(4) unsigned NOT NULL default '0', + `dex` smallint(4) unsigned NOT NULL default '0', + `luk` smallint(4) unsigned NOT NULL default '0', + `max_hp` mediumint(8) unsigned NOT NULL default '0', + `hp` mediumint(8) unsigned NOT NULL default '0', + `max_sp` mediumint(6) unsigned NOT NULL default '0', + `sp` mediumint(6) unsigned NOT NULL default '0', + `status_point` smallint(4) unsigned NOT NULL default '0', + `skill_point` smallint(4) unsigned NOT NULL default '0', + `option` int(11) NOT NULL default '0', + `karma` tinyint(3) NOT NULL default '0', + `manner` tinyint(3) NOT NULL default '0', + `party_id` int(11) unsigned NOT NULL default '0', + `guild_id` int(11) unsigned NOT NULL default '0', + `pet_id` int(11) unsigned NOT NULL default '0', + `homun_id` int(11) unsigned NOT NULL default '0', + `hair` tinyint(4) unsigned NOT NULL default '0', + `hair_color` smallint(5) unsigned NOT NULL default '0', + `clothes_color` smallint(5) unsigned NOT NULL default '0', + `weapon` smallint(6) unsigned NOT NULL default '1', + `shield` smallint(6) unsigned NOT NULL default '0', + `head_top` smallint(6) unsigned NOT NULL default '0', + `head_mid` smallint(6) unsigned NOT NULL default '0', + `head_bottom` smallint(6) unsigned NOT NULL default '0', + `last_map` varchar(20) NOT NULL default 'prontera.gat', + `last_x` smallint(4) unsigned NOT NULL default '53', + `last_y` smallint(4) unsigned NOT NULL default '111', + `save_map` varchar(20) NOT NULL default 'prontera.gat', + `save_x` smallint(4) unsigned NOT NULL default '53', + `save_y` smallint(4) unsigned NOT NULL default '111', + `partner_id` int(11) unsigned NOT NULL default '0', + `online` tinyint(2) NOT NULL default '0', + `father` int(11) unsigned NOT NULL default '0', + `mother` int(11) unsigned NOT NULL default '0', + `child` int(11) unsigned NOT NULL default '0', + `fame` int(11) unsigned NOT NULL default '0', + PRIMARY KEY (`char_id`), + KEY `account_id` (`account_id`), + KEY `party_id` (`party_id`), + KEY `guild_id` (`guild_id`), + KEY `name` (`name`), + KEY `online` (`online`) +) TYPE=MyISAM AUTO_INCREMENT=150000; + +-- +-- Table structure for table `charlog` +-- + +DROP TABLE IF EXISTS `charlog`; +CREATE TABLE `charlog` ( + `time` datetime NOT NULL default '0000-00-00 00:00:00', + `char_msg` varchar(255) NOT NULL default 'char select', + `account_id` int(11) NOT NULL default '0', + `char_num` tinyint(4) NOT NULL default '0', + `name` varchar(255) NOT NULL default '', + `str` int(11) unsigned NOT NULL default '0', + `agi` int(11) unsigned NOT NULL default '0', + `vit` int(11) unsigned NOT NULL default '0', + `int` int(11) unsigned NOT NULL default '0', + `dex` int(11) unsigned NOT NULL default '0', + `luk` int(11) unsigned NOT NULL default '0', + `hair` tinyint(4) NOT NULL default '0', + `hair_color` int(11) NOT NULL default '0' +) TYPE=MyISAM; + +-- +-- Table structure for table `friends` +-- + +DROP TABLE IF EXISTS `friends`; +CREATE TABLE `friends` ( + `char_id` int(11) NOT NULL default '0', + `friend_account` int(11) NOT NULL default '0', + `friend_id` int(11) NOT NULL default '0', + KEY `char_id` (`char_id`) +) TYPE=MyISAM; + +-- +-- Table structure for table `global_reg_value` +-- + +DROP TABLE IF EXISTS `global_reg_value`; +CREATE TABLE `global_reg_value` ( + `char_id` int(11) unsigned NOT NULL default '0', + `str` varchar(255) NOT NULL default '', + `value` varchar(255) NOT NULL default '0', + `type` int(11) NOT NULL default '3', + `account_id` int(11) unsigned NOT NULL default '0', + PRIMARY KEY (`char_id`,`str`,`account_id`), + KEY `account_id` (`account_id`), + KEY `char_id` (`char_id`) +) TYPE=MyISAM; + +-- +-- Table structure for table `guild` +-- + +DROP TABLE IF EXISTS `guild`; +CREATE TABLE `guild` ( + `guild_id` int(11) unsigned NOT NULL auto_increment, + `name` varchar(24) NOT NULL default '', + `char_id` int(11) unsigned NOT NULL default '0', + `master` varchar(24) NOT NULL default '', + `guild_lv` tinyint(6) unsigned NOT NULL default '0', + `connect_member` tinyint(6) unsigned NOT NULL default '0', + `max_member` tinyint(6) unsigned NOT NULL default '0', + `average_lv` smallint(6) unsigned NOT NULL default '1', + `exp` int(11) unsigned NOT NULL default '0', + `next_exp` int(11) unsigned NOT NULL default '0', + `skill_point` tinyint(11) unsigned NOT NULL default '0', + `mes1` varchar(60) NOT NULL default '', + `mes2` varchar(120) NOT NULL default '', + `emblem_len` int(11) unsigned NOT NULL default '0', + `emblem_id` int(11) unsigned NOT NULL default '0', + `emblem_data` blob, + PRIMARY KEY (`guild_id`,`char_id`), + UNIQUE KEY `guild_id` (`guild_id`), + KEY `char_id` (`char_id`) +) TYPE=MyISAM; + +-- +-- Table structure for table `guild_alliance` +-- + +DROP TABLE IF EXISTS `guild_alliance`; +CREATE TABLE `guild_alliance` ( + `guild_id` int(11) unsigned NOT NULL default '0', + `opposition` int(11) unsigned NOT NULL default '0', + `alliance_id` int(11) unsigned NOT NULL default '0', + `name` varchar(24) NOT NULL default '', + PRIMARY KEY (`guild_id`,`alliance_id`), + KEY `alliance_id` (`alliance_id`) +) TYPE=MyISAM; + +-- +-- Table structure for table `guild_castle` +-- + +DROP TABLE IF EXISTS `guild_castle`; +CREATE TABLE `guild_castle` ( + `castle_id` int(11) unsigned NOT NULL default '0', + `guild_id` int(11) unsigned NOT NULL default '0', + `economy` int(11) unsigned NOT NULL default '0', + `defense` int(11) unsigned NOT NULL default '0', + `triggerE` int(11) unsigned NOT NULL default '0', + `triggerD` int(11) unsigned NOT NULL default '0', + `nextTime` int(11) unsigned NOT NULL default '0', + `payTime` int(11) unsigned NOT NULL default '0', + `createTime` int(11) unsigned NOT NULL default '0', + `visibleC` int(11) unsigned NOT NULL default '0', + `visibleG0` int(11) unsigned NOT NULL default '0', + `visibleG1` int(11) unsigned NOT NULL default '0', + `visibleG2` int(11) unsigned NOT NULL default '0', + `visibleG3` int(11) unsigned NOT NULL default '0', + `visibleG4` int(11) unsigned NOT NULL default '0', + `visibleG5` int(11) unsigned NOT NULL default '0', + `visibleG6` int(11) unsigned NOT NULL default '0', + `visibleG7` int(11) unsigned NOT NULL default '0', + `gHP0` int(11) unsigned NOT NULL default '0', + `ghP1` int(11) unsigned NOT NULL default '0', + `gHP2` int(11) unsigned NOT NULL default '0', + `gHP3` int(11) unsigned NOT NULL default '0', + `gHP4` int(11) unsigned NOT NULL default '0', + `gHP5` int(11) unsigned NOT NULL default '0', + `gHP6` int(11) unsigned NOT NULL default '0', + `gHP7` int(11) unsigned NOT NULL default '0', + PRIMARY KEY (`castle_id`), + KEY `guild_id` (`guild_id`) +) TYPE=MyISAM; + +-- +-- Table structure for table `guild_expulsion` +-- + +DROP TABLE IF EXISTS `guild_expulsion`; +CREATE TABLE `guild_expulsion` ( + `guild_id` int(11) unsigned NOT NULL default '0', + `name` varchar(24) NOT NULL default '', + `mes` varchar(40) NOT NULL default '', + `acc` varchar(40) NOT NULL default '', + `account_id` int(11) unsigned NOT NULL default '0', + `rsv1` int(11) unsigned NOT NULL default '0', + `rsv2` int(11) unsigned NOT NULL default '0', + `rsv3` int(11) unsigned NOT NULL default '0', + PRIMARY KEY (`guild_id`,`name`) +) TYPE=MyISAM; + +-- +-- Table structure for table `guild_member` +-- + +DROP TABLE IF EXISTS `guild_member`; +CREATE TABLE `guild_member` ( + `guild_id` int(11) unsigned NOT NULL default '0', + `account_id` int(11) unsigned NOT NULL default '0', + `char_id` int(11) unsigned NOT NULL default '0', + `hair` tinyint(6) unsigned NOT NULL default '0', + `hair_color` smallint(6) unsigned NOT NULL default '0', + `gender` tinyint(6) unsigned NOT NULL default '0', + `class` smallint(6) unsigned NOT NULL default '0', + `lv` smallint(6) unsigned NOT NULL default '0', + `exp` bigint(20) unsigned NOT NULL default '0', + `exp_payper` tinyint(11) unsigned NOT NULL default '0', + `online` tinyint(4) unsigned NOT NULL default '0', + `position` tinyint(6) unsigned NOT NULL default '0', + `rsv1` int(11) unsigned NOT NULL default '0', + `rsv2` int(11) unsigned NOT NULL default '0', + `name` varchar(24) NOT NULL default '', + PRIMARY KEY (`guild_id`,`char_id`), + KEY `char_id` (`char_id`) +) TYPE=MyISAM; + +-- +-- Table structure for table `guild_position` +-- + +DROP TABLE IF EXISTS `guild_position`; +CREATE TABLE `guild_position` ( + `guild_id` int(9) unsigned NOT NULL default '0', + `position` tinyint(6) unsigned NOT NULL default '0', + `name` varchar(24) NOT NULL default '', + `mode` tinyint(11) unsigned NOT NULL default '0', + `exp_mode` tinyint(11) unsigned NOT NULL default '0', + PRIMARY KEY (`guild_id`,`position`), + KEY `guild_id` (`guild_id`) +) TYPE=MyISAM; + +-- +-- Table structure for table `guild_skill` +-- + +DROP TABLE IF EXISTS `guild_skill`; +CREATE TABLE `guild_skill` ( + `guild_id` int(11) unsigned NOT NULL default '0', + `id` smallint(11) unsigned NOT NULL default '0', + `lv` tinyint(11) unsigned NOT NULL default '0', + PRIMARY KEY (`guild_id`,`id`) +) TYPE=MyISAM; + +-- +-- Table structure for table `guild_storage` +-- + +DROP TABLE IF EXISTS `guild_storage`; +CREATE TABLE `guild_storage` ( + `id` int(10) unsigned NOT NULL auto_increment, + `guild_id` int(11) unsigned NOT NULL default '0', + `nameid` int(11) unsigned NOT NULL default '0', + `amount` int(11) unsigned NOT NULL default '0', + `equip` mediumint(8) unsigned NOT NULL default '0', + `identify` smallint(6) unsigned NOT NULL default '0', + `refine` tinyint(3) unsigned NOT NULL default '0', + `attribute` tinyint(4) unsigned NOT NULL default '0', + `card0` smallint(11) NOT NULL default '0', + `card1` smallint(11) NOT NULL default '0', + `card2` smallint(11) NOT NULL default '0', + `card3` smallint(11) NOT NULL default '0', + PRIMARY KEY (`id`), + KEY `guild_id` (`guild_id`) +) TYPE=MyISAM; + +-- +-- Table structure for table `homunculus` +-- + +DROP TABLE IF EXISTS `homunculus`; +CREATE TABLE `homunculus` ( + `homun_id` int(11) NOT NULL auto_increment, + `char_id` int(11) NOT NULL, + `class` mediumint(9) unsigned NOT NULL default '0', + `name` varchar(24) NOT NULL default '', + `level` smallint(4) NOT NULL default '0', + `exp` int(12) NOT NULL default '0', + `intimacy` int(12) NOT NULL default '0', + `hunger` smallint(4) NOT NULL default '0', + `str` smallint(4) unsigned NOT NULL default '0', + `agi` smallint(4) unsigned NOT NULL default '0', + `vit` smallint(4) unsigned NOT NULL default '0', + `int` smallint(4) unsigned NOT NULL default '0', + `dex` smallint(4) unsigned NOT NULL default '0', + `luk` smallint(4) unsigned NOT NULL default '0', + `hp` int(12) NOT NULL default '1', + `max_hp` int(12) NOT NULL default '1', + `sp` int(12) NOT NULL default '1', + `max_sp` int(12) NOT NULL default '1', + `skill_point` smallint(4) unsigned NOT NULL default '0', + `alive` tinyint(2) NOT NULL default '1', + `rename_flag` tinyint(2) NOT NULL default '0', + `vaporize` tinyint(2) NOT NULL default '0', + PRIMARY KEY (`homun_id`) +) TYPE=MyISAM; + +-- +-- Table structure for table `interlog` +-- + +DROP TABLE IF EXISTS `interlog`; +CREATE TABLE `interlog` ( + `time` datetime NOT NULL default '0000-00-00 00:00:00', + `log` varchar(255) NOT NULL default '' +) TYPE=MyISAM; + +-- +-- Table structure for table `inventory` +-- + +DROP TABLE IF EXISTS `inventory`; +CREATE TABLE `inventory` ( + `id` int(11) unsigned NOT NULL auto_increment, + `char_id` int(11) unsigned NOT NULL default '0', + `nameid` int(11) unsigned NOT NULL default '0', + `amount` int(11) unsigned NOT NULL default '0', + `equip` mediumint(8) unsigned NOT NULL default '0', + `identify` smallint(6) NOT NULL default '0', + `refine` tinyint(3) unsigned NOT NULL default '0', + `attribute` tinyint(4) unsigned NOT NULL default '0', + `card0` smallint(11) NOT NULL default '0', + `card1` smallint(11) NOT NULL default '0', + `card2` smallint(11) NOT NULL default '0', + `card3` smallint(11) NOT NULL default '0', + PRIMARY KEY (`id`), + KEY `char_id` (`char_id`) +) TYPE=MyISAM; + +-- +-- Table structure for table `ipbanlist` +-- + +DROP TABLE IF EXISTS `ipbanlist`; +CREATE TABLE `ipbanlist` ( + `list` varchar(255) NOT NULL default '', + `btime` datetime NOT NULL default '0000-00-00 00:00:00', + `rtime` datetime NOT NULL default '0000-00-00 00:00:00', + `reason` varchar(255) NOT NULL default '', + KEY (`list`) +) TYPE=MyISAM; + +-- +-- Table structure for table `login` +-- + +DROP TABLE IF EXISTS `login`; +CREATE TABLE `login` ( + `account_id` int(11) unsigned NOT NULL auto_increment, + `userid` varchar(255) NOT NULL default '', + `user_pass` varchar(32) NOT NULL default '', + `lastlogin` datetime NOT NULL default '0000-00-00 00:00:00', + `sex` char(1) NOT NULL default 'M', + `logincount` mediumint(9) unsigned NOT NULL default '0', + `email` varchar(60) NOT NULL default '', + `level` tinyint(3) NOT NULL default '0', + `error_message` smallint(11) unsigned NOT NULL default '0', + `connect_until` int(11) unsigned NOT NULL default '0', + `last_ip` varchar(100) NOT NULL default '', + `memo` smallint(11) unsigned NOT NULL default '0', + `ban_until` int(11) unsigned NOT NULL default '0', + `state` int(11) unsigned NOT NULL default '0', + PRIMARY KEY (`account_id`), + KEY `name` (`userid`) +) TYPE=MyISAM AUTO_INCREMENT=2000000; + +-- added standard accounts for servers, VERY INSECURE!!! +-- inserted into the table called login which is above + +INSERT INTO `login` (`account_id`, `userid`, `user_pass`, `sex`, `email`) VALUES ('1', 's1', 'p1', 'S','athena@athena.com'); + +-- +-- Table structure for table `mapreg` +-- + +DROP TABLE IF EXISTS `mapreg`; +CREATE TABLE `mapreg` ( + `varname` varchar(32) NOT NULL, + `index` int(11) unsigned NOT NULL default '0', + `value` varchar(255) NOT NULL, + KEY `varname` (`varname`), + KEY `index` (`index`) +) TYPE=MyISAM; + +-- +-- Table structure for table `sc_data` +-- + +DROP TABLE IF EXISTS `sc_data`; +CREATE TABLE `sc_data` ( + `account_id` int(11) unsigned NOT NULL, + `char_id` int(11) unsigned NOT NULL, + `type` smallint(11) unsigned NOT NULL, + `tick` int(11) NOT NULL, + `val1` int(11) NOT NULL default '0', + `val2` int(11) NOT NULL default '0', + `val3` int(11) NOT NULL default '0', + `val4` int(11) NOT NULL default '0', + KEY (`account_id`), + KEY (`char_id`) +) TYPE=MyISAM; + +-- +-- Table structure for table `loginlog` +-- + +DROP TABLE IF EXISTS `loginlog`; +CREATE TABLE `loginlog` ( + `time` datetime NOT NULL default '0000-00-00 00:00:00', + `ip` int(10) unsigned NOT NULL default '0', + `user` varchar(32) NOT NULL default '', + `rcode` tinyint(4) NOT NULL default '0', + `log` varchar(255) NOT NULL default '', + INDEX (`ip`) +) TYPE=MyISAM; + +-- +-- Table structure for table `memo` +-- + +DROP TABLE IF EXISTS `memo`; +CREATE TABLE `memo` ( + `memo_id` int(11) unsigned NOT NULL auto_increment, + `char_id` int(11) unsigned NOT NULL default '0', + `map` varchar(255) NOT NULL default '', + `x` smallint(9) unsigned NOT NULL default '0', + `y` smallint(9) unsigned NOT NULL default '0', + PRIMARY KEY (`memo_id`), + KEY `char_id` (`char_id`) +) TYPE=MyISAM; + +-- +-- Table structure for table `party` +-- + +DROP TABLE IF EXISTS `party`; +CREATE TABLE `party` ( + `party_id` int(11) unsigned NOT NULL auto_increment, + `name` char(100) NOT NULL default '', + `exp` tinyint(11) unsigned NOT NULL default '0', + `item` tinyint(11) unsigned NOT NULL default '0', + `leader_id` int(11) unsigned NOT NULL default '0', + `leader_char` int(11) unsigned NOT NULL default '0', + PRIMARY KEY (`party_id`) +) TYPE=MyISAM; + +-- +-- Table structure for table `pet` +-- + +DROP TABLE IF EXISTS `pet`; +CREATE TABLE `pet` ( + `pet_id` int(11) unsigned NOT NULL auto_increment, + `class` mediumint(9) unsigned NOT NULL default '0', + `name` varchar(24) NOT NULL default '', + `account_id` int(11) unsigned NOT NULL default '0', + `char_id` int(11) unsigned NOT NULL default '0', + `level` smallint(4) unsigned NOT NULL default '0', + `egg_id` smallint(11) unsigned NOT NULL default '0', + `equip` mediumint(8) unsigned NOT NULL default '0', + `intimate` smallint(9) unsigned NOT NULL default '0', + `hungry` smallint(9) unsigned NOT NULL default '0', + `rename_flag` tinyint(4) unsigned NOT NULL default '0', + `incuvate` int(11) unsigned NOT NULL default '0', + PRIMARY KEY (`pet_id`) +) TYPE=MyISAM; + +-- +-- Table structure for table `ragsrvinfo` +-- + +DROP TABLE IF EXISTS `ragsrvinfo`; +CREATE TABLE `ragsrvinfo` ( + `index` int(11) NOT NULL default '0', + `name` varchar(255) NOT NULL default '', + `exp` int(11) unsigned NOT NULL default '0', + `jexp` int(11) unsigned NOT NULL default '0', + `drop` int(11) unsigned NOT NULL default '0', + `motd` varchar(255) NOT NULL default '' +) TYPE=MyISAM; + +-- +-- Table structure for table `skill` +-- + +DROP TABLE IF EXISTS `skill`; +CREATE TABLE `skill` ( + `char_id` int(11) unsigned NOT NULL default '0', + `id` smallint(11) unsigned NOT NULL default '0', + `lv` tinyint(4) unsigned NOT NULL default '0', + PRIMARY KEY (`char_id`,`id`), + KEY `char_id` (`char_id`) +) TYPE=MyISAM; + +-- +-- Table structure for table `skill_homunculus` +-- + +DROP TABLE IF EXISTS `skill_homunculus`; +CREATE TABLE `skill_homunculus` ( + `homun_id` int(11) NOT NULL, + `id` int(11) NOT NULL, + `lv` smallint(6) NOT NULL, + PRIMARY KEY (`homun_id`,`id`), + KEY `homun_id` (`homun_id`) +) TYPE=MyISAM; + +-- +-- Table structure for table `sstatus` +-- + +DROP TABLE IF EXISTS `sstatus`; +CREATE TABLE `sstatus` ( + `index` tinyint(4) unsigned NOT NULL default '0', + `name` varchar(255) NOT NULL default '', + `user` int(11) unsigned NOT NULL default '0' +) TYPE=MyISAM; + +-- +-- Table structure for table `storage` +-- + +DROP TABLE IF EXISTS `storage`; +CREATE TABLE `storage` ( + `id` int(11) unsigned NOT NULL auto_increment, + `account_id` int(11) unsigned NOT NULL default '0', + `nameid` int(11) unsigned NOT NULL default '0', + `amount` smallint(11) unsigned NOT NULL default '0', + `equip` mediumint(8) unsigned NOT NULL default '0', + `identify` smallint(6) unsigned NOT NULL default '0', + `refine` tinyint(3) unsigned NOT NULL default '0', + `attribute` tinyint(4) unsigned NOT NULL default '0', + `card0` smallint(11) NOT NULL default '0', + `card1` smallint(11) NOT NULL default '0', + `card2` smallint(11) NOT NULL default '0', + `card3` smallint(11) NOT NULL default '0', + PRIMARY KEY (`id`), + KEY `account_id` (`account_id`) +) TYPE=MyISAM; diff --git a/sql-files/oA2eA-rc5.sql b/sql-files/oA2eA-rc5.sql index 2e30fa4b8..b501b232c 100644 --- a/sql-files/oA2eA-rc5.sql +++ b/sql-files/oA2eA-rc5.sql @@ -1,204 +1,204 @@ -// -// When converting from oA to eA, my oA db was in ragnarok so I created -// a new db called eragnarok and then ran the following commands... -// -// /usr/local/mysql/bin/mysql -Deragnarok -u eragnarok -p< athena/sql-files/main.sql -// /usr/local/mysql/bin/mysql -Deragnarok -u eragnarok -p< athena/sql-files/db_tables.sql -// /usr/local/mysql/bin/mysql -Deragnarok -u eragnarok -p< athena/sql-files/mail.sql -// /usr/local/mysql/bin/mysql -Deragnarok -u eragnarok -p< athena/sql-files/oA2eA-rc5.sql -// -// This creates a eragnarok database and fills everything in from the oA -// database. -// -// -- MouseJstr - -CREATE TABLE `item_db` ( - `id` smallint(5) unsigned NOT NULL default '0', - `name_english` varchar(24) NOT NULL default '', - `name_japanese` varchar(24) NOT NULL default '', - `type` tinyint(2) unsigned NOT NULL default '0', - `price_buy` int(10) unsigned default NULL, - `price_sell` int(10) unsigned default NULL, - `weight` int(10) unsigned NOT NULL default '0', - `attack` mediumint(9) unsigned default NULL, - `defence` mediumint(9) unsigned default NULL, - `range` tinyint(2) unsigned default NULL, - `slots` tinyint(1) unsigned default NULL, - `equip_jobs` mediumint(8) unsigned default NULL, - `equip_genders` tinyint(1) unsigned default NULL, - `equip_locations` smallint(4) unsigned default NULL, - `weapon_level` tinyint(1) unsigned default NULL, - `equip_level` tinyint(3) unsigned default NULL, - `view` tinyint(3) unsigned default NULL, - `script_use` text, - `script_equip` text, - PRIMARY KEY (`id`) -) TYPE=MyISAM; - -CREATE TABLE `mob_db` ( - `ID` mediumint(9) NOT NULL default '0', - `Name` text NOT NULL, - `Name2` text NOT NULL, - `LV` smallint(6) NOT NULL default '0', - `HP` mediumint(9) NOT NULL default '0', - `SP` mediumint(9) NOT NULL default '0', - `EXP` mediumint(9) NOT NULL default '0', - `JEXP` mediumint(9) NOT NULL default '0', - `Range1` tinyint(4) NOT NULL default '0', - `ATK1` smallint(6) NOT NULL default '0', - `ATK2` smallint(6) NOT NULL default '0', - `DEF` smallint(6) NOT NULL default '0', - `MDEF` smallint(6) NOT NULL default '0', - `STR` tinyint(4) NOT NULL default '0', - `AGI` tinyint(4) NOT NULL default '0', - `VIT` tinyint(4) NOT NULL default '0', - `INT` tinyint(4) NOT NULL default '0', - `DEX` tinyint(4) NOT NULL default '0', - `LUK` tinyint(4) NOT NULL default '0', - `Range2` tinyint(4) NOT NULL default '0', - `Range3` tinyint(4) NOT NULL default '0', - `Scale` tinyint(4) NOT NULL default '0', - `Race` tinyint(4) NOT NULL default '0', - `Element` tinyint(4) NOT NULL default '0', - `Mode` smallint(6) NOT NULL default '0', - `Speed` smallint(6) NOT NULL default '0', - `ADelay` smallint(6) NOT NULL default '0', - `aMotion` smallint(6) NOT NULL default '0', - `dMotion` smallint(6) NOT NULL default '0', - `Drop1id` mediumint(9) NOT NULL default '0', - `Drop1per` mediumint(9) NOT NULL default '0', - `Drop2id` mediumint(9) NOT NULL default '0', - `Drop2per` mediumint(9) NOT NULL default '0', - `Drop3id` mediumint(9) NOT NULL default '0', - `Drop3per` mediumint(9) NOT NULL default '0', - `Drop4id` mediumint(9) NOT NULL default '0', - `Drop4per` mediumint(9) NOT NULL default '0', - `Drop5id` mediumint(9) NOT NULL default '0', - `Drop5per` mediumint(9) NOT NULL default '0', - `Drop6id` mediumint(9) NOT NULL default '0', - `Drop6per` mediumint(9) NOT NULL default '0', - `Drop7id` mediumint(9) NOT NULL default '0', - `Drop7per` mediumint(9) NOT NULL default '0', - `Drop8id` mediumint(9) NOT NULL default '0', - `Drop8per` mediumint(9) NOT NULL default '0', - `MEXP` mediumint(9) NOT NULL default '0', - `ExpPer` mediumint(9) NOT NULL default '0', - `MVP1id` mediumint(9) NOT NULL default '0', - `MVP1per` mediumint(9) NOT NULL default '0', - `MVP2id` mediumint(9) NOT NULL default '0', - `MVP2per` mediumint(9) NOT NULL default '0', - `MVP3id` mediumint(9) NOT NULL default '0', - `MVP3per` mediumint(9) NOT NULL default '0' -) TYPE=MyISAM; - -INSERT INTO eragnarok.storage(`id`, `account_id`, `nameid`, `amount`, `equip`, `identify`, `refine`, `attribute`, `card0`, `card1`, `card2`, `card3`) SELECT `id`, `account_id`, `nameid`, `amount`, `equip`, `identify`, `refine`, `attribute`, `card0`, `card1`, `card2`, `card3` from ragnarok.storage; - - INSERT INTO eragnarok.cart_inventory(`id`, `char_id`, `nameid`, `amount`, `equip`, `identify`, `refine`, `attribute`, `card0`, `card1`, `card2`, `card3`, `broken`) SELECT `id`, `char_id`, `nameid`, `amount`, `equip`, `identify`, `refine`, `attribute`, `card0`, `card1`, `card2`, `card3`, `broken` from ragnarok.cart_inventory; - -INSERT INTO eragnarok.char( `char_id`, `account_id`, `char_num`, `name`, `class`, `base_level`, `job_level`, `base_exp`, `job_exp`, `zeny`, `str`, `agi`, `vit`, `int`, `dex`, `luk`, `max_hp`, `hp`, `max_sp`, `sp`, `status_point`, `skill_point`, `option`, `karma`, `manner`, `party_id`, `guild_id`, `pet_id`, `hair`, `hair_color`, `clothes_color`, `weapon`, `shield`, `head_top`, `head_mid`, `head_bottom`, `last_map`, `last_x`, `last_y`, `save_map`, `save_x`, `save_y`, `partner_id`, `online`) SELECT `char_id`, `account_id`, `char_num`, `name`, `class`, `base_level`, `job_level`, `base_exp`, `job_exp`, `zeny`, `str`, `agi`, `vit`, `int`, `dex`, `luk`, `max_hp`, `hp`, `max_sp`, `sp`, `status_point`, `skill_point`, `option`, `karma`, `manner`, `party_id`, `guild_id`, `pet_id`, `hair`, `hair_color`, `clothes_color`, `weapon`, `shield`, `head_top`, `head_mid`, `head_bottom`, `last_map`, `last_x`, `last_y`, `save_map`, `save_x`, `save_y`, `partner_id`, `online` from ragnarok.char; - -INSERT INTO eragnarok.charlog( `time`, `char_msg`, `account_id`, `char_num`, `name`, `str`, `agi`, `vit`, `int`, `dex`, `luk`, `hair`, `hair_color` ) SELECT `time`, `char_msg`, `account_id`, `char_num`, `name`, `str`, `agi`, `vit`, `int`, `dex`, `luk`, `hair`, `hair_color` from ragnarok.charlog; - -INSERT INTO eragnarok.global_reg_value ( `char_id`, `str`, `value`, `type`, `account_id`) SELECT `char_id`, `str`, `value`, `type`, `account_id` from ragnarok.global_reg_value ; - -INSERT INTO eragnarok.guild( `guild_id`, `name`, `master`, `guild_lv`, `connect_member`, `max_member`, `average_lv`, `exp`, `next_exp`, `skill_point`, `castle_id`, `mes1`, `mes2`, `emblem_len`, `emblem_id`, `emblem_data` ) SELECT `guild_id`, `name`, `master`, `guild_lv`, `connect_member`, `max_member`, `average_lv`, `exp`, `next_exp`, `skill_point`, `castle_id`, `mes1`, `mes2`, `emblem_len`, `emblem_id`, `emblem_data` from ragnarok.guild; - -INSERT INTO eragnarok.guild_alliance ( `guild_id`, `opposition`, `alliance_id`, `name` ) SELECT `guild_id`, `opposition`, `alliance_id`, `name` from ragnarok.guild_alliance ; - -INSERT INTO eragnarok.guild_castle ( `castle_id`, `guild_id`, `economy`, `defense`, `triggerE`, `triggerD`, `nextTime`, `payTime`, `createTime`, `visibleC`, `visibleG0`, `visibleG1`, `visibleG2`, `visibleG3`, `visibleG4`, `visibleG5`, `visibleG6`, `visibleG7` ) SELECT `castle_id`, `guild_id`, `economy`, `defense`, `triggerE`, `triggerD`, `nextTime`, `payTime`, `createTime`, `visibleC`, `visibleG0`, `visibleG1`, `visibleG2`, `visibleG3`, `visibleG4`, `visibleG5`, `visibleG6`, `visibleG7` from ragnarok.guild_castle ; - -INSERT INTO eragnarok.guild_expulsion ( `guild_id`, `name`, `mes`, `acc`, `account_id`, `rsv1`, `rsv2`, `rsv3` ) SELECT `guild_id`, `name`, `mes`, `acc`, `account_id`, `rsv1`, `rsv2`, `rsv3` from ragnarok.guild_expulsion ; - -INSERT INTO eragnarok.guild_member ( `guild_id`, `account_id`, `char_id`, `hair`, `hair_color`, `gender`, `class`, `lv`, `exp`, `exp_payper`, `online`, `position`, `rsv1`, `rsv2`, `name` ) SELECT `guild_id`, `account_id`, `char_id`, `hair`, `hair_color`, `gender`, `class`, `lv`, `exp`, `exp_payper`, `online`, `position`, `rsv1`, `rsv2`, `name` from ragnarok.guild_member ; - -INSERT INTO eragnarok.guild_position ( `guild_id`, `position`, `name`, `mode`, `exp_mode` ) SELECT `guild_id`, `position`, `name`, `mode`, `exp_mode` from ragnarok.guild_position ; - -INSERT INTO eragnarok.guild_skill ( `guild_id`, `id`, `lv` ) SELECT `guild_id`, `id`, `lv` from ragnarok.guild_skill ; - -INSERT INTO eragnarok.guild_storage ( `id`, `guild_id`, `nameid`, `amount`, `equip`, `identify`, `refine`, `attribute`, `card0`, `card1`, `card2`, `card3` ) SELECT `id`, `guild_id`, `nameid`, `amount`, `equip`, `identify`, `refine`, `attribute`, `card0`, `card1`, `card2`, `card3` from ragnarok.guild_storage ; - -INSERT INTO eragnarok.interlog ( `time`, `log` ) SELECT `time`, `log` from ragnarok.interlog ; - -INSERT INTO eragnarok.inventory ( `id`, `char_id`, `nameid`, `amount`, `equip`, `identify`, `refine`, `attribute`, `card0`, `card1`, `card2`, `card3` ) SELECT `id`, `char_id`, `nameid`, `amount`, `equip`, `identify`, `refine`, `attribute`, `card0`, `card1`, `card2`, `card3` from ragnarok.inventory ; - -INSERT INTO eragnarok.ipbanlist ( `list`, `btime`, `rtime`, `reason` ) SELECT `list`, `btime`, `rtime`, `reason` from ragnarok.ipbanlist ; - - -# INSERT INTO eragnarok.login_error ( `err_id`, `reason` ) SELECT `err_id`, `reason` from ragnarok.login_error ; - -INSERT INTO eragnarok.loginlog ( `time`, `ip`, `user`, `rcode`, `log` ) SELECT `time`, `ip`, `user`, `rcode`, `log` from ragnarok.loginlog ; - -INSERT INTO eragnarok.memo ( `memo_id`, `char_id`, `map`, `x`, `y` ) SELECT `memo_id`, `char_id`, `map`, `x`, `y` from ragnarok.memo ; - -INSERT INTO eragnarok.party ( `party_id`, `name`, `exp`, `item`, `leader_id` ) SELECT `party_id`, `name`, `exp`, `item`, `leader_id` from ragnarok.party ; - -INSERT INTO eragnarok.pet ( `pet_id`, `class`, `name`, `account_id`, `char_id`, `level`, `egg_id`, `equip`, `intimate`, `hungry`, `rename_flag`, `incuvate` ) SELECT `pet_id`, `class`, `name`, `account_id`, `char_id`, `level`, `egg_id`, `equip`, `intimate`, `hungry`, `rename_flag`, `incuvate` from ragnarok.pet ; - -INSERT INTO eragnarok.ragsrvinfo ( `index`, `name`, `exp`, `jexp`, `drop` ) SELECT `index`, `name`, `exp`, `jexp`, `drop` from ragnarok.ragsrvinfo ; - -INSERT INTO eragnarok.skill ( `char_id`, `id`, `lv` ) SELECT `char_id`, `id`, `lv` from ragnarok.skill ; - -INSERT INTO eragnarok.sstatus ( `index`, `name`, `user` ) SELECT `index`, `name`, `user` from ragnarok.sstatus ; - - -# INSERT INTO eragnarok.abra_db ( `ID`, `Dummy`, `Req_Lvl`, `Per`, `Comment`) SELECT `ID`, `Dummy`, `Req_Lvl`, `Per`, `Comment` from ragnarok.abra_db; - -# INSERT INTO eragnarok.attr_fix ( `Level`, `None`, `Water`, `Earth`, `Fire`, `Wind`, `Poison`, `Saint`, `Darkness`, `Sense`, `Immortality`, `Comment`) SELECT `Level`, `None`, `Water`, `Earth`, `Fire`, `Wind`, `Poison`, `Saint`, `Darkness`, `Sense`, `Immortality`, `Comment` from ragnarok.attr_fix; - -# INSERT INTO eragnarok.cast_db ( `ID`, `Cast_List`, `Delay_List`, `Upkeep_Time`, `Upkeep_Time2`, `Comment` ) SELECT `ID`, `Cast_List`, `Delay_List`, `Upkeep_Time`, `Upkeep_Time2`, `Comment` from ragnarok.cast_db; - -#INSERT INTO eragnarok.castle_db ( `CastleID`, `map_name`, `castle_name`, `switch_flag`, `Comment` ) SELECT `CastleID`, `map_name`, `castle_name`, `switch_flag`, `Comment` from ragnarok.castle_db; - -#INSERT INTO eragnarok.create_arrow_db ( `SourceID`, `MakeID1`, `MakeNum1`, `MakeID2`, `MakeNum2`, `MakeID3`, `MakeNum3`, `MakeID4`, `MakeNum4`, `MakeID5`, `MakeNum5`, `Comment` ) SELECT `SourceID`, `MakeID1`, `MakeNum1`, `MakeID2`, `MakeNum2`, `MakeID3`, `MakeNum3`, `MakeID4`, `MakeNum4`, `MakeID5`, `MakeNum5`, `Comment` from ragnarok.create_arrow_db; - -#INSERT INTO eragnarok.exp ( `EXP1`, `EXP2`, `EXP3`, `EXP4`, `EXP5`, `EXP6`, `EXP7`, `EXP8`, `EXP9`, `EXP10`, `EXP11`, `EXP12`, `EXP13`, `EXP14` ) SELECT `EXP1`, `EXP2`, `EXP3`, `EXP4`, `EXP5`, `EXP6`, `EXP7`, `EXP8`, `EXP9`, `EXP10`, `EXP11`, `EXP12`, `EXP13`, `EXP14` from ragnarok.exp; - -#INSERT INTO eragnarok.exp_guild ( `Level`, `EXP`, `Comment` ) SELECT `Level`, `EXP`, `Comment` from ragnarok.exp_guild; - -#INSERT INTO eragnarok.item_bluebox ( `NameID`, `item_name`, `rate`, `Comment` ) SELECT `NameID`, `item_name`, `rate`, `Comment` from ragnarok.item_bluebox; - -#INSERT INTO eragnarok.item_cardalbum ( `NameID`, `item_name`, `rate`, `Comment` ) SELECT `NameID`, `item_name`, `rate`, `Comment` from ragnarok.item_cardalbum; - -INSERT INTO eragnarok.item_db2 ( `ID`, `Name`, `Name2`, `Type`, `Price`, `Sell`, `Weight`, `ATK`, `DEF`, `Range`, `Slot`, `Job`, `Gender`, `Loc`, `wLV`, `eLV`, `View`, `UseScript`, `EquipScript`, `Comment` ) SELECT `ID`, `Name`, `Name2`, `Type`, `Price`, `Sell`, `Weight`, `ATK`, `DEF`, `Range`, `Slot`, `Job`, `Gender`, `Loc`, `wLV`, `eLV`, `View`, `UseScript`, `EquipScript`, `Comment` from ragnarok.item_db2; - -# INSERT INTO eragnarok.item_giftbox ( `NameID`, `item_name`, `rate`, `Comment` ) SELECT `NameID`, `item_name`, `rate`, `Comment` from ragnarok.item_giftbox; - -#INSERT INTO eragnarok.item_scroll ( `NameID`, `item_name`, `rate`, `Comment` ) SELECT `NameID`, `item_name`, `rate`, `Comment` from ragnarok.item_scroll; - -#INSERT INTO eragnarok.item_violetbox ( `NameID`, `item_name`, `rate`, `Comment` ) SELECT `NameID`, `item_name`, `rate`, `Comment` from ragnarok.item_violetbox; - -#INSERT INTO eragnarok.job_db1 ( `Class_ID`, `Weight`, `HP`, `HP2`, `SP`, `Empty`, `Dagger`, `Sword`, `Two_Handed_Sword`, `Spear`, `Two_Handed_Spear`, `Axe`, `Two_Handed_Axe`, `Rod`, `Club`, `Stick`, `Bow`, `Fist`, `Musical`, `Whip`, `Book`, `Katar`, `Comment` ) SELECT `Class_ID`, `Weight`, `HP`, `HP2`, `SP`, `Empty`, `Dagger`, `Sword`, `Two_Handed_Sword`, `Spear`, `Two_Handed_Spear`, `Axe`, `Two_Handed_Axe`, `Rod`, `Club`, `Stick`, `Bow`, `Fist`, `Musical`, `Whip`, `Book`, `Katar`, `Comment` from ragnarok.job_db1; - -INSERT INTO eragnarok.mob_boss ( `MobID`, `MobName`, `Rate`, `Comment` ) SELECT `MobID`, `MobName`, `Rate`, `Comment` from ragnarok.mob_boss; - -INSERT INTO eragnarok.mob_branch ( `MobID`, `MobName`, `Rate`, `Comment` ) SELECT `MobID`, `MobName`, `Rate`, `Comment` from ragnarok.mob_branch; - -INSERT INTO eragnarok.mob_db2 ( `ID`, `Name`, `Name2`, `LV`, `HP`, `SP`, `EXP`, `JEXP`, `Range1`, `ATK1`, `ATK2`, `DEF`, `MDEF`, `STR`, `AGI`, `VIT`, `INT`, `DEX`, `LUK`, `Range2`, `Range3`, `Scale`, `Race`, `Element`, `Mode`, `Speed`, `ADelay`, `aMotion`, `dMotion`, `Drop1id`, `Drop1per`, `Drop2id`, `Drop2per`, `Drop3id`, `Drop3per`, `Drop4id`, `Drop4per`, `Drop5id`, `Drop5per`, `Drop6id`, `Drop6per`, `Drop7d`, `Drop7per`, `Drop8id`, `Drop8per`, `Item1`, `Item2`, `MEXP`, `ExpPer`, `MVP1id`, `MVP1per`, `MVP2id`, `MVP2per`, `MVP3id`, `MVP3per`, `Comment` ) SELECT `ID`, `Name`, `Name2`, `LV`, `HP`, `SP`, `EXP`, `JEXP`, `Range1`, `ATK1`, `ATK2`, `DEF`, `MDEF`, `STR`, `AGI`, `VIT`, `INT`, `DEX`, `LUK`, `Range2`, `Range3`, `Scale`, `Race`, `Element`, `Mode`, `Speed`, `ADelay`, `aMotion`, `dMotion`, `Drop1id`, `Drop1per`, `Drop2id`, `Drop2per`, `Drop3id`, `Drop3per`, `Drop4id`, `Drop4per`, `Drop5id`, `Drop5per`, `Drop6id`, `Drop6per`, `Drop7d`, `Drop7per`, `Drop8id`, `Drop8per`, `Item1`, `Item2`, `MEXP`, `ExpPer`, `MVP1id`, `MVP1per`, `MVP2id`, `MVP2per`, `MVP3id`, `MVP3per`, `Comment` from ragnarok.mob_db2; - -INSERT INTO eragnarok.mob_poring ( `MobID`, `MobName`, `Rate`, `Comment` ) SELECT `MobID`, `MobName`, `Rate`, `Comment` from ragnarok.mob_poring; - -INSERT INTO eragnarok.mob_skill_db ( `Mob_ID`, `Dummy`, `State`, `Skill_ID`, `Skill_LV`, `Use_Rate`, `Cast_Time`, `Delay`, `Disturbance`, `Target`, `Condition_Type`, `Condition_Value`, `Value1`, `Value2`, `Value3`, `Value4`, `Value5`, `Comment` ) SELECT `Mob_ID`, `Dummy`, `State`, `Skill_ID`, `Skill_LV`, `Use_Rate`, `Cast_Time`, `Delay`, `Disturbance`, `Target`, `Condition_Type`, `Condition_Value`, `Value1`, `Value2`, `Value3`, `Value4`, `Value5`, `Comment` from ragnarok.mob_skill_db; - -#INSERT INTO eragnarok.pet_db ( `MobID`, `Name`, `JName`, `ItemID`, `EggID`, `AcceID`, `FoodID`, `Fullness`, `HungryDeray`, `R_Hungry`, `R_Full`, `Intimate`, `Die`, `Capture`, `Speed`, `S_Performance`, `Talk_Convert_Class`, `Attack_Rate`, `Defence_Attack_Rate`, `Change_Target_Rate`, `Pet_Script`, `Comment` ) SELECT `MobID`, `Name`, `JName`, `ItemID`, `EggID`, `AcceID`, `FoodID`, `Fullness`, `HungryDeray`, `R_Hungry`, `R_Full`, `Intimate`, `Die`, `Capture`, `Speed`, `S_Performance`, `Talk_Convert_Class`, `Attack_Rate`, `Defence_Attack_Rate`, `Change_Target_Rate`, `Pet_Script`, `Comment` from ragnarok.pet_db; - -#INSERT INTO eragnarok.produce_db ( `ID`, `ItemLV`, `RequireSkill`, `MaterialID1`, `MaterialAmount1`, `MaterialID2`, `MaterialAmount2`, `MaterialID3`, `MaterialAmount3`, `MaterialID4`, `MaterialAmount4`, `MaterialID5`, `MaterialAmount5`, `Comment` ) SELECT `ID`, `ItemLV`, `RequireSkill`, `MaterialID1`, `MaterialAmount1`, `MaterialID2`, `MaterialAmount2`, `MaterialID3`, `MaterialAmount3`, `MaterialID4`, `MaterialAmount4`, `MaterialID5`, `MaterialAmount5`, `Comment` from ragnarok.produce_db; - -#INSERT INTO eragnarok.refine_db ( `Refine_Bonus`, `Danger_Bonus`, `Safe_Limit`, `RefineChance1`, `RefineChance2`, `RefineChance3`, `RefineChance4`, `RefineChance5`, `RefineChance6`, `RefineChance7`, `RefineChance8`, `RefineChance9`, `RefineChance10`, `Comment` ) SELECT `Refine_Bonus`, `Danger_Bonus`, `Safe_Limit`, `RefineChance1`, `RefineChance2`, `RefineChance3`, `RefineChance4`, `RefineChance5`, `RefineChance6`, `RefineChance7`, `RefineChance8`, `RefineChance9`, `RefineChance10`, `Comment` from ragnarok.refine_db; - -#INSERT INTO eragnarok.size_fix ( `Element`, `Dagger`, `Sword`, `Two_Handed_Sword`, `Spear`, `Two_Handed_Spear`, `Axe`, `Two_Handed_Axe`, `Club`, `Whip`, `Stick`, `Bow`, `Fist`, `Musical`, `Rod`, `Book`, `Katar`, `Comment` ) SELECT `Element`, `Dagger`, `Sword`, `Two_Handed_Sword`, `Spear`, `Two_Handed_Spear`, `Axe`, `Two_Handed_Axe`, `Club`, `Whip`, `Stick`, `Bow`, `Fist`, `Musical`, `Rod`, `Book`, `Katar`, `Comment` from ragnarok.size_fix; - -#INSERT INTO eragnarok.skill_db ( `ID`, `Range`, `Hit`, `inf`, `nk`, `max`, `list_num`, `castcancel`, `cast_defence_rate`, `inf2`, `maxcount`, `skill_type`, `blow_count`, `Comment` ) SELECT `ID`, `Range`, `Hit`, `inf`, `nk`, `max`, `list_num`, `castcancel`, `cast_defence_rate`, `inf2`, `maxcount`, `skill_type`, `blow_count`, `Comment` from ragnarok.skill_db; - -#INSERT INTO eragnarok.skill_require_db ( `ID`, `List_HP`, `List_SP`, `List_HP_Rate`, `List_SP_Rate`, `List_Zeny`, `List_Weapon`, `State`, `Spiritball`, `ItemID1`, `Amount1`, `ItemID2`, `Amount2`, `ItemID3`, `Amount3`, `ItemID4`, `Amount4`, `ItemID5`, `Amount5`, `ItemID6`, `Amount6`, `ItemID7`, `Amount7`, `ItemID8`, `Amount8`, `ItemID9`, `Amount9`, `ItemID10`, `Amount10`, `Comment` ) SELECT `ID`, `List_HP`, `List_SP`, `List_HP_Rate`, `List_SP_Rate`, `List_Zeny`, `List_Weapon`, `State`, `Spiritball`, `ItemID1`, `Amount1`, `ItemID2`, `Amount2`, `ItemID3`, `Amount3`, `ItemID4`, `Amount4`, `ItemID5`, `Amount5`, `ItemID6`, `Amount6`, `ItemID7`, `Amount7`, `ItemID8`, `Amount8`, `ItemID9`, `Amount9`, `ItemID10`, `Amount10`, `Comment` from ragnarok.skill_require_db; - -#INSERT INTO eragnarok.skill_tree ( `Upper`, `JobNo`, `Skill_ID`, `MaxLV`, `Skill_ID_Require1`, `Skill_LV_Require1`, `Skill_ID_Require2`, `Skill_LV_Require2`, `Skill_ID_Require3`, `Skill_LV_Require3`, `Skill_ID_Require4`, `Skill_LV_Require4`, `Skill_ID_Require5`, `Skill_LV_Require5`, `Comment` ) SELECT `Upper`, `JobNo`, `Skill_ID`, `MaxLV`, `Skill_ID_Require1`, `Skill_LV_Require1`, `Skill_ID_Require2`, `Skill_LV_Require2`, `Skill_ID_Require3`, `Skill_LV_Require3`, `Skill_ID_Require4`, `Skill_LV_Require4`, `Skill_ID_Require5`, `Skill_LV_Require5`, `Comment` from ragnarok.skill_tree; - -INSERT INTO eragnarok.item_db ( `id`, `name_english`, `name_japanese`, `type`, `price_buy`, `price_sell`, `weight`, `attack`, `defence`, `range`, `slots`, `equip_jobs`, `equip_genders`, `equip_locations`, `weapon_level`, `equip_level`, `view`, `script_use`, `script_equip` ) SELECT `id`, `Name`, `Name2`, `type`, `Price`, `Sell`, `Weight`, `Atk`, `Def`, `range`, `Slot`, `Job`, `Gender`, `Loc`, `wLV`, `eLV`, `view`, `UseScript`, `EquipScript` from ragnarok.item_db; - -UPDATE item_db SET price_sell = price_buy/2; - -INSERT INTO eragnarok.mob_db (`ID`, `Name`, `Name2`, `LV`, `HP`, `SP`, `EXP`, `JEXP`, `Range1`, `ATK1`, `ATK2`, `DEF`, `MDEF`, `STR`, `AGI`, `VIT`, `INT`, `DEX`, `LUK`, `Range2`, `Range3`, `Scale`, `Race`, `Element`, `Mode`, `Speed`, `ADelay`, `aMotion`, `dMotion`, `Drop1id`, `Drop1per`, `Drop2id`, `Drop2per`, `Drop3id`, `Drop3per`, `Drop4id`, `Drop4per`, `Drop5id`, `Drop5per`, `Drop6id`, `Drop6per`, `Drop7id`, `Drop7per`, `Drop8id`, `Drop8per`, `MEXP`, `ExpPer`, `MVP1id`, `MVP1per`, `MVP2id`, `MVP2per`, `MVP3id`, `MVP3per`) SELECT `ID`, `Name`, `Name2`, `LV`, `HP`, `SP`, `EXP`, `JEXP`, `Range1`, `ATK1`, `ATK2`, `DEF`, `MDEF`, `STR`, `AGI`, `VIT`, `INT`, `DEX`, `LUK`, `Range2`, `Range3`, `Scale`, `Race`, `Element`, `Mode`, `Speed`, `ADelay`, `aMotion`, `dMotion`, `Drop1id`, `Drop1per`, `Drop2id`, `Drop2per`, `Drop3id`, `Drop3per`, `Drop4id`, `Drop4per`, `Drop5id`, `Drop5per`, `Drop6id`, `Drop6per`, `Drop7id`, `Drop7per`, `Drop8id`, `Drop8per`, `MEXP`, `ExpPer`, `MVP1id`, `MVP1per`, `MVP2id`, `MVP2per`, `MVP3id`, `MVP3per` from ragnarok.mob_db; - -DELETE FROM eragnarok.login; - -INSERT INTO eragnarok.login ( `account_id`, `userid`, `user_pass`, `lastlogin`, `sex`, `logincount`, `email`, `level` ) SELECT `account_id`, `userid`, `user_pass`, `lastlogin`, `sex`, `logincount`, `email`, `level` from ragnarok.login ; +// +// When converting from oA to eA, my oA db was in ragnarok so I created +// a new db called eragnarok and then ran the following commands... +// +// /usr/local/mysql/bin/mysql -Deragnarok -u eragnarok -p< athena/sql-files/main.sql +// /usr/local/mysql/bin/mysql -Deragnarok -u eragnarok -p< athena/sql-files/db_tables.sql +// /usr/local/mysql/bin/mysql -Deragnarok -u eragnarok -p< athena/sql-files/mail.sql +// /usr/local/mysql/bin/mysql -Deragnarok -u eragnarok -p< athena/sql-files/oA2eA-rc5.sql +// +// This creates a eragnarok database and fills everything in from the oA +// database. +// +// -- MouseJstr + +CREATE TABLE `item_db` ( + `id` smallint(5) unsigned NOT NULL default '0', + `name_english` varchar(24) NOT NULL default '', + `name_japanese` varchar(24) NOT NULL default '', + `type` tinyint(2) unsigned NOT NULL default '0', + `price_buy` int(10) unsigned default NULL, + `price_sell` int(10) unsigned default NULL, + `weight` int(10) unsigned NOT NULL default '0', + `attack` mediumint(9) unsigned default NULL, + `defence` mediumint(9) unsigned default NULL, + `range` tinyint(2) unsigned default NULL, + `slots` tinyint(1) unsigned default NULL, + `equip_jobs` mediumint(8) unsigned default NULL, + `equip_genders` tinyint(1) unsigned default NULL, + `equip_locations` smallint(4) unsigned default NULL, + `weapon_level` tinyint(1) unsigned default NULL, + `equip_level` tinyint(3) unsigned default NULL, + `view` tinyint(3) unsigned default NULL, + `script_use` text, + `script_equip` text, + PRIMARY KEY (`id`) +) TYPE=MyISAM; + +CREATE TABLE `mob_db` ( + `ID` mediumint(9) NOT NULL default '0', + `Name` text NOT NULL, + `Name2` text NOT NULL, + `LV` smallint(6) NOT NULL default '0', + `HP` mediumint(9) NOT NULL default '0', + `SP` mediumint(9) NOT NULL default '0', + `EXP` mediumint(9) NOT NULL default '0', + `JEXP` mediumint(9) NOT NULL default '0', + `Range1` tinyint(4) NOT NULL default '0', + `ATK1` smallint(6) NOT NULL default '0', + `ATK2` smallint(6) NOT NULL default '0', + `DEF` smallint(6) NOT NULL default '0', + `MDEF` smallint(6) NOT NULL default '0', + `STR` tinyint(4) NOT NULL default '0', + `AGI` tinyint(4) NOT NULL default '0', + `VIT` tinyint(4) NOT NULL default '0', + `INT` tinyint(4) NOT NULL default '0', + `DEX` tinyint(4) NOT NULL default '0', + `LUK` tinyint(4) NOT NULL default '0', + `Range2` tinyint(4) NOT NULL default '0', + `Range3` tinyint(4) NOT NULL default '0', + `Scale` tinyint(4) NOT NULL default '0', + `Race` tinyint(4) NOT NULL default '0', + `Element` tinyint(4) NOT NULL default '0', + `Mode` smallint(6) NOT NULL default '0', + `Speed` smallint(6) NOT NULL default '0', + `ADelay` smallint(6) NOT NULL default '0', + `aMotion` smallint(6) NOT NULL default '0', + `dMotion` smallint(6) NOT NULL default '0', + `Drop1id` mediumint(9) NOT NULL default '0', + `Drop1per` mediumint(9) NOT NULL default '0', + `Drop2id` mediumint(9) NOT NULL default '0', + `Drop2per` mediumint(9) NOT NULL default '0', + `Drop3id` mediumint(9) NOT NULL default '0', + `Drop3per` mediumint(9) NOT NULL default '0', + `Drop4id` mediumint(9) NOT NULL default '0', + `Drop4per` mediumint(9) NOT NULL default '0', + `Drop5id` mediumint(9) NOT NULL default '0', + `Drop5per` mediumint(9) NOT NULL default '0', + `Drop6id` mediumint(9) NOT NULL default '0', + `Drop6per` mediumint(9) NOT NULL default '0', + `Drop7id` mediumint(9) NOT NULL default '0', + `Drop7per` mediumint(9) NOT NULL default '0', + `Drop8id` mediumint(9) NOT NULL default '0', + `Drop8per` mediumint(9) NOT NULL default '0', + `MEXP` mediumint(9) NOT NULL default '0', + `ExpPer` mediumint(9) NOT NULL default '0', + `MVP1id` mediumint(9) NOT NULL default '0', + `MVP1per` mediumint(9) NOT NULL default '0', + `MVP2id` mediumint(9) NOT NULL default '0', + `MVP2per` mediumint(9) NOT NULL default '0', + `MVP3id` mediumint(9) NOT NULL default '0', + `MVP3per` mediumint(9) NOT NULL default '0' +) TYPE=MyISAM; + +INSERT INTO eragnarok.storage(`id`, `account_id`, `nameid`, `amount`, `equip`, `identify`, `refine`, `attribute`, `card0`, `card1`, `card2`, `card3`) SELECT `id`, `account_id`, `nameid`, `amount`, `equip`, `identify`, `refine`, `attribute`, `card0`, `card1`, `card2`, `card3` from ragnarok.storage; + + INSERT INTO eragnarok.cart_inventory(`id`, `char_id`, `nameid`, `amount`, `equip`, `identify`, `refine`, `attribute`, `card0`, `card1`, `card2`, `card3`, `broken`) SELECT `id`, `char_id`, `nameid`, `amount`, `equip`, `identify`, `refine`, `attribute`, `card0`, `card1`, `card2`, `card3`, `broken` from ragnarok.cart_inventory; + +INSERT INTO eragnarok.char( `char_id`, `account_id`, `char_num`, `name`, `class`, `base_level`, `job_level`, `base_exp`, `job_exp`, `zeny`, `str`, `agi`, `vit`, `int`, `dex`, `luk`, `max_hp`, `hp`, `max_sp`, `sp`, `status_point`, `skill_point`, `option`, `karma`, `manner`, `party_id`, `guild_id`, `pet_id`, `hair`, `hair_color`, `clothes_color`, `weapon`, `shield`, `head_top`, `head_mid`, `head_bottom`, `last_map`, `last_x`, `last_y`, `save_map`, `save_x`, `save_y`, `partner_id`, `online`) SELECT `char_id`, `account_id`, `char_num`, `name`, `class`, `base_level`, `job_level`, `base_exp`, `job_exp`, `zeny`, `str`, `agi`, `vit`, `int`, `dex`, `luk`, `max_hp`, `hp`, `max_sp`, `sp`, `status_point`, `skill_point`, `option`, `karma`, `manner`, `party_id`, `guild_id`, `pet_id`, `hair`, `hair_color`, `clothes_color`, `weapon`, `shield`, `head_top`, `head_mid`, `head_bottom`, `last_map`, `last_x`, `last_y`, `save_map`, `save_x`, `save_y`, `partner_id`, `online` from ragnarok.char; + +INSERT INTO eragnarok.charlog( `time`, `char_msg`, `account_id`, `char_num`, `name`, `str`, `agi`, `vit`, `int`, `dex`, `luk`, `hair`, `hair_color` ) SELECT `time`, `char_msg`, `account_id`, `char_num`, `name`, `str`, `agi`, `vit`, `int`, `dex`, `luk`, `hair`, `hair_color` from ragnarok.charlog; + +INSERT INTO eragnarok.global_reg_value ( `char_id`, `str`, `value`, `type`, `account_id`) SELECT `char_id`, `str`, `value`, `type`, `account_id` from ragnarok.global_reg_value ; + +INSERT INTO eragnarok.guild( `guild_id`, `name`, `master`, `guild_lv`, `connect_member`, `max_member`, `average_lv`, `exp`, `next_exp`, `skill_point`, `castle_id`, `mes1`, `mes2`, `emblem_len`, `emblem_id`, `emblem_data` ) SELECT `guild_id`, `name`, `master`, `guild_lv`, `connect_member`, `max_member`, `average_lv`, `exp`, `next_exp`, `skill_point`, `castle_id`, `mes1`, `mes2`, `emblem_len`, `emblem_id`, `emblem_data` from ragnarok.guild; + +INSERT INTO eragnarok.guild_alliance ( `guild_id`, `opposition`, `alliance_id`, `name` ) SELECT `guild_id`, `opposition`, `alliance_id`, `name` from ragnarok.guild_alliance ; + +INSERT INTO eragnarok.guild_castle ( `castle_id`, `guild_id`, `economy`, `defense`, `triggerE`, `triggerD`, `nextTime`, `payTime`, `createTime`, `visibleC`, `visibleG0`, `visibleG1`, `visibleG2`, `visibleG3`, `visibleG4`, `visibleG5`, `visibleG6`, `visibleG7` ) SELECT `castle_id`, `guild_id`, `economy`, `defense`, `triggerE`, `triggerD`, `nextTime`, `payTime`, `createTime`, `visibleC`, `visibleG0`, `visibleG1`, `visibleG2`, `visibleG3`, `visibleG4`, `visibleG5`, `visibleG6`, `visibleG7` from ragnarok.guild_castle ; + +INSERT INTO eragnarok.guild_expulsion ( `guild_id`, `name`, `mes`, `acc`, `account_id`, `rsv1`, `rsv2`, `rsv3` ) SELECT `guild_id`, `name`, `mes`, `acc`, `account_id`, `rsv1`, `rsv2`, `rsv3` from ragnarok.guild_expulsion ; + +INSERT INTO eragnarok.guild_member ( `guild_id`, `account_id`, `char_id`, `hair`, `hair_color`, `gender`, `class`, `lv`, `exp`, `exp_payper`, `online`, `position`, `rsv1`, `rsv2`, `name` ) SELECT `guild_id`, `account_id`, `char_id`, `hair`, `hair_color`, `gender`, `class`, `lv`, `exp`, `exp_payper`, `online`, `position`, `rsv1`, `rsv2`, `name` from ragnarok.guild_member ; + +INSERT INTO eragnarok.guild_position ( `guild_id`, `position`, `name`, `mode`, `exp_mode` ) SELECT `guild_id`, `position`, `name`, `mode`, `exp_mode` from ragnarok.guild_position ; + +INSERT INTO eragnarok.guild_skill ( `guild_id`, `id`, `lv` ) SELECT `guild_id`, `id`, `lv` from ragnarok.guild_skill ; + +INSERT INTO eragnarok.guild_storage ( `id`, `guild_id`, `nameid`, `amount`, `equip`, `identify`, `refine`, `attribute`, `card0`, `card1`, `card2`, `card3` ) SELECT `id`, `guild_id`, `nameid`, `amount`, `equip`, `identify`, `refine`, `attribute`, `card0`, `card1`, `card2`, `card3` from ragnarok.guild_storage ; + +INSERT INTO eragnarok.interlog ( `time`, `log` ) SELECT `time`, `log` from ragnarok.interlog ; + +INSERT INTO eragnarok.inventory ( `id`, `char_id`, `nameid`, `amount`, `equip`, `identify`, `refine`, `attribute`, `card0`, `card1`, `card2`, `card3` ) SELECT `id`, `char_id`, `nameid`, `amount`, `equip`, `identify`, `refine`, `attribute`, `card0`, `card1`, `card2`, `card3` from ragnarok.inventory ; + +INSERT INTO eragnarok.ipbanlist ( `list`, `btime`, `rtime`, `reason` ) SELECT `list`, `btime`, `rtime`, `reason` from ragnarok.ipbanlist ; + + +# INSERT INTO eragnarok.login_error ( `err_id`, `reason` ) SELECT `err_id`, `reason` from ragnarok.login_error ; + +INSERT INTO eragnarok.loginlog ( `time`, `ip`, `user`, `rcode`, `log` ) SELECT `time`, `ip`, `user`, `rcode`, `log` from ragnarok.loginlog ; + +INSERT INTO eragnarok.memo ( `memo_id`, `char_id`, `map`, `x`, `y` ) SELECT `memo_id`, `char_id`, `map`, `x`, `y` from ragnarok.memo ; + +INSERT INTO eragnarok.party ( `party_id`, `name`, `exp`, `item`, `leader_id` ) SELECT `party_id`, `name`, `exp`, `item`, `leader_id` from ragnarok.party ; + +INSERT INTO eragnarok.pet ( `pet_id`, `class`, `name`, `account_id`, `char_id`, `level`, `egg_id`, `equip`, `intimate`, `hungry`, `rename_flag`, `incuvate` ) SELECT `pet_id`, `class`, `name`, `account_id`, `char_id`, `level`, `egg_id`, `equip`, `intimate`, `hungry`, `rename_flag`, `incuvate` from ragnarok.pet ; + +INSERT INTO eragnarok.ragsrvinfo ( `index`, `name`, `exp`, `jexp`, `drop` ) SELECT `index`, `name`, `exp`, `jexp`, `drop` from ragnarok.ragsrvinfo ; + +INSERT INTO eragnarok.skill ( `char_id`, `id`, `lv` ) SELECT `char_id`, `id`, `lv` from ragnarok.skill ; + +INSERT INTO eragnarok.sstatus ( `index`, `name`, `user` ) SELECT `index`, `name`, `user` from ragnarok.sstatus ; + + +# INSERT INTO eragnarok.abra_db ( `ID`, `Dummy`, `Req_Lvl`, `Per`, `Comment`) SELECT `ID`, `Dummy`, `Req_Lvl`, `Per`, `Comment` from ragnarok.abra_db; + +# INSERT INTO eragnarok.attr_fix ( `Level`, `None`, `Water`, `Earth`, `Fire`, `Wind`, `Poison`, `Saint`, `Darkness`, `Sense`, `Immortality`, `Comment`) SELECT `Level`, `None`, `Water`, `Earth`, `Fire`, `Wind`, `Poison`, `Saint`, `Darkness`, `Sense`, `Immortality`, `Comment` from ragnarok.attr_fix; + +# INSERT INTO eragnarok.cast_db ( `ID`, `Cast_List`, `Delay_List`, `Upkeep_Time`, `Upkeep_Time2`, `Comment` ) SELECT `ID`, `Cast_List`, `Delay_List`, `Upkeep_Time`, `Upkeep_Time2`, `Comment` from ragnarok.cast_db; + +#INSERT INTO eragnarok.castle_db ( `CastleID`, `map_name`, `castle_name`, `switch_flag`, `Comment` ) SELECT `CastleID`, `map_name`, `castle_name`, `switch_flag`, `Comment` from ragnarok.castle_db; + +#INSERT INTO eragnarok.create_arrow_db ( `SourceID`, `MakeID1`, `MakeNum1`, `MakeID2`, `MakeNum2`, `MakeID3`, `MakeNum3`, `MakeID4`, `MakeNum4`, `MakeID5`, `MakeNum5`, `Comment` ) SELECT `SourceID`, `MakeID1`, `MakeNum1`, `MakeID2`, `MakeNum2`, `MakeID3`, `MakeNum3`, `MakeID4`, `MakeNum4`, `MakeID5`, `MakeNum5`, `Comment` from ragnarok.create_arrow_db; + +#INSERT INTO eragnarok.exp ( `EXP1`, `EXP2`, `EXP3`, `EXP4`, `EXP5`, `EXP6`, `EXP7`, `EXP8`, `EXP9`, `EXP10`, `EXP11`, `EXP12`, `EXP13`, `EXP14` ) SELECT `EXP1`, `EXP2`, `EXP3`, `EXP4`, `EXP5`, `EXP6`, `EXP7`, `EXP8`, `EXP9`, `EXP10`, `EXP11`, `EXP12`, `EXP13`, `EXP14` from ragnarok.exp; + +#INSERT INTO eragnarok.exp_guild ( `Level`, `EXP`, `Comment` ) SELECT `Level`, `EXP`, `Comment` from ragnarok.exp_guild; + +#INSERT INTO eragnarok.item_bluebox ( `NameID`, `item_name`, `rate`, `Comment` ) SELECT `NameID`, `item_name`, `rate`, `Comment` from ragnarok.item_bluebox; + +#INSERT INTO eragnarok.item_cardalbum ( `NameID`, `item_name`, `rate`, `Comment` ) SELECT `NameID`, `item_name`, `rate`, `Comment` from ragnarok.item_cardalbum; + +INSERT INTO eragnarok.item_db2 ( `ID`, `Name`, `Name2`, `Type`, `Price`, `Sell`, `Weight`, `ATK`, `DEF`, `Range`, `Slot`, `Job`, `Gender`, `Loc`, `wLV`, `eLV`, `View`, `UseScript`, `EquipScript`, `Comment` ) SELECT `ID`, `Name`, `Name2`, `Type`, `Price`, `Sell`, `Weight`, `ATK`, `DEF`, `Range`, `Slot`, `Job`, `Gender`, `Loc`, `wLV`, `eLV`, `View`, `UseScript`, `EquipScript`, `Comment` from ragnarok.item_db2; + +# INSERT INTO eragnarok.item_giftbox ( `NameID`, `item_name`, `rate`, `Comment` ) SELECT `NameID`, `item_name`, `rate`, `Comment` from ragnarok.item_giftbox; + +#INSERT INTO eragnarok.item_scroll ( `NameID`, `item_name`, `rate`, `Comment` ) SELECT `NameID`, `item_name`, `rate`, `Comment` from ragnarok.item_scroll; + +#INSERT INTO eragnarok.item_violetbox ( `NameID`, `item_name`, `rate`, `Comment` ) SELECT `NameID`, `item_name`, `rate`, `Comment` from ragnarok.item_violetbox; + +#INSERT INTO eragnarok.job_db1 ( `Class_ID`, `Weight`, `HP`, `HP2`, `SP`, `Empty`, `Dagger`, `Sword`, `Two_Handed_Sword`, `Spear`, `Two_Handed_Spear`, `Axe`, `Two_Handed_Axe`, `Rod`, `Club`, `Stick`, `Bow`, `Fist`, `Musical`, `Whip`, `Book`, `Katar`, `Comment` ) SELECT `Class_ID`, `Weight`, `HP`, `HP2`, `SP`, `Empty`, `Dagger`, `Sword`, `Two_Handed_Sword`, `Spear`, `Two_Handed_Spear`, `Axe`, `Two_Handed_Axe`, `Rod`, `Club`, `Stick`, `Bow`, `Fist`, `Musical`, `Whip`, `Book`, `Katar`, `Comment` from ragnarok.job_db1; + +INSERT INTO eragnarok.mob_boss ( `MobID`, `MobName`, `Rate`, `Comment` ) SELECT `MobID`, `MobName`, `Rate`, `Comment` from ragnarok.mob_boss; + +INSERT INTO eragnarok.mob_branch ( `MobID`, `MobName`, `Rate`, `Comment` ) SELECT `MobID`, `MobName`, `Rate`, `Comment` from ragnarok.mob_branch; + +INSERT INTO eragnarok.mob_db2 ( `ID`, `Name`, `Name2`, `LV`, `HP`, `SP`, `EXP`, `JEXP`, `Range1`, `ATK1`, `ATK2`, `DEF`, `MDEF`, `STR`, `AGI`, `VIT`, `INT`, `DEX`, `LUK`, `Range2`, `Range3`, `Scale`, `Race`, `Element`, `Mode`, `Speed`, `ADelay`, `aMotion`, `dMotion`, `Drop1id`, `Drop1per`, `Drop2id`, `Drop2per`, `Drop3id`, `Drop3per`, `Drop4id`, `Drop4per`, `Drop5id`, `Drop5per`, `Drop6id`, `Drop6per`, `Drop7d`, `Drop7per`, `Drop8id`, `Drop8per`, `Item1`, `Item2`, `MEXP`, `ExpPer`, `MVP1id`, `MVP1per`, `MVP2id`, `MVP2per`, `MVP3id`, `MVP3per`, `Comment` ) SELECT `ID`, `Name`, `Name2`, `LV`, `HP`, `SP`, `EXP`, `JEXP`, `Range1`, `ATK1`, `ATK2`, `DEF`, `MDEF`, `STR`, `AGI`, `VIT`, `INT`, `DEX`, `LUK`, `Range2`, `Range3`, `Scale`, `Race`, `Element`, `Mode`, `Speed`, `ADelay`, `aMotion`, `dMotion`, `Drop1id`, `Drop1per`, `Drop2id`, `Drop2per`, `Drop3id`, `Drop3per`, `Drop4id`, `Drop4per`, `Drop5id`, `Drop5per`, `Drop6id`, `Drop6per`, `Drop7d`, `Drop7per`, `Drop8id`, `Drop8per`, `Item1`, `Item2`, `MEXP`, `ExpPer`, `MVP1id`, `MVP1per`, `MVP2id`, `MVP2per`, `MVP3id`, `MVP3per`, `Comment` from ragnarok.mob_db2; + +INSERT INTO eragnarok.mob_poring ( `MobID`, `MobName`, `Rate`, `Comment` ) SELECT `MobID`, `MobName`, `Rate`, `Comment` from ragnarok.mob_poring; + +INSERT INTO eragnarok.mob_skill_db ( `Mob_ID`, `Dummy`, `State`, `Skill_ID`, `Skill_LV`, `Use_Rate`, `Cast_Time`, `Delay`, `Disturbance`, `Target`, `Condition_Type`, `Condition_Value`, `Value1`, `Value2`, `Value3`, `Value4`, `Value5`, `Comment` ) SELECT `Mob_ID`, `Dummy`, `State`, `Skill_ID`, `Skill_LV`, `Use_Rate`, `Cast_Time`, `Delay`, `Disturbance`, `Target`, `Condition_Type`, `Condition_Value`, `Value1`, `Value2`, `Value3`, `Value4`, `Value5`, `Comment` from ragnarok.mob_skill_db; + +#INSERT INTO eragnarok.pet_db ( `MobID`, `Name`, `JName`, `ItemID`, `EggID`, `AcceID`, `FoodID`, `Fullness`, `HungryDeray`, `R_Hungry`, `R_Full`, `Intimate`, `Die`, `Capture`, `Speed`, `S_Performance`, `Talk_Convert_Class`, `Attack_Rate`, `Defence_Attack_Rate`, `Change_Target_Rate`, `Pet_Script`, `Comment` ) SELECT `MobID`, `Name`, `JName`, `ItemID`, `EggID`, `AcceID`, `FoodID`, `Fullness`, `HungryDeray`, `R_Hungry`, `R_Full`, `Intimate`, `Die`, `Capture`, `Speed`, `S_Performance`, `Talk_Convert_Class`, `Attack_Rate`, `Defence_Attack_Rate`, `Change_Target_Rate`, `Pet_Script`, `Comment` from ragnarok.pet_db; + +#INSERT INTO eragnarok.produce_db ( `ID`, `ItemLV`, `RequireSkill`, `MaterialID1`, `MaterialAmount1`, `MaterialID2`, `MaterialAmount2`, `MaterialID3`, `MaterialAmount3`, `MaterialID4`, `MaterialAmount4`, `MaterialID5`, `MaterialAmount5`, `Comment` ) SELECT `ID`, `ItemLV`, `RequireSkill`, `MaterialID1`, `MaterialAmount1`, `MaterialID2`, `MaterialAmount2`, `MaterialID3`, `MaterialAmount3`, `MaterialID4`, `MaterialAmount4`, `MaterialID5`, `MaterialAmount5`, `Comment` from ragnarok.produce_db; + +#INSERT INTO eragnarok.refine_db ( `Refine_Bonus`, `Danger_Bonus`, `Safe_Limit`, `RefineChance1`, `RefineChance2`, `RefineChance3`, `RefineChance4`, `RefineChance5`, `RefineChance6`, `RefineChance7`, `RefineChance8`, `RefineChance9`, `RefineChance10`, `Comment` ) SELECT `Refine_Bonus`, `Danger_Bonus`, `Safe_Limit`, `RefineChance1`, `RefineChance2`, `RefineChance3`, `RefineChance4`, `RefineChance5`, `RefineChance6`, `RefineChance7`, `RefineChance8`, `RefineChance9`, `RefineChance10`, `Comment` from ragnarok.refine_db; + +#INSERT INTO eragnarok.size_fix ( `Element`, `Dagger`, `Sword`, `Two_Handed_Sword`, `Spear`, `Two_Handed_Spear`, `Axe`, `Two_Handed_Axe`, `Club`, `Whip`, `Stick`, `Bow`, `Fist`, `Musical`, `Rod`, `Book`, `Katar`, `Comment` ) SELECT `Element`, `Dagger`, `Sword`, `Two_Handed_Sword`, `Spear`, `Two_Handed_Spear`, `Axe`, `Two_Handed_Axe`, `Club`, `Whip`, `Stick`, `Bow`, `Fist`, `Musical`, `Rod`, `Book`, `Katar`, `Comment` from ragnarok.size_fix; + +#INSERT INTO eragnarok.skill_db ( `ID`, `Range`, `Hit`, `inf`, `nk`, `max`, `list_num`, `castcancel`, `cast_defence_rate`, `inf2`, `maxcount`, `skill_type`, `blow_count`, `Comment` ) SELECT `ID`, `Range`, `Hit`, `inf`, `nk`, `max`, `list_num`, `castcancel`, `cast_defence_rate`, `inf2`, `maxcount`, `skill_type`, `blow_count`, `Comment` from ragnarok.skill_db; + +#INSERT INTO eragnarok.skill_require_db ( `ID`, `List_HP`, `List_SP`, `List_HP_Rate`, `List_SP_Rate`, `List_Zeny`, `List_Weapon`, `State`, `Spiritball`, `ItemID1`, `Amount1`, `ItemID2`, `Amount2`, `ItemID3`, `Amount3`, `ItemID4`, `Amount4`, `ItemID5`, `Amount5`, `ItemID6`, `Amount6`, `ItemID7`, `Amount7`, `ItemID8`, `Amount8`, `ItemID9`, `Amount9`, `ItemID10`, `Amount10`, `Comment` ) SELECT `ID`, `List_HP`, `List_SP`, `List_HP_Rate`, `List_SP_Rate`, `List_Zeny`, `List_Weapon`, `State`, `Spiritball`, `ItemID1`, `Amount1`, `ItemID2`, `Amount2`, `ItemID3`, `Amount3`, `ItemID4`, `Amount4`, `ItemID5`, `Amount5`, `ItemID6`, `Amount6`, `ItemID7`, `Amount7`, `ItemID8`, `Amount8`, `ItemID9`, `Amount9`, `ItemID10`, `Amount10`, `Comment` from ragnarok.skill_require_db; + +#INSERT INTO eragnarok.skill_tree ( `Upper`, `JobNo`, `Skill_ID`, `MaxLV`, `Skill_ID_Require1`, `Skill_LV_Require1`, `Skill_ID_Require2`, `Skill_LV_Require2`, `Skill_ID_Require3`, `Skill_LV_Require3`, `Skill_ID_Require4`, `Skill_LV_Require4`, `Skill_ID_Require5`, `Skill_LV_Require5`, `Comment` ) SELECT `Upper`, `JobNo`, `Skill_ID`, `MaxLV`, `Skill_ID_Require1`, `Skill_LV_Require1`, `Skill_ID_Require2`, `Skill_LV_Require2`, `Skill_ID_Require3`, `Skill_LV_Require3`, `Skill_ID_Require4`, `Skill_LV_Require4`, `Skill_ID_Require5`, `Skill_LV_Require5`, `Comment` from ragnarok.skill_tree; + +INSERT INTO eragnarok.item_db ( `id`, `name_english`, `name_japanese`, `type`, `price_buy`, `price_sell`, `weight`, `attack`, `defence`, `range`, `slots`, `equip_jobs`, `equip_genders`, `equip_locations`, `weapon_level`, `equip_level`, `view`, `script_use`, `script_equip` ) SELECT `id`, `Name`, `Name2`, `type`, `Price`, `Sell`, `Weight`, `Atk`, `Def`, `range`, `Slot`, `Job`, `Gender`, `Loc`, `wLV`, `eLV`, `view`, `UseScript`, `EquipScript` from ragnarok.item_db; + +UPDATE item_db SET price_sell = price_buy/2; + +INSERT INTO eragnarok.mob_db (`ID`, `Name`, `Name2`, `LV`, `HP`, `SP`, `EXP`, `JEXP`, `Range1`, `ATK1`, `ATK2`, `DEF`, `MDEF`, `STR`, `AGI`, `VIT`, `INT`, `DEX`, `LUK`, `Range2`, `Range3`, `Scale`, `Race`, `Element`, `Mode`, `Speed`, `ADelay`, `aMotion`, `dMotion`, `Drop1id`, `Drop1per`, `Drop2id`, `Drop2per`, `Drop3id`, `Drop3per`, `Drop4id`, `Drop4per`, `Drop5id`, `Drop5per`, `Drop6id`, `Drop6per`, `Drop7id`, `Drop7per`, `Drop8id`, `Drop8per`, `MEXP`, `ExpPer`, `MVP1id`, `MVP1per`, `MVP2id`, `MVP2per`, `MVP3id`, `MVP3per`) SELECT `ID`, `Name`, `Name2`, `LV`, `HP`, `SP`, `EXP`, `JEXP`, `Range1`, `ATK1`, `ATK2`, `DEF`, `MDEF`, `STR`, `AGI`, `VIT`, `INT`, `DEX`, `LUK`, `Range2`, `Range3`, `Scale`, `Race`, `Element`, `Mode`, `Speed`, `ADelay`, `aMotion`, `dMotion`, `Drop1id`, `Drop1per`, `Drop2id`, `Drop2per`, `Drop3id`, `Drop3per`, `Drop4id`, `Drop4per`, `Drop5id`, `Drop5per`, `Drop6id`, `Drop6per`, `Drop7id`, `Drop7per`, `Drop8id`, `Drop8per`, `MEXP`, `ExpPer`, `MVP1id`, `MVP1per`, `MVP2id`, `MVP2per`, `MVP3id`, `MVP3per` from ragnarok.mob_db; + +DELETE FROM eragnarok.login; + +INSERT INTO eragnarok.login ( `account_id`, `userid`, `user_pass`, `lastlogin`, `sex`, `logincount`, `email`, `level` ) SELECT `account_id`, `userid`, `user_pass`, `lastlogin`, `sex`, `logincount`, `email`, `level` from ragnarok.login ; diff --git a/sql-files/update_logs.sql b/sql-files/update_logs.sql index 4c89ebdcf..7b12c454e 100644 --- a/sql-files/update_logs.sql +++ b/sql-files/update_logs.sql @@ -1,13 +1,13 @@ -#ZenyLog types (M)onsters,(T)rade,(V)ending Sell/Buy,(S)hop Sell/Buy,(N)PC Change amount,(A)dministrators -#Database: log -#Table: zenylog -CREATE TABLE `zenylog` ( - `id` int(11) NOT NULL auto_increment, - `time` datetime NOT NULL default '0000-00-00 00:00:00', - `char_id` int(11) NOT NULL default '0', - `src_id` int(11) NOT NULL default '0', - `type` set('M','T','V','S','N','A') NOT NULL default 'S', - `amount` int(11) NOT NULL default '0', - `map` varchar(20) NOT NULL default 'prontera.gat', - PRIMARY KEY (`id`) -) TYPE=MyISAM AUTO_INCREMENT=1 ; +#ZenyLog types (M)onsters,(T)rade,(V)ending Sell/Buy,(S)hop Sell/Buy,(N)PC Change amount,(A)dministrators +#Database: log +#Table: zenylog +CREATE TABLE `zenylog` ( + `id` int(11) NOT NULL auto_increment, + `time` datetime NOT NULL default '0000-00-00 00:00:00', + `char_id` int(11) NOT NULL default '0', + `src_id` int(11) NOT NULL default '0', + `type` set('M','T','V','S','N','A') NOT NULL default 'S', + `amount` int(11) NOT NULL default '0', + `map` varchar(20) NOT NULL default 'prontera.gat', + PRIMARY KEY (`id`) +) TYPE=MyISAM AUTO_INCREMENT=1 ; diff --git a/sql-files/upgrade_0.5.2_database.sql b/sql-files/upgrade_0.5.2_database.sql index 266207104..4d328acf6 100644 --- a/sql-files/upgrade_0.5.2_database.sql +++ b/sql-files/upgrade_0.5.2_database.sql @@ -1 +1 @@ -# Upgrade database tables for eAthena 0.5.2 to 1.0 RC 2 +# Upgrade database tables for eAthena 0.5.2 to 1.0 RC 2 diff --git a/sql-files/upgrade_0.5.2_main.sql b/sql-files/upgrade_0.5.2_main.sql index 76e092c4f..e11d226ba 100644 --- a/sql-files/upgrade_0.5.2_main.sql +++ b/sql-files/upgrade_0.5.2_main.sql @@ -1,62 +1,62 @@ -# Upgrade login and character server tables for eAthena 0.5.2 to 1.0 RC 2 - -ALTER TABLE `cart_inventory` ADD `broken` int(11) NOT NULL default '0'; - -ALTER TABLE `char` MODIFY `base_level` bigint(20) unsigned NOT NULL default '1'; -ALTER TABLE `char` MODIFY `job_level` bigint(20) unsigned NOT NULL default '1'; -ALTER TABLE `char` MODIFY `base_exp` bigint(20) NOT NULL default '0'; -ALTER TABLE `char` MODIFY `job_exp` bigint(20) NOT NULL default '0'; -ALTER TABLE `char` ADD `partner_id` int(11) NOT NULL default '0'; - -ALTER TABLE `charlog` MODIFY `str` int(11) unsigned NOT NULL default '0'; -ALTER TABLE `charlog` MODIFY `agi` int(11) unsigned NOT NULL default '0'; -ALTER TABLE `charlog` MODIFY `vit` int(11) unsigned NOT NULL default '0'; -ALTER TABLE `charlog` MODIFY `int` int(11) unsigned NOT NULL default '0'; -ALTER TABLE `charlog` MODIFY `dex` int(11) unsigned NOT NULL default '0'; -ALTER TABLE `charlog` MODIFY `luk` int(11) unsigned NOT NULL default '0'; - -ALTER TABLE `global_reg_value` MODIFY `value` varchar(255) NOT NULL default '0'; -ALTER TABLE `global_reg_value` ADD PRIMARY KEY (`char_id`, `str`, `account_id`); -ALTER TABLE `global_reg_value` DROP INDEX `account_id`; -ALTER TABLE `global_reg_value` ADD INDEX `account_id` (`account_id`); - -ALTER TABLE `guild_castle` ADD `gHP0` int(11) NOT NULL default '0'; -ALTER TABLE `guild_castle` ADD `gHP1` int(11) NOT NULL default '0'; -ALTER TABLE `guild_castle` ADD `gHP2` int(11) NOT NULL default '0'; -ALTER TABLE `guild_castle` ADD `gHP3` int(11) NOT NULL default '0'; -ALTER TABLE `guild_castle` ADD `gHP4` int(11) NOT NULL default '0'; -ALTER TABLE `guild_castle` ADD `gHP5` int(11) NOT NULL default '0'; -ALTER TABLE `guild_castle` ADD `gHP6` int(11) NOT NULL default '0'; -ALTER TABLE `guild_castle` ADD `gHP7` int(11) NOT NULL default '0'; - -ALTER TABLE `guild_member` MODIFY `exp` bigint(20) NOT NULL default '0'; - -ALTER TABLE `guild_storage` ADD `broken` int(11) NOT NULL default '0'; - -ALTER TABLE `inventory` ADD `broken` int(11) NOT NULL default '0'; - -ALTER TABLE `login` MODIFY `account_id` int(11) NOT NULL default '0' AUTO_INCREMENT, AUTO_INCREMENT=1000057; -ALTER TABLE `login` MODIFY `userid` varchar(255) NOT NULL default ''; -ALTER TABLE `login` MODIFY `user_pass` varchar(32) NOT NULL default ''; -ALTER TABLE `login` ADD `error_message` int(11) NOT NULL default '0'; -ALTER TABLE `login` ADD `connect_until` int(11) NOT NULL default '0'; -ALTER TABLE `login` ADD `last_ip` varchar(100) NOT NULL default ''; -ALTER TABLE `login` ADD `memo` int(11) NOT NULL default '0'; -ALTER TABLE `login` ADD `ban_until` int(11) NOT NULL default '0'; -ALTER TABLE `login` ADD `state` int(11) NOT NULL default '0'; -ALTER TABLE `login` DROP INDEX `account_id`; -ALTER TABLE `login` DROP INDEX `userid`; -ALTER TABLE `login` ADD PRIMARY KEY (`account_id`), ADD INDEX `name` (`userid`); - -CREATE TABLE `login_error` ( - `err_id` int(11) NOT NULL default '0', - `reason` varchar(100) NOT NULL default 'Unknown', - PRIMARY KEY (`err_id`) -) TYPE=MyISAM; - -ALTER TABLE `ragsrvinfo` DROP `type`, DROP `text1`, DROP `text2`, DROP `text3`, DROP `text4`; -ALTER TABLE `ragsrvinfo` ADD `motd` varchar(255) NOT NULL default ''; - -ALTER TABLE `skill` ADD PRIMARY KEY (`char_id`,`id`); - -ALTER TABLE `storage` ADD `broken` int(11) NOT NULL default '0'; +# Upgrade login and character server tables for eAthena 0.5.2 to 1.0 RC 2 + +ALTER TABLE `cart_inventory` ADD `broken` int(11) NOT NULL default '0'; + +ALTER TABLE `char` MODIFY `base_level` bigint(20) unsigned NOT NULL default '1'; +ALTER TABLE `char` MODIFY `job_level` bigint(20) unsigned NOT NULL default '1'; +ALTER TABLE `char` MODIFY `base_exp` bigint(20) NOT NULL default '0'; +ALTER TABLE `char` MODIFY `job_exp` bigint(20) NOT NULL default '0'; +ALTER TABLE `char` ADD `partner_id` int(11) NOT NULL default '0'; + +ALTER TABLE `charlog` MODIFY `str` int(11) unsigned NOT NULL default '0'; +ALTER TABLE `charlog` MODIFY `agi` int(11) unsigned NOT NULL default '0'; +ALTER TABLE `charlog` MODIFY `vit` int(11) unsigned NOT NULL default '0'; +ALTER TABLE `charlog` MODIFY `int` int(11) unsigned NOT NULL default '0'; +ALTER TABLE `charlog` MODIFY `dex` int(11) unsigned NOT NULL default '0'; +ALTER TABLE `charlog` MODIFY `luk` int(11) unsigned NOT NULL default '0'; + +ALTER TABLE `global_reg_value` MODIFY `value` varchar(255) NOT NULL default '0'; +ALTER TABLE `global_reg_value` ADD PRIMARY KEY (`char_id`, `str`, `account_id`); +ALTER TABLE `global_reg_value` DROP INDEX `account_id`; +ALTER TABLE `global_reg_value` ADD INDEX `account_id` (`account_id`); + +ALTER TABLE `guild_castle` ADD `gHP0` int(11) NOT NULL default '0'; +ALTER TABLE `guild_castle` ADD `gHP1` int(11) NOT NULL default '0'; +ALTER TABLE `guild_castle` ADD `gHP2` int(11) NOT NULL default '0'; +ALTER TABLE `guild_castle` ADD `gHP3` int(11) NOT NULL default '0'; +ALTER TABLE `guild_castle` ADD `gHP4` int(11) NOT NULL default '0'; +ALTER TABLE `guild_castle` ADD `gHP5` int(11) NOT NULL default '0'; +ALTER TABLE `guild_castle` ADD `gHP6` int(11) NOT NULL default '0'; +ALTER TABLE `guild_castle` ADD `gHP7` int(11) NOT NULL default '0'; + +ALTER TABLE `guild_member` MODIFY `exp` bigint(20) NOT NULL default '0'; + +ALTER TABLE `guild_storage` ADD `broken` int(11) NOT NULL default '0'; + +ALTER TABLE `inventory` ADD `broken` int(11) NOT NULL default '0'; + +ALTER TABLE `login` MODIFY `account_id` int(11) NOT NULL default '0' AUTO_INCREMENT, AUTO_INCREMENT=1000057; +ALTER TABLE `login` MODIFY `userid` varchar(255) NOT NULL default ''; +ALTER TABLE `login` MODIFY `user_pass` varchar(32) NOT NULL default ''; +ALTER TABLE `login` ADD `error_message` int(11) NOT NULL default '0'; +ALTER TABLE `login` ADD `connect_until` int(11) NOT NULL default '0'; +ALTER TABLE `login` ADD `last_ip` varchar(100) NOT NULL default ''; +ALTER TABLE `login` ADD `memo` int(11) NOT NULL default '0'; +ALTER TABLE `login` ADD `ban_until` int(11) NOT NULL default '0'; +ALTER TABLE `login` ADD `state` int(11) NOT NULL default '0'; +ALTER TABLE `login` DROP INDEX `account_id`; +ALTER TABLE `login` DROP INDEX `userid`; +ALTER TABLE `login` ADD PRIMARY KEY (`account_id`), ADD INDEX `name` (`userid`); + +CREATE TABLE `login_error` ( + `err_id` int(11) NOT NULL default '0', + `reason` varchar(100) NOT NULL default 'Unknown', + PRIMARY KEY (`err_id`) +) TYPE=MyISAM; + +ALTER TABLE `ragsrvinfo` DROP `type`, DROP `text1`, DROP `text2`, DROP `text3`, DROP `text4`; +ALTER TABLE `ragsrvinfo` ADD `motd` varchar(255) NOT NULL default ''; + +ALTER TABLE `skill` ADD PRIMARY KEY (`char_id`,`id`); + +ALTER TABLE `storage` ADD `broken` int(11) NOT NULL default '0'; diff --git a/sql-files/upgrade_1.0.0-rc1_main.sql b/sql-files/upgrade_1.0.0-rc1_main.sql index 4af7f6f5a..0ae05933f 100644 --- a/sql-files/upgrade_1.0.0-rc1_main.sql +++ b/sql-files/upgrade_1.0.0-rc1_main.sql @@ -1,3 +1,3 @@ -# Upgrade login and character server tables for eAthena 1.0 RC 1 to 1.0 RC 2 - -ALTER TABLE `login` MODIFY `account_id` INT(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=2000000; +# Upgrade login and character server tables for eAthena 1.0 RC 1 to 1.0 RC 2 + +ALTER TABLE `login` MODIFY `account_id` INT(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=2000000; diff --git a/sql-files/upgrade_1.0.0-rc2_database.sql b/sql-files/upgrade_1.0.0-rc2_database.sql index ad6019df7..e1b041c97 100644 --- a/sql-files/upgrade_1.0.0-rc2_database.sql +++ b/sql-files/upgrade_1.0.0-rc2_database.sql @@ -1,4 +1,4 @@ -# Upgrade database tables for eAthena 1.0 RC2 - -ALTER TABLE `item_db` MODIFY `name_english` varchar(28); -ALTER TABLE `item_db` MODIFY `name_japanese` varchar(28); +# Upgrade database tables for eAthena 1.0 RC2 + +ALTER TABLE `item_db` MODIFY `name_english` varchar(28); +ALTER TABLE `item_db` MODIFY `name_japanese` varchar(28); diff --git a/sql-files/upgrade_1.0.0-rc5_database.sql b/sql-files/upgrade_1.0.0-rc5_database.sql index b6f8ee6d8..8b60b7216 100644 --- a/sql-files/upgrade_1.0.0-rc5_database.sql +++ b/sql-files/upgrade_1.0.0-rc5_database.sql @@ -1,4 +1,4 @@ -# Upgrade database tables for eAthena 1.0 RC2 - -ALTER TABLE `item_db` MODIFY `name_english` varchar(24); -ALTER TABLE `item_db` MODIFY `name_japanese` varchar(24); +# Upgrade database tables for eAthena 1.0 RC2 + +ALTER TABLE `item_db` MODIFY `name_english` varchar(24); +ALTER TABLE `item_db` MODIFY `name_japanese` varchar(24); diff --git a/sql-files/upgrade_svn1759.sql b/sql-files/upgrade_svn1759.sql index b53bc39c7..281cef6c9 100644 --- a/sql-files/upgrade_svn1759.sql +++ b/sql-files/upgrade_svn1759.sql @@ -1,18 +1,18 @@ - -CREATE TABLE `chatlog` ( - `id` bigint(20) NOT NULL auto_increment, - `time` datetime NOT NULL default '0000-00-00 00:00:00', - `type` enum('W','P','G') NOT NULL default 'W', - `type_id` int(11) NOT NULL default '0', - `src_charid` int(11) NOT NULL default '0', - `src_accountid` int(11) NOT NULL default '0', - `src_map` varchar(17) NOT NULL default '', - `src_map_x` tinyint(4) NOT NULL default '0', - `src_map_y` tinyint(4) NOT NULL default '0', - `dst_charname` varchar(25) NOT NULL default '', - `message` varchar(150) NOT NULL default '', - PRIMARY KEY (`id`) -) ENGINE=MyISAM AUTO_INCREMENT=1 ; - - - + +CREATE TABLE `chatlog` ( + `id` bigint(20) NOT NULL auto_increment, + `time` datetime NOT NULL default '0000-00-00 00:00:00', + `type` enum('W','P','G') NOT NULL default 'W', + `type_id` int(11) NOT NULL default '0', + `src_charid` int(11) NOT NULL default '0', + `src_accountid` int(11) NOT NULL default '0', + `src_map` varchar(17) NOT NULL default '', + `src_map_x` tinyint(4) NOT NULL default '0', + `src_map_y` tinyint(4) NOT NULL default '0', + `dst_charname` varchar(25) NOT NULL default '', + `message` varchar(150) NOT NULL default '', + PRIMARY KEY (`id`) +) ENGINE=MyISAM AUTO_INCREMENT=1 ; + + + diff --git a/sql-files/upgrade_svn1863.sql b/sql-files/upgrade_svn1863.sql index 367dd44ea..f4b1b4910 100644 --- a/sql-files/upgrade_svn1863.sql +++ b/sql-files/upgrade_svn1863.sql @@ -1,7 +1,7 @@ -ALTER TABLE item_db ADD `refineable` tinyint(1) default NULL AFTER `equip_level`; -ALTER TABLE item_db2 ADD `refineable` tinyint(1) default NULL AFTER `equip_level`; -UPDATE item_db SET refineable=1 where type=4 or type=5; -UPDATE item_db2 SET refineable=1 where type=4 or type=5; -UPDATE item_db SET refineable = 0 where id = 1243 OR id = 1530 OR id = 2110 OR id = 2112 OR id = 2250 OR id = 2253 OR id = 2264 OR id = 2271 OR id = 2279 OR id = 2282 OR id = 2289 OR id = 2290 OR id = 2293 OR id = 2298 OR id = 2352 OR id = 2410 OR id = 2413 OR id = 2414 OR id = 2509 OR id = 2510 OR id = 5008 OR id = 5015 OR id = 5037 OR id = 5039 OR id = 5046 OR id = 5049 OR id = 5050 OR id = 5053 OR id = 5055 OR id = 5058 OR id = 5098; -UPDATE item_db SET refineable = 0 where equip_locations = 513 OR equip_locations = 512 OR equip_locations = 136 OR equip_locations = 1; -UPDATE item_db2 SET refineable = 0 where equip_locations = 513 OR equip_locations = 512 OR equip_locations = 136 OR equip_locations = 1; +ALTER TABLE item_db ADD `refineable` tinyint(1) default NULL AFTER `equip_level`; +ALTER TABLE item_db2 ADD `refineable` tinyint(1) default NULL AFTER `equip_level`; +UPDATE item_db SET refineable=1 where type=4 or type=5; +UPDATE item_db2 SET refineable=1 where type=4 or type=5; +UPDATE item_db SET refineable = 0 where id = 1243 OR id = 1530 OR id = 2110 OR id = 2112 OR id = 2250 OR id = 2253 OR id = 2264 OR id = 2271 OR id = 2279 OR id = 2282 OR id = 2289 OR id = 2290 OR id = 2293 OR id = 2298 OR id = 2352 OR id = 2410 OR id = 2413 OR id = 2414 OR id = 2509 OR id = 2510 OR id = 5008 OR id = 5015 OR id = 5037 OR id = 5039 OR id = 5046 OR id = 5049 OR id = 5050 OR id = 5053 OR id = 5055 OR id = 5058 OR id = 5098; +UPDATE item_db SET refineable = 0 where equip_locations = 513 OR equip_locations = 512 OR equip_locations = 136 OR equip_locations = 1; +UPDATE item_db2 SET refineable = 0 where equip_locations = 513 OR equip_locations = 512 OR equip_locations = 136 OR equip_locations = 1; diff --git a/sql-files/upgrade_svn2068.sql b/sql-files/upgrade_svn2068.sql index c0ce870aa..33de1848c 100644 --- a/sql-files/upgrade_svn2068.sql +++ b/sql-files/upgrade_svn2068.sql @@ -1,3 +1,3 @@ -update mob_db set aMotion="185" where id=1275; -update mob_db set aMotion="160" where id=1200; -update mob_db set aMotion="160" where id=1482; +update mob_db set aMotion="185" where id=1275; +update mob_db set aMotion="160" where id=1200; +update mob_db set aMotion="160" where id=1482; diff --git a/sql-files/upgrade_svn2252.sql b/sql-files/upgrade_svn2252.sql index 870a57144..c1d3884f1 100644 --- a/sql-files/upgrade_svn2252.sql +++ b/sql-files/upgrade_svn2252.sql @@ -1,14 +1,14 @@ -################################ -# NEW friend table # -# NOTE -> if you dont write a # -# converter, all your friends # -# will be deleted # -################################ - -DROP TABLE `friends`; - -CREATE TABLE `friends` ( - `char_id` int(11) NOT NULL default '0', - `friend_id` int(11) NOT NULL default '0' -) TYPE=MyISAM; - +################################ +# NEW friend table # +# NOTE -> if you dont write a # +# converter, all your friends # +# will be deleted # +################################ + +DROP TABLE `friends`; + +CREATE TABLE `friends` ( + `char_id` int(11) NOT NULL default '0', + `friend_id` int(11) NOT NULL default '0' +) TYPE=MyISAM; + diff --git a/sql-files/upgrade_svn2331.sql b/sql-files/upgrade_svn2331.sql index 99b38ad61..e45c42185 100644 --- a/sql-files/upgrade_svn2331.sql +++ b/sql-files/upgrade_svn2331.sql @@ -1,3 +1,3 @@ -ALTER TABLE guild_position -ADD CONSTRAINT `guild_position_ibfk_1` FOREIGN KEY (`guild_id`) -REFERENCES `guild` (`guild_id`) ON DELETE CASCADE +ALTER TABLE guild_position +ADD CONSTRAINT `guild_position_ibfk_1` FOREIGN KEY (`guild_id`) +REFERENCES `guild` (`guild_id`) ON DELETE CASCADE diff --git a/sql-files/upgrade_svn2574.sql b/sql-files/upgrade_svn2574.sql index 3804f0beb..35e444106 100644 --- a/sql-files/upgrade_svn2574.sql +++ b/sql-files/upgrade_svn2574.sql @@ -1,2 +1,2 @@ -ALTER TABLE friends ADD `friend_account` int(11) NOT NULL default 0 AFTER `char_id`; -UPDATE friends, `char` SET friends.friend_account=`char`.account_id where friends.friend_id=`char`.char_id; +ALTER TABLE friends ADD `friend_account` int(11) NOT NULL default 0 AFTER `char_id`; +UPDATE friends, `char` SET friends.friend_account=`char`.account_id where friends.friend_id=`char`.char_id; diff --git a/sql-files/upgrade_svn3273.sql b/sql-files/upgrade_svn3273.sql index 4bf99f48c..c9e88d761 100644 --- a/sql-files/upgrade_svn3273.sql +++ b/sql-files/upgrade_svn3273.sql @@ -1,12 +1,12 @@ -CREATE TABLE `sc_data` ( - `account_id` int(11) unsigned NOT NULL, - `char_id` int(11) unsigned NOT NULL, - `type` smallint(11) unsigned NOT NULL, - `tick` int(11) NOT NULL, - `val1` int(11) NOT NULL default '0', - `val2` int(11) NOT NULL default '0', - `val3` int(11) NOT NULL default '0', - `val4` int(11) NOT NULL default '0', - CONSTRAINT `scdata_ibfk_1` FOREIGN KEY (`account_id`) REFERENCES `login` (`account_id`) ON DELETE CASCADE, - CONSTRAINT `scdata_ibfk_2` FOREIGN KEY (`char_id`) REFERENCES `char` (`char_id`) ON DELETE CASCADE -) TYPE=InnoDB; +CREATE TABLE `sc_data` ( + `account_id` int(11) unsigned NOT NULL, + `char_id` int(11) unsigned NOT NULL, + `type` smallint(11) unsigned NOT NULL, + `tick` int(11) NOT NULL, + `val1` int(11) NOT NULL default '0', + `val2` int(11) NOT NULL default '0', + `val3` int(11) NOT NULL default '0', + `val4` int(11) NOT NULL default '0', + CONSTRAINT `scdata_ibfk_1` FOREIGN KEY (`account_id`) REFERENCES `login` (`account_id`) ON DELETE CASCADE, + CONSTRAINT `scdata_ibfk_2` FOREIGN KEY (`char_id`) REFERENCES `char` (`char_id`) ON DELETE CASCADE +) TYPE=InnoDB; diff --git a/sql-files/upgrade_svn3746.sql b/sql-files/upgrade_svn3746.sql index de5bcb558..893568358 100644 --- a/sql-files/upgrade_svn3746.sql +++ b/sql-files/upgrade_svn3746.sql @@ -1 +1 @@ -ALTER TABLE `char` MODIFY `manner` tinyint(11) NOT NULL default '0'; +ALTER TABLE `char` MODIFY `manner` tinyint(11) NOT NULL default '0'; diff --git a/sql-files/upgrade_svn4367.sql b/sql-files/upgrade_svn4367.sql index 1dd63d63f..d0b52f9f4 100644 --- a/sql-files/upgrade_svn4367.sql +++ b/sql-files/upgrade_svn4367.sql @@ -1,9 +1,9 @@ -DROP TABLE IF EXISTS `mapreg`; -CREATE TABLE `mapreg` ( - `varname` char(32) NOT NULL, - `index` int(11) unsigned NOT NULL default '0', - `value` char(255) NOT NULL -) TYPE=MyISAM; - -ALTER TABLE `mapreg` ADD INDEX ( `varname` ); -ALTER TABLE `mapreg` ADD INDEX ( `index` ); +DROP TABLE IF EXISTS `mapreg`; +CREATE TABLE `mapreg` ( + `varname` char(32) NOT NULL, + `index` int(11) unsigned NOT NULL default '0', + `value` char(255) NOT NULL +) TYPE=MyISAM; + +ALTER TABLE `mapreg` ADD INDEX ( `varname` ); +ALTER TABLE `mapreg` ADD INDEX ( `index` ); diff --git a/sql-files/upgrade_svn4941.sql b/sql-files/upgrade_svn4941.sql index 29c4bf404..93037ef0c 100644 --- a/sql-files/upgrade_svn4941.sql +++ b/sql-files/upgrade_svn4941.sql @@ -1,6 +1,6 @@ -ALTER TABLE `char` MODIFY `last_map` varchar(20) NOT NULL default 'prontera.gat'; -ALTER TABLE `char` MODIFY `last_x` smallint(11) unsigned NOT NULL default '53'; -ALTER TABLE `char` MODIFY `last_y` smallint(11) unsigned NOT NULL default '111'; -ALTER TABLE `char` MODIFY `save_map` varchar(20) NOT NULL default 'prontera.gat'; -ALTER TABLE `char` MODIFY `save_x` smallint(11) unsigned NOT NULL default '53'; +ALTER TABLE `char` MODIFY `last_map` varchar(20) NOT NULL default 'prontera.gat'; +ALTER TABLE `char` MODIFY `last_x` smallint(11) unsigned NOT NULL default '53'; +ALTER TABLE `char` MODIFY `last_y` smallint(11) unsigned NOT NULL default '111'; +ALTER TABLE `char` MODIFY `save_map` varchar(20) NOT NULL default 'prontera.gat'; +ALTER TABLE `char` MODIFY `save_x` smallint(11) unsigned NOT NULL default '53'; ALTER TABLE `char` MODIFY `save_y` smallint(11) unsigned NOT NULL default '111'; \ No newline at end of file diff --git a/sql-files/upgrade_svn5311.sql b/sql-files/upgrade_svn5311.sql index e7b4db9a4..38bbbea3a 100644 --- a/sql-files/upgrade_svn5311.sql +++ b/sql-files/upgrade_svn5311.sql @@ -1 +1 @@ -ALTER TABLE `party` MODIFY `party_id` int(11) unsigned NOT NULL auto_increment; +ALTER TABLE `party` MODIFY `party_id` int(11) unsigned NOT NULL auto_increment; diff --git a/sql-files/upgrade_svn5322.sql b/sql-files/upgrade_svn5322.sql index 6b801a1b3..a06d90326 100644 --- a/sql-files/upgrade_svn5322.sql +++ b/sql-files/upgrade_svn5322.sql @@ -1 +1 @@ -ALTER TABLE `guild` MODIFY `guild_id` int(11) unsigned NOT NULL auto_increment; +ALTER TABLE `guild` MODIFY `guild_id` int(11) unsigned NOT NULL auto_increment; diff --git a/sql-files/upgrade_svn5455.sql b/sql-files/upgrade_svn5455.sql index 8d324230c..6c79a5159 100644 --- a/sql-files/upgrade_svn5455.sql +++ b/sql-files/upgrade_svn5455.sql @@ -1,2 +1,2 @@ -ALTER TABLE `char` MODIFY `karma` tinyint(3) NOT NULL default '0'; -ALTER TABLE `char` MODIFY `manner` tinyint(3) NOT NULL default '0'; +ALTER TABLE `char` MODIFY `karma` tinyint(3) NOT NULL default '0'; +ALTER TABLE `char` MODIFY `manner` tinyint(3) NOT NULL default '0'; diff --git a/sql-files/upgrade_svn5607.sql b/sql-files/upgrade_svn5607.sql index 7c3f88527..51dae2c75 100644 --- a/sql-files/upgrade_svn5607.sql +++ b/sql-files/upgrade_svn5607.sql @@ -1 +1 @@ -ALTER TABLE `guild` MODIFY `average_lv` smallint(6) unsigned NOT NULL default '1'; +ALTER TABLE `guild` MODIFY `average_lv` smallint(6) unsigned NOT NULL default '1'; diff --git a/sql-files/upgrade_svn5834.sql b/sql-files/upgrade_svn5834.sql index 2966b820e..467bc24bb 100644 --- a/sql-files/upgrade_svn5834.sql +++ b/sql-files/upgrade_svn5834.sql @@ -1 +1 @@ -UPDATE `item_db` SET `view`=1 where `type` = 10; +UPDATE `item_db` SET `view`=1 where `type` = 10; diff --git a/sql-files/upgrade_svn5902.sql b/sql-files/upgrade_svn5902.sql index 174f512c5..382f92eb6 100644 --- a/sql-files/upgrade_svn5902.sql +++ b/sql-files/upgrade_svn5902.sql @@ -1,14 +1,14 @@ -update `char` set `class`='7' where `class`='13'; -update `char` set `class`='14' where `class`='21'; -update `char` set `class`='4008' where `class`='4014'; -update `char` set `class`='4015' where `class`='4022'; -update `char` set `class`='4030' where `class`='4036'; -update `char` set `class`='4037' where `class`='4044'; -update `char` set `class`='4047' where `class`='4048'; -update `guild_member` set `class`='7' where `class`='13'; -update `guild_member` set `class`='14' where `class`='21'; -update `guild_member` set `class`='4008' where `class`='4014'; -update `guild_member` set `class`='4015' where `class`='4022'; -update `guild_member` set `class`='4030' where `class`='4036'; -update `guild_member` set `class`='4037' where `class`='4044'; -update `guild_member` set `class`='4047' where `class`='4048'; +update `char` set `class`='7' where `class`='13'; +update `char` set `class`='14' where `class`='21'; +update `char` set `class`='4008' where `class`='4014'; +update `char` set `class`='4015' where `class`='4022'; +update `char` set `class`='4030' where `class`='4036'; +update `char` set `class`='4037' where `class`='4044'; +update `char` set `class`='4047' where `class`='4048'; +update `guild_member` set `class`='7' where `class`='13'; +update `guild_member` set `class`='14' where `class`='21'; +update `guild_member` set `class`='4008' where `class`='4014'; +update `guild_member` set `class`='4015' where `class`='4022'; +update `guild_member` set `class`='4030' where `class`='4036'; +update `guild_member` set `class`='4037' where `class`='4044'; +update `guild_member` set `class`='4047' where `class`='4048'; diff --git a/sql-files/upgrade_svn6533.sql b/sql-files/upgrade_svn6533.sql index 60550dbe6..28ca04c50 100644 --- a/sql-files/upgrade_svn6533.sql +++ b/sql-files/upgrade_svn6533.sql @@ -1,2 +1,2 @@ -ALTER TABLE `loginlog` CHANGE `ip` `ip` CHAR( 15 ) NOT NULL; -ALTER TABLE `loginlog` ADD INDEX ( `ip` ( 15 ) ); +ALTER TABLE `loginlog` CHANGE `ip` `ip` CHAR( 15 ) NOT NULL; +ALTER TABLE `loginlog` ADD INDEX ( `ip` ( 15 ) ); diff --git a/sql-files/upgrade_svn6868.sql b/sql-files/upgrade_svn6868.sql index 000237297..47f89b1a3 100644 --- a/sql-files/upgrade_svn6868.sql +++ b/sql-files/upgrade_svn6868.sql @@ -1,2 +1,2 @@ -UPDATE `loginlog` SET `ip` = inet_aton(`ip`); +UPDATE `loginlog` SET `ip` = inet_aton(`ip`); ALTER TABLE `loginlog` CHANGE `ip` `ip` INT( 10 ) UNSIGNED ZEROFILL NOT NULL DEFAULT '0'; \ No newline at end of file diff --git a/sql-files/upgrade_svn7146.sql b/sql-files/upgrade_svn7146.sql index d639229dc..f608ab273 100644 --- a/sql-files/upgrade_svn7146.sql +++ b/sql-files/upgrade_svn7146.sql @@ -1 +1 @@ -ALTER TABLE `char` ADD INDEX ( `account_id` ); +ALTER TABLE `char` ADD INDEX ( `account_id` ); diff --git a/sql-files/upgrade_svn7580.sql b/sql-files/upgrade_svn7580.sql index 0df8894d0..e383d2f0e 100644 --- a/sql-files/upgrade_svn7580.sql +++ b/sql-files/upgrade_svn7580.sql @@ -1,2 +1,2 @@ -ALTER TABLE `char` MODIFY `party_id` int(11) unsigned NOT NULL default '0'; -ALTER TABLE `char` MODIFY `guild_id` int(11) unsigned NOT NULL default '0'; +ALTER TABLE `char` MODIFY `party_id` int(11) unsigned NOT NULL default '0'; +ALTER TABLE `char` MODIFY `guild_id` int(11) unsigned NOT NULL default '0'; diff --git a/sql-files/upgrade_svn7706.sql b/sql-files/upgrade_svn7706.sql index afd91d220..0e847ad27 100644 --- a/sql-files/upgrade_svn7706.sql +++ b/sql-files/upgrade_svn7706.sql @@ -1,36 +1,36 @@ -ALTER TABLE `char` ADD `homun_id` int(11) unsigned NOT NULL default '0' AFTER `pet_id`; - -DROP TABLE IF EXISTS `homunculus`; -CREATE TABLE `homunculus` ( - `homun_id` int(11) NOT NULL auto_increment, - `char_id` int(11) NOT NULL, - `class` mediumint(9) unsigned NOT NULL default '0', - `name` varchar(24) NOT NULL default '', - `level` smallint(4) NOT NULL default '0', - `exp` int(12) NOT NULL default '0', - `intimacy` int(12) NOT NULL default '0', - `hunger` smallint(4) NOT NULL default '0', - `str` smallint(4) unsigned NOT NULL default '0', - `agi` smallint(4) unsigned NOT NULL default '0', - `vit` smallint(4) unsigned NOT NULL default '0', - `int` smallint(4) unsigned NOT NULL default '0', - `dex` smallint(4) unsigned NOT NULL default '0', - `luk` smallint(4) unsigned NOT NULL default '0', - `hp` int(12) NOT NULL default '1', - `max_hp` int(12) NOT NULL default '1', - `sp` int(12) NOT NULL default '1', - `max_sp` int(12) NOT NULL default '1', - `skill_point` smallint(4) unsigned NOT NULL default '0', - `alive` tinyint(2) NOT NULL default '1', - `rename_flag` tinyint(2) NOT NULL default '0', - `vaporize` tinyint(2) NOT NULL default '0', - PRIMARY KEY (`homun_id`) -) ENGINE=InnoDB DEFAULT CHARSET=latin1; - - -CREATE TABLE `skill_homunculus` ( - `homun_id` int(11) NOT NULL, - `id` int(11) NOT NULL, - `lv` smallint(6) NOT NULL, - PRIMARY KEY (`homun_id`) -) ENGINE=InnoDB DEFAULT CHARSET=latin1; +ALTER TABLE `char` ADD `homun_id` int(11) unsigned NOT NULL default '0' AFTER `pet_id`; + +DROP TABLE IF EXISTS `homunculus`; +CREATE TABLE `homunculus` ( + `homun_id` int(11) NOT NULL auto_increment, + `char_id` int(11) NOT NULL, + `class` mediumint(9) unsigned NOT NULL default '0', + `name` varchar(24) NOT NULL default '', + `level` smallint(4) NOT NULL default '0', + `exp` int(12) NOT NULL default '0', + `intimacy` int(12) NOT NULL default '0', + `hunger` smallint(4) NOT NULL default '0', + `str` smallint(4) unsigned NOT NULL default '0', + `agi` smallint(4) unsigned NOT NULL default '0', + `vit` smallint(4) unsigned NOT NULL default '0', + `int` smallint(4) unsigned NOT NULL default '0', + `dex` smallint(4) unsigned NOT NULL default '0', + `luk` smallint(4) unsigned NOT NULL default '0', + `hp` int(12) NOT NULL default '1', + `max_hp` int(12) NOT NULL default '1', + `sp` int(12) NOT NULL default '1', + `max_sp` int(12) NOT NULL default '1', + `skill_point` smallint(4) unsigned NOT NULL default '0', + `alive` tinyint(2) NOT NULL default '1', + `rename_flag` tinyint(2) NOT NULL default '0', + `vaporize` tinyint(2) NOT NULL default '0', + PRIMARY KEY (`homun_id`) +) ENGINE=InnoDB DEFAULT CHARSET=latin1; + + +CREATE TABLE `skill_homunculus` ( + `homun_id` int(11) NOT NULL, + `id` int(11) NOT NULL, + `lv` smallint(6) NOT NULL, + PRIMARY KEY (`homun_id`) +) ENGINE=InnoDB DEFAULT CHARSET=latin1; diff --git a/sql-files/upgrade_svn7768.sql b/sql-files/upgrade_svn7768.sql index 69f6f1333..c04d03973 100644 --- a/sql-files/upgrade_svn7768.sql +++ b/sql-files/upgrade_svn7768.sql @@ -1,8 +1,8 @@ -DROP TABLE IF EXISTS `skill_homunculus`; -CREATE TABLE `skill_homunculus` ( - `homun_id` int(11) NOT NULL, - `id` int(11) NOT NULL, - `lv` smallint(6) NOT NULL, - PRIMARY KEY (`homun_id`,`id`), - KEY `homun_id` (`homun_id`) +DROP TABLE IF EXISTS `skill_homunculus`; +CREATE TABLE `skill_homunculus` ( + `homun_id` int(11) NOT NULL, + `id` int(11) NOT NULL, + `lv` smallint(6) NOT NULL, + PRIMARY KEY (`homun_id`,`id`), + KEY `homun_id` (`homun_id`) ) TYPE=MyISAM; \ No newline at end of file diff --git a/sql-files/upgrade_svn8630.sql b/sql-files/upgrade_svn8630.sql index a94dbf116..33e218eb2 100644 --- a/sql-files/upgrade_svn8630.sql +++ b/sql-files/upgrade_svn8630.sql @@ -1 +1 @@ -ALTER TABLE `login` MODIFY `connect_until` int(11) unsigned NOT NULL default '0'; +ALTER TABLE `login` MODIFY `connect_until` int(11) unsigned NOT NULL default '0'; diff --git a/sql-files/upgrade_svn8675.sql b/sql-files/upgrade_svn8675.sql index 5f6d15299..1499a748b 100644 --- a/sql-files/upgrade_svn8675.sql +++ b/sql-files/upgrade_svn8675.sql @@ -1 +1 @@ -ALTER TABLE `guild` MODIFY `emblem_data` blob; +ALTER TABLE `guild` MODIFY `emblem_data` blob; diff --git a/sql-files/upgrade_svn8728.sql b/sql-files/upgrade_svn8728.sql index 71558893f..5a45f87c4 100644 --- a/sql-files/upgrade_svn8728.sql +++ b/sql-files/upgrade_svn8728.sql @@ -1,4 +1,4 @@ -ALTER TABLE `friends` ADD INDEX ( `char_id` ); -ALTER TABLE `memo` ADD INDEX ( `char_id` ); -ALTER TABLE `char` ADD INDEX ( `name` ); -ALTER TABLE `char` ADD INDEX ( `online` ); +ALTER TABLE `friends` ADD INDEX ( `char_id` ); +ALTER TABLE `memo` ADD INDEX ( `char_id` ); +ALTER TABLE `char` ADD INDEX ( `name` ); +ALTER TABLE `char` ADD INDEX ( `online` ); diff --git a/sql-files/upgrade_svn9050.sql b/sql-files/upgrade_svn9050.sql index 932bc3b38..2e0c72489 100644 --- a/sql-files/upgrade_svn9050.sql +++ b/sql-files/upgrade_svn9050.sql @@ -1,6 +1,6 @@ -ALTER TABLE `picklog` ADD INDEX (`type`); -ALTER TABLE `zenylog` ADD INDEX (`type`); -ALTER TABLE `branchlog` ADD INDEX (`account_id`), ADD INDEX (`char_id`); -ALTER TABLE `atcommandlog` ADD INDEX (`account_id`), ADD INDEX (`char_id`); -ALTER TABLE `npclog` ADD INDEX (`account_id`), ADD INDEX (`char_id`); -ALTER TABLE `chatlog` ADD INDEX (`src_accountid`), ADD INDEX (`src_charid`); +ALTER TABLE `picklog` ADD INDEX (`type`); +ALTER TABLE `zenylog` ADD INDEX (`type`); +ALTER TABLE `branchlog` ADD INDEX (`account_id`), ADD INDEX (`char_id`); +ALTER TABLE `atcommandlog` ADD INDEX (`account_id`), ADD INDEX (`char_id`); +ALTER TABLE `npclog` ADD INDEX (`account_id`), ADD INDEX (`char_id`); +ALTER TABLE `chatlog` ADD INDEX (`src_accountid`), ADD INDEX (`src_charid`); diff --git a/sql-files/upgrade_svn9135.sql b/sql-files/upgrade_svn9135.sql index 0647bc452..4b618a5ad 100644 --- a/sql-files/upgrade_svn9135.sql +++ b/sql-files/upgrade_svn9135.sql @@ -1,2 +1,2 @@ -alter table `item_db` modify `view` smallint(3) unsigned default null; +alter table `item_db` modify `view` smallint(3) unsigned default null; alter table `item_db2` modify `view` smallint(3) unsigned default null; \ No newline at end of file diff --git a/src/map/script.c b/src/map/script.c index 09f84afbd..3b51a18b6 100644 --- a/src/map/script.c +++ b/src/map/script.c @@ -9058,6 +9058,7 @@ static int buildin_maprespawnguildid_sub_mob(struct block_list *bl,va_list ap) if(!md->guardian_data && md->class_ != MOBID_EMPERIUM) status_kill(bl); + return 0; } diff --git a/src/tool/grfio.c b/src/tool/grfio.c index ad6a466ba..2fa48a2a1 100644 --- a/src/tool/grfio.c +++ b/src/tool/grfio.c @@ -1,982 +1,982 @@ -// Copyright (c) Athena Dev Teams - Licensed under GNU GPL -// For more information, see LICENCE in the main folder - -/********************************************************************* - * - * Ragnarok Online Emulator : grfio.c -- grf file I/O Module - *-------------------------------------------------------------------- - * special need library : zlib - ********************************************************************* - * $Id: grfio.c,v 1.2 2004/09/29 17:31:49 kalaspuff Exp $ - * - * 2002/12/18... the original edition - * 2003/01/23 ... Code correction - * 2003/02/01 ... An addition and decryption processing are improved for LocalFile and two or more GRF(s) check processing. - * 2003/02/02 ... Even if there is no grf it does not stop -- as -- correction - * 2003/02/02... grf reading specification can be added later -- as -- correction (grfio_add function addition) - * 2003/02 / 03... at the time of grfio_resourcecheck processing the entry addition processing method -- correction - * 2003/02/05... change of the processing in grfio_init - * 2003/02/23... a local file check -- GRFIO_LOCAL -- switch (Defoe -- Function Off) - * 2003/10/21 ... The data of alpha client was read. - * 2003/11/10 ... Ready new grf format. - * 2003/11/11 ... version check fix & bug fix - * 2006/04/16 ... fixed crash grfio_find_file when file is not found. - */ - -#include -#include -#include -#include -#include -#include - -#include "grfio.h" -#include "../common/mmo.h" -#include "../zlib/unzip.h" - -#define CHUNK 16384 - -#ifdef __WIN32 - #include "../zlib/zlib.h" - #include "../zlib/iowin32.h" -#else - #ifndef __FREEBSD__ - #include - #endif -#endif - -typedef unsigned char BYTE; -typedef unsigned short WORD; -typedef unsigned long DWORD; - -static char data_dir[1024] = ""; // "../"; - -//---------------------------- -// file entry table struct -//---------------------------- -typedef struct { - int srclen; // compressed size - int srclen_aligned; // - int declen; // original size - int srcpos; - short next; - int cycle; - char type; - char fn[128-4*5]; // file name - char *fnd; - signed char gentry; // read grf file select -} FILELIST; -//gentry ... 0 : It acquires from a local file. -// It acquires from the resource file of 1>=:gentry_table[gentry-1]. -// 1<=: Check a local file. -// If it is, after re-setting to 0, it acquires from a local file. -// If there is nothing, mark reversal will be carried out, and it will re-set, and will acquire from a resource file as well as 1>=. - -//Since char defines *FILELIST.gentry, the maximum which can be added by grfio_add becomes by 127 pieces. - -#define GENTRY_LIMIT 512 -#define FILELIST_LIMIT 1048576 // temporary maximum, and a theory top maximum are 2G. - -static FILELIST *filelist = NULL; -static int filelist_entrys = 0; -static int filelist_maxentry = 0; - -static char **gentry_table = NULL; -static int gentry_entrys = 0; -static int gentry_maxentry = 0; - -//---------------------------- -// file list hash table -//---------------------------- -static int filelist_hash[256]; - -//---------------------------- -// grf decode data table -//---------------------------- -static unsigned char BitMaskTable[8] = { - 0x80, 0x40, 0x20, 0x10, 0x08, 0x04, 0x02, 0x01 -}; - -static char BitSwapTable1[64] = { - 58, 50, 42, 34, 26, 18, 10, 2, 60, 52, 44, 36, 28, 20, 12, 4, - 62, 54, 46, 38, 30, 22, 14, 6, 64, 56, 48, 40, 32, 24, 16, 8, - 57, 49, 41, 33, 25, 17, 9, 1, 59, 51, 43, 35, 27, 19, 11, 3, - 61, 53, 45, 37, 29, 21, 13, 5, 63, 55, 47, 39, 31, 23, 15, 7 -}; -static char BitSwapTable2[64] = { - 40, 8, 48, 16, 56, 24, 64, 32, 39, 7, 47, 15, 55, 23, 63, 31, - 38, 6, 46, 14, 54, 22, 62, 30, 37, 5, 45, 13, 53, 21, 61, 29, - 36, 4, 44, 12, 52, 20, 60, 28, 35, 3, 43, 11, 51, 19, 59, 27, - 34, 2, 42, 10, 50, 18, 58, 26, 33, 1, 41, 9, 49, 17, 57, 25 -}; -static char BitSwapTable3[32] = { - 16, 7, 20, 21, 29, 12, 28, 17, 1, 15, 23, 26, 5, 18, 31, 10, - 2, 8, 24, 14, 32, 27, 3, 9, 19, 13, 30, 6, 22, 11, 4, 25 -}; - -static unsigned char NibbleData[4][64]={ - { - 0xef, 0x03, 0x41, 0xfd, 0xd8, 0x74, 0x1e, 0x47, 0x26, 0xef, 0xfb, 0x22, 0xb3, 0xd8, 0x84, 0x1e, - 0x39, 0xac, 0xa7, 0x60, 0x62, 0xc1, 0xcd, 0xba, 0x5c, 0x96, 0x90, 0x59, 0x05, 0x3b, 0x7a, 0x85, - 0x40, 0xfd, 0x1e, 0xc8, 0xe7, 0x8a, 0x8b, 0x21, 0xda, 0x43, 0x64, 0x9f, 0x2d, 0x14, 0xb1, 0x72, - 0xf5, 0x5b, 0xc8, 0xb6, 0x9c, 0x37, 0x76, 0xec, 0x39, 0xa0, 0xa3, 0x05, 0x52, 0x6e, 0x0f, 0xd9, - }, { - 0xa7, 0xdd, 0x0d, 0x78, 0x9e, 0x0b, 0xe3, 0x95, 0x60, 0x36, 0x36, 0x4f, 0xf9, 0x60, 0x5a, 0xa3, - 0x11, 0x24, 0xd2, 0x87, 0xc8, 0x52, 0x75, 0xec, 0xbb, 0xc1, 0x4c, 0xba, 0x24, 0xfe, 0x8f, 0x19, - 0xda, 0x13, 0x66, 0xaf, 0x49, 0xd0, 0x90, 0x06, 0x8c, 0x6a, 0xfb, 0x91, 0x37, 0x8d, 0x0d, 0x78, - 0xbf, 0x49, 0x11, 0xf4, 0x23, 0xe5, 0xce, 0x3b, 0x55, 0xbc, 0xa2, 0x57, 0xe8, 0x22, 0x74, 0xce, - }, { - 0x2c, 0xea, 0xc1, 0xbf, 0x4a, 0x24, 0x1f, 0xc2, 0x79, 0x47, 0xa2, 0x7c, 0xb6, 0xd9, 0x68, 0x15, - 0x80, 0x56, 0x5d, 0x01, 0x33, 0xfd, 0xf4, 0xae, 0xde, 0x30, 0x07, 0x9b, 0xe5, 0x83, 0x9b, 0x68, - 0x49, 0xb4, 0x2e, 0x83, 0x1f, 0xc2, 0xb5, 0x7c, 0xa2, 0x19, 0xd8, 0xe5, 0x7c, 0x2f, 0x83, 0xda, - 0xf7, 0x6b, 0x90, 0xfe, 0xc4, 0x01, 0x5a, 0x97, 0x61, 0xa6, 0x3d, 0x40, 0x0b, 0x58, 0xe6, 0x3d, - }, { - 0x4d, 0xd1, 0xb2, 0x0f, 0x28, 0xbd, 0xe4, 0x78, 0xf6, 0x4a, 0x0f, 0x93, 0x8b, 0x17, 0xd1, 0xa4, - 0x3a, 0xec, 0xc9, 0x35, 0x93, 0x56, 0x7e, 0xcb, 0x55, 0x20, 0xa0, 0xfe, 0x6c, 0x89, 0x17, 0x62, - 0x17, 0x62, 0x4b, 0xb1, 0xb4, 0xde, 0xd1, 0x87, 0xc9, 0x14, 0x3c, 0x4a, 0x7e, 0xa8, 0xe2, 0x7d, - 0xa0, 0x9f, 0xf6, 0x5c, 0x6a, 0x09, 0x8d, 0xf0, 0x0f, 0xe3, 0x53, 0x25, 0x95, 0x36, 0x28, 0xcb, - } -}; -/*----------------- - * long data get - */ -static unsigned int getlong(unsigned char *p) -{ - return p[0] - | p[1] << 0x08 - | p[2] << 0x10 - | p[3] << 0x18; // Shinomori -} - -/*========================================== - * Grf data decode : Subs - *------------------------------------------ - */ -static void NibbleSwap(BYTE *Src, int len) -{ - for(;0>4) | (*Src<<4); - } -} - -static void BitConvert(BYTE *Src,char *BitSwapTable) -{ - int lop,prm; - BYTE tmp[8]; - memset(tmp,0,8); - for(lop=0;lop!=64;lop++) { - prm = BitSwapTable[lop]-1; - if (Src[(prm >> 3) & 7] & BitMaskTable[prm & 7]) { - tmp[(lop >> 3) & 7] |= BitMaskTable[lop & 7]; - } - } - memcpy(Src,tmp,8); -} - -static void BitConvert4(BYTE *Src) -{ - int lop,prm; - BYTE tmp[8]; - tmp[0] = ((Src[7]<<5) | (Src[4]>>3)) & 0x3f; // ..0 vutsr - tmp[1] = ((Src[4]<<1) | (Src[5]>>7)) & 0x3f; // ..srqpo n - tmp[2] = ((Src[4]<<5) | (Src[5]>>3)) & 0x3f; // ..o nmlkj - tmp[3] = ((Src[5]<<1) | (Src[6]>>7)) & 0x3f; // ..kjihg f - tmp[4] = ((Src[5]<<5) | (Src[6]>>3)) & 0x3f; // ..g fedcb - tmp[5] = ((Src[6]<<1) | (Src[7]>>7)) & 0x3f; // ..cba98 7 - tmp[6] = ((Src[6]<<5) | (Src[7]>>3)) & 0x3f; // ..8 76543 - tmp[7] = ((Src[7]<<1) | (Src[4]>>7)) & 0x3f; // ..43210 v - - for(lop=0;lop!=4;lop++) { - tmp[lop] = (NibbleData[lop][tmp[lop*2]] & 0xf0) - | (NibbleData[lop][tmp[lop*2+1]] & 0x0f); - } - - *(DWORD*)(tmp+4)=0; - for(lop=0;lop!=32;lop++) { - prm = BitSwapTable3[lop]-1; - if (tmp[prm >> 3] & BitMaskTable[prm & 7]) { - tmp[(lop >> 3) + 4] |= BitMaskTable[lop & 7]; - } - } - Src[0] ^= tmp[4]; - Src[1] ^= tmp[5]; - Src[2] ^= tmp[6]; - Src[3] ^= tmp[7]; -} - -static void decode_des_etc(BYTE *buf,int len,int type,int cycle) -{ - int lop,cnt=0; - if(cycle<3) cycle=3; - else if(cycle<5) cycle++; - else if(cycle<7) cycle+=9; - else cycle+=15; - - for(lop=0;lop*8 64K on 16-bit machine: */ - if ((uLong)stream.avail_in != sourceLen) return Z_BUF_ERROR; - - stream.next_out = (Bytef*) dest; - stream.avail_out = (uInt)*destLen; - if ((uLong)stream.avail_out != *destLen) return Z_BUF_ERROR; - - stream.zalloc = (alloc_func)0; - stream.zfree = (free_func)0; - - err = inflateInit(&stream); - if (err != Z_OK) return err; - - err = inflate(&stream, Z_FINISH); - if (err != Z_STREAM_END) { - inflateEnd(&stream); - return err == Z_OK ? Z_BUF_ERROR : err; - } - *destLen = stream.total_out; - - err = inflateEnd(&stream); - return err; -} - -int encode_zip(unsigned char *dest, unsigned long* destLen, const unsigned char* source, unsigned long sourceLen) { - z_stream stream; - int err; - memset(&stream, 0, sizeof(stream)); - stream.next_in = (Bytef*)source; - stream.avail_in = (uInt)sourceLen; - /* Check for source > 64K on 16-bit machine: */ - if ((uLong)stream.avail_in != sourceLen) return Z_BUF_ERROR; - - stream.next_out = (Bytef*) dest; - stream.avail_out = (uInt)*destLen; - if ((uLong)stream.avail_out != *destLen) return Z_BUF_ERROR; - - stream.zalloc = (alloc_func)0; - stream.zfree = (free_func)0; - - err = deflateInit(&stream,Z_DEFAULT_COMPRESSION); - if (err != Z_OK) return err; - - err = deflate(&stream, Z_FINISH); - if (err != Z_STREAM_END) { - inflateEnd(&stream); - return err == Z_OK ? Z_BUF_ERROR : err; - } - *destLen = stream.total_out; - - err = deflateEnd(&stream); - return err; -} - -/* =================================== -* Unzips a file. 1: success, 0: error -* Adapted from miniunz.c [Celest] -* Version 1.01b, May 30th, 2004 -* Copyright (C) 1998-2004 Gilles Vollant -* ------------------------------------- -*/ -int deflate_file (const char *source, const char *filename) -{ -#ifdef _WIN32 - zlib_filefunc_def ffunc; -#endif - unzFile uf = NULL; - int err = UNZ_OK; - uInt size_buf = 8192; - FILE *fout = NULL; - void *buf; - -#ifdef _WIN32 - fill_win32_filefunc(&ffunc); - uf = unzOpen2(source, &ffunc); -#else - uf = unzOpen(source); -#endif - - if (uf == NULL) - return 0; - - if (unzLocateFile(uf, filename, 0) != UNZ_OK) - return 0; - - err = unzOpenCurrentFilePassword(uf, NULL); - - fout = fopen(filename,"wb"); - if (fout == NULL) - return 0; - - buf = (void *)malloc(size_buf); - do { - err = unzReadCurrentFile(uf, buf, size_buf); - if (err < 0) - break; - if (err > 0 && - fwrite(buf, err, 1, fout)!=1) - { - err = UNZ_ERRNO; - break; - } - } while (err > 0); - - if (fout) fclose(fout); - - if (err == UNZ_OK) { - err = unzCloseCurrentFile (uf); - free(buf); - return (err == UNZ_OK); - } - - unzCloseCurrentFile(uf); /* don't lose the error */ - - return 0; -} - -unsigned long grfio_crc32 (const unsigned char *buf, unsigned int len) -{ - return crc32(crc32(0L, Z_NULL, 0), buf, len); -} - -/*********************************************************** - *** File List Subroutines *** - ***********************************************************/ - -/*========================================== - * File List : Hash make - *------------------------------------------ - */ -static int filehash(unsigned char *fname) -{ - unsigned int hash=0; - while(*fname) { - hash = ((hash<<1)+(hash>>7)*9+tolower(*fname)); - fname++; - } - return hash & 255; -} - -/*========================================== - * File List : Hash initalize - *------------------------------------------ - */ -static void hashinit(void) -{ - int lop; - for (lop = 0; lop < 256; lop++) - filelist_hash[lop] = -1; -} - -/*========================================== - * File List : File find - *------------------------------------------ - */ -static FILELIST *filelist_find(char *fname) -{ - int hash; - - if (!filelist) - return NULL; - - for (hash = filelist_hash[filehash((unsigned char *) fname)]; hash >= 0; hash = filelist[hash].next) { - if(strcmpi(filelist[hash].fn, fname) == 0) - break; - } - - return (hash >= 0) ? &filelist[hash] : NULL; -} - -char *grfio_find_file(char *fname){ - FILELIST *filelist = filelist_find(fname); - if (!filelist) return NULL; - return (!filelist->fnd?filelist->fn:filelist->fnd); -} - -/*========================================== - * File List : Filelist add - *------------------------------------------ - */ -#define FILELIST_ADDS 1024 // number increment of file lists ` - -static FILELIST* filelist_add(FILELIST *entry) -{ - int hash; - - if (filelist_entrys >= FILELIST_LIMIT) { - printf("GRF filelist limit reached!\n"); - exit(1); - } - - if (filelist_entrys >= filelist_maxentry) { - filelist = (FILELIST *)realloc(filelist, (filelist_maxentry + FILELIST_ADDS) * sizeof(FILELIST)); - memset(filelist + filelist_maxentry, '\0', FILELIST_ADDS * sizeof(FILELIST)); - filelist_maxentry += FILELIST_ADDS; - } - - memcpy (&filelist[filelist_entrys], entry, sizeof(FILELIST)); - - hash = filehash((unsigned char *) entry->fn); - filelist[filelist_entrys].next = filelist_hash[hash]; - filelist_hash[hash] = filelist_entrys; - - filelist_entrys++; - - return &filelist[filelist_entrys - 1]; -} - -static FILELIST* filelist_modify(FILELIST *entry) -{ - FILELIST *fentry; - if ((fentry = filelist_find(entry->fn)) != NULL) { - int tmp = fentry->next; - memcpy(fentry, entry, sizeof(FILELIST)); - fentry->next = tmp; - } else { - fentry = filelist_add(entry); - } - return fentry; -} - -/*========================================== - * File List : filelist size adjust - *------------------------------------------ - */ -static void filelist_adjust(void) -{ - if (filelist != NULL) { - if (filelist_maxentry > filelist_entrys) { - filelist = (FILELIST *)realloc( - filelist, filelist_entrys * sizeof(FILELIST)); - filelist_maxentry = filelist_entrys; - } - } -} - -/*********************************************************** - *** Grfio Sobroutines *** - ***********************************************************/ - -/*========================================== - * Grfio : Resource file size get - *------------------------------------------ - */ -int grfio_size(char *fname) -{ - FILELIST *entry; - - entry = filelist_find(fname); - - if (entry == NULL || entry->gentry < 0) { // LocalFileCheck - char lfname[256], *p; - FILELIST lentry; - struct stat st; - - sprintf(lfname, "%s%s", data_dir, fname); - - for (p = &lfname[0]; *p != 0; p++) - if (*p=='\\') *p = '/'; // * At the time of Unix - - if (stat(lfname, &st) == 0) { - strncpy(lentry.fn, fname, sizeof(lentry.fn) - 1); - lentry.fnd = NULL; - lentry.declen = st.st_size; - lentry.gentry = 0; // 0:LocalFile - entry = filelist_modify(&lentry); - } else if (entry == NULL) { - printf("%s not found (grfio_size)\n", fname); - //exit(1); - return -1; - } - } - return entry->declen; -} - -/*========================================== - * Grfio : Resource file read & size get - *------------------------------------------ - */ -void* grfio_reads(char *fname, int *size) -{ - FILE *in; - FILELIST *entry; - unsigned char *buf2 = NULL; - - entry = filelist_find(fname); - - if (entry == NULL || entry->gentry <= 0) { // LocalFileCheck - char lfname[256], *p; - FILELIST lentry; - - sprintf(lfname, "%s%s", data_dir, fname); - - for (p = &lfname[0]; *p != 0; p++) - if (*p == '\\') *p = '/'; // * At the time of Unix - - in = fopen(lfname, "rb"); - if (in != NULL) { - if (entry != NULL && entry->gentry == 0) { - lentry.declen = entry->declen; - } else { - fseek(in,0,2); // SEEK_END - lentry.declen = ftell(in); - } - fseek(in,0,0); // SEEK_SET - buf2 = (unsigned char *)malloc(lentry.declen + 1024); - fread(buf2, 1, lentry.declen, in); - fclose(in); - strncpy(lentry.fn, fname, sizeof(lentry.fn) - 1); - lentry.fnd = NULL; - lentry.gentry = 0; // 0:LocalFile - entry = filelist_modify(&lentry); - } else { - if (entry != NULL && entry->gentry < 0) { - entry->gentry = -entry->gentry; // local file checked - } else { - printf("%s not found (grfio_reads - local file %s)\n", fname, lfname); - return NULL; - } - } - } - if (entry != NULL && entry->gentry > 0) { // Archive[GRF] File Read - char *gfname = gentry_table[entry->gentry - 1]; - in = fopen(gfname, "rb"); - if(in != NULL) { - unsigned char *buf = (unsigned char *)malloc(entry->srclen_aligned + 1024); - fseek(in, entry->srcpos, 0); - fread(buf, 1, entry->srclen_aligned, in); - fclose(in); - buf2 = (unsigned char *)malloc(entry->declen + 1024); - if (entry->type == 1 || entry->type == 3 || entry->type == 5) { - uLongf len; - if (entry->cycle >= 0) - decode_des_etc(buf, entry->srclen_aligned, entry->cycle == 0, entry->cycle); - len = entry->declen; - decode_zip(buf2, &len, buf, entry->srclen); - if (len != entry->declen) { - printf("decode_zip size mismatch err: %d != %d\n", (int)len, entry->declen); - free(buf); - free(buf2); - return NULL; - } - } else { - memcpy(buf2, buf, entry->declen); - } - free(buf); - } else { - printf("%s not found (grfio_reads - GRF file %s)\n", fname, gfname); - return NULL; - } - } - if (size != NULL && entry != NULL) - *size = entry->declen; - - return buf2; -} - -/*========================================== - * Resource filename decode - *------------------------------------------ - */ -static char * decode_filename(unsigned char *buf,int len) -{ - int lop; - for(lop=0;lop> 8; - - if (grf_version == 0x01) { //****** Grf version 01xx ****** - list_size = grf_size - ftell(fp); - grf_filelist = (unsigned char *) malloc(list_size); - fread(grf_filelist,1,list_size,fp); - fclose(fp); - - entrys = getlong(grf_header+0x26) - getlong(grf_header+0x22) - 7; - - // Get an entry - for (entry = 0,ofs = 0; entry < entrys; entry++) { - int ofs2, srclen, srccount, type; - char *period_ptr; - FILELIST aentry; - - ofs2 = ofs+getlong(grf_filelist+ofs)+4; - type = grf_filelist[ofs2+12]; - if (type != 0) { // Directory Index ... skip - fname = decode_filename(grf_filelist+ofs+6, grf_filelist[ofs]-6); - if (strlen(fname) > sizeof(aentry.fn) - 1) { - printf("GRF file name %s is too long\n", fname); - free(grf_filelist); - exit(1); - } - srclen = 0; - if ((period_ptr = strrchr(fname, '.')) != NULL) { - for(lop = 0; lop < 4; lop++) { - if (strcmpi(period_ptr, ".gnd\0.gat\0.act\0.str"+lop*5) == 0) - break; - } - srclen = getlong(grf_filelist+ofs2) - getlong(grf_filelist+ofs2+8) - 715; - if(lop == 4) { - for(lop = 10, srccount = 1; srclen >= lop; lop = lop * 10, srccount++); - } else { - srccount = 0; - } - } else { - srccount = 0; - } - - aentry.srclen = srclen; - aentry.srclen_aligned = getlong(grf_filelist+ofs2+4)-37579; - aentry.declen = getlong(grf_filelist+ofs2+8); - aentry.srcpos = getlong(grf_filelist+ofs2+13)+0x2e; - aentry.cycle = srccount; - aentry.type = type; - strncpy(aentry.fn, fname,sizeof(aentry.fn)-1); - aentry.fnd = NULL; -#ifdef GRFIO_LOCAL - aentry.gentry = -(gentry+1); // As Flag for making it a negative number carrying out the first time LocalFileCheck -#else - aentry.gentry = gentry+1; // With no first time LocalFileCheck -#endif - filelist_modify(&aentry); - } - ofs = ofs2 + 17; - } - free(grf_filelist); - - } else if (grf_version == 0x02) { //****** Grf version 02xx ****** - unsigned char eheader[8]; - unsigned char *rBuf; - uLongf rSize, eSize; - - fread(eheader,1,8,fp); - rSize = getlong(eheader); // Read Size - eSize = getlong(eheader+4); // Extend Size - - if ((long)rSize > grf_size-ftell(fp)) { // Warning fix [Lance] - fclose(fp); - printf("Illegal data format: GRF compress entry size\n"); - return 4; - } - - rBuf = (unsigned char *)malloc(rSize); // Get a Read Size - grf_filelist = (unsigned char *)malloc(eSize); // Get a Extend Size - fread(rBuf,1,rSize,fp); - fclose(fp); - decode_zip(grf_filelist, &eSize, rBuf, rSize); // Decode function - list_size = eSize; - free(rBuf); - - entrys = getlong(grf_header+0x26) - 7; - - // Get an entry - for(entry = 0, ofs = 0; entry < entrys; entry++){ - int ofs2, srclen, srccount, type; - FILELIST aentry; - - fname = (char*)(grf_filelist+ofs); - if (strlen(fname) > sizeof(aentry.fn)-1) { - printf("GRF file name %s is too long\n", fname); - free(grf_filelist); - exit(1); - } - //ofs2 = ofs+strlen((char*)(grf_filelist+ofs))+1; - ofs2 = ofs + strlen(fname)+1; - type = grf_filelist[ofs2+12]; - if (type == 1 || type == 3 || type == 5) { - srclen = getlong(grf_filelist+ofs2); - if (grf_filelist[ofs2+12] == 3) { - for (lop = 10, srccount = 1; srclen >= lop; lop = lop * 10, srccount++); - } else if (grf_filelist[ofs2+12] == 5) { - srccount = 0; - } else { // if (grf_filelist[ofs2+12]==1) { - srccount = -1; - } - - aentry.srclen = srclen; - aentry.srclen_aligned = getlong(grf_filelist+ofs2+4); - aentry.declen = getlong(grf_filelist+ofs2+8); - aentry.srcpos = getlong(grf_filelist+ofs2+13)+0x2e; - aentry.cycle = srccount; - aentry.type = type; - strncpy(aentry.fn,fname,sizeof(aentry.fn)-1); - aentry.fnd = NULL; -#ifdef GRFIO_LOCAL - aentry.gentry = -(gentry+1); // As Flag for making it a negative number carrying out the first time LocalFileCheck -#else - aentry.gentry = gentry+1; // With no first time LocalFileCheck -#endif - filelist_modify(&aentry); - } - ofs = ofs2 + 17; - } - free(grf_filelist); - - } else { //****** Grf Other version ****** - fclose(fp); - printf("GRF version %04x not supported\n",getlong(grf_header+0x2a)); - return 4; - } - - filelist_adjust(); // Unnecessary area release of filelist - - return 0; // 0:no error -} - -/*========================================== - * Grfio : Resource file check - *------------------------------------------ - */ -static void grfio_resourcecheck(void) -{ - char w1[256], w2[256], src[256], dst[256], restable[256], line[256]; - char *ptr, *buf; - FILELIST *entry; - int size, i = 0; - FILE *fp; - - // read resnametable from data directory and return if successful - sprintf(restable, "%sdata\\resnametable.txt", data_dir); - for (ptr = &restable[0]; *ptr != 0; ptr++) - if (*ptr == '\\') *ptr = '/'; - - fp = fopen(restable,"rb"); - if (fp) { - while (fgets(line, sizeof(line) - 1, fp)) { - if (sscanf(line, "%[^#]#%[^#]#", w1, w2) == 2 && - // we only need the maps' GAT and RSW files - (strstr(w2, ".gat") || strstr(w2, ".rsw"))) - { - sprintf(src, "data\\%s", w1); - sprintf(dst, "data\\%s", w2); - entry = filelist_find(dst); - // create new entries reusing the original's info - if (entry != NULL) { - FILELIST fentry; - memcpy(&fentry, entry, sizeof(FILELIST)); - strncpy(fentry.fn, src, sizeof(fentry.fn) - 1); - fentry.fnd = grfio_alloc_ptr(dst); - filelist_modify(&fentry); - i++; - } - } - } - fclose(fp); - return; // we're done here! - } - - // read resnametable from loaded GRF's, only if it cannot be - // loaded from the data directory - buf = (char *)grfio_reads("data\\resnametable.txt", &size); - if (buf) { - buf[size] = 0; - ptr = buf; - - while (ptr - buf < size) { - if (sscanf(ptr, "%[^#]#%[^#]#", w1, w2) == 2 && - (strstr(w2, ".gat") || strstr(w2, ".rsw"))) - { - sprintf(src, "data\\%s", w1); - sprintf(dst, "data\\%s", w2); - entry = filelist_find(dst); - if (entry != NULL) { - FILELIST fentry; - memcpy(&fentry, entry, sizeof(FILELIST)); - strncpy(fentry.fn, src, sizeof(fentry.fn) - 1); - fentry.fnd = grfio_alloc_ptr(dst); - filelist_modify(&fentry); - i++; - } - } - ptr = strchr(ptr,'\n'); // Next line - if (!ptr) break; - ptr++; - } - free(buf); - return; - } - -} - -/*========================================== - * Grfio : Resource add - *------------------------------------------ - */ -#define GENTRY_ADDS 4 // The number increment of gentry_table entries - -static int grfio_add(char *fname) -{ - grfio_alloc_ptr(fname); - - return grfio_entryread(fname, gentry_entrys - 1); -} - -char *grfio_alloc_ptr(char *fname) -{ - int len; - char *buf; - - if (gentry_entrys >= GENTRY_LIMIT) { - printf("GRF file entry limit reached!\n"); - exit(1); - } - - if (gentry_entrys >= gentry_maxentry) { - gentry_maxentry += GENTRY_ADDS; - gentry_table = (char**)realloc(gentry_table, gentry_maxentry * sizeof(char*)); - memset(gentry_table + (gentry_maxentry - GENTRY_ADDS), 0, sizeof(char*) * GENTRY_ADDS); - } - len = strlen( fname ); - buf = (char*)malloc(len + 1); - strcpy(buf, fname); - gentry_table[gentry_entrys++] = buf; - - return buf; -} - -/*========================================== - * Grfio : Finalize - *------------------------------------------ - */ -void grfio_final(void) -{ - if (filelist != NULL) - free(filelist); - - filelist_entrys = filelist_maxentry = 0; - - if (gentry_table != NULL) { - int lop; - for (lop = 0; lop < gentry_entrys; lop++) { - if (gentry_table[lop] != NULL) - free(gentry_table[lop]); - } - free(gentry_table); - } - gentry_table = NULL; - gentry_entrys = gentry_maxentry = 0; -} - -/*========================================== - * Grfio : Initialize - *------------------------------------------ - */ -void grfio_init(char *fname) -{ - FILE *data_conf; - char line[1024], w1[1024], w2[1024]; - int grf_num = 0; - - hashinit(); // hash table initialization - - data_conf = fopen(fname, "r"); - // It will read, if there is grf-files.txt. - if (data_conf) { - while(fgets(line, sizeof(line) - 1, data_conf)) { - if (line[0] == '/' && line[1] == '/') - continue; - if (sscanf(line, "%[^:]: %[^\r\n]", w1, w2) != 2) - continue; - // Entry table reading - if(strcmp(w1, "grf") == 0) // GRF file - grf_num += (grfio_add(w2) == 0); - else if(strcmp(w1,"data_dir") == 0) // Data directory - strcpy(data_dir, w2); - } - fclose(data_conf); - } // end of reading grf-files.txt - - if (grf_num == 0) { - printf("No GRF loaded, using default data directory\n"); - } - - // Unnecessary area release of filelist - filelist_adjust(); - // Resource check - grfio_resourcecheck(); - - return; -} +// Copyright (c) Athena Dev Teams - Licensed under GNU GPL +// For more information, see LICENCE in the main folder + +/********************************************************************* + * + * Ragnarok Online Emulator : grfio.c -- grf file I/O Module + *-------------------------------------------------------------------- + * special need library : zlib + ********************************************************************* + * $Id: grfio.c,v 1.2 2004/09/29 17:31:49 kalaspuff Exp $ + * + * 2002/12/18... the original edition + * 2003/01/23 ... Code correction + * 2003/02/01 ... An addition and decryption processing are improved for LocalFile and two or more GRF(s) check processing. + * 2003/02/02 ... Even if there is no grf it does not stop -- as -- correction + * 2003/02/02... grf reading specification can be added later -- as -- correction (grfio_add function addition) + * 2003/02 / 03... at the time of grfio_resourcecheck processing the entry addition processing method -- correction + * 2003/02/05... change of the processing in grfio_init + * 2003/02/23... a local file check -- GRFIO_LOCAL -- switch (Defoe -- Function Off) + * 2003/10/21 ... The data of alpha client was read. + * 2003/11/10 ... Ready new grf format. + * 2003/11/11 ... version check fix & bug fix + * 2006/04/16 ... fixed crash grfio_find_file when file is not found. + */ + +#include +#include +#include +#include +#include +#include + +#include "grfio.h" +#include "../common/mmo.h" +#include "../zlib/unzip.h" + +#define CHUNK 16384 + +#ifdef __WIN32 + #include "../zlib/zlib.h" + #include "../zlib/iowin32.h" +#else + #ifndef __FREEBSD__ + #include + #endif +#endif + +typedef unsigned char BYTE; +typedef unsigned short WORD; +typedef unsigned long DWORD; + +static char data_dir[1024] = ""; // "../"; + +//---------------------------- +// file entry table struct +//---------------------------- +typedef struct { + int srclen; // compressed size + int srclen_aligned; // + int declen; // original size + int srcpos; + short next; + int cycle; + char type; + char fn[128-4*5]; // file name + char *fnd; + signed char gentry; // read grf file select +} FILELIST; +//gentry ... 0 : It acquires from a local file. +// It acquires from the resource file of 1>=:gentry_table[gentry-1]. +// 1<=: Check a local file. +// If it is, after re-setting to 0, it acquires from a local file. +// If there is nothing, mark reversal will be carried out, and it will re-set, and will acquire from a resource file as well as 1>=. + +//Since char defines *FILELIST.gentry, the maximum which can be added by grfio_add becomes by 127 pieces. + +#define GENTRY_LIMIT 512 +#define FILELIST_LIMIT 1048576 // temporary maximum, and a theory top maximum are 2G. + +static FILELIST *filelist = NULL; +static int filelist_entrys = 0; +static int filelist_maxentry = 0; + +static char **gentry_table = NULL; +static int gentry_entrys = 0; +static int gentry_maxentry = 0; + +//---------------------------- +// file list hash table +//---------------------------- +static int filelist_hash[256]; + +//---------------------------- +// grf decode data table +//---------------------------- +static unsigned char BitMaskTable[8] = { + 0x80, 0x40, 0x20, 0x10, 0x08, 0x04, 0x02, 0x01 +}; + +static char BitSwapTable1[64] = { + 58, 50, 42, 34, 26, 18, 10, 2, 60, 52, 44, 36, 28, 20, 12, 4, + 62, 54, 46, 38, 30, 22, 14, 6, 64, 56, 48, 40, 32, 24, 16, 8, + 57, 49, 41, 33, 25, 17, 9, 1, 59, 51, 43, 35, 27, 19, 11, 3, + 61, 53, 45, 37, 29, 21, 13, 5, 63, 55, 47, 39, 31, 23, 15, 7 +}; +static char BitSwapTable2[64] = { + 40, 8, 48, 16, 56, 24, 64, 32, 39, 7, 47, 15, 55, 23, 63, 31, + 38, 6, 46, 14, 54, 22, 62, 30, 37, 5, 45, 13, 53, 21, 61, 29, + 36, 4, 44, 12, 52, 20, 60, 28, 35, 3, 43, 11, 51, 19, 59, 27, + 34, 2, 42, 10, 50, 18, 58, 26, 33, 1, 41, 9, 49, 17, 57, 25 +}; +static char BitSwapTable3[32] = { + 16, 7, 20, 21, 29, 12, 28, 17, 1, 15, 23, 26, 5, 18, 31, 10, + 2, 8, 24, 14, 32, 27, 3, 9, 19, 13, 30, 6, 22, 11, 4, 25 +}; + +static unsigned char NibbleData[4][64]={ + { + 0xef, 0x03, 0x41, 0xfd, 0xd8, 0x74, 0x1e, 0x47, 0x26, 0xef, 0xfb, 0x22, 0xb3, 0xd8, 0x84, 0x1e, + 0x39, 0xac, 0xa7, 0x60, 0x62, 0xc1, 0xcd, 0xba, 0x5c, 0x96, 0x90, 0x59, 0x05, 0x3b, 0x7a, 0x85, + 0x40, 0xfd, 0x1e, 0xc8, 0xe7, 0x8a, 0x8b, 0x21, 0xda, 0x43, 0x64, 0x9f, 0x2d, 0x14, 0xb1, 0x72, + 0xf5, 0x5b, 0xc8, 0xb6, 0x9c, 0x37, 0x76, 0xec, 0x39, 0xa0, 0xa3, 0x05, 0x52, 0x6e, 0x0f, 0xd9, + }, { + 0xa7, 0xdd, 0x0d, 0x78, 0x9e, 0x0b, 0xe3, 0x95, 0x60, 0x36, 0x36, 0x4f, 0xf9, 0x60, 0x5a, 0xa3, + 0x11, 0x24, 0xd2, 0x87, 0xc8, 0x52, 0x75, 0xec, 0xbb, 0xc1, 0x4c, 0xba, 0x24, 0xfe, 0x8f, 0x19, + 0xda, 0x13, 0x66, 0xaf, 0x49, 0xd0, 0x90, 0x06, 0x8c, 0x6a, 0xfb, 0x91, 0x37, 0x8d, 0x0d, 0x78, + 0xbf, 0x49, 0x11, 0xf4, 0x23, 0xe5, 0xce, 0x3b, 0x55, 0xbc, 0xa2, 0x57, 0xe8, 0x22, 0x74, 0xce, + }, { + 0x2c, 0xea, 0xc1, 0xbf, 0x4a, 0x24, 0x1f, 0xc2, 0x79, 0x47, 0xa2, 0x7c, 0xb6, 0xd9, 0x68, 0x15, + 0x80, 0x56, 0x5d, 0x01, 0x33, 0xfd, 0xf4, 0xae, 0xde, 0x30, 0x07, 0x9b, 0xe5, 0x83, 0x9b, 0x68, + 0x49, 0xb4, 0x2e, 0x83, 0x1f, 0xc2, 0xb5, 0x7c, 0xa2, 0x19, 0xd8, 0xe5, 0x7c, 0x2f, 0x83, 0xda, + 0xf7, 0x6b, 0x90, 0xfe, 0xc4, 0x01, 0x5a, 0x97, 0x61, 0xa6, 0x3d, 0x40, 0x0b, 0x58, 0xe6, 0x3d, + }, { + 0x4d, 0xd1, 0xb2, 0x0f, 0x28, 0xbd, 0xe4, 0x78, 0xf6, 0x4a, 0x0f, 0x93, 0x8b, 0x17, 0xd1, 0xa4, + 0x3a, 0xec, 0xc9, 0x35, 0x93, 0x56, 0x7e, 0xcb, 0x55, 0x20, 0xa0, 0xfe, 0x6c, 0x89, 0x17, 0x62, + 0x17, 0x62, 0x4b, 0xb1, 0xb4, 0xde, 0xd1, 0x87, 0xc9, 0x14, 0x3c, 0x4a, 0x7e, 0xa8, 0xe2, 0x7d, + 0xa0, 0x9f, 0xf6, 0x5c, 0x6a, 0x09, 0x8d, 0xf0, 0x0f, 0xe3, 0x53, 0x25, 0x95, 0x36, 0x28, 0xcb, + } +}; +/*----------------- + * long data get + */ +static unsigned int getlong(unsigned char *p) +{ + return p[0] + | p[1] << 0x08 + | p[2] << 0x10 + | p[3] << 0x18; // Shinomori +} + +/*========================================== + * Grf data decode : Subs + *------------------------------------------ + */ +static void NibbleSwap(BYTE *Src, int len) +{ + for(;0>4) | (*Src<<4); + } +} + +static void BitConvert(BYTE *Src,char *BitSwapTable) +{ + int lop,prm; + BYTE tmp[8]; + memset(tmp,0,8); + for(lop=0;lop!=64;lop++) { + prm = BitSwapTable[lop]-1; + if (Src[(prm >> 3) & 7] & BitMaskTable[prm & 7]) { + tmp[(lop >> 3) & 7] |= BitMaskTable[lop & 7]; + } + } + memcpy(Src,tmp,8); +} + +static void BitConvert4(BYTE *Src) +{ + int lop,prm; + BYTE tmp[8]; + tmp[0] = ((Src[7]<<5) | (Src[4]>>3)) & 0x3f; // ..0 vutsr + tmp[1] = ((Src[4]<<1) | (Src[5]>>7)) & 0x3f; // ..srqpo n + tmp[2] = ((Src[4]<<5) | (Src[5]>>3)) & 0x3f; // ..o nmlkj + tmp[3] = ((Src[5]<<1) | (Src[6]>>7)) & 0x3f; // ..kjihg f + tmp[4] = ((Src[5]<<5) | (Src[6]>>3)) & 0x3f; // ..g fedcb + tmp[5] = ((Src[6]<<1) | (Src[7]>>7)) & 0x3f; // ..cba98 7 + tmp[6] = ((Src[6]<<5) | (Src[7]>>3)) & 0x3f; // ..8 76543 + tmp[7] = ((Src[7]<<1) | (Src[4]>>7)) & 0x3f; // ..43210 v + + for(lop=0;lop!=4;lop++) { + tmp[lop] = (NibbleData[lop][tmp[lop*2]] & 0xf0) + | (NibbleData[lop][tmp[lop*2+1]] & 0x0f); + } + + *(DWORD*)(tmp+4)=0; + for(lop=0;lop!=32;lop++) { + prm = BitSwapTable3[lop]-1; + if (tmp[prm >> 3] & BitMaskTable[prm & 7]) { + tmp[(lop >> 3) + 4] |= BitMaskTable[lop & 7]; + } + } + Src[0] ^= tmp[4]; + Src[1] ^= tmp[5]; + Src[2] ^= tmp[6]; + Src[3] ^= tmp[7]; +} + +static void decode_des_etc(BYTE *buf,int len,int type,int cycle) +{ + int lop,cnt=0; + if(cycle<3) cycle=3; + else if(cycle<5) cycle++; + else if(cycle<7) cycle+=9; + else cycle+=15; + + for(lop=0;lop*8 64K on 16-bit machine: */ + if ((uLong)stream.avail_in != sourceLen) return Z_BUF_ERROR; + + stream.next_out = (Bytef*) dest; + stream.avail_out = (uInt)*destLen; + if ((uLong)stream.avail_out != *destLen) return Z_BUF_ERROR; + + stream.zalloc = (alloc_func)0; + stream.zfree = (free_func)0; + + err = inflateInit(&stream); + if (err != Z_OK) return err; + + err = inflate(&stream, Z_FINISH); + if (err != Z_STREAM_END) { + inflateEnd(&stream); + return err == Z_OK ? Z_BUF_ERROR : err; + } + *destLen = stream.total_out; + + err = inflateEnd(&stream); + return err; +} + +int encode_zip(unsigned char *dest, unsigned long* destLen, const unsigned char* source, unsigned long sourceLen) { + z_stream stream; + int err; + memset(&stream, 0, sizeof(stream)); + stream.next_in = (Bytef*)source; + stream.avail_in = (uInt)sourceLen; + /* Check for source > 64K on 16-bit machine: */ + if ((uLong)stream.avail_in != sourceLen) return Z_BUF_ERROR; + + stream.next_out = (Bytef*) dest; + stream.avail_out = (uInt)*destLen; + if ((uLong)stream.avail_out != *destLen) return Z_BUF_ERROR; + + stream.zalloc = (alloc_func)0; + stream.zfree = (free_func)0; + + err = deflateInit(&stream,Z_DEFAULT_COMPRESSION); + if (err != Z_OK) return err; + + err = deflate(&stream, Z_FINISH); + if (err != Z_STREAM_END) { + inflateEnd(&stream); + return err == Z_OK ? Z_BUF_ERROR : err; + } + *destLen = stream.total_out; + + err = deflateEnd(&stream); + return err; +} + +/* =================================== +* Unzips a file. 1: success, 0: error +* Adapted from miniunz.c [Celest] +* Version 1.01b, May 30th, 2004 +* Copyright (C) 1998-2004 Gilles Vollant +* ------------------------------------- +*/ +int deflate_file (const char *source, const char *filename) +{ +#ifdef _WIN32 + zlib_filefunc_def ffunc; +#endif + unzFile uf = NULL; + int err = UNZ_OK; + uInt size_buf = 8192; + FILE *fout = NULL; + void *buf; + +#ifdef _WIN32 + fill_win32_filefunc(&ffunc); + uf = unzOpen2(source, &ffunc); +#else + uf = unzOpen(source); +#endif + + if (uf == NULL) + return 0; + + if (unzLocateFile(uf, filename, 0) != UNZ_OK) + return 0; + + err = unzOpenCurrentFilePassword(uf, NULL); + + fout = fopen(filename,"wb"); + if (fout == NULL) + return 0; + + buf = (void *)malloc(size_buf); + do { + err = unzReadCurrentFile(uf, buf, size_buf); + if (err < 0) + break; + if (err > 0 && + fwrite(buf, err, 1, fout)!=1) + { + err = UNZ_ERRNO; + break; + } + } while (err > 0); + + if (fout) fclose(fout); + + if (err == UNZ_OK) { + err = unzCloseCurrentFile (uf); + free(buf); + return (err == UNZ_OK); + } + + unzCloseCurrentFile(uf); /* don't lose the error */ + + return 0; +} + +unsigned long grfio_crc32 (const unsigned char *buf, unsigned int len) +{ + return crc32(crc32(0L, Z_NULL, 0), buf, len); +} + +/*********************************************************** + *** File List Subroutines *** + ***********************************************************/ + +/*========================================== + * File List : Hash make + *------------------------------------------ + */ +static int filehash(unsigned char *fname) +{ + unsigned int hash=0; + while(*fname) { + hash = ((hash<<1)+(hash>>7)*9+tolower(*fname)); + fname++; + } + return hash & 255; +} + +/*========================================== + * File List : Hash initalize + *------------------------------------------ + */ +static void hashinit(void) +{ + int lop; + for (lop = 0; lop < 256; lop++) + filelist_hash[lop] = -1; +} + +/*========================================== + * File List : File find + *------------------------------------------ + */ +static FILELIST *filelist_find(char *fname) +{ + int hash; + + if (!filelist) + return NULL; + + for (hash = filelist_hash[filehash((unsigned char *) fname)]; hash >= 0; hash = filelist[hash].next) { + if(strcmpi(filelist[hash].fn, fname) == 0) + break; + } + + return (hash >= 0) ? &filelist[hash] : NULL; +} + +char *grfio_find_file(char *fname){ + FILELIST *filelist = filelist_find(fname); + if (!filelist) return NULL; + return (!filelist->fnd?filelist->fn:filelist->fnd); +} + +/*========================================== + * File List : Filelist add + *------------------------------------------ + */ +#define FILELIST_ADDS 1024 // number increment of file lists ` + +static FILELIST* filelist_add(FILELIST *entry) +{ + int hash; + + if (filelist_entrys >= FILELIST_LIMIT) { + printf("GRF filelist limit reached!\n"); + exit(1); + } + + if (filelist_entrys >= filelist_maxentry) { + filelist = (FILELIST *)realloc(filelist, (filelist_maxentry + FILELIST_ADDS) * sizeof(FILELIST)); + memset(filelist + filelist_maxentry, '\0', FILELIST_ADDS * sizeof(FILELIST)); + filelist_maxentry += FILELIST_ADDS; + } + + memcpy (&filelist[filelist_entrys], entry, sizeof(FILELIST)); + + hash = filehash((unsigned char *) entry->fn); + filelist[filelist_entrys].next = filelist_hash[hash]; + filelist_hash[hash] = filelist_entrys; + + filelist_entrys++; + + return &filelist[filelist_entrys - 1]; +} + +static FILELIST* filelist_modify(FILELIST *entry) +{ + FILELIST *fentry; + if ((fentry = filelist_find(entry->fn)) != NULL) { + int tmp = fentry->next; + memcpy(fentry, entry, sizeof(FILELIST)); + fentry->next = tmp; + } else { + fentry = filelist_add(entry); + } + return fentry; +} + +/*========================================== + * File List : filelist size adjust + *------------------------------------------ + */ +static void filelist_adjust(void) +{ + if (filelist != NULL) { + if (filelist_maxentry > filelist_entrys) { + filelist = (FILELIST *)realloc( + filelist, filelist_entrys * sizeof(FILELIST)); + filelist_maxentry = filelist_entrys; + } + } +} + +/*********************************************************** + *** Grfio Sobroutines *** + ***********************************************************/ + +/*========================================== + * Grfio : Resource file size get + *------------------------------------------ + */ +int grfio_size(char *fname) +{ + FILELIST *entry; + + entry = filelist_find(fname); + + if (entry == NULL || entry->gentry < 0) { // LocalFileCheck + char lfname[256], *p; + FILELIST lentry; + struct stat st; + + sprintf(lfname, "%s%s", data_dir, fname); + + for (p = &lfname[0]; *p != 0; p++) + if (*p=='\\') *p = '/'; // * At the time of Unix + + if (stat(lfname, &st) == 0) { + strncpy(lentry.fn, fname, sizeof(lentry.fn) - 1); + lentry.fnd = NULL; + lentry.declen = st.st_size; + lentry.gentry = 0; // 0:LocalFile + entry = filelist_modify(&lentry); + } else if (entry == NULL) { + printf("%s not found (grfio_size)\n", fname); + //exit(1); + return -1; + } + } + return entry->declen; +} + +/*========================================== + * Grfio : Resource file read & size get + *------------------------------------------ + */ +void* grfio_reads(char *fname, int *size) +{ + FILE *in; + FILELIST *entry; + unsigned char *buf2 = NULL; + + entry = filelist_find(fname); + + if (entry == NULL || entry->gentry <= 0) { // LocalFileCheck + char lfname[256], *p; + FILELIST lentry; + + sprintf(lfname, "%s%s", data_dir, fname); + + for (p = &lfname[0]; *p != 0; p++) + if (*p == '\\') *p = '/'; // * At the time of Unix + + in = fopen(lfname, "rb"); + if (in != NULL) { + if (entry != NULL && entry->gentry == 0) { + lentry.declen = entry->declen; + } else { + fseek(in,0,2); // SEEK_END + lentry.declen = ftell(in); + } + fseek(in,0,0); // SEEK_SET + buf2 = (unsigned char *)malloc(lentry.declen + 1024); + fread(buf2, 1, lentry.declen, in); + fclose(in); + strncpy(lentry.fn, fname, sizeof(lentry.fn) - 1); + lentry.fnd = NULL; + lentry.gentry = 0; // 0:LocalFile + entry = filelist_modify(&lentry); + } else { + if (entry != NULL && entry->gentry < 0) { + entry->gentry = -entry->gentry; // local file checked + } else { + printf("%s not found (grfio_reads - local file %s)\n", fname, lfname); + return NULL; + } + } + } + if (entry != NULL && entry->gentry > 0) { // Archive[GRF] File Read + char *gfname = gentry_table[entry->gentry - 1]; + in = fopen(gfname, "rb"); + if(in != NULL) { + unsigned char *buf = (unsigned char *)malloc(entry->srclen_aligned + 1024); + fseek(in, entry->srcpos, 0); + fread(buf, 1, entry->srclen_aligned, in); + fclose(in); + buf2 = (unsigned char *)malloc(entry->declen + 1024); + if (entry->type == 1 || entry->type == 3 || entry->type == 5) { + uLongf len; + if (entry->cycle >= 0) + decode_des_etc(buf, entry->srclen_aligned, entry->cycle == 0, entry->cycle); + len = entry->declen; + decode_zip(buf2, &len, buf, entry->srclen); + if (len != entry->declen) { + printf("decode_zip size mismatch err: %d != %d\n", (int)len, entry->declen); + free(buf); + free(buf2); + return NULL; + } + } else { + memcpy(buf2, buf, entry->declen); + } + free(buf); + } else { + printf("%s not found (grfio_reads - GRF file %s)\n", fname, gfname); + return NULL; + } + } + if (size != NULL && entry != NULL) + *size = entry->declen; + + return buf2; +} + +/*========================================== + * Resource filename decode + *------------------------------------------ + */ +static char * decode_filename(unsigned char *buf,int len) +{ + int lop; + for(lop=0;lop> 8; + + if (grf_version == 0x01) { //****** Grf version 01xx ****** + list_size = grf_size - ftell(fp); + grf_filelist = (unsigned char *) malloc(list_size); + fread(grf_filelist,1,list_size,fp); + fclose(fp); + + entrys = getlong(grf_header+0x26) - getlong(grf_header+0x22) - 7; + + // Get an entry + for (entry = 0,ofs = 0; entry < entrys; entry++) { + int ofs2, srclen, srccount, type; + char *period_ptr; + FILELIST aentry; + + ofs2 = ofs+getlong(grf_filelist+ofs)+4; + type = grf_filelist[ofs2+12]; + if (type != 0) { // Directory Index ... skip + fname = decode_filename(grf_filelist+ofs+6, grf_filelist[ofs]-6); + if (strlen(fname) > sizeof(aentry.fn) - 1) { + printf("GRF file name %s is too long\n", fname); + free(grf_filelist); + exit(1); + } + srclen = 0; + if ((period_ptr = strrchr(fname, '.')) != NULL) { + for(lop = 0; lop < 4; lop++) { + if (strcmpi(period_ptr, ".gnd\0.gat\0.act\0.str"+lop*5) == 0) + break; + } + srclen = getlong(grf_filelist+ofs2) - getlong(grf_filelist+ofs2+8) - 715; + if(lop == 4) { + for(lop = 10, srccount = 1; srclen >= lop; lop = lop * 10, srccount++); + } else { + srccount = 0; + } + } else { + srccount = 0; + } + + aentry.srclen = srclen; + aentry.srclen_aligned = getlong(grf_filelist+ofs2+4)-37579; + aentry.declen = getlong(grf_filelist+ofs2+8); + aentry.srcpos = getlong(grf_filelist+ofs2+13)+0x2e; + aentry.cycle = srccount; + aentry.type = type; + strncpy(aentry.fn, fname,sizeof(aentry.fn)-1); + aentry.fnd = NULL; +#ifdef GRFIO_LOCAL + aentry.gentry = -(gentry+1); // As Flag for making it a negative number carrying out the first time LocalFileCheck +#else + aentry.gentry = gentry+1; // With no first time LocalFileCheck +#endif + filelist_modify(&aentry); + } + ofs = ofs2 + 17; + } + free(grf_filelist); + + } else if (grf_version == 0x02) { //****** Grf version 02xx ****** + unsigned char eheader[8]; + unsigned char *rBuf; + uLongf rSize, eSize; + + fread(eheader,1,8,fp); + rSize = getlong(eheader); // Read Size + eSize = getlong(eheader+4); // Extend Size + + if ((long)rSize > grf_size-ftell(fp)) { // Warning fix [Lance] + fclose(fp); + printf("Illegal data format: GRF compress entry size\n"); + return 4; + } + + rBuf = (unsigned char *)malloc(rSize); // Get a Read Size + grf_filelist = (unsigned char *)malloc(eSize); // Get a Extend Size + fread(rBuf,1,rSize,fp); + fclose(fp); + decode_zip(grf_filelist, &eSize, rBuf, rSize); // Decode function + list_size = eSize; + free(rBuf); + + entrys = getlong(grf_header+0x26) - 7; + + // Get an entry + for(entry = 0, ofs = 0; entry < entrys; entry++){ + int ofs2, srclen, srccount, type; + FILELIST aentry; + + fname = (char*)(grf_filelist+ofs); + if (strlen(fname) > sizeof(aentry.fn)-1) { + printf("GRF file name %s is too long\n", fname); + free(grf_filelist); + exit(1); + } + //ofs2 = ofs+strlen((char*)(grf_filelist+ofs))+1; + ofs2 = ofs + strlen(fname)+1; + type = grf_filelist[ofs2+12]; + if (type == 1 || type == 3 || type == 5) { + srclen = getlong(grf_filelist+ofs2); + if (grf_filelist[ofs2+12] == 3) { + for (lop = 10, srccount = 1; srclen >= lop; lop = lop * 10, srccount++); + } else if (grf_filelist[ofs2+12] == 5) { + srccount = 0; + } else { // if (grf_filelist[ofs2+12]==1) { + srccount = -1; + } + + aentry.srclen = srclen; + aentry.srclen_aligned = getlong(grf_filelist+ofs2+4); + aentry.declen = getlong(grf_filelist+ofs2+8); + aentry.srcpos = getlong(grf_filelist+ofs2+13)+0x2e; + aentry.cycle = srccount; + aentry.type = type; + strncpy(aentry.fn,fname,sizeof(aentry.fn)-1); + aentry.fnd = NULL; +#ifdef GRFIO_LOCAL + aentry.gentry = -(gentry+1); // As Flag for making it a negative number carrying out the first time LocalFileCheck +#else + aentry.gentry = gentry+1; // With no first time LocalFileCheck +#endif + filelist_modify(&aentry); + } + ofs = ofs2 + 17; + } + free(grf_filelist); + + } else { //****** Grf Other version ****** + fclose(fp); + printf("GRF version %04x not supported\n",getlong(grf_header+0x2a)); + return 4; + } + + filelist_adjust(); // Unnecessary area release of filelist + + return 0; // 0:no error +} + +/*========================================== + * Grfio : Resource file check + *------------------------------------------ + */ +static void grfio_resourcecheck(void) +{ + char w1[256], w2[256], src[256], dst[256], restable[256], line[256]; + char *ptr, *buf; + FILELIST *entry; + int size, i = 0; + FILE *fp; + + // read resnametable from data directory and return if successful + sprintf(restable, "%sdata\\resnametable.txt", data_dir); + for (ptr = &restable[0]; *ptr != 0; ptr++) + if (*ptr == '\\') *ptr = '/'; + + fp = fopen(restable,"rb"); + if (fp) { + while (fgets(line, sizeof(line) - 1, fp)) { + if (sscanf(line, "%[^#]#%[^#]#", w1, w2) == 2 && + // we only need the maps' GAT and RSW files + (strstr(w2, ".gat") || strstr(w2, ".rsw"))) + { + sprintf(src, "data\\%s", w1); + sprintf(dst, "data\\%s", w2); + entry = filelist_find(dst); + // create new entries reusing the original's info + if (entry != NULL) { + FILELIST fentry; + memcpy(&fentry, entry, sizeof(FILELIST)); + strncpy(fentry.fn, src, sizeof(fentry.fn) - 1); + fentry.fnd = grfio_alloc_ptr(dst); + filelist_modify(&fentry); + i++; + } + } + } + fclose(fp); + return; // we're done here! + } + + // read resnametable from loaded GRF's, only if it cannot be + // loaded from the data directory + buf = (char *)grfio_reads("data\\resnametable.txt", &size); + if (buf) { + buf[size] = 0; + ptr = buf; + + while (ptr - buf < size) { + if (sscanf(ptr, "%[^#]#%[^#]#", w1, w2) == 2 && + (strstr(w2, ".gat") || strstr(w2, ".rsw"))) + { + sprintf(src, "data\\%s", w1); + sprintf(dst, "data\\%s", w2); + entry = filelist_find(dst); + if (entry != NULL) { + FILELIST fentry; + memcpy(&fentry, entry, sizeof(FILELIST)); + strncpy(fentry.fn, src, sizeof(fentry.fn) - 1); + fentry.fnd = grfio_alloc_ptr(dst); + filelist_modify(&fentry); + i++; + } + } + ptr = strchr(ptr,'\n'); // Next line + if (!ptr) break; + ptr++; + } + free(buf); + return; + } + +} + +/*========================================== + * Grfio : Resource add + *------------------------------------------ + */ +#define GENTRY_ADDS 4 // The number increment of gentry_table entries + +static int grfio_add(char *fname) +{ + grfio_alloc_ptr(fname); + + return grfio_entryread(fname, gentry_entrys - 1); +} + +char *grfio_alloc_ptr(char *fname) +{ + int len; + char *buf; + + if (gentry_entrys >= GENTRY_LIMIT) { + printf("GRF file entry limit reached!\n"); + exit(1); + } + + if (gentry_entrys >= gentry_maxentry) { + gentry_maxentry += GENTRY_ADDS; + gentry_table = (char**)realloc(gentry_table, gentry_maxentry * sizeof(char*)); + memset(gentry_table + (gentry_maxentry - GENTRY_ADDS), 0, sizeof(char*) * GENTRY_ADDS); + } + len = strlen( fname ); + buf = (char*)malloc(len + 1); + strcpy(buf, fname); + gentry_table[gentry_entrys++] = buf; + + return buf; +} + +/*========================================== + * Grfio : Finalize + *------------------------------------------ + */ +void grfio_final(void) +{ + if (filelist != NULL) + free(filelist); + + filelist_entrys = filelist_maxentry = 0; + + if (gentry_table != NULL) { + int lop; + for (lop = 0; lop < gentry_entrys; lop++) { + if (gentry_table[lop] != NULL) + free(gentry_table[lop]); + } + free(gentry_table); + } + gentry_table = NULL; + gentry_entrys = gentry_maxentry = 0; +} + +/*========================================== + * Grfio : Initialize + *------------------------------------------ + */ +void grfio_init(char *fname) +{ + FILE *data_conf; + char line[1024], w1[1024], w2[1024]; + int grf_num = 0; + + hashinit(); // hash table initialization + + data_conf = fopen(fname, "r"); + // It will read, if there is grf-files.txt. + if (data_conf) { + while(fgets(line, sizeof(line) - 1, data_conf)) { + if (line[0] == '/' && line[1] == '/') + continue; + if (sscanf(line, "%[^:]: %[^\r\n]", w1, w2) != 2) + continue; + // Entry table reading + if(strcmp(w1, "grf") == 0) // GRF file + grf_num += (grfio_add(w2) == 0); + else if(strcmp(w1,"data_dir") == 0) // Data directory + strcpy(data_dir, w2); + } + fclose(data_conf); + } // end of reading grf-files.txt + + if (grf_num == 0) { + printf("No GRF loaded, using default data directory\n"); + } + + // Unnecessary area release of filelist + filelist_adjust(); + // Resource check + grfio_resourcecheck(); + + return; +} diff --git a/src/tool/grfio.h b/src/tool/grfio.h index 72aceeda9..0d6268b0d 100644 --- a/src/tool/grfio.h +++ b/src/tool/grfio.h @@ -1,23 +1,23 @@ -// Copyright (c) Athena Dev Teams - Licensed under GNU GPL -// For more information, see LICENCE in the main folder - -#ifndef _GRFIO_H_ -#define _GRFIO_H_ - -void grfio_init(char*); // GRFIO Initialize -void grfio_final(void); // GRFIO Finalize -void* grfio_reads(char*,int*); // GRFIO data file read & size get -char *grfio_find_file(char *fname); -char *grfio_alloc_ptr(char *fname); - -#define grfio_read(fn) grfio_reads(fn, NULL) - -int grfio_size(char*); // GRFIO data file size get -unsigned long grfio_crc32(const unsigned char *buf, unsigned int len); - -int decode_zip(unsigned char *dest, unsigned long* destLen, const unsigned char* source, unsigned long sourceLen); -int encode_zip(unsigned char *dest, unsigned long* destLen, const unsigned char* source, unsigned long sourceLen); -int deflate_file (const char *source, const char *filename); - -#endif /* _GRFIO_H_ */ - +// Copyright (c) Athena Dev Teams - Licensed under GNU GPL +// For more information, see LICENCE in the main folder + +#ifndef _GRFIO_H_ +#define _GRFIO_H_ + +void grfio_init(char*); // GRFIO Initialize +void grfio_final(void); // GRFIO Finalize +void* grfio_reads(char*,int*); // GRFIO data file read & size get +char *grfio_find_file(char *fname); +char *grfio_alloc_ptr(char *fname); + +#define grfio_read(fn) grfio_reads(fn, NULL) + +int grfio_size(char*); // GRFIO data file size get +unsigned long grfio_crc32(const unsigned char *buf, unsigned int len); + +int decode_zip(unsigned char *dest, unsigned long* destLen, const unsigned char* source, unsigned long sourceLen); +int encode_zip(unsigned char *dest, unsigned long* destLen, const unsigned char* source, unsigned long sourceLen); +int deflate_file (const char *source, const char *filename); + +#endif /* _GRFIO_H_ */ + diff --git a/src/tool/mapcache.c b/src/tool/mapcache.c index c7e6aaa60..f2d638d34 100644 --- a/src/tool/mapcache.c +++ b/src/tool/mapcache.c @@ -1,202 +1,202 @@ -// Copyright (c) Athena Dev Teams - Licensed under GNU GPL -// For more information, see LICENCE in the main folder - -#include -#include -#include -#include - -#ifndef _WIN32 -#include -#endif - -#include "grfio.h" - -char grf_list_file[256] = "tools/mapcache/grf_files.txt"; -char map_list_file[256] = "tools/mapcache/map_list.txt"; -char map_cache_file[256] = "map_cache.dat"; - -#define MAP_NAME_LENGTH 16 -#define NO_WATER 1000000 - -// Used internally, this structure contains the physical map cells -struct map_data { - short xs; - short ys; - unsigned char *cells; -}; - -// This is the header appended before every compressed map cells info -struct map_cache_info { - char name[MAP_NAME_LENGTH]; - unsigned short index; - short xs; - short ys; - long len; -}; - -// This is the main header found at the very beginning of the file -struct map_cache_head { - short sizeof_header; - short sizeof_mapinfo; - long filesize; - unsigned short map_count; -} header; - -FILE *map_cache_fp; - - -// Read map from GRF's GAT and RSW files -int read_map(char *name, struct map_data *m) -{ - char filename[256]; - char *gat, *rsw; - int water_height; - int x, y, xs, ys; - struct gat_cell { - float height[4]; - int type; - } *p = NULL; - - // Open map GAT - sprintf(filename,"data\\%s.gat", name); - gat = (char *)grfio_read(filename); - if (gat == NULL) - return 0; - - // Open map RSW - sprintf(filename,"data\\%s.rsw", name); - rsw = (char *)grfio_read(filename); - - // Read water height - if (rsw) { - float temp = *(float*)(rsw+166); - water_height = (int)temp; - free(rsw); - } else - water_height = NO_WATER; - - // Read map size and allocate needed memory - xs = m->xs = *(int*)(gat+6); - ys = m->ys = *(int*)(gat+10); - m->cells = (unsigned char *)malloc(xs*ys); - - // Set cell properties - for (y = 0; y < ys; y++) { - p = (struct gat_cell*)(gat+14+y*xs*20); - for (x = 0; x < xs; x++) { - if (water_height != NO_WATER && p->type == 0 && (p->height[0] > water_height || p->height[1] > water_height || p->height[2] > water_height || p->height[3] > water_height)) - m->cells[x+y*xs] = 3; // Cell is 0 (walkable) but under water level, set to 3 (walkable water) - else - m->cells[x+y*xs] = p->type; - p++; - } - } - - free(gat); - - return 1; -} - -void cache_map(char *name, unsigned short index, struct map_data *m) -{ - struct map_cache_info info; - unsigned long len; - char *write_buf; - - // Create an output buffer twice as big as the uncompressed map... this way we're sure it fits - len = m->xs*m->ys*2; - write_buf = (char *)malloc(len); - // Compress the cells and get the compressed length - encode_zip((unsigned char *)write_buf, &len, m->cells, m->xs*m->ys); - - // Fill the map header - strncpy(info.name, name, MAP_NAME_LENGTH); - info.index = index; - info.xs = m->xs; - info.ys = m->ys; - info.len = len; - - // Append map header then compressed cells at the end of the file - fseek(map_cache_fp, header.filesize, SEEK_SET); - fwrite(&info, sizeof(struct map_cache_info), 1, map_cache_fp); - fwrite(write_buf, 1, len, map_cache_fp); - header.map_count++; - header.filesize += header.sizeof_mapinfo + len; - - free(write_buf); - free(m->cells); - - return; -} - -int main(int argc, char *argv[]) -{ - FILE *list; - char line[1024]; - struct map_data map; - char name[MAP_NAME_LENGTH]; - unsigned short index = 1; - - if(argc > 1) - strcpy(grf_list_file, argv[1]); - if(argc > 2) - strcpy(map_list_file, argv[2]); - if(argc > 3) - strcpy(map_cache_file, argv[3]); - - printf("Initializing grfio with %s\n", grf_list_file); - grfio_init(grf_list_file); - - printf("Opening map cache: %s\n", map_cache_file); - if(!(map_cache_fp = fopen(map_cache_file, "wb"))) { - printf("Failure when opening map cache file %s\n", map_cache_file); - exit(1); - } - - printf("Opening map list: %s\n", map_list_file); - if(!(list = fopen(map_list_file, "r"))) { - printf("Failure when opening maps list file %s\n", map_list_file); - exit(1); - } - - // Initialize the main header - header.sizeof_header = sizeof(struct map_cache_head); - header.sizeof_mapinfo = sizeof(struct map_cache_info); - header.map_count = 0; - header.filesize = sizeof(struct map_cache_head); - - // Read and process the map list - while(fgets(line, 1020, list)){ - - if(line[0] == '/' && line[1] == '/') - continue; - - if(sscanf(line, "%16s %hu", name, &index) > 0) { // No defines in strings, 16 is hardcoded here - printf("Index %d : %s\n", index, name); - if(read_map(name, &map)) - cache_map(name, index, &map); - else - printf("Map file not found in GRF\n"); - // If the 2nd argument is omitted at next line, we'll keep last used index + 1 - index++; - } else - printf("Skipping incorrect line\n"); - } - - printf("Closing map list: %s\n", map_list_file); - fclose(list); - - printf("Closing map cache: %s\n", map_cache_file); - // Write the main header and close the map cache - fseek(map_cache_fp, 0, SEEK_SET); - fwrite(&header, sizeof(struct map_cache_head), 1, map_cache_fp); - fclose(map_cache_fp); - - printf("Finalizing grfio\n"); - grfio_final(); - - printf("%d maps cached\n", header.map_count); - - return 0; -} +// Copyright (c) Athena Dev Teams - Licensed under GNU GPL +// For more information, see LICENCE in the main folder + +#include +#include +#include +#include + +#ifndef _WIN32 +#include +#endif + +#include "grfio.h" + +char grf_list_file[256] = "tools/mapcache/grf_files.txt"; +char map_list_file[256] = "tools/mapcache/map_list.txt"; +char map_cache_file[256] = "map_cache.dat"; + +#define MAP_NAME_LENGTH 16 +#define NO_WATER 1000000 + +// Used internally, this structure contains the physical map cells +struct map_data { + short xs; + short ys; + unsigned char *cells; +}; + +// This is the header appended before every compressed map cells info +struct map_cache_info { + char name[MAP_NAME_LENGTH]; + unsigned short index; + short xs; + short ys; + long len; +}; + +// This is the main header found at the very beginning of the file +struct map_cache_head { + short sizeof_header; + short sizeof_mapinfo; + long filesize; + unsigned short map_count; +} header; + +FILE *map_cache_fp; + + +// Read map from GRF's GAT and RSW files +int read_map(char *name, struct map_data *m) +{ + char filename[256]; + char *gat, *rsw; + int water_height; + int x, y, xs, ys; + struct gat_cell { + float height[4]; + int type; + } *p = NULL; + + // Open map GAT + sprintf(filename,"data\\%s.gat", name); + gat = (char *)grfio_read(filename); + if (gat == NULL) + return 0; + + // Open map RSW + sprintf(filename,"data\\%s.rsw", name); + rsw = (char *)grfio_read(filename); + + // Read water height + if (rsw) { + float temp = *(float*)(rsw+166); + water_height = (int)temp; + free(rsw); + } else + water_height = NO_WATER; + + // Read map size and allocate needed memory + xs = m->xs = *(int*)(gat+6); + ys = m->ys = *(int*)(gat+10); + m->cells = (unsigned char *)malloc(xs*ys); + + // Set cell properties + for (y = 0; y < ys; y++) { + p = (struct gat_cell*)(gat+14+y*xs*20); + for (x = 0; x < xs; x++) { + if (water_height != NO_WATER && p->type == 0 && (p->height[0] > water_height || p->height[1] > water_height || p->height[2] > water_height || p->height[3] > water_height)) + m->cells[x+y*xs] = 3; // Cell is 0 (walkable) but under water level, set to 3 (walkable water) + else + m->cells[x+y*xs] = p->type; + p++; + } + } + + free(gat); + + return 1; +} + +void cache_map(char *name, unsigned short index, struct map_data *m) +{ + struct map_cache_info info; + unsigned long len; + char *write_buf; + + // Create an output buffer twice as big as the uncompressed map... this way we're sure it fits + len = m->xs*m->ys*2; + write_buf = (char *)malloc(len); + // Compress the cells and get the compressed length + encode_zip((unsigned char *)write_buf, &len, m->cells, m->xs*m->ys); + + // Fill the map header + strncpy(info.name, name, MAP_NAME_LENGTH); + info.index = index; + info.xs = m->xs; + info.ys = m->ys; + info.len = len; + + // Append map header then compressed cells at the end of the file + fseek(map_cache_fp, header.filesize, SEEK_SET); + fwrite(&info, sizeof(struct map_cache_info), 1, map_cache_fp); + fwrite(write_buf, 1, len, map_cache_fp); + header.map_count++; + header.filesize += header.sizeof_mapinfo + len; + + free(write_buf); + free(m->cells); + + return; +} + +int main(int argc, char *argv[]) +{ + FILE *list; + char line[1024]; + struct map_data map; + char name[MAP_NAME_LENGTH]; + unsigned short index = 1; + + if(argc > 1) + strcpy(grf_list_file, argv[1]); + if(argc > 2) + strcpy(map_list_file, argv[2]); + if(argc > 3) + strcpy(map_cache_file, argv[3]); + + printf("Initializing grfio with %s\n", grf_list_file); + grfio_init(grf_list_file); + + printf("Opening map cache: %s\n", map_cache_file); + if(!(map_cache_fp = fopen(map_cache_file, "wb"))) { + printf("Failure when opening map cache file %s\n", map_cache_file); + exit(1); + } + + printf("Opening map list: %s\n", map_list_file); + if(!(list = fopen(map_list_file, "r"))) { + printf("Failure when opening maps list file %s\n", map_list_file); + exit(1); + } + + // Initialize the main header + header.sizeof_header = sizeof(struct map_cache_head); + header.sizeof_mapinfo = sizeof(struct map_cache_info); + header.map_count = 0; + header.filesize = sizeof(struct map_cache_head); + + // Read and process the map list + while(fgets(line, 1020, list)){ + + if(line[0] == '/' && line[1] == '/') + continue; + + if(sscanf(line, "%16s %hu", name, &index) > 0) { // No defines in strings, 16 is hardcoded here + printf("Index %d : %s\n", index, name); + if(read_map(name, &map)) + cache_map(name, index, &map); + else + printf("Map file not found in GRF\n"); + // If the 2nd argument is omitted at next line, we'll keep last used index + 1 + index++; + } else + printf("Skipping incorrect line\n"); + } + + printf("Closing map list: %s\n", map_list_file); + fclose(list); + + printf("Closing map cache: %s\n", map_cache_file); + // Write the main header and close the map cache + fseek(map_cache_fp, 0, SEEK_SET); + fwrite(&header, sizeof(struct map_cache_head), 1, map_cache_fp); + fclose(map_cache_fp); + + printf("Finalizing grfio\n"); + grfio_final(); + + printf("%d maps cached\n", header.map_count); + + return 0; +} diff --git a/src/zlib/zlib-1.2.3 b/src/zlib/zlib-1.2.3 index a6a9cc84d..e69de29bb 100644 Binary files a/src/zlib/zlib-1.2.3 and b/src/zlib/zlib-1.2.3 differ -- cgit v1.2.3-60-g2f50