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 | |
---|
9 | DROP TABLE IF EXISTS `mob_db`; |
---|
10 | CREATE 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 | "; |
---|
72 | printf("%s\n",$create_table); |
---|
73 | while ($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 | |
---|
99 | sub 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 | |
---|
136 | sub 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 | } |
---|