• SiteAnalyzer, технический и SEO-анализ сайтов

Сборка AionSuccess - -4.7.5.X (Сборка от yayaya rev.8)

  • Автор темы Автор темы yayaya
  • Дата начала Дата начала
Предрелиз ревизия 7
тем временем исправлено из репортов

rev(7)
1 - Исправлен торговец стигмами (за баг спасибо @sephiro)
2 - Выбивание инвиза при юзании свитков, банок и так далее. Пришлось добавлять категорию SCROLLS в item_templates где стоит эта категория то не должно выбивать из инвиза (1на из проблем если первым было использовано категория SCROLLS то все остальные категории потом можно использовать в инвизе, доделать) (за баг спасибо @nokiafan1111)
3 - Выбивание инвиза при юзании скила Стражника "Оскорбительный Крик"

это только баги взятые с форума...по мимо них есть еще исправления.

Bug quest
1926 Secret Library Access Ely
2938 Secret Library Access Asmo
Принял на исправления
 
Bug quest
1926 Secret Library Access Ely
2938 Secret Library Access Asmo

What is problem of the quest? For me is working!!! only you should finish "AreVerteronQuestsFinished"

Код:
if (AreVerteronQuestsFinished(player)) {
		   return sendQuestDialog(env, 1011);
This pat of code you may see that you should finish all quest in verteron to start dialog with npc id 203098.
 
Screenshot_3_zpsxknv3re6.jpg


I configured the time of the beritra invasion, but at the scheduled time the invasion did not occur. Only this error in gameserver.

Could you let me know if the intrusions are working?
 
Screenshot_3_zpsxknv3re6.jpg


I configured the time of the beritra invasion, but at the scheduled time the invasion did not occur. Only this error in gameserver.

Could you let me know if the intrusions are working?
May be you put wrong format time for cron... On the photo you may see npc 220001 not in npc_templates, probably error because of that, find spawn beritra delite that mob.
 
A-Game(6rev)->YA-Game -> data -> static_data->spawns->Beritra->210070000_need_name.xml

Line:19
<spawn npc_id="220001">
<spot x="593.9777" y="481.57568" z="416.42203" h="60"/>
</spawn>

Thanks a lot for the help! :)
 
Это верно если закл юзает замену то щит магический должен спадать? Так как у нас получается что замена еще и щит потом;)
 
Ревизия 7 продолжение исправлений скилов.
4 - Исправлен скил барда "Мотив нападения" раньше было если используем 2 любых бафа например конфетку и "щит барда" то любой первый использовавшийся слетает при "Мотив нападения". Сейчас не слитает.
5 - Исправлен скил "Замена" закла было, если сначала используешь "Магический щит", а потом "Замену" то сначала слетала замена а потом щит. Теперь слетает щит потом замена.
 
есть такая фигня в домиках "скрипты" я так понимаю что не работает, встречал ли к то то сборку с рабочими скриптами? я их никогда не использовал даже не в курсе нафиг они нужны:)
 
есть такая фигня в домиках "скрипты" я так понимаю что не работает, встречал ли к то то сборку с рабочими скриптами? я их никогда не использовал даже не в курсе нафиг они нужны:)
я тоже не видел) вроде там только пару скриптов работает, они чисто для вида нужны, ну или понтанутся скриптом в резе например))
думаю корейцы хотели сделать так: заходят так люди с лега к человеку у которого реза, после он врубает скрипты и все так горит мигает. После реакция людей "ооо круто круто, очень круто" #шокзависть :D
 
Как и говорилось сборка делается в обучающих целях. Давайте вспомним как работать с клиентом, так как в следующей сборке нам придется его изменять. (сразу делаем копию клиента)
берем AIONencdec - нужен для распаковки .pak - формат файлов клиента и Data.pak для ру клиентов он лежит в \l10n\RUS\Data вставили в программку распаковали пак он теперь в .zip формате.
Вы берете и не раззиповуя вытаскиваете от туда файлы quest_q12061.html и quest_q22061.html они нам нужны что бы сделать красиво работающие фонтаны на обмен медалей.

З.Ы. что бы переконвертировать непонятные символы диалого вам нужен будет converthtml - прога специально для айона. По идее вам уже не нужно этого делать достаточно вставить то что уже переведено снизу, а все что было удалить.

меняем quest_q12061.html

Код:
<?xml version="1.0" encoding="UTF-16" ?>
<HtmlPages>
<HtmlPage name="select1">
<Contents cdata="true">
<html>
<body>
<p>(Перед вами фонтан удачи.)</p>
<p> </p>
<p>(Говорят, если бросить в него серебряную медаль, это принесет удачу.)</p>
<p> </p>
<p>(Хотите попробовать разок?)</p>
</body>
</html>
</Contents>
<Selects>
<Act href="HACTION_SETPRO1">Бросить серебряную медаль</Act>
</Selects>
</HtmlPage>
 
<HtmlPage name="select_quest_reward1">
<Contents cdata="true">
<html>
<body>
<p>(Серебряную медаль с плеском упала в фонтан.) </p>
<p> </p>
<p>(Через некоторое время что-то поднялось из воды наверх.)</p>
<p> </p>
<p>(Этот предмет ярко сверкает как "Админ - переделавший фонтаны:D".) </p>
</body>
</html>
</Contents>
</HtmlPage>
<HtmlPage name="quest_complete">
<Contents cdata="true">
<html>
<body>
<p>(Из куба доносится звон.) </p>
<p> </p>
<p>(Похоже, подарок фонтана удачи лежит у вас в сумке.)</p>
<p> </p>
<p>(Нужно открыть куб и узнать, что это за подарок.)</p>
</body>
</html>
</Contents>
</HtmlPage>
 
</HtmlPages>

меняем quest_q22061.html

Код:
<?xml version="1.0" encoding="UTF-16" ?>
 
<HtmlPages>
 
  <HtmlPage name="select1">
	<Contents cdata="true">
		<html>
		<body>
		  <p>(Перед вами фонтан удачи.)</p>
		  <p> </p>
		  <p>(Говорят, если бросить в него платиновую медаль, это принесет удачу.)</p>
		  <p> </p>
		  <p>(Хотите попробовать разок?)</p>
		</body>
		</html>
	</Contents>
	<Selects>
	  <Act href="HACTION_SETPRO1">Бросить платиновую медаль</Act>
	</Selects>
  </HtmlPage>
   
<HtmlPage name="select_quest_reward1">
<Contents cdata="true">
<html>
<body>
<p>(Платиновую медаль с плеском упала в фонтан.) </p>
<p> </p>
<p>(Через некоторое время что-то поднялось из воды наверх.)</p>
<p> </p>
<p>(Этот предмет ярко сверкает как "Админ - переделавший фонтаны:D".) </p>
</body>
</html>
</Contents>
</HtmlPage>
 
  <HtmlPage name="quest_complete">
	<Contents cdata="true">
		<html>
		<body>
		   <p>(Из куба доносится звон.) </p>
		   <p> </p>
		  <p>(Похоже, подарок фонтана удачи лежит у вас в сумке.)</p>
		   <p> </p>
		   <p>(Нужно открыть куб и узнать, что это за подарок.)</p>
		</body>
		</html>
	</Contents>
  </HtmlPage>
 
</HtmlPages>

Далее нераззиповывая data.zip засовываем их обратно по местам откуда вы их потянули. Далее запаковываем .zip в .pak и возвращаем в клиент. Клиент готов стартуем если у вас при старте клиента все на корейском где то допущена ошибка. Берем копированный клиент оттуда дату и все по новой делаем.

Далее для чего все это мы совершили что бы подогнать клиент под АИ фонтанов как известно их не 5 даже а намного больше, 1н меняет серебро на золото медаль, другой золото на платину, платину на мифрил и даже есть фонтаны на сераниум. (за ошибки сорян пишу быстро).
Есть квесты для фонтанов собственно мы же не ищим легких путей и хотим красиво и без квестов по 100 раз принимать здавать там все дела...Хочется 1 раз кнопочку нажать и все поменяно.
Переходим к АИ к фонтанам - они будут включены в следующую сборку, но вот пример тех 2х что мы уже сделали.
пихаем их сюда \data\scripts\system\handlers\ai\worlds\coinfountains

CoinFountainSilverToGoldAI2.java
Код:
package ai.worlds.coinfountains;
 
import com.aionemu.commons.utils.Rnd;
import com.aionemu.gameserver.ai2.AIName;
import com.aionemu.gameserver.ai2.NpcAI2;
import com.aionemu.gameserver.model.gameobjects.player.Player;
import com.aionemu.gameserver.network.aion.serverpackets.SM_DIALOG_WINDOW;
 
import com.aionemu.gameserver.services.item.ItemService;
import com.aionemu.gameserver.utils.PacketSendUtility;
 
@AIName("coinfountain_silver_to_gold")
public class CoinFountainSilverToGoldAI2 extends NpcAI2 {
 
	@Override
	protected void handleDialogStart(Player player) {
		if (player.getCommonData().getLevel() >= 25) {
			PacketSendUtility.sendPacket(player, new SM_DIALOG_WINDOW(getObjectId(), 1011, 12061));
		} else {
			PacketSendUtility.sendPacket(player, new SM_DIALOG_WINDOW(getObjectId(), 1011));
		}
	}
 
	@Override
public boolean onDialogSelect(Player player, int dialogId, int questId, int extendedRewardIndex) {
		switch (dialogId) {
			case 10000:
// Серебряная медаль
if (player.getInventory().getItemCountByItemId(186000031) >= 1) {
player.getInventory().decreaseByItemId(186000031, 1);
PacketSendUtility.sendPacket(player, new SM_DIALOG_WINDOW(getOwner().getObjectId(), 1008, 12061));
giveItem(player);
				} else {
// Для обмена нужна Серебряная медаль!
					PacketSendUtility.sendBrightYellowMessageOnCenter(player, "\u0414\u043b\u044f \u043e\u0431\u043c\u0435\u043d\u0430 \u043d\u0443\u0436\u043d\u0430 \u0421\u0435\u0440\u0435\u0431\u0440\u044f\u043d\u0430\u044f \u043c\u0435\u0434\u0430\u043b\u044c!");
					PacketSendUtility.sendPacket(player, new SM_DIALOG_WINDOW(getOwner().getObjectId(), 0));
				}
				break;
		}
		return true;
	}
 
 
 
	private void giveItem(Player player) {
		int rnd = Rnd.get(0, 100);
		if (rnd < 15) {
//Золотая медаль
			ItemService.addItem(player, 186000030, 1);
		}
//Золотая медаль
		else if (rnd > 15 && rnd < 20) {
			ItemService.addItem(player, 186000030, 2);
		}
		else if (rnd > 20 && rnd < 30) {
// Серебряная медаль
			ItemService.addItem(player, 186000031, 1);
		}
else {
   //Ржавая медаль
			ItemService.addItem(player, 182005205, 1);
		}
	}
}


CoinFountainPlathToMifrilAI2.java
Код:
package ai.worlds.coinfountains;
 
import com.aionemu.commons.utils.Rnd;
import com.aionemu.gameserver.ai2.AIName;
import com.aionemu.gameserver.ai2.NpcAI2;
import com.aionemu.gameserver.model.gameobjects.player.Player;
import com.aionemu.gameserver.network.aion.serverpackets.SM_DIALOG_WINDOW;
 
import com.aionemu.gameserver.services.item.ItemService;
import com.aionemu.gameserver.utils.PacketSendUtility;
 
@AIName("coinfountain_plath_to_mifril")
public class CoinFountainPlathToMifrilAI2 extends NpcAI2 {
 
	@Override
	protected void handleDialogStart(Player player) {
		if (player.getCommonData().getLevel() >= 25) {
			PacketSendUtility.sendPacket(player, new SM_DIALOG_WINDOW(getObjectId(), 1011, 22061));
		} else {
			PacketSendUtility.sendPacket(player, new SM_DIALOG_WINDOW(getObjectId(), 1011));
		}
	}
 
	@Override
public boolean onDialogSelect(Player player, int dialogId, int questId, int extendedRewardIndex) {
		switch (dialogId) {
			case 10000:
// Платиновая медаль
if (player.getInventory().getItemCountByItemId(186000096) >= 1) {
player.getInventory().decreaseByItemId(186000096, 1);
PacketSendUtility.sendPacket(player, new SM_DIALOG_WINDOW(getOwner().getObjectId(), 1008, 22061));
giveItem(player);
				} else {
// Для обмена нужна Платиновая медаль!
					PacketSendUtility.sendBrightYellowMessageOnCenter(player, "\u0414\u043b\u044f \u043e\u0431\u043c\u0435\u043d\u0430 \u043d\u0443\u0436\u043d\u0430 \u041f\u043b\u0430\u0442\u0438\u043d\u043e\u0432\u0430\u044f \u043c\u0435\u0434\u0430\u043b\u044c!");
					PacketSendUtility.sendPacket(player, new SM_DIALOG_WINDOW(getOwner().getObjectId(), 0));
				}
				break;
		}
		return true;
	}
 
 
 
	private void giveItem(Player player) {
		int rnd = Rnd.get(0, 100);
		if (rnd < 15) {
// Мифриловая медаль
			ItemService.addItem(player, 186000147, 1);
		}
   // Мифриловая медаль
		else if (rnd > 15 && rnd < 20) {
			ItemService.addItem(player, 186000147, 2);
		}
// Платиновая медаль
		else if (rnd > 20 && rnd < 30) {
			ItemService.addItem(player, 186000096, 1);
		}
else {
// ржавая медаль
			ItemService.addItem(player, 182005205, 1);
		}
	}
}

Ну вот теперь находим фонтаны в npc_templates и прописываем им аи... вы можете не придерживаться гайдов просто прописать что и где вы хотите менять. Поиском их можно найти "Coin Fountain".

вот что имеем на выходе 1 кнопочка и замена, если нет медалек то сообщение. в следующей ревизии все это будет включено но клиент прийдется вам самим менять) Не ленитесь и сделайте!) Удачного развития.
12904292.png
 
Спать идти рано!!! Как насчет тестика новой ревизии ?) Заливаю уже.

Описание:
rev(7) - нужно вносить изменения в клиент (гайд в этой теме)
1 - Исправлен торговец стигмами (за баг спасибо @sephiro)
2 - Выбивание инвиза при юзании свитков, банок и так далее. (за баг спасибо @nokiafan1111)
3 - Выбивание из инвиза при юзании скила Стражника "Оскорбительный Крик"
4 - Исправлен скил барда "Мотив нападения" раньше было если используем 2 любых бафа например конфетку и "щит барда" то любой первый использовавшийся слетает при "Мотив нападения". Сейчас не слетает.
5 - Исправлен скил "Замена" закла было, если сначала используешь "Магический щит", а потом "Замену" то сначала слетала замена а потом щит. Теперь слетает щит потом замена.
6 - Исправлен спавн "атаки беритры" - нпц 220001 (за баг спасибо @sephiro).
7 - Добавлен аи фонтанам на обмен медалей во всех локациях Серебро на золото, золото на платину, платина на мифрил, мифрил и сыворотки балаура на мифрил с большим шансом(в оке тиамаранты фонтан с кв). https://4gameforum.com/threads/243647/ , также спавн для 730242 в Кельке.
Прийдется перепилить клиент Под аи, гайд в теме на форуме.
8 - некоторые скилы такие как "призыв энергий исцеления" не попадали под "Обряда скорости" теперь попадают.
9 - Добавлен не сохранять эфекты на выбор в скилс темплайтс, на выход из игры. Такие эффекты как пушки танки и тд.
10- Уборка лишнего хлама и проверок, что были сделаны до этого.
11- Нпц Лвла исправления.
12- Новый логин сервер с решением проблемы / Unknown packet received from Aion client: 0x013E, state=IN_GAME + добавление новой таблицы для высших рейтов membership1
 
Назад
Сверху