Свернуть ↑
<?
require_once "common.php";
echo "Loading data...\n";
$temp1 = $ld->read_client_file("..\\skillname-e.txt");
$temp2 = $ld->read_client_file("..\\skillgrp.txt");
$ids = explode("\n", file_get_contents("not_found_skills.txt"));
$names = array();
$grp = array();
for ($x = 0; $x < count($temp1); $x++)
$names[$temp1[$x]['id'].'_'.$temp1[$x]['level']] = $temp1[$x];
unset($temp1);
for ($x = 0; $x < count($temp2); $x++)
$grp[$temp2[$x]['skill_id'].'_'.$temp2[$x]['skill_level']] = $temp2[$x];
unset($temp2);
if (file_exists("skills.xml"))
unlink("skills.xml");
$log = new Logger("skills.xml", W_FILE, false, false);
echo "Make xml...\n";
for ($x = 0; $x < count($ids); $x++)
{
$id = trim($ids[$x]);
if (empty($id))
continue;
if ($x % 100 == 0)
echo ".";
$levels = 1;
while (!empty($names["{$id}_{$levels}"]["id"]) && $level <= 100)
$levels++;
$levels--;
$name = $ld->prepare_str($names["{$id}_1"]["name"]);
$descs = array();
for ($i = 1; $i <= $levels; $i++)
{
$desc = $ld->prepare_str($names["{$id}_{$i}"]["description"]);
if (!empty($desc) && $desc != "none")
{
if (array_search($desc, $descs) === false)
$descs[] = $desc;
}
}
if (count($descs) > 0)
{
if (count($descs) == 1)
$desc = "<!-- {$descs[0]} -->";
else
{
$desc = "<!--\n";
foreach ($descs as $d)
$desc .= "\t\t\t{$d}\n";
$desc .= "\t\t-->";
}
}
else
$desc = "";
$icon = $grp["{$id}_1"]["icon_name"];
$hitTime = (int) round($grp["{$id}_1"]["hit_time[0]"] * 1000);
$coolTime = (int) round($grp["{$id}_1"]["hit_time[1]"] * 1000);
$reuseDelay = max((int) round($grp["{$id}_1"]["hit_time[2]"] * 1000), 0);
$castRange = $grp["{$id}_1"]["cast_range"];
$isMagic = $grp["{$id}_1"]["is_magic"];
$mpTable1 = "";
$mpTable2 = "";
$mpConsume1 = "";
$mpConsume2 = "";
$hpTable = "";
$hpConsume = "";
if ($grp["{$id}_1"]["mp_consume"] > 0)
{
$mps = array();
for ($i = 1; $i <= $levels; $i++)
{
$mp = $grp["{$id}_{$i}"]["mp_consume"];
$mps[] = $mp;
}
$diff = false;
$temp = $mps[0];
for ($i = 0; $i < count($mps); $i++)
if ($temp != $mps[$i])
$diff = true;
if ($diff)
{
$mpTable1 = "<table name=\"#mpConsume1\">";
$mpTable2 = "<table name=\"#mpConsume2\">";
for ($i = 0; $i < count($mps); $i++)
if ($isMagic == 1 || $isMagic == 2)
{
$consume1 = (int) round ($mps[$i] * 0.25);
$consume2 = $mps[$i] - $consume1;
$mpTable1 .= "{$consume1} ";
$mpTable2 .= "{$consume2} ";
}
else
{
$mpTable2 .= "{$mps[$i]} ";
}
$mpTable1 = trim($mpTable1)."</table>";
$mpTable2 = trim($mpTable2)."</table>";
$mpConsume1 = "#mpConsume1";
$mpConsume2 = "#mpConsume2";
}
else
{
$mpTable1 = "";
$mpTable2 = "";
if ($isMagic == 1 || $isMagic == 2)
{
$mpConsume1 = (int) round ($mps[0] * 0.25);
$mpConsume2 = $mps[0] - $mpConsume1;
}
else
{
$mpConsume1 = "";
$mpConsume2 = $mps[0];
}
}
}
if ($grp["{$id}_1"]["hp_consume"] > 0)
{
$hps = array();
for ($i = 1; $i <= $levels; $i++)
{
$hp = $grp["{$id}_{$i}"]["hp_consume"];
$hps[] = $hp;
}
$diff = false;
$temp = $hps[0];
for ($i = 0; $i < count($hps); $i++)
if ($temp != $hps[$i])
$diff = true;
if ($diff)
{
$hpTable = "<table name=\"#hpConsume\">";
for ($i = 0; $i < count($hps); $i++)
$hpTable .= "{$hps[$i]} ";
$hpTable = trim($hpTable)."</table>";
$hpConsume = "#hpConsume";
}
else
{
$hpTable = "";
$hpConsume = $hps[0];
}
}
$operType = $grp["{$id}_1"]["oper_type"];
if (in_array($operType, array(11, 12, 13, 14, 15, 16)))
$opType = "OP_PASSIVE";
else if (in_array($operType, array(6)))
$opType = "OP_TOGGLE";
else if (in_array($operType, array(0, 1, 2, 3, 4, 5, 7)))
$opType = "OP_ACTIVE";
else
$opType = "UNKNOWN_{$operType}";
$log->to_file("\t<skill id=\"{$id}\" levels=\"{$levels}\" name=\"{$name}\">");
if (!empty($desc))
$log->to_file("\t\t{$desc}");
if (!empty($mpTable1) && ($isMagic == 1 || $isMagic == 2))
$log->to_file("\t\t{$mpTable1}");
if (!empty($mpTable2))
$log->to_file("\t\t{$mpTable2}");
if (!empty($hpTable))
$log->to_file("\t\t{$hpTable}");
$log->to_file("\t\t<set name=\"icon\" val=\"{$icon}\" />");
if ($hitTime > 0)
$log->to_file("\t\t<set name=\"hitTime\" val=\"{$hitTime}\" />");
if ($coolTime > 0)
$log->to_file("\t\t<set name=\"coolTime\" val=\"{$coolTime}\" />");
if ($reuseDelay > 0)
$log->to_file("\t\t<set name=\"reuseDelay\" val=\"{$reuseDelay}\" />");
if ($castRange > 0)
$log->to_file("\t\t<set name=\"castRange\" val=\"{$castRange}\" />");
if (!empty($mpConsume1) && ($isMagic == 1 || $isMagic == 2))
$log->to_file("\t\t<set name=\"mpConsume1\" val=\"{$mpConsume1}\" />");
if (!empty($mpConsume2))
$log->to_file("\t\t<set name=\"mpConsume2\" val=\"{$mpConsume2}\" />");
if (!empty($hpConsume))
$log->to_file("\t\t<set name=\"hpConsume\" val=\"{$hpConsume}\" />");
$log->to_file("\t\t<set name=\"target\" val=\"TARGET_NONE\" />");
$log->to_file("\t\t<set name=\"skillType\" val=\"NOTDONE\" />");
$log->to_file("\t\t<set name=\"operateType\" val=\"{$opType}\" />");
if ($isMagic == 1)
$log->to_file("\t\t<set name=\"magicType\" val=\"MAGIC\" />");
else if ($isMagic == 2)
$log->to_file("\t\t<set name=\"magicType\" val=\"SPECIAL\" />");
else if ($isMagic == 3)
$log->to_file("\t\t<set name=\"magicType\" val=\"MUSIC\" />");
$log->to_file("\t</skill>");
}
?>Code: PHP