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

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

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

Ответ
Опции темы
Непрочитано 20.03.2010, 10:49   #1
Аватар для Shema
Герой

Автор темы (Топик Стартер) Java EXP

Нужна помощь в Java .
Я создал правильное получение exp с моба. Но нужно помощь в скрипте.
Принцип прост. Создается дополнительная таблица : Database (C: \ gameserver \ data \ static_data \) файл EXP.sql
В нем :
EXP TABLE IF EXISTS `explist`;
CREATE TABLE `explist` (
`Id` int(11) NOT NULL AUTO_INCREMENT,
`mobId` int(11) NOT NULL DEFAULT 0,
`expId` int(11) NOT NULL DEFAULT 0,
`lvlPlayer` int(11) NOT NULL DEFAULT 0,

PRIMARY KEY (`Id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;


INSERT INTO droplist (mobId, expId, lvlPlayer,) VALUES
-- START Ishalgen
-- Highland Sparkle
(210645,100,1,),
(210645,100,2,),
(210645,100,3,),
(210645,90,4,),
(210645,60,5,),
(210645,50,6,),
(210645,40,7,),
(210645,30,8,),
(210645,20,9,),
(210645,10,10,),

-- Wanderer Sprigg
(210729,100,1,),
(210729,100,2,),
(210729,100,3,),
(210729,90,4,),
(210729,60,5,),
(210729,50,6,),
(210729,40,7,),
(210729,30,8,),
(210729,20,9,),
(210729,10,10,),

И нужно написать скирипт который ссылался б на нее при убийстве моба.
if targetLevel = playerLevel goto (mobId, expId, lvlPlayer,)

Тогда просто правильно заполнив таблицы, игрок сможет получать exp по базе (как должно быть).
Просто из-за незнания явы у меня не получается скрипт).

По этому принципу сейчас работает дроплист.

Последний раз редактировалось Shema; 20.03.2010 в 12:05.
Shema вне форума Ответить с цитированием
Непрочитано 20.03.2010, 11:37   #2
Пользователь

По умолчанию Re: Java Scrip

Цитата:
Сообщение от Shema Посмотреть сообщение
Нужна помощь в Java Scrip.
Я создал правильное получение exp с моба. Но нужно помощь в скрипте.
Принцип прост. Создается дополнительная таблица : Database (C: \ gameserver \ data \ static_data \) файл EXP.sql
В нем :
EXP TABLE IF EXISTS `explist`;
CREATE TABLE `explist` (
`Id` int(11) NOT NULL AUTO_INCREMENT,
`mobId` int(11) NOT NULL DEFAULT 0,
`expId` int(11) NOT NULL DEFAULT 0,
`lvlPlayer` int(11) NOT NULL DEFAULT 0,

PRIMARY KEY (`Id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;


INSERT INTO droplist (mobId, expId, lvlPlayer,) VALUES
-- START Ishalgen
-- Highland Sparkle
(210645,100,1,),
(210645,100,2,),
(210645,100,3,),
(210645,90,4,),
(210645,60,5,),
(210645,50,6,),
(210645,40,7,),
(210645,30,8,),
(210645,20,9,),
(210645,10,10,),

-- Wanderer Sprigg
(210729,100,1,),
(210729,100,2,),
(210729,100,3,),
(210729,90,4,),
(210729,60,5,),
(210729,50,6,),
(210729,40,7,),
(210729,30,8,),
(210729,20,9,),
(210729,10,10,),

И нужно написать скирипт который ссылался б на нее при убийстве моба.
if targetLevel = playerLevel goto (mobId, expId, lvlPlayer,)

Тогда просто правильно заполнив таблицы, игрок сможет получать exp по базе (как должно быть).
Просто из-за незнания явы у меня не получается скрипт).

По этому принципу сейчас работает дроплист.
Вы наверное имели ввиду java ? java и java script совершенно разные вещи.
stpavel вне форума Ответить с цитированием
Непрочитано 20.03.2010, 11:42   #3
Аватар для Shema
Герой

Автор темы (Топик Стартер) Re: Java Scrip

Возможно)) Я просто не шарю.

Сейчас скрипт такой в сборке юник
C:\ae-go\AE-go_GameServer\src\com\aionemu\gameserver\utils\sta ts

public static long calculateSoloExperienceReward(Player player, Creature target)
{
int playerLevel = player.getCommonData().getLevel();
int targetLevel = target.getLevel();

//TODO take baseXP from target object (additional attribute in stats template is needed)
int baseXP = targetLevel * 80;

int xpPercentage = XPRewardEnum.xpRewardFrom(targetLevel - playerLevel);

return (int) Math.floor(baseXP * xpPercentage * player.getRates().getXpRate() / 100);
}

Он просто всем мобам присваивает * 80. И выходит что все мобы например 10 лвл дают одинаково exp.
А если прописать как я показал то получится правилное получение опыта.
Shema вне форума Ответить с цитированием
Непрочитано 20.03.2010, 12:26   #4
Пользователь

По умолчанию Re: Java EXP

хм, а зачем так извращаться если в npc_templates.xml каждому мобу давно вбит параметр maxXp ? Просто нужно вытащить его оттуда в формулу расчета получаемой экспы, и все... но я тоже в яве не "бумбум"
celler вне форума Ответить с цитированием
Непрочитано 20.03.2010, 12:28   #5
Аватар для Shema
Герой

Автор темы (Топик Стартер) Re: Java EXP

Можно посмотреть скрип который идет на получение лута. Там есть значение номер квеста. Вроде если написать что то подобное, то получится что нам нужно.
Если кто знает как написан он, скинте пути к ниму, возможно я сам поковыряю его и чет выйдет.))

Добавлено через 1 час 17 минут
Можно сделать проще :

C:\ae-go\AE-go_GameServer\src\com\aionemu\gameserver\utils\sta ts

public static long calculateSoloExperienceReward(Player player, Creature target)
{
int playerLevel = player.getCommonData().getLevel();
int targetLevel = target.getLevel();

//TODO take baseXP from target object (additional attribute in stats template is needed)
int baseXP = targetLevel * 80;

int xpPercentage = XPRewardEnum.xpRewardFrom(targetLevel - playerLevel);

return (int) Math.floor(baseXP * xpPercentage * player.getRates().getXpRate() / 100);
}

В строке int baseXP = targetLevel * 80; значение "targetLevel * 80" нужно заменить на `exp` параметр который можно будет добавить в дроплист.
DROP TABLE IF EXISTS `droplist`;
CREATE TABLE `droplist` (
`Id` int(11) NOT NULL auto_increment,
`mobId` int(11) NOT NULL default '0',
`itemId` int(11) NOT NULL default '0',
`min` int(11) NOT NULL default '0',
`max` int(11) NOT NULL default '0',
`chance` float NOT NULL default '0',
`quest` int(11) NOT NULL default '0',
`exp` int(11) NOT NULL default '0',
PRIMARY KEY (`Id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

-- ----------------------------
-- Records of droplist
-- ----------------------------
INSERT INTO `droplist` VALUES ('260175', '210372', '167000230', '1', '1', '0.63', '0', '111',);

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

Последний раз редактировалось Shema; 20.03.2010 в 14:00. Причина: Добавлено сообщение
Shema вне форума Ответить с цитированием
Непрочитано 20.03.2010, 14:38   #6
Пользователь

По умолчанию Re: Java EXP

Зачем тебе через sql это делать, если все уже сделано, но не воткнуто в формулу?...
celler вне форума Ответить с цитированием
Непрочитано 20.03.2010, 16:34   #7
Аватар для Shema
Герой

Автор темы (Топик Стартер) Re: Java EXP

Тогда еще проще)). Нужно внести значение maxXp=" "

Добавлено через 2 часа 4 минуты
Вроде бы нашел это значение.C:\ae-go\AE-go_GameServer\src\com\aionemu\gameserver\model\tem plates\stats

Файл maxXp() находится здесь, но вот как его привязать к формуле не знаю. Пишет что символ неизвестен.

Последний раз редактировалось Shema; 20.03.2010 в 18:39. Причина: Добавлено сообщение
Shema вне форума Ответить с цитированием
Непрочитано 20.03.2010, 20:25   #8
Аватар для DIIZ
Пользователь

По умолчанию Re: Java EXP

А смысл есть этим заниматься? Возможно юники что то придумают.
DIIZ вне форума Отправить сообщение для DIIZ с помощью ICQ Отправить сообщение для DIIZ с помощью Skype™ Ответить с цитированием
Непрочитано 20.03.2010, 21:56   #9
Пользователь

По умолчанию Re: Java EXP

есть смысл, если кто-то шарит в яве и может в формулу внести максэксп, потом скинуть уникам они проверят и внесут в свн... я пробовал сделать, но знаний в яве нехватает чтобы правильно написать. Формула вполне хорошая и простая есть..

Проблема то из первоочередных, имхо, поважнее всяких шопов, портов и прочих фенек...
celler вне форума Ответить с цитированием
Непрочитано 21.03.2010, 09:45   #10
Аватар для Shema
Герой

Автор темы (Топик Стартер) Re: Java EXP

Нашел значение maxXp. Указал путь к нему. Скомпелировалось нормально, но значение равно 0, что означает при убийстве моба не видет значение maxXp этого нпц. Подскажите какое значение еще нужно добавить которое бы указывало путь к выбраному мобу.

Сдесь мы видем что значение лвл меняется в отношении выбраного объекта int targetLevel = target.getLevel();.

Нужноли создовать еще класс для поеснения какой нп выбран?



import com.aionemu.gameserver.model.templates.stats.NpcSt atsTemplate;


public class StatFunctions
{
private static Logger log = Logger.getLogger(StatFunctions.class);
/**
*
* @param player
* @param target
* @return XP reward from target
*/
public static long calculateSoloExperienceReward(Player player, Creature target)
{
NpcStatsTemplate E = new NpcStatsTemplate ();
int playerLevel = player.getCommonData().getLevel();
int targetLevel = target.getLevel();

//TODO take baseXP from target object (additional attribute in stats template is needed)
int baseXP = E.getMaxXp();

int xpPercentage = XPRewardEnum.xpRewardFrom(targetLevel - playerLevel);

return (int) Math.floor(baseXP * xpPercentage * player.getRates().getXpRate() / 100);
}
Shema вне форума Ответить с цитированием
Ответ


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

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

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

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

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
java Shot Lineage II 2 27.02.2010 12:35
PTS & Java PuShKinG Lineage II 7 20.08.2009 23:08
Java virus Курилка / Yak floor 6 20.12.2008 03:50


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

Вверх