| 
		
	
	
	
		
	Сообщений: 982 
	Тем: 73 
	Зарегистрирован: Jan 2009
	
 Репутация: 
2,862 
	
	
		Вот нашел у уников  темку с крепостями выложил сборочку пробуем тестим  все траблы описуем сдесь
	
MiR @ Aion EmuПродам сборки v2.7 v3.9 v4.7 v4.8 v4.9 v5.1 , сборки мастер сервера v1.9 и v2.7 ,пишу  скрипты и квесты на заказ , правки ядра  , правки даты , писать в ПМ
 
	
	
	
		
	Сообщений: 32 
	Тем: 1 
	Зарегистрирован: May 2010
	
 Репутация: 
-26 
	
	
		Кто уже поставил, выложите сборку для теста.
 Ой, слепой, не увидел в сборках.
 
	
	
	
		
	Сообщений: 610 
	Тем: 12 
	Зарегистрирован: Jan 2010
	
 Репутация: 
1,021 
	
	
		Работает. Проверял. Но куча недоделок.Даже тот же щит бывает заклинит, можно спокойно пройти...
 Ждём когда ATracer вернётся.
 ViAl каждый день в 12:00 начинается(Ответ на вопрос с форума AU)
 
	
	
	
		
	Сообщений: 32 
	Тем: 1 
	Зарегистрирован: May 2010
	
 Репутация: 
-26 
	
	
		Я немного не вдуплил как там осады работают    Может кто подскажет ?
	 
	
	
	
		
	Сообщений: 314 
	Тем: 32 
	Зарегистрирован: Mar 2010
	
 Репутация: 
2,207 
	
	
		Выдало ошибку при запуске гс:No template for fortress npc id #12950
 No template for fortress npc id #257087
 No template for fortress npc id #257087
 No template for fortress npc id #257087
 No template for fortress npc id #12933
 No template for fortress npc id #257093
 No template for fortress npc id #12933
 No template for fortress npc id #257093
 
 Это значит, нпц нет или что?
 
	
	
	
		
	Сообщений: 982 
	Тем: 73 
	Зарегистрирован: Jan 2009
	
 Репутация: 
2,862 
	
		
		
		06-11-2010, 11:11 AM 
(Сообщение последний раз редактировалось: 06-11-2010, 11:26 AM   Romanz.)
		
	 
		вот обновление Ai балауров 
			FortressService.java package com.aionemu.gameserver.services;
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.HashMap;
 import java.util.Iterator;
 import java.util.Map;
 
 import org.apache.log4j.Logger;
 
 import com.aionemu.commons.database.dao.DAO;
 import com.aionemu.commons.database.dao.DAOManager;
 import com.aionemu.gameserver.ai.desires.impl.AggressionDesire;
 import com.aionemu.gameserver.ai.npcai.AggressiveAi;
 import com.aionemu.gameserver.ai.state.AIState;
 import com.aionemu.gameserver.dao.FortressDAO;
 import com.aionemu.gameserver.dataholders.DataManager;
 import com.aionemu.gameserver.dataholders.TribeRelationsData;
 import com.aionemu.gameserver.model.Race;
 import com.aionemu.gameserver.model.gameobjects.AionObject;
 import com.aionemu.gameserver.model.gameobjects.Creature;
 import com.aionemu.gameserver.model.gameobjects.FortressGeneral;
 import com.aionemu.gameserver.model.gameobjects.Item;
 import com.aionemu.gameserver.model.gameobjects.Npc;
 import com.aionemu.gameserver.model.gameobjects.Monster;
 import com.aionemu.gameserver.model.gameobjects.VisibleObject;
 import com.aionemu.gameserver.model.gameobjects.player.Player;
 import com.aionemu.gameserver.model.group.PlayerGroup;
 import com.aionemu.gameserver.model.templates.spawn.NpcSpawnTemplate;
 import com.aionemu.gameserver.model.templates.spawn.SpawnTemplate;
 import com.aionemu.gameserver.model.templates.tribe.AggroRelations;
 import com.aionemu.gameserver.model.templates.tribe.HostileRelations;
 import com.aionemu.gameserver.model.templates.tribe.Tribe;
 import com.aionemu.gameserver.network.aion.serverpackets.SM_MESSAGE;
 import com.aionemu.gameserver.spawnengine.SpawnEngine;
 import com.aionemu.gameserver.utils.PacketSendUtility;
 import com.aionemu.gameserver.utils.ThreadPoolManager;
 import com.aionemu.gameserver.world.World;
 import com.aionemu.gameserver.world.WorldPosition;
 import com.google.inject.Inject;
 
 /*
 * @author Xitanium
 */
 
 public class FortressService
 {
 private static final Logger 	log = Logger.getLogger(FortressService.class);
 @Inject
 private SpawnEngine spawnEngine;
 @Inject
 private World world;
 @Inject
 private TeleportService teleportService;
 @Inject
 private GroupService groupService;
 @Inject
 private ItemService itemService;
 
 private Map<Integer,ArrayList<PlayerGroup>> registeredRewardableGroups;
 
 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);
 }
 }
 }
 
 private void sendPlayersMessage(ArrayList<Player> players, String message)
 {
 for(Player p : players)
 {
 PacketSendUtility.sendMessage(p, message);
 }
 }
 
 public void clearFortress(int fortressId)
 {
 ArrayList<Integer> spawnedCreatures = DAOManager.getDAO(FortressDAO.class).loadCache(fortressId);
 for(Integer creature : spawnedCreatures)
 {
 AionObject obj = world.findAionObject(creature);
 if(obj instanceof Creature)
 {
 Creature c = (Creature)obj;
 c.getController().delete();
 }
 }
 DAOManager.getDAO(FortressDAO.class).clearCache(fortressId);
 if(registeredRewardableGroups.get(fortressId) == null)
 {
 registeredRewardableGroups.put(fortressId, new ArrayList<PlayerGroup>());
 }
 else
 {
 registeredRewardableGroups.get(fortressId).clear();
 }
 log.info("Successfully cleared cache for fortress #" + fortressId);
 }
 
 public void spawnFortressGeneral(int fortressId, Race race)
 {
 NpcSpawnTemplate generalTemplate = DAOManager.getDAO(FortressDAO.class).getGeneralSpawnTemplate(fortressId, race);
 SpawnTemplate tpl = spawnEngine.addNewSpawn(generalTemplate.getMap(), 1, generalTemplate.getNpcTemplateId(), generalTemplate.getX(), generalTemplate.getY(), generalTemplate.getZ(), generalTemplate.getHeading(), 0, 0, true, true);
 FortressGeneral general = spawnEngine.spawnFortressGeneral(tpl, fortressId);
 }
 
 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
 
 //TODO: set correct exit point location
 portPlayersToExit(players);
 doPlayerMedalReward(players);
 Race newRace;
 if(getCurrentFortressOwner(fortressId) == Race.ELYOS)
 {
 newRace = Race.ASMODIANS;
 }
 else
 {
 newRace = Race.ELYOS;
 }
 DAOManager.getDAO(FortressDAO.class).setFortressOwner(fortressId, newRace);
 spawnFortress(fortressId, newRace, false);
 }
 }, 5000);
 }
 
 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 минут 
ето не ошибка просто разработчик еще не вставил етих нпс , короч наскоко я понял он незнает их статы , ну или что то в етом роде))
	
MiR @ Aion EmuПродам сборки v2.7 v3.9 v4.7 v4.8 v4.9 v5.1 , сборки мастер сервера v1.9 и v2.7 ,пишу  скрипты и квесты на заказ , правки ядра  , правки даты , писать в ПМ
 
	
	
	
		
	Сообщений: 27 
	Тем: 1 
	Зарегистрирован: May 2010
	
 Репутация: 
0 
	
		
		
		06-11-2010, 11:59 AM 
(Сообщение последний раз редактировалось: 06-11-2010, 12:10 PM   spain.)
		
	 
		При компиляции выдает ошибку:
 Buildfile: C:\AION FILES\AE-go_GameServer\build.xml
 
 clean:
 [delete] Deleting directory C:\AION FILES\AE-go_GameServer\build
 
 clean:
 
 init:
 [mkdir] Created dir: C:\AION FILES\AE-go_GameServer\build
 [mkdir] Created dir: C:\AION FILES\AE-go_GameServer\build\classes
 
 compile:
 [javac] C:\AION FILES\AE-go_GameServer\build.xml:64: warning: 'includeantrun
 time' was not set, defaulting to build.sysclasspath=last; set to false for repea
 table builds
 [javac] Compiling 1031 source files to C:\AION FILES\AE-go_GameServer\build\
 classes
 [javac] C:\AION FILES\AE-go_GameServer\src\com\aionemu\gameserver\services\F
 ortressService.java:297: reached end of file while parsing
 [javac]     }
 [javac]      ^
 [javac] 1 error
 
 BUILD FAILED
 C:\AION FILES\AE-go_GameServer\build.xml:64: Compile failed; see the compiler er
 ror output for details.
 
 Total time: 3 seconds
 C:\AION FILES\AE-go_GameServer>
 
	
	
	
		
	Сообщений: 610 
	Тем: 12 
	Зарегистрирован: Jan 2010
	
 Репутация: 
1,021 
	
	
		У меня никаких ошибок...Эм, забыл, я ведь там все исправления качал...
 Короче по теме полазай.
 
	
	
	
		
	Сообщений: 982 
	Тем: 73 
	Зарегистрирован: Jan 2009
	
 Репутация: 
2,862 
	
	
		spain Написал:При компиляции выдает ошибку:
 Buildfile: C:\AION FILES\AE-go_GameServer\build.xml
 
 clean:
 [delete] Deleting directory C:\AION FILES\AE-go_GameServer\build
 
 clean:
 
 init:
 [mkdir] Created dir: C:\AION FILES\AE-go_GameServer\build
 [mkdir] Created dir: C:\AION FILES\AE-go_GameServer\build\classes
 
 compile:
 [javac] C:\AION FILES\AE-go_GameServer\build.xml:64: warning: 'includeantrun
 time' was not set, defaulting to build.sysclasspath=last; set to false for repea
 table builds
 [javac] Compiling 1031 source files to C:\AION FILES\AE-go_GameServer\build\
 classes
 [javac] C:\AION FILES\AE-go_GameServer\src\com\aionemu\gameserver\services\F
 ortressService.java:297: reached end of file while parsing
 [javac]     }
 [javac]      ^
 [javac] 1 error
 
 BUILD FAILED
 C:\AION FILES\AE-go_GameServer\build.xml:64: Compile failed; see the compiler er
 ror output for details.
 
 Total time: 3 seconds
 C:\AION FILES\AE-go_GameServer>
 
короч скобку добавь))) или убери)
	 
MiR @ Aion EmuПродам сборки v2.7 v3.9 v4.7 v4.8 v4.9 v5.1 , сборки мастер сервера v1.9 и v2.7 ,пишу  скрипты и квесты на заказ , правки ядра  , правки даты , писать в ПМ
 
	
	
	
		
	Сообщений: 32 
	Тем: 1 
	Зарегистрирован: May 2010
	
 Репутация: 
-26 
	
	
		Перевод Описания Осады:
Цитата:Как все это будет выглядеть (будет развиваться, как только я получу пакеты для крепости):
 1. dbo.fortress_owners приписать крепость нынешнему владельцу.
 До первого запуска, вы определяете, кто будет владеть крепостью (Asmodians | Elyos)
 2. При зпуске эмулятора, крепость будет заспаунена с помощью dbo.fortress_spawn_template соответствующей фракцией.
 uniqueobjectids(прим.перев.: может артефакты, не уверена) отспауненых мобов записываются в dbo.fortress_spawn_cache.
 3.Вражеская фракция атакует крепость. Сначала убивают мобов, потом генерала.
 Через 5 сек после убийства генерала, все игроки, которые били генерала и их группы,
 телепортируются ко входу в крепость и получают 3 золотых медали в качестве вознаграждения.
 Крепость деспаунится (очищается dbo.fortress_spawn_cache) и спаунится по шаблону захватившей фракции.
 Появляется сообщение (прим. перев.: world messages - видимо анонс) о изменениях.
 4. Когда генерал побежден, зоны влияния пересчитываются и пакеты SM_INFLUENCE_RATIO отправляются
 всем игрокам для обновления значения. Это обновление будет происходить каждые 5 минут.
 |