Баг при осадах креп и артефактов - Форум администраторов игровых серверов
Форум администраторов игровых серверов StormWall - Защита от DDos атак
Регистрация Мнения Справка Пользователи Календарь Все разделы прочитаны
Вернуться   Форум администраторов игровых серверов > MMO > Aion > Серверная часть

Важная информация

Серверная часть Обсуждения вопросов по установке и настройке эмулятора Aion-Emu, для совершенно новой и необыкновенно красивой игры - Aion.

Ответ
Опции темы
Непрочитано 11.01.2011, 10:26   #1
Аватар для Mandrecke
Пользователь

Автор темы (Топик Стартер) Баг при осадах креп и артефактов

Сборка AE 276, сейчас её как основу взяли AC!
Возникла проблема =( при захвате крепы или артефакта, гварды своей расы агряться, бьються и при том не хило отвечают! В npc_temlates.xml по ID NPC с такими параметрами npc_type="NON_ATTACKABLE" rank="HERO" race="ELYOS" tribe="GUARD"...я тоже Элиец!Если смотреть в tribe_relations.xml то все ровно должно быть, но нет! Может кто-нибудь знает решение проблемы или направление в котором нудно искать решение проблемы.
__________________
Mandrecke вне форума Отправить сообщение для Mandrecke с помощью ICQ Отправить сообщение для Mandrecke с помощью Skype™ Ответить с цитированием
Непрочитано 17.01.2011, 08:52   #2
Аватар для Wolfas
Пользователь

По умолчанию Re: Баг при осадах креп и артефактов

Код:
Index: main/java/com/aionemu/gameserver/controllers/MonsterController.java
===================================================================
--- main/java/com/aionemu/gameserver/controllers/MonsterController.java	(revision 267)
+++ main/java/com/aionemu/gameserver/controllers/MonsterController.java	(working copy)
@@ -16,19 +16,8 @@
  */
 package com.aionemu.gameserver.controllers;
 
-import com.aionemu.gameserver.model.alliance.PlayerAlliance;
-import com.aionemu.gameserver.model.gameobjects.AionObject;
 import com.aionemu.gameserver.model.gameobjects.Monster;
-import com.aionemu.gameserver.model.gameobjects.player.Player;
-import com.aionemu.gameserver.model.group.PlayerGroup;
-import com.aionemu.gameserver.questEngine.QuestEngine;
-import com.aionemu.gameserver.questEngine.model.QuestEnv;
-import com.aionemu.gameserver.services.AllianceService;
 import com.aionemu.gameserver.services.DropService;
-import com.aionemu.gameserver.services.GroupService;
-import com.aionemu.gameserver.utils.stats.StatFunctions;
-import com.aionemu.gameserver.world.World;
-import com.aionemu.gameserver.world.WorldType;
 
 /**
  * @author ATracer, Sarynth
@@ -36,58 +25,6 @@
 public class MonsterController extends NpcController
 {
 	@Override
-	public void doReward()
-	{
-		AionObject winner = getOwner().getAggroList().getMostDamage(); 
-		
-		if(winner == null)
-			return;
-		
-		// TODO: Split the EXP based on overall damage.
-		
-		if (winner instanceof PlayerAlliance)
-		{
-			AllianceService.getInstance().doReward((PlayerAlliance)winner, getOwner());
-		}
-		else if (winner instanceof PlayerGroup)
-		{
-			GroupService.getInstance().doReward((PlayerGroup)winner, getOwner());
-		}
-		else if (((Player)winner).isInGroup())
-		{
-			GroupService.getInstance().doReward(((Player)winner).getPlayerGroup(), getOwner());
-		}
-		else
-		{
-			super.doReward();
-			
-			Player player = (Player)winner;
-			
-			// Exp reward
-			long expReward = StatFunctions.calculateSoloExperienceReward(player, getOwner());
-			player.getCommonData().addExp(expReward);
-
-			// DP reward
-			int currentDp = player.getCommonData().getDp();
-			int dpReward = StatFunctions.calculateSoloDPReward(player, getOwner());
-			player.getCommonData().setDp(dpReward + currentDp);
-			
-			// AP reward
-			WorldType worldType = World.getInstance().getWorldMap(player.getWorldId()).getWorldType();
-			if(worldType == WorldType.ABYSS)
-			{
-				int apReward = StatFunctions.calculateSoloAPReward(player, getOwner());
-				player.getCommonData().addAp(apReward);
-			}
-			
-			QuestEngine.getInstance().onKill(new QuestEnv(getOwner(), player, 0 , 0));
-			
-			// Give Drop
-			DropService.getInstance().registerDrop(getOwner() , player, player.getLevel());			
-		}
-	}
-	
-	@Override
 	public void onRespawn()
 	{
 		super.onRespawn();
Index: main/java/com/aionemu/gameserver/controllers/NpcController.java
===================================================================
--- main/java/com/aionemu/gameserver/controllers/NpcController.java	(revision 267)
+++ main/java/com/aionemu/gameserver/controllers/NpcController.java	(working copy)
@@ -30,6 +30,8 @@
 import com.aionemu.gameserver.model.ChatType;
 import com.aionemu.gameserver.model.EmotionType;
 import com.aionemu.gameserver.model.TaskId;
+import com.aionemu.gameserver.model.alliance.PlayerAlliance;
+import com.aionemu.gameserver.model.gameobjects.AionObject;
 import com.aionemu.gameserver.model.gameobjects.Creature;
 import com.aionemu.gameserver.model.gameobjects.Npc;
 import com.aionemu.gameserver.model.gameobjects.Summon;
@@ -38,6 +40,7 @@
 import com.aionemu.gameserver.model.gameobjects.player.RequestResponseHandler;
 import com.aionemu.gameserver.model.gameobjects.state.CreatureState;
 import com.aionemu.gameserver.model.gameobjects.stats.NpcGameStats;
+import com.aionemu.gameserver.model.group.PlayerGroup;
 import com.aionemu.gameserver.model.templates.TradeListTemplate;
 import com.aionemu.gameserver.network.aion.serverpackets.SM_ATTACK;
 import com.aionemu.gameserver.network.aion.serverpackets.SM_ATTACK_STATUS;
@@ -53,8 +56,11 @@
 import com.aionemu.gameserver.questEngine.QuestEngine;
 import com.aionemu.gameserver.questEngine.model.QuestEnv;
 import com.aionemu.gameserver.restrictions.RestrictionsManager;
+import com.aionemu.gameserver.services.AllianceService;
 import com.aionemu.gameserver.services.CraftSkillUpdateService;
 import com.aionemu.gameserver.services.CubeExpandService;
+import com.aionemu.gameserver.services.DropService;
+import com.aionemu.gameserver.services.GroupService;
 import com.aionemu.gameserver.services.ItemService;
 import com.aionemu.gameserver.services.LegionService;
 import com.aionemu.gameserver.services.RespawnService;
@@ -63,7 +69,9 @@
 import com.aionemu.gameserver.services.WarehouseService;
 import com.aionemu.gameserver.utils.MathUtil;
 import com.aionemu.gameserver.utils.PacketSendUtility;
+import com.aionemu.gameserver.utils.stats.StatFunctions;
 import com.aionemu.gameserver.world.World;
+import com.aionemu.gameserver.world.WorldType;
 
 /**
  * This class is for controlling Npc's
@@ -103,6 +111,58 @@
 	}
 
 	@Override
+	public void doReward()
+	{
+		AionObject winner = getOwner().getAggroList().getMostDamage();
+
+		if(winner == null)
+			return;
+
+		// TODO: Split the EXP based on overall damage.
+
+		if (winner instanceof PlayerAlliance)
+		{
+			AllianceService.getInstance().doReward((PlayerAlliance)winner, getOwner());
+		}
+		else if (winner instanceof PlayerGroup)
+		{
+			GroupService.getInstance().doReward((PlayerGroup)winner, getOwner());
+		}
+		else if (((Player)winner).isInGroup())
+		{
+			GroupService.getInstance().doReward(((Player)winner).getPlayerGroup(), getOwner());
+		}
+		else
+		{
+			super.doReward();
+
+			Player player = (Player)winner;
+
+			// Exp reward
+			long expReward = StatFunctions.calculateSoloExperienceReward(player, getOwner());
+			player.getCommonData().addExp(expReward);
+
+			// DP reward
+			int currentDp = player.getCommonData().getDp();
+			int dpReward = StatFunctions.calculateSoloDPReward(player, getOwner());
+			player.getCommonData().setDp(dpReward + currentDp);
+
+			// AP reward
+			WorldType worldType = World.getInstance().getWorldMap(player.getWorldId()).getWorldType();
+			if(worldType == WorldType.ABYSS)
+			{
+				int apReward = StatFunctions.calculateSoloAPReward(player, getOwner());
+				player.getCommonData().addAp(apReward);
+			}
+
+			QuestEngine.getInstance().onKill(new QuestEnv(getOwner(), player, 0 , 0));
+
+			// Give Drop
+			DropService.getInstance().registerDrop(getOwner() , player, player.getLevel());
+		}
+	}
+
+	@Override
 	public void onRespawn()
 	{
 		super.onRespawn();
Index: main/java/com/aionemu/gameserver/services/AllianceService.java
===================================================================
--- main/java/com/aionemu/gameserver/services/AllianceService.java	(revision 267)
+++ main/java/com/aionemu/gameserver/services/AllianceService.java	(working copy)
@@ -29,7 +29,7 @@
 import com.aionemu.gameserver.model.alliance.PlayerAllianceEvent;
 import com.aionemu.gameserver.model.alliance.PlayerAllianceMember;
 import com.aionemu.gameserver.model.gameobjects.Creature;
-import com.aionemu.gameserver.model.gameobjects.Monster;
+import com.aionemu.gameserver.model.gameobjects.Npc;
 import com.aionemu.gameserver.model.gameobjects.player.Player;
 import com.aionemu.gameserver.model.gameobjects.player.RequestResponseHandler;
 import com.aionemu.gameserver.model.group.PlayerGroup;
@@ -580,7 +580,7 @@
 	 * @param winner
 	 * @param owner
 	 */
-	public void doReward(PlayerAlliance alliance, Monster owner)
+	public void doReward(PlayerAlliance alliance, Npc owner)
 	{
 		// TODO: Merge with group type do-reward. (Near identical to GroupService doReward code.)
 		// Plus complete rewrite of drop system and exp system.
Index: main/java/com/aionemu/gameserver/services/GroupService.java
===================================================================
--- main/java/com/aionemu/gameserver/services/GroupService.java	(revision 267)
+++ main/java/com/aionemu/gameserver/services/GroupService.java	(working copy)
@@ -259,7 +259,7 @@
 	 * 
 	 * @param player
 	 */
-	public void doReward(PlayerGroup group, Monster owner)
+	public void doReward(PlayerGroup group, Npc owner)
 	{
 		// Find Group Members and Determine Highest Level
 		List<Player> players = new ArrayList<Player>();
Index: main/java/com/aionemu/gameserver/world/WorldMapType.java
===================================================================
--- main/java/com/aionemu/gameserver/world/WorldMapType.java	(revision 267)
+++ main/java/com/aionemu/gameserver/world/WorldMapType.java	(working copy)
@@ -20,6 +20,7 @@
 {
 	// Asmodea
 	PANDAEMONIUM(120010000),
+	MARCHUTAN(120020000),
 	ISHALGEN(220010000),
 	MORHEIM(220020000),
 	ALTGARD(220030000),
@@ -28,14 +29,21 @@
 
 	// Elysia
 	SANCTUM(110010000),
+	KAISINEL(110020000),
 	POETA(210010000),
 	VERTERON(210030000),
 	ELTNEN(210020000),
 	HEIRON(210040000),
 	THEOMOBOS(210060000),
+	
+	// Balaurea
+	INGGISON(210050000),
+	GELKMAROS(220070000),	
+	SILENTERA_CANYON(600010000),
 
 	// Prison
 	PRISON(510010000),
+	DF_PRISON(520010000),
 
 	RESHANTA(400010000),
 
@@ -60,7 +68,27 @@
 	DRAUPNIR_CAVE(320080000),
 	FIRE_TEMPLE(320100000),
 	ALQUIMIA(320110000),
-	ADMA_STRONGHOLD(320130000);
+	ADMA_STRONGHOLD(320130000),
+	TEMPLE_UP(300150000),
+	TEMPLE_LOW (300160000),
+	CATACOMBS(300170000),
+	ELIM (300190000),
+	NOVICE(300200000),
+	DREDGION_02(300210000),
+	DEBRIS_OF_ABYSS(300220000),
+	CROMEDE(300230000),
+	ABPROD3(320140000),
+	DF1B(320060000),
+	SPACE(320070000),
+	DC1_ARENA(320090000),
+	DC1_ARENA_3F(320120000),
+	
+	//Test Map
+	TEST_BASIC(900020000),
+	TEST_SERVER(900030000),
+	TEST_GIANTMONSTER(900100000),
+	HOUSING_BARRACK(900110000);
+	
 
 	private final int worldId;
 
Index: main/java/com/aionemu/gameserver/world/WorldType.java
===================================================================
--- main/java/com/aionemu/gameserver/world/WorldType.java	(revision 267)
+++ main/java/com/aionemu/gameserver/world/WorldType.java	(working copy)
@@ -24,6 +24,7 @@
 {
 	ASMODAE,
 	ELYSEA,
+	BALAUREA,
 	ABYSS,
 	PRISON,
 	NONE
Вот капайте, объясню взять и применить нельзя, патч не для этой сборки..

Но разобрать можно
__________________
Консоль GameServer не советует:"Вы настраивайте сервер уже 1 час. Советуем вам немного отдохнуть".
Wolfas вне форума Ответить с цитированием
Непрочитано 22.01.2011, 19:24   #3
Аватар для x714
Пользователь

По умолчанию Re: Баг при осадах креп и артефактов

Спасибо Wolfas за информацию.

Благодаря вашему посту, внес изменения в AE276. Однако как агрились гварды так и агрятся.

Брал уже npc_temlates.xml и tribe_relations.xml от сборок где все нормально, но все безуспешно.

Буду очень признателен, если укажите направления куда теперь копать.
x714 вне форума Ответить с цитированием
Непрочитано 22.01.2011, 21:08   #4
Пользователь

По умолчанию Re: Баг при осадах креп и артефактов

Дело не в ядре, а в файле спавна осад, там прописывается спавн для двух режимов в которых может находится крепость:
- осада возможна (тег в файле siege_guard)
- осада невозможна ( тег в файле peace_guard)
Плюс ко всему, все мобы которые спавняться в обоих режимах должны имень тип NON_ATTACKABLE в файле npc_templates.xml, кроме мобов(гвардов) которые спавняться если крепость пренадлежит баллаурам, все гварды баллауров должны быть ATTACKABLE, иначе крепость на захватить.
Как определить кто для какой рассы спавнится:
- тег npcid_dr - спавн гвардов для баллауров
- тег npcid_da - спавн гвардов для асмо
- тег npcid_li - спавн гвардов для элийцев
А также не все мобы подходят для спавна в определённых режимах (хз почему), тут надо опытным путём определить какие мобы подходят.
Вот можете попробовать:
часть кода для крепы Серного дерева:
Свернуть ↑Развернуть ↓

Для проверки сделайте резрвную копию своего файла, потом по id крепы найдите в файле siege_spawns.xml (gameserver\data\static_data\siege) и замените на код. Да и что бы всё работало необходимо как я уже говорил чтобы все гварды кроме гвардов баллауров имели тип NON_ATTACKABLE.
flashman вне форума Ответить с цитированием
Сказали спасибо:
Ответ


Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 
Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Лаги на осадах SunnyX Lineage II 33 28.11.2010 10:18
Гварды на осадах просто стоят Jao Работа со скриптами 3 21.05.2009 15:09


© 2007–2024 «Форум администраторов игровых серверов»
Защита сайта от DDoS атак — StormWall
Работает на Булке неизвестной версии с переводом от zCarot
Текущее время: 12:26. Часовой пояс GMT +3.

Вверх