Сообщений: 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 минут.
|