Рейтинг темы:
  • 1 Голос(ов) - 1 в среднем
  • 1
  • 2
  • 3
  • 4
  • 5
Шара от ALFa
#1
Так как из за работы у меня уже нету времени на Ла2 я решил полностью забить на линейку)

Буду в шару вылаживать свои исходы)
Но не всё сразу)

Держите парсер Оружия для ГОДа

п.с. Кто знает - тот поймет как юзать
PHP код:
<?php 
package parser
;

import java.io.*;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Date;
import java.text.SimpleDateFormat;

import org.dom4j.Element;

import parser.model.ItemName;
import parser.model.ItemStatData;
/**
* Этот файл является интелектуальной собственностью
* Чипачнеко ALF Евгений
* Копипасниг запрещен!
*/
public class WeaponParser extends Parser
{
public static
HashMap<Integer, ItemName> _ItemName;
public static
HashMap<Integer, ItemStatData> _ItemStatData;
public static final
void main (String[] args)
{
System.out.println("WeaponParser: Init a Weapon parser....");
initialize("./data/stats/items/weapon");
System.out.println("WeaponParser: Init Hash map....");
_ItemName = new HashMap<Integer, ItemName>();
_ItemStatData = new HashMap<Integer, ItemStatData>();
System.out.println("WeaponParser: Init finish....");

System.out.println("WeaponParser: Try to loading weapon txt ");
loadItemStatData();
loadItemName();
loadWeaponGrp();
}

private static
void loadItemName()
{
LineNumberReader lnr = null;
try
{
File snData = new File("./itemname-e.txt");
lnr = new LineNumberReader(new BufferedReader(new FileReader(snData)));

String line = null;
while((
line = lnr.readLine()) != null)
{
if(
line.trim().length() == 0 || line.startsWith("#"))
continue;

String args[] = line.split("\t", -1);
int _id = Integer.parseInt(args[0]);
String _name = args[1];
String _add_name = args[2];
String _description = args[3];
_ItemName.put(_id, new ItemName(_id, _name, _add_name, _description));
}

System.out.println("WeaponParser: Loaded " + _ItemName.size() + " Item names.");
}
catch(
FileNotFoundException e)
{
System.out.println("ItemName-e.txt is missing in data folder");
}
catch(
Exception e)
{
System.out.println("error while creating ItemName table " + e);
}
finally
{
try
{
if(
lnr != null)
lnr.close();
}
catch(
Exception e1)
{}
}
}

private static
void loadItemStatData()
{
LineNumberReader lnr = null;
try
{
File snData = new File("./ItemStatData.txt");
lnr = new LineNumberReader(new BufferedReader(new FileReader(snData)));

String line = null;
while((
line = lnr.readLine()) != null)
{
if(
line.trim().length() == 0 || line.startsWith("#"))
continue;

String args[] = line.split("\t", -1);

int _id = Integer.parseInt(args[0]);
float pdef = Float.parseFloat(args[1]);
float mdef = Float.parseFloat(args[2]);
float patt = Float.parseFloat(args[3]);
float matt = Float.parseFloat(args[4]);
float unk_1 = Float.parseFloat(args[5]);
float speed = Float.parseFloat(args[6]);
float avoid_mod = Float.parseFloat(args[7]);
float unk_2 = Float.parseFloat(args[8]);
float critical = Float.parseFloat(args[9]);
float unk_3 = Float.parseFloat(args[10]);
float unk_4 = Float.parseFloat(args[11]);
float shield_pdef = Float.parseFloat(args[12]);
float shield_rate = Float.parseFloat(args[13]);
float hit_mod = Float.parseFloat(args[14]);
float unk_5 = Float.parseFloat(args[15]);
_ItemStatData.put(_id, new ItemStatData(_id, pdef, mdef, patt,matt,speed,avoid_mod,critical,shield_pdef,shield_rate,hit_mod));
}

System.out.println("WeaponParser: Loaded " + _ItemStatData.size() + " Item Stats Dara.");
}
catch(
FileNotFoundException e)
{
System.out.println("ItemName-e.txt is missing in data folder");
}
catch(
Exception e)
{
System.out.println("error while creating ItemName table " + e);
}
finally
{
try
{
if(
lnr != null)
lnr.close();
}
catch(
Exception e1)
{}
}
}
private static
void loadWeaponGrp()
{
LineNumberReader lnr = null;
try
{
File snData = new File("./weapongrp.txt");
lnr = new LineNumberReader(new BufferedReader(new FileReader(snData)));

String line = null;
while((
line = lnr.readLine()) != null)
{
if(
line.trim().length() == 0 || line.startsWith("#"))
continue;

String args[] = line.split("\t", -1);

String _id = args[1];
Element list = getListByItemId(Integer.parseInt(_id));
Element weapon = list.addElement("weapon");

weapon.addComment("Done By ALF (c)L2-WT");
String iName = _ItemName.get(Integer.parseInt(_id)).name;
weapon.addAttribute("id", _id);
weapon.addAttribute("name", iName);
String _addn = _ItemName.get(Integer.parseInt(_id)).add_name;
if(!
_addn.isEmpty())
{
addSet(weapon, "additional_name", _addn);
}

addSet(weapon, "icon", args[22]);

if(
Long.parseLong(args[27]) != -1)
addSet(weapon, "durability", args[27]);

if(
Integer.parseInt(args[28]) > 0)
addSet(weapon, "weight", args[28]);

int POS = 0;

for(
int i = 40; i < 100; i++)
{
if (
args[i].startsWith("ItemSound.itemequip"))
POS = i;
}

int rnd_dam = Integer.parseInt(args[POS+2]);
if (
rnd_dam > 0)
addSet(weapon, "rnd_dam", args[POS+2]);


String wpType = getWeaponTypeById(Integer.parseInt(args[POS+3]));

if (
wpType.contains("DUAL")
||
wpType.contains("DUALFIST")
||
wpType.contains("ANCIENTSWORD")
||
wpType.contains("DUALDAGGER")
||
wpType.contains("DUALBLUNT")
||
wpType.contains("DUALBLUNT")
||
iName.contains("Эспадон")
)
addSet(weapon, "bodypart", "LRHAND");
else if (
wpType.contains("NONE"))
addSet(weapon, "bodypart", "LHAND");
else
addSet(weapon, "bodypart", "RHAND");

if (
iName.contains("Эспадон"))
weapon.addAttribute("type", "BIGSWORD");
else
weapon.addAttribute("type", wpType);


if (!
getGrade(Integer.parseInt(args[POS+4])).equalsIgnoreCase("none"))
{
addSet(weapon, "crystal_type", getGrade(Integer.parseInt(args[POS+4])));
addSet(weapon, "crystal_count", "3562");
}

if(
Integer.parseInt(args[POS+5]) > 0)
addSet(weapon, "mp_consume", args[POS+5]);

if(
Integer.parseInt(args[POS+6]) > 0)
addSet(weapon, "soulshots", args[POS+6]);
if(
Integer.parseInt(args[POS+7]) > 0)
addSet(weapon, "spiritshots", args[POS+7]);

int itemId = Integer.parseInt(_id);
int _patk = _ItemStatData.get(itemId).patt;
if(
_patk > 0)
addSet(weapon, "p_dam", Integer.toString(_patk));

if(
_ItemStatData.get(itemId).matt > 0)
addSet(weapon, "m_dam", Integer.toString(_ItemStatData.get(itemId).matt));

if(
_ItemStatData.get(itemId).speed > 0)
addSet(weapon, "atk_speed", Integer.toString(_ItemStatData.get(itemId).speed));

if(
_ItemStatData.get(itemId).critical > 0)
addSet(weapon, "critical", Integer.toString(_ItemStatData.get(itemId).critical));

if(
_ItemStatData.get(itemId).hit_mod > 0)
addSet(weapon, "hit_modify", Integer.toString(_ItemStatData.get(itemId).hit_mod));

if(
_ItemStatData.get(itemId).avoid_mod > 0)
addSet(weapon, "avoid_modify", Integer.toString(_ItemStatData.get(itemId).avoid_mod));

if(
_ItemStatData.get(itemId).shield_pdef > 0)
addSet(weapon, "shield_def", Integer.toString(_ItemStatData.get(itemId).shield_pdef));

if(
_ItemStatData.get(itemId).shield_rate > 0)
addSet(weapon, "shield_def_rate", Integer.toString(_ItemStatData.get(itemId).shield_rate));

if(
_addn.length() > 2 && !_addn.isEmpty())
{
addSet(weapon, "isSa", "true");

String Skillsn = getSkillIdByAddName(_addn);
if(
Skillsn.length() > 3 && !Skillsn.startsWith("0"))
{
Element skills = weapon.addElement("skills");
String[] SAskills = Skillsn.split("\\;");
for (
String SAS : SAskills)
{
String[] SkillArgs = SAS.split("\\-");
skills.addElement("skill").addAttribute("id", SkillArgs[0]).addAttribute("lvl", SkillArgs[1]);
}

}
}

}
saveAll("./data/stats/items/weapon/", "\t", true);

}
catch(
FileNotFoundException e)
{
System.out.println("skillgrp.txt is missing in data folder");
}
catch(
Exception e)
{
System.out.println("error while creating skillgrp table " + e);
}
finally
{
try
{
if(
lnr != null)
lnr.close();
}
catch(
Exception e1)
{}
}
}

private static
String getWeaponTypeById(int _id)
{
switch(
_id)
{
case
0:
return
"NONE";
case
1:
return
"SWORD";
case
2:
return
"BLUNT";
case
3:
return
"DAGGER";
case
4:
return
"POLE";
case
5:
return
"DUALFIST";
case
6:
return
"BOW";
case
7:
return
"ETC";
case
8:
return
"DUAL";
case
11:
return
"RAPIER";
case
12:
return
"CROSSBOW";
case
13:
return
"ANCIENTSWORD";
case
15:
return
"DUALDAGGER";
case
17:
return
"CROSSBOW";
case
18:
return
"DUALBLUNT";
}
return
"ERROR";
}

private static
String getGrade(int _id)
{
switch(
_id)
{
case
1:
return
"D";
case
2:
return
"C";
case
3:
return
"B";
case
4:
return
"A";
case
5:
return
"S";
case
6:
return
"S80";
case
7:
return
"S84";
case
8:
return
"R";
case
9:
return
"R95";
case
10:
return
"R99";
}
return
"none";
}

private static
String getSkillIdByAddName(String name2)
{
String[] args = name2.split(" \\+ ");
String result = "";
if (
args != null)
{
for (
String name : args)
{
if (
name.startsWith("Наведение"))
result += "3008-6;";
if (
name.startsWith("Ускорение"))
result += "8297-1;";
if (
name.startsWith("Фокусировка"))
result += "8289-1;";
//if (name.startsWith("Увелич. Урона"))
// result += "8297-1;";
if (name.startsWith("Крит. Урон"))
result += "3572-2;";
//if (name.startsWith("Радиус Удара"))
// result += "8297-1;";
if (name.startsWith("Проницательность"))
result += "3047-3;";
if (
name.startsWith("Поглощение HP"))
result += "3602-10;";
//if (name.startsWith("Магические Оковы"))
// result += "8297-1;";
if (name.startsWith("Добавление Маны"))
result += "3014-3;";
if (
name.startsWith("Воодушевление"))
result += "3575-2;";
if (
name.startsWith("Здоровье"))
result += "3013-5;";
}
}
System.out.println(result);
return
result;
}
}
Ответ
#2
import parser.model.ItemName;
import parser.model.ItemStatData;

а эти 2 файла выложить?
Ответ
#3
linliss Написал:import parser.model.ItemName;
import parser.model.ItemStatData;

а эти 2 файла выложить?

PHP код:
<?php 
package parser
.model;

/**
* Этот файл является интелектуальной собственностью
* Чипачнеко ALF Евгений
* Копипасниг запрещен!
*/

public class ItemName
{
public
int id = 0;
public
String name = "";
public
String add_name = "";
public
String description = "";
public
ItemName(int _id, String _name, String _add_name, String _description)
{
id = id;
name = _name;
add_name = _add_name;
description = _description;
}
}


PHP код:
<?php 
package parser
.model;

/**
* Этот файл является интелектуальной собственностью
* Чипачнеко ALF Евгений
* Копипасниг запрещен!
*/

public class ItemStatData
{
public
int id = 0;
public
int pdef = 0, mdef = 0, patt = 0, matt = 0, speed = 0, avoid_mod = 0, critical = 0, shield_pdef = 0, shield_rate = 0, hit_mod = 0;

public
ItemStatData(int _id, float _pdef, float _mdef, float _patt, float _matt, float _speed, float _avoid_mod, float _critical,float _shield_pdef, float _shield_rate, float _hit_mod)
{
id = _id;
pdef = (int) _pdef;
mdef = (int) _mdef;
patt = (int) _patt;
matt = (int) _matt;
speed = (int) _speed;
avoid_mod = (int) _avoid_mod;
critical = (int) _critical;
shield_pdef = (int) _shield_pdef;
shield_rate = (int) _shield_rate;
hit_mod = (int) _hit_mod;
}
}

Добавлено через 31 минуту
PHP код:
<?php 
package parser
;

import org.dom4j.Document;
import org.dom4j.DocumentFactory;
import org.dom4j.Element;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.XMLWriter;

import java.io.*;
import java.util.concurrent.ConcurrentHashMap;
import java.util.logging.LogManager;
import java.util.logging.Logger;

/**
* @author : Ragnarok
* @date : 02.01.11 15:52
*/
public class Parser {
private static
Logger log = Logger.getLogger(Parser.class.getName());
public static
ConcurrentHashMap<Integer, Document> map = new ConcurrentHashMap<Integer, Document>();

protected static
void initialize(String pathToDelete) {
String LOG_FOLDER = "log";
String LOG_NAME = "./config/log.properties";

File logFolder = new File("./", LOG_FOLDER);
logFolder.mkdir();

InputStream is = null;
try {
is = new FileInputStream(new File(LOG_NAME));
LogManager.getLogManager().readConfiguration(is);
is.close();
} catch (
IOException e) {
e.printStackTrace();
} finally {
try {
if (
is != null)
is.close();
} catch (
IOException e) {
e.printStackTrace();
}
}
if(
pathToDelete != null)
for (
File file : (new File(pathToDelete)).listFiles())
if(
file.getName().endsWith(".xml"))
file.delete();
for (
int i = 100000; i >= 0; i -= 100) {
Document doc = DocumentFactory.getInstance().createDocument();
map.put(i, doc);
}
}

protected static
Element addSet(Element e, String name, Object val) {
Element set = e.addElement("set");
set.addAttribute("name", name);
set.addAttribute("value", val.toString());
return
set;
}

protected static
Element addSet(Element e, String name, Object Order, Object val) {
Element set = e.addElement("set");
set.addAttribute("stat", name);
set.addAttribute("order", Order.toString());
set.addAttribute("value", val.toString());
return
set;
}
protected static
Element addAdd(Element e, String name, Object Order, Object val) {
Element set = e.addElement("add");
set.addAttribute("stat", name);
set.addAttribute("order", Order.toString());
set.addAttribute("value", val.toString());
return
set;
}

protected static
String getName(int i) {
String name1 = String.valueOf(i);
String name2 = String.valueOf(i + 99);
// Закоментировал для сборки OwerWorld не используется
/* while (name1.length() < 5)
name1 = "0" + name1;
while (name2.length() < 5)
name2 = "0" + name2;*/
return name1 + "-" + name2;
}

protected static
Element getListByItemId(int item_id) {
for (
int i = 100000; i >= 0; i -= 100) {
if (
item_id >= i) {
if (
map.get(i).getRootElement() == null) {
Element list = map.get(i).addElement("list");
map.get(i).setRootElement(list);
}
return
map.get(i).getRootElement();
}
}
return
null;
}

protected static
void saveAll(String dir, String indent, boolean newlines) throws IOException {
for (
int i : map.keySet()) {
if (
map.get(i).getRootElement() == null || map.get(i).getRootElement().elements().size() == 0)
continue;
File out = new File(dir + getName(i) + ".xml");
//log.info(out.getPath());
out.createNewFile();
OutputFormat of = new OutputFormat(indent, newlines);
XMLWriter writer = new XMLWriter(new FileWriter(out), of);
writer.write(map.get(i));
writer.flush();
writer.close();
}
}
}
Ответ
#4
Сори за некропостинг, но может кто-нибудь поможет решить проблемку скомпилил выдает ошибку, знания JAVA на уровне начинающего так что сильно не ругайте:o
Код:
error while creating ItemName table java.lang.NumberFormatException: For input string: "id"
error while creating ItemName table java.lang.NumberFormatException: For input string: "id"
error while creating skillgrp table java.lang.NullPointerException: For input string: "id"
Ответ
#5
PSIH512 Написал:Сори за некропостинг, но может кто-нибудь поможет решить проблемку скомпилил выдает ошибку, знания JAVA на уровне начинающего так что сильно не ругайте:o
Код:
error while creating ItemName table java.lang.NumberFormatException: For input string: "id"
error while creating ItemName table java.lang.NumberFormatException: For input string: "id"
error while creating skillgrp table java.lang.NullPointerException: For input string: "id"

Удали первую строку в файле там где данные
Ответ
#6
Пробовал пишет
Код:
WeaponParser: Init a Weapon parser....
WeaponParser: Init Hash map....
WeaponParser: Init finish....
WeaponParser: Try to loading weapon txt
error while creating ItemName table java.lang.NumberFormatException: For input string: "1"
error while creating ItemName table java.lang.NumberFormatException: For input string: "17"
error while creating weapongrp table java.lang.NullPointerException

Может я эти файлы не так получил я взял FileEdit открыл файлы itemname-e.dat weapongrp.dat itemstatdata.dat и сохранил в txt формате
Ответ
#7
Ну кто-нибудь помогите разобратся в чем проблема?
Ответ
#8
у всех файлов удали 1вые строки, так как в ФайлЕдит первая строка это структура.

или каждому try добавь:

Код:
catch(NumberFormatException e)
        {
            System.out.println(e.getMessage());
        }
Ответ
#9
Решил проблему сменой кодировки файлов с UTF-8 на UTF-8(без BOM)
Ответ
#10
могу выложить тот же парсер, но полную версию, это парсеры: армор, пухи, етц, скилы, оптионы, рецепты, райд спаун, нпц.
и ещё нпц скилл

если конечно ТС не против=)))

Добавлено через 3 часа 12 минут
как только ТС напишет что можно выложить я дам ссылку
Ответ


Возможно похожие темы ...
Тема Автор Ответы Просмотры Последний пост
  [Шара] Lin][info 2.0 Gaikotsu 9 5,732 03-20-2024, 10:33 AM
Последний пост: nache
  Шара: исходники сборки l2gw (HF) rage 326 143,074 04-18-2021, 06:26 PM
Последний пост: kpNemo
  [Шара] Полный пак всех html (RU\ENG) с off сервера. L2CCCP 20 10,604 01-19-2021, 12:41 AM
Последний пост: Esferol
  ШАРА: Grind-Team RvR High Five SongSing 14 12,491 01-02-2019, 11:45 AM
Последний пост: X1oN
  Шара. Pain-team 14 Holsten 12 7,862 08-13-2017, 11:56 AM
Последний пост: iLee
  Шара сборки L2j-dev за 31.01.2016 Survial 63 27,353 07-08-2017, 03:28 PM
Последний пост: GoGLiK
  Шара сборки L2j-dev за 23.06.2016 GoGLiK 35 14,242 06-13-2017, 08:30 AM
Последний пост: acidman
  шара шар исходники interlude highfive Rivskoy 1 2,566 06-01-2017, 08:18 PM
Последний пост: Rivskoy
  [Шара] Исходники и Сборка GvE сервера Альянс против Империи xevilx 21 10,741 02-14-2017, 06:38 AM
Последний пост: FaintSmile
  Шара: Lucera 2 (actual source) Ro_0TT 142 85,426 08-05-2016, 11:24 PM
Последний пост: Emperor

Перейти к форуму:


Пользователи, просматривающие эту тему: 1 Гость(ей)