Follow along with the video below to see how to install our site as a web app on your home screen.
Примечание: This feature may not be available in some browsers.
Интересно, хоть 1 наезд на них они опровергнут?
К сожалению нам дали понять что наши комментарии тут не уместны, по этому, продолжайте заниматься вещами которые вы умеете делать лучше всего
Я скажу опять-же, как менеджер именно который занимается людьми не с СНГ регионов что именно классик - большинство довольны качеством.
Доказывать участников "спора" - нечего, вас ничего не убедит в обратном, по этому мы будем молчать дальше.
Успехов.
вот ответ тебе примерНе хочу становиться ни на чью сторону, но давайте посмотрим на сервера: большАя доля из них стоят на эмуле скриптов, какая-то часть - ритейл, пара-троечка на эмулях каких-то ноунеймов, а бОльшая часть вообще на пвсофте. Потом на счет копипасты: на дворе не век перфокарт, есть множество исходников в свободном и не в свободном доступе, всяческих библиотек и т.п. Суть программирования в основном в том, чтобы не изобретать по 100 раз один и тот же велосипед, а делать болеекостыльныйнавороченный, используя при этоммаксимум костылейминимум усилий, пусть даже взяв за основу какой-то другой велосипед. Если судить как вы, то тут должны ребята из лыжи всех говнить мол чего спиздили наши исходники.
P.S.: Небось половину из тех, кто говнит скриптов, можно спросить мол "почему ты так о них думаешь", а он в ответ "та мне там чел сказал". Человеки из толпы...
package l2s.gameserver.data.xml.parser;
import java.io.File;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import org.dom4j.Element;
import l2s.commons.collections.MultiValueSet;
import l2s.commons.data.xml.AbstractDirParser;
import l2s.commons.geometry.Circle;
import l2s.commons.geometry.Polygon;
import l2s.commons.geometry.Rectangle;
import l2s.gameserver.Config;
import l2s.gameserver.data.xml.holder.SpawnHolder;
import l2s.gameserver.model.Territory;
import l2s.gameserver.templates.StatsSet;
import l2s.gameserver.templates.spawn.PeriodOfDay;
import l2s.gameserver.templates.spawn.SpawnNpcInfo;
import l2s.gameserver.templates.spawn.SpawnTemplate;
import l2s.gameserver.utils.Location;
/**
* @author VISTALL
* @date 18:38/10.12.2010
*/
public final class SpawnParser extends AbstractDirParser<SpawnHolder>
{
private static final SpawnParser _instance = new SpawnParser();
public static SpawnParser getInstance()
{
return _instance;
}
protected SpawnParser()
{
super(SpawnHolder.getInstance());
}
@Override
public File getXMLDir()
{
return new File(Config.DATAPACK_ROOT, "data/spawn/");
}
@Override
public boolean isIgnored(File f)
{
return false;
}
@Override
protected void readData(Element rootElement) throws Exception
{
Map<String, Territory> territories = new HashMap<String, Territory>();
for(Iterator<Element> spawnIterator = rootElement.elementIterator(); spawnIterator.hasNext();)
{
Element spawnElement = spawnIterator.next();
if(spawnElement.getName().equalsIgnoreCase("territory"))
{
String terName = spawnElement.attributeValue("name");
Territory territory = parseTerritory(terName, spawnElement);
territories.put(terName, territory);
}
else if(spawnElement.getName().equalsIgnoreCase("spawn"))
{
String group = spawnElement.attributeValue("group");
String name = spawnElement.attributeValue("name") == null ? (group == null ? "" : group) : spawnElement.attributeValue("name");
int respawn = spawnElement.attributeValue("respawn") == null ? 60 : Integer.parseInt(spawnElement.attributeValue("respawn"));
int respawnRandom = spawnElement.attributeValue("respawn_random") == null ? 0 : Integer.parseInt(spawnElement.attributeValue("respawn_random"));
int count = spawnElement.attributeValue("count") == null ? 1 : Integer.parseInt(spawnElement.attributeValue("count"));
PeriodOfDay periodOfDay = spawnElement.attributeValue("period_of_day") == null ? PeriodOfDay.NONE : PeriodOfDay.valueOf(spawnElement.attributeValue("period_of_day").toUpperCase());
if(group == null)
group = periodOfDay.name();
SpawnTemplate template = new SpawnTemplate(name, periodOfDay, count, respawn, respawnRandom);
for(Iterator<Element> subIterator = spawnElement.elementIterator(); subIterator.hasNext();)
{
Element subElement = subIterator.next();
if(subElement.getName().equalsIgnoreCase("point"))
{
int x = Integer.parseInt(subElement.attributeValue("x"));
int y = Integer.parseInt(subElement.attributeValue("y"));
int z = Integer.parseInt(subElement.attributeValue("z"));
int h = subElement.attributeValue("h") == null ? -1 : Integer.parseInt(subElement.attributeValue("h"));
template.addSpawnRange(new Location(x, y, z, h));
}
else if(subElement.getName().equalsIgnoreCase("rectangle"))
{
int x1 = Integer.parseInt(subElement.attributeValue("x1"));
int y1 = Integer.parseInt(subElement.attributeValue("y1"));
int x2 = Integer.parseInt(subElement.attributeValue("x2"));
int y2 = Integer.parseInt(subElement.attributeValue("y2"));
int zmin = Integer.parseInt(subElement.attributeValue("zmin"));
int zmax = Integer.parseInt(subElement.attributeValue("zmax"));
Rectangle rectangle = new Rectangle(x1, y1, x2, y2);
rectangle.setZmin(zmin);
rectangle.setZmax(zmax);
Territory territory = new Territory();
territory.add(rectangle);
template.addSpawnRange(territory);
}
else if(subElement.getName().equalsIgnoreCase("circle"))
{
int x = Integer.parseInt(subElement.attributeValue("x"));
int y = Integer.parseInt(subElement.attributeValue("y"));
int zmin = Integer.parseInt(subElement.attributeValue("zmin"));
int zmax = Integer.parseInt(subElement.attributeValue("zmax"));
int radius = Integer.parseInt(subElement.attributeValue("radius"));
Circle circle = new Circle(x, y, radius);
circle.setZmin(zmin);
circle.setZmax(zmax);
Territory territory = new Territory();
territory.add(circle);
template.addSpawnRange(territory);
}
else if(subElement.getName().equalsIgnoreCase("territory"))
{
String terName = subElement.attributeValue("name");
if(terName != null)
{
Territory g = territories.get(terName);
if(g == null)
{
error("Invalid territory name: " + terName + "; " + getCurrentFileName());
continue;
}
template.addSpawnRange(g);
}
else
{
Territory temp = parseTerritory(null, subElement);
template.addSpawnRange(temp);
}
}
else if(subElement.getName().equalsIgnoreCase("npc"))
{
int npcId = Integer.parseInt(subElement.attributeValue("id"));
int max = subElement.attributeValue("max") == null ? 0 : Integer.parseInt(subElement.attributeValue("max"));
MultiValueSet<String> parameters = StatsSet.EMPTY;
for(Element e : subElement.elements())
{
if(parameters.isEmpty())
parameters = new MultiValueSet<String>();
parameters.set(e.attributeValue("name"), e.attributeValue("value"));
}
template.addNpc(new SpawnNpcInfo(npcId, max, parameters));
}
}
if(template.getNpcSize() == 0)
{
warn("Npc id is zero! File: " + getCurrentFileName());
continue;
}
if(template.getSpawnRangeSize() == 0)
{
warn("No points to spawn! File: " + getCurrentFileName());
continue;
}
getHolder().addSpawn(group, template);
}
}
}
private Territory parseTerritory(String name, Element e)
{
Territory t = new Territory();
t.add(parsePolygon0(name, e));
for(Iterator<Element> iterator = e.elementIterator("banned_territory"); iterator.hasNext();)
t.addBanned(parsePolygon0(name, iterator.next()));
return t;
}
private Polygon parsePolygon0(String name, Element e)
{
Polygon temp = new Polygon();
for(Iterator<Element> addIterator = e.elementIterator("add"); addIterator.hasNext();)
{
Element addElement = addIterator.next();
int x = Integer.parseInt(addElement.attributeValue("x"));
int y = Integer.parseInt(addElement.attributeValue("y"));
int zmin = Integer.parseInt(addElement.attributeValue("zmin"));
int zmax = Integer.parseInt(addElement.attributeValue("zmax"));
temp.add(x, y).setZmin(zmin).setZmax(zmax);
}
if(!temp.validate())
error("Invalid polygon: " + name + "{" + temp + "}. File: " + getCurrentFileName());
return temp;
}
}
Это мне должно было что-то сказать? оОвот ответ тебе пример
Код:package l2s.gameserver.data.xml.parser; import java.io.File; import java.util.HashMap; import java.util.Iterator; import java.util.Map; import org.dom4j.Element; import l2s.commons.collections.MultiValueSet; import l2s.commons.data.xml.AbstractDirParser; import l2s.commons.geometry.Circle; import l2s.commons.geometry.Polygon; import l2s.commons.geometry.Rectangle; import l2s.gameserver.Config; import l2s.gameserver.data.xml.holder.SpawnHolder; import l2s.gameserver.model.Territory; import l2s.gameserver.templates.StatsSet; import l2s.gameserver.templates.spawn.PeriodOfDay; import l2s.gameserver.templates.spawn.SpawnNpcInfo; import l2s.gameserver.templates.spawn.SpawnTemplate; import l2s.gameserver.utils.Location; /** * @author VISTALL * @date 18:38/10.12.2010 */ public final class SpawnParser extends AbstractDirParser<SpawnHolder> { private static final SpawnParser _instance = new SpawnParser(); public static SpawnParser getInstance() { return _instance; } protected SpawnParser() { super(SpawnHolder.getInstance()); } @Override public File getXMLDir() { return new File(Config.DATAPACK_ROOT, "data/spawn/"); } @Override public boolean isIgnored(File f) { return false; } @Override protected void readData(Element rootElement) throws Exception { Map<String, Territory> territories = new HashMap<String, Territory>(); for(Iterator<Element> spawnIterator = rootElement.elementIterator(); spawnIterator.hasNext();) { Element spawnElement = spawnIterator.next(); if(spawnElement.getName().equalsIgnoreCase("territory")) { String terName = spawnElement.attributeValue("name"); Territory territory = parseTerritory(terName, spawnElement); territories.put(terName, territory); } else if(spawnElement.getName().equalsIgnoreCase("spawn")) { String group = spawnElement.attributeValue("group"); String name = spawnElement.attributeValue("name") == null ? (group == null ? "" : group) : spawnElement.attributeValue("name"); int respawn = spawnElement.attributeValue("respawn") == null ? 60 : Integer.parseInt(spawnElement.attributeValue("respawn")); int respawnRandom = spawnElement.attributeValue("respawn_random") == null ? 0 : Integer.parseInt(spawnElement.attributeValue("respawn_random")); int count = spawnElement.attributeValue("count") == null ? 1 : Integer.parseInt(spawnElement.attributeValue("count")); PeriodOfDay periodOfDay = spawnElement.attributeValue("period_of_day") == null ? PeriodOfDay.NONE : PeriodOfDay.valueOf(spawnElement.attributeValue("period_of_day").toUpperCase()); if(group == null) group = periodOfDay.name(); SpawnTemplate template = new SpawnTemplate(name, periodOfDay, count, respawn, respawnRandom); for(Iterator<Element> subIterator = spawnElement.elementIterator(); subIterator.hasNext();) { Element subElement = subIterator.next(); if(subElement.getName().equalsIgnoreCase("point")) { int x = Integer.parseInt(subElement.attributeValue("x")); int y = Integer.parseInt(subElement.attributeValue("y")); int z = Integer.parseInt(subElement.attributeValue("z")); int h = subElement.attributeValue("h") == null ? -1 : Integer.parseInt(subElement.attributeValue("h")); template.addSpawnRange(new Location(x, y, z, h)); } else if(subElement.getName().equalsIgnoreCase("rectangle")) { int x1 = Integer.parseInt(subElement.attributeValue("x1")); int y1 = Integer.parseInt(subElement.attributeValue("y1")); int x2 = Integer.parseInt(subElement.attributeValue("x2")); int y2 = Integer.parseInt(subElement.attributeValue("y2")); int zmin = Integer.parseInt(subElement.attributeValue("zmin")); int zmax = Integer.parseInt(subElement.attributeValue("zmax")); Rectangle rectangle = new Rectangle(x1, y1, x2, y2); rectangle.setZmin(zmin); rectangle.setZmax(zmax); Territory territory = new Territory(); territory.add(rectangle); template.addSpawnRange(territory); } else if(subElement.getName().equalsIgnoreCase("circle")) { int x = Integer.parseInt(subElement.attributeValue("x")); int y = Integer.parseInt(subElement.attributeValue("y")); int zmin = Integer.parseInt(subElement.attributeValue("zmin")); int zmax = Integer.parseInt(subElement.attributeValue("zmax")); int radius = Integer.parseInt(subElement.attributeValue("radius")); Circle circle = new Circle(x, y, radius); circle.setZmin(zmin); circle.setZmax(zmax); Territory territory = new Territory(); territory.add(circle); template.addSpawnRange(territory); } else if(subElement.getName().equalsIgnoreCase("territory")) { String terName = subElement.attributeValue("name"); if(terName != null) { Territory g = territories.get(terName); if(g == null) { error("Invalid territory name: " + terName + "; " + getCurrentFileName()); continue; } template.addSpawnRange(g); } else { Territory temp = parseTerritory(null, subElement); template.addSpawnRange(temp); } } else if(subElement.getName().equalsIgnoreCase("npc")) { int npcId = Integer.parseInt(subElement.attributeValue("id")); int max = subElement.attributeValue("max") == null ? 0 : Integer.parseInt(subElement.attributeValue("max")); MultiValueSet<String> parameters = StatsSet.EMPTY; for(Element e : subElement.elements()) { if(parameters.isEmpty()) parameters = new MultiValueSet<String>(); parameters.set(e.attributeValue("name"), e.attributeValue("value")); } template.addNpc(new SpawnNpcInfo(npcId, max, parameters)); } } if(template.getNpcSize() == 0) { warn("Npc id is zero! File: " + getCurrentFileName()); continue; } if(template.getSpawnRangeSize() == 0) { warn("No points to spawn! File: " + getCurrentFileName()); continue; } getHolder().addSpawn(group, template); } } } private Territory parseTerritory(String name, Element e) { Territory t = new Territory(); t.add(parsePolygon0(name, e)); for(Iterator<Element> iterator = e.elementIterator("banned_territory"); iterator.hasNext();) t.addBanned(parsePolygon0(name, iterator.next())); return t; } private Polygon parsePolygon0(String name, Element e) { Polygon temp = new Polygon(); for(Iterator<Element> addIterator = e.elementIterator("add"); addIterator.hasNext();) { Element addElement = addIterator.next(); int x = Integer.parseInt(addElement.attributeValue("x")); int y = Integer.parseInt(addElement.attributeValue("y")); int zmin = Integer.parseInt(addElement.attributeValue("zmin")); int zmax = Integer.parseInt(addElement.attributeValue("zmax")); temp.add(x, y).setZmin(zmin).setZmax(zmax); } if(!temp.validate()) error("Invalid polygon: " + name + "{" + temp + "}. File: " + getCurrentFileName()); return temp; } }
мда парень ты не вкурсе что данный исход делано VISTALL и он основател и не как лыжаЭто мне должно было что-то сказать? оО
В ответ на твой ответ:
Вы не можете просматривать ссылку пожалуйста воспользуйтесь следующими ссылками Вход или Регистрация
Юзается в ~99% исходников. По ссылке тот самый mmocore лыжи за 6 мая 2007. Потом они выпустили обновление, где начали юзать свои NIO-буфферы - обана - сразу пошли изменения и в других исходниках.
Ну судя по javadoc-комменту я это то понял. Ну и что? Выделенное не понял.мда парень ты не вкурсе что данный исход делано VISTALL и он основател и не как лыжа
походу ты не понял что к чему если бы не VISTALL то они бы так бы и сосасй лыжы да у витал есть косяки но это уже другае история и да о нем не кто плохово не пишит так что лыжа лесом и скрипт кто у нас личер VISTALL или ониНу судя по javadoc-комменту я это то понял. Ну и что? Выделенное не понял.
Я тебя с трудом понимаю. И то не уверен, что правильно...походу ты не понял что к чему если бы не VISTALL то они бы так бы и сосасй лыжы да у витал есть косяки но это уже другае история и да о нем не кто плохово не пишит так что лыжа лесом и скрипт кто у нас личер VISTALL или они
и того когда я правду написал даже пример перевел я в минус ушоль что мне все равно пуст будет как есть что тольку говорит если так и есть и да вы говорите за тех который за вас людей не читает скрипт это гомно одним слово п--ры и ш----и а по чет лыжы это уже другая история так что ты этим что ты доказал про даже ты не мог пример перести уважаемый Infernal Ashes ток может лесом или как да кстати я не проф я любитель
с тобой все ясно ты один из зомбаков который не поняль и вериш что у лыжи и скрыпты все по офу и они не личеры и да при чем это Я привел пример с модулем сети, который юзается в ЛС и ГС 99% эмулей и который написал челик из лыжи тогда я другое писал мне тя жаль что ты такой найвный и да мне п-х на рус так как сори родитса таким как пишу сори так и естьЯ тебя с трудом понимаю. И то не уверен, что правильно...
Я привел пример с модулем сети, который юзается в ЛС и ГС 99% эмулей и который написал челик из лыжи. И это сделал я к тому, чтобы показать, что использовать чужой код - вполне обыденно. Не скриптов проблема, что они на этом зарабатывают, а ты нет!
только не говори что ты хохолс тобой все ясно ты один из зомбаков который не поняль и вериш что у лыжи и скрыпты все по офу и они не личеры и да при чем это Я привел пример с модулем сети, который юзается в ЛС и ГС 99% эмулей и который написал челик из лыжи тогда я другое писал мне тя жаль что ты такой найвный и да мне п-х на рус так как сори родитса таким как пишу сори так и есть
сори я не хохол я русс просто реально 5 лет отдал на логопед а тольку ноль уж извени менятолько не говори что ты хохол
Ты как Хокинг через речевой апарат тексты набираешь, или к чему тут логопед вообще?сори я не хохол я русс просто реально 5 лет отдал на логопед а тольку ноль уж извени меня
ты походу не был у логопеды я сражу скажу тебе что человек вопринятией по слуху очень плох по речю и писанию если что если он не поняль слово жигурда то он будет говорит жигурда или еще пример тебе перевеститТы как Хокинг через речевой апарат тексты набираешь, или к чему тут логопед вообще?Логопед занимается исправлением дефектов речи, произношения букв и тд., так что ты 5 лет потратил не туда, нужно было на учителя русского языка 5 лет жахнуть
нет, ненужно, пожалуйстаты походу не был у логопеды я сражу скажу тебе что человек вопринятией по слуху очень плох по речю и писанию если что если он не поняль слово жигурда то он будет говорит жигурда или еще пример тебе перевестит
вот и хорошонет, ненужно, пожалуйста