mob_db.pl 4.5 KB

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