02-01-2012, 01:26 PM
Так как из за работы у меня уже нету времени на Ла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;
}
}