Shema Написал:Я так понял по этому патчу можно только захватить 1 замок на данный момент.Одно хорошо ,что на конец-то к ним приступили.))
+1 согласен, хотя помоему было бы лучше сначала на клиент 1.9 перейти а потом уже сделать замки, но коли уж хотябы одни замок, то уже хорошо
P.s. я бы тоже не отказался от патча....
06-14-2010, 06:43 PM (Сообщение последний раз редактировалось: 06-14-2010, 07:15 PM Shema.)
После теста:
Если Elyos захватили крепость, а Asmodeans нападают.
1. Asmodeans приходится убивать Balaurs и Elyos, они появляются вместе, а должны только те кто хозяин крепости.
2. Генералы не агрятся.
3. Генералы не двигаются, двигаться только если игрок использовать некоторые заклинания и то не всегда.
4. Когда asmodeans захватили крепость, Balaurs все-равно появляются, НПС Elyos остаются, приходиться их добивать.))
5. После появления Asmodean NPC,ники над ними красные и на них работает только атака.
6. При обновление внутри крепости 2 генерала, Balaur и Elyos / Аsmodean. Должен быть 1, чей замок.
7. На крепости логотип не изменился
8. Нет двери, и нет сила поля, которые защищают от воздушных атак.
9. В крепости телепорты не работают
10. Нет изминений на карте, когда игроки получают крепость.
11. Очень маленькое хп у генералов. За элиту дают гораздо больше опыта, чем генералы.
12 Elyos / Asmodeans генералы в 3 - 4 раза больше хп, чем у balaurs.
Одно хорошо, что это можно все пофиксить, если есть желающие можете выбирать пункт и пробовать исправить.))
Патч последний, анонс на английском.
public void initialize()
{
// initialize group reward container
registeredRewardableGroups = new HashMap<Integer, ArrayList<PlayerGroup>>();
for(int i=0; i < 9; i++)
{
registeredRewardableGroups.put(i+1, new ArrayList<PlayerGroup>());
}
// spawn individual fortresses
// 1: Archipel de Soufre
spawnFortress(1, DAOManager.getDAO(FortressDAO.class).getCurrentFortressOwnerFaction(1), true);
// 2: Archipel des Ailes de Siel UP
/*spawnFortress(2, DAOManager.getDAO(FortressDAO.class).getCurrentFortressOwnerFaction(2));
// 3: Archipel des Ailes de Siel DOWN
spawnFortress(3, DAOManager.getDAO(FortressDAO.class).getCurrentFortressOwnerFaction(3));
// 4: Oeil de Reshanta
spawnFortress(4, DAOManager.getDAO(FortressDAO.class).getCurrentFortressOwnerFaction(4));
// 5: Lac Asteria
spawnFortress(5, DAOManager.getDAO(FortressDAO.class).getCurrentFortressOwnerFaction(5));
// 6: Eclat oriental de Latesran
spawnFortress(6, DAOManager.getDAO(FortressDAO.class).getCurrentFortressOwnerFaction(6));
// 7: Ile de Kysis
spawnFortress(7, DAOManager.getDAO(FortressDAO.class).getCurrentFortressOwnerFaction(7));
// 8: Rocher de Krotan
spawnFortress(8, DAOManager.getDAO(FortressDAO.class).getCurrentFortressOwnerFaction(8));
// 9: Ruines de Roah
spawnFortress(9, DAOManager.getDAO(FortressDAO.class).getCurrentFortressOwnerFaction(9));*/
log.info("FortressService successfully initialized !");
}
public void registerRewardableGroup(PlayerGroup group, int fortressId)
{
if(!registeredRewardableGroups.get(fortressId).contains(group))
{
registeredRewardableGroups.get(fortressId).add(group);
}
}
public Race getCurrentFortressOwner(int fortressId)
{
return DAOManager.getDAO(FortressDAO.class).getCurrentFortressOwnerFaction(fortressId);
}
private String getFortressName(int fortressId)
{
switch(fortressId)
{
case 1: return "de Soufre";
case 2: return "Archipel des Ailes de Siel A";
case 3: return "Archipel des Ailes de Siel B";
case 4: return "Oeil de Reshanta";
case 5: return "Lac Asteria";
case 6: return "Eclat Oriental de Latesran";
case 7: return "Ile de Kysis";
case 8: return "Rocher de Krotan";
case 9: return "Ruines de Roah";
default: return "Forteresse";
}
}
public void spawnFortress(int fortressId, Race ownerFaction, boolean killedSelfFaction)
{
log.info("Starting fortress (re)spawn #" + fortressId);
// remove all spawns from the current fortress instance
clearFortress(fortressId);
// get all spawns from DB templates
ArrayList<NpcSpawnTemplate> spawnTemplates = DAOManager.getDAO(FortressDAO.class).getAllTemplates(fortressId, ownerFaction);
// spawns npc using the specified race
int spawnedCounter = 0;
for(NpcSpawnTemplate tpl : spawnTemplates)
{
SpawnTemplate template = spawnEngine.addNewSpawn(tpl.getMap(), 1, tpl.getNpcTemplateId(), tpl.getX(), tpl.getY(), tpl.getZ(), tpl.getHeading(), 0, 0, true, true);
VisibleObject obj = spawnEngine.spawnObject(template, 1);
if(obj == null)
{
log.error("No template for fortress npc id #" + tpl.getNpcTemplateId());
}
else
{
spawnedCounter++;
DAOManager.getDAO(FortressDAO.class).insertCache(fortressId, obj.getObjectId());
}
}
log.info("Successfully spawned " + spawnedCounter + " " + ownerFaction.name() + " npc for fortress #" + fortressId);
spawnFortressGeneral(fortressId, ownerFaction);
// send message to world : "Fortress XXXX is now available to attack for Asmodians"
if(!killedSelfFaction)
{
sendWorldMessage(getFortressName(fortressId), ownerFaction);
}
}
private void sendWorldMessage(String fortressName, Race ownedBy)
{
Iterator<Player> players = world.getPlayersIterator();
while(players.hasNext())
{
Player dest = players.next();
if(dest.getCommonData().getRace() != ownedBy)
{
String message = "La forteresse ";
message += fortressName;
message += " est maintenant conquise par les ";
if(ownedBy == Race.ELYOS)
{
message += "Elyseens";
}
else
{
message += "Asmodiens";
}
message += ". Vous pouvez attaquer cette forteresse des maintenant.";
PacketSendUtility.sendMessage(dest, message);
}
else
{
String message = "La forteresse ";
message += fortressName;
message += " est maintenant conquise par votre faction.";
message += ". Vous devez maintenant defendre cette position contre la faction adverse.";
PacketSendUtility.sendMessage(dest, message);
}
}
}
public void triggerGeneralKilled(final int fortressId, Creature lastAttacker)
{
/*if(DAOManager.getDAO(FortressDAO.class).getCurrentFortressOwnerFaction(fortressId) == lastAttacker.getCommonData().getRace())
{
PacketSendUtility.sendMessage(lastAttacker, "Vous venez de tuer votre propre general de la divinite protectrice. Vous ne gagnerez aucune medaille et ne serez pas teleporte. La zone va etre reinitialisee ...");
ThreadPoolManager.getInstance().schedule(new Runnable() {
@Override
public void run() {
// TODO Auto-generated method stub
spawnFortress(fortressId, lastAttacker.getCommonData().getRace(), true);
}
}, 5000);
return;
}*/
final ArrayList<Player> players = new ArrayList<Player>();
if(registeredRewardableGroups.get(fortressId).size() == 0)
{
players.add((Player)lastAttacker);
}
else
{
for(PlayerGroup grp : registeredRewardableGroups.get(fortressId))
{
Collection<Player> grpPlayers = grp.getMembers();
for(Player p : grpPlayers)
{
players.add(p);
}
}
}
sendPlayersMessage(players, "Vous venez de prendre la forteresse " + getFortressName(fortressId) + ". Vous serez teleporte a l'entree dans 5 secondes ...");
ThreadPoolManager.getInstance().schedule(new Runnable() {
@Override
public void run() {
// TODO Auto-generated method stub
// get group members of lastAttacker
public void doPlayerMedalReward(ArrayList<Player> players)
{
for(Player p : players)
{
itemService.addItem(p, 186000030, 3);
}
}
public void portPlayersToExit(ArrayList<Player> players)
{
for(Player p : players)
{
teleportService.teleportTo(p, 400010000, (float)1300.8483, (float)1088.8396, (float)1508.2749, 0);
}
}}
заменить в AE-go_GameServer\src\com\aionemu\gameserver\services
Добавлено через 15 минут
ето не ошибка просто разработчик еще не вставил етих нпс , короч наскоко я понял он незнает их статы , ну или что то в етом роде))
это новый надо создавать? просто я не нашел FortressService.java
Добавлено через 6 минут
все, понял ошибку)) я просто патч не применил)
вот вам ссылка на сайт разработчиков смотрите сами ТЫЦ
MiR @ Aion Emu
Продам сборки v2.7 v3.9 v4.7 v4.8 v4.9 v5.1 , сборки мастер сервера v1.9 и v2.7 ,пишу скрипты и квесты на заказ , правки ядра , правки даты , писать в ПМ