Сообщений: 256
Тем: 13
Зарегистрирован: Jul 2012
Репутация:
285
07-02-2013, 09:27 PM
(Сообщение последний раз редактировалось: 07-02-2013, 10:35 PM ChipWarl.)
не знаю в каком разделе создавать) поэтому создам тут
в файле все итемы которые были добавлены в хрониках Lindvior (мб пригодиться кому то)
итемов более 1к
З.Ы проверка была с Glory Days по Lindvior
З.Ы.Ы модеры перенесите тему в соответствующую раздел
Сообщений: 1,065
Тем: 20
Зарегистрирован: Mar 2010
Репутация:
3,855
пхе... я то думал ты там что-то типа отгенеренных для серва хмлок выложил, а тут всего-то типа diff'а между itemname от глори и линдвиора - такое любой, ну почти любой, сделает за минут 5-10.
Сообщений: 256
Тем: 13
Зарегистрирован: Jul 2012
Репутация:
285
Gaikotsu Написал:пхе... я то думал ты там что-то типа отгенеренных для серва хмлок выложил, а тут всего-то типа diff'а между itemname от глори и линдвиора - такое любой, ну почти любой, сделает за минут 5-10.
хах выкладывать уже готовое?
Сообщений: 1,065
Тем: 20
Зарегистрирован: Mar 2010
Репутация:
3,855
ChipWarl Написал:хах выкладывать уже готовое? а смысла нет выкладывать хмлки, разве что и правда хочется поделиться + не было внесено в структуры данных что-то свое, в результате которого с наиболее распространенными сборками твоя "генеренка" уже не полностью совместима.
у меня вот к примеру именно так и обстоит с хмлками для тех же итемов - много чего по другому сделано или добавлено - так что даже если расшарю - это все народу придется серьезно переделывать под себя. а те кто могут это переделать - с той же легкостью и сами все с нуля сделают, т.е. сгенерят нужные данные по файлам клиента.
Сообщений: 466
Тем: 10
Зарегистрирован: Dec 2012
Репутация:
398
ChipWarl Написал:не знаю в каком разделе создавать) поэтому создам тут
в файле все итемы которые были добавлены в хрониках Lindvior (мб пригодиться кому то)
итемов более 1к
З.Ы проверка была с Glory Days по Lindvior
З.Ы.Ы модеры перенесите тему в соответствующую раздел
Хм, старания не напрасны) Мне как раз понадобится такой файлик, если там ВСЕ новые итемы, добавленные в Линдвиор.
Еще бы такой файлик, только со скиллами, ибо самому влом рыться
Открыть спойлер
OFFTOPICКстати! Есть такая прога, которая регенит xml`ки предметов и скиллов?
Сообщений: 1,065
Тем: 20
Зарегистрирован: Mar 2010
Репутация:
3,855
GooD Написал:Хм, старания не напрасны) Мне как раз понадобится такой файлик, если там ВСЕ новые итемы, добавленные в Линдвиор.
Еще бы такой файлик, только со скиллами, ибо самому влом рыться ну ты даешь блин... на том же пхп можно за пару минут написать скриптик, который сравнит одноименные клиентские файлы (итемнейм, скиллнейм и т.п.) от глори и линдвиора и выведет к примеру все строки что отсутствуют в файле от глори в отдельный файл.
З.Ы. и по генерации тоже все достаточно просто - тот же пхп тебе в руки и вперед. лично я так и делаю обычно при переходе с хроники на хронику - давным давно для своих нужд понаписал кучу разных скриптов для генерации и/или коррекции самых разных данных для серва и это очень облегчает мне жизнь.
правда учитывая что все это писалось чисто для себя - в этих скриптах кто-то другой без бутылки хрен разберется, да и с бутылкой тоже проблематично.
Открыть спойлер
К примеру вот генерилка для скиллов
[SRC="php"]<?
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>");
}
?>[/SRC]
Сообщений: 256
Тем: 13
Зарегистрирован: Jul 2012
Репутация:
285
Gaikotsu Написал:а смысла нет выкладывать хмлки, разве что и правда хочется поделиться + не было внесено в структуры данных что-то свое, в результате которого с наиболее распространенными сборками твоя "генеренка" уже не полностью совместима.
у меня вот к примеру именно так и обстоит с хмлками для тех же итемов - много чего по другому сделано или добавлено - так что даже если расшарю - это все народу придется серьезно переделывать под себя. а те кто могут это переделать - с той же легкостью и сами все с нуля сделают, т.е. сгенерят нужные данные по файлам клиента.
не ну заготовки под армор веапон etc я могу сделать.
статы народ пусть прикручивает сам)
Сообщений: 466
Тем: 10
Зарегистрирован: Dec 2012
Репутация:
398
07-03-2013, 05:12 PM
(Сообщение последний раз редактировалось: 07-04-2013, 01:39 PM Daan Raven.)
ChipWarl Написал:не ну заготовки под армор веапон etc я могу сделать.
статы народ пусть прикручивает сам) Не откажусь) Статы сам прикручивать буду, может выложу готовое уже... Когда нибудь
Добавлено через 3 часа 15 минут
Gaikotsu Написал:ну ты даешь блин... на том же пхп можно за пару минут написать скриптик, который сравнит одноименные клиентские файлы (итемнейм, скиллнейм и т.п.) от глори и линдвиора и выведет к примеру все строки что отсутствуют в файле от глори в отдельный файл.
З.Ы. и по генерации тоже все достаточно просто - тот же пхп тебе в руки и вперед. лично я так и делаю обычно при переходе с хроники на хронику - давным давно для своих нужд понаписал кучу разных скриптов для генерации и/или коррекции самых разных данных для серва и это очень облегчает мне жизнь.
правда учитывая что все это писалось чисто для себя - в этих скриптах кто-то другой без бутылки хрен разберется, да и с бутылкой тоже проблематично.
Открыть спойлер
К примеру вот генерилка для скиллов
[SRC="php"]<?
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>");
}
?>[/SRC]
Открыть спойлер
offtopicТак-сс, нашел как скомпилить А как его, собственно использовать? Нужно иметь в той же папке тхт-файлы скилгрп и скилл нейм + хмлка?
Добавлено через 20 часов 26 минут
Открыть спойлер
ItemsВот сделал почти все, касающиеся armor`а (не делал Железные сеты "60 дней") + скиллы к ним :3
_http://rghost.ru/private/47204494/cad283bf1dc2d19c097a4d2de45bff3f
_http://rghost.ru/private/47204546/133ad92e928bf61e82d0507fe0817c27
Пароль: zone-game.info
Сообщений: 1,065
Тем: 20
Зарегистрирован: Mar 2010
Репутация:
3,855
Открыть спойлер
offtopда не, там дофига еще чего надо иметь дополнительно - у меня там еще кучка самописных классов используется (чтение и загрузка в память клиентских данных в виде массивов, работа с бд, логгер и т.д.) за счет этих классов не приходится писать много однотипного кода в разных скриптах
Сообщений: 466
Тем: 10
Зарегистрирован: Dec 2012
Репутация:
398
Открыть спойлер
offtopКстати, кто поделится со мной текстовым файлом с ID, названием и описанием новых скиллов Glory Days > Lindvior? У меня как-то получилось, но несколько скиллов все таки прозевал. + У многих скиллов изменилось описание (мелочно, Glory Days - "Увеличивает вашу Физ. Атк. на ## %", Lindvior - "Физ. Атк, + ## %"). Если подкинете файлик, сделаю и скиллы + правки в ядре(возможно не все, как получится ).
|