diff options
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 Binary files differindex a6a9cc84d..e69de29bb 100644 --- a/lib/zlib-1.2.3 +++ b/lib/zlib-1.2.3 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 <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <ctype.h>
-#include <malloc.h>
-#include <sys/stat.h>
-
-#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 <zlib.h>
- #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<len;len--,Src++) {
- *Src = (*Src>>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<len;lop++,buf+=8) {
- if(lop<20 || (type==0 && lop%cycle==0)){ // des
- BitConvert(buf,BitSwapTable1);
- BitConvert4(buf);
- BitConvert(buf,BitSwapTable2);
- } else {
- if(cnt==7 && type==0){
- int a;
- BYTE tmp[8];
- *(DWORD*)tmp = *(DWORD*)buf;
- *(DWORD*)(tmp+4) = *(DWORD*)(buf+4);
- cnt=0;
- buf[0]=tmp[3];
- buf[1]=tmp[4];
- buf[2]=tmp[6];
- buf[3]=tmp[0];
- buf[4]=tmp[1];
- buf[5]=tmp[2];
- buf[6]=tmp[5];
- a=tmp[7];
- if(a==0x00) a=0x2b;
- else if(a==0x2b) a=0x00;
- else if(a==0x01) a=0x68;
- else if(a==0x68) a=0x01;
- else if(a==0x48) a=0x77;
- else if(a==0x77) a=0x48;
- else if(a==0x60) a=0xff;
- else if(a==0xff) a=0x60;
- else if(a==0x6c) a=0x80;
- else if(a==0x80) a=0x6c;
- else if(a==0xb9) a=0xc0;
- else if(a==0xc0) a=0xb9;
- else if(a==0xeb) a=0xfe;
- else if(a==0xfe) a=0xeb;
- buf[7]=a;
- }
- cnt++;
- }
- }
-}
-/*==========================================
- * Grf data decode sub : zip
- *------------------------------------------
- */
-int decode_zip(unsigned char *dest, unsigned long* destLen, const unsigned char* source, unsigned long sourceLen)
-{
- z_stream stream;
- int err;
-
- 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 = 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<len;lop+=8) {
- NibbleSwap(&buf[lop],8);
- BitConvert(&buf[lop],BitSwapTable1);
- BitConvert4(&buf[lop]);
- BitConvert(&buf[lop],BitSwapTable2);
- }
- return (char*)buf;
-}
-
-/*==========================================
- * Grfio : Entry table read
- *------------------------------------------
- */
-static int grfio_entryread(char *gfname,int gentry)
-{
- FILE *fp;
- long grf_size,list_size;
- unsigned char grf_header[0x2e];
- int lop,entry,entrys,ofs,grf_version;
- char *fname;
- unsigned char *grf_filelist;
-
- fp = fopen(gfname, "rb");
- if (fp == NULL) {
- printf("GRF data file not found: '%s'.\n",gfname);
- return 1; // 1:not found error
- }
-
- fseek(fp,0,2); // SEEK_END
- grf_size = ftell(fp);
- fseek(fp,0,0); // SEEK_SET
- fread(grf_header,1,0x2e,fp);
- if (strcmp((const char *) grf_header,"Master of Magic") ||
- fseek(fp,getlong(grf_header+0x1e),1)) // SEEK_CUR
- {
- fclose(fp);
- printf("GRF %s read error\n",gfname);
- return 2; // 2:file format error
- }
-
- grf_version = getlong(grf_header+0x2a) >> 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 <stdio.h> +#include <stdlib.h> +#include <string.h> +#include <ctype.h> +#include <malloc.h> +#include <sys/stat.h> + +#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 <zlib.h> + #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<len;len--,Src++) { + *Src = (*Src>>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<len;lop++,buf+=8) { + if(lop<20 || (type==0 && lop%cycle==0)){ // des + BitConvert(buf,BitSwapTable1); + BitConvert4(buf); + BitConvert(buf,BitSwapTable2); + } else { + if(cnt==7 && type==0){ + int a; + BYTE tmp[8]; + *(DWORD*)tmp = *(DWORD*)buf; + *(DWORD*)(tmp+4) = *(DWORD*)(buf+4); + cnt=0; + buf[0]=tmp[3]; + buf[1]=tmp[4]; + buf[2]=tmp[6]; + buf[3]=tmp[0]; + buf[4]=tmp[1]; + buf[5]=tmp[2]; + buf[6]=tmp[5]; + a=tmp[7]; + if(a==0x00) a=0x2b; + else if(a==0x2b) a=0x00; + else if(a==0x01) a=0x68; + else if(a==0x68) a=0x01; + else if(a==0x48) a=0x77; + else if(a==0x77) a=0x48; + else if(a==0x60) a=0xff; + else if(a==0xff) a=0x60; + else if(a==0x6c) a=0x80; + else if(a==0x80) a=0x6c; + else if(a==0xb9) a=0xc0; + else if(a==0xc0) a=0xb9; + else if(a==0xeb) a=0xfe; + else if(a==0xfe) a=0xeb; + buf[7]=a; + } + cnt++; + } + } +} +/*========================================== + * Grf data decode sub : zip + *------------------------------------------ + */ +int decode_zip(unsigned char *dest, unsigned long* destLen, const unsigned char* source, unsigned long sourceLen) +{ + z_stream stream; + int err; + + 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 = 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<len;lop+=8) { + NibbleSwap(&buf[lop],8); + BitConvert(&buf[lop],BitSwapTable1); + BitConvert4(&buf[lop]); + BitConvert(&buf[lop],BitSwapTable2); + } + return (char*)buf; +} + +/*========================================== + * Grfio : Entry table read + *------------------------------------------ + */ +static int grfio_entryread(char *gfname,int gentry) +{ + FILE *fp; + long grf_size,list_size; + unsigned char grf_header[0x2e]; + int lop,entry,entrys,ofs,grf_version; + char *fname; + unsigned char *grf_filelist; + + fp = fopen(gfname, "rb"); + if (fp == NULL) { + printf("GRF data file not found: '%s'.\n",gfname); + return 1; // 1:not found error + } + + fseek(fp,0,2); // SEEK_END + grf_size = ftell(fp); + fseek(fp,0,0); // SEEK_SET + fread(grf_header,1,0x2e,fp); + if (strcmp((const char *) grf_header,"Master of Magic") || + fseek(fp,getlong(grf_header+0x1e),1)) // SEEK_CUR + { + fclose(fp); + printf("GRF %s read error\n",gfname); + return 2; // 2:file format error + } + + grf_version = getlong(grf_header+0x2a) >> 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 <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <malloc.h>
-
-#ifndef _WIN32
-#include <unistd.h>
-#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 <stdio.h> +#include <stdlib.h> +#include <string.h> +#include <malloc.h> + +#ifndef _WIN32 +#include <unistd.h> +#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 Binary files differindex a6a9cc84d..e69de29bb 100644 --- a/src/zlib/zlib-1.2.3 +++ b/src/zlib/zlib-1.2.3 |