root/tools/mob_db.pl @ 1

Revision 1, 4.5 kB (checked in by jinshiro, 17 years ago)
RevLine 
[1]1#!/usr/bin/perl
2$db = "mob_db";
3$nb_columns = 58;
4@str_col = (1,2,3);
5$create_table = "#
6# Table structure for table `mob_db`
7#
8
9DROP TABLE IF EXISTS `mob_db`;
10CREATE TABLE `mob_db` (
11  `ID` mediumint(9) unsigned NOT NULL default '0',
12  `Sprite` text NOT NULL,
13  `kName` text NOT NULL,
14  `iName` text NOT NULL,
15  `LV` tinyint(6) unsigned NOT NULL default '0',
16  `HP` int(9) unsigned NOT NULL default '0',
17  `SP` mediumint(9) unsigned NOT NULL default '0',
18  `EXP` mediumint(9) unsigned NOT NULL default '0',
19  `JEXP` mediumint(9) unsigned NOT NULL default '0',
20  `Range1` tinyint(4) unsigned NOT NULL default '0',
21  `ATK1` smallint(6) unsigned NOT NULL default '0',
22  `ATK2` smallint(6) unsigned NOT NULL default '0',
23  `DEF` smallint(6) unsigned NOT NULL default '0',
24  `MDEF` smallint(6) unsigned NOT NULL default '0',
25  `STR` tinyint(4) unsigned NOT NULL default '0',
26  `AGI` tinyint(4) unsigned NOT NULL default '0',
27  `VIT` tinyint(4) unsigned NOT NULL default '0',
28  `INT` tinyint(4) unsigned NOT NULL default '0',
29  `DEX` tinyint(4) unsigned NOT NULL default '0',
30  `LUK` tinyint(4) unsigned NOT NULL default '0',
31  `Range2` tinyint(4) unsigned NOT NULL default '0',
32  `Range3` tinyint(4) unsigned NOT NULL default '0',
33  `Scale` tinyint(4) unsigned NOT NULL default '0',
34  `Race` tinyint(4) unsigned NOT NULL default '0',
35  `Element` tinyint(4) unsigned NOT NULL default '0',
36  `Mode` smallint(6) unsigned NOT NULL default '0',
37  `Speed` smallint(6) unsigned NOT NULL default '0',
38  `aDelay` smallint(6) unsigned NOT NULL default '0',
39  `aMotion` smallint(6) unsigned NOT NULL default '0',
40  `dMotion` smallint(6) unsigned NOT NULL default '0',
41  `MEXP` mediumint(9) unsigned NOT NULL default '0',
42  `ExpPer` smallint(9) unsigned NOT NULL default '0',
43  `MVP1id` smallint(9) unsigned NOT NULL default '0',
44  `MVP1per` smallint(9) unsigned NOT NULL default '0',
45  `MVP2id` smallint(9) unsigned NOT NULL default '0',
46  `MVP2per` smallint(9) unsigned NOT NULL default '0',
47  `MVP3id` smallint(9) unsigned NOT NULL default '0',
48  `MVP3per` smallint(9) unsigned NOT NULL default '0',
49  `Drop1id` smallint(9) unsigned NOT NULL default '0',
50  `Drop1per` smallint(9) unsigned NOT NULL default '0',
51  `Drop2id` smallint(9) unsigned NOT NULL default '0',
52  `Drop2per` smallint(9) unsigned NOT NULL default '0',
53  `Drop3id` smallint(9) unsigned NOT NULL default '0',
54  `Drop3per` smallint(9) unsigned NOT NULL default '0',
55  `Drop4id` smallint(9) unsigned NOT NULL default '0',
56  `Drop4per` smallint(9) unsigned NOT NULL default '0',
57  `Drop5id` smallint(9) unsigned NOT NULL default '0',
58  `Drop5per` smallint(9) unsigned NOT NULL default '0',
59  `Drop6id` smallint(9) unsigned NOT NULL default '0',
60  `Drop6per` smallint(9) unsigned NOT NULL default '0',
61  `Drop7id` smallint(9) unsigned NOT NULL default '0',
62  `Drop7per` smallint(9) unsigned NOT NULL default '0',
63  `Drop8id` smallint(9) unsigned NOT NULL default '0',
64  `Drop8per` smallint(9) unsigned NOT NULL default '0',
65  `Drop9id` smallint(9) unsigned NOT NULL default '0',
66  `Drop9per` smallint(9) unsigned NOT NULL default '0',
67  `DropCardid` smallint(9) unsigned NOT NULL default '0',
68  `DropCardper` smallint(9) unsigned NOT NULL default '0',
69  PRIMARY KEY  (`ID`)
70) ENGINE=MyISAM;
71";
72printf("%s\n",$create_table);
73while ($ligne=<STDIN>)
74{
75        if ($ligne =~ /[^\r\n]+/)
76        {
77                $ligne = $&;
78                if ($ligne =~ /^\/\//)
79                {
80                        printf("# ");
81                        $ligne = substr($ligne, 2);
82                }
83                @champ = split (",",$ligne);
84                if ($#champ != $nb_columns - 1)
85                {
86                        # Can't parse, it's a real comment
87                        printf ("%s\n", $ligne);
88                } else {
89                        printf("REPLACE INTO `%s` VALUES (", $db);
90                        for ($i=0; $i<$#champ; $i++)
91                        {
92                                printField($champ[$i],",",$i);
93                        }
94                        printField($champ[$#champ],");\n",$#champ);
95                }
96        }
97}
98
99sub printField {
100        my ($str, $suffix, $idCol) = @_;
101        # Remove first { and last }
102        if ($str =~ /{.*}/)
103        {
104                $str = substr($&,1,-1);
105        }
106        # Remove comment at end of line
107        if ($str =~ /[^\/]*\/\//)
108        {
109                $str = substr($&,0,-2);
110        }
111        # If nothing, put NULL
112        if ($str eq "") {
113                printf("NULL%s", $suffix);
114        } else {
115                my $flag = 0;
116                # Search if it's a string column ?
117                foreach $col (@str_col)
118                {
119                        if ($col == $idCol)
120                        {
121                                $flag = 1;
122                                break;
123                        }
124                }
125                if ($flag == 1)
126                {
127                        # String column, so escape and add ''
128                        printf("'%s'%s", escape($str), $suffix);
129                } else {
130                        # Not a string column
131                        printf("%s%s", $str,$suffix);
132                }
133        }
134}
135
136sub escape {
137        my ($str) = @_;
138        my @str_splitted = split("'", $str);
139        my $result = "";
140        for (my $i=0; $i<=$#str_splitted; $i++)
141        {
142                if ($i == 0) {
143                        $result = @str_splitted[0];
144                } else {
145                        $result = $result."\\'".@str_splitted[$i];
146                }
147        }
148        return $result
149}
Note: See TracBrowser for help on using the browser.